通常可以将路由协议分为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学到的路由
不起作用。

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

  1. BGP边界网关路由协议

    目录 什么是AS? 协议基础 特点 什么时候使用BGP 邻居关系 配置 路由宣告 防环机制 路由反射器 联邦 BGP工作过程 BGP路由黑洞问题 BGP的认证 什么是AS? 自治系统(Autonomo ...

  2. 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步

    系列文件 BGP(Border Gatreway Protcol)边界网关路由协议 BGP基本配置 BGP实战拓扑 外部BGP基础配置 内部BGP邻居 EBGP基本配置 CCNP综合实验拓扑 文章目录 ...

  3. 104.路由协议有哪些?

    路由协议根据(路由表是静态和动态)可以分为静态路由协议和动态路由协议 动态路由协议根据(ISP内部或者ISP之间路由)可分为: 内部网关协议和外部网关协议(EGP) 内部网关协议根据路由算法的不同可以 ...

  4. CCNP的BGP部分笔记

    ospf 最多1W条路由 is-is 最多2W条路由 www.cidr-report.org CUII CHINA UNICOM Industrial Internet Backbone, CN ad ...

  5. 计算机网络 RIP,OSPF,BGP,MPLS协议

    目录 RIP 广播路由控制信息 根据距离向量确定路由 使用子网掩码时的RIP处理 RIP中路由变更时的处理 RIP2 OSPF OSPF是链路状态型路由协议 OSPF工作原理概述 将区域分层化进行细分 ...

  6. BGP专线 解决南北互联互通

    转自:http://blog.sina.com.cn/s/blog_4e4ba7fb0101b2mu.html BGP(Border Gateway Protocol,边界网关协议)是用来连接Inte ...

  7. 科技 人文_以人文个性化应对认识论的不公正

    科技 人文 Machine learning-backed personalized services have become a permanent fixture in our increasin ...

  8. 为什么程序员流动性大_为健康“流动”

    为什么程序员流动性大 Advanced software-based health treatments are offering new hope for people struggling wit ...

  9. 系列TCP/IP协议-动态IP选路协议(008)

    一.引言 前一章已经说过了IP数据包是如何分发的.为啥这一章还要说这个问题?在网络很小.只有单个连接点.没有多余的路由的时候,使用静态选路是可以的.但是一旦网络变大一点就会出现各种问题.在大网络中的网 ...

最新文章

  1. 通俗易懂的TCP里面的三次握手以及四次挥手
  2. linux下git分支管理,git远程分支管理
  3. 用单片机测量流体流速的_流量测量的主要方法
  4. 带你自学Python系列(三):列表遍历(for循环)
  5. ICLR'22 | cosFormer:重新思考注意力机制中的Softmax
  6. ESP32-S3 USB UART 下载总结
  7. 计算机硕士工资一览表 08年最新各大IT公司薪水行
  8. 柱、锥、台、球的体积公式推导(不用积分)
  9. 18048 自由落体
  10. JAVA钓鱼游戏_java实现小猫钓鱼游戏
  11. PDF打开后却不能编辑要怎么办?
  12. 记录一下jadx的误报
  13. 网吧服务器软件维护合同范本,网吧电脑维护合同范本
  14. 爬虫代理和验证码识别
  15. 企业微信如何创建待办事项?
  16. 下载 axios.js 文件到本地
  17. python 标准库 书籍_《Python标准库》Python语言的权威之作
  18. Python + Selenium,分分钟搭建 Web 自动化测试框架!
  19. 企业微信开发文档接口API获取accesstoken和读取成员内部员工
  20. 5.3.5 消费组未稳定,原有消费者重新加入消费组

热门文章

  1. 简单的图标移入效果(css缩放)
  2. Vue 2.0/3.0
  3. 互联网/计算机 校园招聘信息大全!
  4. mmdetectionV2.x版本 训练自己的VOC数据集
  5. 计算机软件 算什么资产,软件属于固定资产吗
  6. (转)ENVI端元提取(MNF→PPI→n-D Visualizer)
  7. windows 进程监控 Procmon.exe
  8. R语言:wilcox 无法精确计算带连结的p值
  9. 关于什么是物联网?没有比这篇文章更全的了
  10. matplotlib之饼图