zl程序教程

您现在的位置是:首页 >  工具

当前栏目

BGP(Border Gatreway Protcol)边界网关路由协议

路由协议 网关 边界 BGP border
2023-09-27 14:21:00 时间

        通常可以将路由协议分为IGP(内部网关协议)和EGP(外部网关协议)。EGP主要用于ISP之间的交换路由信息。目前使用最为广泛的EGP是BGP版本4,它是第一个支持 CIDR和路由汇总的BGP版本。而RFC4760中定义的BGP4+是对BGP4的扩展,支持包括IPv6在内的多种协议

BGP是什么?

  1. BGP是Border Gatreway Protcol边界网关路由协议,
  2. 属于路径矢量路由协议           作用:在AS自治系统之间传递路由信息
  3. 4个版本:V1、V2、V4、V4+(即MBGP)

目录

BGP是什么?

AS知识点说明

为什么使用BGP---BGP价值传递?

使用BGP的三大理由:

使用BGP连接lnternet

什么是多宿主

BGP路径矢量路由器

AS之间的防环:

BGP特征

至少存在以下条件之一时,BGP是最合适的:

BGP并不总是适合的,如果满足以下条件,则不需要使用BGP:

BGP被称为基于策略的路径矢量路由协议,它的任务是在自治系统之间交换路由信息同时确保没有路由环路,其特征如下:

BGP数据库

BGP消息类型

BGP报文类型总结:

BGP工作流程——邻居状态机—览表

BGP术语

BGP属性

公认必遵(well-Known Mandatory)

公认自决(well-known discretionary)

选过过渡(Optional Transitive)

可选非过渡(Optional Nontransitive)

BGP消息类型及格式

BGP报头

标记:16字节,用来检测对等体之间同步的丢失。当支持验证功能用来验证消息,当不使用验证时所有比特均为”1“

Open消息

Update消息

Notification消息

 Keepalive消息

BGP路由决策

BGP路由抑制


AS知识点说明

  1. AS:autonomous system 自治系统,指的是在同一个组织管理下使用相同策略的设备的集合。
  2. 不同AS通过AS号区分,AS号取值范围1-65535,其中64512-65535是私有AS号。
  3. 中国电信163 AS号:4134     中国电信CN2 AS号:4809     中国联通AS号:9929

为什么使用BGP---BGP价值传递?

使用BGP的三大理由:

  1. 大量路由需要承载,IGP只能容纳千条,而BGP可以容纳上万。
  2. 支撑MPLS/VPN的应用,传递客户VPN路由。
  3. 策略能力强,可以很好的实现路由决策与数据控制。

使用BGP连接lnternet

  1. lnternet是一组互联在一起的自主系统,让自主系统之间能够互相通信,BGP在这里提供路由选择功能!
  2. 企业通过一家或者多家ISP连接到lnternet,如果只有一条ISP的话没必要运行BGP(默认路由),如果有多家ISP连接,那么BGP是最好的选择!
  • 单宿:只跟一个AS建立BGP邻居
  • 多宿:跟多个AS建立BGP邻居
  • 双多宿:跟多个AS建立多个BGP邻居

什么是多宿主

连接到两个或更多的ISP以增加以下内容:

  • 可靠性(连接的可靠性):如果一个ISP的连接失败,还能上网。
  • 性能(连接的性能):通往普通互联网目的地的路径选择是更好的。

BGP路径矢量路由器

  • IGPs宣布网络并描述到达这些网络的度量(内部路由协议通告- -组网络和前往各个网络的度量值.)
  • BGP宣布路径及路径尽头可达的网络。BGP使用与度量类似的属性来描述路径.(BGP路由器交换被成为路径矢量的可达性信息,这种信息是由路径属性组成的.)
  • BGP允许管理员为数据如何在自治系统中流动定义策略或规约。

AS之间的防环:

AS之间AS-path,路由传出本AS时,携带上本地AS号,当再次收到带有自己AS号的路由,则丢弃

BGP特征

至少存在以下条件之一时,BGP是最合适的:

  1. 作为一个中转的AS(ISP)
  2. 一个AS用有多个出口连接到不同AS(多宿主)
  3. 需要对进入、离开AS的流量进行控制(AS有多个多口)

BGP并不总是适合的,如果满足以下条件,则不需要使用BGP:

  1. 对BGP的路径选择过程不够熟悉
  2. 只有单个连接接入internet或其它AS
  3. 路由器的性能不够(内存、CPU)

