1,防环/黑洞/同步/全互连(为出现大于号,现在通常都是要下一跳可达+关同步)
a)EBGP邻居传来的路由可以通过AS_PATH防环,所以收到的不会有问题,因此直接是优化的(>),也就是直接装表、再传给EBGP邻居或IBGP邻居。
b)IBGP邻居传来的路由由于是在同一个AS,所以没法通过AS_PATH防环,于是BGP规定IBGP只能传一跳。
c)BGP还有2个问题。 问题一:BGP规定从EBGP学到的路由,传给IBGP邻居,不改变下一跳。这样通常对AS内部路由器来说,这个下一跳地址是不可达的。 问题二:由于水平分割,IBGP邻居只能传一跳,所以设想就是把2个IBGP建立在网络边缘。但是中间的路由器成了黑洞。(简而言之,即IBGP下一跳可达性问题,以及路由黑洞问题,只有解决这2个问题后IBGP传来的路由才是优化的)
d)典型的组网变成下图所示。假设图中A宣告一条路由dest,传给B,B直接是优化的,正常装表并传给E。问题一就是E收到这条dest路由时,下一跳是A的地址,这地址是AS外的地址通常是不可达的。问题二就是中间的C和D并不知道这条dest路由。(再强调下,EBGP传来的直接就是优化的,能够直接装表并往下传)
![](https://i-blog.csdnimg.cn/blog_migrate/b3386d44c9aefb5fe18c07075ec6ca8c.png)
e)这时路由器E怎么办呢?BGP规定只有解决了这2个问题,E收到B(IBGP邻居)传来的dest路由才是优化的(>),才能正常装表,并传给F。(否则不是坑了F么,不解决的话自己内部都还没法访问这条dest路由)。
f)问题一的解决方法:B对E说next-hop-self,把下一跳改为自己;或者是,E写一条关于下一跳地址的静态路由,使得下一跳可达。问题二的解决方法:将BGP路由重发布到IGP中,使得AS65102内所有的路由器都知道dest这条路由。这个重发布只能在B上做,因为B关于这条dest是优化的,E上的这条dest是非优化的。另外,针对问题二,BGP还定了一个同步规则,即如果打开了同步,则当BGP路由器从IBGP邻居收到路由时,必须同时从IGP路由表中也能学习到,才能最优(出>号),才能继续传给EBGP邻居,其实就是防止路由黑洞。注意BGP同步仅针对从IBGP邻居收到的路由,而从EBGP邻居收到的路由可以直接最优装表。
f)问题一的解决方法:B对E说next-hop-self,把下一跳改为自己;或者是,E写一条关于下一跳地址的静态路由,使得下一跳可达。问题二的解决方法:将BGP路由重发布到IGP中,使得AS65102内所有的路由器都知道dest这条路由。这个重发布只能在B上做,因为B关于这条dest是优化的,E上的这条dest是非优化的。另外,针对问题二,BGP还定了一个同步规则,即如果打开了同步,则当BGP路由器从IBGP邻居收到路由时,必须同时从IGP路由表中也能学习到,才能最优(出>号),才能继续传给EBGP邻居,其实就是防止路由黑洞。注意BGP同步仅针对从IBGP邻居收到的路由,而从EBGP邻居收到的路由可以直接最优装表。
g)但启用同步机制,执行重发布后让IGP内部的路由器不堪重负,因为可能C和D后面还接着很多路由器,但实际上假如这条dest路由只是想借道65102去往65103,65102内部的很多路由器无需知道这条路由。于是问题二可以不去解决,直接在E上把同步关掉即可,这样,E上的这条dest路由也能有>号,并且正常装表并传给F。(别忘了关同步只是解决问题二,要想出现大于号,问题一还是要照样解决的)
h)下一跳可达,关掉同步后(即不用IGP路由和BGP路由同步),路由层可以正常在传递了,但有什么问题呢?在传递数据时,C和D又变为黑洞了,本来BGP同步存在的意义就是为了防止数据层面出现黑洞的,把它强行关闭自然要承担带来的问题。怎么解决呢?需要依靠所有路由器运行IBGP并fullmesh或者MPLS。
h)下一跳可达,关掉同步后(即不用IGP路由和BGP路由同步),路由层可以正常在传递了,但有什么问题呢?在传递数据时,C和D又变为黑洞了,本来BGP同步存在的意义就是为了防止数据层面出现黑洞的,把它强行关闭自然要承担带来的问题。怎么解决呢?需要依靠所有路由器运行IBGP并fullmesh或者MPLS。
i)总结IBGP路由层面打通方法:下一跳可达+开同步+BGP重发布进IGP;下一跳
可达 + 关同步。(即IBGP邻居传来的路由优化的条件)
j)总结IBGP数据层面打通方法:下一跳可达+开同步+BGP重发布进IGP;下一跳可达 + 关同步 + All run and fullmesh/MPLS。
详见2-5。
j)总结IBGP数据层面打通方法:下一跳可达+开同步+BGP重发布进IGP;下一跳可达 + 关同步 + All run and fullmesh/MPLS。
详见2-5。