分类:
2008-09-11 14:42:02
这个问题是BGP学习的入门级问题
对于BGP同步,下列几个问题较为常见:
1、BGP同步的作用。
2、BGP同步默认为开启,可否关闭它
如果可以关闭,有没有特殊的要求
3、BGP关同步的特殊要求有哪些?
目前总结有如下几点:
3、1 AS内器均运行BGP
3、2 AS内部分路由器运行IGP,部分运行BGP,而且为全网互连
3、3 非transit AS
除此之外,有没有其他特殊情况下可以关同步?
BGP的同步规则
当salt lake从AS500学习到一条到192.168.1.0/24的路由,然后通过IBGP连接把它公布给PROVO,PROVO通过NET-HOP- SELF策略将NEXT-HOP属性改成自己的路由器ID,然后将该路由公布给AS 700.于是,AS700中的路由器开始转发192.168.1.0/24的路由给PROVO.PROVO执行一个到192.168.1.0/24 的路由查找,并了解到是通过salt lake可以达到该网络。于是又查找salt lake的IP地址,通过查找了解到可以通过ogden到达。但是外部路由是通过IBGP由SALT LAKE和PROVO共享的。OSPF无法了解到外部路由。因为,当数据包被转发给OGDEN以后,路由器进行路由查找但是没有找到 192.168.1.0/24的路由。就会丢弃所有到往该地址的数据包,到网络192.168.1.0/24的数据流量就形成了黑洞。
回答一:
采用全网状IBGP连接有两个原因:
1.在AS内防止BGP路由环路
2.保证BGP路由上的所有路由器都知道如何将数据包转发到目的地。
同步的规则如下:
一条从IBGP邻居学习到的路由在进入IGP路由表或者公布给一个BGP对端之前,通过IGP必须知道该路由。
------- ------ | AS500 | | AS700| ------- ------ | | | | ----------------------------------- | IBGP | | Salt lake------------ Provo | | | | | | ospf | |OSPF | AS600 | | | | | Orem--------------- Ogden | | OSPF | |----------------------------------- |
当salt lake从AS500学习到一条到192.168.1.0/24的路由,然后通过IBGP连接把它公布给PROVO,PROVO通过NET-HOP-SELF策略将NEXT-HOP属性改成自己的路由器ID,然后将该路由公布给AS 700.于是,AS700中的路由器开始转发192.168.1.0/24的路由给PROVO.PROVO执行一个到192.168.1.0/24 的路由查找,并了解到是通过salt lake可以达到该网络。于是又查找salt lake的IP地址,通过查找了解到可以通过ogden到达。但是外部路由是通过IBGP由SALT LAKE和PROVO共享的。OSPF无法了解到外部路由。因为,当数据包被转 发给OGDEN以后,路由器进行路由查找但是没有找到192.168.1.0/24的路由。就会丢弃所有到往该地址的数据包,到网络192.168.1.0/24的数据流量就形成了黑洞。
如果IGP有到达192.168.1.0/24的路由。那么就可以正确的转发数据包了。
同步可以防止数据包在一个AS内因为IGP路由信息不完整而形成黑洞。
回答二:
BGP同步有一个两难处境的问题,如thinkpid图中所示,salt lake和PROVO是IBGP邻居,而中间还跨着两个仅运行IGP的ROUTER,于是:
1、若关闭同步,则PROVO可以把BGP表中的192.168.1.0/24路由放入主IP路由表,但中间的两台ROUTER会形成路由黑洞,因此证明同步的重要
2、若打开同步,则只有当在salt lake上将192.168.1.0/24从BGP表中注入到IGP中后,PROVO才可以把BGP表中的192.168.1.0/24路由放入主IP路由表,但是,只运行IGP的ROUTER将承受多余的路由,如果这种由BGP注入到IGP的路由多了后,IGP将不堪重负,因此证明还是关闭同步好
如此两难,实际的解决方法只能是:
1、IBGP邻居间绝对不能跨越只运行IGP的ROUTER
2、关闭所有IBGP邻居的同步