BGP路由协议

BGP路由协议

目录导航

简要介绍

bgpbgp       BGP是一种在自治系统之间动态交换路由信息的路由协议。一个自治系统的经典定义是在一个管理机构控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。

       在BGP中使用自治系统这个术语是为了强调这样一个事实:一个自治系统的管理对于其他自治系统而言是提供一个统一的内部选路计划,它为那些通过它可以到达的网络提供了一个一致的描述。

       BGP是自主网络系统中网关之间交换器路由信息的协议。边界网关协议常常应用于互联网的网关之间。路由表包含已知路由器的列表、路由器能够达到的地址以及到达每个路由器的路径的跳数。

使用边界网关协议的主机一般也使用传输控制协议(TCP)。当网络检测到某台主机发出变化时,就会发送新的路由表。BGP-4,边界网关协议的最新版本,允许网络管理员在策略描述下配置跳数的规格。

简单扩展

BGP路由协议BGP路由协议       BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。BGP是ARPANET所使用的老EGP的取代品。RFC1267[LougheedandRekhter1991]对第3版的BGP进行了描述。

       RFC1268[RekhterandGross1991]描述了如何在Internet中使用BGP。下面对于BGP的大部分描述都来自于这两个RFC文档。同时,1993年开发第4版的BGP(见RFC1467[Topolcic1993]),以支持CIDR。BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。

       首先,将一个自治系统中的IP数据报分成本地流量和通过流量。在自治系统中,本地流量是起始或终止于该自治系统的流量。也就是说,其信源IP地址或信宿IP地址所指定的主机位于该自治系统中。其他的流量则称为通过流量。在Internet中使用BGP的一个目的就是减少通过流量。

       可以将自治系统分为以下几种类型:

       1) 残桩自治系统(stubAS),它与其他自治系统只有单个连接。stubAS只有本地流量。

       2) 多接口自治系统(multihomedAS),它与其他自治系统有多个连接,但拒绝传送通过流量。

       3) 转送自治系统(transitAS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。

       这样,可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用BGP——它们通过运行EGP在自治系统之间交换可到达信息。BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给BGP。制订策略并不是协议的一部分,但指定策略允许BGP实现在存在多个可选路径时选择路径,并控制信息的重发送。选路策略与政治、安全或经济因素有关。

       BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。

       BGP是一个距离向量协议,但是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16bit数字表示自治系统标识。

       BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。应用层的keepalive报文与TCP的keepalive选项是独立的。

详细解释

       一:背景

       路由包括两个基本的动作:确定最佳路径和信息群(通常称为分组)通过网络的传输。通过网络传输分组相对较简单,而路径的确定复杂。BGP就是当今网络中实现路径选择的一种协议。下面简述BGP的基本操作,并提供其协议组件的描述。

       BGP在TCP/IP网中实现域间路由。BGP是一种外部网关协议(EGP),即它在多个自治系统或域间执行路由、 与其它BGP系统交换路由和可达性信息。

       BGP设计用以代替其前身(现在已不用了)外部网关协议(EGP)作为全球因特网的标准外部网关路由协议。 BGP解决了EGP的严重问题,能更有效地适应因特网的飞速发展。

       下面是核心路由器用BGP在AS间路由数据的示意图。

       BGP在多个RFC中规定:

       RFC1771 - 描述了BGP4,即BGP的当前版本。 

       RFC1654 - 描述了第一个BGP4规范。 

       RFC1105,RFC1163和RFC1267 - 描述了BGP4之前的BGP版本。

       二:BGP操作

       BGP执行三类路由:AS间路由AS内部路由贯穿AS路由

       AS间路由发生在不同AS的两个或多个BGP路由器之间,这些系统的对等路由器使用BGP来维护一致的网络拓扑视图,AS间通信的BGP邻居必须处于相同的物理网络。因特网就是使用这种路由的实例,因为它由多个AS(或称管理域)构成,许多域为构成因特网的研究机构、公司和实体。BGP经常用于为因特网内提供最佳路径而做路由选择。

       AS内部路由发生在同一AS内的两个或多个BGP路由器间,同一AS内的对等路由器用BGP来维护一致的系统拓扑视图。BGP也用于决定哪个路由器作为外部AS的连接点。再次重申,因特网提供了AS间路由的实例。一个组织,如大学,可以利用BGP在其自己的管理域(或称AS)内提供最佳路由。BGP协议既可以提供AS间也可以提供AS内部路由。

       贯穿(pass-through)AS路由发生在通过不运行BGP的AS交换数据的两个或多个BGP对等路由器间。在贯穿AS环境中,BGP通信既不源自AS内,目的也不在该AS内的节点,BGP必须与AS内使用的路由协议交互以成功地通过该AS传输BGP通信,下图所示为贯穿AS环境:

       三:BGP路由

       与其它路由协议一样,BGP维护路由表、发送路由更新信息且基于路由metric决定路由。BGP系统的主要功能是交换其它BGP系统的网络可达信息,包括AS路径的列表信息,此信息可用于建立AS系统连接图,以消除路由环,及执行AS策略确定。

       每个BGP路由器维护到特定网络的所有可用路径构成的路由表,但是它并不清除路由表,它维持从对等路由器收到的路由信息直到收到增值(incremental)更新。

       BGP设备在初始数据交换和增值更新后交换路由信息。当路由器第一次连接到网络时,BGP路由器交换它们的整个BGP路由表,类似的,当路由表改变时,路由器发送路由表中改变的部分。BGP路由器并不周期性发送路由更新,且BGP路由更新只包含到某网络的最佳路径。

       BGP用单一的路由metric决定到给定网络的最佳路径。这一metric含有指定链路优先级的任意单元值,BGP的metric通常由网管赋给每条链路。赋给一条链路的值可以基于任意数目的尺度,包括途经的AS数目、稳定性、速率、延迟或代价等。

       四:BGP消息类型

       RFC1771中规定了四种BGP消息类型:初始(open)消息更新消息通知消息keep-alive消息

       初始消息在对等路由器间打开一个BGP通信会话,是建立传输协议后发送的第一个消息,初始消息由对等设备发送的keep-alive消息确认,且必须得到确认后才可以交换更新、通知和keep-alive消息。

       更新消息用于提供到其它BGP系统的路由更新,使路由器可以建立网络拓扑的一致视图。更新用TCP发送以保证传输的可靠性。 更新消息可以从路由表中清除一条或多条失效路由,同时发布若干路由。

       通知消息在检查到有错误时发送。通知消息用于关闭一条活动的会话,并通知其它路由器为何关闭该会话。

keep-alive消息通知对等BGP路由器该设备仍然alive。keep-alive消息发布足够频繁以防止会话过期。

       五:BGP分组格式

       简述BGP初始、更新、通知和keep-alive消息类型及基本的BGP信头格式。

       1、信头格式

       所有的BGP消息类型都使用基本的分组信头。初始、更新和通知消息有附加的域,而keep-alive消息只使用基本的分组信头。

下图为BGP信头使用的域:

       每个BGP分组都包含信头,其主要目的是标识该分组的功能。下面简述信头中的每个域。

       标记 - 含有认证值。 

       长度 - 指示消息的总长度,以字节计。 

       类型 - 标识消息类型为下列类型之一:

       初始 

       更新 

       通知 

       keep-alive 

       数据:为可选域,含有上层信息。

       2、初始消息格式

       BGP初始消息由BGP信头和附加域构成,下图为BGP初始消息的附加域:

       在信头的类型域中标识为BGP初始消息的BGP分组包含下列各域,这些域为两个BGP路由器建立对等关系提供了交换方案:

       版本 - 提供BGP版本号,使接收者可以确认它是否与发送者运行同一版本协议。 

       自治系统 - 提供发送者的AS号。 

       保持时间(Hold-time) - 在发送者被认为失效前最长的不接收消息的秒数。 

       BGP标识 - 提供发送者的标识(IP地址),在启动时决定,对所有本地接口和所有对等BGP路由器而言都是相同的。 

       可选参数长度 - 标识可选参数域的长度(如果存在的话)。 

       可选参数 - 包含一组可选参数。目前只定义了一个可选参数类型:认证信息。认证信息含有下列两个域:

       认证码:标识使用的认证类型。

       认证数据:包含由认证机制使用的数据。

       3、更新消息格式

       BGP更新消息由BGP信头和附加域构成,下图为BGP更新消息的附加域:

收到更新消息分组后,路由器就可以从其路由表中增加或删除指定的表项以保证路由的准确性。更新消息包含下列域:

       失效路由长度 - 标识失效路由域的总长度或该域不存在。 

       失效路由 - 包含一组失效路由的IP地址前缀。 

       总路径属性长度 - 标识路径属性域的总长度或该域不存在。 

       路径属性 - 描述发布路径的属性,可能的值如下:

       :必选属性,定义路径信息的来源。 

       AS路径:必选属性,由一系列AS路径段组成。 

       下一跳:必选属性,定义了在网络层可达信息域中列出的应用作到目的地下一跳的边缘路由器的IP地址。 

       多重出口区分:可选属性,用于在到相邻AS的多个出口间进行区分。 

       本地优先权:可选属性,用以指定发布路由的优先权等级。 

       原子聚合:可选属性,用于发布路由选择信息。 

       聚合:可选属性,包含聚合路由信息。 

       网络层可达信息 - 包含一组发布路由的IP地址前缀。

       4、通知消息格式:

       下图为BGP通知消息使用的附加域:

       通知消息分组用于给对等路由器通知某种错误情况。

       错误码 - 标识发生的错误类型。下面为定义的错误类型:

消息头错:指出消息头出了问题,如不可接受的消息长度、标记值或消息类型。 

       初始消息错:指出初始消息出了问题,如不支持的版本号,不可接受的AS号或IP地址或不支持的认证码。 

       更新消息错:指出更新消息出了问题,如属性列表残缺、属性列表错误或无效的下一跳属性。 

       保持时间过期:指出保持时间已过期,这之后BGP节点就被认为已失效。 

       有限状态机错:指示期望之外的事件。 

       终止:发生严重错误时根据BGP设备的请求关闭BGP连接。 

       错误子码 - 提供关于报告的错误的更具体的信息。 

       错误数据 - 包含基于错误码和错误子码域的数据,用于检测通知消息发送的原因。

协议同步

       一.理解BGP同步及其基本需求

       1.BGP同步规则的定义:

       在bgp同步打开的情况下,一个BGP路由器不会把那些通过ibgp邻居学到的bgp路由通告给自己的ebgp邻居;除非自己的igb路由表中存在这些路由,才可以向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外部的路由(来自internet),那么结果是igp路由器要维护数以万计的外部路由,对路由器的CPU和memeory以及AS内部的链路带宽的占用将带来巨大的开销.

       5.结论

       通常BGP协议的运行需要关闭同步.

       二.BGP同步的解决方案1.full mesh iBGP解决方案

       AS内部的所有路由器都运行full mesh iBGP,就可以关闭所有路由器的同步而不影响路由的通告和连通性.

问题:

       当AS内部路由器数量很多时,需要建立N*(N-1)/2个ibgp会话,带来过度的系统开销,扩展性不好.

Full-Mesh IBGP 拓扑示意:15个路由器的AS,需要建立15(15-1)/2=105个ibgp会话

       2.路由反射器解决方案

AS内部的所有路由器都运行bgp,在AS内部部署路由反射器,构建hub and spoke的ibgp(会话数为N-1), 然后关闭所有bgp路由器的同步.

问题:

此方案可以使bgp路由器传递ibgp路由到ebgp, 并保证bgp路由的连通性.但是对物理拓扑有很大的限制(要求是星型拓扑)

       3.bgp联盟解决方案:

       AS内部的所有路由器都运行bgp,把一个原始的AS基于网络拓扑划分为若干个sub-AS(又称联盟AS),联盟AS之间的bgp邻居叫做联盟ebgp,不需要full mesh bgp会话;在每个联盟AS内部运full mesh ibgp或者hub and spoke反射器,然后就可以关闭所有路由器的bgp同步功能.

       结论:bgp联盟结合路由反射器的方式较好的解决了bgp的同步规则带来的需求,是最为有效的解决方案.

bgp联盟拓扑示意图

       三.BGP同步规则的总结

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

       2.关闭同步能够实现bgp路由的传递,不一定能保证as内部连通性,除非as内所有路由器都运行bgp才可以保证连通性;否则,仍然需要路由再发布(bgpàigp)

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

协议分析

       BGP是一种自治系统间的动态路由发现协议,它的基本功能是在自治系统间自动交换无环路的路由信息。与OSPF和RIP等在自治区域内部运行的协议对应,BGP是一类EGP(Edge Gateway Protocol)协议,而OSPF和协议。   

       BGP是在EGP应用的基础上发展起来的。EGP在此以前已经作为自治区域间的路由发现协议,广泛应用于NFSNET等主干网络上。但是,EGP被路由环路问题所困扰。BGP通过在路由信息中增加自治区域(AS)路径的属性,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的策略。同时,随着INTERNET的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,都影响了网络的性能。BGP支持无类型的区域间路由CIDR(Classless Interdomain Routing),可以有效的减少日益增大的路由表。   

       BGP运行时刻分别与本自治区域外和区域内的BGP伙伴建立连接(使用Socket)。与区域内伙伴的连接称为IBGP(Internal BGP)连接,与自治区域外的BGP伙伴的连接称为EBGP(External BGP)连接。本地的BGP协议对IBGP和EBGP伙伴使用不同的机制处理。

   

       1、BGP协议的层次位置

       BGP使用Socket服务建立连接,端口号为179。

       2、BGP的消息结构

       BGP有4种类型的消息。分别为OPEN,UPDATE,KEEPALIVE和NOTIFY。它们有相同的消息头

       ⑴消息头结构:

       Marker : (16字节) 鉴权信息

       Length : (2字节) 消息的长度

       Type : (1字节) 消息的类型

       0 :OPEN

       1 :UPDATE

       2 :NOTIFICATION

       3 :KEEPALIVE

       ⑵OPEN消息结构:

       消息头加如下结构 :

       Version :(1字节) 发端BGP版本号

       My Autonomous System :(2字节无符号整数) 本地AS号

       Hold Time :(2字节无符号整数) 发端建议的保持时间

       BGP Identifier :(4字节) 发端的路由器标识符

       OptParmLen :(1字节) 可选的参数的长度

       Optional Parameters :(变长) 可选的参数

       ⑶KEEPALIVE消息结构

       KEEPALIVE消息只有一个消息头。      

       ⑷NOTIFY消息结构

       消息头加如下结构:

       Errsubcode :(1字节) 辅助错误代码,略。

       Data :(变长) 依赖于不同的错误代码和辅助错误代码。用于诊断错误原因。

       ⑸UPDATE消息结构

       消息头加如下结构:

       Unfeasible Routes Len :(2字节无符号整数) 不可达路由长度

       Withdrawn Routes :(变长) 退出路由

       Path Attribute Len :(2字节无符号整数) 路径属性长

       Path Attributes :(变长) 路径属性(以下详细说明)

       Network Layer Reachability Information :(变长) 网络可达信息(信宿)

       其中退出路由和信宿地址的表示方法为一 的二元组。length一个字节,指示地址前缀的长度。prefix为地址前缀,长度1至4字节。

       3、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 (Type Code = 1,公认必选属性)

       指示此路由起始类型:

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

       AS路径属性由一系列AS路径段(Segment)组成。每个AS路径段为一三元组。

       路径类型有:

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

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

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

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

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

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

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

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

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

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

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

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

       4、BGP协议的特点

       BGP是一种AS(自治区域)外部路由协议,主要负责本自治区域和外部的自治区域间的路由可达信息的交换。因此,它所关心的拓扑结构是AS(自治区域)的拓扑结构,BGP通过UPDATE消息中路由的AS属性来构造AS的拓扑结构图,进一步通过此结构图来选择路由。

       与OSPF,RIP等IGP协议相比,BGP的拓扑图要更抽象和粗略一些。因为IGP协议构造的是AS内部的路由器的拓扑结构图。IGP把路由器抽象成若干端点,把路由器之间的链路抽象成边,根据链路的状态等参数和一定的度量标准,每条边配以一定的权值,生成拓扑图。根据此拓扑图选择代价(两点间经过的边的权值和)最小的路由。这里有一个假设,即路由器(端点)转发数据包是没有的代价的。而在BGP中,拓扑图的端点是一个AS区域,边是AS之间的链路。此时,数据包经过一个端点(AS自治区域)时的代价就不能假设为0了,此代价要由IGP来负责计算。这体现了EGP和IGP是分层的关系。即IGP负责在AS内部选择花费最小的路由,EGP负责选择AS间花费最小的路由。

       BGP作为EGP的一种,选择路由时考虑的是AS间的链路花费,AS区域内的花费(由BGP路由器配置)等因素。

如上所述,内部网关协议IGP需引入AS自治区域内部网络拓扑图其它各点的路由,同时向其它端点发送本端点(路由器)所知的路由,如直接路由、静态路由等。作为外部网关协议,BGP发送和引入路由的单位是整个AS自治区域,即BGP要发送本地路由器所在的AS内部的所有路由,引入其它AS自治区域的所有路由(假设不使用路由策略控制发送和引入)。其路由数量显然要远远大于IGP发送和引入的路由数量。因此,类似于IGP那样定时对外广播路由信息是不可取的。BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:初始化时发送所有的路由给BGP对端(BGP Peer),同时在本地保存了已经发送给BGP对端的路由信息。当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较,如未发送过,则发送,如已发送过则与已经发送的路由进行比较,如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对端发送一个退出路由消息。

IP骨干网

       1 制约BGP扩展性的几个问题

       BGP是目前应用在因特网上的IP网络互联协议,为运营商之间的互联提供了稳定而安全的路由协议,具有丰富的路由控制机制。为了更好地控制路由策略,当前大部分的运营商均将BGP部署到骨干路由器。随着网络的不断扩展、路由器数目的增多以及路由信息条目的激增,解决BGP的扩展性问题变得越来越重要。

目前BGP的扩展性面临如下几个问题。

       (1)I-BGP的Full-Mesh问题

       BGP路由协议分为I-BGP和E-BGP两个部分。I-BGP用于自治域内的路由器之间,E-BGP用于自治域间的路由器之间。为了防止产生环回路由,BGP协议要求一个路由器通过I-BGP学到的路由,不再向其他I-BGP邻居广播,所以一个自治域内所有参加I-BGP协议的路由器都要与其他路由器建立会话,从而保证路由信息能够正确地广播到每一个路由器。依照这个原则,一个自治域内总的I-BGP会话数为N×(N-1)/2 (N为运行I-BGP的路由器数),当N不断增大时,这个数字会大得惊人:如100台路由器,则会话数为4950。这对网络设备而言是个非常大的负担,而且还将使网络的管理与配置变得异常复杂。而骨干网通常由大量的运行I-BGP的路由器组成,因此,这个问题是否能够解决,直接影响到网络规模的大小。

       (2)更改路由策略时路由振荡的问题

       BGP属于增量更新的路由协议,当有新的路由要发布时,路由器会向邻居发送Update信息,而如果要删除某条路由时,就会发送Withdraw信息。BGP路由的Flap的定义是:当一条路由在被收回(Withdraw)后,又被广播(Update)出来,视为一次Flap。由于任何一条路由的收回和更新都会导致一台路由器整个路由表重新计算,因此当Flap的情况比较多时,对路由器设备的负载将产生巨大的压力。根据笔者在实际工作中的经验,一般情况下,一台高端路由器在计算BGP路由的时候,CPU的负载基本上在80%~90%左右,有时甚至达到100%,占用了几乎所有的CPU资源。虽然目前大部分的高端路由器都将路由计算的模块与转发模块分布在不同的硬件上,来减少主CPU忙导致的路由器性能下降的问题,但是路由表的频繁变化和更新,对整个设备的运行还是有一定的影响的,而且这样的计算会随着路由的收回或广播,继续向自治域内部扩展,使内部的路由器产生同样的问题。

       (3)其他需要考虑的问题

       除了上面的两个问题会导致对路由器资源过量消耗之外,还有其他的一些因素,如路由的数目、BGP路由表的大小和路由计算的方式等,同样也会影响路由器的性能。

另外,网络越大,路由条目越多,配置和管理的工作也就越复杂,这就需要在网络设计的时候尽量简化配置,降低管理人员的工作强度,避免人为原因造成故障。

       2 如何解决制约BGP扩展性的问题

       针对以上问题,介绍一些相关的解决方法。

       (1)解决I-BGP会话数瓶颈的方法

       上面提到的I-BGP的会话数过多的问题,可以采取两种办法来解决:

       1)联盟的方法(Confederations)

       联盟的工作原理是:将原来一个自治域的网络分成多个子自治域,通过Confederations id将原AS号配置到每个路由器上。这样有两个好处:一是可以保留原有的I-BGP属性,包括Local Preference、MED和NEXT_HOP;二是能在Confederations的功能中自动实现,无需管理员在网络的出口处配置过滤内部AS号信息的操作。

       2)路由反射器(Route-Reflector)

       采用路由反射器是目前应用最广泛的方法,较之前面联盟的方法,具有更好的扩展性。路由反射器的工作原理是:将一个自治域内的路由器分成几个Cluster,每个Cluster由Reflector和Client组成。Reflector之间形成Full Mesh,运行常规的I-BGP;Client只与Reflector运行I-BGP,对于Client来说,Reflector只是普通的邻居而已,Reflector则扮演了路由集散地的角色,将从其他Reflector学到的I-BGP路由转发给Client,同时,将从Client学到的I-BGP路由转发给Cluster内的其他Clients和Cluster外的其他Reflector,再借由Reflectors广播到其所在的Cluster。在实际的网络中,为了提高冗余度,通常一个Client与多个Reflector建立邻居关系,而且不局限于Client所在Cluster的Reflector。

       由此可见,Client上的I-BGP会话数一般为1~2个,与联盟的方法相比,只要Reflector的性能足够高,Cluster就可以做得很大,而Client的负载不会随Cluster的变化有太大的变化。对于前一种方法,由于一个子自治域的所有路由器还是要做到Full Mesh,所以最低性能的路由器决定了一个子自治域的大小;而路由反射器法则通常是一个或多个最高性能的路由器决定Cluster的大小,因此,具有更好的网络扩展性能。

       另外,一个Reflector也可以成为另外一个Reflector的Client,形成层级结构,这特别适用于按照分层结构建设的网络,可以很容易地把平面的网络管理演变为分层管理。

       当然,在使用路由反射器的时候,也有一些需要注意的地方,比如:Reflector并不是纯粹的转发路由,所有收到的路由在Reflector上同样要经过最优计算,然后将优选路由向外广播,所以Reflector的选择要依据网络结构而定,尽量使I-BGP邻居关系与实际的电路连接关系相对应。

       (2)控制路由振荡

       目前,控制Route Flap主要采取Damping的方法:一个BGP路由器对收到的E-BGP路由设定Penalty值,每一次路由Flap都会使该路由的Penalty值增大,而路由稳定时,Penalty值会随时间而减小;当Penalty值超过预设的抑制限制时,该路由就不再被广播,而当Penalty减小至低于重用限制时,该路由才会被重新向外广播。这种方法主要是针对E-BGP邻居而言的。这样,当一个网络内部发生路由振荡时,与之相连的其他网络通过Damping可以有效地防御对各自网络的影响。

       在网络维护中,经常会遇到这样的情况:宁愿一条电路中断一段时间,也不希望它在不停地震荡。因为中断一段时间后,只要电路恢复,网络流量也会随之恢复;与此相反,振荡的电路恢复后,需要等待一段时间才能恢复正常的流量(其他网络都在抑制振荡的路由)。Damping则可以有效地保证因特网的稳定,但同时也会导致一些故障的延时恢复。

       当前的设备基本都支持Damping的功能,而且提供可以配置的参数来精细控制Damping。一般情况下,设备提供的缺省配置能够满足大多数网络的需求,如果确有特殊需要,则一定要经过仔细计算,否则,不是没有效果,就是把别人的路由抑制后很长时间不能恢复。

       (3)Peer Group的应用

       在实际的网络中,有一种非常普遍的现象,即一个路由器会有多个属于一类的BGP Peer。这里的“属于一类”是指BGP的策略相同或类似,当Peer比较多时,BGP的配置会变得臃肿,同时,路由器的负载也会加重,因为一旦有路由的更新,路由器需要针对每个Peer做一次策略计算(虽然策略都相同)。另外,应用Peer Group还有一个好处,就是降低了对路由器设备的资源消耗,因为路由器对同一Group更新路由时,由于使用相同策略,因此只进行一次路由计算,从而大大减少了占用CPU的时间。

       在实际的网络维护中,即使当同一类的Peer很少时,一般也建议采用Peer Group的方式,因为这样具有很好的扩展性。Peer Group不但适用于I-BGP的Peer,也适用于E-BGP的Peer。

       (4)关于route refresh的措施

       骨干网络维护中,经常会遇到修改BGP策略的情况,如更新某个Peer的as-path限制列表,在配置修改后需要使其生效,以前的做法是中断当前的BGP会话,然后重新建立,命令如下:

       clear ip bgp x.x.x.x 

       这么做主要是因为路由器在收到对方的BGP路由表后,先进行策略运算,然后将最优路由存储在本机的BGP路由表中,而不是把原始的路由统统保存。当策略改变时,必须重新建立连接来获得对方的全部路由,然后利用新策略再次计算。这种方式的弊端显而易见,如网络阻断、大量消耗路由器的CPU资源等。

