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 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 /tmp # ip link show eth1.55 14: eth1.55@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