BGP与IGP交互BGP与IGP在设备中使用不同的路由表,为了实现不同AS间相互通讯,BGP需要与IGP进行交互,即BGP路由表和IGP路由表相互引入。
BGP引入IGP路由BGP协议本身不发现路由,因此需要将其他路由引入到BGP路由表,实现AS间的路由互通。当一个AS需要将路由发布给其他AS时,AS边缘路由器会在BGP路由表中引入IGP的路由。为了更好的规划网络,BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置MED值指导EBGP对等体判断流量进入AS时选路。
BGP引入路由时支持Import和Network两种方式:
IGP引入BGP路由当一个AS需要引入其他AS的路由时,AS边缘路由器会在IGP路由表中引入BGP的路由。为了避免大量BGP路由对AS内设备造成影响,当IGP引入BGP路由时,可以使用路由策略,进行路由过滤和路由属性设置。
BGP和IGP互相引入产生的问题及解决方法当需要在AS之间传递路由的时候,经常会通过BGP和IGP互相引入来实现,但是这种实现方式存在如下问题:- 如果BGP路由数量较大,那么AS内部的低端设备可能不能装载如此大规模的路由,造成路由丢失。
- 如果某条路由不稳定(例如端口频繁UP/DOWN),可能会导致整个AS的路由震荡,影响网络的稳定性。
- BGP是靠路由属性来防止路由环路的,例如AS_PATH属性,当所有BGP路由重分布到IGP中后,路由属性就会丢失,这就破坏了BGP的路由防环机制,产生了路由环路的隐患。
在较大规模的IP网络中,一般情况下BGP路由的规模会远远大于IGP路由,因此当涉及到将BGP路由引入IGP的时候,请务必慎重操作,防止大量BGP路由引入IGP,影响到IGP路由的运行。可以考虑通过缺省路由、路由汇总等手段减少路由的数量。
图9-3 使用EBGP+IBGP实现AS之间的路由传递
如图9-3所示,这是一个常见的IP骨干网的拓扑结构,骨干层和汇聚层分别是两个自治系统,AS100有两个出口设备SwitchC和SwitchD,两个AS之间需要进行路由互通。用户的需求如下:- 两个自治系统之间的地位是非对称的,用户不希望汇聚层的设备了解骨干层的路由细节。
- 汇聚层的设备性能较低,因此,用户不希望汇聚层的设备接收来自骨干层的大量的BGP路由。
- 骨干层设备的性能较高,因此,用户希望骨干层的设备要了解汇聚层的路由细节。
图9-3所示的场景中,如果在汇聚层的出口设备SwitchC和SwitchD上将BGP路由引入OSPF,那么会有大量的BGP路由从骨干层传递到汇聚层。这样一方面会导致汇聚层AS接收到大量的BGP路由,另一方面也会导致汇聚层设备了解到了骨干层的路由细节,因此不能满足用户的需求。要满足用户的需求,建议通过如下方案实现:- 骨干层的两台设备SwitchE和SwitchF分别通过BGP下发缺省路由给汇聚层的出口设备SwitchC和SwitchD,这样能保证汇聚层的设备不需要接收来自骨干层的大量BGP路由,同时汇聚层也不会了解到骨干层的路由细节。
- 在汇聚层的出口设备SwitchC和SwitchD上,仅将OSPF路由引入BGP,而BGP路由不引入OSPF,这样能保证骨干层的设备了解汇聚层的路由细节。
- 两个AS的边缘设备之间分别建立IBGP邻居关系,即SwitchC和SwitchD,SwitchE和SwitchF之间建立IBGP邻居关系,这样能保证AS的双出口的路由备份,实现可靠性。