文章目录
BGP协议
边界网关协议( Border Gateway Protocol , BGP )是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议,工作在传输层
BGP特点
- BGP通常被称为路径矢量路由协议( Path-Vector Routing Protocol), 它能够承载大批量的路由信息,能够支撑大规模网络
- BGP具有丰富的路径属性和强大的路由策略,能够灵活的进行路由选路,并能指导邻居按策略发布路由
- BGP使用TCP作为其传输层协议(端口号为179),路由器之间的BGP会话基于TCP连接而建立
- 运行BGP的路由器被称为BGP发言者( BGP Speaker ) , 或BGP路由器
- 两个建立BGP会话的路由器互为对等体( Peer ),BGP对等体之间交换BGP路由表
- BGP路由器只发送增量的BGP路由更新,或进行触发更新(不会周期性更新)
BGP的AS-Path路径属性
每条BGP路由都携带着多种路径属性( Path attribute ) ,在各种路径属性中, AS_Path属性是非常关键的一个。AS_ Path属性记录了BGP路由传递过程中所经过的AS号, 实际上它是一一个AS号的列表。BGP路由器不接受AS_ Path中包含其自身AS号的路由更新。AS_ Path属性值的长短( AS号的个数)会作为一个比较的依据,影响BGP路由选择的决策
BGP五种报文类型
- Open报文:
BGP对等体之间需先建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文,来协商BGP邻居的各项参数,建立邻居关系 - Update报文:
连接建立后,有路由需要发送或路由变化时,发送Update报文通告对端路由信息 - Notification报文:
当BGP运行时发现错误信息时,要发送Notification报文通告对端,并且中止对等体关系 - Keepalive报文:
定时发送Keepalive报文(每60s一次)以维持对等体关系,Keepalive报文有180秒的老化时间 - Route-refresh报文:
当路由更新时,触发请求对等体重新通告路由
BGP状态机
BGP两种对等体类型
- IBGP:
IBGP ( Internal BGP ) : 位于相同AS自治系统的BGP路由器之间的BGP邻接关系。两台路由器之间要建立IBGP对等体关系,必须满足两个条件:两个路由器所属AS需相同(也即AS号相同)。在配置BGP时, Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。 - EBGP:
IBGP ( Internal BGP ) : 位于不同AS自治系统的BGP路由器之间的BGP邻接关系。两台路由器之间要建立IBGP对等体关系,必须满足两个条件:两个路由器所属AS需相同(也即AS号相同)。在配置BGP时, Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。
IBGP水平分割
BGP路由在AS之间的防环依赖于AS_ Path路径属性,当路由器收到BGP路由后,发现该路由所携带的AS_ Path属性中出现了其自己所处的AS号,则路由器认为出现了路由环路,它将忽略该条路由。
AS_ Path属性仅在路由离开AS时才会被更改,而BGP路由在AS内部传递时,路由的AS_ Path属性值不会发生改变,如此一来, IBGP路由的防环就无法依赖AS_ Path 了。 为了防止BGP路由在AS内部传递时发生环路, BGP要求:“路由器不能将自己从IBGP对等体学习到的路由再传递给其他IBGP对等体”, 这就是IBGP水平分割规则。,由于IBGP水平分割原则的存在, BGP要求AS内须保证IBGP对等体关系的全互联,因为只有这样,才能够确保每一个路由器都能学习到路由。
BGP路由通告规则
当存在多条路径时,路由器只选取最优( Best )的BGP路由来使用(没有激活负载均衡的情况下)。BGP只把自己使用的路由,也就是自己认为最优的路由传递给对等体。路由器从EBGP对等体获得的路由会传递给它所有的BGP对等体(包括EBGP和IBGP对等体)。
路由器从IBGP对等体获得的路由不会传递给它的IBGP对等体(存在反射器RR的情况除外)。路由器从IBGP对等体获得的路由是否通告给它的EBGP对等体要视IGP和BGP同步的情况来决定。
BGP引入IGP路由
BGP本身不发现路由,因此需要将其他路由引入到BGP路由表。
BGP引入路由时支持Implort和Network两种方式:Import方式是按协议类型,将RIP、 OSPF、ISIS等协议的路由引入到BGP路由表中。Import方式还可以引入静态路由和直连路由。
Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中。BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置。
BGP配置,EBGP多跳
通常EBGP的对等体关系基于直连接口建立。如果EBGP的对等体关系并非基于直连接口建立,而是基于Loopback接口,又或者EBGP对等体不是直连的(中间隔着其他设备) , 那么要注意EBGP多跳的问题:在EBGP之间,所发送的BGP报文默认的TL为1 ,因此如果EBGP对等体之间存在多跳,则需修改最大跳数限制。
路径属性分类
BGP Update报文
- Preferred-Value:
华为私有的路径属性,相当于路由的权重值,取值范围: 0~65535 ;该值越大,则路由越优先。Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传播给任何BGP对等体。路由器本地始发的BGP路由默认的Preferred-Value为0 ,从其他BGP对等体学习到的路由默认Preferred-Value也为0。 - Local-Preference:
也即本地优先级属性,是公认自决属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径。Local_ Preference属性值越大则BGP路由越优。缺省的Local_ Preference值为100.该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体。 - AS-Path:
该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表;作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一;路由在被通告给EBCP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等体时,AS-path不会发生改变。 - Origin:
该属性为公认必遵属性,它标识了BGP路由的起源。如下表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin。
当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下, BGP将按如Origin的下顺序优选路由: IGP > EGP > Incomplete.(BGP路由表中的“i”表示为“network”注入的网段,“?”表示为“import”注入的网段) - MED:
MED ( Multi Exit Discriminator )是可选非传递属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时, AS可以使用MED动态地影响其他AS选择进入的路径。MED属性值越小则BGP路由越优。
MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由传递给其EBGP对等体时,缺省不会携带MED属性。
BGP路由优选规则
1.优选具有最大Preferred-Value的路由
2.优选具有最大Local_ Preference的路由
3.优选起源于本地的路由
4.优选AS_ Path最短的路由
5. Origin ( IGP> EGP > Incomplete )
6.优选MED最小的路由
7.优选EBGP对等体所通告的路由
8.优选到Next_Hop的IGP度量值最小的路由
9. BGP路由负载分担
10.优选Cluster _List 最短的路由
11.优选Router-ID最小的BGP对等体发来的路由
12.优选Peer-IP地址最小的对等体发来的路由