上一篇文章"BGP原理及通告原则"介绍了BGP的5条原则:
BGP通告原则:
① 仅将自己最优的路由发布给邻居(>优化)
② 通过EBGP邻居获得的最优路由可以发布给所有的BGP邻居
③ 通过IBGP邻居获得的路由不会发布给IBGP邻居(防止IBGP路由环路)
④ BGP和IGP同步(华为默认关闭该特性)
⑤ 默认从EBGP邻居学到的BGP路由的下一跳是EBGP对等体的IP地址,当该路由向AS内部传递至时,路由传递给IBGP邻居时下一跳地址不变(还是上一个AS的接口地址)
华为对第④条默认关闭,这里跟大家介绍一下其中的原因:
1.RTA上存在一个100.0.0.0/24的用户网段,通过EBGP发布给RTB, RTB与RTD建立了IBGP邻居关系, RTD通过IBGP学习到该BGP路由,并将该路由发布给EBGP邻居RTE.
2.当RTE访问100.0.0.0/24的路由时,查找路由表,发现到达100. 0.0.0/24路由的下一跳是RTD, RTE查找出接口后,将数据包发送给RTD; RTD收到数据包后,查找路由表,发现到达100.0.0.0/24路由的下一跳是RTB,出接口是RTD上与RTC相连的接口,于是将数据包发给RTC, RTC查找路由表,发现没有到达100.0.0.0/24的路由,于是将数据丢弃,形成"路由黑洞"
这里介绍简单介绍一下路由黑洞(BGP的路由黑洞:可以学到路由,但是数据不可达.)
3.根据BGP的通告原则:一条从IBGP邻居学来的路由在发布给一个BGP邻居之前,通过IGP必须知道该路由,即BGP与IGP同步。如图所示, RTD在收到RTB发来的IBGP路由之后,如果要发布给BGP邻居RTE,则在发布之前先检查IGP协议(即OSPF协议)能否学到