bgp路由协议详解

2024-04-20

bgp路由协议详解(精选5篇)

篇1:bgp路由协议详解

相信只要配置过路由器BGP的网友都知道,BGP是需要更新的,本篇就为大家介绍BGP的自动更新是如何设置的,这里我们需要用到BGP更新定时器,它的作用是只对同一地址族的相同前缀的路由起作用,其主要作用是防止网络中的某条路由震荡过于频繁,同时也是对CPU的一种保护,

一、上图所示就是BGP自动更新的示意,红色与蓝色的箭头代表相同前缀的路由,但是从不同邻居学习而来,而且蓝色的路由优于红色的;黑色的坐标轴代表路由发送与接收的时间,每个公司距离为10秒,我们假设RA上配置的更新定时器时间为30秒,

1、RA接收到红色路由后立刻发送给RB,同时RA上启动更新定时器。

2、10秒以后RA接收到更优的蓝色路由,由于定时器没有超时暂时不发送给RB,但是更新本地路由表,在第10秒RA完成路由收敛。

3、第30秒RA上更新定时器超时,所以发送蓝色路由给RB并且更新掉红色路由,RB在第30秒完成收敛。

二、从上面的分析我们可以看出RB的收敛时间比RA会慢上20秒左右,由于BGP是距离矢量路由协议这种延迟可以可能对于整个网络的BGP路由器都会有一定影响,所以在设计BGP网络中对该参数的设计需要有一定考虑。

篇2:bgp路由协议详解

1、假如在两台路由反射器上没有设置多条路径(maximum-paths,注意:思科的分IBGP与EBGP,假如后面不跟ibgp参数的话,只在ebgp中允许多条等价路径,但是华为的不份),RR只会选择一条最优的路由,并加到路由表中(没设置任何其它参数的前提下,选择router-id小的),并反射给两台核心。

2、假如在两台路由反射器上设置多条路径,两台RR会选择多条等价路径,但要注意,在看BGP表的时候,只会看到一条路由打了*>(router-id小的那条),但是看路由表的时候,会有多条路径分担,

同时,在两台RR反射路由给两台核心路由器的时候,只会反射最优的那条,也就是打了*>的那条路由,所以在两台核心路由器上看路由的时候只会看到一条。

3、对于next-hop-self命令,在两台路由反射器上使用些命令时,在反射路由给核心时,并不会修改下一跳为自己,也就是next-hop-self在路由反射器使用时,反射路由也不会改变下一跳。

4、华为与思科的设备,在network时,产生的下一跳有所不同:当思科的设备在network(或重分发)发布一条从IGP学到的路由,默认情况下,下一跳为IGP中下一跳地址,同样,当华为的设备在network(或重分发)发布一条从IGP学到的路由,默认情况下,下一跳为自己,也就是用来建BGP邻居的那个地址)

篇3:BGP路由的动态性研究

关键词:BGP,路由动态性,路由策略

0 引言

Internet的BGP路由系统存在大量的更新报文,这导致BGP的路由表频繁发生变化,从而增大了路由系统的开销、并降低了网络的可控性和稳定性。因此,如下研究应运而生:需要对BGP路由的动态特征进行描述、分析和解释,而在此基础上对BGP路由行为展开预测,进而为工业界提出改善BGP协议配置的指导方法。

1997年,Labovitz等人[1]系统地描述了BGP路由动态特征,指出BGP路由系统中大量的更新报文并不是由路由配置或者网络拓扑的变化引起的,而是冗余的、病态的路由更新报文。同时,BGP路由的变化具有明显的周期性,这与网络的使用方式(network usage)相关。在后续研究中[2],Labovitz等人发现通过对单一供应商的路由配置的优化,可以显著减少冗余的BGP路由更新。2007年,文献[3]对文献[1]描述的BGP路由动态性重新进行了评价,指出BGP路由系统的冗余路由转发已经大大减少了。另外,文献[4]指出BGP更新报文的规模与Internet拓扑规模呈线性关系。文献[5]指出Internet主体流量的路由很稳定,相比之下流量比较小的路由将会更加容易发生改变。

