[quagga-users 12424] ospf6 between bird and quagga

Alex Bligh alex at alex.org.uk
Fri Aug 19 14:25:55 IST 2011


I am using bird 1.3.2-1 and quagga 0.99.18

I have successfully got OSPF2 for IPv4 to talk between the two, but am
having little luck with OSPF3 for IPv6. I wonder if anyone can help.
As the bird config file for v4 and v6 is near identical, and as strange
things appear (or fail to appear) in the OSPF database on quagga, I
/think/ this is a quagga problem.

All configs and databases below.

The configuration is as follows:

                        fc00:41c8:10:1dd::/64       fc00:3333:33:333::1/64
 -------- [ Quagga ] --------------------------- [ BIRD ] ------------
 int eth0            int eth1      int evrr-000000        int evr-000001
                     ...:1/64           ....:3/64

The OSPF neighbour relationship seems to be OK (see debug below).
Everything is in area 0.0.0.0.

What is meant to happen is that BIRD redistributes its "direct"
routes (including fc00:3333:33:333::1/64) into OSPF, and this
appears on Quagga. Quagga originates a default (and some test
statics), and these are seen on BIRD. None of this in fact happens.

Problems that I see on the Quagga side:

1. Quagga has "redistribute connected" and "redistribute static"
   set. However, "how ipv6 ospf6 redistribute" is empty, and the
   redistributed statics (pull ups to NULL0) do not appear in the
   OSPF database. I would expect to see them there as E2 routes.

2. Quagga appears to have no way to do default-originate like
   it can in OSPF2. The "area 0.0.0.0 range ::/0" does not
   appear to get this advertised (or even into the database)
   whether or not the "redistribute" lines are present.

3. The external LSA for prefix fc00:3333:33:333::/64 does appear
   to make it from BIRD into quagga's database. However, it is
   not installed in the routing table.

The setup works fine with OSPF and IPv4. I am pretty sure my
IPv6 setup is functional, as it works fine with BGP to bird6.

Any ideas?

Lots of details below

-- 
Alex Bligh

amb at quaggabox:~$ ip -6 a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::213:72ff:fefd:62e7/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fc00:41c8:10:1dd::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::213:72ff:fefd:62e8/64 scope link
       valid_lft forever preferred_lft forever

quaggabox# show running-config
Building configuration...

Current configuration:
!
log file /var/log/quagga/bgpd.log
!
service integrated-vtysh-config
!
interface eth0
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 passive
 ipv6 ospf6 priority 1
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface eth1
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 priority 100
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface lo
!
router ospf6
 router-id 10.255.199.1
 area 0.0.0.0 range ::/0
 area 0.0.0.0 range fc00:41c8:10:1dd::/64
 interface eth1 area 0.0.0.0
!
ipv6 route 3ffe:401d:3133::/48 Null0
ipv6 route 3ffe:401d:4144::/48 Null0
!
ipv6 forwarding
!
line vty
!
end



quaggabox# show ipv6  o neighbor  det
 Neighbor 10.255.199.3%eth1
    Area 0.0.0.0 via interface eth1 (ifindex 3)
    His IfIndex: 123 Link-local address: fe80::a868:caff:fefd:1c94
    State Full for a duration of 00:15:47
    His choice of DR/BDR 10.255.199.1/0.0.0.0, Priority 0
    DbDesc status: Slave SeqNum: 0x9fe24079
    Summary-List: 0 LSAs
    Request-List: 0 LSAs
    Retrans-List: 0 LSAs
    0 Pending LSAs for DbDesc in Time 00:00:00 [thread off]
    0 Pending LSAs for LSReq in Time 00:00:00 [thread off]
    0 Pending LSAs for LSUpdate in Time 00:00:00 [thread off]
    0 Pending LSAs for LSAck in Time 00:00:00 [thread off]
quaggabox# show ipv6  o neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
10.255.199.3      0    00:00:33   Full/DROther         00:15:53 eth1[DR]
quaggabox# show ipv6  o neighbor det
 Neighbor 10.255.199.3%eth1
    Area 0.0.0.0 via interface eth1 (ifindex 3)
    His IfIndex: 123 Link-local address: fe80::a868:caff:fefd:1c94
    State Full for a duration of 00:15:55
    His choice of DR/BDR 10.255.199.1/0.0.0.0, Priority 0
    DbDesc status: Slave SeqNum: 0x9fe24079
    Summary-List: 0 LSAs
    Request-List: 0 LSAs
    Retrans-List: 0 LSAs
    0 Pending LSAs for DbDesc in Time 00:00:00 [thread off]
    0 Pending LSAs for LSReq in Time 00:00:00 [thread off]
    0 Pending LSAs for LSUpdate in Time 00:00:00 [thread off]
    0 Pending LSAs for LSAck in Time 00:00:00 [thread off]


quaggabox# show ipv6 o database  detail

        Area Scoped Link State Database (Area 0.0.0.0)

