一、BGP简介

BGP(Border Gateway Protocol,边界网关协议)是一种实现AS(Autonomous System,自治系统)之间的路由可达,并选择最佳路由的距离矢量路由协议。当前BGP使用的版本是BGP-4和MP-BGP。

  • BGP采用认证和GTSM的方式,保证了网络的安全性。
  • BGP提供了丰富的路由策略,能够灵活的进行路由选路。
  • BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
  • BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGP Tracking和BGP GR,提高了网络的可靠性。

二、BGP工作原理

1、报文类型

  • Open报文
    用于建立BGP对等体连接。
  • Update报文
    用于在对等体之间交换路由信息。
  • Notification报文
    用于中断BGP连接。
  • Keepalive报文
    用于保持BGP连接。
  • Route-refresh报文
    用于在改变路由策略后请求对等体重新发送路由信息。

2、BGP邻居建立

1)BGP初始状态是Idle状态,在Start事件触发下后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
2)在Connect状态下,等待TCP完成连接。如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。如果TCP连接失败,那么BGP转至Active状态。
3)在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
4)在OpenConfirm状态下,如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。

3、BGP路径属性

1)Origin属性
Origin属性用来定义路径信息的来源,有3种类型:

  • IGP
    通过network命令注入到BGP路由表的路由
  • EGP
    通过EGP得到的路由信息
  • Incomplete
    通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由

2)AS_Path属性
AS_Path属性记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,如果AS_Path列表中有本AS号,则不接收该路由

3)Next_Hop属性
Next_Hop属性记录了路由的下一跳信息。

  • BGP Speaker在向EBGP对等体发布某条路由时,下一跳属性为本地与对端建立BGP邻居关系的接口地址。
  • BGP Speaker将本地始发路由发布给IBGP对等体时,下一跳属性为本地与对端建立BGP邻居关系的接口地址。
  • BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,不改变下一跳属性。

4)Local_Pref属性
Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。

5)MED属性
MED属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。MED属性仅在相邻两个AS之间传递。

6)团体属性
团体属性用于标识具有相同特征的BGP路由,团体属性分为自定义团体属性和公认团体属性

7)Cluster_List属性
路由反射器和它的客户机组成一个集群,使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

8)Originator_ID属性
Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

4、BGP选路

1)优选协议首选值(PrefVal)最高的路由。
协议首选值(PrefVal)是华为设备的私有有属性,仅在本地有效。
2)优选本地优先级(Local_Pref)最高的路由
3)依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。
4)优选AS路径(AS_Path)最短的路由。
5)依次优选Origin类型为IGP、EGP、Incomplete的路由。
6)对于来自同一AS的路由,优选MED值最低的路由。
7)优选EBGP路由
8)优选到BGP下一跳IGP度量值(metric)最小的路由。
9)优选Cluster_List最短的路由。
10)优选Router ID最小的设备发布的路由。
11)优选从具有最小IP Address的对等体学来的路由。

5、路由反射器

路由反射器RR允许把从IBGP对等体学到的路由反射到其他IBGP对等体
基本概念:

  • 客户机
    同路由反射器形成反射邻居关系的IBGP设备
  • 非客户机
    既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系

路由反射器发布路由规则:

  • 从非客户机学到的路由,发布给所有客户机
  • 从客户机学到的路由,发布给所有非客户机和客户机
  • 从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

基本配置
// 配置peer-group作为RR 客户端
peer peer-group reflect-client

6、BGP联盟

联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。原AS号将作为每个路由器的联盟ID同时保留原IBGP属性,如Local Preference属性、MED属性和NEXT_HOP属性
基本配置:
// 配置BGP联盟ID
confederation id as-number
// 配置BGP联盟内部子AS
confederation peer-as as-number

7、路由聚合

BGP支持手动聚合和自动聚合两种方式,自动聚合对引入的BGP路由进行聚合操作,手动聚合对BGP本地路由表中的路由条目进行聚合操作。
基本配置:

  • 自动聚合
    summary automatic
  • 手动聚合
    aggregate ip-address netmask [ detail-suppressed ]
    其中detail-suppressed表示是否发布明细路由