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