OSPF in VRF stuck in Alone

James Oakley james.oakley at multapplied.net
Mon Dec 3 17:20:50 CET 2018


I am trying to get OSPF working via OSPF and it looks like BIRD is ignoring OSPF packets coming in on the VRF interfaces. As far as I can tell from the documentation, I have all of the pieces in place, but the protocol is stuck in "Alone". The kernel version is 4.18.12, and I have the "vrf" parameter set on the kernel and ospf protocols.

Here is my config:

ipv4 table foo_ipv4;

protocol kernel kernel_foo {
    vrf "foo";
    kernel table 8194;
    learn;
    scan time 10;
    ipv4 {
        import all;
        export all;
        preference 1100;
        table foo_ipv4;
    };
}

protocol direct direct_foo {
    vrf "foo";
    ipv4 {
        table foo_ipv4;
    };
    interface "foo";
    interface "vl-foo";
    interface "vx-foo";
}

protocol ospf ospf_foo {
    vrf "foo";
    router id 100.63.16.4;
    area 0.0.0.0 {
        interface "vl-foo"{
            cost 10;
        };
        interface "vx-foo" {
            cost 100;
        };
    };
    ipv4 {
        preference 1000;
        import all;
        export all;
        table foo_ipv4;
    };
}

Here are my interfaces:

21: foo: <NOARP,MASTER,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 6a:f0:2c:ae:69:48 brd ff:ff:ff:ff:ff:ff promiscuity 0
    vrf table 8194 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
22: vl-foo at host0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master foo state UP mode DEFAULT group default qlen 1000
    link/ether 06:d8:07:73:68:b6 brd ff:ff:ff:ff:ff:ff promiscuity 0
    vlan protocol 802.1Q id 2018 <REORDER_HDR>
    vrf_slave table 8194 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
23: vx-foo: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1432 qdisc noqueue master foo state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 32:08:91:57:b9:0b brd ff:ff:ff:ff:ff:ff promiscuity 0
    vxlan id 2 srcport 0 0 dstport 4789 ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx
    vrf_slave table 8194 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

If I debug the protocol, I only see it sending the HELLO packets:

>>> ospf_foo: HELLO packet sent via vl-foo
>>> ospf_foo: HELLO packet sent via vx-foo
>>> ospf_foo: HELLO packet sent via vl-foo
>>> ospf_foo: HELLO packet sent via vl-foo
>>> ospf_foo: HELLO packet sent via vx-foo
>>> ospf_foo: HELLO packet sent via vl-foo
>>> ospf_foo: HELLO packet sent via vl-foo

However, I am seeing packets from the other router on the interface:

# tcpdump -nei vl-foo proto 89
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vl-foo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:17:22.583387 56:0f:a7:16:64:e2 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 82: 100.63.16.1 > 224.0.0.5: OSPFv2, Hello, length 48
08:17:28.364546 06:d8:07:73:68:b6 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 78: 192.168.1.5 > 224.0.0.5: OSPFv2, Hello, length 44
08:17:28.364682 06:d8:07:73:68:b6 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 78: 100.63.16.4 > 224.0.0.5: OSPFv2, Hello, length 44
08:17:32.583848 56:0f:a7:16:64:e2 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 82: 100.63.16.1 > 224.0.0.5: OSPFv2, Hello, length 48
08:17:38.364541 06:d8:07:73:68:b6 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 78: 100.63.16.4 > 224.0.0.5: OSPFv2, Hello, length 44
08:17:38.364645 06:d8:07:73:68:b6 > 01:00:5e:00:00:05, ethertype IPv4 (0x0800), length 78: 192.168.1.5 > 224.0.0.5: OSPFv2, Hello, length 44

Can anybody tell me what I am missing here?

--
James Oakley
james.oakley at multapplied.net




More information about the Bird-users mailing list