Mailing List Archive

[Bug 377] eBGP multihop/nexthop problem
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From eugen@grosbein.pp.ru 2007-06-20 07:24 -------
In short: quagga-0.99.7 erroneously marks a prefix inactive if it is received
from eBGP peer and this prefix has nexthop that was announced by (another) eBGP
peer.

This is a real configuration that one of biggest national Network Operators
in Russia offers for BGP peering with Autonomous Systems in East Siberian
region in case of eBGP multihop (ip addresses are mangled):

1) Our AS has 1.1.1.1/30 on the external ethernet link
2) eBGP peer 2.2.2.2 of Network Operator is reachable through 1.1.1.2,
hence this static route:

ip route 2.2.2.2/32 1.1.1.2

The peer 2.2.2.2 obtains our announces and announces the only prefix to us:
3.3.3.3/32 with nexthop 2.2.2.2

3) 3.3.3.3 is another our eBGP peer (the same Network Operator's), it announces
default route to us with nexthop 3.3.3.3. quagga marks this default route as
inactive.

The workaround is to filter out incoming BGP announce 3.3.3.3/32 from 2.2.2.2
and use static route instead:
ip route 3.3.3.3/32 1.1.1.2

Then quagga does not mark this route as inactive and all works just fine.

I've tracked the problem till zebra/zebra_rib.c, function nexthop_active_ipv4()
and found that it contains special processing for BGP-received prefixes,
the logic implemented there seems to be broken. It's where from the beginning.

------- Additional Comments From paul@dishone.st 2007-06-25 11:43 -------
Can we see:

bgpd: show ip bgp <bgp route>
zebra: show ip route <bgp route>
show ip route <bgp route nexthop>

?

This sounds like a misconfig, but need more information to say.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From rumen@telecoms.bg 2007-06-25 11:53 -------
How about if you try this:
neighbor 2.2.2.2 route-map PERR1-IN in
neighbor 3.3.3.3 route-map PEER2-IN in
!
route-map PEER1-IN permit 10
set ip next-hop 1.1.1.2

route-map PEER2-IN permit 20
set ip next-hop 1.1.1.2

best regards,
Rumen Svobodnikov
(btw if i remember correctly you needed to do the same thing for multihop neighbors on cisco too)



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From eugen@grosbein.pp.ru 2007-06-26 10:29 -------
For Paul Jakma: here is the output when incoming eBGP announce from 2.2.2.2
is not filtered:

# show ip bgp 0.0.0.0
BGP routing table entry for 0.0.0.0/0
Paths: (2 available, best #1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
4.4.4.4 5.5.5.5
12389
3.3.3.3 (metric 2) from 3.3.3.3 (3.3.3.3)
Origin IGP, metric 0, localpref 100, weight 30, valid, external, best
Last update: Tue Jun 26 16:43:36 2007

21127
6.6.6.6 (metric 2) from 5.5.5.5 (5.5.5.6)
Origin IGP, localpref 100, weight 20, valid, internal
Last update: Tue Jun 26 15:22:01 2007

# show ip route 0.0.0.0
Routing entry for 0.0.0.0/0
Known via "bgp", distance 20, metric 0
Last update 00:34:38 ago
3.3.3.3 inactive

Routing entry for 0.0.0.0/0
Known via "rip", distance 120, metric 2, best
Last update 1d01h50m ago
* 5.5.5.6, via em2

Routing entry for 0.0.0.0/0
Known via "static", distance 250, metric 0
5.5.5.6, via em2

# show ip route 3.3.3.3
Routing entry for 3.3.3.3/32
Known via "bgp", distance 20, metric 0, best
Last update 00:42:27 ago
* 2.2.2.2 (recursive via 1.1.1.2)

Routing entry for 3.3.3.3/32
Known via "static", distance 250, metric 0
1.1.1.2, via em3




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From eugen@grosbein.pp.ru 2007-06-26 10:34 -------
For Rumen Svobodnikov: it's more easy to filter out incoming eBGP prefix
3.3.3.3/32 to workaround corresponding check for origin of prefix in Quagga
source code :-)

I've never used 'set ip next-hop' on Cisco in multihop eBGP configurations
and have never read such requirement in Cisco.com documents.




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From paul@dishone.st 2007-06-26 12:27 -------
Eugene, you're routing your BGP next-hop through a BGP route:

# show ip route 3.3.3.3
Routing entry for 3.3.3.3/32
Known via "bgp", distance 20, metric 0, best
Last update 00:42:27 ago
* 2.2.2.2 (recursive via 1.1.1.2)

Routing entry for 3.3.3.3/32
Known via "static", distance 250, metric 0
1.1.1.2, via em3

Your static has distance 250, so the BGP route gets preferred. I suspect that's
not what you want. If you remove the high-weight from the static, you may find
things work..




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From eugen@grosbein.pp.ru 2007-06-26 13:49 -------
> Eugene, you're routing your BGP next-hop through a BGP route:

Yes, and that's what I've told in first paragraph of this bug report:

> In short: quagga-0.99.7 erroneously marks a prefix inactive if it is received
> from eBGP peer and this prefix has nexthop that was announced by (another)
> eBGP peer.

> Your static has distance 250, so the BGP route gets preferred. I suspect
> that's not what you want.

That's exacly what I wanted from the beginning. The static takes place
when I filter out eBGP announce of the prefix in question.

> If you remove the high-weight from the static, you may find
> things work..

Yes, when static become selected route, thinks start to work,
and that't what I've told already:

> The workaround is to filter out incoming BGP announce 3.3.3.3/32 from 2.2.2.2
> and use static route instead:
> ip route 3.3.3.3/32 1.1.1.2

The question is: why quagga treats eBGP-learned next-hop address
this way (repeat: zebra/zebra_rib.c, function nexthop_active_ipv4()) ?
And why does it mark the route inactive? And why does one need to override
eBGP-learned prefix to make things work?

I personally has solved my problem with static route and just want to share
my experience with others and, perhaps, help to improve Quagga.




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377


paul@dishone.st changed:

What |Removed |Added
----------------------------------------------------------------------------
Severity|major |enhancement




------- Additional Comments From paul@dishone.st 2007-06-27 09:22 -------
Telling is one thing, understanding is another. That sometimes takes a while.

Routing next-hops of a protocol via that same protocol is not supported. It
seems suspect conceptually, even if one can find certain scenarios where it
might appear to work. I suspect this scenario can not be relied to work across
routing platforms either.

At best, this bug is an RFE - a request to add support for recursive lookups
(which can be useful), with ability to recurse through same protocol.




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs
[Bug 377] eBGP multihop/nexthop problem [ In reply to ]
Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug
report.

http://bugzilla.quagga.net/show_bug.cgi?id=377





------- Additional Comments From eugen@grosbein.pp.ru 2007-06-28 19:35 -------
> Routing next-hops of a protocol via that same protocol is not supported.
> It seems suspect conceptually, even if one can find certain scenarios where
> it might appear to work. I suspect this scenario can not be relied to work
> across routing platforms either.

What's wrong with routing next-hops of eBGP via eBGP?
Cisco does support this :-)

> At best, this bug is an RFE - a request to add support for recursive lookups
> (which can be useful), with ability to recurse through same protocol.

Sorry, I can't understand why recursive lookups are needed -
all code is already here, we need just not to mark such prefix 'inactive',
do we?




------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
_______________________________________________
Quagga-bugs mailing list
Quagga-bugs@lists.quagga.net
http://lists.quagga.net/mailman/listinfo/quagga-bugs