<div dir="ltr">Thanks for your response.<div>I assume that with L3VPN support it is possible to set up one interface for many VRFs.</div><div>May I know how to do it?</div><div>Could you please share any sample BGP configuration for L3VPN ?</div><div><br></div><div>Thanks,</div><div>Ramanathan</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 29 Mar 2023 at 13:41, ch <<a href="mailto:ch@ntrv.dk">ch@ntrv.dk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 29/03/2023 09.28, Ramanathan Selvamani wrote:<br>
> Hi Team,<br>
> <br>
> I would like to bring up 2 VRF separated BGP neighborship between two<br>
> routers as below<br>
> <br>
>   R1  [eth1.55]-------------------------[eth1.55]  R2<br>
> <br>
> B_VRF_BLUE<---------------------> B_VRF_BLUE<br>
> B_VRF_RED  <---------------------> B_VRF_RED<br>
<br>
You cannot enslave the same sub-interface eth1.55 to both VRF's at the <br>
same time. :-1:<br>
<br>
Without L3VPN support. You *must* setup one interface per vrf.<br>
<br>
   R1  [eth1.55]-------------------------[eth1.55]  R2<br>
   R1  [eth1.56]-------------------------[eth1.56]  R2<br>
<br>
> I created two VRFs red and blue in the kernel.<br>
> <br>
> ip link add red type vrf table 100<br>
> ip link set dev red up<br>
> <br>
> ip link add blue type vrf table 200<br>
> ip link set dev blue up<br>
> <br>
> Then i enslaved the logical interface to both VRFs red and blue.<br>
> <br>
> ip link set dev eth1.55 master red<br>
> ip link set dev eth1.55 master blue   ---> enslaving to red is overridden<br>
> by blue after this<br>
<br>
Example,<br>
<br>
ip link set dev eth1.55 master red<br>
ip link set dev eth1.56 master blue<br>
<br>
> /tmp # ip link show eth1.55<br>
> 14: eth1.55@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc<br>
> noqueue *master<br>
> blue *<br>
> <br>
> At R1, I could see B_VRF_BLUE is established and at R2 B_VRF_RED is<br>
> established.<br>
> <br>
> R1<br>
> ==<br>
> bird> show protocols<br>
> Name       Proto      Table      State  Since         Info<br>
> B_VRF_RED  BGP        ---        start  23:54:26.660  Idle<br>
>   Received: Cease<br>
> B_VRF_BLUE BGP        ---        up     23:54:42.207  Established<br>
> <br>
> R2<br>
> ====<br>
> bird> show protocols<br>
> Name       Proto      Table      State  Since         Info<br>
> B_VRF_RED  BGP        ---        up     23:58:44.611  Established<br>
> B_VRF_BLUE BGP        ---        start  23:58:39.842  Active        Socket:<br>
> Connection closed<br>
> <br>
> Either one of the BGP sessions is established on both ends. The other<br>
> session is not getting established.<br>
> Please let me know if I am missing anything here.<br>
> <br>
> Also I noticed that L3VPN support was added into BIRD recently. Is there<br>
> any support added to handle multiple VRF separated BGP neighborships during<br>
> this commit ?<br>
> Please clarify.<br>
> <br>
> Below are the configurations used.<br>
> R1<br>
> ====<br>
> ipv4 table T_VRF_RED;<br>
> ipv4 table T_VRF_BLUE;<br>
> <br>
> protocol kernel K_VRF_RED {<br>
>          vrf "red";<br>
>          kernel table 100;<br>
>          scan time 20;<br>
> <br>
>          ipv4 {<br>
>                  table T_VRF_RED;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol kernel K_VRF_BLUE {<br>
>          vrf "blue";<br>
>          kernel table 200;<br>
>          scan time 20;<br>
> <br>
>          ipv4 {<br>
>                  table T_VRF_BLUE;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol direct C_VRF_RED {<br>
>          vrf "red";<br>
>          ipv4 { table T_VRF_RED; };<br>
> <br>
> }<br>
> protocol direct C_VRF_BLUE {<br>
>          vrf "blue";<br>
>          ipv4 { table T_VRF_BLUE; };<br>
> <br>
> }<br>
> <br>
> protocol static S_VRF_RED {<br>
>          vrf "red";<br>
>          ipv4 { table T_VRF_RED; };<br>
> <br>
>          route <a href="http://10.10.1.0/24" rel="noreferrer" target="_blank">10.10.1.0/24</a> blackhole;<br>
> }<br>
> protocol static S_VRF_BLUE {<br>
>          vrf "blue";<br>
>          ipv4 { table T_VRF_BLUE; };<br>
> <br>
>          route <a href="http://10.10.1.0/24" rel="noreferrer" target="_blank">10.10.1.0/24</a> blackhole;<br>
> }<br>
> protocol bgp B_VRF_RED {<br>
>          vrf "red";<br>
>          router id 10.16.44.216;<br>
>          local 55.0.0.1 as 100;<br>
>          neighbor 55.0.0.2  as 100;<br>
>          enable as4 on;<br>
>          hold time 90;<br>
>          keepalive time 30;<br>
>          direct;<br>
>          # regular IPv4 unicast (1/1)<br>
>          ipv4 {<br>
>                  table T_VRF_RED;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol bgp B_VRF_BLUE {<br>
>          vrf "blue";<br>
>          router id 10.16.44.216;<br>
>          local 55.0.0.1 as 100;<br>
>          neighbor 55.0.0.2  as 100;<br>
>          enable as4 on;<br>
>          hold time 90;<br>
>          keepalive time 30;<br>
>          direct;<br>
>          # regular IPv4 unicast (1/1)<br>
>          ipv4 {<br>
>                  table T_VRF_BLUE;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> <br>
> R2<br>
> ====<br>
> ipv4 table T_VRF_RED;<br>
> ipv4 table T_VRF_BLUE;<br>
> <br>
> protocol kernel K_VRF_RED {<br>
>          vrf "red";<br>
>          kernel table 100;<br>
>          scan time 20;<br>
> <br>
>          ipv4 {<br>
>                  table T_VRF_RED;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol kernel K_VRF_BLUE {<br>
>          vrf "blue";<br>
>          kernel table 200;<br>
>          scan time 20;<br>
> <br>
>          ipv4 {<br>
>                  table T_VRF_BLUE;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol direct C_VRF_RED {<br>
>          vrf "red";<br>
>          ipv4 { table T_VRF_RED; };<br>
> <br>
> }<br>
> protocol direct C_VRF_BLUE {<br>
>          vrf "blue";<br>
>          ipv4 { table T_VRF_BLUE; };<br>
> <br>
> }<br>
> protocol static S_VRF_RED {<br>
>          vrf "red";<br>
>          ipv4 { table T_VRF_RED; };<br>
> <br>
>          route <a href="http://10.10.1.0/24" rel="noreferrer" target="_blank">10.10.1.0/24</a> blackhole;<br>
> }<br>
> protocol static S_VRF_BLUE {<br>
>          vrf "blue";<br>
>          ipv4 { table T_VRF_BLUE; };<br>
> <br>
>          route <a href="http://10.10.1.0/24" rel="noreferrer" target="_blank">10.10.1.0/24</a> blackhole;<br>
> }<br>
> protocol bgp B_VRF_RED {<br>
>          vrf "red";<br>
>          router id 10.16.44.217;<br>
>          local 55.0.0.2 as 100;<br>
>          neighbor 55.0.0.1  as 100;<br>
>          enable as4 on;<br>
>          hold time 90;<br>
>          keepalive time 30;<br>
>          direct;<br>
>          # regular IPv4 unicast (1/1)<br>
>          ipv4 {<br>
>                  table T_VRF_RED;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> protocol bgp B_VRF_BLUE {<br>
>          vrf "blue";<br>
>          router id 10.16.44.217;<br>
>          local 55.0.0.2 as 100;<br>
>          neighbor 55.0.0.1  as 100;<br>
>          enable as4 on;<br>
>          hold time 90;<br>
>          keepalive time 30;<br>
>          direct;<br>
>          # regular IPv4 unicast (1/1)<br>
>          ipv4 {<br>
>                  table T_VRF_BLUE;<br>
>                  import all;<br>
>                  export all;<br>
>          };<br>
> }<br>
> <br>
> <br>
> Thanks,<br>
> Ramanathan<br>
> <br>
<br>
<br>
</blockquote></div>