Adding to my own message, it seems this is even worse than expected after
I looked into more failures.
It breaks simple iBGP BGP (without the ebgp multi hop) as well.

So as an example, connect 2 Quagga together over a single interface.
One (just for testing) announces a network, the other is the DUT
receiving the network (and showing the problem).
I call them TESTER (for the announcing not) and DUT for the quagga
under test below:

TESTER:
[…]
interface eth1
 ip address 192.168.1.1/24
[…]
interface lo
 ip address 192.168.0.1/32
!
router bgp 500
 bgp router-id 192.168.1.1
 network 172.16.1.0/24
 neighbor 192.168.1.101 remote-as 500
!
ip route 172.16.1.0/24 lo
[…]

DUT:
interface eth1
 ip address 192.168.1.101/24
[…]
router bgp 500
 bgp router-id 192.168.1.101
 neighbor 192.168.1.1 remote-as 500
[…]

The DUT receives the route, but shows nexthop as “inaccessible”, but still
with a nexthop on the directly connected network:

DUT# sh ip bgp
BGP table version is 0, local router ID is 192.168.1.101
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
* i172.16.1.0/24    192.168.1.1              0    100      0 i

Total number of prefixes 1
DUT# sh ip bgp 172.16.1.0/24
BGP routing table entry for 172.16.1.0/24
Paths: (1 available, no best path)
  Not advertised to any peer
  Local
    192.168.1.1 (inaccessible) from 192.168.1.1 (192.168.1.1)
      Origin IGP, metric 0, localpref 100, valid, internal
      Last update: Mon Aug 31 16:27:54 2015

So this bad commit basically breaks most of my BGP test scripts - which
means that I can’t test any new commits or patches.

Would appreciate some (temporary) remove of this patch (I know, might
be painful) or quick fix.

Regards,
   Martin Winter
   [email protected]


On 19 Aug 2015, at 15:40, Martin Winter wrote:

Nicholas,

Any update (or patch to test) for this?
It’s still broken in the git master.

Otherwise I would prefer to back this commit out until it’s resolved.
(I worry as it masks other potential BGP errors. Nearly half of my BGP
compliance tests fail because of this problem)

- Martin Winter

On 6 Jul 2015, at 0:50, Martin Winter wrote:

It seems we have a bad commit in git master.

Commit c99f348 “*: add VRF ID in the API message header” is the bad commit.

It seems (at least) direct connected next hops in received BGP routes show up as inaccessible with “ebgp-multihop” configured. (It works without the
ebgp-multihop)
(in this example: 172.16.1.0/24, which is announced from the directly
connected BGP neighbor with a connected next hop of 192.168.1.1)

dut# show ip bgp
BGP table version is 0, local router ID is 192.168.1.101
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
       i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop            Metric LocPrf Weight Path
*  172.16.1.0/24    192.168.1.1              0             0 501 i
*> 192.168.1.0      0.0.0.0                  0         32768 i

Total number of prefixes 2
dut# show ip bgp 172.16.1.0/24
BGP routing table entry for 172.16.1.0/24
Paths: (1 available, no best path)
Not advertised to any peer
501
192.168.1.1 (inaccessible) from 192.168.1.1 (192.168.1.1)
Origin IGP, metric 0, localpref 100, valid, external
Last update: Sun Jul  5 21:47:03 2015

dut# show ip route 192.168.1.1
Routing entry for 192.168.1.0/24
Known via "connected", distance 0, metric 0, vrf 0, best
* directly connected, eth1


Here is how the issue can be reproduced:

2 computer’s running Quagga connected to each other of a single ethernet. (I’m using Quagga for the tester to show the issue and on the DUT for this) “Tester” is basically just used to announce the test network to the DUT which
runs the faulty Quagga code.

Here is the relevant config:

Tester:
[…]
interface eth1
ip address 192.168.2.1/24
ipv6 nd suppress-ra
no link-detect
!
router bgp 501
bgp router-id 192.168.1.1
network 172.16.1.0/24
neighbor 192.168.1.101 remote-as 500
!
ip route 172.16.1.0/24 Null0
!
[…]

DUT:
[…]
interface eth1
ip address 192.168.1.101/24
ipv6 nd suppress-ra
no link-detect
!
router bgp 500
bgp router-id 192.168.1.101
network 192.168.1.0/24
neighbor 192.168.1.1 remote-as 501
neighbor 192.168.1.1 ebgp-multihop 255
!
[…]

Sidenotes (not sure if it’s relevant):
- Ubuntu 14.04.2LTS
- Quagga configured with “--enable-vtysh --enable-tcp-zebra --enable-user=root --enable-multipath=0 --enable-fpm --enable-pimd --enable-isisd”


- Martin Winter
[email protected]

_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to