基于对BGP路由动态性的认识,相关研究大体可以分为:讨论如何优化BGP路由策略配置,以减少冗余的路由更新[6,7,8,9,10];从BGP路由行为出发,解释产生路由更新的根本来源[11,12,13,14,15,16,17,18];模型、预测BGP的路由行为[19,20,21,22,23,24]。鉴于目前BGP路由系统的冗余更新大大减少,第一类研究效果颇为可观。由于BGP协议本身对路由的描述粒度限于AS级,后2类研究的精度仅限于AS级。接下来,本文依次介绍上述3类研究工作。

1 BGP路由收敛问题

冗余的BGP路由更新导致BGP路由表频繁发生变化,一条BGP路由的AS路径的变化通常都符合如下模式:一个长时间存在的AS路径在短时间内频繁地发生变化,最后变成某一个其它的AS路径并继续长时间存在,这种现象称为“路径探索”(path exploration)。究其本质就是在某一个网络事件的影响下,某个AS改变其BGP路由表,由此而使得一定范围内与之连接的AS的路由表也随即发生震荡。文献[6]通过声明和撤销“种子前缀”(beacons)来观察相应的路由行为来研究“路径探索”现象,进一步发现“路径探索”多会持续几分钟,而且这一现象在Internet核心网络并不明显,在边缘网络则表现更为突出。

“路径探索”表明BGP路由表会在特定情况下反复变化,即BGP对应特定的路由变化的收敛时间可能会很长,极端情况下,会出现持续的路由震荡。文献[7]从理论的角度对BGP的路由收敛问题进行了形式化论证,由此推得:BGP路由系统是否收敛等价于这个网络的BGP路由配置是否存在一个“争执轮”。

虽然路由抖动抑制可以加速BGP收敛,但是该方法并不能从根本上解决BGP协议的收敛问题,目前BGP收敛问题的研究实现方法大体分为3类。在此,对这3类方法给出如下应用解析:

第一类方法采用实时的路由策略冲突检查。通过累计收集历史路由[9,10],检查哪些路由更新会导致循环的路由更新转发,进而调整路由策略以屏蔽这些病态的路由更新。这类方法的缺点在于通信开销比较大;而且其解决方案也并非检查是否存在“争执轮”,因而本可以收敛的路由策略也会发生一定修改。

第二类方法强调在BGP基础上增加全局的调度[11]。通过收集每个AS的路由配置策略,并从整体上检查AS间是否存在相互冲突的路由策略。这类方法的缺点是BGP路由配置策略本身通常关乎商业运作内情,很多AS是难于主动提供这样的数据,因而整个Internet的协作基本是不可能实现的。

第三类方法放弃全局协作,而对每个AS的BGP配置提出限制规则。文献[23]指出,只要每个AS的BGP输出过滤规则满足:“对供应商和对等AS只转发本地或者来自客户AS的路由”,Internet的全局BGP路由就可以保证收敛。然而,某些AS之间的商业关系定性复杂,不能用简单的“客户、供应商、对等AS”来进行确切描述。同时,对于大规模ISP,其内部客户AS的路由数量趋多,且变化非常频繁,想要让BGP配置满足上述规则即已成为一项颇具难度的研究工作。

2 定位BGP路由变化来源

除了冗余的路由更新,BGP路由系统中的路由更新主要是由拓扑变化、软硬件故障或者路由策略的变化引起的[12]。定位这些路由更新的实际来源可以帮助AS管理员定位路由故障、提高网络性能并避免路由震荡,因此学术界对此开展了大量研究工作[13,14,15,16,17,18,19],并将这类研究统称为定位路由变化(Locating route instabilities)。其基本思路为:将路由更新按着前缀、时间、观测点3个维度划分成不同的路由事件,并根据同一个路由事件中的路由更新的特征推测路由事件的类型,进而定位路由更新的来源。当一条稳定的路由经过“路径探索”过程变为另外一条稳定的路由,要么是旧的路由被撤销,要么是新的优先级更高的路由被声明[13]。文献[16]证明了该研究可以将70%的路由更新的来源精确定位到某一条AS边上。虽然进一步细化定位精度存在实施困难,文献[17]则转而讨论了如何在定位路由故障以后,再通过修改路由配置以避免受到路由故障的影响。

