BGP是路径矢量协议,为每一个目的地构造了一个基于自治系统的概要图。NLRI=Network Layer Reachability Information,网络层可达性信息,BGP是通过AS_PATH属性检测环路:如果AS_PATH中出现了自己的AS号,那么这个前缀将被拒绝。准确的说,这是针对eBGP。因为iBGP是不检查AS_PATH的!而且iBGP不会更改AS_PATH属性。
那么iBGP是怎么防止环路的?通过iBGP宣告者不允许把一个iBGP对等体学到的前缀传给另一个iBGP对等体。可是,由于这个原因,需要对所有iBGP对等体做全连接(fully meshed)才能保证前缀广播到所有iBGP对等体。
iBGP vs eBGP:
1. iBGP通告local-prefence;eBGP不能;
2. iBGP不修改下一跳和AS_PATH,而eBGP可以;
3. iBGP有前缀同步要求(前缀需要在IGP存在才被广播,而且如果IGP是OSPF的话,还需要路由器ID吻合;eBGP没有前缀同步要求;如果此AS不是穿越AS,或是穿越AS但穿越路径上都运行了BGP,前缀同步可以关掉;
4. iBGP路由默认情况下不会重分布到IGP。(可以通过bgp redistribute-internal修改)。eBGP没有这个限制。
Cisco路径决策
共有有13步,其中第10条是按照接收的先后顺序,一般情况下比较到第10条就结束了。如果在下列情况下,第10条(先后顺序)将被忽略而继续比较:
1. bgp bestpath compare-routerid;
2. 多条路径都是有相同的路由器ID,即是从同一邻居过来的。(这种情况比较少见,因为BGP通常只宣告***的一条路径)。
第11条是比较路由器ID,如果有RR属性,就比较originatior_ID;
第12条是针对RR的环境,按照cluster_list长度比较;
第13条优选邻居地址比较低的路径。
BGP只读模式(read-only)和读写模式
BGP的路径选择过程在没有接收到所有路径信息时候就已经开始了,这样导致重复发送某些前缀的***路径。
在只读模式下,BGP会在接收到全部路径信息,路径选择出***路径后才通告前缀。从会话建立的时间算起,只读模式的上限是2分钟。可以通过bgp update-delay来限制。BGP进程在收到BGP keepalive消息时就自动脱落只读模式。
BGP NSF(不中断转发)、GR(graceful restart,优雅重启)
在BGP路由器重新启动、RP的切换过程中,数据层面能够继续转发数据。重启时,不发BGP notification;重启后,建立新的TCP会话, 更新RIB和FIB。这通过BGP两个补充去完成:
1.RIB结束标志(end-of-RIB marker):
它是一种BGP update消息,不含可达到NLRI,或是withdrawal NLRI是空的。表示路由更新已经结束,它允许BGP对等体在收到它之前保持只读模式。虽然这个可以通过keepalive消息来完成,但并不是所有厂商都遵循。
2.GR能力(capability):
它表明对等体使用RIB结束标志。重启路由器为GR restarter;其对等体为GR helper。
当GR restarter重启时,FIB被标志为“过时”(stale)。GR restarter会与GR helper重新建立BGP会话,接收并处理对等体发过来的BGP路由更新,可是它会延迟路由选择过程,等到收到所有对等体的RIB结束标志。路由选择完成后,更新转发状态,删除“过时”标记,宣告adj-rib-out,和RIB结束标志。
当GR helper收到GR restarter的BGP会话的TCP reset后,保留并“过时”从该对等体收到的路由信息,也不会发送BGP notification消息。BGP会话重建后,发送路由更新和RIB结束标志。然后收到对方路由更新和RIB结束标志,此时删除FIB“过时”标记。如果在restarter timer内无法重建BGP会话,删除带有“过时”的路由。重启时间(restart timer)应该小于保持时间(hold timer)。
路由抖动衰减(route dampening)
重用阀值(reuse limit,750) < 抑制阀值(suppress limit,2000) < ***抑制阀值(max suppress limit)
- bgp dampening <half-life> <reuse-limit> <suppress-limit> <max-suppress-time>
- max-suppress-limit = reuse-limit x 2(max-suppress-time/half-time)
计算出来的***抑制阀值必须大于抑制阀值,否则惩罚是无效的。
当所有RR客户属于同一个对等体组(peer-group),RR会把一客户发送的前缀反射给所有的客户,包括发起前缀的客户。
团体列表的匹配
- ip community-list 1 permit 100:1 100:2
- ip community-list 2 permit 100:1
- ip community-list 2 permit 100:2
列表1是逻辑与的关系;而列表2是逻辑或的关系。
而在路由映射match命令:
- match community 10 11
- match community 10
- match community 11
第1匹配是逻辑或的关系;第2匹配是逻辑与的关系。
BGP的相关概念就为大家介绍完了,希望大家已经掌握。
【编辑推荐】