解决这个问题目前通常采用两种方法:一种方法是设法保存原始的BGP路由,这样,重新计算时就不需要重传了;另外一种方法是在启用新策略的时候,在不中断BGP会话的前提下,向对方请求重发全部BGP路由表。

       第一种方法是利用软件配置实现的,配置的命令如下:

       neighbor 1.1.1.1 soft-reconfiguration inbound

       在启用新策略的时候输入命令:

       clear ip bgp 1.1.1.1 soft [in|out]

       这样,所有的原始BGP路由就会被存储在另外一张路由表里面,在修改策略的时候,通过对这张路由表进行运算,就可以得到最优的BGP路由表,这样对路由产生的资源消耗较小;而且有这样一张原始的路由表,可以在修改策略后、正式启用之前使用命令来检查策略修改后的效果。但这种方法需要额外的内存资源来存储路由表。

第二种方法是由路由器设备的BGP 能力(BGP Capabilities)决定的,也就是系统软件本身内置的功能模块。在建立BGP会话的时候,这个参数通过BGP OPEN在两个路由器间进行交换。一个设备是否支持BGP RefreshCapabilites,可以用命令下列来检查:

       show ip bgp n x.x.x.x

       如果参与BGP的两个路由器都具备这个功能,那么不需要任何配置,当执行clear ip bgp n x.x.x.x in 时,本端BGP进程不会中断BGP会话,而是向对端请求重发全部的BGP路由表。相对于第一种方法,这种方法的好处是可以节省内存资源,缺点是网络管理员无法了解对方发过来的原始路由,而且重发了全部路由表,效率上也没有第一种方法高。目前骨干网内的设备基本上都支持这个功能。

       3 总结

       以上对BGP扩展性相关的几个问题和相关的措施进行了论述,在实际的应用中还需要根据具体情况来部署。但是总的思路和原则都是一样的,即一方面要降低设备的资源消耗,另外一方面要简化维护管理,从硬件、软件两方面来提高网络的扩展性。

