当前位置: 首页 > news >正文

RGSE-Routing and Switching | BGP高级特性(2)


文章目录

  • 一、BGP路由黑洞
    • BGP路由黑洞的产生原因
    • IBGP全互联中的水平分割原则
  • 二、BGP联盟
    • BGP联盟是什么
    • BGP联盟特性
    • BGP联盟中的下一跳不可达问题
    • BGP联盟实验
  • 三、BGP对等体组
    • BGP对等体组+RR
  • 四、BGP路由汇总
    • 为什么需要路由汇总
    • BGP路由汇总的方式
      • 通过network方式进行路由汇总
      • NULL 0的应用
      • 通过aggregate-address的方式进行BGP路由汇总

一、BGP路由黑洞

BGP路由黑洞的产生原因

  1. 当跨设备进行IBGP Peer建立时,由于中间设备未运行BGP。
  2. 数据包传递到这些未运行BGP设备的时候,这些设备上查看路由表后,发现并没有BGP设备传来的路由条目后,就自动将这条路由信息丢弃,从而产生路由黑洞。
  3. 究其原因还是因为这些设备没有运行BGP,不会收到通过BGP传递来的路由信息。

如图1-1:

  1. 当R6想要访问1.1.1.1/32时,在BGP路由表中告诉R6,向自己的EBGP发送数据包。
  2. 数据包传递到R5的时候,则会继续向R2发送数据包。
  3. 但是在向R2发送数据包的过程中,必须要经过R3/R4,但是R3/R4并未运行BGP,查看路由表后,发现并没有后1.1.1.1/32路由条目,所以果断将数据包丢弃。

图1-1 ## 避免路由黑洞的方法
  1. 建立IBGP全互联架构

其中IBGP的全互联架构包括三点:

①全互联结构:如图1-2,建立物理邻居上的全互联结构,N个IBGP对等体就需要建立N(N-1)/2对IBGP邻居关系,加大了维护量,特别不推荐。

图1-2

②路由反射器:如图1-3,路由反射器建立了逻辑上的IBGP全互联,比起IBGP全互联推荐使用。

图1-3

③BGP联盟:也是建立逻辑上的IBGP全互联,同样比IBGP全互联推荐使用。

图1-3
  1. BGP重分布进IGP: 如图1-4,在既运行了BGP和IGP的路由器上(如R2/R5),让中间没有运行BGP的设备,也能通过IGP获取到BGP 的路由条目。

    缺点是由于BGP的路由信息非常地大,IGP是无法承载像BGP那么大的路由信息,举个例子,若是BGP能够承载几万条路由条目,但是像OSPF这样的IGP就只能承载几千条路由条目。

图1-4
  1. MPLS:通过标签进行转发,是VPN的一种类型,不是本章BGP高级特性的特点。

IBGP全互联中的水平分割原则

在建立全互联IBGP Peer中存在一个致命的问题,那就是水平分割原则情况出现,所谓水平分割原则是在BGP网络中为了防止环路而设置的一种机制,但是对于路由的传输来说,却有着重大的影响。

BGP 水平分割原则会导致IBGP 全互联的情况下,从IBGP Peer学习到的路由不会传递给下一个IBGP Peer,即路由信息只能传递一跳。如图 1-5,R2传递一条路由信息给R3后,由于水平分割原则,R3是无法再次传递给R5的。

图1-5

二、BGP联盟

BGP联盟是什么

让我们来回顾一下,水平分割原则产生的问题:在于多个IBGP Peer建立起来,导致路由只能传递一跳。

但是如果将IBGP Peer之间的关系通过某些方式变成EBGP Peer之间的关系的呢?BGP 联盟的做法就是这样。

BGP联盟定义:如图2-1

  1. BGP联盟将一个大的AS,分成多个小的AS,,这些小的AS被我们称作子AS,大的AS被我们称作联盟AS。
  2. 子AS与子AS之间的关系为EBGP,以每两个BGP设备建立一个子AS的方式来打破水平分割原则,有效避免了路由黑洞,减少了AS内部IBGP邻居过多而导致网络连接激增的问题。
  3. 但是对于联盟之外的AS来说,是不存在BGP联盟这个概念的。
  4. 在联盟内,IBGP每遇到一跳就可以建立子AS。

图2-1

