bgp协议原理总结

关键词: 算法

bgp协议原理总结(精选4篇)

篇1:bgp协议原理总结

BGP协议原理总结

BGP协议3:

边界网关路由协议(版本3)

RFC1267

王尚

201192339

名词解释:

1 AS(自治系统):在单一技术管理下的一系列路由器,他们使用一个内部网关,在AS内部路由数据包的共同标准,使用同一个外部网关协议来想其他AS传输数据包。因为这个经典的解释已经被扩展,所以对于一个单一的AS来说在内部使用多个内部网关协议和有时多个系列的标准已经很普遍了。(在这里使用的AS强调了这样的事实,即便多个内部网关协议和度量标准被使用,一个AS面向其他的AS的管理拥有一个单一的连贯一致的内部路由方案,并且展示一个始终如一的图片,什么的网络通过它可以到达。从外部的路由的观点来看一个AS可以被看做一个单片集成电路:)

图1 AS系统

IGP(内部的边界网关协议)专门用于自治系统中的网关间交换数据流转通道信息的协议

EGP(外部的边界网关协议)在自治系统间的相邻的网关主机间交换路由信息的协议。常用于在INTERNET主机间交换路由表信息。一个轮询协议,利用HELLO和I-HEARD-YOU消息的转换,能让每个网关控制盒接受网络可达性信息的速率,容许每个系统控制自己的开销,同时发出命令请求更新响应。路由表包括一组一知路由器及这些路由器的可到达地址及路径开销,从而选择最佳路由。每个路由器没个120或者480秒访问邻居一次,邻居发挥完整的路由表来响应。

IBGP(内部边界网关协议)EBGP(外部边界网关协议)EBGP对等体

BGP和IGP同步:一个BGP路由器不将从内部Peer得知的目的地通告给外部Peer,除非该目的地也能通过IGP得知。若一个路由器通过IGP得知该目的地,则可以认为路由能在AS中传播,内部通达已经可以得到保证。2 3

4 5 6 7

BGP协议概述

1 BGP协议是外部路由协议,用来在AS之间传递路由信息。2 是一种增强的距离矢量路由协议。具有以下特点:

① 可靠的路由更新机制 3 4 5 6 7 8 9 ②

丰富的Metric度量方法 ③

从设计上避免了环路的发生 可以为路由附带属性信息

支持CIDR(无类别域间路由)丰富的路由过滤和路由策略

使用的传输层协议是TCP协议,使用的端口号是179 无需周期性的更新

周期性的发送KEEPALIVE报文验证TCP连接的连通性 在进行路由更新时只发送路由增量

BGP路由通告原则

1 当存在多条路径时,BGPSpeaker只选择最优的给自己使用 2 BGPSpeaker只把自己只用的路由通告给邻居

3 BGPSpeaker从EBPG获得的路由会向他的所有BGP邻居通告(包括EBGP和IBGP)

4 BGPSpeaker从IBGP获得的路由不向它的IBGP邻居发送

5 BGP Speaker从IBGP获得的路由是否会通告给他的EBGP对等体要依从于IGP和BGP同步的情况来决定

6 连接一但建立,BGP Speaker将把自己所有BGP路由通告给新的邻居

IBGP全连接

① IBGP对等体物理意义上的全连接 ② IBGP对等体逻辑意义上的全连接

BGP报文种类

1 Open:在TCP会话建立之后,两个邻居都将发送Open消息,每个邻居都

利用该消息标识自己并指定BGP操作参数

2 KeepAlive:当路由器接受了由邻居发送来的Open消息中的指定参数。

它将响应一条KeepAlive消息,此后路由器每60秒发送一条KeepAlive消息,或是以协商的保持时间的1/3为周期发送KeepAlive消息。由于KEEPALIVE纯粹是一个通信知会,不需要携带什么信息,因此KEEPALIVE报文实际上是不带数据的BGP报文头。

3 Update:被用来宣告可行路由、撤销的路由 4 Notification:只要路由器检测到差错就会发送Notificat

ion消息并关闭BGP进程,随后我们将看到BGP邻居断开,然后试图重新建立BGP邻居。BGP报文头

BGP报文的格式都是一样的:BGP报文头+BGP报文体

其中BGP报文头格式如下:

图 2 BGP报文头 ⑴ Maker(16byte):全为1,否则标记值要使用认证机制来计算(认证机制是通过认证信息的一部分来指定的)。标记可以用来探测BGP对端的同步丢失,认证进入的BGP消息。⑵ Length(2byte)BGP报文的全长,长度值必须最少19个字节,最大4096个字节。可能更多,根据报文类型决定 ⑶ Type(1byte)1-Open

2-UPDATE

3—Notification

4KeepAlive

Open报文:

⑷ ⑸ ⑹ ⑺

图3 Open报文头

Version(1字节)当前BGP版本号为3 My Autonomus System(2字节):发射者自导系统号 HoldTIME(2字节):BGP的Hold time为180秒 BGPIDE NTIFIER(4字节):发送者的BGP route ID

⑻ AUTH.CODE

⑼ AUTHE NTICATIO NDATA

Update

图 4 Update报文头

⑽ TOTALPath AttributeSLE NGTH(2字节):总的路径属性长度 0代表在UPDATE消息中没有网络层可达信息域 ⑾ Path Attribute:路径属性,在一个UPDATE中可能存在多个路径属性对。每个路径属性对包括Attribute Flags,Attribute type code,Attribute Date Length 三个字段。Attribute Flags,Attribute type code 各占一个字节。

⒈ Attribute Flags的8位分别表示:

⒉ Attribute type code指明是什么属性。

图 5 Attribute type code属性

⑿ Network(4字节): INTER NET NETWOR K编码表明这个AS的路由由这个路径属性表明

③ KeepAlive报文

④ Notification报文

图6 Notification报文头 ⑴ ERRORCODE:(1字节)

⑵ Error Subcode(1字节)

⑶ Date用来诊断Notification的原因。依赖于错误码和错误子码。Message Length=21+data length

BGP协议中消息的使用

1 通过TCP建立BGP连接时,发送Open报文

2 连接建立后,如果路由需要发送或者路由改变时,发送Update报文告知对端路由信息