协商过程

BGP有5种message

1.  Open (code 1):用于建立连接,包含版本号(如BGP3/BGP4)Hold Time=180s(是一个协商的过程,以较小的Hold Time为准),Router-ID(OSPF和BGP可以手动配置),AS号(范围从1~65535,其中64512~65535 的AS编号范围留作私有); 

2.   KeepAlives(code 4):周期发送用于维护连接检查路径(这个包是不可靠的),T=Hold Time/3, Hold Time=0 => No KeepAlive.,keepalive 是个19 字节周期发送的BGP 消息头标,没有数据域。

3.   Update(code 2):消息包含了三个组件:网络层可达性消息(NLRI)、路径属性和被撤销的路由。包括到达目的网络的路径和属性,更新路由信息用,一次更新只有一条路径,但可以有多条网络。Update可以删除(宣告不可达)和增加(宣告可达)路由.其内容是前缀的长度。

4.   Notification(code 3):网络中出现错误(Error),检测到后断开连接并发送通知给对方。

5.Route-Reflesh message:一个可选的message (negotiated during capability advertisement) that is sent to request dynamic BGP route updates from the Adj-RIB-Out table of a remote BGP speaker

协商过程基本上是:Idel,connect,open sent,open confirm,establish。

BGP邻居建立会话的5种状态: 