如图2-3,对于AS 65530来说,他是不知道 AS 65531中还有子AS100等。

图2-2

BGP联盟特性

在联盟内部,BGP路由路径属性有如下两个类别

一、与在原本IBGP中属性保持不变的。

  1. Next-Hop
  2. Local Preference
  3. Multi_exit_disc

二、与在原本IBGP中属性发生改变的。

  1. AS-Path

①联盟内AS-Path只在联盟内有效,不会传出联盟。

联盟AS-Path在联盟中只起到防止路由环路的功能,不能起到选路的功能,这点是与IBGP中AS-Path不同的。

三、在联盟自定义的属性,传出联盟后就会被删除掉。

BGP联盟中的下一跳不可达问题

如图2-3,如过程①中,由于next-hop属性的原因,即从EBGP传来的next-hop属性在IBGP中传递保持不变,联盟中子AS 100和子 AS 300虽然是EBGP关系,但是依然会造成下一跳不可达问题。同理,因为子AS 200和子 AS 100是EBGP的关系,所以过程②也有下一跳不可达的问题。

因此,我们需要在不同的地方为不同的路由器配置next-hop-self命令。

  1. 过程①:在R1上针对R2配置next-hop-self命令。
  2. 过程②:在R3上针对R1配置next-hop-self命令。

图2-3

BGP联盟实验

如图2-4,按照IBGP每遇到一跳就建立一个子AS的原则进行配置

图2-4 **AS 65530配置**

R6

Router>en Router#conf Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hos R6 R6(config)#int g0/0 R6(config-if-GigabitEthernet 0/0)#ip add 15.1.1.6 24 R6(config-if-GigabitEthernet 0/0)#ex R6(config)#int lo0 R6(config-if-Loopback 0)#ip add 6.6.6.6 32 R6(config-if-Loopback 0)#ex R6(config)#router bgp 65530 //创建BGP进程 R6(config-router)#bgp router-id 6.6.6.6 R6(config-router)#nei 15.1.1.1 remote-as 65531 //配置EBGP邻居 R6(config-router)#netw 6.6.6.6 mask 255.255.255.255 //宣告用来测试的lo地址 R6(config-router)#ex

联盟内子AS 300配置

R1

Router>en Router#conf Router(config)#hos R1 R1(config)#int lo0 ip add 1.1.1.1 32 R1(config-if-Loopback 0)#ex R1(config)#int g0/0 R1(config-if-GigabitEthernet 0/0)#ip add 15.1.1.1 24 R1(config-if-GigabitEthernet 0/0)#ex R1(config)#int g0/1 R1(config-if-GigabitEthernet 0/1)#ip add 11.1.1.1 24 R1(config-if-GigabitEthernet 0/1)#ex R1(config)#int g0/2 R1(config-if-GigabitEthernet 0/2)#ip add 13.1.1.3 24 R1(config-if-GigabitEthernet 0/2)#ex R1(config)#router bgp 300 R1(config-router)#bgp router-id 1.1.1.1 R1(config-router)#bgp confeder identi 65531 //指定联盟AS号 R1(config-router)#bgp confeder peers 100 200 //指定子AS邻居 R1(config-router)#nei 11.1.1.2 remote-as 100 R1(config-router)#nei 13.1.1.3 remote-as 200 R1(config-router)#neighbor 15.1.1.6 remote-as 65530 R1(config-router)#nei 11.1.1.2 next-hop-self R1(config-router)#nei 13.1.1.3 next-hop-self R1(config-router)#ex

联盟内子AS 100配置

R2

Router>en Router#conf Router(config)#hos R2 R2(config)#int lo0 R2(config-if-Loopback 0)#ip add 2.2.2.2 32 R2(config-if-Loopback 0)#ex R2(config-if-Loopback 0)#ex^MR2(config)#int g0/0 R2(config-if-GigabitEthernet 0/0)#ip add 11.1.1.2 24 R2(config-if-GigabitEthernet 0/0)#ex R2(config)#int g0/1 R2(config-if-GigabitEthernet 0/1)#ip add 12.1.1.2 24 R2(config-if-GigabitEthernet 0/1)#ex R2(config)#router ospf 10 R2(config-router)#router-id 2.2.2.2 Change router-id and update OSPF process! [yes/no]:yes R2(config-router)#netw 2.2.2.2 0.0.0.0 area 0 R2(config-router)#netw 12.1.1.0 0.0.0.255 area 0 R2(config-router)#ex R2(config)#router bgp 100 R2(config-router)#bgp router-id 2.2.2.2 R2(config-router)#bgp confeder ident 65531 R2(config-router)#bgp confeder peer 300 R2(config-router)#nei 4.4.4.4 remote-as 100 R2(config-router)#nei 4.4.4.4 next-hop-self R2(config-router)#nei 11.1.1.1 remote-as 300 R2(config-router)#nei 11.1.1.1 next-hop-self R2(config-router)#ex