3稳定后此时要定时发送KeepAlive报文以保持BGP连接的有效性

4档本地BGP在运行中发生错误时,发送Notification报文告知BGP对端 BGP有限状态机

BGP会话共有6种状态,分别是: 1CONNECT 3OpenSENT

5ESTABLISHED

BGP会话共有13种事件,影响BGP的会话,分别是: 1BGPStop

3BGPTransport ConnectionCLOSED

5BGPTRANSPORTFATALERROR 7HoldTimerExPIRED

9ReceiveOPENMESSAGE

11ReceiveUpdateMESSAGES

13-ReceiveNOTIFICATIONMESSAGE 1 空闲状态 BGP通常以空闲状态开始。在该状态下,它拒绝接收所有入连接。当一个开始事件出现的时候,BGP初始化所有BGP资源,打开重试连接计时器(ConnectRetrytimer)、初始化到邻居的TCP连接、接听来自邻居的TCP初始化消息,并将它的状态转到连接状态。开始事件是由一个操作者配置一个BGP过程,或重置一个已经存在的过程,或者由路由器软件重置BGP过程引起的。一个差错的出现会将BGP过程的状态转为空闲状态。路由器可能会试图发起另外一个是事件。但是对于路由器如何完成这个过程应当加以限制——在具有持续差错的条件下,坚持不懈的试图重新开始会导致摆动。因此,在第一次转向空闲状态以后,路由器会启动重试连接计时器,当计时器终止后,路由器就会放弃重新开始BGP。下一次ConnectRetry时间是前一次的两倍,以此类推。2 连接状态

在这种状态下,BGP过程会等到TCP连接完成以后再决定后续动作。如果TCP连接成功,BGP连接将ConnectRetry清零,完成初始化过程,给邻居发送一个Open消息并转移到发送Open消息状态。如果TCP连接建立失败。BGP过程会继续监听由邻居发起的连接、重置ConnectRetry计时器并转移到激活状态。

如果再连接状态下,ConnectRetry计时器超时了,计时器将重新开始计时,并再一次试图与邻居建立一个TCP连接,BGP状态继续保持在连接状态。任何一个其他输入事件的出现都会导致BGP状态转向空闲。3 激活状态

在这个状态下,BGP过程试图与邻居建立一个TCP连接。如果TCP连接建立成功,BGP过程将ConnectRetry清零,完成初始化工作,给邻居发送一个Open消息并转移到发送Open消息状态。

如果BGP在激活状态时,ConnectRetry计时器超时,该过程回到连接状态并且重置ConnectRetry计时器。它同样也发起一个到对等的TCP连接并且继续监听来自对等得连接。如果邻居试图与一个未知的IP 地址建立TCP会话,那么ConnectRetry计时器会被重置,连接被拒绝并且本地过程保持在激活状态。任何一个输入事件(除了开始事件,在激活状态下该事件会被忽略)都会导致状态转移为空闲。

4 发送Open消息状态

在这种状态下,已经发送了Open消息,BGP正在等待从邻居发来的Open消息。当收到一个Open消息后,检查该消息的所有字段。如果发现了差错,会给它的邻居发送一个Notification消息并且将状态转移到空闲。

如果再接收到的Open消息种没有发现差错。BGP给邻居发送一个KeepAlive消息,并且将KeepAlive计时器置位。邻居之间协商一个Hold时间,他们会选用较小的值。如果协商的Hold时间是0,则没有启动Hold和KeepAlive计时器。根据对等的AS号,决定该连接是内部的还是外部的,并且将状态转移到Open消息确认。

如果收到了一个TCP断开消息,本地过程断开BGP连接,重置ConnectRetry计时器,开始监听将要由邻居发起的新的连接并将状态转移到激活。任何一个输入事件(除了开始事件,在激活状态下该事件会被忽略)都会导致状态转移为空闲。5 Open消息确认状态

在这种状态下,BGP过程会等待一个KeepAlive或者Notification消息。如果收到KeepAlive消息,转移到已建立状态。如果收到Notification消息或者TCP断开消息,状态转移到空闲。

如果Hold计时器超时,检测到一个差错或出现一个stop事件,BGP过程会给邻居发送一个Notification消息并且断开BGP连接,将状态转向空闲。6 已建立状态

在这种状态下,BGP对等之间的连接完全建立起来了,对等之间可以交换Update、KeepAlive、Notification消息。如果收到Update或者KeepAlive消息,重新启动Hold计时器(如果协商的Hold时间是非零)。如果收到Notification消息,状态会转移到空闲。任何其他的事件都会导致Notification消息的发送并将状态转移到空闲。

BGP建立邻居后,会通过相互发送类似hello包的数据来维持邻居关系,这个数据包称为KeepAlive,默认60秒发送一次,holdtimer为180秒,即到达180秒没有收到邻居的KeepAlive,便认为邻居丢失,则断开与邻居的连接。KeepAlive发送时间间隔的推荐值为Hold计时器值饿1/3,最小为3秒。

BGP Update 消息处理

Update消息仅仅在建立状态被接收。当一个UPDATE消息被接收,每一个域要有效性检查。

如果可选的非转发的属性不认识,默认丢弃。如果可选转发属性不认识,属性标志字节 设置部分位(第三个高位顺序位),保留属性公告到别的BGP Speaker。如果可选的属性被认识,而且值有效,要根据可选参数的类型在本地处理,保留,如果必要的话,更新广播到别的BGP发言者。

如果UPDATE消息包括非空的WITHDRAWNROUTES域,先前广播的路由如果目的地包括在这里面需要从Adj-RIB_IN中移出来。BGPSpeaker应该运行决策过程,原因是先前的公告路由不再可用。

如果UPDATE消息包括了一个可用的路由,应该放在相应的Adj-RIB_IN内部,同时做下面的步骤:

① 如果网络层可达信息(NLRI)和Adj-RIB_IN的路由一样,新路由应该替换老路由,这样明确撤销了老路由的服务。BGP发言者运行决策过程,原因是老路由不再存在。

②如果新的路由重叠包含在Adj-RIB-IN老路由内部,BGPSpeaker应该运行决策过程,因为更特殊路由使得原来的更不特殊路由的一部分不可用了。