1.       Idle:查找路由表,该过程BGP对它的资源进行初始化,复位一个连接重试计时器,发起一条TCP 连接,并开始倾听远程对等体所发起的连接。 

2.  Connect:找到路由表后进行TCP三次握手,TCP 连接成功,则转到OpenSent状态,TCP连接失败,则转到active 状态,将尝试再次连接。 

3.  Open Sent:握上手后发送Open message消息,等待其对等体发送打开消息,如果出错,则发送一条出错消息并退回空闲状态,如果无错,则开始发送Keepalive 并复位keepalive 计时器。 

4.  Open Confirm:收到对方发来的Open消息,如果收到keepalive 消息,BGP 就进入established状态,邻居关系协商完成;如果系统收到一条更新或keepalive 消息,它将重新启动保持计时器;如果收到Notification消息,BGP 就退回到空闲状态。 

5.  Established:会话建立,邻居关系协商过程最终状态;这时BGP将开始与它的对等体交换路由更新数据包。 

PS: Active状态:当路由器发送出OPEN包给邻居等待回应,如果长时间未接收到回应则超时,超时后状态更改为Idle还是connect状态?试图发起TCP连接获得对等体,成功转到Open Sent状态,连接重试计时器超时,退回连接状态,这是由于TCP链路上出现了问题所致。?? 