R4

Router>en Router#con Router(config)#hos R4 R4(config)#int lo0 R4(config-if-Loopback 0)#ip add 4.4.4.4 32 R4(config-if-Loopback 0)#ip add 4.4.4.4 32 R4(config-if-Loopback 0)#ex R4(config)#int g0/0 R4(config-if-GigabitEthernet 0/0)#ip add 12.1.1.4 24 R4(config-if-GigabitEthernet 0/0)#ex R4(config)#router ospf 10 R4(config-router)#router-id 4.4.4.4 Change router-id and update OSPF process! [yes/no]:yes R4(config-router)#netw 4.4.4.4 0.0.0.0 area 0 R4(config-router)#netw 12.1.1.0 0.0.0.255 area 0 R4(config-router)#ex R4(config)#router bgp 100 R4(config-router)#bgp router-id 4.4.4.4 R4(config-router)#bgp confeder ident 65531 R4(config-router)#nei 2.2.2.2 remote-as 100 R4(config-router)#nei 2.2.2.2 update-sou lo0 R4(config-router)#ex

联盟内子AS 200配置

R3

R3(config)#en R3#conf R3(config)#hos R3 R3(config)#int g0/0 R3(config-if-GigabitEthernet 0/0)#ip add 13.1.1.3 24 R3(config-if-GigabitEthernet 0/0)#ex R3(config)#int g0/1 R3(config-if-GigabitEthernet 0/1)#ip add 14.1.1.3 24 R3(config-if-GigabitEthernet 0/1)#ex R3(config)#int lo0 R3(config-if-Loopback 0)#ip add 3.3.3.3 32 R3(config-if-Loopback 0)#ex R3(config)#router ospf 10 R3(config-router)#router-id 3.3.3.3 Change router-id and update OSPF process! [yes/no]:yes R3(config-router)#netw 3.3.3.3 0.0.0.0 area 0 R3(config-router)#netw 14.1.1.0 0.0.0.255 area 0 R3(config-router)#ex R3(config)#router bgp 200 R3(config-router)#bgp router-id 3.3.3.3 R3(config-router)#bgp confeder ident 65531 R3(config-router)#bgp confeder peer 300 R3(config-router)#nei 5.5.5.5 remote-as 200 R3(config-router)#nei 5.5.5.5 update-sou lo0 R3(config-router)#nei 13.1.1.1 remote-as 300 R3(config-router)#nei 13.1.1.1 next-hop-self R3(config-router)#ex

R5

Router>en Router#conf Router(config)#hos R5 R5(config)#int lo0 R5(config-if-Loopback 0)#ip add 5.5.5.5 32 R5(config-if-Loopback 0)#ex R5(config)#int g0/0 R5(config-if-GigabitEthernet 0/0)#ip add 14.1.1.5 24 R5(config-if-GigabitEthernet 0/0)#ex R5(config)#router ospf 10 R5(config-router)#router-id 5.5.5.5 Change router-id and update OSPF process! [yes/no]:yes R5(config-router)#netw 5.5.5.5 0.0.0.0 area 0 R5(config-router)#netw 14.1.1.0 0.0.0.255 area 0 R5(config-router)#ex R5(config)#router bgp 200 R5(config-router)#bgp router-id 5.5.5.5 R5(config-router)#bgp confede ident 65531 R5(config-router)#nei 3.3.3.3 remote-as 200 R5(config-router)#nei 3.3.3.3 update-sou lo0 R5(config-router)#ex

R4上查看BGP路由表

R4上查看BGP路由表6.6.6.6,可以看到6.6.6.6的路由传输过程中经过了子AS300。说明对于BGP联盟内来说,子AS之间是互相可见的。

