一. BGP协议概述

        BGP用于在不同的自治系统(AS)之间交换路由信息。BGP的一跳是一个自治系统,当BGP路由在一个AS内部传递时,下一跳不变;只有传到另一个AS时,下一跳才变更为上一个AS的出口地址。BGP不进行路由的计算,只进行路由的传递。自治系统编号公有AS,1-64511,私有AS,64512-65535。

BGP相关术语
bgp发言者:运行bgp协议的路由器。
bgp对等体:相互之间存在tcp连接,相互交换路由信息的bgp发言者之间互称为bgp对等体。
ibgp对等体:同一个as内部的bgp对等体
ebgp对等体:跨as之间的bgp对等体
BGP邻居可以跨网段、非直连建立邻居。
每个as系统的边缘路由器必须配置bgp,其他路由器可以不用配置bgp。

路由黑洞
产生原因:由于ibgp邻居之间没有运行bgp协议的路由器无法获得bgp的路由,而导致数据包进入该路由器后被丢弃。
解决方法:
1.在黑洞路由器上配置目的网段的静态路由。
2.ibgp水平分割。从ibgp学习到的路由不会传递给其他ibgp邻居。(防环机制)
3.ibgp全连接。(bgp的邻居需要手动配置,在设备多的时候工作量巨大)
4.bgp路由反射器。
5.bgp联盟

BGP的报文类型及作用:
1.open:用于建立bgp对等体邻居关系。
2.keepalive:周期性对对等体发送此消息,用于保持连接的有效性。
3.update:用于bgp对等体之间在传递路由更新、删减、增加等信息时。
4.notification:当bgp检测到错误时,就会向对等体发送此消息,随后bgp连接会立即被关闭。
5.route-refresh:要求对等体重新发送指定地址族的路由信息。

BGP状态机制
Idel---connect---active---opensent---Openconfirm---Establieshed

bgp状态机
(1)idle:空闲状态,在此状态会等待30s
(2)connect:进入被动握手状态,等待邻居握手
(3)active:进入活跃状态,主动发起握手。建立双方握手后进入open-sent。
(4)open-sent:发出open报文,并且等待接收对方的open报文。收到对方的open报文后,便进入open-confirm状态。
(5)open-confirm:向对方发出一个keepalive报文,并且等待对方的keepalive报文。双方都收到keepalive报文后进入下一步已连接状态。
(6)established:已连接状态。继续周期性发送报文。

选路原则:
1.首先丢弃下一跳不可达的路由
2.优选Preferred_value值最大的路由,默认值100.
3.优选本地优先级(Local_Preference)值最高的路由,默认路由本地优先级值为100
4.依次优选Network命令生成的路由,import-route命令引入的路由,聚合路由
5.优选AS(AS_PATH)最短的路由
6.依次优选Origin属性为IGP,EGP,Incomplete的路由
7.优选MED值最低的路由
8.依次选择从EBGP,联盟EBGP,联盟IBGP,IBGP邻居学到的路由
9.优选下一跳度量值(metric)最低的路由
10.优选Cluster_list长度最短的路由
11.优选Originator_id最小的路由
12.优选Router ID最小的路由器发布的路由
13.优选IP地址最小的对等体发布的路由
BGP有哪些属性:

公认必尊、公认可选、可选传递、可选非传递
1.公认必尊属性:
(1)AS_path:AS路径属性,记录路由传递过程中经过的AS编号
(2)Next-hop:下一跳属性
(3)Origin:源属性,标识该路由来源
2.公认可选传递属性:
(1)Local-preference:本地优先级,默认100
3.可选非传递属性:
(1)Preferred-value:首选项,默认0

(2)MED:多出口鉴别器,默认0

