7.1 BGP的基本概念 

AS:自治系统,指由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合。 

IGP和EGP:IGP(international Gateway Protocol,内部网关协议),如RIP、OSPF、ISIS,主要实现AS内部的互通;EGP(Exterior Gateway Protocol,外部网关路由协议),如BGP,主要实现AS之间的互通。 

BGP:(Border Gateway Protocol,边界网关路由协议),属于EGP,支持VLSM(可变长子网掩码)、CIDR(无类域间路由),支持自动路由汇总、手工路由汇总。 

BGP使用目的TCP端口179,使得报文传输更加的可靠有序。BGP激活后,两台路由器会建立TCP连接,建立BGP连接,然后会互相同步对方的路由表,同步完成后两路由器只进行增量更新和触发更新。对于两台BGP路由器来说,周期更新的更新量过大,这样会节省带宽损耗和节省设备资源。 

BGP有多种路径属性,路径属性是BGP路由优选的依据,另外BGP还有很多策略工具来干预路由选路。BGP经历了很多个版本,本章所讲述的也是在IPv4中应用最广泛的BGPv4版本。。 

7.1.1 BGP对等体关系类型 

BGP对等体也就是建立了BGP邻居的两个路由器,BGP通过TCP179端口建立邻居关系,所以即使两台路由器不直连,只要具有IP连通性,都可以建立BGP对等体关系。 

BGP对等关系共有两种:EBGP和IBGP。 

1、EBGP对等关系(External BGP Peer) 

两个AS的路由器建立的BGP对等关系叫做EBGP对等关系,一般情况下EBGP对等体之间都是直连的,所以EBGP对等体之间发送报文的TTL值也是1,但是这个TTL值也可以被修改。 

每条BGP路由在传递时都会携带一个非常重要的路由属性AS_Path,这个属性记录了这条BGP路由所经过的所有AS的AS号,这个属性可以当作选路依据,也可以避免环路出现。(可当作选路依据是因为可以通过属性中的AS号数量来衡量路径优略,可以避免环路是因为当路由器收到来自EBGP对等体路由器的BGP路由中,如果包含自己的AS号,路由器会忽略这条路由以避免产生环路。) 

2、IBGP对等关系(Internal BGP Peer) 

同一AS内两个路由器建立的BGP对等关系叫做IBGP对等关系。IBGP对等体之间往往不是直连的,不同的BGP对等体之间对路由的处理是不一样的,例如IBGP对等体之间传输路由的AS_Path属性不变,而如果是EBGP对等体,要在原有的基础上加上自己的AS号。 

7.1.2 BGP水平分割规则 

准确的说应该是IBGP水平分割规则,BGP水平分割规则就是在一个AS中,IBGP路由器通过其他IBGP对等体学到的路由不能通告给其他的IBGP对等体。

如下图所示,在一个AS内有多个BGP路由器时,R1将将路由通告给R2,R2通告给R3,如果没有水平分割规则,R3将路由再通告给R1就有可能产生环路。

但是在如图7-5所示的情况下(四个IBGP路由器不是直连状态,连线表示IBGP路由器之间的对等体关系并非直连),因为水平分割机制的存在,导致R5无法通过R4学习到10.1.1.0/24这条路由。 

bgp中的peer是什么意思 bgp是啥_bgp中的peer是什么意思

  

7.1.3 路由黑洞问题及BGP同步规则 

如图7-7所示,当R3学习到了来自EBGP对等体R1的1.0.0.0/8路由,将Next_Hop设置为自己的地址后将这条路由通告给了IBGP对等体R7,R7学习到这条路由后又将这条路由通告给了EBGP对等体R2,这样R2也学习到了这条去往1.0.0.0/8的路由。现在R2收到一个要去往1.0.0.0/8的数据包,于是就将这个数据包交给了R7,R7查路由表发现去往此网段的下一跳为R3,通过IGP知道了去往R3要通过R4或R6,于是R7就将一个目的网段为1.0.0.0/8的数据包给了R4或R6,这时候R4和R6蒙B了,因为它们俩并不知道去1.0.0.0/8怎么走,只能将数据包丢弃,这就形成了路由黑洞。 

bgp中的peer是什么意思 bgp是啥_路由协议_02

路由黑洞的解决方案很多,其中一个就是激活BGP同步。BGP同步规则即当一台路由器收到了来自IBGP对等体的BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或将和条路由通告给自己的EBGP对等体。除非本台路由器通过IGP协议知道了去往对应的IBGP对等体怎么走 或 有去往对方路由器的静态路由。 

如果R7激活了BGP同步,那么当他收到来自R3的IBGP路由后,自己不会使用也不会通告给R2,就不会产生路由黑洞。当然如果R7通过IGP学到了去往1.0.0.0/8的路由或本地有去往1.0.0.0/8的静态路由,R7就会将这条 通过R2学习到的IBGP路由 通告给R2。 

解决图7-7中路由黑洞的方案还很多: 

1、可以让AS 34567中所有的路由器都运行BGP,并且实现IBGP对等体关系完全互联,但是这样会给网络设备和链路造成很大负担。 

2、可以让R3将1.0.0.0/8这条路由引入AS 34567的OSPF协议中,但是直接将将BGP路由引入IGP中,会带来很大的影响,也不是所有的场景都适用。 

3、可以使用MPLS(多协议标签交换),在IP报文前插入一个标签头部,这样沿途的设备会根据这个标签头部转发数据包,而不是基于IP地址转发。 

解决路由黑洞的方案目前有很多,而且都比较成熟,所以在华为数通产品上,BGP同步规则是默认关闭的。