R6上查看BGP路由表

R6上查看BGP路由表4.4.4.4

可以看到对于联盟外的AS来说,是无法感知到联盟内AS的多少的。

三、BGP对等体组

在BGP的配置中,我们少不了一些对一些同一性质的邻居进行重复性的配置操作,如1.1.1.1和2.2.2.2都是3.3.3.3的IBGP邻居,那么我就需要分别对两者进行IBGP邻居建立的配置。

但明显的是,1.1.1.1和2.2.2.2都是属于3.3.3.3的IBGP邻居,配置命令也是大同小异。

从而我们产生了了BGP对等体,这时可以将1.1.1.1和2.2.2.2加入到同一个对等体组内,假设为组名为ruijie

那么我们对ruijie配置 等同于 对1.1.1.1和2.2.2.2同时配置。

如图2-4,在R1上我们对R2和R3进行配置时,如果将R2和R3加入对等体组Group 1后只需要对Group 1即等同于对R2+R3同时配置。

图3-1

BGP对等体组+RR

如图2-5,R3作为路由反射器,要求在指定R2和R3作为client的时候,将R2和R3视为一个对等体组,对等体组名为Jan16

图3-2

配置过程如下:

R1

Router>en Router#conf Router(config)#hos R1 R1(config)#int g0/0 R1(config-if-GigabitEthernet 0/0)#ip add 12.1.1.1 24 R1(config-if-GigabitEthernet 0/0)#ex R1(config)#int lo0 R1(config-if-Loopback 0)#ip add 1.1.1.1 32 R1(config-if-Loopback 0)#ex R1(config)#router bgp 100 R1(config-router)#nei 12.1.1.2 remote-as 200 R1(config-router)#netw 1.1.1.1 mask 255.255.255.255 R1(config-router)#ex

R2

Router>en Router#conf Router(config)#hos R2 R2(config)#int g0/0 R2(config-if-GigabitEthernet 0/0)#ip add 12.1.1.2 24 R2(config-if-GigabitEthernet 0/0)#ex R2(config)#int g0/1 R2(config-if-GigabitEthernet 0/1)#ip add 23.1.1.2 24 R2(config-if-GigabitEthernet 0/1)#ex R2(config)#int lo0 R2(config-if-Loopback 0)#ip add 2.2.2.2 32 R2(config-if-Loopback 0)#ex R2(config)#router ospf 10 R2(config-router)#router-id 2.2.2.2 Change router-id and update OSPF process! [yes/no]:yes R2(config-router)#netw 2.2.2.2 0.0.0.0 area 0 R2(config-router)#netw 23.1.1.0 0.0.0.255 area 0 R2(config-router)#ex R2(config)#router bgp 200 R2(config-router)#nei 12.1.1.1 remote-as 100 R2(config-router)#nei 3.3.3.3 remote-as 200 R2(config-router)#nei 3.3.3.3 update-sou lo0 R2(config-router)#nei 3.3.3.3 next-hop-self R2(config-router)#ex

R3

Router>en Router#conf Router(config)#hos R3 R3(config)#int g0/1 R3(config-if-GigabitEthernet 0/1)#ip add 23.1.1.3 24 R3(config-if-GigabitEthernet 0/1)#ex R3(config)#int g0/0 R3(config-if-GigabitEthernet 0/0)#ip add 34.1.1.3 24 R3(config-if-GigabitEthernet 0/0)#ex R3(config)#int lo0 R3(config-if-Loopback 0)#ip add 3.3.3.3 32 R3(config-if-Loopback 0)#ex R3(config-if-Loopback 0)#ex^MR3(config)#router ospf 10 R3(config-router)#router-id 3.3.3.3 Change router-id and update OSPF process! [yes/no]:yes R3(config-router)#netw 3.3.3.3 0.0.0.0 area 0 R3(config-router)#netw 23.1.1.0 0.0.0.255 area 0 R3(config-router)#netw 34.1.1.0 0.0.0.255 area 0 R3(config-router)#ex R3(config)#router bgp 200 R3(config-router)#nei Jan16 peer-group R3(config-router)#neighbor Jan16 remote-as 200 R3(config-router)#nei Jan16 update-source lo0 R3(config-router)#nei Jan16 route-reflector-client R3(config-router)#nei 2.2.2.2 peer-group Jan16 R3(config-router)#nei 4.4.4.4 peer-group Jan16 R3(config-router)#neighbor Jan16 activate //重点配置,在IPv4的peer中,默认情况下,创建完peer-group后,peer-group的状态是消失的 R3(config-router)#ex