3 AS路径预测

为了控制网络流量、优化网络配置,AS管理员往往需要主动修改网络配置。因此预测BGP路由(预测AS路径),也是一个重要且热门的研究课题。

traceroute可以探测流量在AS间的实际传播路径,因此这类研究中最为常见的讨论方法就是利用traceroute主动探测IP级路径,而后将IP地址转化为AS号。这种方法存在不可小视的现实缺陷。首先,与拓扑测量的问题一样,将IP地址映射为AS号的过程会带来无法忽略的误差。其次,流量经过的实际路径与BGP路由也并不是完全一致。最后,这种方法需要从预测起点发起traceroute探测,而实际情况下却往往难以满足,并且Internet的骨干网络中很多路由器并不响应traceroute探测。

基于所有AS的路由转发都符合AS商业关系的路由策略这一基础假设,文献[20,21]将预测AS间路径转化为计算一对AS间的符合“无谷底”模型的最短路径。后续工作验证了这一方法的正确性,然而该方法却无法体现BGP路由的多样性(即同一个AS的不同路由器到达特定目标前缀的AS路径可能会存在着不一致),而且最短的符合“无谷底”模型的AS路径也可能不止一条,因此这种方法的精确性仍然有待改善。

文献[22]采用类似神经网络的方法从BGP数据中抽取路由策略,通过迭代地调整网络路由策略使得其路由输出与训练数据能够达成现实一致,而后再用训练获得的路由策略进行AS路径预测。文献中将一个AS划分成若干个“准路由器”,不同“准路由器”采取的路由策略也随即有所不同,因此该方法可以体现BGP路由的多样性。但这种方法的却可分析表现在其中用于训练的数据仅只考虑一副快照,而实际的网络环境却是变化不定的,因而这种预测后得到的结果也是片面的。

4 结束语

对于BGP行为的理解,本质上是对经济的行为的理解,更是对人的行为的理解。如果Internet的经济结构发生改变,或者能够从一个新的角度去观察BGP行为,往往就会获得某种全新的、甚至更进一步的理解。因此,对BGP路由动态性的研究只能解说哪个更符合目前的Internet特征,而不能评说基础事实是什么,因为基础事实会随着经济规律变化。

篇4:bgp路由协议详解

【关键词】虚拟路由器;OSPF;多协议标签交换;LDP;BGP

1.虚拟IP路由器及其实现方案

虚拟IP路由器是指用来模拟真实IP路由器路由功能的应用软件。本文实现的虚拟路由器,其特点是在一台主机上能够同时运行多个路由器,支持多用户的并发操作。通过用户的配置,能够模拟不同拓扑结构的网络的运作过程。与实际路由器相比,由于是通过软件来实现,其速度和所支持的用户数量会受到一定的限制。但这项技术大大减少了运营的开销,并且还提高了网络配置的灵活性,给网络的模拟、测试提供了很好的技术背景。

1.1虚拟IP路由器内部结构设计

本文实现的虚拟IP路由器的基本功能包括:路由的计算,数据分组的转发以及访问控制列表功能。各个功能模块都受命令行控制模块的控制。当路由器接收从其它相邻的路由器或直连网络接收到数据时,首先判定是什么数据类型,如果是链路状态数据报文,则将进入路由计算模块,在适当的时候要用SPF算法进行最短路径的计算;如果数据是普通TCP数据包时,则首先进入访问控制列表模块,若该数据包未被拒绝,则将进入数据转发模块,转发给其它相邻的路由器或直连网络。

1.2虚拟路由器的 Java 实现

本文以 OSPF 路由协议(RFC2328)为例进行设计,使用的开发语言是 Java,这是一种面向对象的开发语言,以虚拟IP路由器为基础设施的网络在运行过程中用到的对象主要分成以下几类:(1)OSPF类、(2)AreaData类、(3)Interface类、(4)Neighbor类、(5)SPF类。

