BGP

BGP特性

  1. EGP、路径矢量
  2. TCP 端口号 179
  3. 基于单播发送协议报文,可以跨越路由器建立BGP邻居关系
  4. 没有定期更新、只有触发更新
  5. 路由携带丰富的属性
  6. 支持CIDR、VLSM、路由过滤、路由策略

BGP自治系统AS

BGP使用AS号区分不同的AS
在BGP中,一台路由器只能有一个AS号,只能属于一个AS
BGP的AS内能运行多种IGP协议,通过IGP协议来发现路由以及保证AS内BGP邻居之间的TCP的可达

AS号

2字节AS号: 1--65535(默认所有厂家都支持)  
	公有AS号:能在公网上运行的AS号:1--64511
	私有AS号:只能在私网上运行的AS号:64512--65535
4字节AS号:1--43亿(不是所有设备都支持,华为默认支持)

BGP报文交互中的角色

  • Speaker:发送BGP消息的路由器称为BGP发言者,它接收或产生新的路由信息,并发布给其它BGP Speaker。
  • Peer:相互交换消息的BGP Speaker之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer Group)。

BGP邻居关系

  1. EBGP邻居:建立BGP邻居关系的路由器不在同一个AS。

    一般使用直连物理接口IP建立EBGP邻居。
    EBGP邻居间交互的BGP报文IP TTL = 1。(可以修改)
    EBGP使用环回接口建立邻居需要注意的问题:
    1. 在EBGP邻居之间存在多条物理链路的时候
    2. 一般使用静态路由保证环回接口TCP可达
    3. 通过修改E-BGP的多跳,加大报文发送TTL值
    4. 指定环回接口为更新源

  2. IBGP邻居:建立BGP邻居关系的路由器在同一个AS内。

    一般使用Loopback接口IP建立IBGP邻居。
    IBGP邻居间交互的BGP报文IP TTL = 255。

BGP路由传播原则

  1. 从EBGP邻居接收的路由,可以传给其他的EBGP邻居和IBGP邻居;

  2. 从IBGP邻居接收的路由,不能传给其他的IBGP邻居(IBGP邻居的水平分割);

  3. 从IBGP邻居接收的路由,能否传给其他的EBGP邻居,视同步情况而定。(同步机制默认关闭)。

  4. 只有最优并且是自己使用的路由,才能向其他邻居传播

    当一条路由的前缀标示 > 表示最优路由
    成为最优路由条件:
    1. 有效路由 (路由的前缀标示 *)
    下一跳地址可达
    如果开启同步,必须满足同步条件
    路由的前缀和路由的下一跳地址不能一致
    2. 根据选路规则选出的最优路由

BGP同步

  1. 从IBGP邻居学到的路由,在发给EBGP邻居之前,做同步检查:该条路由是否也通过IGP学到,如果通过IGP也学到,则能传给EBGP邻居,否则不能传。
  2. 同步机制仅仅避免了路由转发黑洞,并没有解决路由转发黑洞问题。
  3. 现在华为VRP平台无法开启同步机制,采用其他机制解决路由黑洞问题:
    1. 在数据转发所需经过的路径上也运行BGP
    2. 将所需的BGP路由引入到IGP中
    3. MPLS

解决BGP路由转发黑洞的方案

IBGP全连接

因为AS内有IBGP邻居水平分割的机制,因此AS内的IBGP邻居建立应采用全连接的方式。

反射器

作用:IBGP水平分割的替代方案,减少IBGP邻居关系的数量
反射原则:
1. 从非客户机接收的路由,能反射给所有的客户机。
2. 从客户接接收的路由,能反射给所有的客户机和非客户机。
3. 从EBGP邻居接收的路由,能反射给所有的客户机和非客户机。
4. 仅是反射器上最优并且是反射器自己使用的路由可以被反射。
5. BGP路由被反射时,该路由的属性默认不会被修改。
反射器防环原则:

  1. 集群ID:反射器进行BGP路由反射时,会在集群列表最左边添加自身的集群ID,当反射器接收到BGP路由时,如果发现集群列表中包含自身的集群ID,则丢弃该路由。默认选择反射器的Router-id做为集群ID。
  2. 源ID(ORIGINATOR_ID) :反射器进行BGP路由反射时,会将该路由发布者的Router-id做为源ID,当BGP路由器收到BGP路由时,如果发现该路由的源ID与自身的Router-id相同,则丢弃该路由。

    对比:谁添加、添加的是什么、谁检查