③如果新路由有和Adj_RIB_IN内包含的路由同样的路径属性,并且更特殊。不需要做任何事情。

④如果新路由的NLRI不同于Adj-RIB-IN存储的任何路由,新路由应该放入。BGP发言者应该运行决策进程。如果新路由是更不特别的重叠路由,BGP发言者应该运行对更不特殊的路由运行决策进程。

Ⅰ 决策过程

决策过程选择路由用于下一步的通告,方法是应用本地策略信息库(PIB)的策略处理Adj-RIB-IN中的路由。决策过程的输出是广播到对端的路由集合;被选的路由存储在Adj-RIB-Out中。选择过程可以定义为一个函数,给定路由的属性作为参数,返回非负的整数指示路由的优 先级别。计算路由优先级别的函数不能把以下的情况作为输入:别的路由的存在,别的路由的不存在,或者别的路由的路径属性。路由选择对每一个可用路由运用优先程度算法,选择最高优先程度的路由。

决策过程操作Adj-RIB-IN包括的路由中,同时负责:-选择路由通告到本地的AS中别的BGP发言者-选择路由通告到邻居AS中的BGP发言者-路由聚合和路由信息简化

决策过程分三期,通过不同的事件触发。

⑴一期负责计算来自邻居AS的BGP发言者的每条路有的优先级,通告到在本地AS的 别的BGP发言者到每个确定的目的地的具有最高优先级的路由。⑵二期在一期完成的时候激活。负责从到达目的地的所有路由中选择最好的路由,同时安装每个选择的路由到相应的LOC-RIB。⑶在LOC-RIB修改后激活三期。负责发布LOC_RIB中的路由到邻居AS的每个对端。路由聚合和信息简约在这期可选的执行。PHASE1: 优先级的计算

无论何时本地的BGP发言者接受到邻居AS的对端的通告新的路由,替代路由,测销路由的UPDATE消息,都要激活一期决策过程,一期决策过程是独立的过程,当没有别的工作要做的时候就停止。一期决策功能在操作任何包含路由之前锁定Adj-RIB-IN,在操作完成所有新的或者不可用的路由之后,解开Adj-RIB-IN。每一个新收到或者替代的可用路由,本的BGP发言者应该确定一个优先级。如果路由是通过本地AS的BGP发言者学习到的,或者LOCAL-PREF值被当作优先级,或者本地系统应该根据预先配置的策略信息计算路由优先级。如果路由通过邻居AS中的BGP发言者学习,优先级的计算是根据预先配置的策略。策略信息的确切特性和相关计算是本地的问题。本的发言者应该云内部更新过程选择并且通告最佳路由。PHASE2: 路由选择

第二期决策函数在第一期完成后激活。第二期函数是独立的过程当没有更进一步的工作要做的时候就停止。第二期进程要考虑ADj_RIB_IN中的所有路由,包括从自己的AS中和邻居的AS中的BGP发言者接收的路由。当运行第三期决策函数,第二期决策函数可以阻塞。第二期距测函数应该在开始函数前锁定所有的Adj-RIB-IN,在完成后解开所有。

如果BGP路由的NEXT-HOP属性描述了一个地址,在本地LOC-RIB中BGP发言者没有路由,BGP发言者应该排除在第二期决策函数外面。

为了ADj_RIB_IN中的路由的每一个目的地集合,本地BGP发言者以确定路由: A)对同一个目的地集和,最高优先级的路由,或者 B)是唯一的到目的的地路由,或者 ⑶是第二期解扣规则的选择结果。

本地发言者应该安装路由到LOC-RIB中,替代LOC-RIB中保存的任何道相同目的地的路由。本地发言者必须根据选择路由的NEXT-HOP属性确定立即下一跳,通过查找IGP悬着IGP中的可能的路径。当安装选择路由在LOC_RIB中,立即下一跳必须被使用。如果NEXT-HOP属性描述的地址改变,路由选择应该按照上面的说明重新计算。不可用的路由应该从LOC-RIB中拿出,相应的不可用路由应该从Adj-RIBs-IN拿出。解扣

在Adj-RIBs-IN中一个BGP发言者可以有多个有相同的优先级的路由到同一个目的地。本的发言者可以选择包含在相应LOC-RIB中的一条路由。本地发言者认为所有的路由,不论是邻居AS的BGP发言者的路由,还是本地AS的BGP发言者的路由是一样的。

下面的解扣过程假设一个自治系统的所有AS的每一个候选路由能够确定到NEXT-HOP属性描述的地址的路径代价(内部距离)。根据下面的算法解扣。A)如果本地系统配置考虑MULTI_EXIT_DISC,候选路由的MULTI_EXIT_DISC属性不同,选择MULTI_EXIT_DISC属性值最小的。

B)否则,选择到路与欧的NEXT-HOP属性描述的入口的代价(内部距离)最小的。如果有几个路由有相同的代价,按照下面的过程解扣

-如果最少有一个路由是通过邻居AS的BGP发言者通告的,选择邻居AS的BGP发言者通告的鲈鱼哦,如果BGP的标示符的值是所有邻居AS的BGP发言者中最小的。-否则,选者BGP标示符最小的BGP发言者通告的路由。PHASE3: 路由分发

第三期路由决策过程可以被第二期的完成激活,或者下面的事件发生: A)LOC-RIB中的到本地目的地的路由改变。

B)当本地产生的通过BGP以外的方式学习的路由改变。C)当新的BGP发言者-BGP发言者连接建立。

第三期函数是独立的过程当没有进一步的工作去做的时候停止。第三期路由决策过程应该被阻塞,如果第二期决策过程在运行。

所有的LOC-RIB中的路由应该被处理到相应的到Adj-RIBs-Out的入口。路由聚合和信息简约技术可选执行。为了更好支持未来的AS间多播能力,参加AS间多播路由的BGP发言者应该通告他从外部对端收到的路由同时如果安装在Loc-RIB内,因该通告到接收路由的对端。对没有参加AS间多播路由的BGP发言者这个通告是可选的。如果做这样一个通告,NEXT-HOP属性应该被设置为对端地址。应用可以优化这个通告,组合AS-PATH属性的信息不但包括自己的AS号码而且通告路由的对端的AS号码(这个组合要求ORIGIN属性被设置为INCOMPLETE)。另外,应用不需要传递可选的或者自决的路径属性在这种通告中。