Age: 1003 Type: Router
Link State ID: 0.0.0.0
Advertising Router: 10.255.199.1
LS Sequence Number: 0x80000001
CheckSum: 0x284b Length: 40
    Bits: -------- Options: --|R|-|--|E|V6
    Type: Transit-Network Metric: 1
    Interface ID: 0.0.0.3
    Neighbor Interface ID: 0.0.0.3
    Neighbor Router ID: 10.255.199.1

Age: 1004 Type: Router
Link State ID: 0.0.0.0
Advertising Router: 10.255.199.3
LS Sequence Number: 0x80000001
CheckSum: 0x510a Length: 24
    Bits: ------E- Options: --|R|-|--|E|V6

Age: 1003 Type: Network
Link State ID: 0.0.0.3
Advertising Router: 10.255.199.1
LS Sequence Number: 0x80000001
CheckSum: 0x4f5c Length: 32
     Options: --|R|-|--|E|V6
     Attached Router: 10.255.199.1
     Attached Router: 10.255.199.3

Age: 1003 Type: Intra-Prefix
Link State ID: 0.0.0.3
Advertising Router: 10.255.199.1
LS Sequence Number: 0x80000001
CheckSum: 0x38eb Length: 44
     Number of Prefix: 1
     Reference: Network Id: 0.0.0.3 Adv: 10.255.199.1
     Prefix Options: --|--|--|--
     Prefix: fc00:41c8:10:1dd::/64

Age: 1004 Type: Intra-Prefix
Link State ID: 0.0.0.0
Advertising Router: 10.255.199.3
LS Sequence Number: 0x80000001
CheckSum: 0xf626 Length: 44
     Number of Prefix: 1
     Reference: Router Id: 0.0.0.0 Adv: 10.255.199.3
     Prefix Options: --|--|--|--
     Prefix: fc00:41c8:10:1dd::/64


        I/F Scoped Link State Database (I/F eth1 in Area 0.0.0.0)

Age: 1045 Type: Link
Link State ID: 0.0.0.3
Advertising Router: 10.255.199.1
LS Sequence Number: 0x80000001
CheckSum: 0xd495 Length: 56
     Priority: 100 Options: --|R|-|--|E|V6
     LinkLocal Address: fe80::213:72ff:fefd:62e8
     Number of Prefix: 1
     Prefix Options: --|--|--|--
     Prefix: fc00:41c8:10:1dd::/64

Age:  636 Type: Link
Link State ID: 0.0.0.123
Advertising Router: 10.255.199.3
LS Sequence Number: 0x80000005
CheckSum: 0xd2c3 Length: 56
     Priority: 0 Options: --|R|-|--|E|V6
     LinkLocal Address: fe80::a868:caff:fefd:1c94
     Number of Prefix: 1


        AS Scoped Link State Database

Age:  491 Type: AS-External
Link State ID: 255.3.0.0
Advertising Router: 10.255.199.3
LS Sequence Number: 0x80000004
CheckSum: 0xe30e Length: 36
     Bits: E--
     Metric: 10000
     Prefix Options: xxx
     Referenced LSType: 0
     Prefix: fc00:3333:33:333::/64


quaggabox# show ip ospf  route
============ OSPF network routing table ============
N    10.255.199.0/24       [10] area: 0.0.0.0
                           directly attached to eth1

============ OSPF router routing table =============
R    10.255.199.3          [10] area: 0.0.0.0, ASBR
                           via 10.255.199.3, eth1

============ OSPF external routing table ===========
N E2 10.1.2.255/24         [10/10000] tag: 0
                           via 10.255.199.3, eth1


quaggabox# show ipv6  ospf6  redistribute
Redistributing External Routes from:
Total 0 routes

quaggabox# show ipv6  route
Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3,
       I - ISIS, B - BGP, * - FIB route.

K>* ::/0 via fe80::1, eth1
C>* ::1/128 is directly connected, lo
S   3ffe:401d:3133::/48 [1/0] is directly connected, Null0 inactive
S   3ffe:401d:4144::/48 [1/0] is directly connected, Null0 inactive
O   fc00:41c8:10:1dd::/64 [110/1] is directly connected, eth1, 00:18:05
C>* fc00:41c8:10:1dd::/64 is directly connected, eth1
C * fe80::/64 is directly connected, eth1
C>* fe80::/64 is directly connected, eth0






BIRD BOX
========

root at birdbox# ip -6 a l
120: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
121: dummy2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::dc58:e3ff:fe52:456b/64 scope link
       valid_lft forever preferred_lft forever
122: dummy: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::4411:a3ff:fea9:3736/64 scope link
       valid_lft forever preferred_lft forever
123: evrr-000000: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fc00:41c8:10:1dd::3/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a868:caff:fefd:1c94/64 scope link
       valid_lft forever preferred_lft forever
