Fwd: SO_BINDTODEVICE: No such device for BGP with VRF configuration

Ramanathan Selvamani ramana.it05 at gmail.com
Tue Jan 3 04:41:51 CET 2023


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20230103/a5803287/attachment.htm>


More information about the Bird-users mailing list