当Adj-RIBs-Out更新而且转发信息库(FIB)完成,本地BGP发言者应该运行外部更新进程 路由覆盖

BGP发言者可以传送具有重叠的网络层可达信息(NLRI)的路由到别的BGP发言者。NLRI重叠产生于一些列目的地对非匹配的多个路由是唯一的。由于BGP使用IP前缀对NLRI编码,重叠一般要展示子网关系。路由描述了更小范围的目的地(更长的前缀)称为更特别路由,路由描述了更大范围的目的地(更短的前缀)成为更一般路由。反之同样。这种优先关系有效分解了更一般路由为两部分: -一系列目的地,仅仅使用更一般路由描述。

-一系列路由,使用更一般和更特殊路由的重叠描述。当重叠路由发生在同样的Adj-RIB-IN,更特殊的路由应该有优先权,顺序是更特殊到更一般。重叠描述的目的地的集合表明一部分更一般路由是可用的,但是当前不可用。如果一个更特殊的路由后来撤销了,重叠描述的目的地的集合将可以使用更一般的路由到达。

如果BGP发言者接收了重叠路由,决策过程应该考虑重叠路由的语义。特别是,如果BGP发言者接收了同一个对端的更一般的路由同时拒绝了更特殊的路由,那末重叠表示的目的地可能不转发到路由的AS-PATH属性列出的AS那里。因此,BGP发言者可以由下面选择:

a)同时安装更一般和更特殊的路由 b)只安装更特殊的路由

c)只安装更一般路由的非重叠部分(这意味着解聚和)d)聚合着两条路由同时安装聚合路由 e)安装更一般的路由 f)都不安装

如果一个BGP发言者选择e),应该加入ATOMIC-AGGREGATE属性到路由中。承载ATOMIC-AGGREGATE属性的路由不能被解聚和。也就是说,路由的NLRI不能被是更特殊。向这个路由转发不保证IP 包实际沿着路由的AS-PATH属性列出的AS中转。如果BGP发言者选择A),必须不在通告更特殊的路由的时候通告更一般的路由。

ⅡUpdate发送过程

Update-SEND进程负责通告UPDATE消息到所有的对端。例如,他发布决策进程选择的路由到位于同样的自治系统或者邻居自治系统的BGP发言者。不同自治系统的BGP发言者之间信息交换的法则.相同自治系统的BGP发言者之间信息交换的法则. 在BGP发言者集合之间的路由信息的发布,所有BGP发言者如果在同一个自治系统,称为内部发布。内部更新

内部更新进程是发布路由信息到本地自治系统的BGP发言者。

当BGP发言者从在本地自治系统的别的BGP收到了UPDATE消息,接收BGP发言者不应该再分配UPDATE消息中的路由信息道别的本地自治系统的BGP发言者。当BGP发言者接收了邻居自治系统的BGP发言者的一条新的路由,如果下面的情况之一发生,应该使用UPDATE消息通告路由到本的自治系统的所有的BGP发言者:

1本地BGP发言者安排给新接收的路由的优先程度高于本地发言者已经安排的接受自邻居自治系统的别的路由的优先级

2没有接收到别的邻居自治系统的BGP发言者发送的路由 3新接收路由是几个最高优先级,同样目的的的路由解扣的结果,当BGP发言者受到了UPDATE消息,有非空的WITHDRAWNRJOUTES域,应该从Adj-RIB-IN里去掉所有的在这个域中(IP前缀表示)的目的地。发言者应该做下面的附加步骤:

1如果相应的可用路由先前没有被通告,不需要做更多的行动。2如果相应的可用路由先前被通告,那末:

I 如果被选择通告的新的路由和不可用路由有相同的网络层可达信息,本的系统因该通告替代路由。

II 如果替代路由不能用于通告,BGP发言者应该包括不可用路由的目的的(IP 前缀形式)在UPDATE消息的WITHDRAWNROUTES域,因该发送这个消息到先前通告了相应的可用路由的对端。所有的通告过的可用路由因该放入相应的Adj-RIBs-Out,所有不可用的但是通告过的路由应该被从Adj-RIBs-Out清除。解扣(内部更新)

如果一个本地的BGP发言者连接到邻居AS的几个BGP发言者,有多个Adj-RIBs-IN和这些对段相关联。这些Adj-RIB-IN可以包括到同一个目的的的多个等价优先级的路由,所有的路由要通告到邻居自治系统。本的BGP发言者应该根据下面法则选择其中一条路由:

A)如果候选路由的NEXT-HOP和MULTI-EXIT-DISC属性不同,本地系统配置中考虑了MULTI-EXIT-DISC属性,选择有最低的MULTI-EXIT-DISC属性的路由。

B)如果本的系统能够确定候选路由中T-HOP属性描述的实体的路径的成本,选择成本较低的路由。

C)在所有别的情况中,选择通告路由的BGP发言者具有较低的BGP标示符的路由。外部更新

外部更新过程和邻居AS的BGP发言者路由信息的发布有关。作为阶段3选择过程的一部分,BGP发言者更新他的Adj-RIBs-Out和转发表.所有新的安装的路由和所有新的没有替代路由的不可用的路由要通过UPDATE消息通告到邻居AS内部的BGP发言者。

任何位于LOC-RIB的路由,如果是不可用的应该被撤销。在自己的AS内部如果可达地址改变应该发送UPDATE消息。控制路由流量开销

BGP协议限制路由流量(也就是UPDATE消息),目的是减少通告UPDATE消息的带宽和消化UPDATE消息信息的决策过程的处理能力。⑴ 路由通告的频率

参数MinRouteAdvertisementInterval确定了BGP发言者到特定目的地的两个路由通告之间的最小时间。这个速率限制过程是基于单个目的地的,但是这个MinRouteAdvertisementInterval值是对每一个对端设置的。

