Hi Team, I am using linux kernel 4.14 and trying to bind 2 vrfs to the same BGP instance. The BGP session is established. But the second VRF binding over-writes the first VRF binding. Do bird support this 2 vrf binding to the same BGP instance ? R1 ====== ipv4 table T_VRF_RED; ipv4 table T_VRF_BLUE; function oro_set_bgp_local_as() { bgp_path.prepend(100); return true; } function redistribute_proto() { if ((source = RTS_BGP)) then { return true; } if (net=0.0.0.0/0) then { return false;} if ((source = RTS_DEVICE)) then { return false; } if (source = RTS_STATIC) then { if(net=0.0.0.0/0) then { return false;} if (ifname = "lo") then { return false; } else { return false; } } if ((source = RTS_CFGSET)) then { return false; } if ((source = RTS_IAPVPN)) then { return false; } if ((source = RTS_OAP)) then { return false; } if (source = RTS_OSPF) then { return false; } if (source = RTS_OSPF_IA) then { return false; } if (source = RTS_OSPF_EXT1) then { return false; } if (source = RTS_OSPF_EXT2) then { return false; } if ((source = RTS_OSPF) || (source = RTS_OSPF_IA) || (source = RTS_OSPF_EXT1) || (source = RTS_OSPF_EXT2)) then { return false; } return false; } 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"; vrf "blue"; router id 10.16.44.216; local 50.0.12.1 as 100; neighbor 50.0.12.2 as 100; enable as4 on; hold time 90; keepalive time 30; direct; # regular IPv4 unicast (1/1) ipv4 { table T_VRF_RED; table T_VRF_BLUE; import all; export all; }; } R2 ====== ipv4 table T_VRF_RED; ipv4 table T_VRF_BLUE; function oro_set_bgp_local_as() { bgp_path.prepend(100); return true; } function redistribute_proto() { if ((source = RTS_BGP)) then { return true; } if (net=0.0.0.0/0) then { return false;} if ((source = RTS_DEVICE)) then { return false; } if (source = RTS_STATIC) then { if(net=0.0.0.0/0) then { return false;} if (ifname = "lo") then { return false; } else { return false; } } if ((source = RTS_CFGSET)) then { return false; } if ((source = RTS_IAPVPN)) then { return false; } if ((source = RTS_OAP)) then { return false; } if (source = RTS_OSPF) then { return false; } if (source = RTS_OSPF_IA) then { return false; } if (source = RTS_OSPF_EXT1) then { return false; } if (source = RTS_OSPF_EXT2) then { return false; } if ((source = RTS_OSPF) || (source = RTS_OSPF_IA) || (source = RTS_OSPF_EXT1) || (source = RTS_OSPF_EXT2)) then { return false; } return false; } 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"; vrf "blue"; router id 10.16.44.217; local 50.0.12.2 as 100; neighbor 50.0.12.1 as 100; enable as4 on; hold time 90; keepalive time 30; direct; # regular IPv4 unicast (1/1) ipv4 { table T_VRF_RED; table T_VRF_BLUE; import all; export all; }; } Thanks, Ramanathan