We will discuss the different ways to advertise a default route in BGP. We will use following network topology for the same.
1. default-information originate
A default route can be injected into BGP with the command ‘default-information originate’. Following conditions must be fulfilled to use this method.
– A default route must be in the local routing table.
– The default route must be redistributed into the BGP
– Add ‘default-information originate’ under router bgp <ASN>
Here is the initial configuration and BGP status on all routers.
Let’s first try to add a static default route and redistribute it into BGP on R1.
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#ip route 0.0.0.0 0.0.0.0 null0 R1(config)#router bgp 100 R1(config-router)#redistribute static R1(config-router)# R1(config-router)#do sh run | s bgp router bgp 100 bgp router-id 1.1.1.1 bgp log-neighbor-changes network 1.1.1.0 mask 255.255.255.0 redistribute static neighbor 12.12.12.2 remote-as 200 neighbor 13.13.13.3 remote-as 300 neighbor 14.14.14.4 remote-as 100 neighbor 14.14.14.4 next-hop-self R1(config-router)#do sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "static", distance 1, metric 0 (connected), candidate default path Redistributing via bgp 100 Routing Descriptor Blocks: * directly connected, via Null0 Route metric is 0, traffic share count is 1 R1(config-router)# R1(config-router)#do sh ip bgp BGP table version is 10, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i R1(config-router)#
R1 is not yet advertising default route into BGP. It shows that simply redistributing a default route into BGP would not help. Let’s add a ‘default-information originate’ under BGP.
R1(config-router)#router bgp 100 R1(config-router)#default-information originate R1(config-router)#do sh run | s bgp router bgp 100 bgp router-id 1.1.1.1 bgp log-neighbor-changes network 1.1.1.0 mask 255.255.255.0 redistribute static neighbor 12.12.12.2 remote-as 200 neighbor 13.13.13.3 remote-as 300 neighbor 14.14.14.4 remote-as 100 neighbor 14.14.14.4 next-hop-self default-information originate R1(config-router)#do sh ip bgp BGP table version is 11, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 0.0.0.0 0 32768 ? *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i R1(config-router)#
Now you can see all BGP peers (iBGP and eBGP) are receiving default route information from R1.
R2#sh ip bgp BGP table version is 10, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 12.12.12.1 0 0 100 ? *> 1.1.1.0/24 12.12.12.1 0 0 100 i *> 2.2.2.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 12.12.12.1 0 100 300 i *> 4.4.4.0/24 12.12.12.1 0 100 i R2#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 200", distance 20, metric 0, candidate default path Tag 100, type external Last update from 12.12.12.1 00:02:25 ago Routing Descriptor Blocks: * 12.12.12.1, from 12.12.12.1, 00:02:25 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 100 MPLS label: none R2#
R3#sh ip bgp BGP table version is 8, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 13.13.13.1 0 0 100 ? *> 1.1.1.0/24 13.13.13.1 0 0 100 i *> 2.2.2.0/24 13.13.13.1 0 100 200 i *> 3.3.3.0/24 0.0.0.0 0 32768 i *> 4.4.4.0/24 13.13.13.1 0 100 i R3#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 300", distance 20, metric 0, candidate default path Tag 100, type external Last update from 13.13.13.1 00:04:36 ago Routing Descriptor Blocks: * 13.13.13.1, from 13.13.13.1, 00:04:36 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 100 MPLS label: none R3#
R4#sh ip bgp BGP table version is 8, local router ID is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 0.0.0.0 14.14.14.1 0 100 0 ? r>i 1.1.1.0/24 14.14.14.1 0 100 0 i *>i 2.2.2.0/24 14.14.14.1 0 100 0 200 i *>i 3.3.3.0/24 14.14.14.1 0 100 0 300 i *> 4.4.4.0/24 0.0.0.0 0 32768 i R4#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 100", distance 200, metric 0, candidate default path, type internal Last update from 14.14.14.1 00:05:21 ago Routing Descriptor Blocks: * 14.14.14.1, from 14.14.14.1, 00:05:21 ago Route metric is 0, traffic share count is 1 AS Hops 0 MPLS label: none
2. network 0.0.0.0
A default route can be injected into BGP with configuration of ‘network 0.0.0.0’ under BGP if a default route is available in the local routing table of a router.
Following conditions must be fulfilled to use this method.
– A default route must be in the local routing table.
– Add ‘network 0.0.0.0’ under router bgp <ASN>
Let’s remove previously configured ‘default-information originate’ and ‘redistribute static’ commands and use ‘network 0.0.0.0’.
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#router bgp 100 R1(config-router)#no default-information originate R1(config-router)#no redistribute static R1(config-router)#network 0.0.0.0 R1(config-router)#do sh run | s bgp router bgp 100 bgp router-id 1.1.1.1 bgp log-neighbor-changes network 0.0.0.0 network 1.1.1.0 mask 255.255.255.0 neighbor 12.12.12.2 remote-as 200 neighbor 13.13.13.3 remote-as 300 neighbor 14.14.14.4 remote-as 100 neighbor 14.14.14.4 next-hop-self R1(config-router)#end R1#sh ip *Mar 24 11:42:36.623: %SYS-5-CONFIG_I: Configured from console by console R1#sh ip bgp BGP table version is 13, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 0.0.0.0 0 32768 i *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i R1#
Let’s verify BGP table and default route on peer routers.
R2#sh ip bgp BGP table version is 12, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 12.12.12.1 0 0 100 i *> 1.1.1.0/24 12.12.12.1 0 0 100 i *> 2.2.2.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 12.12.12.1 0 100 300 i *> 4.4.4.0/24 12.12.12.1 0 100 i R2#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 200", distance 20, metric 0, candidate default path Tag 100, type external Last update from 12.12.12.1 00:01:54 ago Routing Descriptor Blocks: * 12.12.12.1, from 12.12.12.1, 00:01:54 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 100 MPLS label: none
R3#sh ip bgp BGP table version is 10, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 13.13.13.1 0 0 100 i *> 1.1.1.0/24 13.13.13.1 0 0 100 i *> 2.2.2.0/24 13.13.13.1 0 100 200 i *> 3.3.3.0/24 0.0.0.0 0 32768 i *> 4.4.4.0/24 13.13.13.1 0 100 i R3#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 300", distance 20, metric 0, candidate default path Tag 100, type external Last update from 13.13.13.1 00:02:17 ago Routing Descriptor Blocks: * 13.13.13.1, from 13.13.13.1, 00:02:17 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 100 MPLS label: none
R4#sh ip bgp BGP table version is 10, local router ID is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 0.0.0.0 14.14.14.1 0 100 0 i r>i 1.1.1.0/24 14.14.14.1 0 100 0 i *>i 2.2.2.0/24 14.14.14.1 0 100 0 200 i *>i 3.3.3.0/24 14.14.14.1 0 100 0 300 i *> 4.4.4.0/24 0.0.0.0 0 32768 i R4#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 100", distance 200, metric 0, candidate default path, type internal Last update from 14.14.14.1 00:03:06 ago Routing Descriptor Blocks: * 14.14.14.1, from 14.14.14.1, 00:03:06 ago Route metric is 0, traffic share count is 1 AS Hops 0 MPLS label: none
3. neighbor x.x.x.x default-originate
If you want to advertise default route to a specific peer, this is the method for that requirement.
– Add ‘neighbor x.x.x.x default-originate’ under router bgp <ASN>
– It does not even check for the existence of a default route in the IP routing table
– The ‘default-information originate’ command should not be configured with the ‘neighbor x.x.x.x default-originate’ command on the same router
Let’s remove previously configured commands.
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#no ip route 0.0.0.0 0.0.0.0 Null0 R1(config)#router bgp 100 R1(config-router)#no network 0.0.0.0 R1(config-router)#end R1#sh run *Mar 24 11:50:22.479: %SYS-5-CONFIG_I: Configured from console by console R1#sh run | s bgp router bgp 100 bgp router-id 1.1.1.1 bgp log-neighbor-changes network 1.1.1.0 mask 255.255.255.0 neighbor 12.12.12.2 remote-as 200 neighbor 13.13.13.3 remote-as 300 neighbor 14.14.14.4 remote-as 100 neighbor 14.14.14.4 next-hop-self R1#sh ip route 0.0.0.0 % Network not in table R1#sh ip bgp BGP table version is 14, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i
Now advertise default route only to R2.
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#router bgp 100 R1(config-router)#neighbor 12.12.12.2 default-originate R1(config-router)#end R1#s *Mar 24 11:53:46.471: %SYS-5-CONFIG_I: Configured from console by consoleh R1#sh run | s bgp router bgp 100 bgp router-id 1.1.1.1 bgp log-neighbor-changes network 1.1.1.0 mask 255.255.255.0 neighbor 12.12.12.2 remote-as 200 neighbor 12.12.12.2 default-originate neighbor 13.13.13.3 remote-as 300 neighbor 14.14.14.4 remote-as 100 neighbor 14.14.14.4 next-hop-self R1#clear ip bgp 12.12.12.2 soft R1#sh ip bgp BGP table version is 15, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path 0.0.0.0 0.0.0.0 0 i *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i R1#sh ip route 0.0.0.0 % Network not in table R1#
Notice there is no default route available in local routing table of R1 and bgp table also shows there is no best route (no *> status) for 0.0.0.0 network.
Let’s verify what R1 is advertising to its peers.
R1#sh ip bgp neighbors 12.12.12.2 advertised-routes BGP table version is 15, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Originating default network 0.0.0.0 Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i Total number of prefixes 3 R1#sh ip bgp neighbors 13.13.13.3 advertised-routes BGP table version is 15, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 0.0.0.0 0 32768 i *> 2.2.2.0/24 12.12.12.2 0 0 200 i *> 3.3.3.0/24 13.13.13.3 0 0 300 i r>i 4.4.4.0/24 14.14.14.4 0 100 0 i Total number of prefixes 4 ## No default route advertised to R3(13.13.13.3)
Finally, verify BGP table and routing table on all peer routers.
R2#sh ip bgp BGP table version is 14, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 12.12.12.1 0 100 i *> 1.1.1.0/24 12.12.12.1 0 0 100 i *> 2.2.2.0/24 0.0.0.0 0 32768 i *> 3.3.3.0/24 12.12.12.1 0 100 300 i *> 4.4.4.0/24 12.12.12.1 0 100 i R2#sh ip route 0.0.0.0 Routing entry for 0.0.0.0/0, supernet Known via "bgp 200", distance 20, metric 0, candidate default path Tag 100, type external Last update from 12.12.12.1 00:08:27 ago Routing Descriptor Blocks: * 12.12.12.1, from 12.12.12.1, 00:08:27 ago Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 100 MPLS label: none
R3#sh ip bgp BGP table version is 11, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 1.1.1.0/24 13.13.13.1 0 0 100 i *> 2.2.2.0/24 13.13.13.1 0 100 200 i *> 3.3.3.0/24 0.0.0.0 0 32768 i *> 4.4.4.0/24 13.13.13.1 0 100 i R3#sh ip route 0.0.0.0 % Network not in table
R4#sh ip bgp BGP table version is 11, local router ID is 4.4.4.4 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path r>i 1.1.1.0/24 14.14.14.1 0 100 0 i *>i 2.2.2.0/24 14.14.14.1 0 100 0 200 i *>i 3.3.3.0/24 14.14.14.1 0 100 0 300 i *> 4.4.4.0/24 0.0.0.0 0 32768 i R4#sh ip route 0.0.0.0 % Network not in table