系统阐述之bgp

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gease_lcj/article/details/80834810

BGP概述

BGP(Border Gateway Protocol,边界网关协议)

BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),

当前使用的版本是BGP-4(RFC 1771,已更新至RFC 4271)。被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。

 BGP在路由器上以下列两种方式运行:

l              IBGPInternal BGP

l              EBGPExternal BGP

1  BGP:Border Gateway Protocol,边界网关协议,运行在自制系统间的路由协议,主要作用交换域间路由协议;

2  IBGP:Internel BGP,内部边界网关协议,如果两个交换BGP报文的对等实体属于同一个自治系统,那么这两个对等实体就是IBGP对等实体;

3  EBGP:Externel BGP,外部边界网关协议,如果两个交换BGP报文的对等实体属于不同的自治系统,那么这两个对等实体就是EBGP对等实体;

4  IGP: Interior Gateway Protocol内部网关协议,主要作用是发现和计算自治域内的路由信息,包括RIP,OSPF,IS-IS,IGRP等

5  EGP:Exterior Gateway Protocol外部网关协议,一种自治系统相邻两个网关之间交换路由信息的协议,BGP是最新的外部网关协议

为什么要有IBGP,原因如下:
1、IGP的能力限制,IGP处理路由的条目有限,而目前internet上核心路由器的路由表已经超过10万条。假如没有IBGP,那么这些路由只能采取重分发的方式直接导入到IGP中,这样做的缺点很明显:第一,IGP协议的作者并没有打算让IGP来处理如此大量的路由,IGP本身也无法处理这样大的路由数量;第二,如果非要让IGP来处理,那么根据IGP的处理原则,假如这10万路由中任何一条路由发生变化,那么运行IGP的路由器就不得不重新计算路由,更为严重的是,假如其中某一条路由出现路由抖动的情况,例如端口反复UP/DOWN,这会导致所有的IGP路由器每时每刻都不得不把10万条路由重新计算一遍,这种计算量对于绝大多数路由器来说是无法负担的。另外对于运行RIP V1的路由器来说,10万条路由的定期更新,这根本就是无法接受的事情,除去带宽占用率不谈,我想,也只有少量高端的GSR以及TSR能够有这样的性能吧。很显然,我们不可能让网络中所有的路由器都是GSR和TSR,如果真是这样,那么Cisco、juniper以及华为等厂家就要偷笑了。例如:AS100----AS200---AS300,假定AS100/200/300各有100台路由器,而AS100中有1W条路由要传递要AS300中,而AS200的路由器不需要学习AS100的路由。如果没有IBGP的话,那么这1W条路由都必须被重分发到AS200的IGP中去,这样的话,相当于AS200中所有的100台路由器都增加了1W条路由。如果利用IBGP的话,那么AS200中只有运行IBGP的路由器会学习到这1W条路由,其它运行IGP的路由器都不会学习到这1W条路由。并且由于BGP的路由控制能力大大强于IGP的路由控制能力,因此运行IBGP的路由器比运行IGP的路由器能更好的对这1W条路由做一些路由策略的处理,从而保证整个AS内部的路由器学习到的路由数目可以控制在可接受的范围之内。

2. bgp应用实例

Bgp机房:BGP的最主要功能在于控制路由的传播和选择最好的路由。中国联通 、中国电信、中国铁通和一些大的民营IDC运营商都具有AS号,全国各大网络运营商多数都是通过BGP协议与自身的AS号来实现多线互联的。使用此方案来实现多线路互联,IDC需要在CNNIC(中国互联网信息中心)或APNIC(亚太网络信息中心)申请自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到其它的网络运营商的网络中。使用BGP协议互联后,网络运营商的所有骨干路 由设备将会判断到IDC机房IP段的最佳路由,以保证不同网络运营商用户的高速访问。

优势:1. 服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会对占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP双线访问。
2. 由于BGP协议本身具有冗余备份、消除环路的特点,所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份,在一条线路出现故障时路由会自动切换到其它线路。
3. 使用BGP协议还可以使网络具有很强的扩展性可以将IDC网络与其他运营商互联,轻松实现单IP多线路,做到所有互联运营商的用户访问都很快。这个是IP双线无法比拟的。

Ps1:ip双线:一个设备配置两张网卡,就目前来说国内一个电信一个联通,电信用户使用电信网卡,联通同理。但由于服务器接入的是双网卡必须在服务器上进行路由表设置,这给普通用户增加了维护难 度,并且所有的数据包都需要在服务器上进行路由判断然后再发往不同的网卡,当访问量较大时服务器资源占用很大。此方案较简单解决双线问题,但缺点是不够稳 定,维护稍微复杂。一般小型网站或者游戏服务采用该方案。

