




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
BGP高级路由协议课程目标:l 掌握BGP适用环境、了解BGP使用的注意事项l 掌握BGP的消息类型和各种属性l 掌握BGP在解决大型网络中的解决方案l 掌握BGP的基本排错方法参考资料:l ZXR10路由交换机操作手册l ZXR10 路由器用户手册目 录第1章 BGP1-11.1 BGP适用环境1-11.2 BGP的消息类型和属性1-61.3 大型网络BGP解决方案1-351.4 基本BGP排错1-40-7-第1章 BGP1.1 BGP适用环境如图所示,用户和ISP之间只有一个连接。在这种拓扑下,BGP或者任何其它的任何动态路有协议都是不必要的。因为一旦这个唯一的连接出现故障,用户和ISP之间的业务就会中断,路有协议并不能解决这个问题。因此,在这种拓扑结构中,我们只需要在用户的路由器上配置一条默认路由,指向ISP,并把用户的网段发布到ISP中去。在学习BGP的时候,我们还应该认识到,每一条物理上的连接,都实际上代表了两条逻辑上的链路。对于业务来说,即是入的业务量和出的业务量。而路由就是为这两类业务做指向的。拿图示来说,我们在用户设备上配置默认路由,是为出的业务量做指向;而把用户网段发布到ISP中去,是为入的业务指向。我们在考虑ISP之间的连接和路由问题时,应该特别注意路由对业务的影响。为了保证冗余,可以在ISP和用户使用多条连接,为用户提供冗余的连接。并根据链路的使用情况对出的业务量和入的业务量进行处理。一般有两种处理的情况,一种是备份。即一条链路做为主用,而另外一条仅仅做为备份。只在主用链路实效的情况下,用户才会使用备份两路接入ISP。而在主用链路重新恢复工作之后,自动切换回主用链路。因此,一般备份链路都是低速的连接。早期的银行储蓄网点会用2M专线,和电话线做这样的主备工作,保证网络的正常使用。当使用主备进行连接的时候,实际上,我们也不需要bgp。我们还记得浮动静态路由吗?浮动静态路由就可以满足这个功能。和单宿主连接的情况一样,把用户的网段向ISP公布,在决定出的业务量的时候,通过给备份链路设定较高的花费值,来保证首先使用主用链路,只有在主用链路实效的时候,备份的链路才会承担转发的工作。另外一种就是让两条去往ISP的连接同时工作,这样,既做到了增加链路的带宽,又做到了互为备份。这种方式就要求用户设备在决定去往ISP的时候,必须知道出口的情况,包括出口的数量和到各个出口的花费。因此,需要在用户内部网络运行igp协议。Ospf是个不错的选择。通过出口路由器向内分别发布默认路由,内部网络的设备就会根据各自到达出口路由器的花费来自行选择出口路由器。而在其中出口设备或者连接失效之后,也会使用尚存的出口来去往ISP。在这种情况下,业务是完全取决于到各个出口的花费来决定出口的。然而,对于入的业务量取决于向ISP发布用户网段2的情况。如果您很在意入的业务量,同时您又充分考虑了bgp实施的可行性。您可以使用bgp来帮您处理这个问题。通过对bgp向外宣告用户网段时的控制,进而控制入的业务量在不同连接上的选择。而在引入外部路由的时候,您应该格外的小心。您所做的操作可能引入了世界上其它的所有路由,严重的情况可能导致您的设备应付不过来。而这是完全没有必要的。总之您在使用bgp的时候,应该格外的小心,既保证内部网络的稳定,也要避免发布时候的失误,甚至还要仔细考虑对方的失误对自己造成的影响情况。类似于前面提到的多宿主到单一的自治系统,通过去往ISP的多条连接来保证链路的冗余。尽管如此,还是存在ISP的单点故障,也就是说,当连接的ISP出现故障的时候,用户还是会丢失和internet的连接。我们可以选择多宿主到多个自治系统拓扑。这种拓扑除了前面提到的多种好处之外,还可以保护用户不会因为ISP发生问题而引起的internet连接的丢失。同样的,这种拓扑也可以运行主备方式,也可以运行负载分担的方式,依靠igp决定用户内部设备如何到达各个出口。但是,这仅仅考虑了出的业务量,为了更好的保证冗余,理想的情况就是用户把自己的网段向两个ISP都通告,以保证在其中有ISP出现故障的时候,出入业务均不受影响。但是,这势必影响到ISP的部署。很多时候,这种要求并不能实现。因为对于ISP来说,发布一个并不属于自己的网段,可能会使流经本ISP的流量变得不可控制。因此,这样的建议很难被ISP接受。在ISP同意接受你发布的路由之后,你还是需要小心的操作。因为每一个发布的网段,都意味着一个承诺。即,向全世界承诺,将数据包送到发布的网段。由于发布的问题,你可能会出现不对称的业务流量模型;如果你附带的把ISP1的网段也发布到ISP2上,你的网段可能会因此承载了去往ISP1的流量,严重的时候,会影响到你本身正常的业务。在实施bgp前后,您需要考虑以下问题:1 是否需要bgp很多时候,igp就可以完成大部分的工作,前面也提到了很多例子。除非需要特别的加强路由策略,而igp又无法满足的时候,才考虑实施bgp。2 网络环境是否支持实施bgp实施bgp之前,我们还需要考虑设备的性能。不仅如此,我们还需要确定网络管理员是否有能力来实施和维护bgp。3 谨慎实施bgpBGP的部署意味着和对等体之间交互路由信息。在发布和接收的实施中,影响着内部网络业务的走向,也影响着设备的运行性能。应该合理的实施bgp,正确接收和发布路由,保证网络正常运行。4 考虑对等体建立一个BGP的对等关系会涉及到一个信任和不信任的问题。因为对等的关系,你必须相信对端AS的bgp实施者,而且要知道他正在做什么。为了避免对方的误操作对自己造成的影响,你需要采取任何可能的操作来保护自己不会受到对端错误的影响。综上所述,我们发现,正确合理的使用bgp,我们需要全面的了解bgp的使用环境和各个功能,以及使用bgp后给我们带来的影响等等。只有彻底的了解bgp的工作机制,特别是bgp在路由控制中使用的路由属性和实施的路由策略,才能更正确合理的实施bgp。1.2 BGP的消息类型和属性BGP运行时刻分别与本自治区域外和区域内的BGP伙伴建立连接。与区域内伙伴的连接称为IBGP(Internal BGP)连接,与自治区域外的BGP伙伴的连接称为EBGP(External BGP)连接。本地的BGP协议对IBGP和EBGP伙伴使用不同的机制处理。BGP有4种类型的报文,分别为OPEN、UPDATE、NOTIFICATION和KEEPALIVE。BGP对等体间通过发送OPEN报文来交换各自的版本、自治系统号、保持时间、BGP标识符等信息,进行协商。UPDATE报文携带的是路由更新信息。其中包括撤销路由信息和可达路由信息及其路径属性。当BGP检测到差错(连接中断、协商出错、报文差错等)时,发送NOTIFICATION 报文,关闭同对等体的连接。KEEPALIVE报文在BGP对等体间周期地发送,以确保连接保持有效。BGP报文的报文都是Marker头加上类型的方式。Marker 鉴权信息:16 字节,全1。这个标记的作用主要是用来检测BGP对等体之间的同步是否丢失,并对进来的BGP消息进行验证。Length 消息的长度:2 字节,指示整个消息的长度,包括头标长度,最小的BGP消息长度是19字节(Keepalive报文),最大的长度是4096字节。Type 消息的类型:1 字节,指示报文类型,如OPEN、UPDATE报文等。1 :OPEN2 :UPDATE3 :NOTIFICATION4 :KEEPALIVEBGP使用TCP建立连接,本地监听端口为179。和TCP建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本,BGP连接保持时间,本地的路由器标识(Router ID),授权信息等。这些信息都在OPEN消息中体现。OPEN消息结构:Version :(1字节) 发端BGP版本号My Autonomous System :(2字节无符号整数) 本地AS号Hold Time :(2字节无符号整数) 发端建议的保持时间BGP Identifier :(4字节) 发端的路由器标识符OptParmLen :(1字节) 可选的参数的长度Optional Parameters :(变长) 可选的参数KeepAlive 报文主要用于对等体路由器间的运行状态以及链路的可用性确认。KeepAlive 报文的组成只包括一个BGP数据报头。 KeepAlive 消息在对等路由器间的交换频度以保证对方保持定时器不超时为限。当一台路由器与其邻居建立BGP连接之后,将以Keepalive-interval设定的时间间隔周期性地向对等体发送Keepalive 报文,表明该连接是否还可保持。缺省情况下,发送Keepalive 的时间间隔为 60 秒。KEEPALIVE消息结构UPDATE 报文是BGP系统中最重要的信息,用于在同伴之间交换路由信息,它最多由三部分构成:不可达路由(unreachable)、路径属性(path attributes)、网络可达性信息(NLRI,network layer reachability information)。Unfeasible Routes Len :(2字节无符号整数) 不可达路由长度Withdrawn Routes :(变长) 撤销路由Path Attribute Len :(2字节无符号整数) 路径属性长度Path Attributes :(变长) 路径属性(以下详细说明)Network Layer Reachability Information :(变长) 网络层可达性信息 其中撤销路由和目的地址的表示方法为一个的二元组。length一个字节,指示地址前缀的长度。prefix为地址前缀,长度1至4字节。UPDATE 消息可以向BGP对等体通告一条路由,也可以撤消多条“不可达”的路由。不可达路由字段包括一个所撤消路由的IP地址前缀列表。路径属性字段是一个路径属性的列表,包括:属性类型、属性长度和属性值等。网络可达字段包括了BGP路由器所知道的且可到达的IP地址前缀列表。一个UPDATE 消息一次只能通告一个路由,但它可以携带多个路径属性。一个UPDATE 消息一次也可通告多条路由,但它的路径属性必须相同。一个UPDATE 消息可以同时列出多个被撤消的路由。Notification 报文主要在发生错误或对等体连接被关闭的情况下使用,该消息携带各种错误代码(如定时器超时等),包括错误代码、辅助错误代码及错误信息。Errorcode :(1字节) 错误代码:错误代码错误类型1消息头错2OPEN消息错3UPDATE消息错4保持时间超时5状态机错6退出Errsubcode :(1字节) 辅助错误代码,略。空闲状态BGP通常以空闲状态开始。该状态下,拒绝所有入的连接。当配置一个BGP邻居,或者重置一个已经存在的过程,或者软件重置,都将引发BGP开始初始化所有BGP资源,打开重试连接计时器,初始化到邻居的TCP连接,接听来自邻居的TCP初始化消息并转到连接状态。连接状态在这种状态下,BGP过程必须等TCP连接完成以后再决定后续动作。如果建立成功,开始发送OPEN消息;如果建立失败,将转到激活状态,并继续尝试TCP连接的建立。激活状态在这个状态下,尝试与邻居的TCP连接的建立。如果建立成功,发送OPEN消息,并转到消息发送状态;如果建立失败,将继续尝试连接。如果尝试时间超过计时器,将转到连接状态,计时器清零。发送OPEN消息状态在这种状态下,已经发送了OPEN消息。BGP正等待对端发来的OPEN消息。当接收到一个OPEN消息时,检查该消息,如果发现差错,发送notification消息,并转入空闲状态。OPEN消息协商hold时间,确认IBGP或者EBGP关系。如果没有差错,发送keepalive消息,并开始hold计时。根据转到OPEN消息确认。OPEN消息确认此种状态下,等待keepalive消息或者notification消息。如果收到keepalive消息,转入建立连接状态,如果收到notification消息或者TCP断开,转到空闲状态。如果等待时间超过hold时间,会发送notification消息,转到空闲状态。已建立连接状态这种状态,表示已经建立BGP的对等关系。对等之间可以交换keepalive消息和update消息以及notificaiton消息。如果收到update和keepalive,hold时间清零。如果收到notification消息,转到空闲状态。BGP的属性路径属性是已公布的BGP路由的一个特点。路径属性除了为BGP提供路由功能所必需的信息之外,还允许BGP设置和互通路由策略。换句话说,BGP丰富的路径属性,保证了BGP在加强路由控制时的足够强大。每一个路径属性可能是下面四种中的两种:l 公认必选l 公认自选l 任选可传递l 任选非传递公认属性意味着所有的BGP都必须识别,任选属性意味着不要求BGP一定要支持该属性。公认属性又分为必选和自选。必选意味着所有BGP Update消息都要包括该属性,如果缺少这些属性,路由信息就会出错。如AS-Path 就是必遵属性,BGP用它来避免路由环路,没有它路由就可能出问题。如果是自选的,则意味着更新消息中既可以包括,也可以不包括该属性。例如Local_Pref属性。任选属性又分为可传递和非传递。可传递意味着即使BGP不支持该属性,它也应当接受包含该属性的路由并且把这个路径传送给它的对端。例如community属性。非传递则相反,不识别该属性的BGP将会忽略该Update消息,而且也不会再把这个路径传送给它的对端。属性类别Origin公认必选AS_Path公认必选Next_Hop公认必选Local_Pref公认自选Atomic_Aggregate公认自选Aggreator任选可传递Community任选可传递Med任选非传递Cluster_List任选非传递每个属性都有特定的含义并可以灵活的运用,使得BGP的功能十分强大。这里仅仅列出了部分的属性,实际上,BGP属性可以扩展到256种。Origin属性是一个公认必选的属性,它明确了路由更新消息的来源。当BGP有多条路由时,Origin属性将作为一个决定较优路由的因素。l IGP 从发起者AS的一个内部协议可以学习到网络层可达性信息。BGP把通过network命令学习到的路由,origin属性定义为IGP源。l EGPNLPI是通过EGP学习到的。l IncompleteNRLI是通过其它手段学习到的。Incomplete并不代表路由在任何情况下都有故障,只代表决定路由来源的信息不完整。BGP把通过重发布学习到的路由携带的Origin属性定义为Incomplete,认为在这种情况下,无法决定路由的初始源。在其它因素相同的情况下,按IGP、EGP、Incomplete 的顺序选择路由。AS_Path是一个公认必选的属性,它用AS号的顺序来描述AS的路径或者到NLRI说明目的地的路由。当一个运行BGP的路由器发起一条路由,当它在本AS内公布的时候,将自己的AS号加到AS_Path中。后续的BGP在向外部的对端公布路由的时候,它们将自己的AS号附加到AS_Path中。于是,AS_Path描述了要到达该NLRI所经过的自治系统,以最近的AS开始,以发起者的AS结束。注意一点,只有将Update消息发送给EBGP邻居的时候,BGP路由器才将它的AS号添加到AS_Path中。也就是说,在IBGP对等体之间公布,不加入任何的AS编号。因此,BGP也可以称之为路径向量型路由协议,这是它与距离矢量型路由协议所不同的地方。AS_Path的一个功能就是避免环路。如果BGP路由器从外部对端接收到一条路由,而该条路由的AS_Path包好了这个BGP路由器自己的AS号,于是,该路由器就知道是条环路路由,从而将这样的路由丢弃。AS_Path的也是BGP决定优选路由的一个参数。BGP以AS_Path中出现的AS编号的多少来决定路由的优劣。类似于RIP,BGP认为,AS_Path中出现的AS编号越多,到达目的地的路径也更遥远。在其它因素相同的情况下,BGP优选AS_Path中出现更少AS编号的路由。通常情况下,在列表中出现相同的多个AS编号是没有意义的。但是,根据BGP的优选路由的特点,将一个特殊的AS编号,重复加入到AS_Path中,可以影响到其它AS在选择路由时的判断。类似于图示,正常情况下,Internet去往61.172.0.0/16的路径会优选从AS300走,因为它经过了更少的自治系统。通过对发布时候的控制,我们可以人为的重复添加AS编号。这样,对于Interent来说,反而认为从AS500到达将经过更少的自治系统。Next_Hop是公认必选属性。由于BGP是基于AS的路由协议,因此,BGP指明的是AS的路径。图示描述了Next_Hop属性的第一条规则,如果正在宣告的路由器和接受的路由器是EBGP关系,NEXT_HOP是正在宣告的路由器接口的IP地址。这种情况,和任何其它的路由协议都是相同的。图示说明了第二条规则,如果通过IBGP宣告Update消息而且公布的目的地也在本AS内,Next_Hop属性就是发起路由器的IP地址。注意,建立IBGP对等关系的两端并不一定需要物理直连,而只需要保证能够TCP连接的建立。在这种情况下,路由的查找将进行递归的过程。首先查找目的地192.1698.100.0/24,指示下一条为192.168.0.1。再根据IGP查找到192.168.0.1的下一跳未192.168.10.1。这时,数据包才会被转发出去。图示说明了第三条规则,如果一条路由Update是通过IBGP公布,并且目的地在不同的AS内,Next_Hop属性就是学习到该路由的外部对等的IP地址。即,在IBGP传递的过程中,不改变Next_hop属性。在这种情况下,路由器也必须进行递归的查找。但是,存在的问题就是一般情况下,并没有把外部端口的网段发布到AS内部来,也就是IGP并不知道如何到达外部接口。因此,最后到达那个目的地的数据将会被丢弃。实际上,虽然IBGP对端建立了去往61.172.0.0/16的路由,但是因为下一跳不可达,因此,IGP路由表中并没有建立该路由。解决的方法显而意见,就是把建立到达外部端口的路由。可以通过建立静态路由,也可以在外部端口以被动模式运行IGP。但是,更多时候,我们通过强制更改Next_Hop属性来解决这个问题。通过配置命令next-hop-self,边界路由器在向IBGP对端宣告的时候,更改Next_Hop属性为192.168.0.1,来取代外部地址。于是,内部对等体就有了下一跳地址是192.168.0.1,而IGP知道该地址。BGP下一跳属性规定:BGP路由的下一跳是以自治系统为单位的。这样就引出了BGP路由下一跳不可达的问题,为解决路由下一跳不可达的问题,BGP协议引入了同步概念。如上图所示:首先,Router B通过EBGP邻居关系,获得了去往AS200的路由信息,例如,去往AS200中的61.172.0.0/16,Router B会把这样的路由信息通告给Router E,Router E收到从Router B通告来的去往自治系统AS200的路由信息61.172.0.0/16。对于Router E来说,它在考虑是否把这样的路由信息通告给它的EBGP邻居Router F时,就需要考虑同步问题。这里的同步是指:Router E如果能通过IGP(内部网关协议,如OSPF协议)获得去往61.172.0.0/16的路由,我们就认为EGP(外部网关协议,如BGP协议)和IGP同步。在同步情况下,Router E可以将路由信息10.1.1.1/24通告给Router F。否则,不能通告。我们来看一下,如果不需要考虑同步的情况,会出现什么问题。依然用上面的例子来解释,如果Router E不考虑同步问题,直接将路由信息61.172.0.0/16 通告给Router F,那么Router F的路由表中就会记录一条去往61.172.0.0/16的路由信息,下一跳是指向Router E的。这样问题就会出现:Router F有一去往61.172.0.0/16的数据包,Router F通过查看路由表,把这一数据包转发给Router E。如果没有同步,Router E的路由表中也会有去往61.172.0.0/16的表项,但是这一表项的下一跳是直接指向Router A的S0接口的(BGP的下一跳属性)。于是,AS300开始转发去往61.172.0.0/16的数据包。从这开始就出现了问题,根据Router E的路由表,去往61.172.0.0/16可以通过Router B到达,再通过查找Router B,发现需要经过Router D才能到达。于是数据就被转发到Router D。但是外部路由是IBGP由Router B和Router E共享的。IGP路由协议,比如OSPF无法了解到外部路由,Router C和Router D依靠ospf仅仅为这个BGP连接提供了承载工作,而不是处理BGP路由。因此,Router D进行路由查找之后,并没有发现去往61.172.0.0/16的路由(虽然能够到达Router B),因此,该路由器就会丢弃数据包以及后续的所有去往该地址的数据包,到网络61.172.0.0/16的业务量就形成了黑洞。当然,如果OSPF也知道外部路由,情况就不一样了。Router D知道通过RouterC可以到达61.172.0.0/16并且正确的转发数据。同步就是防止数据包在一个AS内被一个没有足够信息的IGP造成黑洞现象。当Router E从Router B收到去往61.172.0.0/16的路由的时候,将该路由添加到BGP路由表中。然后在IGP路由表里面检查,看是否有关于这条路由的条目存在。如果没有,BGP不会公布;只有IGP里面有61.172.0.0/16的路由条目,BGP才会向外通告。那么,讲到这里,如果想让IBGP正确的工作,必须执行下面两个配置选项中的一个:1将外部路由再发布到IGP中从而保证IGP能够与BGP同步。2IBGP路由器必须是全网状连接,而且关闭同步功能。Local_Pref是公认自选属性,只用在内部网关对等体之间的更新消息中;它不会传递给其它的自治系统。如果一个内部运行BGP的路由器受到了对一个目的地的多条路由,它将这些路由的Local_Pref进行比较。选择具有最高的Local_Pref的路由。图示显示了如何使用Local_Pref的例子。AS100分别从ISP1和ISP2获得了去往internet的路由。但是用户希望ISP1为首选出口。连接到ISP1的路由器宣告的Local_Pref为200,连接到ISP2的路由器宣告的Local_Pref为100。所有内部对等体,包括连接到ISP2的路由器,对于同一目的地,优选从ISP1学习到的路由。Local_Pref只决定本AS内业务的选择出口的情况,因此,它只是在本AS有效,并不能对其它AS内的业务施加影响。下面讲到的Med属性能做到这点。Med(Multi_Exit_Disc)可以对其它自治系统内的业务量施加影响,不过也仅仅是对进入本自治系统的业务施加影响。Local_Pref影响本自治系统对出口的选择,Med影响了相邻自治系统对如何选用到达本自治系统的连接-影响入的业务量。图示说明了如何使用Med属性的例子。AS200如何访问AS100内部的网段,取决于从AS100接收的路由的情况。AS100偏向于入的业务量使用L-1链路,而L-2只用于备份。通过L-1宣告的路由信息中,Med被设置成100,而通过L-2宣告的路由信息中,Med被设置成200。如果这两条路由没有其它不同的选项,AS200就会优选具有较低Med值的L-1链路。Med属性是非传递属性。如果AS200继续向其余AS宣告61.172.0.0/16的路由的时候,它不会将AS100所设置的Med传递给对端。也就是说,Med制式在直接相连的自治系统间影响业务量,并不能影响相邻AS以外的路由选项。为了影响相邻AS以外的路由选项,只能对AS_Path属性设置。实际上,Med属性的非传递特点,决定了Med属性只对单一AS有意义。当然,我们也可以让不同AS之间的Med进行比较,当时,这种做法实际上的操作可行性不是很大。和IGP路由协议一样,为了避免路由表的过于庞大,BGP提供聚合功能。但是在执行路由聚合的时候,会丢失一些路由信息,而且路由会变得不太准确。在BGP运行聚合的时候,会丢失路径属性,也就是AS_Path中的编号。AS_Path仅列出了聚合点的AS编号。产生明细路由的AS不会出现在AS_Path中。同时,一些更具体的前缀的路由信息也丢失了。这会增加路由环路的可能。Atomic_Aggreate是一个公认必选属性。它用来提示下游路由器出现了路径信息丢失。任何时候,当一个运行bgp的路由器执行聚合操作,而且已经出现了路径信息丢失的时候,必须将这个属性附加到聚合路由中去。任何运行BGP的下游路由器收到带有这个属性的路由,不能使路由中的NLRI信息更详细,并且把该路由公布给其它对端的时候,Atomic_Aggreate必须继续附加在该路由中。当设置了Atomic_Aggreate属性,还可以选择附加Aggreator属性。这是一个任选可传递属性。显示了聚合点的AS和发起聚合的路由器的IP地址,从而指示出聚合在哪里出现。图示说明了聚合发生在AS400,1.1.1.1的路由器上。解决聚合产生的路径信息丢失的一种更好的办法就是使用AS_Set属性。BGP依靠AS_Path来预防环路。但是我们发现,bgp仅仅是查看AS_Path中,是否出现自己的AS编号来判断环路的产生。也就是说,并没有要求AS编号的顺序。当一个bgp路由器执行路由聚合,它将AS_Path中的所有AS编号作为一个AS_Set。如图所示,AS400的设备在向外宣告的时候,加入了AS_Set。AS_Set中的AS编号是无序的编号,仅仅表明了明细路由可能出现的AS。这样,就可以依靠检测AS_Set中的编号是否与自己的编号相同,从而达到发现环路的目的。当然,事情有利必有弊。路由聚合的一个好处就是隐藏了内部网络的故障。如果一个属于聚合的网段出现了故障,故障不会在聚合点以外的范围公布。但是如果使用了AS_Set属性,这种好处就没有了。内部网段的消失,会导致AS_Set中AS编号的变化,就需要向聚合点以外的范围公布该变化。BGP 的路由通告原则:多条路径时,BGP只选最优的给自己使用;BGP只把自己使用的路由宣告给对等体;BGP 把从EBGP获得的路由会向它所有BGP邻居通告(包括EBGP和IBGP);BGP把从IBGP获得的路由不向它的IBGP相邻体通告;BGP把从IBGP获得的路由是否向EBGP邻居宣告,视IGP和BGP同步的情况来决定;连接一建立,BGP 将会把自己的所有BGP路由宣告给对等体。相对IGP而言,BGP宣告的路由数量显然要远远大于IGP发送和引入的路由数量。因此,类似于IGP那样定时对外广播路由信息是不可取的。BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:初始化时发送所有的路由给BGP对端(BGP Peer),同时在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个撤销路由消息。总之,BGP不是每次都广播所有的路由信息,而是在初始化全部路由信息后只发送路由的变化量(增量)。这样保证了BGP和对端的最小通信量,但同时增加了BGP的复杂程度。因为对于IGP,本地路由协议只需发送发送时刻所知的全部路由,而不保存任何已发送信息,路由选择的工作由对端来完成;而BGP必须为每个BGP对端保存已经发送的路由信息,以便发送一条新路由前确认其是否真的应该发送。BGP的丰富的属性,为BGP提供了强大的路由控制功能。在使用这些属性的时候,应该考虑顺序和规则,尤其是一台路由器需要在到同一个目的地的多条路由之间进行选择的时候。下面是选路的准则:1 若下一跳不可达,则该路由被忽略。这也是NEXT_HOP属性是公认必选的原因。2优选具有最大Local_PREF值的路由3如果多条路由具有相同的Local_PREF值,则先选由本路由器产生的路由。4如果多条路由具有相同的Local_PREF值,而且都不是本路由器产生的,则优选最短AS_PATH的路由5如果AS_PATH长度一样,则优选具有最小ORIGIN值的路由6如果ORIGIN值也相同,则优选具有最小MED值的路由7如果MED值也相同,则先选EBGP通告的路由,再选IBGP通告的路由。8如果以上情况都相同,则优选在AS内部走最短的IGP路由可到达其下一跳的路由。9如果内部路径也一样,则比较通告该路由的BGP 路由器的ROUTER ID大小,选取具有最小ROUTER ID的路由器通告的路由。10如果以上条件都一样,则选取对端路由器接口地址小的路由。注意,如果设置了负载均衡,可以同时安装多条BGP路由时,条件8-10被忽略。1.3 大型网络BGP解决方案BGP宣告原则中写到:BGP把从IBGP获得的路由不向它的IBGP相邻体通告。这就要求除非把EBGP路由重发布到IGP中,否则就可能导致网络的不收敛。还有一种解决的办法就是实现IBGP全连接。即所有运行BGP的路由器建立起IBGP关系,依靠IBGP来取代IGP。对于每N个路由器,就需要建立N*(N-2)/2个BGP连接。如图所示,给出了6个路由器全连接时的情况,即便才6个路由器,连接的数量也已经到了15条。可以想象,正常情况下,随着路由器数量的增多,连接数量将以指数方式增长。路由反射器为全网状IBGP对等提供了一个可供选择的办法。如图所示,将一个路由器配置成路由反射器(RR),其它的IBGP当作客户,这些客户只于RR建立IBGP关系,而不于另外的路由器对等。结果,连接的数量削减到N-1。路由反射器和它的客户的合成称一个簇。路由反射器是在放松了前面提到的规则的情况下工作的。路由反射器从它的每一个客户学习路由,不象其它的IBGP路由器,RR能够将这些路由公布给它的其它客户和非客户的对端。当然,为了避免可能出现的路由环路或者其它的路由差错,路由反射器不能改动它从客户那接受到的路由的属性。RR根据学习到路由的途径,通过三条规则来决定将路由公布给谁:l 如果路由是从非客户的IBGP邻居学习到的,只将它发射给客户l 如果路由是从客户学习到的,将它反射给除了发起该路由的客户外的所有非客户及客户l 如果路由是从EBGP邻居学习到的,将它反射给所有的客户和非客户路由反射器的一个特点就是自由路由反射器本身支持路由反射功能。也就是说,只有路由反射器才知道自己是路由反射器,客户并不知道。因此,一个路由反射器可能是另外几个簇中的客户。反射器之间的冗余,可能会导致簇之间的环路。另外,宣告规则中,IBGP学习到的路由不想其它IBGP邻居宣告的目的是为了防止环路的出现。为了防止规则放松可能导致的路由环路出现,路由反射器使用了两个BGP路径属性:Originator_ID和Cluster_List。Originator_ID是任选非传递属性,由RR生成。这个属性标示了路
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国慈善基金管理办法
- 规范项目实施管理办法
- 财务上下协同管理办法
- 装饰工程中心管理办法
- 融资租赁物管理办法
- 中学食堂安全管理办法
- 东莞工厂保安管理办法
- 规范资金支付管理办法
- 贷款协议分期管理办法
- 中央厨房应急管理办法
- 高中化学拔尖创新人才早期培养路径
- 2025年四川宽窄实业有限责任公司招聘笔试参考题库含答案解析
- 《中药提取物生产技术》课件-中药常用的粉碎方法
- Unit 1 完形填空训练8篇-2023-2024学年英语八年级上册单元冲刺满分题型训练(人教版)
- DB32/T 1086-2022 高速公路建设项目档案管理规范(修订)
- 教师资格证《教育知识与能力》中学-必背知识点
- 配料保密协议
- 特种设备安全管理实施细则
- 托管运营合同范文
- 显微根管治疗的护理配合
- 电气工程专业导论
评论
0/150
提交评论