Lesson Contents
There are two ways to advertise networks in BGP. You can use the network command, or you can use redistribution. With the network command, BGP can advertise an exact match of a route that is in your routing table. If the route doesn’t exist, you can’t advertise it. This is different from how IGPs work, where the network command “activates” the IGP on an interface that falls within the range of the network command AND advertises that network.
With the redistribute command, you can “inject” routing information from another source, such as routing protocols, into BGP. In this lesson, I’ll explain both options and will show you how to configure them.
Key Takeaways
- The BGP
networkcommand advertises exact matches from the routing table. Both the network and subnet mask must match. - Discard routes to the null interface allows you to advertise networks that you don’t have.
- Redistribution injects routes from other protocols such as OSPF or EIGRP into BGP.
- The Origin codes are different:
- The
networkcommand shows “i” (IGP) - Redistribution shows “?” (incomplete)
- The
Prerequisites
Before diving into this, you should have a basic understanding of:
- The basics of BGP as explained in the Introduction to BGP lesson.
- How to configure BGP neighbor adjacencies.
Configuration
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…
Network Command
Let’s create a loopback interface with a network and advertise it in BGP:
R1(config)#interface loopback 1
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config)#router bgp 1
R1(config-router)#network 1.1.1.0 mask 255.255.255.0
Above we have created a loopback interface with network 1.1.1.0 /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 1.1.1.0
Routing entry for 1.1.1.0/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
*> 1.1.1.0/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 1.1.1.1
BGP routing table entry for 1.1.1.0/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 11.11.11.11 255.255.255.255
R1(config)#router bgp 1
R1(config-router)#network 11.11.11.0 mask 255.255.255.0
I created a loopback interface with network 11.11.11.11 /32. BGP uses the network command to advertise 11.11.11.0 /24. This network will never be placed in the BGP table since the subnet mask doesn’t match:
R1#show ip bgp 11.11.11.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 11.11.11.0 mask 255.255.255.0
R1(config-router)#network 11.11.11.11 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 11.11.11.11
BGP routing table entry for 11.11.11.11/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
*> 1.1.1.0/24 192.168.12.1 0 0 1 i
*> 11.11.11.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 1.0.0.0 /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:
R1(config)#ip route 1.0.0.0 255.0.0.0 null 0
This can be done with a static route that points to the null interface, everything you send to the null interface will be discarded. Using a static route like this is also called a discard route.
Network 1.0.0.0 /8 is now in the routing table:
R1#show ip route 1.0.0.0
Routing entry for 1.0.0.0/8, 3 known subnets
Attached (3 connections)
Variably subnetted with 3 masks
S 1.0.0.0/8 is directly connected, Null0
C 1.1.1.0/24 is directly connected, Loopback1
L 1.1.1.1/32 is directly connected, Loopback1
This allows BGP to advertise it:
R1(config)#router bgp 1
R1(config-router)#network 1.0.0.0 mask 255.0.0.0
Take a look at the BGP table of R1 and R2:
R1#show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 6
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
R2#show ip bgp 1.0.0.0
BGP routing table entry for 1.0.0.0/8, version 6
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
R1 was able to install network 1.0.0.0 /8 in its BGP table and advertises it to R2.
Redistribution
Instead of using the network command we can also redistribute something into BGP. To demonstrate this I will create a new loopback interface, advertise it in OSPF and then redistribute it into BGP:
R1(config)#interface loopback 3
R1(config-if)#ip address 111.111.111.111 255.255.255.0
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#network 111.111.111.0 0.0.0.255 area 0
R1(config)#router bgp 1
R1(config-router)#redistribute ospf 1
I created a loopback with network 111.111.111.0 /24, advertised it in OSPF and redistributed it into BGP. Let’s check the BGP table:
Hi Rene,
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.
Please advise
Hi Alfredo,
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.
Rene
hi
will I need to advertise the internal routing network into BGP
for example internal EIGRP is using subnet 126.89.120.64/26
Hi Aaron,
It depends what you want to achieve. If you want 126.89.120.64/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.
Rene
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 176.16.16.0 /24 network ?
I think that makes sense !!
do you offer any of your time to look at configs / topolgys??