产生问题的原因主要有: 

1.         Neighbor命令后面的ip-address配置有错; 

2.         没有打上Neighbor命令(两边都要) 

3.         更新源错误,或者更新源不可达。

answer: 

1.当BGP speaker处于active状态,BGP尝试通过初始化传输协议连接来形成peer。如果传输连接建立,则进入OpenSent状态。(同时发送OPEN信息)。如果ConnectRetry 计时器超时,BGP重启ConnectRetry计时器,并且退回到Connect 状态。只有当系统中止,或者人为地把TCP中止时才退到Idle状态。

2.问:在IBGP关系中,在sh ip b的时候看到的那个next-hop的ip 地址。下一跳地址,就是通告该路由的IBGP 的 更新源。???还是Router-id???

answer:next-hop的IP地址是更新源地址。Router-ID其实只是路由器的一个标识而已,没有太多的意义。可以是虚拟的。比如,它通常就是loopback地址。不要求一定TCP可达。但是更新源必须TCP可达。否则怎么保障路由信息更新的一定传达目的地?对吧。

还有一个解决方法关键看sh ip bgp nei里面的tcp会话那一块,又还是没有。如果没有,检查路由和acl。

扩展网络

横向隔离规则规定:

通过IBGP学到的路由永远不能被传输到其它IGBP对等体。

路由反射器(Route Reflector)

路由反射器让被配置为路由反射器的路由器向其他IBGP对等体传输由IBGP所学到的路由来修改BGP的横向隔离规则。

路由反射器的优点:

配置了BGP路由反射器,就不再需要全互连的IBGP对等体。路由反射器被允许向其它IBGP对等体传输IBGP路由。当内部邻居命令语句数量过多时,I SP就会采用路由反射器技术。路由反射器通过让主要路由器给它们的路由反射器客户复制路由更新来减少AS内BGP邻居关系的数量(这样可以减少T CP连接)。

路由反射器不影响IP数据包所要经过的路径;只有发布路由信息的那条路径受影响。如果路由反射器没有被正确配置,那么将可能产生路由环路。

路由反射器的术语:

路由反射器:是被配置为允许它把通过IBGP所学到的路由通告(或反射)到其他IBGP对等体的路由器。

集群:路由反射器出其它客户的组合;

客户:路由反射器和其他路由有部分IBGP对等关系的这些路由器

非客户:不是路由反射器的客户的其他IBGP的对等体;

originator(始发者) ID:是任选的、非传递BGP属性,它被路由反射器创建。这个属性带有本能AS内部由始发者的路由ID;

路由反射器集群表:路由报经过的集群ID序列。

originator(始发者) ID、集群ID和集群表有助于在路由反射器配置中防止产生路由环路。

用来将路由器配置为BGP路由反射器,并且将指定的邻居配置为它的客户:

neighbor ip-address route-reflector-client

ip-address:将被标识为客户的BGP邻居的IP地址

bgpcluster-id cluster-id: 配置集群ID

show ip bgp neighbors: 显示那个邻居是路由反射器客户

策略控制和前缀列表(Prefix list)

发布列表利用访问控制列表来指定哪些路由信息将被过滤。

采用前缀列表的优点:

*在大型列表的加载和路由查找方面比访问控制列表有显著的性能改进

*支持增量修改;

*较友好的命令行接口

*更大的灵活性

配置前缀列表:

ip prefix list-name [seq seq-value][deny | permit]network/len [ge ge-value] [le le-value]

关闭前缀列表条目序号

no ip prefix-list sequence-number

重新启用序号自动生成功能

ip prefix-list sequence-number

查看前缀列表

show ip prefix-list

配置邻居连接权重

neighbor {ip-address | peer-group-name} weight weight

改变缺省的本地优先值

bgp default local-preference value

路由优化

       如果拥有多个互联网连接,就会知道仅仅简单使用边界网关协议(Border Gateway Protocol,BGP)很难得到最优的路由路径。在这点上,没有电信网络的7号信令系统精妙(Signaling System 7,SS7)。作为电讯网络的控制面,SS7在一次通话建立之前能够决定出最好的路径。互联网上没有这样的控制面,虽然BGP也能决定路由(这点与SS7相似),但它不是总能选择最好的路径。BGP在不打断内部或外部用户的情况下让边缘路由器通过一个首选的连接传输业务,如果首选连接失败则通过次选连接提供业务。

当BGP选择一个路由时,如果能考虑到每个ISP连接所能提供路由通路的性能等因素的话,情况肯定会更好。

RouteScience的PathControl是这样一种新产品,它不仅可以衡量通过每个BGP对等体的路由性能,还可以根据这些信息来改变通过BGP的优先路由。

PathControl勇挑重任

PathControl 1.1运行在Linux上,提供独立的功能,一个用于报告,一个用于管理,还有一个给核心引擎,对于每个外部BGP对等体都有一个接口。

PathControl 1.1提供了一个强健的Java程序工具。下一个版本将允许从GUI(图形用户界面)配置PathControl,但在目前的版本中必须通过基于IOS的命令行界面管理设备。

PathControl所能提供的不只是连接性能和它们的相应通路等内部信息,还可以让你通过配置一些变量来控制使用那些连接。

PathControl可被放置于边缘路由器之后的任何位置。对路由器的连接可以通过一个专用端口或一个通道连接建立,无论哪种方式,PathControl都需要对外部世界和边缘路由器进行访问。

测试见性能

将PathControl直接连接到一个Cisco Catalyst 6500交换机上,交换机被配置为接收来自两个Nortel Web交换机(一台180e和一台AD4)的外部BGP输入数据。PathControl被设置与Cisco交换器对等,监视被每个Nortel设备声明的路由。PathControl可以保持在被动状态,监视并报告每个远程对等体的性能;它也可以被置于声明模式,这使它可以在确定了哪一条连接性能更好后,在边缘路由器上改变首选路由。

用户可以配置PathControl更改路由的频度,使用户的边缘路由器不会被压制。最好让PathControl至少在被动模式下持续运行几天,使用报告发生器来观察PathControl声明一个新路由的频度,然后针对具体情况确定最佳的更改频度。

PathControl用一个TCP握手的往返时间作为其性能度量的基础,经由HTTP向一台客户机发送一幅1x1像素的GIF图像来被动检索衡量性能的数据,还可通过探查用户设置的Web站点来进行主动检索。对于后者,PathControl打开一个到达某站点的TCP连接并测量完成三向TCP握手的时间。

为实现被动测量,设备上的每一个测量接口都被配置一个虚拟IP地址(Virtual IP Address,VIP)。当经由HTTP或HTTPS访问该地址时,返回一个1x1像素的GIF图像。PathControl直接提供这个GIF,测量与一台客户机建立起一个TCP通话的时间。只要将VIP地址嵌入进站点网页的一个HREF,一旦某台客户机发出对该页的请求,测量就开始。此中的关键是对基于策略路由的使用,该路由在边缘路由器上配置,根据源地址连贯地转送通讯数据。这样PathControl会连续测量每条路径的性能,而不必考虑路由表中的其它项。

默认状态下PathControl为执行对数据的计算至少需要6次测量。计算过程赋予每条路径一个等级,该等级将用于确定哪条连接工作得更好。在默认状态下,如果两个或更多的等级被赋的数值差别不超过25点,它们都会被认为“更好”。如果某条连接的等级比另一条高出25点,则它被认为是“最好”的,PathControl会经由内部边界网关协议(interior BGP,iBGP)向与之对等的边缘路由器声明这条路由。

网内部署

        bgpbgp随着INTERNET在中国的发展,ISP服务商与INTERNET的连接也在发生着变化。在网络连接上,从单一的连接,到通过多个电信公司多条线路连接到INTERNET;在所使用的路由协议方面,从使用的静态路由协议,发展到使用BGP(Border gateway protocol)。那么ISP如何随着网络的发展,在网络内部合理有效地部署BGP路由协议呢?我们将在本文中简要的介绍一下。实际上,如何在网内部署BGP路由协议的主导思想也就是如何使自治域内部的路由器获得自治域外部路由信息,从而引导访问域外的流量流出自治域。

从总体上,在域内部署BGP路由协议应考虑以下几点:

1.网络实际的拓扑结构;

2.设备性能是否满足启动BGP的要求,通常BGP的路由表非常庞大,以从50,000条增加到现在约100,000余条。这对路由器的内存及性能要求很高;

3.在有多条INTERNET接入线路时,线路的备份和流量的分布。

以下将通过一些例子来具体说明这些问题。在继续讨论前,我们先提及几个概念:

核心层:具有高速交换能力的骨干网络,位于网络的核心。