Ps2:IDC:是对入驻(Hosting)企业、商户或网站服务器群托管的场所。虽然BGP方案是最好的解决方案但由于此方案需要IDC提供商的设备投入与带宽投入方面较大并且技术上较为复杂,所以目前国内采用此方案仅限于实力较强的专业IDC服务商

 

BGP特性描述如下:

l              BGP是一种外部网关协议(Exterior Gateway ProtocolEGP),与OSPFRIP等内部网关协议(Interior Gateway ProtocolIGP不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。

l              BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。

l              BGP支持CIDRClassless Inter-Domain Routing,无类别域间路由)。

l              路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。

l              BGP路由通过携带AS路径信息彻底解决路由环路问题。

l              BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。

l              BGP易于扩展,能够适应网络新的发展。

相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。

 

BGP的消息类型

1. 消息头格式

BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头,其格式如图1所示。

1 BGP消息的报文头格式

主要字段的解释如下:

l              Marker16字节,用于标明BGP报文边界,所有比特均为1”。

l              Length2字节,BGP消息总长度(包括报文头在内),以字节为单位。

l              Type1字节,BGP消息的类型。其取值从15,分别表示OpenUpdateNotificationKeepaliveRoute-refresh消息。

2. Open

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

 

2 BGP Open消息格式

主要字段的解释如下:

l              VersionBGP的版本号。对于BGP-4来说,其值为4

l              My autonomous system:本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。

l              Hold time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。

l              BGP identifierBGP标识符。以IP地址的形式表示,用来识别BGP路由器。

l              Opt Parm LenOptional Parameters Length):可选参数的长度。如果为0则没有可选参数。

l              Optional parameters:可选参数。用于多协议扩展(Multiprotocol Extensions)等功能。

 

 

3. Update

Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。其消息格式如图3所示。

 

3 BGP Update消息格式

一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择;同时Update报文还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes字段中。

主要字段的解释如下:

l              Unfeasible routes length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。

l              Withdrawn routes:不可达路由的列表。

l              Total path attribute length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。

l              Path atributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLVType-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。

l              NLRINetwork Layer Reachability Information):可达路由的前缀和前缀长度二元组。

4. Notification

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

 

4 BGP Notification消息格式

主要字段的解释如下:

l              Error code:差错码,指定错误类型。

l              Error subcode:差错子码,错误类型的详细信息。

l              Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。

5. Keepalive

BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。其消息格式中只包含报文头,没有附加其他任何字段。

6. Route-refresh

Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。其消息格式如图5所示。

 

5 BGP Route-refresh消息格式

主要的字段解释如下:

l              AFIAddress Family Identifier,地址族标识。

l              Res.:保留,必须置0

l              SAFISubsequent Address Family Identifier,子地址族标识。

BGP的路由属性

1. 路由属性的分类

BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。

事实上,所有的BGP路由属性都可以分为以下四类:

l              公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。

l              公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。

l              可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。

l              可选非过渡(Optional non-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。

BGP路由几种基本属性和对应的类别如表1所示。

路由属性和类别

属性名称

类别

ORIGIN

公认必须遵循

AS_PATH

公认必须遵循

NEXT_HOP

公认必须遵循

LOCAL_PREF

公认可选

ATOMIC_AGGREGATE

公认可选

AGGREGATOR

可选过渡

COMMUNITY

可选过渡

MULTI_EXIT_DISC (MED)

可选非过渡

ORIGINATOR_ID

可选非过渡

CLUSTER_LIST

可选非过渡

 

2. 几种主要的路由属性

(1)        源(ORIGIN)属性

ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下三种类型:

l              IGP:优先级最高,说明路由产生于本AS内。

l              EGP:优先级次之,说明路由通过EGP学到。

l              incomplete:优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。

(2)        AS路径(AS_PATH)属性

AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能。AS_PATH属性也可用于路由的选择和过滤,,可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。

 

 

6 AS_PATH属性

(3)        下一跳(NEXT_HOP)属性

BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。

下一跳属性取值情况分为三种,如所示。

l              BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址;

l              BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址;

l              BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性。如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。

 

下一跳属性

(4)        MEDMULTI_EXIT_DISC

MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。

MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。

通常情况下,BGP只比较来自同一个AS的路由的MED属性值。

 

 

(5)        本地优先(LOCAL_PREF)属性

LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。

LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。

 

(6)        团体(COMMUNITY)属性

团体属性用来简化路由策略的应用和降低维护管理的难度。它是一组有相同特征的目的地址的集合,没有物理上的边界,与其所在的AS无关。公认的团体属性有:

l              INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。

l              NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS

l              NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。

l              NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS

BGP的选路规则

1. BGP选择路由的策略

在目前的实现中,BGP选择路由时采取如下策略:

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

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

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

l              优选聚合路由;

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

l              依次选择ORIGIN类型为IGPEGPIncomplete的路由;

l              优选MED值最低的路由;

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

l              优选下一跳Cost值最低的路由;

l              优选CLUSTER_LIST长度最短的路由;

l              优选ORIGINATOR_ID最小的路由;

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

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

说明:

l      CLUSTER_ID为路由反射器的集群IDCLUSTER_LISTCLUSTER_ID序列组成,反射器将自己的CLUSTER_ID加入CLUSTER_LIST中,若反射器收到路由中CLUSTER_LIST中包含有自己的CLUSTER_ID,则丢弃该路由,从而避免群内环路的发生。

l      如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。

 

2. 应用BGP负载分担时的选路

BGP中,由于协议本身的特殊性,它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是:IBGP之间发布路由信息时不改变下一跳。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP建立的路由表项),通过这个地址到达路由表中指示的下一跳(依赖路由)。根据下一跳地址找到依赖路由的过程就是路由迭代(recursion)。

