前言
前面写了一篇文章32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP报文类型、BGP状态机等。
今天给大家详细讲讲BGP通告路由的四大原则;
- BGP只发布最优且有效的路由;
- 从EBGP获取到的路由,会发布给所有对等体(IBGP和EBGP)
- 从IBGP学习到的路由,不会再发送给其它的IBGP对等体。该原则称为“IBGP水平分割”。
- 从IBGP学习到的路由,如果要发送给EBGP对等体,依赖于从其它的IGP协议中学些到这条路由,该条规则称为BGP同步原则。
项目案例
1、实验拓扑
需求如下:
(1)路由器R1、R5、R6运行ospf协议,R1 ospf中发布loopback2地址;路由器R1、R5属于BGP AS 100,和R2建立EBGP邻居,将R1 loopback2通过BGP传递到R2、R4、R3;
(2)R2、R4属于BGP AS 200,建立IBGP邻居;R3属于BGP AS 300,与R2建立EBGP邻居;
(3)R3、R7、R8为全IBGP对等体,R8发布loopback地址。
2、实验配置
R6配置:
代码语言:javascript复制#
interface LoopBack0
ip address 6.6.6.6 255.255.255.255
#
interface LoopBack2
ip address 10.10.10.10 255.255.255.255
#
interface GigabitEthernet0/0/0
ip address 10.1.16.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.56.2 255.255.255.252
#
ospf 1
area 0.0.0.0
network 10.1.16.0 0.0.0.3
network 10.1.56.0 0.0.0.3
network 10.10.10.10 0.0.0.0
#
R1配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.15.1 255.255.255.252
#
interface GigabitEthernet0/0/2
ip address 10.1.16.1 255.255.255.252
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
bgp 100
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
network 10.10.10.10 255.255.255.255
peer 10.1.12.2 enable
#
ospf 1
area 0.0.0.0
network 10.1.16.0 0.0.0.3
#
R5配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.25.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.15.2 255.255.255.252
#
interface GigabitEthernet0/0/2
ip address 10.1.56.1 255.255.255.252
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
#
bgp 100
peer 10.1.25.1 as-number 200
#
ipv4-family unicast
undo synchronization
network 5.5.5.5 255.255.255.255
network 10.10.10.10 255.255.255.255
peer 10.1.25.1 enable
#
ospf 1
area 0.0.0.0
network 10.1.56.0 0.0.0.3
#
R2配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.23.1 255.255.255.252
#
interface GigabitEthernet0/0/2
ip address 10.1.24.1 255.255.255.252
#
interface GigabitEthernet0/0/3
ip address 10.1.25.1 255.255.255.252
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 200
peer 10.1.12.1 as-number 100
peer 10.1.23.2 as-number 300
peer 10.1.24.2 as-number 200
peer 10.1.25.2 as-number 100
#
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
peer 10.1.12.1 enable
peer 10.1.23.2 enable
peer 10.1.24.2 enable
peer 10.1.24.2 next-hop-local
peer 10.1.25.2 enable
#
R4配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.24.2 255.255.255.252
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
bgp 200
peer 10.1.24.1 as-number 200
#
ipv4-family unicast
undo synchronization
peer 10.1.24.1 enable
#
R3配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.23.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.37.1 255.255.255.252
#
interface GigabitEthernet0/0/2
ip address 10.1.38.1 255.255.255.252
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
bgp 300
peer 10.1.23.1 as-number 200
peer 10.1.37.2 as-number 300
peer 10.1.38.2 as-number 300
#
ipv4-family unicast
undo synchronization
network 3.3.3.3 255.255.255.255
peer 10.1.23.1 enable
peer 10.1.37.2 enable
peer 10.1.37.2 next-hop-local
peer 10.1.38.2 enable
peer 10.1.38.2 next-hop-local
#
R7配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.37.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.78.1 255.255.255.252
#
interface LoopBack0
ip address 7.7.7.7 255.255.255.255
#
bgp 300
peer 10.1.37.1 as-number 300
peer 10.1.78.2 as-number 300
#
ipv4-family unicast
undo synchronization
peer 10.1.37.1 enable
peer 10.1.78.2 enable
#
R8配置:
代码语言:javascript复制#
interface GigabitEthernet0/0/0
ip address 10.1.38.2 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.1.78.2 255.255.255.252
#
interface LoopBack0
ip address 8.8.8.8 255.255.255.255
#
interface LoopBack99
ip address 88.88.88.88 255.255.255.255
#
bgp 300
peer 10.1.38.1 as-number 300
peer 10.1.78.1 as-number 300
#
ipv4-family unicast
undo synchronization
network 88.88.88.88 255.255.255.255
peer 10.1.38.1 enable
peer 10.1.78.1 enable
#
3、BGP通告原则
(1)BGP只发布最优且有效的路由;
在上述案例中,R2可以通过R1和R5学习到10.10.10.10/32的路由。
如上图所示,从R1学些到BGP路由是最优且有效的;因此R2在向对等体发布路由的时候只会发布从R1收到的这条。
也只有最优且有效的路由会被加入到路由表。如下图所示:
为什么从R1学习到的是最优的呢?如下图所示,因为router id大小没有被优选;
(2)从EBGP获取到的路由,会发布给所有对等体(IBGP和EBGP)。
在上述案例中,R2可以通过R1和R5学习到10.10.10.10/32的路由。既会发布给IBGP对等体R4,也会发给IBGP对等体R3。
我们在R3、R4上查询下路由(如下图所示)。
(3)从IBGP学习到的路由,不会再发送给其它的IBGP对等体。该原则称为“IBGP水平分割”。
在上述案例中,R3、R7、R8 互为IBGP对等体,R8发布的loopback99地址88.88.88.88/32,会发送给IBGP对等体R7、R8,但是R7不再会发送给R8,否则会造成环路。
(4)从IBGP学习到的路由,如果要发送给EBGP对等体,依赖于从其它的IGP协议中学些到这条路由,该条规则称为BGP同步原则。
在上述案例中,R3、R7、R8 互为IBGP对等体,R8发布的loopback99地址88.88.88.88/32,会发送给IBGP对等体R7、R8,R8 发送给EBGP对等体R2,依赖于IGP路由表也要学些到这条路由。
---END---