从单个BGP发言者通告可用路由到目的地集合的来自BGP发言者的两个UPDATE消息必须至少分离MinRouteAdvertisementInterval.无疑, 只有精确保持目的地集合的计时器才能做到这一点。这是不现实的开销。任何保证BGP发言者接受自邻居AS通告的两个UPDATE消息之间时间间隔的技术通告可用路由到目的的地最小间隔是MinRouteAdvertisementInterval,也要保证大于间隔的一个常量是可以接受的。

由于需要在AS内部快速收敛,本过程不能用于从本AS中别的BGP发言者发来的路由。为了避免永久黑洞,本过程不能用于明确的撤销或者不可用路由(也就是,目的地(通过IP 前缀表示)在UPDATE消息中WITHDRAWNROUTEST域的路由)。这个过程不限制路由选择的速率,但是仅仅限制路由通告的速率。当等待MinRouteAdvertisementInterval溢出时,如果新的路由被选择多次, 在MinRouteAdvertisementInterval的最后最后选择的路由被通告.⑵ 路由产生的速率

参数MINASORIGINATIONINTERVAL确定了在BGP发言者本身的AS,中报告变化的UPDATE消息的连续通告的最小间隔 JITTER

为了减少给定的BGP发言者的BGP消息产生尖峰,jITTER应该被使用于MINASORIGINATIONINTERVAL, KeepAlive,MinRouteAdvertisementInterval计时器.给定的BGP发言者应该应用同样的jITTER数量,无论UPDATE被送到那个目的地;也就是说,jITTER不能被基于“每个对端” 使用。

引入的JITTER的数量使用相应的计数器的基本值乘以一个范围是0。75到1的随机因子。

路由信息的有效组织

选择将要广播的路由信息,一个BGP发言者可以采用几个方法,组织信息为一个有效形式。①信息简约

信息简约可以在策略控制的程度上使用简约-在信息崩溃之后,相同的策略在等价类上使用在所有的目的地和路径。

决策进程使用下面方法可选的减少放在ADj-RIB_Out中的信息数量: A)网络层可达信息(NLRI)

目的IP 地址可以被看作IP 地址前缀。若地址结构和在AS管理者控制下的系统能够达成一致,有可能减少UPDATE消息中NLRI的尺寸。B)AS_PATHS(AS路径): AS路径信息可以表达为顺序AS-SEQUENCE和无序AS-SET。S-SET可以用在路由聚合算法,描述在9。2。4。2中。他们减少了AS-PATH的尺寸,通过只列出每个AS号码一次,无论在聚合的AS-PATH上出现了几次。

一个AS-SET意味着NLRI列出的目的地能够通过由AS-SET中的部分AS组成的路径到达。AS-SET提供有效的信息来避免回环;然而使用他们可能会剪除一些潜在的有用路径,原因是一些路径不再被单独通过AS-SEQUENCE的方式列出。实际使用中这不是个问题,应为一旦IP 报到达AS组的边界,这个点上的BGP发言者更可能有更多的详细路径信息并能够区分到目的地的路径。②聚合路由信息

聚合是一个过程用来组合几个不同的路由来广播一个单独的路由。聚合作为决策的一个部分发生,这样可以减少放在AjD_RIBS_Out中路由信息的数量 聚合减少了BGP发言者存储并且和别的BGP发言者交换的路由。路由聚合使用下面的独立于期望类型的路径属性和网络层可达信息的过程。

有下面属性的路由不能被聚合。除非相应的属性是唯一的MULTI_EXIT_DISC, NEXT_HOP.具有不同类型码的路径属性不能被聚合在一起.一些类型码的路径能够被聚合,使用下面的规则: ORIGIN属性:如果最少一个被聚合路由它的ORIGIN指示INCOMPLETE,聚合路由ORIGIN的属性值是IMCOMPLETE.否则,如果最少一个路由的属性是EGP,聚合路由的属性是EGP.在所有别的情况下ORIGIN属性是INTERNAL.AS-PATH属性:如果路由聚合有单一的AS-PATH属性,聚合的路由有同样的AS-PATH属性.为了聚合路由属性,我们建模AS-PATH属性作为二元组<类型,值>,”类型”定义了路径段的属性(比如AS-SEQUENCE,AS_SET),”值”定义了AS号码.如果路由被聚合有不同的AS-PATH属性,聚合的AS-PATH属性应该满足:-所有在聚合AS-PATH的AS-SEQUENCE二元组应该在最早的路由集的AS-PATH中都出现.-在聚合的AS-PATH中AS-SET类型的所有的二元组应该出现在最少一个AS-PATH类型中(可以出现为AS-SET或者AS-SEQUENCE)。

-在聚合AS-PATH中任何类型AS-SEQUENCE的二元组X领先于Y,在初始的AS-PATH中,X在每一个AS-PATH中领先于Y,不论Y的类型。

-在AS-PATH中不能由同一个二元组具有相同值却出现了两次,不论二元组的类型。应用可以选择任何算法只要符合这些规则。最少的一个构造应用应该能够执行下埋嗯的算法来满足所有的条件。

-确定最长的对所有的聚合AS-PATH属性来说的二元组序列(如上定义)。把这个序列作为聚合后的派头AS-PATH属性序列。

-设置剩下的AS-PATH属性二元组为AS-SET,把他们加入到AS-PATH后面。-如果聚合AS-PATH属性有多个相同的二元组(不论二元组的类型),清除所有的,只留下一个通过去掉AS-PATH属性中的AS-SET类型。

ATOMIC_AGGREGATE: 如果最少一个路由有这个路径属性,那末聚合后的路由应该有这个属性。

AGGREGATOR: 聚合者属性应该被忽略。路由选择标准 总的来说,在几个可替代路由中比较路由的额外法则是在本文讨论问题之外的。有两个例外。-如果新路由中AS路径出现了本地AS,新路由不能被看作比别的路由更好的路由。如果使用这样的一个路由,路由环路会发生。

-为了成功实现发布操作,只有具有稳定可能性的路由被选择。这样,一个AS必须避免使用不稳定的路由,必须不使路由自发选择快速改变。前面句子中“不稳定”和“快速”的名词量化需要经验,但是原理是清楚的。产生BGP路由

