I'm testing in a network where every router peers only with physically
connected routers,
every peer is configured as a route-reflector client, every peering is
configured with
set next-hop self and set metric +100, all routers in the same AS.
Every router also peers with a route-server which runs quagga.
A config in a router looks like this:
cr203-STO# cat /etc/bgpd.conf
# $OpenBSD: bgpd.conf,v 1.7 2004/10/01 15:12:16 henning Exp $
# sample bgpd configuration file
# see bgpd.conf(5)
AS 65000
router-id 10.0.0.2
network connected
network static
network 10.0.0.2/32
group "ibgp" {
remote-as 65000
route-reflector
set metric +100
set nexthop self
holdtime 10
neighbor 172.16.1.5 {
local-address 172.16.1.6
}
neighbor 10.1.1.1 {
local-address 10.1.1.2
}
neighbor 10.1.1.14 {
local-address 10.1.1.13
}
}
neighbor 192.168.30.10 {
remote-as 65000
local-address 10.0.0.2
}
cr203-STO# ifconfig lo1
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33224
groups: lo
inet 10.0.0.2 netmask 0xffffffff
cr203-STO#
With this setup I can introduce routing loops into the network by flapping
prefixes. Here flapped a prefix with an intervall of a few seconds:
cr203-STO# bgpctl network add 12.0.0.0/8
request sent.
cr203-STO# bgpctl network del 12.0.0.0/8
request sent.
cr203-STO# bgpctl network add 12.0.0.0/8
request sent.
cr203-STO# bgpctl network del 12.0.0.0/8
request sent.
cr203-STO# bgpctl network add 12.0.0.0/8
request sent.
cr203-STO# bgpctl network del 12.0.0.0/8
request sent.
cr203-STO# bgpctl network add 12.0.0.0/8
request sent.
cr203-STO# bgpctl network del 12.0.0.0/8
request sent.
cr203-STO# bgpctl network add 12.0.0.0/8
request sent.
cr203-STO# bgpctl network del 12.0.0.0/8
request sent.
cr203-STO#
After this every router in the network except cr203-STO which
originated it sees this prefix.
They all consider the 10.0.0.2 (cr203-STO) to be the originator.
A look from the route-server:
quagga-bgpd# sh ip bgp summary
BGP router identifier 192.168.30.10, local AS number 65000
1 BGP AS-PATH entries
0 BGP community entries
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down
State/PfxRcd
10.0.0.1 4 65000 1185 897 0 0 0 00:58:20 31
10.0.0.2 4 65000 1128 880 0 0 0 00:56:51 30
10.0.0.3 4 65000 1142 899 0 0 0 00:58:13 31
10.0.0.4 4 65000 1141 901 0 0 0 00:57:58 31
10.0.0.5 4 65000 1179 901 0 0 0 00:57:32 31
10.0.0.6 4 65000 1192 900 0 0 0 00:57:19 31
10.0.0.7 4 65000 1182 916 0 0 0 00:58:21 31
10.0.0.8 4 65000 1222 901 0 0 0 00:58:09 31
172.16.0.1 4 65000 1256 898 0 0 0 00:57:00 31
172.16.0.2 4 65000 1208 902 0 0 0 00:57:46 31
172.16.0.3 4 65000 1471 1107 0 0 0 02:41:01 31
Total number of neighbors 11
quagga-bgpd#
quagga-bgpd# sh ip bgp 12.0.0.0
BGP routing table entry for 12.0.0.0/8
Paths: (10 available, best #6, table Default-IP-Routing-Table)
Not advertised to any peer
Local
172.16.1.2 from 172.16.0.1 (10.0.0.2)
Origin IGP, metric 500, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 172.16.0.1 10.0.0.1 10.0.0.3
172.16.0.2 10.0.0.4
Last update: Mon Apr 10 19:20:05 2006
Local
10.1.1.6 from 10.0.0.1 (10.0.0.2)
Origin IGP, metric 400, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.1 10.0.0.3 172.16.0.2
10.0.0.4
Last update: Mon Apr 10 19:20:05 2006
Local
10.1.1.17 from 10.0.0.5 (10.0.0.2)
Origin IGP, metric 400, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.5 10.0.0.3 172.16.0.2
10.0.0.4
Last update: Mon Apr 10 19:20:05 2006
Local
172.16.1.13 from 172.16.0.2 (10.0.0.2)
Origin IGP, metric 400, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 172.16.0.2 10.0.0.4 10.0.0.3
10.0.0.1
Last update: Mon Apr 10 19:20:04 2006
Local
10.1.1.21 from 10.0.0.6 (10.0.0.2)
Origin IGP, metric 500, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.6 10.0.0.5 10.0.0.3
172.16.0.2
10.0.0.4
Last update: Mon Apr 10 19:20:05 2006
Local
172.16.1.10 from 10.0.0.3 (10.0.0.2)
Origin IGP, metric 300, localpref 100, valid, internal, best
Originator: 10.0.0.2, Cluster list: 10.0.0.3 172.16.0.2 10.0.0.4
Last update: Mon Apr 10 19:20:05 2006
Local
10.1.1.9 from 10.0.0.4 (10.0.0.2)
Origin IGP, metric 300, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.4 10.0.0.3 10.0.0.1
Last update: Mon Apr 10 19:20:04 2006
Local
10.1.1.25 from 10.0.0.7 (10.0.0.2)
Origin IGP, metric 400, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.7 10.0.0.4 10.0.0.3
10.0.0.1
Last update: Mon Apr 10 19:20:04 2006
Local
10.1.1.29 from 10.0.0.8 (10.0.0.2)
Origin IGP, metric 500, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 10.0.0.8 10.0.0.7 10.0.0.4
10.0.0.3 10.0.0.1
Last update: Mon Apr 10 19:20:05 2006
Local
172.16.1.18 from 172.16.0.3 (10.0.0.2)
Origin IGP, metric 500, localpref 100, valid, internal
Originator: 10.0.0.2, Cluster list: 172.16.0.3 10.0.0.7 10.0.0.4
10.0.0.3 10.0.0.1
Last update: Mon Apr 10 19:20:04 2006
quagga-bgpd#
If I look into the rib of the boxes I find that one of the routers has a
next-hop which actually
has a higher metric than itself.
cr204-CPH# ifconfig lo1
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33224
groups: lo
inet 10.0.0.3 netmask 0xffffffff
cr204-CPH# bgpctl sh rib 12.0.0.0
flags: * = Valid, > = Selected, I = via IBGP, A = Announced
origin: i = IGP, e = EGP, ? = Incomplete
flags destination gateway lpref med aspath origin
I*> 12.0.0.0/8 172.16.1.10 100 300 i
cr204-CPH# ssh 172.16.1.10
[EMAIL PROTECTED]'s password:
Last login: Mon Apr 10 19:43:04 2006 from 192.168.3.11
OpenBSD 3.9-current (GENERIC) #5: Sun Apr 2 21:42:28 BST 2006
Welcome to OpenBSD: The proactively secure Unix-like operating system.
Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code. With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
Terminal type? [screen]
ar206-CPH# ifconfig lo1
lo1: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33224
groups: lo
inet 172.16.0.2 netmask 0xffffffff
ar206-CPH# bgpctl sh rib 12.0.0.0
flags: * = Valid, > = Selected, I = via IBGP, A = Announced
origin: i = IGP, e = EGP, ? = Incomplete
flags destination gateway lpref med aspath origin
I*> 12.0.0.0/8 172.16.1.13 100 400 i
ar206-CPH#
I have so far been unable to find a fixed pattern of where/why this happens.
Any ideas ?
/Tony
--
Tony Sarendal - [EMAIL PROTECTED]
IP/Unix
-= The scorpion replied,
"I couldn't help it, it's my nature" =-