Lesson Contents
Unlike most routing protocols, BGP only selects a single best path for each prefix. It doesn’t do ECMP (Equal Cost Multi-Path Routing) by default but it is possible to enable this.
In order for BGP to use the second path, the following attributes have to match:
- Weight
- Local Preference
- AS Path (both AS number and AS path length)
- Origin code
- MED
- IGP metric
Also, the next hop address for each path must be different. This comes into play when you are multihomed to the same router.
In this lesson, I’ll show you how to configure eBGP and iBGP to use more than one path.
Configuration
We’ll start with two eBGP scenarios.
eBGP
When it comes to eBGP, there are two options:
- Multiple paths to the same AS.
- Multiple paths to different ASes.
Same AS
Let’s look at a scenario where we have two paths to the same AS. Here’s the topology:
R1 is in AS 1 and connected to R2/R3 in AS23. R1 will have paths to get to 192.168.23.0/24.
Configurations
Want to take a look for yourself? Here you will find the startup configuration of each device.
R1
hostname R1
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.12.1 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.13.1 255.255.255.0
!
router bgp 1
neighbor 192.168.12.2 remote-as 23
neighbor 192.168.13.3 remote-as 23
!
end
R2
hostname R2
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.12.2 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.23.2 255.255.255.0
!
router bgp 23
network 192.168.23.0 mask 255.255.255.0
neighbor 192.168.12.1 remote-as 1
neighbor 192.168.23.3 remote-as 23
!
end
R3
hostname R3
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.13.3 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.23.3 255.255.255.0
!
router bgp 23
neighbor 192.168.13.1 remote-as 1
neighbor 192.168.23.2 remote-as 23
!
end
Here’s the BGP table of R1:
R1#show ip bgp
BGP table version is 2, local router ID is 192.168.13.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,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* 192.168.23.0 192.168.13.3 0 23 i
*> 192.168.12.2 0 0 23 i
R1 has two equal paths but decided to install the path to R2. We can enable load balancing with the maximum-paths command:
R1(config)#router bgp 1
R1(config-router)#maximum-paths 2
Let’s take another look at the BGP table:
R1#show ip bgp
BGP table version is 3, local router ID is 192.168.13.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,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*m 192.168.23.0 192.168.13.3 0 23 i
*> 192.168.12.2 0 0 23 i
Now we have two entries. Note the “m” that stands for multipath. Both paths are installed in the routing table:
R1#show ip route bgp
B 192.168.23.0/24 [20/0] via 192.168.13.3, 00:13:02
[20/0] via 192.168.12.2, 00:13:02
That’s looking good.
Different AS
Let’s look at another eBGP scenario. This time, we have multiple AS numbers:
R1 can go through AS 3 or AS 2 to get to 4.4.4.4/32 in AS 4.
Configurations
Want to take a look for yourself? Here you will find the startup configuration of each device.
R1
hostname R1
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.12.1 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.13.1 255.255.255.0
!
router bgp 1
neighbor 192.168.12.2 remote-as 2
neighbor 192.168.13.3 remote-as 3
!
end
R2
hostname R2
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.12.2 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.24.2 255.255.255.0
!
router bgp 2
neighbor 192.168.12.1 remote-as 1
neighbor 192.168.24.4 remote-as 4
!
end
R3
hostname R3
!
ip cef
!
interface GigabitEthernet0/1
ip address 192.168.13.3 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.34.3 255.255.255.0
!
router bgp 3
neighbor 192.168.13.1 remote-as 1
neighbor 192.168.34.4 remote-as 4
!
end
R4
hostname R4
!
ip cef
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface GigabitEthernet0/1
ip address 192.168.24.4 255.255.255.0
!
interface GigabitEthernet0/2
ip address 192.168.34.4 255.255.255.0
!
router bgp 4
network 4.4.4.4 mask 255.255.255.255
neighbor 192.168.24.2 remote-as 2
neighbor 192.168.34.3 remote-as 3
!
end
Here’s the BGP table of R1:
R1#show ip bgp
BGP table version is 2, local router ID is 192.168.13.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,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* 4.4.4.4/32 192.168.13.3 0 3 4 i
*> 192.168.12.2 0 2 4 i
R1 has installed R2 as its next hop address. Let’s see if we can change that:
R1(config)#router bgp 1
R1(config-router)#maximum-paths 2
This command alone, however, doesn’t help:
R1#show ip bgp
*Mar 21 11:10:13.118: %SYS-5-CONFIG_I: Configured from console by console
BGP table version is 2, local router ID is 192.168.13.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,
t secondary path,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* 4.4.4.4/32 192.168.13.3 0 3 4 i
*> 192.168.12.2 0 2 4 i
The problem here is that we have two different AS numbers, AS 2 and AS 3. We can tell BGP to “relax” its requirement of having the same AS path numbers and AS path length to only checking the AS path length. This can be done with the following hidden command:
still multipath is not enabling. below is the config.
BGP Table:
... Continue reading in our forumHi Rene,
Some confusion please clarify the below sentence:
So, If only AS-PATH is identical/same length then we can do BGP load sharing right ?
br//zaman
Hello Zdenek
Yes, that is correct. Only outgoing traffic, that is traffic from R1 to R2/R3 is load balanced. There is no way to load balance incoming traffic from the point of view of R1. In other words, there is no configuration within R1 that can be made in order to cause incoming traf
... Continue reading in our forumHello,
Just a few remarks.
At eBGP Same AS example “R1 will will have paths” should be replaced with “R1 will have 2 paths”. R2 configuration also needs the mask for “network 192.168.23.0” under bgp 23.
At the conclusion there is a note “the hidden bgp bestpath asp-path multipath-relax command”.
I guess the command is
bgp bestpath as-path multipath-relax
.Shouldn’t
R1#show ip route bgp
at the end of iBGP example also include the 192.168.123.0/24 network?A (perhaps stupid) question would be if you could trick a router to bypass the as-path length also using the
... Continue reading in our forumMy bad: the output is for
show ip route
&bgp
. Since 192.168.123.0/24 is also directly connected it will not be displayed inshow ip route bgp
(it will be displayed inshow ip route
). Many thanks!