一个BGP发言者可以通过某些方式(比如通过IGP)获得的注入BGP的路由信息产生BGP路由。BGP发言者产生BGP路由应该通过决策进程来安排路由的优先级别。这些路由可以被发布到别的在本地AS的BGP发言者作为内部更新进程的一部分。在一个AS内部决定是否发送非BGP获得的路由,取决于AS内部的环境(也就是IGP类型)而且可以通过配置来控制。

BGP路径属性

每个路径属性由1字节的属性标志位,1字节的属性类型,1或2字节路由属性长度和路径属性数据组成。

属性标志位:

位0:0表示此属性必选,1表示此属性可选。

位1:0表示此属性为非过渡属性,1表示此属性为过渡属性。

位2:0表示所有属性均为路由起始处生成,1表示中间AS加入了新属性。

位3:0表示路由属性长度由1字节指示,1表示由2字节指示。

位4至位7:未用置0

位0和位1标识了BGP的4类路由属性:

-(01)公认必选:BGP的UPDATE报文中必须存在的属性。它必须能被所有的BGP工具识别。公认必选属性的丢失意味着UPDATE报文的差错。这是为了保证所有的BGP工具统一于一套标准属性。

-(01)公认自决:能被所有BGP识别的属性,但在UPDATE报文中可发可不发。

-(11)可选过渡:如果BGP工具不能识别可选属性,它就去找过渡属性位。如果此属性是过渡的,BGP工具就接受此属性,并把它向前传递给其它BGP路由器。

-(10)可选非过渡:当可选属性未被识别,且过渡属性也未被置位时,此属性被忽略,不传递给其它BGP路由器。

路由属性类型:

⑴ORIGIN(TYPECODE = 1,公认必选属性)

指示此路由起始类型:

⑵AS_PATH(TYPECODE = 2,公认必选属性)

AS路径属性由一系列AS路径段(SEGMENT)组成。每个AS路径段为一三元组<路径段类型,路径段长度,路径值>。

路径类型有:

路径段长度用1字节表示AS号的数量,即最长为255个AS号。

路径值为若干AS号,每个AS号为2字节。

⑶NEXT_HOP(TYPECODE = 3,公认必选属性)

此属性为UPDATE消息中的信宿地址所使用的下一跳。

⑷MULTI_EXIT_DISC(TYPECODE = 4,公认自决属性)

简称MED属性。为一4字节无符合整数。它在AS区域间传播,用来帮助一个其它AS区域的BGP伙伴选择进入本AS区域的人口。

⑸LOCAL_PREF(TYPECODE = 5,公认自决属性)

本地优先级属性。为一4字节无符合整数。它在AS区域内传播,用来帮助一个本AS区域内BGP伙伴选择进入其它AS区域的出口。

⑹ATOMIC_AGGREGATE(TYPECODE = 6,公认自决属性)

元聚合属性。长度为零。它表示本地BGP在若干路由中选择了一个较抽象的(LESSSPECIFIC)路由,而没有选择较具体(SPECIFIC)的路由。

⑺AGGREGATOR(TYPECODE = 7,可选过渡属性)

聚合者属性。长度为6字节,分别为最后进行路由聚合的路由器的AS号(2字节)和IP 地址(4字节)。

篇2:bgp协议原理总结

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

使用此方案具体以下优点:

1. 服务器只需要设置一个IP地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会对占用服务器的任何系统资源。服务器的上行路由与下行路由都能选择最优的路径,所以能真正实现高速的单IP双线访问。

2. 由于BGP协议本身具有冗余备份、消除环路的特点,所以当IDC服务商有多条BGP互联线路时可以实现路由的相互备份,在一条线路出现故障时路由会自动切换到其它线路。

篇3:BGP4+协议研究与应用

为了有效管理飞速发展的互联网,而将其划分为多个相对独立的网络,称为自治域(AS)。AS之间通过外部网关协议(EGP)来交换网路可达性信息,以实现整个互联网的连通。BGP是应用最广泛的外部网关协议,目前的最新版本是BGP4,但它仅支持IPv4,这种局限性给它的进一步发展带来了很大障碍。

1 BGP4+协议

1.1 面向多协议的BGP4+扩展

应广大服务提供商和用户的要求,IETF提出了BGP的多协议扩展解决方案BGP4+,它很好地解决了BGP4的IPv4局限性问题,使BGP协议具有了灵活的可扩展性,能够支持IPv6等多种网络层协议,而且具有良好的向后兼容性。

BGP4+在BGP UPDATE报文的路径属性数据域新增加了2种类型的属性:多协议可达属性(MP REACH NLRI)和多协议不可达属性(MPUNREACH NLRI)。这2种新的路径属性可以携带多种网络层协议的路由信息具有高度可扩展性

在RFC2858中定义的多协议可达属性格式为:

(1)地址族标识,2 bytes,具体类型在RFC1700中定义;

(2)后地址类型标识,1 byte;

(3)下一跳网络地址,由1 byte的长度字段和可变长的地址值字段组成;

(4)下一跳的子网连接点(SNPA)信息,第1个字节标识了SNPA的个数,后续的每个SNPA的地址信息由1 byte的长度字段和可变长的地址值字段组成;

(5)网络层可达性信息(NLRI),由多个二元组构成,每个二元组包括1 byte的长度字段和可变长的前缀字段。

多协议不可达属性格式如下:

(1)地址族标识,2 bytes,具体类型在RFC1700中定义;

(2)后地址类型标识,1 byte;

(3)撤销路由NLRI,由多个二元组构成,每个二元组包括1 byte的长度字段和可变长的前缀字段。

属性中的字段即可携带路由信息进行路由的宣告或撤销。这2个路径属性是可选非过渡的,不支持BGP4+的网络节点将忽略这2个属性,也不会将其转发。

1.2 BGP4+协议流程

BGP4+的协议流程与BGP4的基本相同,遵循RFC1771等标准的规定。只是由于新的路径属性的引入,增加了边界网关协议更新消息(BGP UPDATE)报文处理的复杂性。为了支持IPv6,BGP4+所做的特别工作主要体现在:

(1)在BGP OPEN报文的可选参数“权能通告”中增加IPv6地址族类型,与BGP对等体协商IPv6协议处理能力;

(2)增加对多协议可达属性和多协议不可达属性的发送处理,其中对多协议可达属性的下一跳地址和SNPA信息字段也要包含对IPv6地址的描述;

