BGP协议 路由反射器和联邦
一、IBGP水平分割规则
(1)BGP路由在AS之间的防环依赖于AS_Path路径属性,当路由器收到BGP路由后,发现该路由所携带的AS_Path属性中出现了其自己所处的AS号,则路由器认为出现了路由环路,它将忽略该条路由。
(2)AS_Path属性仅在路由离开AS时才会被更改,而BGP路由在AS内部传递时,路由的AS_Path属性值不会发生改变,如此一来,IBGP路由的防环就无法依赖AS_Path了。
(3)为了防止BGP路由在AS内部传递时发生环路,BGP要求:“路由器不能将自己从IBGP对等体学习到的路由再传递给其他IBGP对等体”,这就是IBGP水平分割规则。
(4)由于IBGP水平分割原则的存在,BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。
二、中转AS中的IBGP问题
由于IBGP水平分割的存在,为了保证所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联(两两建立对等体关系)。然而实现IBGP全互联存在诸多短板:路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时;AS内BGP网络的可扩展性较差。
解决方案:路由反射器和BGP联邦。
三、路由反射器
(1)RR就像一面镜子,将自己学习到的IBGP路由“反射”出去,使得IBGP路由得以在AS内传递。当然,RR并不是将所有的IBGP路由都进行反射,它将遵循一定的规则。
(2)将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,而且它并不知晓RR在网络中的存在。
注: 路由反射器(Route Reflector,RR),客户端(Client)。
四、路由反射规则
RR在接收BGP路由时:
(1)如果该路由学习自非Client IBGP对等体,则反射给自己所有的Client;
(2)如果路由学习自Client,则反射给所有非Client IBGP对等体和除了该Client之外的所有Client;
(3)如果路由学习自EBGP对等体,则发送给所有Client和非Client IBGP对等体。
规则示例:
对应规则(1)
对应规则(2)
对应规则(3)
五、RR场景下的IBGP路由防环
由于AS_Path属性在AS内部不会发生变化(仅当路由离开本AS时AS_PATH才会改变),因此AS内才需要IBGP水平分割用于防止IBGP路由环路,而RR的存在实际上是放宽了水平分割原则,这就会给路由环路带来一定的潜在隐患。BGP通过两个特殊的路径属性来实现RR场景下的BGP路由防环:Originator_ID和Cluster_List是可选非传递属性,用来防止路由环路。
六、Originator_ID
Originator_ID是一个可选非传递属性,属性类型为9。是一个32bit的数值。RR将一条BGP路由进行反射时会在反射出去的路由中增加该路径属性,其值被设置为路由器的BGP Router-ID值:
如果路由为本地AS始发:则Originator_ID被设置为BGP路由宣告者的Router-ID;
如果路由为非本地AS始发:则Originator_ID被设置为本地AS的边界路由器的Router-ID。
如果AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR(若有)所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router-ID相同,则它会忽略关于该条路由的更新。
Originator_ID及Cluster-list属性将会影响BGP路径优选决策。
七、路中反射簇Cluster
(1)路由反射簇包括反射器RR及其Client,一个AS内允许存在多个路由反射簇。
(2)每一个簇都有唯一的簇ID(Cluster-ID,缺省时为RR的BGP Router-ID )
(3)当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
(4)当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此它将忽略关于该条路由的更新。
八、BGP联邦(Confederation)
在AS345中,进行联邦成员AS(Confederation member AS)的规划,如此一来BGP邻居关系就发生了变化。
九、联邦内的BGP路由路径属性
(1)通告给联邦的BGP路由,Next_Hop属性在整个联邦范围内缺省不会发生改变;
(2)通告给联邦的BGP路由,MED属性在整个联邦范围内缺省不会发生改变;
(3)通告给联邦的BGP路由,Local_Preference属性在整个联邦范围内缺省不会发生改变;
(4)BGP路由在联邦内的EBGP对等体间传递时,路由器将成员AS号插入AS_Path,并且使用TYPE3、4的特殊AS_Path存储。成员AS号不会被公布到联邦AS之外,即对于联邦AS外部而言,联邦成员AS是不可见的。
(5)AS_Path中的联邦成员AS号用于在联邦内部避免环路;联邦内成员AS号不参与AS_Path长度计算。
配置实例:
R3配置:
[R3] bgp 64512
[R3-bgp] confederation id 345
[R3-bgp] peer 10.1.13.1 as-number 100
[R3-bgp] peer 4.4.4.4 as-number 64512
[R3-bgp] peer 4.4.4.4 connect-interface loopback0
[R3-bgp] peer 4.4.4.4 next-hop-local
R4配置:
[R4] bgp 64512
[R4-bgp] confederation id 345
[R4-bgp] confederation peer-as 64513
[R4-bgp] peer 3.3.3.3 as-number 64512
[R4-bgp] peer 3.3.3.3 connect-interface loopback0
[R4-bgp] peer 5.5.5.5 as-number 64513
[R4-bgp] peer 5.5.5.5 connect-interface loopback0
[R4-bgp] peer 5.5.5.5 ebgp-max-hop
R5配置:
[R5] bgp 64513
[R5-bgp] confederation id 345
[R5-bgp] confederation peer-as 64512
[R5-bgp] peer 4.4.4.4 as-number 64512
[R5-bgp] peer 4.4.4.4 connect-interface loopback0
[R5-bgp] peer 4.4.4.4 ebgp-max-hop
[R5-bgp] peer 10.1.25.2 as-number 200
[R5-bgp] peer 4.4.4.4 next-hop-local
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效