Hello!

The error message says that BIRD can't find the VRF. Have you configured it in 
kernel properly? How does your "ip link" command output look like?

Maria


On 3 January 2023 04:41:51 CET, Ramanathan Selvamani via Bird-users 
<[email protected]> wrote:
>Hi all,
>
>I am using linux kernel 4.14.188. While i'm trying to configure VRF for
>BGP, i observed the below error and BGP session is not established.
>Kindly let me know if i am missing anything.
>
>At R1
>====
>B_VRF_RED: Socket error: SO_BINDTODEVICE: No such device
>B_VRF_RED: Connection closed
>
>At R2
>====
>B_VRF_RED: Socket error: SO_BINDTODEVICE: No such device
>
>R1 Configuration
>=============
>function oro_set_bgp_local_as() {
>        bgp_path.prepend(100);
>        return true;
>}
>function bgp_aggr_nets()
>{
>}
>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;
>}
>filter export_BGP_50_0_0_2 {
>        if ((scope = SCOPE_HOST) && (dest != RTD_BLACKHOLE)) then {
>                reject;
>        }
>        if (source = RTS_APP) then {
>                reject;
>        }
>        if (source = RTS_REDIRECT) then {
>                reject;
>        }
>        if (source = RTS_INHERIT) then {
>                reject;
>        }
>        if ((source = RTS_OAP) && defined(oap_metric)) then {  bgp_med =
>oap_metric; }
>        if !redistribute_proto() then {reject;}
>
>         if( rmap_r1(bgp_proto)) then {accept;}
>         else{reject;}
>
>        accept;
>}
>filter import_BGP_50_0_0_2 {
>        if((source = RTS_BGP) && rmap_r1(bgp_proto)) then {
>                 accept;
>        } else {
>                 reject;
>        }
>}
>protocol bgp BGP_50_0_0_2 {
>        router id 1.1.1.1;
>        local as 100;
>        neighbor 50.0.0.2 as 100;
>        graceful restart off;
>        graceful restart time 90;
>        enable as4 on;
>        hold time 90;
>        keepalive time 30;
>        prefer older on;
>        ipv4 {
>                preference 56;
>                import table on;
>                export table on;
>                import filter import_BGP_50_0_0_2;
>                export filter export_BGP_50_0_0_2;
>        };
>}
>R2 Configuration
>=============
>ipv4 table T_VRF_RED;
>
>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 direct C_VRF_RED {
>        vrf "red";
>        ipv4 { table T_VRF_RED; };
>        interface "red";
>}
>
>protocol static S_VRF_RED {
>        vrf "red";
>        ipv4 { table T_VRF_RED; };
>
>        route 10.10.1.0/24 blackhole;
>}
>
>protocol bgp B_VRF_RED {
>        vrf "red";
>        router id 2.2.2.2;
>        local 50.0.0.2 as 100;
>        neighbor 50.0.0.1  as 100;
>        enable as4 on;
>        hold time 90;
>        keepalive time 30;
>        multihop;
>        strict bind yes;
>        # regular IPv4 unicast (1/1)
>        ipv4 {
>                table T_VRF_RED;
>                import all;
>                export all;
>        };
>}
>
>
>Thanks,
>Ramanathan

Reply via email to