联盟

作用:IBGP水平分割的替代方案,减少IBGP邻居关系的数量
实现:在大AS里划分小AS,将原来的IBGP邻居转化为联盟内的EBGP邻居关系,现实路由的传递

对等体组

作用:简化BGP配置
分为IBGP对等体组和EBGP对等体组。

BGP状态机

image.png

  1. idle:初始化

  2. connect:建立TCP三次握手,TCP等待时间为32S

  3. Active:TCP三次握手失败,不断尝试重新建立

    一般BGP的配置错误导致停留在此状态(邻居地址配置错误;AS号错误;connect-interface忘配置,或配错)

  4. open-sent:发open,等open

  5. open-confirm:发keepalive,等keepalive

    如果在5S内收到keepalive报文,进入establish状态
    如果在5S内收到Notification报文,进入idle状态
    如果在5S内没有收到keepalive报文,进入idle状态

  6. Established:接收到对方的Keepalive,BGP邻居建立成功。

BGP路由选择原则

  1. 首先丢弃下一跳(NEXT_HOP)不可达的路由;

  2. 优选 Preferred-value 值最大的路由;

  3. 优选本地优先级(LOCAL_PREF)最高的路由;

  4. 优选聚合路由(手工聚合产生的路由优于自动聚合产生的路由);(华为优选本地起源(Network))

  5. 优选 AS 路径(AS_PATH)最短的路由;

  6. 依次选择 ORIGIN 类型为IGP、EGP、Incomplete 的路由;

  7. 优选 MED 值最低的路由;

  8. 依次选择从 EBGP、联盟、IBGP 学来的路由;

  9. 优选下一跳IGP Cost 值最低的路由;

    检查是否开启否则均衡,如果开启,满足以下条件就会进行负载:
    a. BGP路由的AS号要相同
    b. BGP路由的下一跳地址不同

  10. 优选 CLUSTER_LIST 长度最短的路由;

  11. 优选 ORIGINATOR_ID 最小的路由;

  12. 优选 Router ID 最小的路由器发布的路由。

  13. 优选地址最小的对等体发布的路由。

BGP路由聚合

自动聚合:

  1. 只能对通过路由引入得到的BGP路由自动聚合,默认开启,实用时建议关闭。
  2. 有类聚合。
  3. 明细路由将被抑制,只发布汇总路由。
  4. 缺点:不能控制聚合路由的范围,不能针对network的路由生效

手动聚合

1
2
[RTA]bgp 100
[RTA-bgp]aggregate 172.16.0.0 255.255.240.0 detail-suppressed

注意:

  • 不加detail-suppressed时既发聚合也发明细,加上detail-suppressed只发聚合不发明细。
  • 手工聚合产生的聚合路由可以再次做手工聚合
  • 配置聚合之后,会自动在全局路由表中产生一条针对聚合路由指向null 0 的BGP路由
  • 聚合路由是否继承明细路由的属性?
    • AS-PATH:默认不继承,可以通过AS-SET还原
    • next-hop:不继承
    • origin:继承最差
    • 团体属性:继承
    • 本地优先级,MED:不继承
  • 聚合路由添加的属性?
    • AGGREGATE:用于标示聚合路由所在的AS以及产生者的Router id
    • ATOMIC_AGGREGATE:聚合路由并且抑制明细之后才会产生,主要用于表示聚合路由丢失了路径属性(主要用于给管理员提示)
  • attribute-policy: 修改聚合路由的路径属性,配合route-policy修改
  • origin-policy: 根据条件的产生聚合路由,配合route-policy
  • suppress-policy: 将匹配中的明细路由抑制,与detail-suppressed互斥,配合route-policy

BGP衰减