(3)增加对多协议可达属性和多协议不可达属性的接收处理,异常处理包括报文合法性检查、与其他路径属性的包容关系等。

2 BGP4+软件设计

2.1 软件组成

BGP4+软件由操作系统(包含Socket、转发表等组件),BGP协议软件,RTM路由管理软件和维护管理软件组成,如图1所示。

图中协议软件是软件的核心主要模块组成如下:

(1)决策协调模块(DC)管理着输入路由表(AdjRIBs-In)和本地路由表(Loc-RIBs),根据BGP连接的建立(或撤销)来增加(或删除)一个Adj-RIB-In。它接收NM发来的BGP UPDATE消息和DC-RTM发来的内部更新,在Adj-RIB-In中增加(或删除)路由。通过决策优选出最佳路由并决定是否加入Loc-RIB。它还用于协调实现下一跳可达性检查、路由振荡衰减和路由汇聚等功能;

(2)更新管理模块(UM)管理着输出路由表(AdjRIBs-Out),向BGP对等体发送BGP UPDATE消息,向DC-RTM发送内部更新,控制路由输出的周期和抖动,并用于实现无循环选路功能;

(3)策略管理模块(PM)管理着策略数据库,对将要加入Adj-RIBs-In和Adj-RIBs-Out的路由进行过滤,对将要发送给BGP对等体的路由进行属性修改。它决定是否进行路由振荡衰减和路由汇聚,并实际计算汇聚路由;

(4)RIB抽象层(RA)提供了一套函数调用接口用于对RIB(路由表)进行增加、查询、删除、修改操作;

(5)邻居管理模块(NM),它管理着BGP邻居数据库,维护BGP状态机和保活、保持和连接重试等定时器。监听连接请求,根据需要发送BGP OPEN、KEEPALIVE和NOTIFICATION报文。对BGP UPDATE报文进行解析(或组包)处理。还实现了消息合法性检查和连接冲突检测等功能。

2.2 工作过程

以图2所示的网络环境为例,路由器3上的BGP协议软件的工作过程如下:

(1)Socket收发模块从系统Socket收到来自路由器1的BGP UPDATE报文,通过内部消息通道发给NM模块;

(2)NM解析报文后发给DC,假设该报文通告了一条IPv6路由;

(3)DC向PM询问该路由是否可以加入AdjRIB-In,如果可以则调用RA插入该路由;

(4)DC询问RTM进行下一跳可达性检查,若通过,则开始BGP判决,优选出最佳路由,插入LocRIB;

(5)DC将控制权交给UM,UM将该路由通告给RTM;

(6)RTM路由装入系统转发表,并重分发到其他路由协议软件(如);

(7)UM向PM询问该路由是否应该加入AdjRIB-Out,如果需要加入,则对路由进行属性修改后调用RA插入该路由;

(8)UM向路由器2发送BGP UPDATE消息通告该路由,由NM组包后通过Socket收发模块发送到网络中。

2.3 开发过程

BGP4+软件在BGP协议软件的基础上针对IPv6应用环境进行了开发,增加了维护管理模块和初始化过程。BGP4+软件通过维护管理接口接收来自人机界面的维护命令,调用BGP协议软件的MIB管理接口API对BGP4+协议进行控制管理。BGP4+软件工作流程如下:

(1)BGP4+初始化过程在VxWorks系统的启动任务的usrAppInit函数中完成,运行在协议栈相关初始化过程之后,主要完成BGP协议软件的启动,BGP4+软件所需数据的初始化,创建BGP4+维护管理模块任务;

(2)BGP4+维护管理模块任务通过Socket接收来自人机界面的配置管理消息后,解析消息内容,调用BGP协议软件API,进行BGP4+协议配置、邻居配置和策略配置等操作,将配置结果回应给人机界面;

(3)BGP4+维护管理模块任务接收来自人机界面的查询状态消息后,调用BGP协议软件API,进行BGP4+协议状态、邻居状态、策略状态和本地路由表的查询操作,组成查询响应消息上报给人机界面。

3 BGP4+协议应用

3.1 应用环境

在某课题中,BGP4+软件在大容量核心路由交换机样机中得到应用,使之实现了BGP协议对IPv6的支持试验网络拓扑如图所示

3.2 应用过程

3.2.1 配置BGP自治域和邻居

通过show bgp neighbor命令可查看邻居关系连接状态。

3.2.2 配置直连路由并被BGP重分发

通过show router命令可查看路由重分发结果。

3.2.3 配置静态路由并被BGP重分发

通过show router命令可查看路由重分发结果。

4 结束语

BGP4+协议是BGP的多协议扩展解决方案,上述BGP4+软件在某大容量核心路由交换机样机中应用,运行稳定,通过了协议测试仪的测试,满足了设备功能和性能要求。

参考文献

[1]RFC1771.ABorder Gateway Protocol 4(BGP-4)[S],1995.

[2]RFC2858.Multiprotocol Extensions for BGP-4[S],2000.

[3]RFC4271.ABorder Gateway Protocol 4(BGP-4)[S],2006.

篇4:bgp协议原理总结

关键词城域网客户网络BGP

1客户需求

目前,大部分电信城域网通过汇聚路由器运行IBGP协议来承载用户路由,而部分客户网络则需要通过双上行接入电信城域网,并要求双上行的链路在路由上实现冗余且能够自动切换。从安全角度考虑,城域网汇聚路由器一般不与客户网络运行IGP协议,但如果汇聚路由器与客户网络运行静态路由,再将静态路由引入到城域网的BGP协议,此方式在链路接入正常Down|UP的时候没有问题,但是当链路出现“单通”且静态路由不会消失的情况下,就会导致业务的中断。虽然配置静态路由可以考虑使用BFD协议来监测“单通”的问题,但是需要客户网络的设备支持BFD协议,否则无法实现。

2建议方案

为了实现客户网络双上行冗余链路的路由自动切换,可以考虑在客户网络和某城域网之间运行BGP协议。但是根据电信城域网相关规范,城域网汇聚路由器在收到客户网络发布的EBGP路由后,核心路由器在向163、CN2等EBGP发送路由时,需将这部分路由过滤掉。