分布层:在核心层的外围,通常用于实现各种路由策略或实施访问控制等功能。

接入层:在网络的最外层,在该范围内的路由器是用户联入ISP的接入点。 

 

       在网络发展初期,网络结构比较简单(如图一),ISP只有一条线路连接到INTERNET。通常人们不会在这种简单的网络结构中使用BGP,而会使用简单方便的静态路由进行互联。这样可以简化路由器配置,便于管理,同时降低对边界路由器的性能要求,减少成本。 

       如果需要启用BGP,操作也很简单只需在路由器R1上启用BGP,并将R1作为网内其它路由器的缺省网关,从而达到将外部路由注入网内的目的。

       随着网络的近一步发展,ISP需要通过不同的网络提供商,通过多条线路与INTERNET连接,以保证网络的可靠性。这时BGP才有了真正的用武之地。在这种情况下,网络通常会出现以下几种结构。如图二,图三。两种网络结构看起来有些类似,图三中网络结构只是增加了一台路由器以排除图二中路由器R1产生单点故障的可能,但在如何部署BGP路由时却完全不同。 

       在图二中只需在R1上配置BGP,并将R1作为网内其它路由器的缺省网关,并通过

BGP路由协议所提供的Weight这个路由参数,调节网内流量在两条线路上的分布。这样即可实现线路的互为备份,又可有效的调节流量分布。

       有两台路由器拥有外部路由,通常为保证域内的路由一致性,需在图中路由器R1和R2之间建立IBGP连接,使其建立一致的BGP路由表。在这个过程中,也可人为的使用BGP路由协议所提供的Local-Preference这个路由参数,优化路由选择,以控制数据流量在线路上的分布。但如何将这些外部路由告知网内的其它路由器,简单的有以下两种方法:

 

1.在网络结构相对简单时,网络没有分布层,核心层直接与接入层连接。这时接入层路由器往往不能在传输大量的用户数据的同时, 满足启用BGP所需的性能要求。在这种情况下,只有依据流量的分布情况,将网内接入路由器划分组别,不同的组别将缺省网关指向不同的边界网关路由器。 这种设计只能作为网络结构不完善,设备性能不高时的临时方案,不能作为永久性方案。因为它经常需要人为干预,依据网络流量变化情况重新划分路由器组别,否则会出现某一路由器负载过重,而另为一台负载较轻的情况,从而不能有效的使用设备资源。而且当互联的线路增多时,这种设计会面临更多的问题。

 

2.最好的方法是首先要建立完善网络结构,网络结构应具备核心层,分布层和接入层。通过IBGP路由协议将外部路由注入到分布层路由器中,如图二中路由器R3,R4。进而将分布层的路由器作为某一区域接入层路由器的缺省网关,将通往域外的负载均匀的分布到各个分布层路由器上,从减少对具体某个路由器的压力。 这种设计是网络结构日趋完善,网络规模日趋扩大的ISP最终的选择。 

        最近CISCO公司有从另一角度提出一个部署BGP路由协议的新思路,使用IBGP作为内部路由协议,交换网内用户路由信息。及在网络的接入层路由器上启用IBGP路由协议,并将指向用户的静态路由分布到IBGP中。这主要是考虑,BGP路由协议在路由变动时,只更新发生变动的路由,不会象OSPF和ISIS,重新计算SPF数据库。因而利用BGP这一特性减少路由收敛时间,提高网络的稳定性。但在使用这种方法时,应注意BGP对路由器性能的要求,应避免将外部路由注入到接入层路由器中,导致路由器工作性能下降。 

 

       综上所述,我们简单讨论了如何在ISP的网络上部署BGP路由协议。实际上,BGP的应用重点和优势在于其对路由信息的控制能力, 从而达到对数据流量的控制和分配。这是一项非常复杂的工作,要依据具体的情况而定,在本文就不多谈了。但有一点需要注意,仅仅依靠BGP自身的手段来满足各种不同的实际需要是不可行的,还需与互联伙伴共同协作才能实现,因为BGP中的许多参数需要互联双方共同商定,才能生效。

建立连接

一、技术介绍

bgpbgp       使用BGP协议要将两个网络建立邻居关系,因为卫星走的是单向链路,不能建立起邻居关系,为了使BGP协议建立起邻居关系,我们在路由器中使用了代表路由器本身地址的环路地址,环路地址是逻辑地址,这样在BGP要建立邻居是路由器间均使用环路地址,因为环路地址是双向的。

       在建立BGP动态路由时,要使路由器间处在一个自治域中,建立邻居路由更新从环路地址更新。

       由于BGP生成动态协议是建立在TCP的基础上,它通过环路地址的邻居关系建立双向握手,从而生成动态路由,它的级别是200,所以ISDN备份的动态路由级别要大于200,级别越大优先级越低。

       策略路由在主站和小站之间都不是不须的,为了使配置易于理解,建议配置策略路由。

       在BGP发出握手请求时,要有一条路由到达对方路由器,我们的配置中使用默认路由到达DBN24 (如果没有默认路由必须增加到对方环路地址的静态路有),所以在DBN24上要添加到对方(远程小站路由器)环路地址的静态路由。

       远程小站路由器也必须配置一条到达主站环路地址的静态路由(如果小站没有默认路由)。

       二、配置

路由器中建立环路地址:

Interface loopbackup 0

Ip address 172.31.254.1 255.255.255.0

路由器中建立BGP 自治域:

Router bgp 65500

Network 172.16.5.0 mask 255.255.255.0 (本地网络)

Network 172.16.6.0 mask 255.255.255.0 (本地网络)

Neighbor 172.25.10.1 remote-as 65500 (使邻居在同一个自治域)

Neighbor 172.25.10.1 update-source loopback0(设置邻居更新在环路接口0)

Neighbor 172.25.10.1 route-map jinhua in (使用策略路由)

策略路由样例:

route-map jinhua permit 5

macth ip address 30

set ip next-hop 172.16.5.200

策略路由观察的访问列表:

access-list 30 permit ip 172.19.10.0 0.0.0.255

三、容易忽略的地方及问题

1、容易忽略的地方是:在路由器中有了路由,因为路由是到dbn24的,所以不能忘了在dbn24中的各远程点路由部分增加到对方环路地址的路由。

2、问题1:bgp中的network地址指的是什么地址?

答 :network地址指的是与邻居网络能建立通信的地址,在本网络中指本地两个网段地址。

3、问题2:为什么邻居与本地网络必须配置在同一个自治域内?

答:不在一个自治域的路由器必须是直接相联的才可以互相通信。