R4

Router>en Router#conf Router(config)#hos R4 R4(config)#int g0/1 R4(config-if-GigabitEthernet 0/1)#ip add 34.1.1.4 24 R4(config-if-GigabitEthernet 0/1)#ex R4(config)#int lo0 R4(config-if-Loopback 0)#ip add 4.4.4.4 32 R4(config-if-Loopback 0)#ex R4(config)#router ospf 10 R4(config-router)#router-id 4.4.4.4 Change router-id and update OSPF process! [yes/no]:yes R4(config-router)#netw 4.4.4.4 0.0.0.0 area 0 R4(config-router)#netw 34.1.1.0 0.0.0.255 area 0 R4(config-router)#ex R4(config)#router bgp 200 R4(config-router)#nei 3.3.3.3 remote-as 200 R4(config-router)#nei 3.3.3.3 update-sou lo0 R4(config-router)#ex

四、BGP路由汇总

为什么需要路由汇总

在特大规模的网络,通常运行的是BGP路由协议,虽然BGP的功能非常地强大,但是这个导致BGP路由表庞大,容易产生路由震荡等问题。通常地,我们就通过路由汇总来解决这个问题。将多条路由合并成一条路由宣告出去。

BGP路由汇总的方式

通过network方式进行路由汇总

我们可以先创建一条指向Null0的静态汇总路由,然后通过network的方式引入BGP中。

图4-1

如R1上

R1(config)#ip route 192.168.0.0 255.255.252.0 null 0 R1(config)#router bgp 100 R1(config-router)#netw 192.168.0.0 mask 255.255.252.0 R1(config-router)#ex

在R2上查看(图片上的R1和R2之间的关系是EBGP)

NULL 0的应用

如图4-2

  1. R2去ping192.168.1.1的时候,根据子网掩码最长匹配的原则,路由表中192.168.1.0/24 下一跳为R1会优先生效。
  2. 但是R1上有没有192.168.1.0/24的路由,所以只能走默认路由,下一跳为R1。
  3. 如此循环往复,就造成了环路。

图4-2

如图4-3,

  1. R2去ping192.168.1.1的时候,根据子网掩码最长匹配的原则,路由表中192.168.1.0/24 下一跳为R1会优先生效。
  2. 此时R1上的路由表上存在一条192.168.0.0/21下一跳为NULL 0,即丢到垃圾桶中。
  3. 此时,R1并不会将数据包转发回R2上,而是直接丢弃掉,这就是NULL 0的作用。

图4-3

通过aggregate-address的方式进行BGP路由汇总

通过aggregate-address,可以直接在BGP进程下进行路由汇总,但是需要先将需要汇总的路由在BGP中进行宣告。

如图4-4,我们在R1上需要先将192.168.1~3.0/24这三个网段分别宣告出去,在使用aggregate-address进行宣告。

图4-4

在R1上

R1(config)#router bgp 100 R1(config-router)#netw 192.168.1.0 mask 255.255.255.0 R1(config-router)#netw 192.168.2.0 mask 255.255.255.0 R1(config-router)#netw 192.168.3.0 mask 255.255.255.0 R1(config-router)#aggregate-address 192.168.0.0 255.255.252.0 R1(config-router)#ex

查看R2的BGP路由表,可以看到有一条被汇总来的路由,即192.168.1~3.0/24汇总成一条192.168.0.0/22

如果像上述的做法,那不还是增加了路由条目的数量了吗,所以aggregate还能使用summary-only将传递出去的路由信息只设置为仅通过汇总后的路由,不通告明细路由。也就是传递出的路由信息只剩下192.168.0.0/22这一条,操作如下:

R1

R1(config)#router bgp 100 R1(config-router)#aggregate-address 192.168.0.0 255.255.252.0 summary-only R1(config-router)#ex

查看R2的BGP路由表,可以看到只有一条被汇总来的路由,即192.168.0.0/22。

如果R2遇到不仅仅需要一条汇总路由,还需要一些特殊的明细路由呢?