125: evrr-000001: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fc00:3333:33:333::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a0e0:d2ff:fef2:890a/64 scope link
       valid_lft forever preferred_lft forever

root at birdbox/# birdc6
BIRD 1.3.2 ready.
bird> show protocols all
name     proto    table    state  since       info
evrkernel Kernel   master   up     11:34
  Preference:     10
  Input filter:   ACCEPT
  Output filter:  ACCEPT
  Routes:         0 imported, 0 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored 
accepted
    Import updates:              0          0          0          0 
0
    Import withdraws:            0          0        ---          0 
0
    Export updates:             17         15          0        --- 
2
    Export withdraws:            7        ---        ---        --- 
2

device1  Device   master   up     11:34
  Preference:     240
  Input filter:   ACCEPT
  Output filter:  REJECT
  Routes:         0 imported, 0 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored 
accepted
    Import updates:              0          0          0          0 
0
    Import withdraws:            0          0        ---          0 
0
    Export updates:              0          0          0        --- 
0
    Export withdraws:            0        ---        ---        --- 
0

evrdirect Direct   master   up     11:34
  Preference:     240
  Input filter:   ACCEPT
  Output filter:  ACCEPT
  Routes:         1 imported, 0 exported, 1 preferred
  Route change stats:     received   rejected   filtered    ignored 
accepted
    Import updates:              1          0          0          0 
1
    Import withdraws:            0          0        ---          0 
0
    Export updates:              0          0          0        --- 
0
    Export withdraws:            0        ---        ---        --- 
0

evrradv  RAdv     master   up     11:34
  Preference:     0
  Input filter:   ACCEPT
  Output filter:  REJECT
  Routes:         0 imported, 0 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored 
accepted
    Import updates:              0          0          0          0 
0
    Import withdraws:            0          0        ---          0 
0
    Export updates:              0          0          0        --- 
0
    Export withdraws:            0        ---        ---        --- 
0

evrospf  OSPF     master   up     13:01       Running
  Preference:     150
  Input filter:   ACCEPT
  Output filter:  ACCEPT
  Routes:         1 imported, 1 exported, 1 preferred
  Route change stats:     received   rejected   filtered    ignored 
accepted
    Import updates:             20          0          6          0 
14
    Import withdraws:            5          0        ---          6 
5
    Export updates:             18         15          0        --- 
3
    Export withdraws:            5        ---        ---        --- 
1

bird> show ospf lsadb

Global

 Type   LS ID           Router           Age  Sequence  Checksum
 4005  255.3.0.0       10.255.199.3      289  80000004    e30e

Area 0.0.0.0

 Type   LS ID           Router           Age  Sequence  Checksum
 2001  0.0.0.0         10.255.199.1      803  80000001    284b
 2002  0.0.0.3         10.255.199.1      803  80000001    4f5c
 2009  0.0.0.3         10.255.199.1      803  80000001    38eb
 2001  0.0.0.0         10.255.199.3      798  80000001    13da
 2009  0.0.0.0         10.255.199.3      798  80000001    dc8d

Link evrr-000000

 Type   LS ID           Router           Age  Sequence  Checksum
 0008  0.0.0.3         10.255.199.1      892  80000001    d495
 0008  0.0.0.123       10.255.199.3      434  80000005    d2c3
bird>

bird> show osp state all

area 0.0.0.0

        router 10.255.199.1
                distance 10
                network [10.255.199.1-3] metric 1

        router 10.255.199.3
                distance 0
                network [10.255.199.1-3] metric 10
                external fc00:3333:33:333::/64 metric2 10000

        network [10.255.199.1-3]
                distance 10
                router 10.255.199.1
                router 10.255.199.3
                address fc00:41c8:10:1dd::/64


bird> show ospf top all

area 0.0.0.0

        router 10.255.199.1
                distance 10
                network [10.255.199.1-3] metric 1

        router 10.255.199.3
                distance 0
                network [10.255.199.1-3] metric 10

        network [10.255.199.1-3]
                distance 10
                router 10.255.199.1
                router 10.255.199.3

bird> show ospf neighbors
evrospf:
Router ID       Pri          State      DTime   Interface  Router IP
10.255.199.1    100         full/dr     00:34   evrr-000000 
fe80::213:72ff:fefd:62e8
bird>

/etc/bird6.conf contains:

router id 10.255.199.3;

protocol kernel evrkernel {
        persist;                # Don't remove routes on bird shutdown
        scan time 10;           # Scan kernel routing table every 20 seconds
        import all;
        export all;
        learn;                  # Learn all alien routes from the kernel
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
        scan time 10;           # Scan interfaces every 10 seconds
}

protocol direct evrdirect {
         interface "-evrr-000000", "evrr-*";
         export all;
}

protocol ospf evrospf {
        area 0.0.0.0 {
                interface "evrr-000000" {
                        cost 10;
                        priority 0;
                        authentication none;
                };
        };
        export all;
        import all;
}






More information about the Quagga-users mailing list