BGP路由通告原则详解
BGP路由通告原则详解
BGP(Border Gateway Protocol)是互联网中最重要的路由协议之一,负责在不同的自治系统(AS)之间交换路由信息。在上一章中,我们学习了BGP路由的产生方式和查看路由表信息。本章将深入探讨BGP向邻居通告路由时遵循的原则。
BGP自身并不会发现并计算产生路由。BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体。那么,BGP向邻居通告路由时遵循哪些原则呢?
BGP通告遵循以下原则:
- 只发布最优且有效路由。
- 从EBGP对等体获取的路由,会发布给所有对等体。
- 从IBGP对等体获取的路由,不会发送给IBGP对等体。
- BGP同步原则
一、只发布最优且有效(即下一跳地址可达)路由
图1:BGP路由通告原则一
在BGP路由表中同时存在以下两个标志的路由为最优、有效:
- :代表有效
:代表最优
有效最优路由(即下一跳地址可达)。因为BGP是将IGP路由导入BGP,就有可能在AS内部通过OSPF等多个路径学习到通一条路由,但是只会将最优路由通告。
二、从EBGP对等体获取的路由,会发布给所有对等体
BGP路由通告原则二
从EBGP对等体获取的BGP路由,会发布给所有EBGP、IBGP对等体。
三、从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体
第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。该条原则也被称为IBGP水平分割。这条是为了防止IBGP邻居互相通告导致产生环路。
由于IBGP只能传递一跳路由,因此可以通过IBGP全互联,AS内都通过IGP建立IBGP邻居,可以非直连,一跳到达即可。还需要配置IBGP本地出口指定到达目标路由通过自身转发。
四、BGP同步原则
当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则。
BGP同步原则
图2:BGP同步原则
BGP路由黑洞,在AS内部通过IBGP建立邻居可以非直连,中间路由无法学习到目标网段,虽然基于TCP可以建立邻居但是数据包需要从物理链路传输,而且路由器基于路由表转发,没有路由条目则会丢弃,因此产生路由黑洞。
解决方法:
- IGP与BGP同步(已经淘汰)
- AS内部建立IBGP全互联都学习到BGP路由。
- 使用MPLS标签隧道转发。
综合来说,如果是AS内部有多出口可以建立IBGP全互联来实现。
总结:BGP路由只通告有效最优路由给邻居。EBGP邻居会发送路由给所有邻居,因为可能产生环路而不会再发送给IBGP邻居,如果AS内部有多出口这种可以建立IBGP全互联。