4、问题3:路由表中配置了默认路由,同时还有浮动静态ISDN路由,级别是201,那么静态路由比默认路由级别高,为什么在建立TCP会话中不使用浮动静态路由,而使用默认路由。

答:因为在BGP建立握手时,它寻找的目标地址是对方的环路地址,而ISDN的目标地址是对方的以太口地址,所以建立TCP握手使用默认路由(也可以设置一条指向对方环路地址的静态路由,级别明显高于ISDN路由,易于理解)。BGP建立动态路由的级别是200,在建立TCP握手后,它生成的路由表也是指向对方以太口地址,但它的优先级高于ISDN设置的路由级别201,而禁止ISDN路由生效,如果不能建立起指向对方以太口的BGP动态路由,那么在主站与小站的连接时,就是启用ISDN路由,引起ISDN拨号。

5、问题4:为什么配置串口的时候,必须加上ignore-dcd、no keepalive、ip igmp unidirectional-link、ip multicast ttl-threshold 14、ip pim dense-mode、ip igmp static-group 239.16.5.144。

答:因为在卫星链路中路由器串口不发送cd信号必须忽略,keepalive是指第二层的保持活动协议,如果让keepalive生效,那么它将监测某一链路的第二层双向是否保持活动,由于卫星链路在串口是单向的(小站指向主站),它将会是串口down掉,ip igmp unidirectional-link标示串口是单向链路,ip multicast ttl-threshold 14标示让小站的组播包的默认ttl-threshold为14,而让小站的组播包不至于未到主站就被丢失,也不能设大于14的值。ip pim dense-mode启用协议无关组播协议,ip igmp static-group 239.16.5.144标示小站的路由器加入239.16.5.144组播组。

四、BGP是否生效查询

1、使用命令:show ip bgp neighbors 查询bgp 状态。(注意黑体)

tongji#sh ip bgp neighbors

BGP neighbor is 172.25.10.1, remote AS 65500, internal link

BGP version 4, remote router ID 172.25.10.1

BGP state = Established, up for 00:41:10

Last read 00:00:11, hold time is 180, keepalive interval is 60 seconds

Neighbor capabilities:

Route refresh: advertised and received(new)

Address family IPv4 Unicast: advertised and received

Received 1763 messages, 0 notifications, 0 in queue

Sent 1766 messages, 0 notifications, 0 in queue

Route refresh request: received 0, sent 0

Default minimum time between advertisement runs is 5 seconds

For address family: IPv4 Unicast

BGP table version 4, neighbor version 4

Index 1, Offset 0, Mask 0x2

1 accepted prefixes consume 36 bytes

Prefix advertised 6, suppressed 0, withdrawn 2

Number of NLRIs in the update sent: max 2, min 0

Connections established 3; dropped 2

Last reset 00:41:43, due to User reset

Connection state is ESTAB, I/O status: 1, unread input bytes: 0

Local host: 172.31.254.1, Local port: 179

Foreign host: 172.25.10.1, Foreign port: 11045

Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes)

Event Timers (current time is 0x644BFAC):

Timer Starts Wakeups Next

Retrans 48 1 0x0

TimeWait 0 0 0x0

AckHold 45 39 0x0

SendWnd 0 0 0x0

KeepAlive 0 0 0x0

GiveUp 0 0 0x0

PmtuAger 0 0 0x0

DeadWait 0 0 0x0

iss: 1548750689 snduna: 1548751630 sndnxt: 1548751630 sndwnd: 15985

irs: 127891366 rcvnxt: 127892303 rcvwnd: 15985 delrcvwnd: 399

SRTT: 771 ms, RTTO: 806 ms, RTV: 35 ms, KRTT: 0 ms

minRTT: 568 ms, maxRTT: 1032 ms, ACK hold: 200 ms

Flags: passive open, nagle, gen tcbs

Datagrams (max data segment is 536 bytes):

Rcvd: 90 (out of order: 0), with data: 45, total data bytes: 936

Sent: 87 (retransmit: 1, fastretransmit: 0), with data: 46, total data bytes: 940

2、使用命令:show ip route (注意黑体)

tongji#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

* - candidate default, U - per-user static route, o - ODR

P - periodic downloaded static route

Gateway of last resort is 172.16.5.200 to network 0.0.0.0

172.16.0.0/24 is subnetted, 7 subnets

C 172.16.4.0 is directly connected, FastEthernet0/0.4

C 172.16.5.0 is directly connected, FastEthernet0/0.5

C 172.16.6.0 is directly connected, FastEthernet0/0.6

C 172.16.1.0 is directly connected, FastEthernet0/0.1

C 172.16.2.0 is directly connected, FastEthernet0/0.2

C 172.16.3.0 is directly connected, FastEthernet0/0.3

S 172.16.100.0 [1/0] via 172.16.5.200

172.19.0.0/16 is variably subnetted, 11 subnets, 2 masks

B 172.19.10.0/24 [200/0] via 172.25.10.1, 00:57:53

C 172.19.101.24/30 is directly connected, Serial4/2

C 172.19.101.28/30 is directly connected, Serial4/3

C 172.19.101.16/30 is directly connected, Serial4/0

C 172.19.101.20/30 is directly connected, Serial4/1

C 172.19.101.8/30 is directly connected, Serial3/2

C 172.19.101.12/30 is directly connected, Serial3/3

C 172.19.101.0/30 is directly connected, Serial3/0

C 172.19.101.4/30 is directly connected, Serial3/1

C 172.19.101.32/30 is directly connected, Serial5/0

C 172.19.101.36/30 is directly connected, Serial5/1

172.20.0.0/24 is subnetted, 1 subnets

S 172.20.2.0 [1/0] via 10.0.20.2

172.31.0.0/24 is subnetted, 1 subnets

C 172.31.254.0 is directly connected, Loopback0

203.91.153.0/29 is subnetted, 1 subnets

C 203.91.153.240 is directly connected, FastEthernet0/0.5

210.74.232.0/32 is subnetted, 1 subnets

S 210.74.232.178 [1/0] via 172.16.1.28

10.0.0.0/24 is subnetted, 2 subnets

C 10.0.20.0 is directly connected, Dialer20

C 10.0.254.0 is directly connected, Dialer10

S* 0.0.0.0/0 [1/0] via 172.16.5.200

S 192.168.0.0/16 [1/0] via 172.16.1.253

S 202.120.176.0/20 [1/0] via 172.16.1.253

3、 更改bgp后,必须更新,使用命令:

clear ip bgp *

相关百科
返回顶部
产品求购 求购