In this lesson we’ll take a look how you can advertise networks in BGP. There are two methods how we can do this:
- Network command
Just like our IGPs we can use the network command to advertise something or we can redistribute networks into BGP. There’s one big difference though, the network command for BGP behaves differently.
When you use any of the IGPs (RIP, OSPF or EIGRP) then the network command is used to activate the IGP on all interfaces that fall within the range of the network command.
BGP doesn’t care about interfaces, it doesn’t even look at them. When we use the network command in BGP then BGP will only look at the routing table. When it finds the network that matches the network command, it will install it in the BGP table.
Let me show you some examples to explain what I’m talking about. We will use the following two routers:
R1 and R2 are in different autonomous systems so we use eBGP. Here is the BGP configuration:
R1#show running-config | section bgp router bgp 1 bgp log-neighbor-changes neighbor 192.168.12.2 remote-as 2
R2#show running-config | section bgp router bgp 2 bgp log-neighbor-changes neighbor 192.168.12.1 remote-as 1
Nothing special here, just plain eBGP between R1 and R2. Let’s advertise some networks in BGP…
Let’s create a loopback interface with a network and advertise it in BGP:
R1(config)#interface loopback 1 R1(config-if)#ip address 220.127.116.11 255.255.255.0 R1(config)#router bgp 1 R1(config-router)#network 18.104.22.168 mask 255.255.255.0
Above we have created a loopback interface with network 22.214.171.124 /24, this is what we will advertise in BGP. Since we created a loopback interface, this network will be directly connected for R1:
R1#show ip route 126.96.36.199 Routing entry for 188.8.131.52/24 Known via "connected", distance 0, metric 0 (connected, via interface) Advertised by bgp 1 Routing Descriptor Blocks: * directly connected, via Loopback1 Route metric is 0, traffic share count is 1
Since it’s in the routing table, BGP will be able to install this network in the BGP table:
R1#show ip bgp BGP table version is 2, local router ID is 192.168.12.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, x best-external, f RT-Filter Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 184.108.40.206/24 0.0.0.0 0 32768 i
Since R1 has it in its BGP table it will be able to advertise it to R2:
R2#show ip bgp 220.127.116.11 BGP routing table entry for 18.104.22.168/24, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer 1 192.168.12.1 from 192.168.12.1 (192.168.12.1) Origin IGP, metric 0, localpref 100, valid, external, best
That’s all there is to it. Just use the network command to put the networks you want in the BGP table. One thing you have to be aware of is that you have to use the exact network and subnet mask for the network command. Let me give you an example:
R1(config)#interface loopback 2 R1(config-if)#ip address 22.214.171.124 255.255.255.255
R1(config)#router bgp 1 R1(config-router)#network 126.96.36.199 mask 255.255.255.0
I created a loopback interface with network 188.8.131.52 /32. BGP uses the network command to advertise 184.108.40.206 /24. This network will never be placed in the BGP table since the subnet mask doesn’t match:
R1#show ip bgp 220.127.116.11 % Network not in table
Be aware of this. Make sure you type the exact network address and subnet mask when advertising something in BGP. Let’s fix this:
R1(config)#router bgp 1 R1(config-router)#no network 18.104.22.168 mask 255.255.255.0 R1(config-router)#network 22.214.171.124 mask 255.255.255.255
With the correct network command, BGP will be able to advertise this network in the BGP table:
R1#show ip bgp 126.96.36.199 BGP routing table entry for 188.8.131.52/32, version 5 Paths: (1 available, best #1, table default) Advertised to update-groups: 1 Local 0.0.0.0 from 0.0.0.0 (192.168.12.1) Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best
And because R1 has it in its BGP table, R2 will be able to learn it:
R2#show ip bgp | begin Network Network Next Hop Metric LocPrf Weight Path *> 184.108.40.206/24 192.168.12.1 0 0 1 i *> 220.127.116.11/32 192.168.12.1 0 0 1 i
Alright so far so good. What if we want to advertise a network that we don’t have? Let’s say that I want to advertise network 18.104.22.168 /8 in BGP. We won’t be able to advertise this network in BGP if it’s not in the routing table. To achieve this, we’ll put this network in our routing table:
What is the use of the null0, I learned that is the trash can of the packets but never fully understand when will I use it.
When you send something to the null interface then those packets are discarded. It can be useful if you want to advertise something that you don’t have.
When you create a static route you need a valid next hop or it can’t be installed in the routing table. Because of this, using the null interface as next hop will help.
It’s also useful when you create summary routes. With a summary, it’s possible that you receive traffic for networks that you don’t have. In this case the packets can be discarded to the null interface.
will I need to advertise the internal routing network into BGP
for example internal EIGRP is using subnet 22.214.171.124/26
It depends what you want to achieve. If you want 126.96.36.199/26 to be reachable from the outside world, then yes. If you are a transit AS then there might be no reason for others to know about some of your internal networks.
HI Rene ,
Thanks for your answers in all departments they really do help !
one question -
if for example I was using subnet 172.16.16.0/24 for all of my internal EIGRP routing
would i need to add that subnet to the network statement under the BGP feature in order for a BGP neighbour to route packets to hosts in the 188.8.131.52 /24 network ?
I think that makes sense !!
do you offer any of your time to look at configs / topolgys??