下面是根据上述问题和需求给出的一个参考建议方案。

(1)建议方案一 (设客户网络AS号为64959)

如图,客户网络的AS设置为64959与某电信汇聚路由器运行EBGP协议,某电信路由器下发缺省路由到客户网络,同时通过前缀列表严格控制从客户网络接收的用户路由,并增加Community属性65***:9999和no-export。客户网络发送自身网段地址到某城域网汇聚路由器,同时从某城域网汇聚路由器接收缺省路由。

配置脚本:

某电信路由器汇聚路由器:

ip prefix-list CustomerRoute seq 5 permit xx.xx.yy.0/28

ip prefix-list CustomerRoute seq 10 permit xx.xx.zz.0/28

!

route-map FromCustomer permit 10

match ip address prefix-list CustomerRoute

set community 65***:9999 no-export //对客户接收到的路由设置Community属性65***:9999和no-export

router bgp 65***

bgp router-id xx.xx.xx.xx //汇聚路由器 Loopback

bgp log-neighbor-changes

neighbor xx.xx.xx.xx remote-as 64959 //与客户互联的接口地址

neighbor xx.xx.xx.xx activate

neighbor xx.xx.xx.xx default-originate //向客户网络下发默认路由

neighbor xx.xx.xx.xx route-map FromCustomer in //设置策略只接收客户网络特定路由

no auto-summary

no synchronization

exit-address-family

!

客户端设备:

ip route xx.xx.yy.0 255.255.255.240 yy.yy.yy.1 //通过静态、动态、Null0发布

ip route xx.xx.zz.0 255.255.255.240 yy.yy.yy.1

router bgp 654959

bgp router-id xx.xx.xx.xx //客户网络Loopback

bgp log-neighbor-changes

neighbor xx.xx.xx.xx remote-as 65*** //与客户互联的接口地址

address-family ipv4

neighbor xx.xx.xx.xx activate

network xx.xx.yy.0 mask 255.255.255.240 //发布客户网段到某城域网路由器

network xx.xx.zz.0 mask 255.255.255.240

no auto-summary

no synchronization

exit-address-family

(2)建议方案二

通过方案一的实施,客户网络路由不发送到其他AS,但是在城域网内部还是可以看到64959这个AS号,而且将来若城域网分配这个AS号给其他业务使用的时候也会造成在本地城域网上该AS64959的混淆。因此我们也可以考虑和客户之间通过接口建立IBGP关系。

如上图,如果客户网络和某城域网汇聚路由器之间使用IBGP建立邻居关系的话,客户网络的路由,将不能从汇聚路由器发布到城域网的核心路由器和其他设备,这将导致可客户网络不可达。因此为了打破这个限制,我们需要在城域网的汇聚路由器上增加设置,将城域网RR设置为汇聚路由器的route-reflector-client,也就是说RR和汇聚路由器互相指定为对方为自己路由发射器的客户端。某电信路由器下发缺省路由到客户网络,同时通过前缀列表严格控制从客户网络接收的用户路由,并增加Community属性65***:9999。客户网络发送自身网段地址到某城域网汇聚路由器,同时从某城域网汇聚路由器接收缺省路由。

配置脚本:

某电信路由器汇聚路由器:

ip prefix-list CustomerRoute seq 5 permit xx.xx.yy.0/28

ip prefix-list CustomerRoute seq 10 permit xx.xx.zz.0/28

!

route-map FromCustomer permit 10

match ip address prefix-list CustomerRoute

set community 65***:9999 //对客户接收到的路由设置Community属性65***:9999

router bgp 65***

bgp router-id xx.xx.xx.xx //汇聚路由器 Loopback

bgp log-neighbor-changes

neighbor xx.xx.xx.1 update-source Loopback0 //IPV4 RR1 IBGP

neighbor xx.xx.xx.1 remote-as 65***

neighbor xx.xx.xx.2 update-source Loopback0 //IPV4 RR1 IBGP

neighbor xx.xx.xx.2 remote-as 65***

neighbor xx.xx.xx.xx remote-as 65*** //客户网络IBGP,与客户互联的接口地址

address-family ipv4

neighbor xx.xx.xx.1 activate

neighbor xx.xx.xx.1 route-reflector-client //指定RR1为汇聚路由器的客户端

neighbor xx.xx.xx.2 activate

neighbor xx.xx.xx.2 route-reflector-client ////指定RR2为汇聚路由器的客户端

neighbor xx.xx.xx.xx activate

neighbor xx.xx.xx.xx default-originate //向客户网络下发默认路由

neighbor xx.xx.xx.xx route-map FromCustomer in //设置策略只接收客户网络特定路由

no auto-summary

no synchronization

exit-address-family

!

客户端网络设备:

ip route xx.xx.yy.0 255.255.255.240 yy.yy.yy.1 //通过静态、动态、Null0发布

ip route xx.xx.zz.0 255.255.255.240 yy.yy.yy.1

router bgp 65***

bgp router-id xx.xx.xx.xx //客户网络Loopback

bgp log-neighbor-changes

neighbor xx.xx.xx.xx remote-as 65*** //与客户互联的接口地址

address-family ipv4

neighbor xx.xx.xx.xx activate

network xx.xx.yy.0 mask 255.255.255.240 //发布客户网段到某城域网路由器

network xx.xx.zz.0 mask 255.255.255.240

no auto-summary

no synchronization

exit-address-family

!

3方案比较

通过两个方案的比较,我们可以发现两个方案在实施上都没什么问题,对于方案一需要使用新的AS以及后续可能存在路由问题。综合考虑建议某电信汇聚路由器和客户运行BGP协议的时候,采用方案二。

IP Metropolitan Area Network BGP Protocol Access Customer Network Implementation Scheme Analysis

Li Weixian

(China Telecom Yunnan branch,Kunming 650100,China)

AbstractWith the development of telecommunication operation, part of telecom customer network through double uplink access telecommunication network, and routing calls in realization of redundancy and can automatically switch. Therefore, how to reasonable deployment of router protocol is very important.

Key wordsmetropolitan area network,the customer network,BGP

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:加法原理乘法原理教案 下一篇:公共机房ARP病毒欺骗原理与处理