影响BGP邻居建立的因素:
1.停留在Idel状态:
(1)route-id冲突,或未配置route-id(在全网ipv6的场景下)
(2)两端地址族不匹配
(3)双方为回环口建立邻居关系,双方都配置了默认路由
(4)BGP不会用默认路由主动发起(BGP TCP session,但是可以被动接受session请求)
(5)peer ignore命令禁止与对等体(组)建立会话
2.停留在Conect状态:
(1)认证不通过
(2)底层路由不可达
(3)非直连的EBGPTTL值消耗殆尽
(4)存在过滤tcp 179端口的策略
3.停留在Active状态:
(1)AS号指错
(2)使用回环口建立没指定更新源
4.停留在Opensent状态:
(1)已经向邻居发送完open报文,可是一直没有收到邻居发送的open报文

BGP路由传递原则:
(1)当存在多条到达同一目的地址的有效路由时,BGP只传递最优的路由。
(2)IBGP对等体学来的路由不能传给IBGP对等体(水平分割),只能传递给EBGP邻居。
(3)EBGP对等体学来的路由可以传递给IBGP,也可以传递给EBGP。
(4)路由更新时,BGP设备只发送更新的BGP路由。
(5)所有对等体发送的路由,BGP设备都会接收。(没懂)
(6)从IBGP邻居学到的路由传递给EBGP邻居的时候必须也在IGP中学到这条路由(BGP同步)。(没懂)

BGP防环机制(4种):
(1)AS_path防环:解决AS之间成环问题;
(2)水平分割:解决一个AS内部邻居之间成环问题;
(3)Cluster_list:一个反射集群存在多个反射器时;
(4)Originator_id:存在多个反射集群时。

二、BGP路由控制
(1)as_path(重点)
定义:as路径属性,记录路由传递过程中经过的as编号。
作用:1.防环;2.路由优选,as_path短的优先。
注意:增加as_path长度来控制选路时,建议增加已经真是经过的as编号,防止as防环机制导致路由无法学习。
(2)next-hop(了解)
定义:下一跳属性
注意:1.路由发布给EBGP邻居,下一跳变更为本路由器出口IP。2.路由发布给IBGP邻居,下一跳不变,仍保持为上一个AS出口的IP地址。3.对IBGP邻居发布的路由通过命令更改下一跳为本机。
(3)origin(了解)
定义:源属性
属性值:1.IGP,来源于network宣告、聚合的路由,显示为i。2.BGP,来源于引入的BGP路由,显示为e。3.incomplete,来源于引入IGP协议或静态路由,显示为?。
(4)local_pref(重点)
定义:本地优先级
特点:1.默认值100,大的优先。2.只对IBGP邻居传递,不对EBGP邻居传递。
(5)MED(知识点比较多,不太懂)(重点)
定义:多出口鉴别器
属性值:1.相当于IGP路由协议
注意:MED属性会被传递至IBGP邻居和EBGP邻居,但不会传递至下下个AS。
(6)preferred-value(重点)
定义:首选项
属性值:默认为0,如果是本地始发路由,默认值是32768,大的优先。
注意:1.H3C和华为的私有属性,只对本地有效。2.该属性不会传递给任何BGP邻居。

属性控制的选择建议
1.如果希望影响下游所有路由器的路由选择,建议使用as-path。
2.如果希望只影响本as内部路由器的路由选择,建议使用local-preference。
3.如果希望只影响下游某一个as的路由器的路由选择,建议使用MED。
4.如果希望只影响某一台路由器的路由选择,建议使用perferred-value。

属性控制方法:路由策略
使用位置:1.对邻居传出或传入的方向调用。2.宣告网段时使用。3.引入路由时调用。

AS路径列表
定义:针对路由经过的AS路径设置的匹配条件。
^$:匹配本AS始发的路由
.*:匹配所有路由
^100:匹配最后经过的AS是100开头的路由
^100$:精确匹配只经过AS100的路由
100$:匹配从AS100始发的路由

bgp路由表参数:
>表示该路由被优选;>后i表示此条路由在ibgp中学到,e表示在ebgp学到,空白表示该路由是自己发出的。