作用:对震荡的BGP路由进行抑制。
关键参数:惩罚值、抑制阈值、半衰期、再使用阈值
实现:
惩罚值:默认为1000,当BGP路由发生抖动时对路由的惩罚值
抑制阈值:默认为2500,当BGP路由惩罚值达到抑制阀值时,停止更新路由
半衰期:默认15分钟,当BGP路由没有在抖动惩罚值减少一半
使用阈值:默认750,当BGP路由域值到达使用阀值,正常更新路由
路由衰减默认不启用,如果开启只针对EBGP有效

BGP安全特性

  1. 认证:影响BGP邻居关系的建立

    MD5:认证信息存放在TCP的option中

  2. GTSM:通用TTL安全机制

    主要用于防止多跳攻击
    现实:检查bgp报文中TTL值是否在限制的TTL范围之内,如果不在直接丢弃报文
    GTSM机制与EBGP多跳互斥

  3. 限制从对等体接收的路由数量

    防止从邻居收到大量的路由信息,导致设备性能消耗过大

  4. AS_Path长度保护

    限制BGP路由AS-PATH的最大经过的AS号

BGP ORF 出方向路由过滤

基于本地的入口策略构建对端的出口策略,实现BGP按需发布路由
实现:通过在open报文的扩展能力参数中增加ORF特性实现,通过路由刷新报文携带自身入方向的策略,邻居收到自身入方向的策略的策略会自动产生出方向策略。

BGP报文格式

BGP报文组成:BGP报文头部+BGP报文类型
BGP报文头部:

  • marker:默认全为1,使用BGP KEYCHAIN 非全1(做BGP认证时能进行检查)
  • 长度:标示报文总长度
  • type:用于BGP报文类型

Open(Type 1)

用于建立BGP邻居关系时发送参数进行协商,除Hold time外,其他信息都会影响BGP邻居建立

  • 版本号:当前V4 协商时版本必须一致
  • AS号:发送报文路由器的AS 协商时对比收到的AS号和指定的AS号是否一致
  • Hold time:表示TCP连接的失效时间,默认为180S 协商时取小值
  • BGP router id:用于表示一台BGP路由器 协商时收到的 BGP router id和自身不能一致
    • BGP router id选举方式(已经选出router id,重新指定router id,需要重新启动BGP进程才会生效)
      1. 系统视图下指定
      2. BGP进程下指定
      3. 自动选择环回接口或者物理接口IP地址大的
    1. BGP router id作用:
      1. 在路由聚合时,路由聚合者用router id表示
      2. 防环时使用(起源ID,簇ID)
      3. 选路
  • BGP的扩展能力参数
    1. 多协议扩展能力
      1. IPV4单播(默认只能建立IPV4的单播邻居)
      2. IPV4组播
      3. VPNv4
      4. IPV6单播
      5. IPV6组播
      6. VPNv6
      7. EVPN
    2. 路由刷新能力(默认开启)
    3. 4字节AS号支持能力(默认开启)
    4. BGP出方向路由过滤功能(需要手工配置)
    • 认证(可选配置):只支持MD5认证

Update(Type 2):

路由更新

  • 携带BGP可达路由信息,使用NLRI
  • 携带BGP可达路由路径属性
  • 携带BGP不可达路由,主要用于撤销路由
    • 如果路由信息的路径属性不一致,使用不同的update报文update报文只会在邻居建立之后、收到路由刷新报文以及当路由发生变化时发出。
  • Update报文结构
    • Withdrawn Routes Length :(2字节无符号整数)不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在UPDATE消息中不会被显示。
    • Withdrawn Routes :(变长)撤销路由。该字段包括一系列的IP地址前缀信息,以<length, prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。
    • Path Attribute Length :(2字节无符号整数)路由属性长度,表示Path Attributes字段的数据长度。如果Path Attribute Length数值为0,则表示Path Attributes字段没有任何数据,在UPDATE消息中不会被显示。
    • Path Attributes:(变长)更新的路由属性列表。按其类型号从小到大的顺序排序,填写更新的路由的所有属性。每一个属性单元包括属性类型,属性长度,属性值三部分。
    • Network Layer Reachability Information :(变长)网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样<length, prefix>

Notification(Type 3)