目前系统支持基于迭代的BGP负载分担,即如果依赖路由本身是负载分担的(假设有三个下一跳地址),则BGP也会生成相同数量的下一跳地址来指导报文转发。需要说明的是,基于迭代的BGP负载分担在系统上始终启用。

在实现方法上,BGP的负载分担与IGP的负载分担有所不同:

l              IGP是通过协议定义的路由算法,对到达同一目的地址的不同路由,根据计算结果,将度量值(metric)相等的(如RIPOSPF)路由进行负载分担,选择的标准很明确(按metric)。

l              BGP本身并没有路由计算的算法,它只是一个选路的路由协议,因此,不能根据一个明确的度量值决定是否对路由进行负载分担,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担,也就是将负载分担加入到BGP的选路规则中去。

&  说明:

l      BGP只对AS_PATH属性、ORIGIN属性、LOCAL_PREFMED值完全相同的路由进行负载分担。

l      BGP负载分担特性适用于EBGPIBGP以及联盟之间。

l      如果有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。

 

 

10 BGP负载分担示意图

在图10中,Router D和Router E是Router C的IBGP对等体。当Router A和Router B同时向Router C通告到达同一目的地的路由时,如果用户在Router C配置了负载分担(如balance 2),则当满足一定的选路规则后,并且两条路由具有相同的AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值时,Router C就把接收的两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router D和Router E转发一次该路由,AS_PATH不变,但NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。其它的BGP过渡属性将按最佳路由的属性传递。

3. BGP发布路由的策略

在目前的实现中,BGP发布路由时采用如下策略:

l              存在多条有效路由时,BGP发言者只将最优路由发布给对等体;

l              BGP发言者只把自己使用的路由发布给对等体;

l              BGP发言者从EBGP获得的路由会向它所有BGP对等体发布(包括EBGP对等体和IBGP对等体);

l              BGP发言者从IBGP获得的路由不向它的IBGP对等体发布;

l              BGP发言者从IBGP获得的路由发布给它的EBGP对等体(关闭BGPIGP同步的情况下,IBGP路由被直接发布;开启BGPIGP同步的情况下,该IBGP路由只有在IGP也发布了这条路由时才会被同步并发布给EBGP对等体);

l              连接一旦建立,BGP发言者将把自己所有的BGP路由发布给新对等体。

 

 

 

IBGPIGP同步

同步是指IBGP和IGP之间的同步,其目的是为了避免出现误导外部AS路由器的现象发生。

如果一个AS中有非BGP路由器提供转发服务,经该AS转发的IP报文将可能因为目的地址不可达而被丢弃。如图11所示,Router E通过BGP从Router D可以学到Router A的一条路由8.0.0.0/8,于是将到这个目的地址的报文转发给Router D,Router D查询路由表,发现下一跳是Router B。由于Router D从IGP学到了到Router B的路由,所以通过路由迭代,Router D将报文转发给Router C。但Router C并不知道去8.0.0.0/8的路由,于是将报文丢弃。

 

11 IBGPIGP同步

如果设置了同步特性,在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被发布给EBGP对等体。

在下面的情况中,可以关闭同步特性。

l              AS不是过渡AS11中的AS 20就属于一个过渡AS

l              AS内所有路由器建立IBGP全连接

大规模BGP网络所遇到的问题

1. 路由聚合

2. BGP路由衰减

BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000,此数值为系统固定,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。

被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。

3. 对等体组

对等体组(Peer Group)是一些具有某些相同属性的对等体的集合。当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。

在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组在很多情况下可以简化配置。将对等体加入对等体组中,对等体与对等体组具有相同的路由更新策略,提高了路由发布效率。

 

4. 团体

对等体组可以使一组对等体共享相同的策略,而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性,在BGP对等体之间传播,它并不受到AS范围的限制。