三、BGP增强配置
大规模BGP遇到的问题:
1.BGP邻居需要手动指定,在邻居过多时,配置繁琐,维护管理难度大。
2.BGP路由表庞大,对设备性能要求大。

解决大规模BGP网络遇到的问题:
1.BGP对等体众多:对等体组、BGP团体
2.BGP路由表庞大:BGP路由聚合
3.IBGP全连接:BGP路由反射、BGP联盟
4.路由变化频繁,震荡:BGP路由衰减

对等体组
定义:具有某些相同属性的对等体的集合
作用:BGP邻居太多时,可以极大简化配置
分类:(1)EBGP对等体组(2)IBGP对等体组
配置步骤:
(1)创建对等体组
(2)指定对等体组编号
(3)将邻居加入对等体组
(4)接下来就可以对组内成员统一更改更新源、启用邻居enable、指定下一跳为本机
注意:ebgp组需要指定对等体组编号,ibgp组不需要指定对等体组编号,因为ibgp邻居都在同一个AS内部。

BGP路由聚合
作用:减小路由表规模
分类:
(1)自动聚合
自动聚合为主类网段;默认为关闭;只能对引入的IGP的路由进行聚合;只能在始发路由器上进行配置。
(2)手动聚合
可以对任意BGP路由进行聚合;可以在任意路由器上进行配置。
注意:配置聚合后,路由表出现聚合路由但明细路由依旧存在,所以要在聚合后加上detail-suppressed,则不发布明细路由。
对比:手动聚合比自动聚合更加灵活。

BGP路由反射器(重点)
角色:客户机、非客户机、反射器
反射规则(重点)
(1)如果路由更新是从非客户机收到的,仅反射给客户机,若反射给其他非客户机,可能会产生环路。
(2)如果路由更新是从客户机收到的,反射给所有非客户机以及客户机,除了路由更新的始发者(自己)。
(3)如果路由更新是从EBGP对等体收到的,反射给所有的客户机和非客户机。

注意:一个反射群里的所有反射客户机都只需要与反射器建立IBGP邻居即可。

BGP联盟
定义:将一个AS划分为若干个子AS,子AS内部IBGP邻居建立全连接,子AS之间建立EGP邻居。原AS成为联盟AS。
作用:用于替代IBGP全连接,减少IBGP邻居数量;解决BGP路由黑洞问题。
注意点:
(1)子AS使用私有AS编号;
(2)内部路由器的BGP运行在子AS中;
(3)其他真实AS的路由器仍然和联盟AS建立EBGP邻居;
(4)跨越子AS的EBGP邻居仍然需要更改下一跳为本机。

BGP团体属性(重点)
定义:一组由相同特征的目的地址的集合;通过对某些具有相同特征需要统一操作的路由标记团体属性来进行识别和区分。
公认团体属性
(1)Internet:默认团体属性。路由可以被发布至所有BGP邻居。
(2)No-export:路由不能被发布到本AS之外,如果存在联盟,则不能发布到联盟之外,但可以发布到其他子AS。
(3)No-advertise:路由不能通告给其他任何BGP邻居。
(4)No-export-subconfed:路由不能发布搭配本AS之外,也不能被发布到联盟中的其他子AS。

注意点:路由器默认不传递团体属性,需要手动命令在路由器上开启。

BGP路由衰减
定义:用来解决路由振荡的问题。

相关参数
1.half-life-reachable:可达路由半衰期。路由可达时,惩罚值减半需要的时间。
2.half-life-unreachable:不可达路由半衰期。路由不可达时(被抑制),惩罚值减半需要的时间。
3.reuse:解除抑制状态的惩罚值阈值。(被抑制后再次可学习)
4.suppress:路由进入抑制状态的惩罚值阈值。 (被抑制)
5.ceiling:惩罚值上限。