Lab 10-3: Multi-AS BGP Topology
This BGP lab demonstrates several aspects of IBGP and EBGP in combination with a route reflector, peer groups, and a route server. It essentially consists of two different EBGP topologies and simulates stub, transit, and multi-exit autonomous systems using OSPF as underlying IGP as well as an exchange segment. The IGP fulfills the connectivity requirements of IBGP. The examples of this lab include the following:
- EBGP mesh without a route server
- EBGP at an exchange point featuring a Zebra route server
- EBGP at an exchange point featuring Merrit's RSng (RSd, IRRd)
- Looking-glass access to route servers
The lab also demonstrates redistribution of OSPF into BGP (redistribute ospf) in contrast to network statements for prefix announcements to EBGP neighbors. This is not always advisable, but it really depends on your individual situation.
Zebra does not support EBGP multipath (maximum-paths), but Cisco IOS architecture does. Keep in mind, however, that bgp-multipath only takes care of storing more than one path to a given prefix in the BGP table (which is a necessary condition for load balancing, but not a sufficient one). In fact, it is the FIB, not BGP, that really sees that those are two ECMP-eligible routes and uses them appropriately per-flow or per-packet.
With EBGP, directly connected peers (exchange network segment) or ebgp-multihop configuration with IGP resolution of loopbacks is required. Figure 10-8 shows the topology and address concept used throughout this part of the lab. Note that the networks 192.168.7.0/24 and 192.168.14.0/24 are considered "neutral" networks and are not announced by any EBGP participant. Figure 10-9 shows the logical BGP setup
through 10-17 present the relevant parts of the router OSPF and BGP configurations, nothing really fancy. To demonstrate two variants of origin, OSPF redistribution into BGP is used on callisto and castor, whereas laurel and scar use network statements to announce their prefixes to the exchange segment in contrast to the redistribution of connected routes you have seen in the previous lab. Callisto acts as a route reflector for the AS 65000 IBGP speakers.
Example 10-11. Castor OSPF and BGP Configuration
castor-ospfd# show running-config Current configuration: ! hostname castor-ospfd password 8 4DwwIFdKLWvU. enable password 8 dV8x4MhxDAuaw log file /var/log/ospfd.log service advanced-vty service password-encryption ! ! ! interface xl0 ip ospf message-digest-key 1 md5 zebra ! interface ed0 ip ospf message-digest-key 1 md5 zebra ! interface lp0 ip ospf network point-to-point ! interface sl0 ip ospf network point-to-point ! interface sl1 ip ospf network point-to-point ! interface ds0 ! interface stf0 ! interface faith0 ! interface vlan0 ! interface vlan1 ! interface lo0 ! interface ppp0 ip ospf network point-to-point ! interface ppp1 ip ospf network point-to-point ! interface vlan8 ip ospf message-digest-key 1 md5 zebra ! interface lo1 ! interface wpachdlc0 ip ospf network point-to-point ! router ospf ospf router-id 192.168.2.7 compatible rfc1583 redistribute connected redistribute static passive-interface ed0 network 192.168.2.0/24 area 0 network 192.168.80.0/24 area 0 network 192.168.99.0/30 area 0 area 0 authentication message-digest capability opaque ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 15 0 ! end castor-bgpd# show running-config Current configuration: ! hostname castor-bgpd password 8 4DwwIFdKLWvU. enable password 8 dV8x4MhxDAuaw log file /var/log/bgpd.log service advanced-vty service password-encryption ! router bgp 65000 bgp router-id 192.168.2.7 bgp cluster-id 1.1.1.1 bgp dampening redistribute ospf neighbor 192.168.1.1 remote-as 65000 neighbor 192.168.1.1 soft-reconfiguration inbound neighbor 192.168.7.254 remote-as 65003 neighbor 192.168.7.254 soft-reconfiguration inbound ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 15 0 ! end
Example 10-12. Ganymed OSPF and BGP Configuration
ganymed-ospfd# show running-config Current configuration: ! hostname ganymed-ospfd password 8 bJFoEOB0obLL6 enable password 8 nVitURFKR/y3M log file /var/log/ospfd.log service advanced-vty service password-encryption ! ! ! interface lo0 ! interface lo1 ! interface ne3 ip ospf message-digest-key 1 md5 zebra ! interface ne4 ip ospf message-digest-key 1 md5 zebra ! interface ne5 ! interface ppp0 ip ospf network point-to-point ! interface ppp1 ip ospf network point-to-point ! interface tun0 ip ospf network point-to-point ! interface tun1 ip ospf network point-to-point ! interface enc0 ! interface vlan0 ip ospf message-digest-key 1 md5 zebra ! interface vlan1 ! interface gre0 ip ospf network point-to-point ! interface gif0 ip ospf network point-to-point ! interface gif1 ip ospf network point-to-point ! interface gif2 ip ospf network point-to-point ! interface gif3 ip ospf network point-to-point ! interface faith0 ! interface pflog0 ! interface sl0 ip ospf network point-to-point ! interface sl1 ip ospf network point-to-point ! interface bridge0 ! interface bridge1 ! router ospf ospf router-id 192.168.1.254 compatible rfc1583 redistribute connected redistribute static network 192.168.1.0/24 area 0 network 192.168.2.0/24 area 0 network 192.168.45.0/24 area 0 network 192.168.80.0/24 area 0 area 0 authentication message-digest capability opaque ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 15 0 ! end ganymed-bgpd# show running-config Current configuration: ! hostname ganymed-bgpd password 8 bJFoEOB0obLL6 enable password 8 bJFoEOB0obLL6 log file /var/log/bgpd.log service advanced-vty service password-encryption ! router bgp 65000 bgp router-id 192.168.44.1 bgp cluster-id 1.1.1.1 bgp dampening neighbor 192.168.1.1 remote-as 65000 neighbor 192.168.1.1 update-source lo1 neighbor 192.168.1.1 soft-reconfiguration inbound ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 15 0 ! end
Example 10-13. Callisto OSPF and BGP Configuration
callisto-ospfd# show running-config Current configuration: ! hostname callisto-ospfd password 8 m6eyKycFMHniQ enable password 8 bjYlnA9YLBWyM log file /var/log/ospfd.log service advanced-vty service password-encryption ! ! ! interface lo ! interface eth0 ! interface eth1 ip ospf message-digest-key 1 md5 zebra ! interface ipsec0 ! interface ipsec1 ! interface ipsec2 ! interface ipsec3 ! interface eth1:1 ip ospf message-digest-key 1 md5 zebra ! interface lo1 ! interface wp1chdlc ip ospf network point-to-point ! router ospf ospf router-id 192.168.1.1 compatible rfc1583 redistribute connected redistribute static passive-interface eth0 network 192.168.1.0/24 area 0 network 192.168.45.0/24 area 0 network 192.168.99.0/30 area 0 area 0.0.0.0 authentication message-digest capability opaque ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 0 0 ! end callisto-bgpd# show running-config Current configuration: ! hostname callisto-bgpd password 8 m6eyKycFMHniQ enable password 8 bjYlnA9YLBWyM log file /var/log/bgpd.log service advanced-vty service password-encryption ! router bgp 65000 bgp router-id 192.168.1.1 bgp cluster-id 1.1.1.1 bgp dampening redistribute ospf neighbor INTERNAL peer-group neighbor INTERNAL remote-as 65000 neighbor INTERNAL route-reflector-client neighbor INTERNAL soft-reconfiguration inbound neighbor 192.168.2.7 peer-group INTERNAL neighbor 192.168.14.2 remote-as 65001 neighbor 192.168.14.2 soft-reconfiguration inbound neighbor 192.168.14.254 remote-as 65003 neighbor 192.168.14.254 soft-reconfiguration inbound neighbor 192.168.44.1 peer-group INTERNAL ! access-list 1 remark vty-protection access-list 1 permit 127.0.0.1 access-list 1 permit 192.168.1.0 0.0.0.255 ! line vty access-class 1 exec-timeout 0 0 ! end
Example 10-14. Scar OSPF and BGP Configuration
scar# show running-config ... ! ip subnet-zero ! interface Loopback0 ip address 10.0.0.1 255.255.255.0 ! interface Ethernet0 ip address 192.168.7.254 255.255.255.0 no ip proxy-arp ! interface Ethernet1 ip address 192.168.14.254 255.255.255.0 ! interface TokenRing0 ip address 10.0.1.1 255.255.255.0 early-token-release ring-speed 16 ! router ospf 1 router-id 10.0.0.1 log-adjacency-changes area 0 authentication message-digest redistribute connected subnets redistribute static subnets passive-interface Ethernet0 passive-interface Ethernet1 passive-interface Serial0 passive-interface Serial1 passive-interface Serial2 passive-interface Serial3 passive-interface TokenRing1 network 10.0.0.0 0.0.0.255 area 0 network 10.0.1.0 0.0.0.255 area 0 default-information originate ! router bgp 65003 no synchronization bgp router-id 10.0.0.1 bgp cluster-id 1.1.1.1 bgp log-neighbor-changes bgp dampening network 10.0.0.0 mask 255.255.255.0 network 10.0.1.0 mask 255.255.255.0 neighbor 10.0.1.2 remote-as 65003 neighbor 10.0.1.2 update-source Loopback0 neighbor 10.0.1.2 soft-reconfiguration inbound neighbor 192.168.7.7 remote-as 65000 neighbor 192.168.7.7 soft-reconfiguration inbound neighbor 192.168.14.1 remote-as 65000 neighbor 192.168.14.1 soft-reconfiguration inbound neighbor 192.168.14.2 remote-as 65001 neighbor 192.168.14.2 soft-reconfiguration inbound maximum-paths 2 ! ip classless ip route 0.0.0.0 0.0.0.0 192.168.14.1 ip route 0.0.0.0 0.0.0.0 192.168.7.7 2 ...
Example 10-15. Laurel OSPF and BGP Configuration
laurel# show running-config ... ip subnet-zero ! interface Loopback0 ip address 172.16.0.254 255.255.255.128 ! interface Ethernet0 ip address 192.168.14.2 255.255.255.0 ! interface Ethernet1 ip address 172.16.0.1 255.255.255.128 ip ospf message-digest-key 1 md5 7 061C0A235E4F ! router ospf 1 router-id 172.16.0.254 log-adjacency-changes area 0 authentication message-digest redistribute connected subnets redistribute static subnets passive-interface Ethernet0 passive-interface Serial0 passive-interface Serial1 network 172.16.0.0 0.0.0.127 area 0 network 172.16.0.128 0.0.0.127 area 0 default-information originate ! router bgp 65001 no synchronization bgp router-id 172.16.0.254 bgp cluster-id 1.1.1.1 bgp log-neighbor-changes bgp dampening network 172.16.0.0 mask 255.255.255.128 network 172.16.0.128 mask 255.255.255.128 neighbor 172.16.0.253 remote-as 65001 neighbor 172.16.0.253 soft-reconfiguration inbound neighbor 192.168.14.1 remote-as 65000 neighbor 192.168.14.1 soft-reconfiguration inbound neighbor 192.168.14.254 remote-as 65003 neighbor 192.168.14.254 soft-reconfiguration inbound maximum-paths 2 ! ip classless ip route 0.0.0.0 0.0.0.0 192.168.14.1 ip route 0.0.0.0 0.0.0.0 192.168.7.7 2
Example 10-16. Chaplin OSPF and BGP Configuration
chaplin# show running-config ... ! ip subnet-zero ! interface Loopback0 ip address 172.16.0.253 255.255.255.128 ! interface Ethernet0 ip address 172.16.0.2 255.255.255.128 ip ospf message-digest-key 1 md5 7 01090306490A ! router ospf 1 router-id 172.16.0.253 log-adjacency-changes area 0 authentication message-digest redistribute connected subnets redistribute static subnets passive-interface Serial0 passive-interface Serial1 network 172.16.0.0 0.0.0.127 area 0 network 172.16.0.128 0.0.0.127 area 0 ! router bgp 65001 no synchronization bgp router-id 172.16.0.253 bgp cluster-id 1.1.1.1 bgp log-neighbor-changes bgp dampening neighbor 172.16.0.254 remote-as 65001 neighbor 172.16.0.254 soft-reconfiguration inbound ! ip classless ...
Example 10-17. Hardy OSPF and BGP Configuration
hardy# show running-config ... ! ip subnet-zero ! interface Loopback0 ip address 10.0.0.2 255.255.255.0 ! interface TokenRing0 ip address 10.0.1.2 255.255.255.0 ip ospf network broadcast early-token-release ring-speed 16 ! router ospf 1 router-id 10.0.0.2 log-adjacency-changes area 0 authentication message-digest redistribute connected subnets redistribute static subnets network 10.0.0.0 0.0.0.255 area 0 network 10.0.1.0 0.0.0.255 area 0 ! router bgp 65003 no synchronization bgp router-id 10.0.0.2 bgp cluster-id 1.1.1.1 bgp log-neighbor-changes bgp dampening neighbor 10.0.0.1 remote-as 65003 neighbor 10.0.0.1 update-source Loopback0 neighbor 10.0.0.1 soft-reconfiguration inbound ! ip classless ...
Example 10-18 demonstrates the result of this setup with several show commands. The last traceroute shows the effect of the BGP-multipath capability of Cisco IOS architecture using two equal-cost paths.
Example 10-18. Results of This EBGP Setup
[root@ganymed:~#] netstat -rn -f inet Routing tables Internet: Destination Gateway Flags Refs Use Mtu Interface default 211.11.117.1 UGS 4 10366 1500 ne5 10.0.0/24 192.168.1.1 UG1 0 0 1500 ne3 10.0.1/24 192.168.1.1 UG1 0 0 1500 ne3 127/8 127.0.0.1 UGRS 0 0 33224 lo0 127.0.0.1 127.0.0.1 UH 2 0 33224 lo0 172.16.0.0/25 192.168.1.1 UG1 0 0 1500 ne3 172.16.0.128/25 192.168.1.1 UG1 0 0 1500 ne3 192.168.1/24 link#1 UC 0 0 1500 ne3 192.168.1.1 52:54:5:e3:51:87 UHL 7 6620 1500 ne3 192.168.1.2 8:0:46:64:74:1b UHL 1 2213 1500 ne3 192.168.1.254 127.0.0.1 UGHS 0 0 33224 lo0 192.168.2/24 link#2 UC 0 0 1500 ne4 192.168.2.7 0:10:5a:c4:2c:4 UHL 3 977 1500 ne4 192.168.7/24 192.168.2.7 UG1 0 33 1500 ne4 192.168.14/24 192.168.1.1 UG1 0 0 1500 ne3 192.168.44.1 192.168.44.1 UH 0 0 33224 lo1 192.168.45/24 link#1 UC 0 0 1500 ne3 192.168.45.253 52:54:5:e3:51:87 UHL 0 0 1500 ne3 192.168.80/24 link#16 UC 0 0 1496 vlan0 192.168.80.1 0:10:5a:c4:2c:4 UHL 0 0 1496 vlan0 192.168.99.1 192.168.1.1 UGH1 0 0 1500 ne3 192.168.99.2 192.168.2.7 UGH1 0 0 1500 ne4 211.11.117/24 link#3 UC 0 0 1500 ne5 211.11.117.1 0:0:c:7:ac:12 UHL 1 0 1500 ne5 [root@castor:~#] netstat -rn -f inet Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 192.168.2.254 UGSc 3 12 xl0 10/24 192.168.7.254 UG1c 0 0 ed0 10.0.1/24 192.168.7.254 UG1c 0 0 ed0 127.0.0.1 127.0.0.1 UH 0 0 lo0 172.16/25 192.168.2.254 UG1c 0 0 xl0 172.16.0.128/25 192.168.2.254 UG1c 0 0 xl0 192.168.1 192.168.2.254 UG1c 2 0 xl0 192.168.2 link#1 UC 1 0 xl0 192.168.2.254 52:54:05:e3:e4:2f UHLW 14 33 xl0 679 192.168.7 link#2 UC 1 0 ed0 192.168.7.254 00:00:0c:1a:a9:a8 UHLW 4 516 ed0 583 192.168.44 192.168.2.254 UG1c 0 0 xl0 192.168.45 192.168.2.254 UG1c 0 0 xl0 192.168.80 link#15 UC 1 0 vlan8 192.168.80.254 52.54.5.e3.e4.2f UHLW 0 0 vlan8 777 192.168.99.1 192.168.2.254 UGH1 0 0 xl0 192.168.99.2 192.168.99.1 UH 0 6 wpachd => 192.168.99.2/32 wpachdlc0 U1c 0 0 wpachd 211.11.117 192.168.2.254 UG1c 0 0 xl0 castor-bgpd# show ip bgp summary BGP router identifier 192.168.2.7, local AS number 65000 5 BGP AS-PATH entries 0 BGP community entries Dampening enabled. Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.1 4 65000 51 54 0 0 0 00:46:07 9 192.168.7.254 4 65003 55 54 0 0 0 00:46:43 4 Total number of neighbors 2 castor-bgpd# show ip bgp neighbors 192.168.1.1 received-routes BGP table version is 0, local router ID is 192.168.2.7 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0/24 192.168.14.254 0 100 0 65003 i *> 10.0.1.0/24 192.168.14.254 0 100 0 65003 i *> 172.16.0.0/25 192.168.14.2 0 100 0 65001 i *> 172.16.0.128/25 192.168.14.2 0 100 0 65001 i *> 192.168.2.0 192.168.1.254 20 100 0 ? *> 192.168.44.0 192.168.1.254 20 100 0 ? *> 192.168.80.0 192.168.1.254 20 100 0 ? *> 192.168.99.1/32 192.168.1.1 10 100 0 ? *> 211.11.117.0 192.168.1.254 20 100 0 ? Total number of prefixes 9 castor-bgpd# show ip bgp BGP table version is 0, local router ID is 192.168.2.7 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path * i10.0.0.0/24 192.168.14.254 0 100 0 65003 i *> 192.168.7.254 0 0 65003 i * i10.0.1.0/24 192.168.14.254 0 100 0 65003 i *> 192.168.7.254 0 0 65003 i *>i172.16.0.0/25 192.168.14.2 0 100 0 65001 i * 192.168.7.254 0 65003 65001 i *>i172.16.0.128/25 192.168.14.2 0 100 0 65001 i * 192.168.7.254 0 65003 65001 i *> 192.168.1.0 192.168.2.254 20 32768 ? *>i192.168.2.0 192.168.1.254 20 100 0 ? * i192.168.44.0 192.168.1.254 20 100 0 ? *> 192.168.2.254 20 32768 ? *> 192.168.45.0 192.168.2.254 20 32768 ? *>i192.168.80.0 192.168.1.254 20 100 0 ? *>i192.168.99.1/32 192.168.1.1 10 100 0 ? *> 192.168.99.2/32 0.0.0.0 10 32768 ? * i211.11.117.0 192.168.1.254 20 100 0 ? *> 192.168.2.254 20 32768 ? Total number of prefixes 12 [root@callisto:~#] netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.99.1 0.0.0.0 255.255.255.255 UH 40 0 0 wp1chdlc 192.168.99.2 192.168.1.254 255.255.255.255 UGH 40 0 0 eth1 192.168.99.0 0.0.0.0 255.255.255.252 U 40 0 0 wp1chdlc 172.16.0.128 192.168.14.2 255.255.255.128 UG 40 0 0 eth0 172.16.0.0 192.168.14.2 255.255.255.128 UG 40 0 0 eth0 211.11.117.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 10.0.0.0 192.168.14.254 255.255.255.0 UG 40 0 0 eth0 10.0.1.0 192.168.14.254 255.255.255.0 UG 40 0 0 eth0 192.168.2.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 192.168.80.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 ipsec0 192.168.14.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0 192.168.44.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 192.168.45.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo 0.0.0.0 192.168.1.254 0.0.0.0 UG 40 0 0 eth1 callisto-bgpd# show ip bgp summary BGP router identifier 192.168.1.1, local AS number 65000 6 BGP AS-PATH entries 0 BGP community entries Dampening enabled. Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.2.7 4 65000 46 46 0 0 0 00:39:42 7 192.168.14.2 4 65001 48 47 0 0 0 00:39:38 4 192.168.14.254 4 65003 50 47 0 0 0 00:39:38 4 192.168.44.1 4 65000 39 48 0 0 0 00:38:05 0 Total number of neighbors 4 callisto-bgpd# show ip bgp neighbors 192.168.2.7 BGP neighbor is 192.168.2.7, remote AS 65000, local AS 65000, internal link Member of peer-group INTERNAL for session parameters BGP version 4, remote router ID 192.168.2.7 BGP state = Established, up for 00:40:44 Last read 00:00:44, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received (old and new) Address family IPv4 Unicast: advertised and received Received 47 messages, 0 notifications, 0 in queue Sent 47 messages, 0 notifications, 0 in queue Route refresh request: received 0, sent 0 Minimum time between advertisement runs is 5 seconds For address family: IPv4 Unicast INTERNAL peer-group member Route-Reflector Client Inbound soft reconfiguration allowed Community attribute sent to this neighbor (both) 7 accepted prefixes Connections established 1; dropped 0 Local host: 192.168.1.1, Local port: 32923 Foreign host: 192.168.2.7, Foreign port: 179 Nexthop: 192.168.1.1 Read thread: on Write thread: off callisto-bgpd# show ip bgp neighbors 192.168.2.7 advertised-routes BGP table version is 0, local router ID is 192.168.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0/24 192.168.14.254 0 100 0 65003 i *> 10.0.1.0/24 192.168.14.254 0 100 0 65003 i *> 172.16.0.0/25 192.168.14.2 0 100 0 65001 i *> 172.16.0.128/25 192.168.14.2 0 100 0 65001 i *> 192.168.2.0 192.168.1.254 20 100 32768 ? *> 192.168.44.0 192.168.1.254 20 100 32768 ? *> 192.168.80.0 192.168.1.254 20 100 32768 ? *> 192.168.99.1/32 192.168.1.1 10 100 32768 ? *> 211.11.117.0 192.168.1.254 20 100 32768 ? Total number of prefixes 9 callisto-bgpd# show ip bgp BGP table version is 0, local router ID is 192.168.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0/24 192.168.14.254 0 0 65003 i * 192.168.14.254 0 65001 65003 i * i 192.168.7.254 0 100 0 65003 i *> 10.0.1.0/24 192.168.14.254 0 0 65003 i * 192.168.14.254 0 65001 65003 i * i 192.168.7.254 0 100 0 65003 i * 172.16.0.0/25 192.168.14.2 0 65003 65001 i *> 192.168.14.2 0 0 65001 i * 172.16.0.128/25 192.168.14.2 0 65003 65001 i *> 192.168.14.2 0 0 65001 i *>i192.168.1.0 192.168.2.254 20 100 0 ? *> 192.168.2.0 192.168.1.254 20 32768 ? * i192.168.44.0 192.168.2.254 20 100 0 ? *> 192.168.1.254 20 32768 ? *>i192.168.45.0 192.168.2.254 20 100 0 ? *> 192.168.80.0 192.168.1.254 20 32768 ? *> 192.168.99.1/32 0.0.0.0 10 32768 ? *>i192.168.99.2/32 192.168.2.7 10 100 0 ? * i211.11.117.0 192.168.2.254 20 100 0 ? *> 192.168.1.254 20 32768 ? Total number of prefixes 12 callisto-bgpd# show ip bgp 172.16.0.0/25 BGP routing table entry for 172.16.0.0/25 Paths: (2 available, best #2, table Default-IP-Routing-Table) Advertised to non peer-group peers: 192.168.2.7 192.168.14.254 192.168.44.1 65003 65001 192.168.14.2 from 192.168.14.254 (10.0.0.1) Origin IGP, localpref 100, valid, external Last update: Fri May 2 12:54:37 2003 65001 192.168.14.2 from 192.168.14.2 (172.16.0.254) Origin IGP, metric 0, localpref 100, valid, external, best Last update: Fri May 2 12:54:37 2003 scar# show ip bgp summary BGP router identifier 10.0.0.1, local AS number 65003 BGP table version is 19, main routing table version 19 12 network entries and 32 paths using 2316 bytes of memory 7 BGP path attribute entries using 420 bytes of memory 4 BGP AS-PATH entries using 96 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory Dampening enabled. 0 history paths, 0 dampened paths BGP activity 12/49 prefixes, 32/0 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.1.2 4 65003 298 308 19 0 0 04:54:26 0 192.168.7.7 4 65000 66 69 19 0 0 00:58:15 10 192.168.14.1 4 65000 65 70 19 0 0 00:57:36 10 192.168.14.2 4 65001 303 307 19 0 0 04:54:24 10 scar# show ip bgp neighbors 192.168.7.7 BGP neighbor is 192.168.7.7, remote AS 65000, external link BGP version 4, remote router ID 192.168.2.7 BGP state = Established, up for 00:59:07 Last read 00:00:07, hold time is 180, keepalive interval is 60 seconds Neighbor capabilities: Route refresh: advertised and received(new) Address family IPv4 Unicast: advertised and received Received 67 messages, 0 notifications, 0 in queue Sent 70 messages, 0 notifications, 0 in queue Route refresh request: received 0, sent 0 Default minimum time between advertisement runs is 30 seconds For address family: IPv4 Unicast BGP table version 19, neighbor version 19 Index 2, Offset 0, Mask 0x4 Inbound soft reconfiguration allowed 10 accepted prefixes consume 360 bytes Prefix advertised 10, suppressed 0, withdrawn 1 Number of NLRIs in the update sent: max 2, min 0 Connections established 1; dropped 0 Last reset never Connection state is ESTAB, I/O status: 1, unread input bytes: 0 Local host: 192.168.7.254, Local port: 179 Foreign host: 192.168.7.7, Foreign port: 1024 Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes) Event Timers (current time is 0x10FB800): Timer Starts Wakeups Next Retrans 70 0 0x0 TimeWait 0 0 0x0 AckHold 67 37 0x0 SendWnd 0 0 0x0 KeepAlive 0 0 0x0 GiveUp 0 0 0x0 PmtuAger 0 0 0x0 DeadWait 0 0 0x0 iss: 939562101 snduna: 939563660 sndnxt: 939563660 sndwnd: 33580 irs: 2226264130 rcvnxt: 2226265600 rcvwnd: 16384 delrcvwnd: 0 SRTT: 300 ms, RTTO: 303 ms, RTV: 3 ms, KRTT: 0 ms minRTT: 4 ms, maxRTT: 300 ms, ACK hold: 200 ms Flags: passive open, nagle, gen tcbs Datagrams (max data segment is 1460 bytes): Rcvd: 135 (out of order: 0), with data: 67, total data bytes: 1469 Sent: 108 (retransmit: 0), with data: 69, total data bytes: 1558 scar# show ip bgp neighbors 192.168.7.7 received-routes BGP table version is 19, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path * 172.16.0.0/25 192.168.7.7 0 65000 65001 i * 172.16.0.128/25 192.168.7.7 0 65000 65001 i * 192.168.1.0 192.168.7.7 20 0 65000 ? *> 192.168.2.0 192.168.7.7 0 65000 ? * 192.168.44.0 192.168.7.7 20 0 65000 ? * 192.168.45.0 192.168.7.7 20 0 65000 ? *> 192.168.80.0 192.168.7.7 0 65000 ? *> 192.168.99.1/32 192.168.7.7 0 65000 ? * 192.168.99.2/32 192.168.7.7 10 0 65000 ? * 211.11.117.0 192.168.7.7 20 0 65000 ? Total number of prefixes 10 scar# show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default, U - per-user static route, o - ODR P - periodic downloaded static route Gateway of last resort is 192.168.14.1 to network 0.0.0.0 C 192.168.14.0/24 is directly connected, Ethernet1 B 192.168.44.0/24 [20/20] via 192.168.7.7, 00:50:56 B 192.168.45.0/24 [20/0] via 192.168.14.1, 00:50:46 172.16.0.0/25 is subnetted, 2 subnets B 172.16.0.128 [20/0] via 192.168.14.2, 04:48:45 B 172.16.0.0 [20/0] via 192.168.14.2, 04:48:45 192.168.99.0/32 is subnetted, 2 subnets B 192.168.99.2 [20/0] via 192.168.14.1, 00:52:46 B 192.168.99.1 [20/0] via 192.168.7.7, 00:52:26 B 192.168.80.0/24 [20/0] via 192.168.7.7, 00:50:56 B 211.11.117.0/24 [20/20] via 192.168.7.7, 00:50:56 10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks O 10.0.0.2/32 [110/7] via 10.0.1.2, 04:49:47, TokenRing0 C 10.0.0.0/24 is directly connected, Loopback0 C 10.0.1.0/24 is directly connected, TokenRing0 C 192.168.7.0/24 is directly connected, Ethernet0 B 192.168.1.0/24 [20/0] via 192.168.14.1, 00:50:46 B 192.168.2.0/24 [20/0] via 192.168.7.7, 00:50:56 S* 0.0.0.0/0 [1/0] via 192.168.14.1 scar# show ip bgp BGP table version is 17, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.0.0.0/24 0.0.0.0 0 32768 i *> 10.0.1.0/24 0.0.0.0 0 32768 i * 172.16.0.0/25 192.168.7.7 0 65000 65001 i * 192.168.14.2 0 65000 65001 i *> 192.168.14.2 0 0 65001 i * 172.16.0.128/25 192.168.7.7 0 65000 65001 i * 192.168.14.2 0 65000 65001 i *> 192.168.14.2 0 0 65001 i * 192.168.1.0 192.168.14.1 0 65001 65000 ? *> 192.168.14.1 0 65000 ? * 192.168.7.7 20 0 65000 ? * 192.168.2.0 192.168.14.1 0 65001 65000 ? * 192.168.14.1 20 0 65000 ? *> 192.168.7.7 0 65000 ? * 192.168.44.0 192.168.14.1 0 65001 65000 ? * 192.168.14.1 20 0 65000 ? *> 192.168.7.7 20 0 65000 ? * 192.168.45.0 192.168.14.1 0 65001 65000 ? *> 192.168.14.1 0 65000 ? * 192.168.7.7 20 0 65000 ? * 192.168.80.0 192.168.14.1 0 65001 65000 ? * 192.168.14.1 20 0 65000 ? *> 192.168.7.7 0 65000 ? *> 192.168.99.1/32 192.168.7.7 0 65000 ? * 192.168.14.1 0 65001 65000 ? * 192.168.14.1 10 0 65000 ? * 192.168.99.2/32 192.168.14.1 0 65001 65000 ? *> 192.168.14.1 0 65000 ? * 192.168.7.7 10 0 65000 ? * 211.11.117.0 192.168.14.1 0 65001 65000 ? * 192.168.14.1 20 0 65000 ? *> 192.168.7.7 20 0 65000 ? scar# show ip bgp 192.168.44.1 BGP routing table entry for 192.168.44.0/24, version 18 Paths: (3 available, best #2, table Default-IP-Routing-Table) Advertised to non peer-group peers: 10.0.1.2 192.168.7.7 192.168.14.2 65001 65000, (received & used) 192.168.14.1 from 192.168.14.2 (172.16.0.254) Origin incomplete, localpref 100, valid, external 65000, (received & used) 192.168.14.1 from 192.168.14.1 (192.168.1.1) Origin incomplete, metric 20, localpref 100, valid, external, multipath, best 65000, (received & used) 192.168.7.7 from 192.168.7.7 (192.168.2.7) Origin incomplete, metric 20, localpref 100, valid, external, multipath scar# traceroute 192.168.44.1 Type escape sequence to abort. Tracing the route to 192.168.44.1 1 192.168.14.1 0 msec 192.168.7.7 4 msec 192.168.14.1 4 msec 2 192.168.44.1 [AS 65000] 4 msec 0 msec 0 msec
Lab 10-4: BGP with GateD
Now we replace the Zebra daemons on callisto and castor with GateD (see Examples 10-19 and 10-20). The secondary interface connecting callisto and ganymed is disabled, and OSPF authentication is turned off to accommodate GateD restrictions.
Although GateD lacks some of the features of Zebra, the configuration tries to mimic the Zebra configurations (Examples 10-11 to 10-13) as closely as possible. GateD uses different group peeras types to configure peerings (<type>=external, IGP, internal, routing) that can be used to configure IBGP and EBGP scenarios. For a more detailed explanation, refer to the V3.6 documentation.
NOTE
Note that the highlighted export statement in Example 10-19 is used to accomplish IBGP route reflector behavior.
Example 10-19. Castor GateD Route Reflector Setup
[root@castor:~#] cat /etc/gated.cfg routerid 192.168.2.7; autonomoussystem 65000; rip off; ospf yes{ backbone{ networks{ 192.168.2.0 mask 255.255.255.0; 192.168.80.0 mask 255.255.255.0; 192.168.99.0 mask 255.255.255.252; }; interface xl0 vlan8 wpachdlc0; }; }; bgp yes{ group type routing peeras 65000 proto ospf { peer 192.168.1.1; }; group type external peeras 65003 { peer 192.168.7.254; }; }; static{ default gateway 192.168.2.254; }; #exporting to OSPF export proto ospfase{ proto static{all; }; proto direct{all; }; }; export proto bgp as 65000 { proto bgp as 65000 {all;}; # for reflection proto ospf{all;}; }; export proto bgp as 65003 { proto ospf{all;}; }; GateD-castor> show bgp sum 100 Neighbor V AS MsgRcvd MsgSent State 100 192.168.1.1 4 65000 3 4 Established 100 192.168.7.254 4 65003 5 4 Established 100 BGP summary, 2 groups, 2 peers. GateD-castor> show bgp routes 0/0 100 Proto Route/Mask NextHop MED ASPath 100 BGP 10/24 192.168.7.254 0 (65000) 65003 IGP (Id 5) 100 BGP 10.0.1/24 192.168.7.254 0 (65000) 65003 IGP (Id 5) 100 BGP 172.16/25 192.168.7.254 -1 (65000) 65003 65001 IGP (Id 4) 100 BGP 172.16.0.128/25 192.168.7.254 -1 (65000) 65003 65001 IGP (Id 4) GateD-castor> show ip walkdown 0/0 100 Ker 0.0.0.0/0 192.168.2.254 IGP (Id 1) 100 BGP 10/24 192.168.7.254 (65000) 65003 IGP (Id 5) 100 BGP 10.0.1/24 192.168.7.254 (65000) 65003 IGP (Id 5) 100 Sta 127/8 127.0.0.1 IGP (Id 1) 100 Dir 127.0.0.1/32 127.0.0.1 IGP (Id 1) 100 BGP 172.16/25 192.168.7.254 (65000) 65003 65001 IGP (Id 4) 100 BGP 172.16.0.128/25 192.168.7.254 (65000) 65003 65001 IGP (Id 4) 100 OSP 192.168.1/24 192.168.2.254 (65000) IGP (Id 2) 100 Ker 192.168.1.1/32 192.168.2.254 IGP (Id 1) 100 Ker 192.168.1.2/32 192.168.2.254 IGP (Id 1) 100 Dir 192.168.2/24 192.168.2.7 IGP (Id 1) 100 Dir 192.168.7/24 192.168.7.7 IGP (Id 1) 100 OSP 192.168.14/24 192.168.2.254 (65000) Incomplete (Id 3) 100 OSP 192.168.44/24 192.168.2.254 (65000) Incomplete (Id 3) 100 Dir 192.168.80/24 192.168.80.1 IGP (Id 1) 100 Dir 192.168.99.1/32 127.0.0.1 IGP (Id 1) 100 Dir 192.168.99.2/32 192.168.99.1 IGP (Id 1) 100 OSP 211.11.117/24 192.168.2.254 (65000) Incomplete (Id 3) GateD-castor> show bgp peeras 65003 100 group type External AS 65003 local 65000 flags <> 100 peer 192.168.7.254 version 4 lcladdr (null) gateway (null) 100 flags 0x0 100 state 0x6100 options 0x0 <> 100 metric_out -1 100 preference 170 100 preference2 0 100 recv buffer size 0 100 send buffer size 0 100 messages in 24 (updates 3, not updates 21) 559 octets messages out 23 (updates 1, not updates 22) 473 octets [root@castor:~#] netstat -rn -f inet Routing tables Internet: Destination Gateway Flags Refs Use Netif Expire default 192.168.2.254 UGSc 1 62 xl0 10/24 192.168.7.254 UGc 0 0 ed0 10.0.1/24 192.168.7.254 UGc 0 0 ed0 127 127.0.0.1 URc 0 0 lo0 127.0.0.1 127.0.0.1 UH 2 186 lo0 172.16/25 192.168.7.254 UGc 0 0 ed0 172.16.0.128/25 192.168.7.254 UGc 0 0 ed0 192.168.1 192.168.2.254 UGc 2 2 xl0 192.168.2 link#1 UC 1 0 xl0 192.168.2.254 52:54:05:e3:e4:2f UHLW 7 0 xl0 337 192.168.7 link#2 UC 1 0 ed0 192.168.7.254 00:00:0c:1a:a9:a8 UHLW 7 67 ed0 347 192.168.14 192.168.2.254 UGc 0 0 xl0 192.168.44 192.168.2.254 UGc 0 3 xl0 192.168.80 link#15 UC 0 0 vlan8 192.168.99.1 127.0.0.1 UGH 0 0 lo0 192.168.99.2 192.168.99.1 UH 0 3 wpachd 211.11.117 192.168.2.254 UGc 0 0 xl0 224.0.0.5 127.0.0.1 UH 0 0 lo0 224.0.0.6 127.0.0.1 UH 0 0 lo0
Example 10-20. Callisto GateD Setup
[root@callisto:~#] cat /etc/gated.conf routerid 192.168.1.1; autonomoussystem 65000; rip off; ospf yes{ backbone{ networks{ 192.168.1.0 mask 255.255.255.0; 192.168.99.0 mask 255.255.255.252; 192.168.45.0 mask 255.255.255.0; }; interface eth1 wp1chdlc; }; }; bgp yes{ group type routing peeras 65000 proto ospf { peer 192.168.44.1; peer 192.168.2.7; }; group type external peeras 65001 { peer 192.168.14.2; }; group type external peeras 65003 { peer 192.168.14.254; }; }; static{ default gateway 192.168.1.254; }; #exporting to OSPF export proto ospfase{ #restrict; proto static{all; }; proto direct{all; }; #proto kernel{all; }; }; export proto bgp as 65000 { proto bgp as 65000 {all;}; # for reflection proto ospf{all;}; }; export proto bgp as 65001 { proto ospf{all;}; }; export proto bgp as 65003 { proto ospf{all;}; }; GateD-callisto> show bgp sum 100 Neighbor V AS MsgRcvd MsgSent State 100 192.168.44.1 4 65000 90 96 Established 100 192.168.2.7 4 65000 27 29 Established 100 192.168.14.2 4 65001 103 98 Established 100 192.168.14.254 4 65003 108 98 Established 100 BGP summary, 3 groups, 4 peers. GateD-callisto> show bgp routes 0/0 100 Proto Route/Mask NextHop MED ASPath 100 BGP 10/24 192.168.14.254 0 (65000) 65003 IGP (Id 7) 100 BGP 10.0.1/24 192.168.14.254 0 (65000) 65003 IGP (Id 7) 100 BGP 172.16/25 192.168.14.2 0 (65000) 65001 IGP (Id 5) 100 BGP 172.16.0.128/25 192.168.14.2 0 (65000) 65001 IGP (Id 5) GateD-callisto> show ip walkdown 0/0 100 Sta 0.0.0.0/0 192.168.1.254 IGP (Id 1) 100 BGP 10/24 192.168.14.254 (65000) 65003 IGP (Id 7) 100 BGP 10.0.1/24 192.168.14.254 (65000) 65003 IGP (Id 7) 100 Sta 127/8 127.0.0.1 IGP (Id 1) 100 Dir 127.0.0.1/32 127.0.0.1 IGP (Id 1) 100 BGP 172.16/25 192.168.14.2 (65000) 65001 IGP (Id 5) 100 BGP 172.16.0.128/25 192.168.14.2 (65000) 65001 IGP (Id 5) 100 Dir 192.168.1/24 192.168.1.1 IGP (Id 1) 100 OSP 192.168.2/24 192.168.1.254 (65000) IGP (Id 8) 100 OSP 192.168.7/24 192.168.1.254 (65000) IGP (Id 8) 100 Dir 192.168.14/24 192.168.14.1 IGP (Id 1) 100 OSP 192.168.44/24 192.168.1.254 (65000) Incomplete (Id 3) 100 OSP 192.168.80/24 192.168.1.254 (65000) IGP (Id 8) 100 Dir 192.168.99/32 192.168.99.2 IGP (Id 1) 100 Dir 192.168.99.2/32 127.0.0.1 IGP (Id 1) 100 OSP 211.11.117/24 192.168.1.254 (65000) Incomplete (Id 3) [root@callisto:~#] netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 224.0.0.6 127.0.0.1 255.255.255.255 UGH 40 0 0 lo 224.0.0.5 127.0.0.1 255.255.255.255 UGH 40 0 0 lo 192.168.99.0 0.0.0.0 255.255.255.255 UH 40 0 0 wp1chdlc 192.168.99.2 127.0.0.1 255.255.255.255 UGH 40 0 0 lo 127.0.0.1 0.0.0.0 255.255.255.255 UH 40 0 0 lo 192.168.99.0 0.0.0.0 255.255.255.252 U 40 0 0 wp1chdlc 172.16.0.128 192.168.14.2 255.255.255.128 UG 40 0 0 eth0 172.16.0.0 192.168.14.2 255.255.255.128 UG 40 0 0 eth0 192.168.7.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 211.11.117.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 10.0.0.0 192.168.14.254 255.255.255.0 UG 40 0 0 eth0 10.0.1.0 192.168.14.254 255.255.255.0 UG 40 0 0 eth0 192.168.2.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 192.168.80.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1 192.168.14.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0 192.168.44.0 192.168.1.254 255.255.255.0 UG 40 0 0 eth1 127.0.0.0 - 255.0.0.0 ! - - - - 0.0.0.0 192.168.1.254 0.0.0.0 UG 40 0 0 eth1
Avoiding Single Points of Failure
The introduction of links to multiple points of presence (POPs) of one or several ISPs can eliminate single points of failure. Such autonomous systems can provide transit services or not. The following subsections discuss several popular BGP scenarios.
Single-Homed Nontransit (Stub) Scenario with a Private AS
In a nutshell, stub and single-homed autonomous systems do not justify the assignment of a regular ASN in the eyes of Internet Assigned Numbers Authority (IANA) and company. In case of special requirements, upstream providers do assign a private ASN (64512–65534, RFC 1930); and in case of a PI block assigned to the downstream customer, upstream providers announce this network to the Internet while stripping the private AS. The first level of redundancy would be to attach this customer to two different POP of the same ISP and provide traffic granularity via BGP measures. BGP offers a clean demarcation point. I strongly advise against ISDN dial-on-demand backups in BGP scenarios.
Multi-Homed Nontransit (Stub) Scenario
Entities that require the added redundancy of two independent upstreams usually register an ASN and a PI block. Upstream ISPs/carriers announce the PI prefix, which frequently results in suboptimal utilization of one upstream link. Remember, BGP was not designed for load balancing. This situation can be improved with the cooperation of both upstreams to tune BGP's advanced capabilities, such as path prepending, MED, and community attributes, to achieve at least a better distribution of traffic. To say the least, this is a tedious task that requires strong BGP knowledge and needs to be taken care of incoming and outgoing. In general, providing transit services through a public exchange violates the policy established by the exchange managers.
Transit Services
Transit traffic usually serves topological and commercial purposes. As long as the corresponding ingress and egress traffic of two transit partners is roughly equivalent, transit AS owners tend to agree to mutually beneficial no-charge peering/transit agreements. If this is not the case, transit traffic might be subject to charge.
In fact, providing transit traffic (be it for free or not) through a public IX is a violation of policy of almost any IX in the world (of which I am aware of). What has changed over the past few years, however, is the perception of what is considered "transit traffic" by the IX operators: Because carriers and ISPs have become multinational, IXs have to deal with peering entities (in a commercial sense) that cover numerous autonomous systems (combined administratively to an AS set, or macro), so IX operators usually allow such providers to announce their entire AS set at a given (national) IX instead of only their (national) AS. So a certain AS providing transit (in the strict BGP meaning) has nothing to do with public peering in the first place, but merely with the combination of some autonomous systems under common (international) administration, or is simply necessary because a provider has customers with their own autonomous systems (which, of course, have always been permitted on the IXs).
The question of traffic symmetry is a different one that does not really touch the transit/nontransit topic. As mentioned earlier, providers were picky about this symmetry when peering privately, and some kept enforcing this policy on the public IXs. Today, however, most of them realize that the advantages of public peering easily compensate for the possible drawbacks, so most do not care about symmetry anymore, and many just do not want to go through the added accounting hassle involved.