通知差错

  1. 差错通知报文,当收到BGP报文中的参数错误时会发出
  2. 当邻居收到Notification报文会断开TCP的连接
  3. Notification报文结构
    • Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。
    • Errsubcode:错误子码。
    • Data:指定错误数据内容

Keepalive(Type 4)

维护邻居关系

  1. 充当OPEN报文的确认,在收到open报文同意open报文中的参数时发送
  2. 保持TCP的连接,每60S发送一次
  3. Keepalive报文只有BGP报文头

Route-Refresh(Type 5)

用于动态的请求BGP路由发布者重新发布UPDATE报文,进行路由更新

BGP路由属性BGP属性分类

属性分类 主要包含的属性

公认必遵属性 ORIGIN属性、AS_PATH属性、NEXT_HOP属性
公认可选属性 LOCAL_PREF属性、ATOMIC_AGGREGATE属性
可选传递属性 COMMUNITY属性、AGGREGATE属性
可选非传递属性 MED属性、CLUSTER_LIST属性、ORIGINATOR_ID属性

AS-PATH

AS路径,公认必遵
记录了BGP路由所经过的AS的编号。

  1. BGP路由器将BGP路由传给EBGP邻居时,在AS-PATH列表最左边添加自身的AS号。
  2. 作用:
    1. 在AS间防环:BGP路由器接收到BGP路由时,如果发现AS-PATH列表中包含本AS的编号,则丢弃该路由。
    2. 量化距离,影响选路
  3. AS_Path 4种表示方式:
    • AS_Path seq:有序排放AS号
    • AS_Path as-set:无序排放AS号,做路由聚合时使用
    • AS_Path confed seq:联盟内AS号有序排放
    • AS_Path confed as-set:联盟内由聚合时使用,无序排放AS号
  4. fake-as AS号欺骗(可以用于隐藏真实AS号)

Next-Hop

下一跳,公认必遵

  1. 将路由传给EBGP邻居时,路由的下一跳为自己。
  2. 将路由传给IBGP邻居时,路由的下一跳默认保持不变。
  3. 多点可达环境中,路由的下一跳保持不变。
  4. 自身产生BGP路由下一跳地址为0.0.0.0(聚合路由为127.0.0.1)

ORIGIN

起源属性,公认必遵

  1. IGP:路由是通过network命令被发布进BGP的,”i”
  2. EGP:”e”
  3. Incomplete:路由是通过imort-route命令被发布进BGP的,”?”
  • 路由选择顺序:i > e > ?
  • 起源属性所有的AS都会传递
  • 起源属性在传递过程中不会做任何的修改,除非手工修改
  • 修改方式:通过route-policy

LOCAL_PREF

本地优先级,公认可选
默认值100,数值越大越优先。
只能在AS内传递。

MED

多出口鉴别器,可选非传递
默认值取BGP路由来源的度量值, 数值越小越优先。
可以在AS内传递,也可以在相邻AS间传递,不能跨越AS传递。

注意问题:只有来自相同AS的路由才会比较MED值,主要路由的AS-path对比是否来自相同的AS

Preferred-value

首选值,H3C私有属性
默认值为0,越大越优先。
本地有效,不会随着BGP路由传递。

ATOMIC_AGGREGATE

原子聚合,公认可选
用来通告路由接收者,该路由是经过聚合的

团体属性(相当于IGP中的TAG)

  1. 公认团体属性:标记BGP路由的可传递性。
    • INTERNET:缺省情况下,所有的路由都属于INTERNET 团体。具有此属性的路由可以被通告给所有的BGP 对等体。
    • NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。
    • NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP 对等体。
    • NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS 之外,也不能发布到联盟中的其他子AS。
  2. 自定义团体属性:类似于给BGP路由打标记。如:200 : 1
    • 团体属性值默认不会传递,需要手工配置
    • 匹配团体属性,需要团体属性列表进行匹配
    • 基本团体属性列表:使用具体的团体属性值,匹配一个或者多个团体属性
    • 高级团体属性列表:使用正则表达式进行匹配团体属性

高级(扩展)的团体属性:8个字节
在MPLS VPN中使用
RT
Soo

�用
RT
Soo


BGP
https://www.intx.work/posts/580c088a.html
发布于
2015年8月20日
更新于
2019年10月24日
许可协议