BGP被称为基于策略的路径矢量路由协议,它的任务是在自治系统之间交换路由信息同时确保没有路由环路,其特征如下:

  1. 用属性(attribute)描述路径
  2. 使用TCP(端口 179)作为传输协议,传承了TCP的可靠性和面向连接的特征
  3. 通过Keepalive信息来校验TCP的连接
  4. 具有丰富的属性特征,方便实现基于策略的路由控制。
  5. 拥有自己的BGP表
  6. 支持VLSM和CIDR
  7. 支持MD5邻居身份验证
  8. 采用增量更新和触发更新
  9. 适合在大型网络中使用

BGP数据库

邻居表

  • BGP邻居列表

BGP表(转发数据库)

  • 每个邻居学到的所有网络的列表
  • 可以包含多条目的网络的路径
  • 包含每个路径的BGP属性

IP路由表

  • 到目的地网络的最佳路径列表

BGP消息类型

BGP定义了以下消息类型

  • Open----建立TCP连接后发送的打开消息(用于建立BGP邻居)

        包括保持时间(180秒)和BGP router-id

  • Keepalive---维护邻居关系
  • Update---用于通告路由信息(包括可达信息和不可达信息)

        仅用于一条路径的信息

        (可能是对多个网络)

        包括路径属性和网络

  • Notification---通知报文

        当检查到错误时

        消息发送后,BGP连接关闭

BGP报文类型总结:

BGP报文类型的总结

报文名称 作用是什么 什么时候发包 OPEN 协商BGP邻居的各项参数,建立邻居关系 通过TCP建立BGP连接,发送open报文 UPDATE 进行路由信息的交换 连接建立后,有路由需要发送或变化时,发送UPDATE通告对端路由信息 NOTIFICATION 报告错误,中止邻居关系 当BGP在运行中发现错误时,要发送NOTIFICATION报文通过BGP对端 KEEPALIVE 维护邻居关系 定时发送KEEPALIVE保持BGP邻居关系的有效性 60s hold-time:180s

BGP报文类型总结

BGP工作流程——邻居状态机—览表

BGP的邻居状态机
peer状态名称发什么包在做什么
ldle(空闲)尝试建立TCP连接开始准备TCP的连接并监视远程peer启动TCP连接,启用BGP时,要准备足够的资源
connect(连接)发TCP包正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接不上则进入Active状态,反复尝试连接。
active(激活)发TCP包TCP连接没建设成功,反复尝试TCP连接。
OpenSent(打开发送)发Open包TCP连接建立已经成功,开始发送Open包,Open包携带参数协商对等体的建立。
OpenConfirm(打开确认)发Keepalive包参数、能力特性协商成功,自己开始发送Keepalive包,等待对方的Keepalive包。
Established(已建立)发Update包已经收到对方的Keepalive包,双方能力特性致,开始使用Update通告路由信息。

BGP术语

  1. 对等体(peer):当两台BGP路由器之间建立了一条基于TCP的连接后,就称它们为邻居或对等体;
  2. 自治系统(AS):是一组处于统一管理控制和策略下的路由器或主机,它们使用内部网关路由协议决定如何在自治系统内部路由数据包,并使用自治系统间路由协议决定如何把数据包路由到其他自治系统。AS号由因特网注册机构分配,16比特长度(在RFC4893描述了使用32位长度的AS号的扩展),范围为1~65535,其中64512~65535是私有使用的。
  3. IBGP:当BGP在一个AS内运行时,被称为内部BGP(IBGP)
  4. EBGP:当BGP运行在AS之间时,被称为外部BGP(EBGP)
  5. NLRI(网络层可达性信息):是BGP更新报文的一部分,用于列出通过该路径可到达的目的地集合。
  6. 同步:在BGP能够通告路由之前,该路由必须存在于当前的IP路由表中。也就是说,BGP和IGP必须网络能够被通告前同步。Cisco允许通过命令no synchronization来关闭同步
  7. IBGP水平分割:通过IBGP学到的路由信息不能通告给其他的IBGP邻居
  8. 对等体组(Peer Group):是一组采用相同更新策略的BGP邻居 当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置 当对等体组的配置改变时,组内成员的配置也相应改变

