一、BGP水平分割的作用及特点:
BGP水平分割的核心作用是防止路由环路,保障网络稳定,特点是分层防环、兼顾可靠性同时存在扩展限制,具体整理如下:
(一)、核心作用
- 最核心作用:防止路由环路:避免路由信息在不同自治系统(AS)之间、AS内部反复循环传递,导致路由计算错误、网络瘫痪。
- 减少资源浪费:阻断无效循环的路由更新,降低路由器CPU、带宽资源的无效消耗。
- 维持路由拓扑稳定:保证互联网庞大的路由体系始终保持无环状态,让数据包可以正常转发不迷路。
(二)、主要特点
- 分层设计,分场景防环:分为EBGP(跨AS)和IBGP(同AS内部)两种水平分割,分别解决不同场景下的环路问题:
- EBGP水平分割靠路由自带的AS_PATH路径标签防环,逻辑简单可靠
- IBGP水平分割因为同AS内无法靠标签防环,直接采用"从内部学的路由不再传给其他内部邻居"的规则,从传播层面阻断环路
- 规则简单可靠:实现逻辑清晰,防环有效性经过大规模互联网验证,是BGP默认开启的基础机制。
- 存在扩展性局限:IBGP水平分割会带来"路由无法完整传递"的问题,想要在大型AS内部署BGP,必须配合路由反射器或者BGP联邦才能使用。
- 兼容性强:和BGP其他机制(如路由聚合、选路规则)可以兼容工作,不会干扰其他功能的运行。
二、实验拓扑:

三、实验命令:
R1:
<Huawei>sys
Huaweiundo in en
Huaweisys R1
R1interface g0/0/0
R1-GigabitEthernet0/0/0ip add 12.1.1.1 24
R1-GigabitEthernet0/0/0quit
R1interface loopback 0
R1-LoopBack0ip address 1.1.1.1 32
R1-LoopBack0quit
R1ospf router-id 1.1.1.1
R1-ospf-1area 0
R1-ospf-1-area-0.0.0.0network 12.1.1.0 0.0.0.255
R1-ospf-1-area-0.0.0.0network 1.1.1.1 0.0.0.0
R1-ospf-1-area-0.0.0.0quit
R1-ospf-1q
R1bgp 123
R1-bgpundo summary automatic
R1-bgpundo synchronization
R1-bgprouter-id 1.1.1.1
R1-bgppeer 2.2.2.2 as-number 123
R1-bgppeer 2.2.2.2 connect-interface loopback
R1-bgpquit
R2:
<Huawei>sys
Huaweiun in en
Huaweisys R2
R2interface g0/0/1
R2-GigabitEthernet0/0/1ip add 12.1.1.2 24
R2-GigabitEthernet0/0/1quit
R2interface g0/0/0
R2-GigabitEthernet0/0/0ip add 23.1.1.2 24
R2-GigabitEthernet0/0/0quit
R2interface loopback 0
R2-LoopBack0ip address 2.2.2.2 32
R2-LoopBack0quit
R2ospf router-id 2.2.2.2
R2-ospf-1area 0
R2-ospf-1-area-0.0.0.0network 12.1.1.0 0.0.0.255
R2-ospf-1-area-0.0.0.0network 23.1.1.0 0.0.0.255
R2-ospf-1-area-0.0.0.0network 2.2.2.2 0.0.0.0
R2-ospf-1-area-0.0.0.0quit
R2-ospf-1q
R2bgp 123
R2-bgpundo synchronization
R2-bgpundo summary automatic
R2-bgppeer 1.1.1.1 as-number 123
R2-bgppeer 1.1.1.1 connect-interface loopback 0
R2-bgppeer 3.3.3.3 as-number 123
R2-bgppeer 3.3.3.3 connect-interface loopback 0
R2-bgpquit
R3:
<Huawei>sys
Huaweiundo info-center enable
Huaweisys R3
R3interface g0/0/1
R3-GigabitEthernet0/0/1ip add 23.1.1.3 24
R3-GigabitEthernet0/0/1quit
R3interface loopback 0
R3-LoopBack0ip add 3.3.3.3 32
R3-LoopBack0quit
R3ospf router-id 3.3.3.3
R3-ospf-1area 0
R3-ospf-1-area-0.0.0.0network 23.1.1.0 0.0.0.255
R3-ospf-1-area-0.0.0.0network 3.3.3.3 0.0.0.0
R3-ospf-1-area-0.0.0.0quit
R3-ospf-1q
R3bgp 123
R3-bgpundo synchronization
R3-bgpundo summary automatic
R3-bgprouter-id 3.3.3.3
R3-bgppeer 2.2.2.2 as-number 123
R3-bgppeer 2.2.2.2 connect-interface loopback 0
R3-bgpquit
四、实验测试:
在R2上查看BGP的对等体关系,可以看到R2已经和R1,R3建立了联系

在R1上创建一个环回接口,IP地址为100.100.100.100并宣告
R1interface loopback 100
R1-LoopBack100ip address 100.100.100.100 32
R1-LoopBack100quit
R1bgp 123
R1-bgpnetwork 100.100.100.100 32
R1-bgpquit
然后分别在R1,R2和R3上查看BGP路由表,可以看到R1和R2上的BGP路由表都有刚宣告的环回接口,R3上没有



R3上的路由表为空,这是因为BGP水平分割导致的,水平分割是从一个IBGP邻居学到的路由,不会再通告给其他IBGP邻居(俗称"内内不相传"),以此避免AS内部形成路由环路
下面我们在R2上使用路由反射来解决BGP水平分割的问题
R2bgp 123
R2-bgppeer 1.1.1.1 reflect-client
R2-bgpquit
然后再在R3上查看BGP路由表,可以看到R3上的BGP路由表里已经获取到了宣告的环回接口

五、总结:
BGP水平分割简单说就是BGP里防止路由绕圈子出bug的规则,一句话讲就是"不让消息绕回出发地",分两种情况:
- 不同大网络(AS自治系统)之间
就像你给隔壁公司发通知,对方又把写了你的公司名的通知发回来给你,你一看这本来就是我发的,直接扔了不收------这就是靠路由自带的"路过名单"防绕圈,就是EBGP水平分割。
- 同一个大网络内部
就像公司里,你从同事A那收到了消息,不能再把这个消息转给另一个同事B,避免传来传去绕出死循环------本来要求公司所有人都得直接拿到消息,得每个人都互相打招呼,人多了根本忙不过来,后面就有了路由反射器(专门的消息中转站)来解决这个问题,这就是IBGP水平分割。
路由反射就是选一个人当"消息中转站":所有人只需要跟这个中转站传递消息,中转站再把收到的消息转发给所有人,其他人不用挨个开会了,这个中转站就是路由反射器,来中转站传话的人就是客户端。