BGP路由器在将带有团体属性的路由发布给其它对等体之前,可以改变此路由原有的团体属性。

除了使用公认的团体属性外,用户还可以使用团体属性列表自定义扩展团体属性,以便更为灵活地控制路由策略。

5. 路由反射器

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。

在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器作为客户机(Client)与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。

既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。如图13所示。

 

13 路由反射器示意图

路由反射器和它的客户机组成了一个集群(Cluster)。某些情况下,为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器。这时,位于相同集群中的每个路由反射器都要配置相同的Cluster_ID,以避免路由循环。如图14所示。

 

14 多路由反射器

在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。目前,系统支持配置相关命令来禁止在客户机之间反射路由。

禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。

 

6. 联盟

联盟(Confederation)是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。如图15所示。

 

15 联盟示意图

在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如图15中的AS 200就是联盟ID。

联盟的缺陷是:从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。

在大型BGP网络中,路由反射器和联盟可以被同时使用。

BGP NSF(不中断转发)、GR(graceful restart,优雅重启)

BGP路由器重新启动、RP的切换过程中,数据层面能够继续转发数据。重启时,不发BGP notification;重启后,建立新的TCP会话, 更新RIB和FIB。这通过BGP两个补充去完成:

1.RIB结束标志(end-of-RIB marker):

它是一种BGP update消息,不含可达到NLRI,或是withdrawal NLRI是空的。表示路由更新已经结束,它允许BGP对等体在收到它之前保持只读模式。虽然这个可以通过keepalive消息来完成,但并不是所有厂商都遵循。

2.GR能力(capability):

它表明对等体使用RIB结束标志。重启路由器为GR restarter;其对等体为GR helper。

GR restarter重启时,FIB被标志为“过时”(stale)。GR restarter会与GR helper重新建立BGP会话,接收并处理对等体发过来的BGP路由更新,可是它会延迟路由选择过程,等到收到所有对等体的RIB结束标志。路由选择完成后,更新转发状态,删除“过时”标记,宣告adj-rib-out,和RIB结束标志。

GR helper收到GR restarter的BGP会话的TCP reset后,保留并“过时”从该对等体收到的路由信息,也不会发送BGP notification消息。BGP会话重建后,发送路由更新和RIB结束标志。然后收到对方路由更新和RIB结束标志,此时删除FIB“过时”标记。如果在restarter timer内无法重建BGP会话,删除带有“过时”的路由。重启时间(restart timer)应该小于保持时间(hold timer)。

/*****************************************************************/

基于BGP的GR Restarter为了与BGP对等体建立一个BGP会话连接,首先要发送一个包含了GR能力的OPEN消息到对端,BGP对等体收到该消息后,得知发送方已具有GR能力。这样,通过OPEN消息交互GR能力,GR Restarter与其BGP对等体之间协商建立起GR Session连接。如果双方都没有交换GR能力的信息,建立起的会话也就不具备GR能力。

对于分布式设备,当进行主备倒换时,会话项将丢失,此时具备GR感知能力的BGP对等体会将所有与该GR Restarter有关的路由进行失效标记。但在GR Time内仍按照这些路由进行报文转发,这样确保了在从BGP对等体重新收集路由信息的过程中没有报文丢失。

对于分布式设备,主备倒换后,GR Restarter会重新与BGP对等体建立GR Session连接,同时发送新的GR消息以宣告其重启完毕。此时两个BGP对等体间进行路由信息交换。交换完成后,GR Restarter根据新的路由转发信息更新路由表和转发表,删除失效的路由,完成BGP协议收敛。协议收敛性是指一个网络结点更新了它的路由表,并且在路由协议报文中发出路由改变公告所需的时间参数所反映的路由协议的性能。

MP-BGP

1. MP-BGP概述

传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv6等)的应用,在跨自治系统传播时就受到一定限制。

为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP,目前的MP-BGP标准是RFC 4760(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)。

支持BGP扩展的路由器与不支持BGP扩展的路由器可以互通。

2. MP-BGP的扩展属性

BGP-4使用的报文中,与IPv4地址格式相关的三条信息都由Update报文携带,这三条信息分别NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR(该属性中包含形成聚合路由的BGP发言者的IP地址)。

为实现对多种网络层协议的支持,BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性:

l              MP_REACH_NLRIMultiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。

l              MP_UNREACH_NLRIMultiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由

这两种属性都是可选非过渡(Optional non-transitive)的,因此,不提供多协议能力的BGP发言者将忽略这两个属性的信息,不把它们传递给其它邻居。

3. 地址族

参考RFC 1700(Assigned Numbers)。目前,系统实现了多种MP-BGP扩展应用,包括对VPN的扩展、对IPv6的扩展等。

猜你喜欢

转载自blog.csdn.net/Gease_lcj/article/details/80834810
BGP