一个项目案例详解BGP路由通告原则(附拓扑配置)

2022-02-17 15:23:48 浏览数 (2)

前言

前面写了一篇文章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---

0 人点赞