BGP水平分割

Source

一、BGP水平分割的作用及特点:

‌BGP水平分割的核心作用是防止路由环路,保障网络稳定,特点是分层防环、兼顾可靠性同时存在扩展限制‌,具体整理如下:

(一)、核心作用

  1. ‌最核心作用:防止路由环路‌:避免路由信息在不同自治系统(AS)之间、AS内部反复循环传递,导致路由计算错误、网络瘫痪。
  2. ‌减少资源浪费‌:阻断无效循环的路由更新,降低路由器CPU、带宽资源的无效消耗。
  3. ‌维持路由拓扑稳定‌:保证互联网庞大的路由体系始终保持无环状态,让数据包可以正常转发不迷路。

(二)、主要特点

  1. ‌分层设计,分场景防环‌:分为EBGP(跨AS)和IBGP(同AS内部)两种水平分割,分别解决不同场景下的环路问题:
  2. EBGP水平分割靠路由自带的AS_PATH路径标签防环,逻辑简单可靠
  3. IBGP水平分割因为同AS内无法靠标签防环,直接采用"从内部学的路由不再传给其他内部邻居"的规则,从传播层面阻断环路
  4. ‌规则简单可靠‌:实现逻辑清晰,防环有效性经过大规模互联网验证,是BGP默认开启的基础机制。
  5. ‌存在扩展性局限‌:IBGP水平分割会带来"路由无法完整传递"的问题,想要在大型AS内部署BGP,必须配合路由反射器或者BGP联邦才能使用。
  6. ‌兼容性强‌:和BGP其他机制(如路由聚合、选路规则)可以兼容工作,不会干扰其他功能的运行。

二、实验拓扑:

三、实验命令:

R1:

<Huawei>sys

[Huawei]undo in en

[Huawei]sys R1

[R1]interface g0/0/0

[R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24

[R1-GigabitEthernet0/0/0]quit

[R1]interface loopback 0

[R1-LoopBack0]ip address 1.1.1.1 32

[R1-LoopBack0]quit

[R1]ospf router-id 1.1.1.1

[R1-ospf-1]area 0

[R1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

[R1-ospf-1-area-0.0.0.0]quit

[R1-ospf-1]q

[R1]bgp 123

[R1-bgp]undo summary automatic

[R1-bgp]undo synchronization

[R1-bgp]router-id 1.1.1.1

[R1-bgp]peer 2.2.2.2 as-number 123

[R1-bgp]peer 2.2.2.2 connect-interface loopback

[R1-bgp]quit

R2:

<Huawei>sys

[Huawei]un in en

[Huawei]sys R2

[R2]interface g0/0/1

[R2-GigabitEthernet0/0/1]ip add 12.1.1.2 24

[R2-GigabitEthernet0/0/1]quit

[R2]interface g0/0/0

[R2-GigabitEthernet0/0/0]ip add 23.1.1.2 24

[R2-GigabitEthernet0/0/0]quit

[R2]interface loopback 0

[R2-LoopBack0]ip address 2.2.2.2 32

[R2-LoopBack0]quit

[R2]ospf router-id 2.2.2.2

[R2-ospf-1]area 0

[R2-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0

[R2-ospf-1-area-0.0.0.0]quit

[R2-ospf-1]q

[R2]bgp 123

[R2-bgp]undo synchronization

[R2-bgp]undo summary automatic

[R2-bgp]peer 1.1.1.1 as-number 123

[R2-bgp]peer 1.1.1.1 connect-interface loopback 0

[R2-bgp]peer 3.3.3.3 as-number 123

[R2-bgp]peer 3.3.3.3 connect-interface loopback 0

[R2-bgp]quit

R3:

<Huawei>sys

[Huawei]undo info-center enable

[Huawei]sys R3

[R3]interface g0/0/1

[R3-GigabitEthernet0/0/1]ip add 23.1.1.3 24

[R3-GigabitEthernet0/0/1]quit

[R3]interface loopback 0

[R3-LoopBack0]ip add 3.3.3.3 32

[R3-LoopBack0]quit

[R3]ospf router-id 3.3.3.3

[R3-ospf-1]area 0

[R3-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0

[R3-ospf-1-area-0.0.0.0]quit

[R3-ospf-1]q

[R3]bgp 123

[R3-bgp]undo synchronization

[R3-bgp]undo summary automatic

[R3-bgp]router-id 3.3.3.3

[R3-bgp]peer 2.2.2.2 as-number 123

[R3-bgp]peer 2.2.2.2 connect-interface loopback 0

[R3-bgp]quit

四、实验测试:

在R2上查看BGP的对等体关系,可以看到R2已经和R1,R3建立了联系

在R1上创建一个环回接口,IP地址为100.100.100.100并宣告

[R1]interface loopback 100

[R1-LoopBack100]ip address 100.100.100.100 32

[R1-LoopBack100]quit

[R1]bgp 123

[R1-bgp]network 100.100.100.100 32

[R1-bgp]quit

然后分别在R1,R2和R3上查看BGP路由表,可以看到R1和R2上的BGP路由表都有刚宣告的环回接口,R3上没有

R3上的路由表为空,这是因为BGP水平分割导致的,水平分割是从一个IBGP邻居学到的路由,不会再通告给其他IBGP邻居‌(俗称"内内不相传"),以此避免AS内部形成路由环路

下面我们在R2上使用路由反射来解决BGP水平分割的问题

[R2]bgp 123

[R2-bgp]peer 1.1.1.1 reflect-client

[R2-bgp]quit

然后再在R3上查看BGP路由表,可以看到R3上的BGP路由表里已经获取到了宣告的环回接口

五、总结:

‌BGP水平分割简单说就是BGP里防止路由绕圈子出bug的规则,一句话讲就是"不让消息绕回出发地"‌,分两种情况:

1. 不同大网络(AS自治系统)之间

就像你给隔壁公司发通知,对方又把写了你的公司名的通知发回来给你,你一看这本来就是我发的,直接扔了不收——这就是靠路由自带的"路过名单"防绕圈,就是EBGP水平分割。

2. 同一个大网络内部

就像公司里,你从同事A那收到了消息,不能再把这个消息转给另一个同事B,避免传来传去绕出死循环——本来要求公司所有人都得直接拿到消息,得每个人都互相打招呼,人多了根本忙不过来,后面就有了路由反射器(专门的消息中转站)来解决这个问题,这就是IBGP水平分割。

路由反射就是‌选一个人当"消息中转站"‌:所有人只需要跟这个中转站传递消息,中转站再把收到的消息转发给所有人,其他人不用挨个开会了,这个中转站就是路由反射器,来中转站传话的人就是‌客户端‌。