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

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

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个属性。

ORIGIN(起源) :该属性说明了路由信息的来源,有3个可能的源一-IGP, EGP

和NNCOMPLETE。路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低

ORIGIN类型的路径。ORIGIN类型从低到高的顺序为IGP<EGP<INCOMPLETE。

AS_ PATH (AS路径) :包含在Update中的路由信息所经过的自治系统的序列。

Next_HOP (下一跳) :路由器所获得的BGP路由的下一跳。对EBGP会话来说,下--跳就是通告该路由的邻居路由器的源地址。对于IBGP会话,有两种情况,一是起源AS内部路由的下一跳,就是通告该路由的邻居路由器的源地址;二是由EBGP注入AS的路由,它的下一-跳会不变地带入IBGP中。

公认自决(well-known discretionary)

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

LOCAL _PREF (本地优先级) :用于告诉自治系统内的路由器在有多条路径时,怎

样离开自治系统。本地优先级越高,路由优先级越高。该属性仅在IBGP邻居之间传递。

ATOMIC_ AGGREGATE (原子聚合) :指出已被丢失了的信息。当路由聚合时将会

导致信息的丢失,因为聚合来自具有不同属性的不同源。如果一个路由器发送了导致信息丢

失的聚合,路由器将被要求把原子聚合属性附加到该路由上。

选过过渡(Optional Transitive)

       可选过渡属性并不要求所有的BGP实现都支持。如果该属性不能被BGP进程识别,它

就会去看过渡标志。如果过渡标志被设置了, BGP进程会接受这个属性并将它不加改变地传

送,包括AGGREGATOR和COMMUNITY

AGGREGATOR (聚合者) :标明了实施路由聚合的BGP路由器ID和聚合路由的

路由器的AS号。

COMMUNITY (团体) :指共享- -一个公共属性的一组路由器。

可选非过渡(Optional Nontransitive)

       可选非过渡属性并不要求所有的BGP都支持。如果这些属性被发送到不能对其识别的

路由器,这些属性将会被丟弃,不能传送给BGP邻居,包括MED、ORIGINATOR_ID和

CLUSTER_LIST

MED (多出口区分) :通知AS外的路由器采用哪一条路径到达AS。它也被认为是

路由的外部度量,低的MED值表示高的优先级。MED属性在自治系统间交换,但MED属

性不能传递到第三方AS。默认情况下,仅当路径来自同一个自治系统的不同邻居时,路由

器才比较它们的MED属性。

ORIGINATOR ID (起源ID) :路由反射器会附加到这个属性上,它携带本AS源路

由器的路由器ID,用以防止环路。

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邻居。

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

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路由。

  1. 优先选取离IGP邻居最近的路径。
  2. 优先选取最老的EBGP路径。
  3. 优先选取具有最低BGP路由器ID的路径。
  4. 优先选取邻居IP地址最小的路径。

BGP路由抑制

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

首先介绍几个术语:

  1. 半衰期:单位为min,每经过半衰期的时间,抑制值就会减半,Cisco 默认为15 min。
  2. 重新使用界限:当一条被抑制路由的惩罚值低于该值后,该路由重新使用。Cisco 默

认值为750。

  1. 抑制阈值:超过该值路由被抑制,不再向其他BGP对等体发布更新报文。Cisco 默

认值为2 000.

  1. 最大抑制时间:被抑制路由的抑制时间超过该值后,不管惩罚值为多少,都会重新

使用,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次。这时候惩罚值会接近15000.每过15 min惩罚值会减少一半,可是到了60 min时,惩罚值还是大于750,这时候因为经超过了最大抑制时间,所以这条路由会被重新使用。

     需要注意的是,BGP路由抑制只对通过EBGP学到的路由起作用,对IBGP学到的路由不起作用。

目录
相关文章
|
2天前
|
Linux
Linux网关路由配置
Linux网关路由配置
13 0
|
2天前
|
负载均衡 网络协议 安全
【计网·湖科大·思科】实验七 路由信息协议RIP、开放最短路径优先协议OSPF、边界网关协议BGP
【计网·湖科大·思科】实验七 路由信息协议RIP、开放最短路径优先协议OSPF、边界网关协议BGP
13 2
|
2天前
|
网络协议 网络架构
ensp中BGP(边界网关协议)基础原理及配置命令
ensp中BGP(边界网关协议)基础原理及配置命令
|
2天前
|
监控 网络协议 安全
【亮剑】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题
【4月更文挑战第30天】当设备IP能ping通但无法上网时,可能是DNS解析、网关/路由设置、防火墙限制、网络配置错误或ISP问题。解决步骤包括检查网络配置、DNS设置、网关路由、防火墙规则,以及联系ISP。预防措施包括定期备份配置、更新固件、监控网络性能和实施网络安全策略。通过排查和维护,可确保网络稳定和安全。
|
2天前
|
网络协议 算法 安全
【专栏】硬核干货:BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择
【4月更文挑战第28天】BGP(边界网关协议)是自治系统间交换路由信息的关键协议,用于大型网络的高效路由选择。它基于路径向量算法,通过TCP连接建立邻居关系,交换并选择最优路径。BGP支持丰富的路由属性和多种消息类型,允许灵活的路由控制。配置与应用包括启用BGP、配置邻居、路由宣告、过滤及社区属性使用。虽然BGP具备强大路由控制和可扩展性,但其配置复杂,存在安全挑战。理解BGP对于网络管理和优化至关重要。
|
2天前
|
网络协议 算法 数据库
【专栏】IS-IS协议是内部网关协议,常用于大型网络路由器间的路由信息交换,基于OSI的CLNP标准和Dijkstra算法
【4月更文挑战第28天】IS-IS协议是内部网关协议,常用于大型网络路由器间的路由信息交换,基于OSI的CLNP标准和Dijkstra算法。其特点是分层设计、快速收敛、高效资源利用和强故障恢复能力。在现代网络中,IS-IS广泛应用于服务提供商、企业网络及与其他协议的融合,是构建稳定、高效网络的关键。了解和应用IS-IS能提升网络系统的可靠性和效率。
|
2天前
|
网络协议 算法 安全
【专栏】RIP是一种古老的内部网关协议,使用距离矢量算法,基于跳数更新路由表,最古老的距离矢量协议
【4月更文挑战第28天】RIP是一种古老的内部网关协议,使用距离矢量算法,基于跳数更新路由表。其工作原理包括周期性更新、度量标准、路由表更新和防止计数到无穷问题的技术。RIP简单易用,适合小规模网络,但在大规模网络中效率低且有限制。随着OSPF和EIGRP等协议的发展,RIP在大型网络中的应用减少,但在中小型网络和遗留系统中仍有其地位。RIPv2的改进提高了安全性与灵活性。尽管逐渐被替代,RIP在理解路由协议基本概念和历史中仍具价值。
|
2天前
|
域名解析 网络协议 Linux
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
|
2天前
|
负载均衡 Java API
SpringCloud - Zuul路由网关使用详解
SpringCloud - Zuul路由网关使用详解
132 0
|
6月前
|
前端开发 应用服务中间件 API
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
131 0