我们可以使用suppress-map 【route-map】抑制某些特定明细路由。如下,只放行192.168.1.0/24,所以我们route-map关联的路由/抑制的路由就是192.168.2.0/24和192.168.3.0/24。

R1

R1(config)#access-list 1 pe host 192.168.2.0 R1(config)#access-list 1 pe host 192.168.3.0 //使用ACL匹配需要抑制的路由 R1(config)#route-map Jan16 permit 10 R1(config-route-map)#match ip address 1 //将ACL与route-map相关联 R1(config-route-map)#ex R1(config)#router bgp 100 R1(config-router)#aggregate-address 192.168.0.0 255.255.252.0 summary-only suppress-map Jan16 R1(config-router)#ex

查看R2的BGP路由表,可以发现192.168.1.0/24确实被放行了。

对于我们的防环属性AS-Path,还可以通告as-set命令,给汇总的路由添加as-set路径属性,即可以还原明细路由的AS号。避免还将汇总路由通告给汇总者。

如图4-5,使用as-set命令之后,我们就可以在R4上看到192.168.0.0/22在传递过程中到底经过了那些AS。

这次在R3上进行路由汇总

R3(config)#router bgp 200 R3(config-router)#aggregate-address 192.168.0.0 255.255.252.0 summary-only as-set R3(config)#ex

在R3上进行汇总,使用as-set命令前

在R3上进行汇总,使用as-set命令后


http://www.jsqmd.com/news/872257/

相关文章:

  • 终极指南:如何通过Awesome Agent Skills重塑全球技术合作与竞争格局
  • openpilot技术演进:从规则驱动到AI原生自动驾驶架构的转型之路
  • Claude Code 进阶实战:10个提升效率的技巧与最佳实践
  • 技能开发者访谈:Awesome Agent Skills核心贡献者经验分享与建议
  • 戴森球计划工厂蓝图库:3000+精选设计快速打造太空工业帝国
  • WordPress Markdown编辑器终极指南:为什么WP-Editor.md能彻底改变你的写作体验?
  • 终极跨平台资源下载利器:3分钟掌握视频号无水印下载技巧
  • 【AI Agent教育应用实战指南】:20年教育技术专家亲授5大落地场景与避坑清单
  • 【Midscene.js 实战8】处理复杂交互:滑动、拖拽与多步骤表单的 AI 填写方案
  • 技术深度解析:Wand-Enhancer如何实现WeMod功能增强与远程控制
  • FanControl软件故障排除的3种方法:从崩溃诊断到性能优化完整指南
  • 探索ESP32声音录制:打造你的便携式高品质录音设备
  • 【Midscene.js 实战9】异常处理与重试:提升 Midscene.js 脚本稳定性的三大策略
  • 企业云盘Kubernetes私有化部署实战指南
  • 浏览器媒体资源智能捕获解决方案:猫抓扩展技术深度解析
  • 从零到一:如何用Chanlun-Pro实现缠论量化交易系统
  • Bifrost三星固件下载器:跨平台解决方案终极指南
  • 如何给图片换背景底色?2026电脑手机制作方法对比
  • 终极指南:3分钟掌握unnpk网易游戏资源解包工具
  • 知识工作者的最后窗口期:2026年仅剩47天完成AI知识中枢升级——附工信部推荐迁移路线图与兼容性检测脚本
  • Blur Auto Clicker社区支持与资源汇总:插件、主题、扩展推荐 [特殊字符]
  • MLOps平台用户留存率暴跌47%?Lovable ML平台搭建的4个情感化工程关键指标,立即自查
  • Claude Desktop for Linux MCP配置完全指南:扩展AI功能边界的终极教程
  • 终极指南:3分钟学会用AI一键分离人声与伴奏(2025最新版)
  • 2026新手扣图操作方法完全指南:8种技巧让你轻松去除背景
  • Claude Desktop for Linux版本升级指南:平滑迁移与回滚策略
  • trae配置mcp服务初体验
  • 3步安装Sabaki围棋软件:免费优雅的围棋棋盘与SGF编辑器终极指南
  • 突破性技术:Hypersim室内场景理解超逼真合成数据集的三大技术价值
  • Maya动画重定向工具:打破角色动画复用的技术壁垒