BGP属性

        BGP具有丰富的属性,为路由控制带来很大的方便,BGP路径属性分为以下4类:

  • 公认必遵(well-Known Mandatory)

        公认必遵是BGP更新中必须包含的,且必须被所有BGP厂商设备所能识别,包括ORIGIN,AS_PATH和Next_Hop以下以下3个属性。

  1. ORIGIN(起源) :该属性说明了路由信息的来源,有3个可能的源一-IGP, EGP
    和NNCOMPLETE。路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低
    ORIGIN类型的路径。ORIGIN类型从低到高的顺序为IGP<EGP<INCOMPLETE。
  2. AS_ PATH (AS路径) :包含在Update中的路由信息所经过的自治系统的序列。
     
  3. Next_HOP (下一跳) :路由器所获得的BGP路由的下一跳。对EBGP会话来说,下--跳就是通告该路由的邻居路由器的源地址。对于IBGP会话,有两种情况,一是起源AS内部路由的下一跳,就是通告该路由的邻居路由器的源地址;二是由EBGP注入AS的路由,它的下一-跳会不变地带入IBGP中。
  • 公认自决(well-known discretionary)

        公认自决指必须被所有BGP设备所识别,但是BGP更新中可以发送,也可以不发送的属性,包括LOCAL_AGGPREGATE两个属性

  1. LOCAL _PREF (本地优先级) :用于告诉自治系统内的路由器在有多条路径时,怎
    样离开自治系统。本地优先级越高,路由优先级越高。该属性仅在IBGP邻居之间传递。
  2. ATOMIC_ AGGREGATE (原子聚合) :指出已被丢失了的信息。当路由聚合时将会
    导致信息的丢失,因为聚合来自具有不同属性的不同源。如果一个路由器发送了导致信息丢
    失的聚合,路由器将被要求把原子聚合属性附加到该路由上。
  • 选过过渡(Optional Transitive)

        可选过渡属性并不要求所有的BGP实现都支持。如果该属性不能被BGP进程识别,它
就会去看过渡标志。如果过渡标志被设置了, BGP进程会接受这个属性并将它不加改变地传
送,包括AGGREGATOR和COMMUNITY

  1. AGGREGATOR (聚合者) :标明了实施路由聚合的BGP路由器ID和聚合路由的
    路由器的AS号。
  2. COMMUNITY (团体) :指共享- -一个公共属性的一组路由器。
  • 可选非过渡(Optional Nontransitive)

        可选非过渡属性并不要求所有的BGP都支持。如果这些属性被发送到不能对其识别的
路由器,这些属性将会被丟弃,不能传送给BGP邻居,包括MED、ORIGINATOR_ID和
CLUSTER_LIST

  1. MED (多出口区分) :通知AS外的路由器采用哪一条路径到达AS。它也被认为是
    路由的外部度量,低的MED值表示高的优先级。MED属性在自治系统间交换,但MED属
    性不能传递到第三方AS。默认情况下,仅当路径来自同一个自治系统的不同邻居时,路由
    器才比较它们的MED属性。
  2. ORIGINATOR ID (起源ID) :路由反射器会附加到这个属性上,它携带本AS源路
    由器的路由器ID,用以防止环路。
  3. CLUSTER_ LIST (簇列表) :此属性显示了采用的反射路径。
     

BGP消息类型及格式

BGP报头

        BGP消息类型主要包括Open、Keepalive、Update和Notification~这些消息具由相同的报头,长度为19字节,其格式如下图所示,各字段含义如下所述

|0                           7|8                          15|16                     23|24                              31|

标记

长度类型
  1. 标记:16字节,用来检测对等体之间同步的丢失。当支持验证功能用来验证消息,当不使用验证时所有比特均为”1“

  2. 长度:2字节,BGP消息总长度(包括报头在内),以字节为单位,范围为19~4096
  3. 类型:1字节,BGP消息的类型。其取值从1~5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息

Open消息

        Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系,
其格式如下图所示,各字段含义如下所述。

|0                          7|8                           15|16                           23|24                    31|
版本
自治系统号
保持时间
BGP标识
可选参数长度
可选参数
  1. 版本: 1 字节,BGP的版本号对于BGP4来说其值为4。
  2. 我的自治系统: 2字节,邻居建立发起者的AS号,用来决定双方是IBGP邻居,还
    是EBGP邻居。
  3. 保持时间: 2字节,是设备收到一个Keepalive消息之前允许等待的最长时间。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。如果这个时间为0s,则不发送Keepalive消息,如果不为0,则至少是3s。在建立对等体关系时两端要协商保持时间,在协商时,采用OPEN消息中较小端的保持时间作为双方的保持时间。Cisco 默认保持时间是180 s。
  4. BGP标识符:4字节,发送者的BGP路由器ID,以IP地址的形式表示。BGP路由器ID的确定方法和OSPF路由器ID确定方法相同。
  5. 可选参数长度: 1 字节,可选参数的长度。如果为0,则没有可选参数。
  6. 可选参数:可变长度,用于BGP验证或多协议扩展等功能。包括一个可选参数列表,每个参数由1字节类型字段、1 字节长度字段和一个包含参数值的可变长度字段来确定,即TLV方式。
     

Update消息

        Update消息用于在对等体之间交换路由信息 它既可以发布可达路由信息,也可以撤销不可达的路由信息,其格式如下图所示,个字段含义如下所述:

Update消息
不可用路由长度
撤销路由
全部路径属性长度
路径属性
网络层可达
  1. 不可用路由长度: 2字节,撤销路由字段的整体长度,如果为0,说明没有路由被撤销,并且在该消息中没有撤销路由的字段。.
  2. 撤销路由:可变长度,包含不可达路由的列表。
  3. 全部路径属性长度: 2字节,路径属性字段的长度。如果为0,则说明没有路径属性字段。
  4. 路径属性:可变长度,列出与NLRI相关的所有路径属性列表,包括AS_ _PATH、本地优先级和起源等,每个路径属性由-一个TLV (Type-Length-Value) 三元组构成。路径属性是BGP用以进行路由控制和决策的重要信息。
  5. 网络层可达信息:可变长度,是可达路由的前缀和前缀长度二元组。
     

Notification消息

        当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中
断。其格式如下图所示,各字段含义如下所述。

  1. 错误编码: 1字节,错误类型。
  2. 错误子码:1字节,错误类型更详细的信息。
  3. 数据:可变长度,用于诊断错误的原因,内容依赖于具体的错误编码和错误子码。
     

 Keepalive消息

        BGP会周期性(Cisco默认为60 s)地向对等体发出Keepalive消息,用来保持连接的有
效性。其消息格式中只包含BGP包头,没有附加其他任何字段。Keepalive消息的发送周期
是保持时间的1/3,但该时间不能低于1 s。如果协商后的保持时间为0,则不发送Keepalive
消息。

BGP路由决策

        BGP使用了描述路由特性的很多属性。这些属性和每-一个路由一起在BGP更新报文中
被发送。路由器使用这些属性去选择到目的地的最佳路由。理解BGP路由判定的过程非常重
要,下面按优先顺序给出了路由器在BGP路径选择中的判定过程:

  1. 如果下一跳不可达,则不考虑该路由。
  2. 优先选取具有最大权重(Weight) 值的路径,权重是Cisco专有属性。
  3. 优先选取具有最高本地优先级的路由。
  4. 优先选取源自于本路由器(即下- -跳为“0.0.0.0" )上BGP的路由。
  5. 优先选取具有最短AS路径的路由。
  6. 优先选取有最低起源代码(IGP<EGP< <INCOMPLETE)的路由。
  7. 优先选取具有最低MED值的路径。
  8. 在EBGP路由和联盟EBGP路由中,首选EBGP路由;在联盟EBGP路由和IBGP
    路由中,首选联盟EBGP路由。
  9. 优先选取离IGP邻居最近的路径。
  10. 优先选取最老的EBGP路径。
  11. 优先选取具有最低BGP路由器ID的路径。
  12. 优先选取邻居IP地址最小的路径。

BGP路由抑制

        BGP路由抑制(Route Dampening)用来解决路由不稳定的问题。路由不稳定的主要表
现形式是路由振荡(Route Flaps),即路由表中的某条路由反复消失和重现。当发生路由振荡
时,路由协议就会向邻居发布路由更新信息,收到更新信息路由器需要重新计算路由并修改
路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正,
常工作。BGP使用路由抑制来防止持续的路由振荡带来的不利影响。BGP路由抑制的工作
示意图如下图所示。

 首先介绍几个术语:

  1. 半衰期:单位为min,每经过半衰期的时间,抑制值就会减半,Cisco 默认为15 min。
  2. 重新使用界限:当一条被抑制路由的惩罚值低于该值后,该路由重新使用。Cisco 默
    认值为750。
  3. 抑制阈值:超过该值路由被抑制,不再向其他BGP对等体发布更新报文。Cisco 默
    认值为2 000.
  4. 最大抑制时间:被抑制路由的抑制时间超过该值后,不管惩罚值为多少,都会重新
    使用,Cisco 默认为60 min,即4倍的半衰期时间。

        当一条路由出现振荡时,这条路由会被加上一个1 000的惩罚,这个惩罚会每5 s递减, .
等到15 min时,惩罚会减少到一半,也就是500。
        如果这条路由连续出现Flap,每一次Flap这条路由的惩罚都会加1 000,例如,一条路
由连续出现了3次振荡,那么这时候惩罚值就接近3000.当惩罚值大于2 000时,这条路由
就会在BGP表中被标为Suppressed。经过了15 min后(没有发生Flap),这条路由的惩罚
值会被减少- -半到1 500,这条路由还是被标为Suppressed.再经过15 min后,惩罚值减成
750,这条路由才可以重新被使用。也就是说经过30 min,路由器认为这条路由是稳定的,
才会重新使用它。如果这条路由不停地振荡,好比说15次。这时候惩罚值会接近15 000.
每过15 min惩罚值会减少一半,可是到了60 min时,惩罚值还是大于750,这时候因为已经
超过了最大抑制时间,所以这条路由会被重新使用。
        需要注意的是,BGP路由抑制只对通过EBGP学到的路由起作用,对IBGP学到的路由
不起作用。