BGP: Generating
default route:
·
In
BGP, we can generate default route in 2 ways
1. Advertising “network 0.0.0.0
mask 0.0.0.0: command
2. Using “default-information originate”
command or
·
In
the first case, router must have a default-route in its routing table, and then
only it can send it over BGP, but it sends the default-route to all neighbors
·
In
the second case, we can send default route per neighbor. This doesn’t require having
a default route in the routing table.
·
Let
me take a small topology to configure default route in BGP:
·
R1
– AS 100
·
R2
– AS 200
·
R3
– AS 300
·
R4
– AS 400
R1(config-router)#do
show ip bgp sum
BGP
router identifier 1.1.1.1, local AS number 100
BGP
table version is 5, main routing table version 5
4
network entries using 468 bytes of memory
4
path entries using 208 bytes of memory
5/4
BGP path/bestpath attribute entries using 620 bytes of memory
3
BGP AS-PATH entries using 72 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
BGP
using 1368 total bytes of memory
BGP
activity 4/0 prefixes, 4/0 paths, scan interval 60 secs
Neighbor V
AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.12.2 4
200 5 8
5 0 0 00:01:05
1
10.1.13.3 4
300 5 8
5 0 0 00:01:15 1
10.1.14.4 4
400 5 8
5 0 0 00:01:29 1
R1(config-router)#do show ip bgp
BGP
table version is 5, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 0.0.0.0 0 32768 i
*>
2.2.2.2/32 10.1.12.2 0 0 200 i
*>
3.3.3.3/32 10.1.13.3 0 0 300 i
*>
4.4.4.4/32 10.1.14.4 0 0 400 i
R1(config-router)#
R4(config-router)#do
show ip bgp
BGP
table version is 5, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.14.1 0 0 100 i
*>
2.2.2.2/32 10.1.14.1 0 100 200 i
*>
3.3.3.3/32 10.1.14.1 0 100 300 i
*>
4.4.4.4/32 0.0.0.0 0 32768 i
R4(config-router)#
R3(config-router)#do
show ip bgp
BGP
table version is 5, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.13.1 0 0 100 i
*>
2.2.2.2/32 10.1.13.1 0 100 200 i
*>
3.3.3.3/32 0.0.0.0 0 32768 i
*>
4.4.4.4/32 10.1.13.1 0 100 400 i
R3(config-router)#
R2(config-router)#do
show ip bgp
BGP
table version is 5, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.12.1 0 0 100 i
*>
2.2.2.2/32 0.0.0.0 0 32768 i
*>
3.3.3.3/32 10.1.12.1 0 100 300 i
*>
4.4.4.4/32 10.1.12.1 0 100 400 i
R2(config-router)#
Observation:
R1
is peering with R2, R3 and R4
R1
has advertised its loopback0 1.1.1.1 into BGP
R2
has advertised its loopback0 2.2.2.2 into BGP
R3
has advertised its loopback0 3.3.3.3 into BGP
·
Now,
I want R3 and R4 to get a default route from R1 through BGP.
·
For
this, first let me create a static route in R1 through R2 and then I will
advertise that into BGP, so that R3 and R4 gets that default route.
R1(config-router)#network
0.0.0.0 mask 0.0.0.0
R1(config-router)#
R1(config-router)#ip
route 0.0.0.0 0.0.0.0 10.1.12.2
R1(config)#
·
Now, let me check the BGP routing tables:
R1(config)#do
show ip bgp
BGP
table version is 6, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.12.2 0 32768 i
*>
1.1.1.1/32 0.0.0.0 0 32768 i
*>
2.2.2.2/32 10.1.12.2 0 0 200 i
*>
3.3.3.3/32 10.1.13.3 0 0 300 i
*>
4.4.4.4/32 10.1.14.4 0 0 400 i
R1(config)#
R4(config-router)#do
show ip bgp
BGP
table version is 6, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.14.1 0 0 100 i
*>
1.1.1.1/32 10.1.14.1 0 0 100 i
*>
2.2.2.2/32 10.1.14.1 0 100 200 i
*>
3.3.3.3/32 10.1.14.1 0 100 300 i
*>
4.4.4.4/32 0.0.0.0 0 32768 i
R4(config-router)#
R3(config-router)#do
show ip bgp
BGP
table version is 6, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.13.1 0 0 100 i
*>
1.1.1.1/32 10.1.13.1 0 0 100 i
*>
2.2.2.2/32 10.1.13.1 0 100 200 i
*>
3.3.3.3/32 0.0.0.0 0 32768 i
*>
4.4.4.4/32 10.1.13.1 0 100 400 i
R3(config-router)#
R2(config-router)#do
show ip bgp
BGP
table version is 6, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.12.1 0 0 100 i
*>
1.1.1.1/32 10.1.12.1 0 0 100 i
*>
2.2.2.2/32 0.0.0.0 0 32768 i
*>
3.3.3.3/32 10.1.12.1 0 100 300 i
*>
4.4.4.4/32 10.1.12.1 0 100 400 i
R2(config-router)#
Observation:
·
Now,
R3 and R4 got default route from R1 through BGP!
·
But,
R2 also got the same route from R1L
·
So,
general advertisement is not good, solution is to use conditional advertisement
per neighbor
R1(config)#router
bgp 100
R1(config-router)#no
network 0.0.0.0 mask 0.0.0.0
R1(config-router)#neighbor
10.1.14.4 default-originate
R1(config-router)#neighbor
10.1.13.3 default-originate
R1(config-router)#
·
Now, let me check BGP routing tables:
R1(config-router)#do
show ip bgp
BGP
table version is 7, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 0.0.0.0 0 32768 i
*>
2.2.2.2/32 10.1.12.2 0 0 200 i
*>
3.3.3.3/32 10.1.13.3 0 0 300 i
*>
4.4.4.4/32 10.1.14.4 0 0 400 i
R1(config-router)#
R4(config-router)#do
show 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.14.1 0 0 100 i
*>
1.1.1.1/32 10.1.14.1 0 0 100 i
*>
2.2.2.2/32 10.1.14.1 0 100 200 i
*>
3.3.3.3/32 10.1.14.1 0 100 300 i
*>
4.4.4.4/32 0.0.0.0 0 32768 i
R4(config-router)#
R3(config-router)#do
show 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.13.1 0
0 100 i
*>
1.1.1.1/32 10.1.13.1 0 0 100 i
*>
2.2.2.2/32 10.1.13.1 0 100 200 i
*>
3.3.3.3/32 0.0.0.0 0 32768 i
*>
4.4.4.4/32 10.1.13.1 0 100 400 i
R3(config-router)#
R2(config-router)#do
show ip bgp
BGP
table version is 7, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.12.1 0 0 100 i
*>
2.2.2.2/32 0.0.0.0 0 32768 i
*>
3.3.3.3/32 10.1.12.1 0 100 300 i
*>
4.4.4.4/32 10.1.12.1 0 100 400 i
R2(config-router)#
Observation:
·
Now,
only R3 and R4 default route from R1!
·
But,
what if R1 loses its BGP connection to R2????
·
R3
and R4 still gets default route from R1 and we have an issueL
·
Solution
is to advertise this default-route conditionally to R3 and R4, only R1 has its
connection to R2
R1(config)#access-list
12 permit 10.1.12.0 0.0.0.255
R1(config)#route-map
TO-R3-R4
R1(config-route-map)#match
ip address 12
R1(config-route-map)#router
bgp 100
R1(config-router)#
R1(config-router)#no neighbor 10.1.13.3 default-originate
R1(config-router)#no neighbor 10.1.14.4 default-originate
R1(config-router)#neighbor
10.1.13.3 default-originate route-map TO-R3-R4
R1(config-router)#neighbor
10.1.14.4 default-originate route-map TO-R3-R4
R1(config-router)#
·
Now, let me shut the R1-R2 link and see what happens to the default
route:
R1#debug
ip bgp updates
BGP
updates debugging is on for address family: IPv4 Unicast
R1#
R1(config)#int
ser1/0
R1(config-if)#shut
R1(config-if)#
*Mar 1 00:45:07.235: BGP(0): no valid path for
2.2.2.2/32
*Mar 1 00:45:07.239: %BGP-5-ADJCHANGE: neighbor
10.1.12.2 Down Interface flap
R1(config-if)#
*Mar 1 00:45:07.243: BGP(0): nettable_walker
2.2.2.2/32 no best path
*Mar 1 00:45:07.243: BGP(0): 10.1.13.3 send
unreachable 2.2.2.2/32
*Mar 1 00:45:07.243: BGP(0): 10.1.13.3 send UPDATE
2.2.2.2/32 -- unreachable
*Mar 1 00:45:07.343: BGP(0): 10.1.13.3 send unreachable 0.0.0.0/0
*Mar 1 00:45:07.343: BGP(0): 10.1.13.3 enqueued
default-originate update
*Mar 1 00:45:07.343: BGP(0): 10.1.14.4 send unreachable 0.0.0.0/0
*Mar 1 00:45:07.343: BGP(0): 10.1.14.4 enqueued
default-originate update
*Mar 1 00:45:07.347: BGP(0): updgrp 2 - 10.1.13.3
updates replicated for neighbors: 10.1.14.4
R1(config-if)#
*Mar 1 00:45:09.215: %LINK-5-CHANGED: Interface
Serial1/0, changed state to administratively down
*Mar 1 00:45:10.215: %LINEPROTO-5-UPDOWN: Line
protocol on Interface Serial1/0, changed state to down
R1(config-if)#do
u all
All
possible debugging has been turned off
R1(config-if)#
R4(config-router)#do
show 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.14.1 0 0 100 i
*>
3.3.3.3/32 10.1.14.1 0 100 300 i
*>
4.4.4.4/32 0.0.0.0 0 32768 i
R4(config-router)#
R3(config-router)#do
show 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>
1.1.1.1/32 10.1.13.1 0 0 100 i
*>
3.3.3.3/32 0.0.0.0 0 32768 i
*>
4.4.4.4/32 10.1.13.1 0 100 400 i
R3(config-router)#
Observation:
·
Default
route is not there in R3 and R4 now.
·
Now, let me make R1-R2 interface up:
R1(config-if)#no
shut
R1(config-if)#
*Mar 1 00:50:00.395: %LINK-3-UPDOWN: Interface
Serial1/0, changed state to up
R1(config-if)#
*Mar 1 00:50:00.423: BGP(0): 10.1.13.3 enqueued
default-originate update
*Mar 1 00:50:00.427: BGP(0): 10.1.14.4 enqueued
default-originate update
R1(config-if)#
*Mar 1 00:50:01.399: %LINEPROTO-5-UPDOWN: Line
protocol on Interface Serial1/0, changed state to up
R1(config-if)#do
u all
All
possible debugging has been turned off
R1(config-if)#
R4(config-router)#do
show ip bgp
BGP
table version is 12, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.14.1 0 0 100 i
*>
1.1.1.1/32 10.1.14.1 0 0 100 i
*>
2.2.2.2/32 10.1.14.1 0 100 200 i
*>
3.3.3.3/32 10.1.14.1 0 100 300 i
*>
4.4.4.4/32 0.0.0.0 0 32768 i
R4(config-router)#
R3(config-router)#do
show ip bgp
BGP
table version is 12, 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
Origin
codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 0.0.0.0 10.1.13.1 0 0 100 i
*>
1.1.1.1/32 10.1.13.1 0 0 100 i
*>
2.2.2.2/32 10.1.13.1 0 100 200 i
*>
3.3.3.3/32 0.0.0.0 0 32768 i
*>
4.4.4.4/32 10.1.13.1 0 100 400 i
R3(config-router)#
Observation:
·
Now,
R3 and R4 have default routes back in their routing tables!