2.支持 MPLS的虚拟路由器的设计与实现

普通的路由器只能简单地根据路由协议产生的路由表,再结合数据包的第3层网络地址来进行数据包的转发。在对路由器加了MPLS功能后,就能把路由表转化成相应的标签交换表,使得数据的转发只与标签有关,而不会去解析第3层的网络信息,这对提高数据转发的安全性提供了保障。

2.1支持MPLS的虚拟路由器的总体设计

对于一个支持MPLS的虚拟路由器,结构主要包括两大部分:

控制部分(LDP协议)和转发部分(MPLS协议)。

LDP协议是MPLS的控制与信令协议[2]。该协议部分主要包括两个模块:更新出标签模块和分配入标签模块。更新出标签模块在收到标签绑定信息后,把该信息放入该路由器的标签信息库(Label Information Base,LIB),如果发送该信息的路由器是该路由器的下一跳标签交换路由器(Label Switching Router,LSR),还要用该信息更新标签转发信息库(Label Forwarding Information Base,LFIB)和转发信息库(Forwarding Information Base,FIB)中的出标签信息。而对于分配入标签模块,在运行OSPF协议的同时,对路由表中的每一个目的网络都进行FEC分类,并对其加上本地的标签绑定信息,也就是入标签,并将该标签信息放入LIB、LFIB和FIB中。再把该本地标签绑定信息发送给所有与其相邻的路由器(这里采用的是下游未被请求标签分配模式)。

当收到的不是控制消息,即是普通的数据包时,则直接进入分组转发模块(MPLS协议[1]部分)。由MPLS分类器决定查找LFIB、FIB或路由表,得到该路由的下一跳地址、发送的接口和标签操作。对数据包进行标签操作后,就放入发送队列,等候转发。如果对应该数据的标签交换路径(Label Switched Path,LSP)信息不存在,则分组数据进入IP路由部分的数据转发模块进行第3层的数据转发。

2.2支持MPLS的虚拟路由器的实现方案

2.2.1分配入标签模块

在运行 OSPF 协议的同时,也运行着LDP协议。MPLS网络中的 LSR将趋向于路由表、LIB、FIB和LFIB的动态平衡。每当往路由表中添加一个到达目的网络的表项时,就为其分配相应的入标签。

2.2.2更新出标签模块

当路由器接口收到其它路由器的标签绑定信息时,如果发送方是当前路由器的下一跳 LSR,则要更新相应的出标签信息。

2.2.3分组转发模块

当路由器接口收到普通数据分组时,分组将进入MPLS分类器中,先判断该分组是否带了标签,如果是带标签的分组,则查找 LFIB 表,查找对应的LSP、出标签和标签操作,并进行分组转发,相应的标签操作应该是标签交换(Swap)或标签弹出(Pop)。如果不是带标签的分组, 则首先查找 FIB 表,若 LSP存在,则进行与上类似的处理,相应的标签操作应该是标签推入(Push),若对应的LSP不存在(原因可能是未完成LDP 协议的启动等),则查找路由表,对分组执行第3层转发。

3.虚拟路由器在 BGP/MPLS VPN 实验系统中应用

3.1网络拓扑的配置

为了适应大规模多用户并发操作的要求,需要选择合适的网络拓扑配置方案。首先,本文实现的虚拟路由器支持在同一台主机上运行多个路由器线程,而路由器之间的通信是通过socket来实现的,故其所支持的用户数量会受到一台主机上线程和端口数目等资源的限制。其次,在大规模多用户并发操作的过程中, 每个用户都要独立配置自己的网络拓扑,这导致的问题是每个实验者看到的网络拓扑是不同的,也即实验者之间不能传送数据。 因而需要寻求这样一个配置方案,它既能让用户进行独立的配置和操作,又能提供统一的拓扑结构,同时还要使软件资源的消耗尽量少。

3.2 VRF 的配置

