1

I've got quagga running on Slackware 14.2, kernel 4.4.7, (quagga-1.0.20160315 build from sources). Quagga fails to update route when path dissappears.

For example, that route is wrong and it was previously created by quagga:

94.246.185.0/24 via 94.246.185.42 dev eth3.2224  proto zebra  metric 20

As I understand, quagga has information about correct path, but ignores it because there's already route in kernel table...

bgp# show ip bgp 94.74.72.0/24
BGP routing table entry for 94.74.72.0/24
Paths: (2 available, best #2, table Default-IP-Routing-Table)
  Not advertised to any peer
  12741 1299 7713 45470 45470 50935
    213.17.213.97 from 213.17.213.97 (83.238.252.171)
      Origin IGP, localpref 100, valid, external
      Community: 1299:37000 12741:21000 12741:21041
      Last update: Tue Aug 30 11:28:22 2016

  9002 7713 45470 45470 50935
    87.245.245.89 from 87.245.245.89 (87.245.225.167)
      Origin IGP, localpref 100, valid, external, best
      Community: 9002:9002 9002:64789
      Last update: Tue Aug 30 11:27:55 201

bgp# show ip route 94.74.72.0/24
Routing entry for 94.74.72.0/24
  Known via "bgp", distance 20, metric 0, vrf 0
  Last update 01:22:43 ago
    87.245.245.89, via eth3.585

Routing entry for 94.74.72.0/24
  Known via "kernel", distance 0, metric 0, vrf 0, best, fib
  * 94.246.185.42, via eth3.2224

Is this may be a bug in quagga or error in my configuration?

9
  • 1
    I'm not a Linux expert, but I believe kernel routes will always take precedence over bgp routes.
    – Ron Trunk
    Aug 30, 2016 at 11:18
  • yes, but quagga should delete non valid route when path will dissappear Aug 30, 2016 at 11:20
  • What do you mean "path disappear?" Does something remove the kernel route?
    – Ron Trunk
    Aug 30, 2016 at 11:22
  • in my question you can see two available paths for reaching that subnet. before that there was one more, so quagga did set route in kernel using that gateway (94.246.185.42) . after that path dissappeared quagga should set route for that subnet by one of the other gateways (213.17.213.97 or 87.245.245.89) Aug 30, 2016 at 11:29
  • OK, I'm out of my element here. I'll leave it to a Linux expert.
    – Ron Trunk
    Aug 30, 2016 at 11:33

2 Answers 2

2

I am having the same issue using Quagga (version 1.2.2). I had the --retain flag on the daemon, removed it from my start up script and restarted quagga, but it didn't fix the issue. Only manually deleting the route from the kernel fixed the routing loop.

bgprouter# sh ip route 125.209.208.1
Routing entry for 125.209.208.0/22
  Known via "bgp", distance 20, metric 0, tag 0, vrf 0
  Last update 00:02:06 ago
  >  206.197.187.12, via ix0

Routing entry for 125.209.208.0/22
  Known via "kernel", distance 0, metric 0, tag 0, vrf 0, best, fib
  >* 111.111.111.145, via ix2

In the shell (freeBSD), I delete the kernel route:

# route del -net 125.209.208.0/22

And then the router is repopulated from zebra with the proper router:

# route get 125.209.208.0
   route to: 125.209.208.0
destination: 125.209.208.0
       mask: 255.255.252.0
    gateway: as6939.sfmix.org
        fib: 0
  interface: ix0
      flags: <UP,GATEWAY,DONE,PROTO1>
 recvpipe  sendpipe  ssthresh  rtt,msec    mtu        weight    expire
       0         0         0         0      1500         1         0 
0
0

If you do ip route show 94.74.72.0/24 from command line (linux shell) and tell us what protocol it says there. If it's zebra something is weird. Check if there is more kernel routes that shouldn't be there. sh ip route summary from within quagga.

1
  • I downgraded quagga and now everything is working ok. Dec 15, 2016 at 14:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.