HCIP-15.2.3 BGP通告原则(下)
BGP通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居
BGP通告原则之三:通过IBGP获得的最优路由不会发布给其他的邻居
这样设计的目的是防止在AS内部形成路由环路。根据规定,BGP路由在同一个AS内进行传递时,AS_Path属性不会发生变化。如图所示,RTA将100.0.0.0/24的路由发布给RTB时,AS_Path属性不变,为空。如果RTB能将IBGP路由100.0.0.0/24发布给RTC,AS_Path依旧为空。则RTC也有可能将100.0.0.0/24的路由发布给RTA,因为AS_Path为空,RTA并不会拒收该IBGP路由,路由环路产生。因此,上述通告原则是为了防止在AS内部形成路由环路。
防止环路:
- 防止IBGP环路(AS内部环路):IBGP水平分割(如上,通告原则之三)
- 防止EBGP环路(不同AS之间环路):AS_Path属性
R3路由10.1.4.0/24可以通过EBGP传递给R2,R2通过IBGP传给R1,但R6无法通过R1获得,因为通告原则之三。
解决办法:全互联Full-mesh:R2和R6建立BGP邻居,如上去绿色虚线。
[R2]bgp 200
peer 10.2.6.6 as 200
peer 10.2.6.6 con loo 0
#
[R6]bgp 200
peer 10.2.2.2 as 200
peer 10.2.2.2 con loo 0
解决IBGP水平分割带来的路由不传递问题
-
在AS内部IBGP邻居建立全互联结构(Full-Mesh)
-
配置路由反射器RR
-
BGP联盟
通过EBGP邻居学到的BGP路由下一跳直接指向接口地址
BGP以AS为跳数(一个AS看成一个大的路由器)
BGP通告原则之四:BGP与IGP同步
-
RTA上存在一个100.0.0.0/24的用户网段,通过EBGP发布给RTB。RTB与RTD建立了IBGP邻居关系,RTD通过IBGP学习到该BGP路由,并将该路由发布给EBGP邻居RTE。
-
当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的通告原则:一条从IBGP邻居学来的路由在发布给一个BGP邻居之前,通过IGP必须知道该路由,即BGP与IGP同步
- 如图所示,RTD在收到RTB发来的IBGP路由之后,如果要发布给BGP邻居RTE,则在发布之前先检查IGP协议(即OSPF协议)能否学到该条路由。如果能,则将IBGP路由发布给RTE。
- 在华为路由器上,默认是将BGP与IGP的同步检查关闭的,原因是为了实现IBGP路由的正常通告。但关闭了BGP与IGP的同步检查后会出现“路由黑洞”的问题。因此有两种方案解决上述问题:
- 将BGP引入到IGP,从而保证IGP与BGP的同步,但是,因为Internet上的BGP路由数量十分庞大,一旦引入到IGP,会给IGP路由器带来巨大的处理和存储负担,如果路由器负担过重,则可能瘫痪。
- IBGP路由器必须是全互联,确保所有路由器都能学习到通告的路由,这样可以解决关闭同步后导致的“路由黑洞”问题。
BGP路由黑洞
可以学习到路由,但数据不可达
解决方案:
- 将BGP引入到IGP里边,以实现BGP和IGP同步
- 所有路由器形成IBGP全互联结构
- MPLS
peer ignore
配置peer ignore命令后,就意味着与对等体的会话终止,清除所有相关路由信息。
BGP会话已经建立成功后,再配置peer ignore命令,则该BGP会话中断,且以后再也无法建立连接,BGP对等体状态显示为Idle。
命令peer ignore和peer enable配合使用,意味着重新和对等体建立会话,相当于命令reset bgp。
# 禁止与对等体10.1.1.2建立会话。
<HUAWEI> system-view
[~HUAWEI] bgp 100
[*HUAWEI-bgp] peer 10.1.1.2 as-number 200
[*HUAWEI-bgp] peer 10.1.1.2 ignore
[*HUAWEI-bgp] undo peer 10.1.1.2 ignore
BGP通告原则之五:默认从EBGP邻居学到的BGP路由下一跳是EBGP对等体的接口IP地址,当该路由向AS内部传递时,路由传递给IBGP邻居时,下一跳(Next-hop不变),还是上一个AS的接口地址,此时有可能引发下一跳不可达
解决下一跳不可达:
-
将EBGP互联地址(Next-hop地址)宣告进IGP(注意配置静默接口,防止IGP路由传至其他AS)
-
使用next-hop-local
next-hop-local配置:
bgp 100 peer 10.1.4.4 next-hop-local #给邻居10.1.4.4发送bgp更新时,将next-hop改为自己的地址10.1.3.3