PE 路由器要为每个CE路由器进行VRF表的配置,用于识别各 CE所属的VPN。对于每一个VRF表,都需要配置路由区分符(Route Distinguisher,RD)和路由目标(Route Target,RT)两大属性。当PE路由器上的某个子接口属于多个VPN,则多个VPN共享一个RD,CE1、CE3以及CE1、CE2之间的VPN就共享一个RD值。

4.结论

篇5:关于BGP同步对路由选择的影响

关键词:BGP,同步,EBGP,IBGP,自治系统,最佳路由

1)BGP同步规则的定义:在BGP同步打开的情况下,一个BGP路由器不会把那些通过IBGP邻居学到的BGP路由通告给自己的EBGP邻居;除非自己的IGP路由表中存在这些路由,才可以向EBGP路由器通告。

2)BGP同步规则的目的:防止一个AS(不是所有的路由器都运行BGP)内部出现路由黑洞,即向外部通告了一个本AS不可达的虚假的路由。

3)BGP同步规则的基本需求:假如一个AS内部存在非BGP路由器,那么就出现了BGP和IGP的边界,需要在边界路由器将BGP路由发布到IGP中,才能保证AS所通告到外部的BGP路由在AS内部是连通的。实际上是要求BGP路由和IGP路由的同步。

4)满足BGP同步规则的基本需求的影响:假如将BGP路由发布到IGP中,由于BGP路由主要是来自AS外部的路由(来自IN-TERNET),那么结果是IGP路由器要维护数以万计的外部路由,对路由器的CPU和MEMORY以及AS内部的链路带宽的占用将带来巨大的开销。

1 论证实验

实验拓扑图如图1。

1)1 BGP同步开启

(1)环境描述:

R1、R2及R3的同步均开启,R1属于AS 63000,R2与R3同属于AS 65000;

R1公布192.168.1.1为BGP路由,R3公布192.168.4.1为BGP路由。

注:本实验环境中不启用任何路由协议,只观察BGP表的情况。

(2)操作步骤:

R1:

R2:

R3:

分别查看R1、R2及R3的BGP表。

R1的BGP表如图2:

R1当中只有1.0的BGP路由,且下一跳地址全0,说明是本地直连的路由。

R2的BGP表如图3:

R2中有两条BGP路由:

a)1.0路由是通过外部EBGP学习到的,且下一跳可达(最佳路由);

b)4.0路由是通过内部IBGP学习到的,虽然下一跳可达,但是由于本AS内并没有通过IGP学习到4.0网段的信息,造成BGP不同步,所以R2认为这条路由不是一条最佳路由,且不会发送给它的EBGP对等体(即R1)。

R3的BGP表如图4:

R3中同样也有两条BGP路由:

a)4.0路由与R1中的1.0路由一样,都是本地直连的路由;

b)1.0路由是通过内部IBGP学习到的,但是由于下一跳不可达,所以R3认为它不是一条最佳路由。

上述问题可以看出,由于R2没有通过IGP学习到关于4.0网段的信息,就导致IBGP与IGP之间不同步,所以R2就不向R1发送4.0路由,在同步开启的情况下要解决此问题,只有让R2的IBGP与IGP同步。

在R2中启用一条静态路由ip route 192.168.4.0 255.255.255.0 192.168.3.2,再观察R1、R2的BGP表。

R1的BGP表如图5:

R2的BGP表如图6:

R1与R2的BGP表中的路由条目均有192.168.1.0与192.168.4.0的信息,且都是最佳路由了。1.2 BGP同步关闭

(1)环境描述:

R1、R3的同步均开启,R2同步关闭。R1属于AS 63000,R2与R3同属于AS 65000;

R1公布192.168.1.1为BGP路由,R3公布192.168.4.1为BGP路由。

注:本实验环境中在R3上启用静态路由协议,然后注入到BGP中,只观察BGP表的情况。

(2)操作步骤:

R1:

R2:

R3:

分别查看R1、R2及R3的BGP表。

R1的BGP表如图7:

