VRF separated BGP neighborships over a logical interface

ch ch at ntrv.dk
Wed Mar 29 10:07:07 CEST 2023


On 29/03/2023 09.28, Ramanathan Selvamani wrote:
> Hi Team,
> 
> I would like to bring up 2 VRF separated BGP neighborship between two
> routers as below
> 
>   R1  [eth1.55]-------------------------[eth1.55]  R2
> 
> B_VRF_BLUE<---------------------> B_VRF_BLUE
> B_VRF_RED  <---------------------> B_VRF_RED

You cannot enslave the same sub-interface eth1.55 to both VRF's at the 
same time. :-1:

Without L3VPN support. You *must* setup one interface per vrf.

   R1  [eth1.55]-------------------------[eth1.55]  R2
   R1  [eth1.56]-------------------------[eth1.56]  R2

> I created two VRFs red and blue in the kernel.
> 
> ip link add red type vrf table 100
> ip link set dev red up
> 
> ip link add blue type vrf table 200
> ip link set dev blue up
> 
> Then i enslaved the logical interface to both VRFs red and blue.
> 
> ip link set dev eth1.55 master red
> ip link set dev eth1.55 master blue   ---> enslaving to red is overridden
> by blue after this

Example,

ip link set dev eth1.55 master red
ip link set dev eth1.56 master blue

> /tmp # ip link show eth1.55
> 14: eth1.55 at eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
> noqueue *master
> blue *
> 
> At R1, I could see B_VRF_BLUE is established and at R2 B_VRF_RED is
> established.
> 
> R1
> ==
> bird> show protocols
> Name       Proto      Table      State  Since         Info
> B_VRF_RED  BGP        ---        start  23:54:26.660  Idle
>   Received: Cease
> B_VRF_BLUE BGP        ---        up     23:54:42.207  Established
> 
> R2
> ====
> bird> show protocols
> Name       Proto      Table      State  Since         Info
> B_VRF_RED  BGP        ---        up     23:58:44.611  Established
> B_VRF_BLUE BGP        ---        start  23:58:39.842  Active        Socket:
> Connection closed
> 
> Either one of the BGP sessions is established on both ends. The other
> session is not getting established.
> Please let me know if I am missing anything here.
> 
> Also I noticed that L3VPN support was added into BIRD recently. Is there
> any support added to handle multiple VRF separated BGP neighborships during
> this commit ?
> Please clarify.
> 
> Below are the configurations used.
> R1
> ====
> ipv4 table T_VRF_RED;
> ipv4 table T_VRF_BLUE;
> 
> protocol kernel K_VRF_RED {
>          vrf "red";
>          kernel table 100;
>          scan time 20;
> 
>          ipv4 {
>                  table T_VRF_RED;
>                  import all;
>                  export all;
>          };
> }
> protocol kernel K_VRF_BLUE {
>          vrf "blue";
>          kernel table 200;
>          scan time 20;
> 
>          ipv4 {
>                  table T_VRF_BLUE;
>                  import all;
>                  export all;
>          };
> }
> protocol direct C_VRF_RED {
>          vrf "red";
>          ipv4 { table T_VRF_RED; };
> 
> }
> protocol direct C_VRF_BLUE {
>          vrf "blue";
>          ipv4 { table T_VRF_BLUE; };
> 
> }
> 
> protocol static S_VRF_RED {
>          vrf "red";
>          ipv4 { table T_VRF_RED; };
> 
>          route 10.10.1.0/24 blackhole;
> }
> protocol static S_VRF_BLUE {
>          vrf "blue";
>          ipv4 { table T_VRF_BLUE; };
> 
>          route 10.10.1.0/24 blackhole;
> }
> protocol bgp B_VRF_RED {
>          vrf "red";
>          router id 10.16.44.216;
>          local 55.0.0.1 as 100;
>          neighbor 55.0.0.2  as 100;
>          enable as4 on;
>          hold time 90;
>          keepalive time 30;
>          direct;
>          # regular IPv4 unicast (1/1)
>          ipv4 {
>                  table T_VRF_RED;
>                  import all;
>                  export all;
>          };
> }
> protocol bgp B_VRF_BLUE {
>          vrf "blue";
>          router id 10.16.44.216;
>          local 55.0.0.1 as 100;
>          neighbor 55.0.0.2  as 100;
>          enable as4 on;
>          hold time 90;
>          keepalive time 30;
>          direct;
>          # regular IPv4 unicast (1/1)
>          ipv4 {
>                  table T_VRF_BLUE;
>                  import all;
>                  export all;
>          };
> }
> 
> R2
> ====
> ipv4 table T_VRF_RED;
> ipv4 table T_VRF_BLUE;
> 
> protocol kernel K_VRF_RED {
>          vrf "red";
>          kernel table 100;
>          scan time 20;
> 
>          ipv4 {
>                  table T_VRF_RED;
>                  import all;
>                  export all;
>          };
> }
> protocol kernel K_VRF_BLUE {
>          vrf "blue";
>          kernel table 200;
>          scan time 20;
> 
>          ipv4 {
>                  table T_VRF_BLUE;
>                  import all;
>                  export all;
>          };
> }
> protocol direct C_VRF_RED {
>          vrf "red";
>          ipv4 { table T_VRF_RED; };
> 
> }
> protocol direct C_VRF_BLUE {
>          vrf "blue";
>          ipv4 { table T_VRF_BLUE; };
> 
> }
> protocol static S_VRF_RED {
>          vrf "red";
>          ipv4 { table T_VRF_RED; };
> 
>          route 10.10.1.0/24 blackhole;
> }
> protocol static S_VRF_BLUE {
>          vrf "blue";
>          ipv4 { table T_VRF_BLUE; };
> 
>          route 10.10.1.0/24 blackhole;
> }
> protocol bgp B_VRF_RED {
>          vrf "red";
>          router id 10.16.44.217;
>          local 55.0.0.2 as 100;
>          neighbor 55.0.0.1  as 100;
>          enable as4 on;
>          hold time 90;
>          keepalive time 30;
>          direct;
>          # regular IPv4 unicast (1/1)
>          ipv4 {
>                  table T_VRF_RED;
>                  import all;
>                  export all;
>          };
> }
> protocol bgp B_VRF_BLUE {
>          vrf "blue";
>          router id 10.16.44.217;
>          local 55.0.0.2 as 100;
>          neighbor 55.0.0.1  as 100;
>          enable as4 on;
>          hold time 90;
>          keepalive time 30;
>          direct;
>          # regular IPv4 unicast (1/1)
>          ipv4 {
>                  table T_VRF_BLUE;
>                  import all;
>                  export all;
>          };
> }
> 
> 
> Thanks,
> Ramanathan
> 




More information about the Bird-users mailing list