a)关于192.168.1.0路由的信息有两条,一条通过EBGP学习到的,其下一跳为192.168.2.2;另外一条则是本地直连的,其下一条为全0。由于直连优先,不难看出,R1选择直连路由为最佳路由。

b)关于192.168.4.0路由是通过EBGP学习到的,原因是由于R2的同步关闭了,BGP路由器不用考虑同步与否,直接会将学习到的BGP路由发给它的EBGP对等体。

R2的BGP表如图8:

a)关于192.168.1.0的路由也同样有2条。第一条则是通过IBGP学习到的,其下一条为192.168.3.2;第二条则是通过EBGP学习到的,其下一条为192.168.2.1。则通过IBGP学习到的被选择为最佳路由。

b)192.168.4.0是通过IBGP学习到的。

R3的BGP表如图9:

R3上的192.168.1.0的路由的下一跳是192.168.3.1,由于通过静态学习了一条192.168.1.0的路由,而且又注入进了BGP。所以它的下一跳应该是静态路由指的下一跳。

上述问题中,R2有两条通往192.168.1.0网段的信息,但是为什么会选择内部IBGP学习到的路由,而不选择自己本身从EBGP学习到的路由呢?原因很简单,大家都知道,在R3上我们作了一条静态路由是关于192.168.1.0网段的,同时也把这条静态路由注入到了BGP路由当中,这样就迫使R1与R3同时向R2发送关于192.168.1.0网段的路由,在BGP同步开启的情况下,R2会考虑IGP能不能学习到192.168.1.0网段的信息,很显然,如果R2同步开启,则R2就不会选择由R3发送的192.168.1.0的路由,原因是,R2并没有通过IGP路由学习到192.168.1.0的路由,所以这一条就不是最佳路由,但是BGP表中依然会显示出来。同理,它会直接选择由EBGP学习到的关于192.168.1.0的路由,并选择其为最佳路由。(如图10)

那么,在R2不同步的情况下,R2同样会接收到R1与R3发来的关于192.168.1.0网段的路由。但是,由于R2不同步,它必须选择一个最佳的路由,此时,BGP路由的选路规则就会产生作用,R2会按照顺序一一比较,直到比较到AS路径的时候,才能看出他们有所不同。不同点在于:由于R1发送的路由要跨越一个AS,其AS_PATH为63000 i;而R3发送的路由都是在一个AS内,所以它的AS_PATH为i,本着跨越AS最少优先的原则,所以,R2会选择由R3发送的192.168.1.0路由,即内部优先。(如图8)

2 论证结果

1)在所有的方案中,既要保证传递BGP路由,还要保证BGP路由的连通性。

2)关闭同步能够实现BGP路由的传递,不一定能保证AS内部连通性,除非AS内所有路由器都运行BGP才可以保证连通性;否则,仍然需要路由再发布(即BGP再分布到IGP中)。

3)在AS内部一般需要部署IGP来维持AS内部网络路径的连通性,以保证AS内部的所通告的BGP路由的下一跳的可达性。这样BGP网络就具有更好的灵活性和扩展性。

4)在BGP同步打开的情况下,一个BGP路由器不会把那些通过IBGP邻居学到的BGP路由通告给自己的EBGP邻居;除非自己的IGP路由表中也存在这些路由,才可以向EBGP路由器通告。

5)在BGP同步关闭的情况下,在当有两条路由信息同时发往一个目标时,且这两个路由信息都是始发路由的情况下,BGP会按照选路规则来判断哪一条才是最佳路由。

参考文献

[1]多伊尔,卡罗尔.TCP/IP路由技术(2卷)[M].夏俊杰,译.北京:人民邮电出版社,2009.

[2]蒂尔.CCNP学习指南:组建可扩展的Cisco互连网络(BSCI)[M].陈宇,袁国忠,译.2版.北京:人民邮电出版社,2007.

[3]奥登.CCIE路由与交换认证考试指南[M].盖译,梅塔,译.2版.北京:人民邮电出版社,2007.

上一篇:防中暑预防、急救措施下一篇:高中正月十五真热闹作文