更新时间:2024-01-09
1 配置BGP
本章描述如何配置边界网关协议BGP。如果要了解本章BGP命令的完整描述,请参考其他有关“BGP命令”的章节。BGP是在RFC1163、1267和1771中定义的一种外部网关协议 (EGP)。它允许建立一种自治系统间路由选择机制,该机制能自动地保证在自治系统之间进行无环路的路由选择信息交换。
1.1 概述
1.1.1 边界网关协议BGP简介
在BGP中,每条路由都包含一个网络号、该路由传递所通过的自治系统列表(称作自治系统路径as-path)、以及其他属性列表。本公司路由器软件支持RFC1771中定义的BGP版本4。BGP的基本功能是同其它BGP系统交换网络可达性信息,包括有关AS路径表的信息。该信息能够用于构造能消除路由环路的AS连通图,并且能用AS连通图实施AS级的路由策略。BGP版本4支持无类型域间路由(CIDR),CIDR通过创建汇总路由减少路由表的大小,从而产生了超网。CIDR消除了BGP内网络等级的概念,并支持IP前缀广播。CIDR路由能通过OSPF, 增强型IGRP,ISIS-IP和RIP2来传送。
外部网关路由与内部网关路由一个很大区别就是可控制性更好。为了对路由进行控制,BGP的实现提供了多种可选方法:
• 为了过滤路由,可以用基于邻居的access-list、aspath-list、prefix-list来过滤路由,也可以用基于端口的access-list、prefix-list来过滤路由或路由的Nexthop属性。
• 为了改变路由的属性,可以用路由映像(route-map)来修改MED、Local Preference、路由权值(Weight)等BGP路由的属性。
• 为了与内部网关动态路由协议(ospf、rip等)进行交互,可以使用路由转发(redistribute),从而自动产生BGP的路由信息。也可以通过手工配置network、aggregate来产生BGP路由。在产生BGP路由的同时,可以用路由映射(route-map)来设置路由的属性。
• 为了控制系统中BGP路由的优先级,可以用distance命令来设置BGP路由的管理距离。
1.1.2 BGP如何选择路径
BGP的决策过程是建立在比较路由属性值的基础上的。当到同一网络具有多条路由时,BGP选择到达目的的最佳路由。下面的过程总结了BGP如何选择最佳路由:
• 如果下一跳到达不了,就不考虑它。
• 如果路径是内部的,并且激活了同步,如果路由不在IGP中,就不考虑该路由。
• 优先选取具有最大权值的路径。
• 如果各路由有相同的权值,优先选取具有最大本地优先级的路由。
• 如果各路由具有相同的本地优先级值,优先选取由本地路由器产生的路由。比如,路由可能由本地路由器使用network、aggregate 命令或通过转发IGP的路由生成。
• 如果本地优先级值相同,或者如果没有路由由本地路由器生成,则优先选取具有最短AS路径的路由。
• 如果AS路径长度相同,则优先选取具有最低Origin属性值(IGP < EGP < INCOMPLETE)的路由。
• 如果Origin属性值相同,则优先选取具有最低MED值的路由。除非激活bgp always-compare-med ,否则这种比较只在来自同一邻居AS的路由间进行。
• 如果各路由具有相同的MED,优先选取外部路径(EBGP)而不是内部路径(IBGP在内部)。所有的自治系统联盟内部的路径都被认为是内部路径,但是优先选取联盟EBGP而不是联盟IBGP。
• 如果路径属性相同,则优先选取到BGP下一跳最低的IGP权值为最优路由。
• 如果各路由有相同的连接属性,优先选取具有较小router-id的路由。
1.2 BGP配置任务
1.2.1 配置基本BGP特性
BGP配置任务分为基本任务和高级任务。基本任务中的前两项是配置BGP所必需的,基本任务中的其他项以及高级任务则是可选的。
1.2.1.1激活BGP路由选择
为了激活BGP路由选择,使用全局配置模式开始的如下命令激活BGP路由选择:
命令
|
目的
|
router bgp autonomous-system
|
在路由器配置模式下,激活BGP 路由过程。
|
network network-number/masklen [route-map route-map-name]
|
将网络标记为本地自治系统并将其列入BGP表中。
|
注意:
•对外部网关路由协议而言,用network路由器配置命令配置一个IP网络,仅能控制哪些网络能得到通告。这恰恰同内部网关协议(IGP)相反,例如RIP,它是用network命令决定发送更新到何处。
•network 命令用于把IGP路由引入到BGP路由表中。路由器资源,例如已配置的 RAM,决定了能使用的network命令的上限。作为选择,可以使用redistribute 命令来达到同样的效果。
1.2.1.2配置BGP邻居
配置BGP邻居是为了建立交换路由信息的对象。为了与外部世界交换路由信息,必须配置BGP邻居。
BGP支持两种邻居:内部邻居(IBGP)和外部邻居(EBGP)。内部邻居在同一AS内;外部邻居在不同AS内。通常,外部邻居彼此相邻,共享一个子网。而内部邻居可能在同一AS的任何地方。
使用路由器配置命令配置BGP邻居:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } remote-as number
|
指定一个BGP邻居。
|
有关配置BGP邻居的例子,请参阅本章后面的“BGP邻居配置示例”一节。
1.2.1.3配置BGP软重配置
一般说来,BGP邻居仅在连接建立时交换全部路由,以后只交换变化的路由。因此如果配置的路由策略有变化,为了应用于已收到的路由,必须清除BGP会话。清除BGP会话导致高速缓存无效并对网络的运作产生巨大的影响。软重配置功能使得不必清除BGP会话就允许配置和激活策略。因此,推荐使用软重配置,目前实现基于每个邻居来进行软重新配置。当软重新配置用于从邻居产生的入站更新时,则称之为入站软重配置当软重新配置用于发送出站更新到邻居时,则称之为出站软重配置。执行入站软重配置能使新的输入策略生效,执行出站软重配置使新的本地输出策略不复位BGP会话就生效
为了不复位BGP会话就产生新的入站更新,本地BGP会话者应不加修改的存储接收到的入站更新,而不管它是否被当前入站策略接收或拒绝。这样会很耗费内存,应当避免使用。另一方面,出站重配置没有任何额外的内存开销,因此总是有效的。可以在BGP会话的另一边触发出站软重配置使本地新的入站策略生效。
要允许入站软重配置,应配置BGP存储所有接受到的路由更新。出站软重配置不要求预配置。
使用下面的路由器配置命令配置BGP软重配置:
命令
|
目的
|
neighbor { ip-address | X:X::X:X } soft-reconfiguration inbound
|
配置BGP软重配置。
|
1.2.1.4复位BGP连接
一旦定义了两个路由器为BGP邻居,它们将会建立一个BGP连接,并交换路由选择信息。如果随后改变了BGP路由策略,或者其他的配置改变,则必须复位BGP连接以使配置变化生效。使用下面两个管理模式命令中的任意一个复位BGP连接:
命令
|
目的
|
clear ip bgp *
|
复位所有BGP连接。
|
clear ip bgp address
|
重建一个特定的BGP连接。
|
1.2.1.5配置BGP与IGPs的同步
如果允许另一个AS通过你的AS到第三个AS传送数据,则你的AS内部路由状态同它广播给其他AS的路由信息保持一致是十分重要的。例如,如果在你的AS中的所有路由器已通过IGP获知路由之前,你的BGP要广播路由,那么你的AS可能会收到一些路由器不能路由的信息。为了防止这种情况发生,BGP必须一直等到AS内部所有IGP路由器已经获知了该路由信息为止,这就是BGP与IGP的同步,同步被默认激活。
在某些情况下,不必同步。如果不允许其他AS通过你的AS传送数据,或者如果你的AS中的所有路由器都将运行BGP, 就可以取消同步功能。取消该特征能允许在你的IGP中携带较少的路由,并使得BGP收敛得更快。使用下面的路由器配置命令取消同步:
命令
|
目的
|
no synchronization
|
取消BGP和IGP之间的同步。
|
当取消同步时,也应该使用clear ip bgp 命令清除BGP会话。
有关BGP同步的一个例子,请参阅本章后面的“由邻居进行BGP路径过滤示例”一节。
一般说来,不希望转发所有路由给你的IGP。通常的设计是转发一条或两条路由,并使他们成为IGRP中的外部路由,或者使BGP会话者产生一个AS默认路由。当从BGP向IGP转发时,只有通过EBGP获取来的路由才会被转发。在大多数情况下,也不想再分配你的IGP给BGP,而只是用network 路由器配置命令列出AS中的网络,那么你的网络就会被广播。以这种方式列出的网络称为本地网络,并使BGP具有IGP的Origin属性。它们必须出现在主IP路由表中,并且有效;例如,它们是直连路由、静态路由或通过IGP获知的路由。BGP路由过程周期性地扫描主IP路由表以检测本地网络存在与否,并据此适当更新BGP路由表如果确实想BGP执行转发,必须非常小心,因为可能IGP中的路由是其他路由器通过BGP转发进来的,这就出现一种BGP把信息潜在地引入IGP,然后又把此信息送回BGP的情况。反之亦然。
1.2.1.6配置BGP路由权重
BGP路由权重是赋给BGP路由的一个数字以便能够控制路由选择过程,权重对路由器而言是本地的。权重取值范围是0~65535。本地生成的BGP路由默认权重为32768,从邻居获知的路由权重为0。管理者可以通过改变路由的权重实施路由策略。
使用下面的路由器配置命令配置BGP路由权重:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } weight weight
|
给来自一个邻居的所有路由指定一个权重。
|
此外,你可以通过路由映射(route-map)改变路由的权重。
1.2.1.7配置基于邻居进行BGP路由过滤
路由器软件的BGP实现中可以用四种方式过滤指定邻居的BGP路由:
•同ip as-path全局配置命令和neighbor filter-list 命令一起使用Aspath列表过滤器。
命令
|
目的
|
ip as-path access-list aspaths-list-name {permit | deny} as-regular-expression
|
定义一个与BGP有关的访问表。
|
router bgp autonomous-system
|
进入路由器配置模式。
|
neighbor {ip-address | X:X::X:X } filter-list aspath-list-name {in | out }
|
建立一个BGP过滤器。
|
注意:在开启asdot模式的情况下aspath属性中大于65535的as号显示为带.的形式,在配置aspath列表的时候用\.来匹配,例如匹配1.1配置成1\.1形式。
(1)同ip access-list或ipv6 access-list全局配置命令和 neighbor distribute-list 命令一起使用访问列表。
命令
|
目的
|
ip access-list standard access-list-name
|
定义一个ipv4访问列表。
|
Ipv6 access-list standard access-list-name
|
定义一个ipv6访问列表。
|
router bgp autonomous-system
|
进入路由器配置模式。
|
neighbor {ip-address | X:X::X:X } distribute-list access-list-name {in | out }
|
建立一个BGP过滤器。
|
(2)同ip prefix-list或ipv6 prefix-list全局配置命令和neighbor prefix-list命令一起使用前缀列表。
命令
|
目的
|
ip prefix-list prefixs-list-name |sequence number {permit |deny}A.B.C.D/n ge x le y
|
定义一个ipv4前缀列表。
|
Ipv6 prefix-list prefixs-list-name |sequence number {permit |deny}X:X:X:X::X/<0-128> ge x le y
|
定义一个ipv6前缀列表。
|
router bgp autonomous-system
|
进入路由器配置模式。
|
neighbor {ip-address | X:X::X:X} prefix-list prefix-list-name {in | out}
|
建立一个BGP过滤器。
|
(3)同route-map全局配置命令和neighbor route-map命令一起使用路由映射。
使用路由映射不仅可以过滤,还可以改变路由属性,其使用在以后章节描述。
基于邻居过滤路由的示例参考“基于邻居进行BGP路由过滤举例”。
1.2.1.8配置基于端口进行BGP路由过滤
配置基于端口过滤BGP路由可以使用访问列表、前缀列表。可以过滤路由的网络编号,也可以过滤路由的网关地址。可以指定access-list选项用访问列表过滤路由的网络编号,指定prefix-list选项用前缀列表过滤路由的网络编号,指定gateway选项用访问列表过滤路由的Nexthop属性。甚至可以同时过滤路由的网络编号和Nexthop属性,但access-list选项不能和prefix-list选项一起使用。指定*可以过滤所有端口上的路由。
配置基于端口过滤BGP路由需要在BGP配置模式进行如下配置:
命令
|
目的
|
filter interface {in | out}〔access-list access-list-name〕 〔prefix-list prefix-list-name〕〔gateway access-list-name〕
|
基于端口过滤BGP路由。
|
基于端口过滤路由的示例参考“基于端口进行BGP路由过滤举例”。
1.2.1.9取消BGP更新下一跳处理
可以配置取消邻居BGP更新的下一跳处理。这可能在非广播网络(如帧中继或X.25)中有用,在帧中继或X.25中,BGP邻居可能不能直接访问同一IP子网中的所有其它邻居。有两种方式取消下一跳处理:
• 使用该BGP连接的本地IP地址取代出站路由的下一跳地址;
• 使用路由映像指定入站或出站路由的下一跳地址。(参见其他章节)
使用下面的路由器配置命令取消下一跳处理并使用该BGP连连接的本地IP地址取代出站路由的下一跳地址:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } next-hop-self
|
BGP邻居更新时取消下一跳处理。
|
用这一命令来配置,将使当前路由器通告它自己作为路由的下一跳。因此,其他BGP邻居将把发给该网络的包发到当前路由器。这在非广播网络环境中是有用的,因为存在一条从当前路由器到指定邻居的路径。但在广播网络环境中,这就没有意义,因为这将产生不必要的额外跳数。
1.2.2 配置高级BGP特征
1.2.2.1使用路由映像过滤和修改路由更新
可以在每个邻居的基础上使用路由映像过滤路由更新和修改参数属性。路由映像既可以用于入站更新又可以用于出站更新。只有通过路由映像的路由才在发送路由更新或接受路由更新时处理。
路由映像支持入站和入站更新基于AS路径、团体和网络编号的匹配。AS匹配要求使用aspath-list 命令;基于团体的匹配要求使用community-list命令,基于ipv4网络的匹配要求使用ip access-list命令,基于ipv6网络的匹配要求使用ipv6 access-list命令。
使用下面的BGP配置命令配置用路由映像过滤和修改路由更新:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } route-map route-map-name {in | out}
|
把路由映像应用于入站或者出站路由。
|
使用路由映像过滤和修改路由更新的例子可以参考“BGP路由映像举例”。
1.2.2.2配置聚合地址
无类型域间路由能够创建聚合路由(和超网)以使路由表最小化。可以通过再分配聚合路由到BGP或者通过使用下面的任务表中描述的有条件聚合属性,可以在BGP中配置聚合路由。如果在BGP表中至少有一条更具体的记录,就把聚合地址加入到BGP表中。
使用下面的一个或者多个路由器配置命令在路由表中创建聚合地址:
命令
|
目的
|
aggregate-address network/len
|
在BGP路由表中创建聚合地址。
|
aggregate-address network/len summary-only
|
只广播汇总地址。
|
aggregate-address network/len attribute-map map-name
|
通过路由映像产生指定条件的聚合地址。
|
aggregate-address network/len as-set
|
包括被聚合路由的AS set path 属性
|
有关使用BGP路由聚合的例子,请参阅本章后面的“BGP路由聚合示例”一节。
1.2.2.3配置BGP团体属性
BGP支持的路由策略主要基于BGP路由信息的以下三个值之一:
• 路由网络编号;
• 路由的AS_PATH属性值;
• 路由的COMMUNITY 属性值.
通过COMMUNITY 属性是把路由划分为团体,并应用基于团体的路由策略,从而简化了控制路由信息的配置。
团体是一组具有共同属性的路由,每一条路由可以属于多个团体。AS管理人员可以定义一条路由属于哪一个团体。
COMMUNITY属性是在1~4,294,967,200范围内的可选的、可传递的全局属性。因特网团体中预先定义的著名团体如下:
著名团体
|
著名团体说明
|
no-export
|
不广播本路由到EBGP对等体(包括自治系统联盟内部的EBGP对等体)。
|
no-advertise
|
不广播本路由到任何对等体。
|
local-as
|
不广播本路由到自治系统外部(可以发送本路由到自治系统联盟中的其它子AS对等体。)
|
在生成、接收或者转发路由时,BGP会话者可以设置、添加或者修改路由团体属性。当聚合路由时,产生的聚合包含来自所有初始路由全部团体的COMMUNITY属性。
默认情况下, 不发送COMMUNITY 属性到邻居。使用下面的BGP配置命令指定发送COMMUNITY 属性到邻居:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } send-community
|
指定发送COMMUNITY 属性到邻居。
|
为路由设置团体属性需要如下工作:
命令
|
目的
|
route-map map-name sequence-number {deny | permit}
|
配置路由映射。
|
set community community-value
|
配置设置规则。
|
router bgp autonomous-system
|
进入路由器配置模式。
|
neighbor {ip-address | X:X::X:X } route-map access-list-name {in | out }
|
应用路由映射。
|
基于团体属性过滤路由信息需要作如下工作:
命令
|
目的
|
ip community-list standard | expended community-list-name {permit | deny} communtiy-expression
|
定义团体列表。
|
route-map map-name sequence-number {deny | permit}
|
配置路由映射。
|
match community-list-name
|
配置匹配规则。
|
router bgp autonomous-system
|
进入路由器配置模式。
|
neighbor {ip-address | X:X::X:X } route-map route-map-name {in | out }
|
应用路由映射。
|
使用团体属性的示例可以参考“使用BGP团体属性的路由映像举例”。
1.2.2.4配置自治系统联盟
减少IBGP 连接的方法是把一个AS分成多个子AS,然后把它们组成一个自治系统联盟。对外界而言,联盟看起来就像一个AS。在联盟内部,每一个子AS内是全连接的,并且与同一联盟中的其他子AS也有连接。即使在不同子AS的对等体之间有EBGP 会话,他们仍像IBGP 对等体一样交换路由选择信息。具体地讲,是保存下一跳、MED和本地优先信息。
要配置一个BGP自治系统联盟,必须指定联盟标识符。联盟标示符是一个AS编号,对外界而言,联盟就像一个以联盟标识符作为AS编号的单一AS。
使用下面的BGP配置命令配置自治系统联盟标识符:
命令
|
目的
|
bgp confederation identifier autonomous-system
|
配置自治系统联盟标识符。
|
要指定属于自治系统联盟的自治系统号码,使用下面的BGP配置命令:
命令
|
目的
|
bgp confederation peers autonomous-system [autonomous-system ...]
|
指定属于自治系统联盟的AS。
|
自治系统联盟的示例请参考“BGP自治系统联盟举例”。
1.2.2.5配置路由反射器
取代配置自治系统联盟的另一种减少IBGP连接的方法是配置路由反射器。
路由反射器的内部对等体被分成两组:客户对等体和AS中的所有其它路由器(非客户对等体)。路由反射器反射两组之间的路由,该路由反射器及其客户对等体形成一个簇。非客户对等体必须是彼此全连接的,但客户对等体不必是全连接的。簇中的客户不同簇外的IBGP会话者通信。
当路由反射器收到路由信息时,它就完成以下的任务:
• 广播来自外部BGP会话者的路由到所有客户和非客户对等体。
• 广播来自非客户的路由到所有客户。
• 广播来自客户的路由到所有客户和非客户对等体。因此,客户对等体不必是全连接的。
使用下面的路由器配置命令配置本地路由为反射器并指定邻居为路由反射器客户:
命令
|
目的
|
neighbor {ip-address | X:X::X:X} route-reflector-client
|
配置本地路由器为路由反射器和指定邻居为客户。
|
一个AS可有多个路由反射器,路由反射器处理其它路由反射器就像处理IBGP会晤者一样。通常一簇客户机只有一个路由反射器,此时该簇用路由反射器的路由器ID来标识。为了增加冗余度和避免单个节点的失败,一个簇可能有不止一个路由反射器。这种情况下,簇中所有的路由反射器必须用4字节簇ID 来配置,以便路由反射器能够识别在同一簇中的路由反射器的更新信息。服务于同一簇的所有路由反射器应该是全连接的,并且它们应该有相同的客户和非客户对等体集合。
如果簇中有不止一个路由反射器,则是用下面的BGP配置命令配置簇ID:
命令
|
目的
|
bgp cluster-id cluster-id
|
配置簇ID。
|
路由反射器的配置举例参见“BGP路由反射器配置举例”。
1.2.2.6关闭对等体
使用下面的BGP配置命令关闭BGP邻居:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } shutdown
|
关闭BGP邻居。
|
使用下面的BGP配置命令激活以前关闭的邻居:
命令
|
目的
|
no neighbor {ip-address | X:X::X:X } shutdown
|
激活BGP 邻居。
|
1.2.2.7配置多跳数外部对等体
缺省情况下,外部对等体必须是在直接相连的网络上的,为了能配置多跳数外部对等体,需要进行如下工作:
命令
|
目的
|
neighbor {ip-address | X:X::X:X } ebgp-multihop ttl
|
配置BGP邻居为多跳数外部对等体。
|
1.2.2.8设置BGP路由管理距离
管理距离是不同路由协议优先程度的一种度量。BGP使用三种不同的管理距离:外部距离,内部距离和本地距离。通过外部BGP获知的路由给出外部距离,通过内部BGP的路由给出内部距离,本地路由给出本地距离。使用下面的BGP配置命令设置BGP路由管理距离:
命令
|
目的
|
distance bgp external-distance internal-distance local-distance
|
设置BGP路由管理距离。
|
改变BGP路由的管理距离是危险的,一般不推荐。外部距离应该比其它任何动态路由协议的距离小,内部距离应该比其它任何动态路由协议的距离大。
1.2.2.9调整BGP定时器
使用下面的BGP配置命令调整具体邻居的BGP keepalive和 holdtime 定时器:
命令
|
目的
|
neighbor [ip-address | X:X::X:X | peer group-name] timers keepalive holdtime
|
为指定的对等体或者对等组设置keepalive和 holdtime 定时器(以秒计)。
|
使用no neighbor timers命令恢复BGP邻居或者对等组的定时器为缺省值。
1.2.2.10配置输出路由过滤(ORF过滤)功能
输出路由过滤(ORF)是一个基于前缀的BGP特性,通过有ORF能力的通告来打开ORF特征。这个ORF能力的通告表明BGP会把邻居的前缀列表实施到本地配置的ORF上。启动ORF过滤功能,BGP会安装一个入站列表来来作为一个出站列表来过滤远端对等体路由,以减少不想要的路由更新。
使用下面的BGP配置命令来达到上述目的:
命令
|
目的
|
neighbor [ip-address | X:X::X:X | peer group-name] capability orf prefix-list [both|send|receive]
|
允许ORF特性。
|
neighbor [ip-address | X:X::X:X | peer group-name] prefix-list prefixname in
|
配置入站前缀列表,以支持ORF的ROUTER-REFRESH报文通知邻居加入出战列表。
|
clear ip bgp [ip-address | X:X::X:X | peer group-name| * |...] in prefix-filter
|
ORF入站软重置
|
1.2.2.11对来自不同AS的路由比较MED
MED是在多个可选择的路径中选择最佳路由时考虑的一个参数。具有较低MED值的路径比具有较高MED值的路由优先考虑。
缺省情况下,在选择最佳路由过程中,MED比较只在来自同一AS的路由中进行。可以允许MEDs比较在路由选择中进行,而不管来自于哪一个AS的路由。
使用下面的BGP配置命令来达到上述目的:
命令
|
目的
|
bgp always-compare-med
|
允许对来自不同AS的路由进行MEDs比较。
|
1.2.2.12配置BGP 平滑重启能力
缺省情况下,BGP协议重启时BGP不会保留任何学到的路由信息。
在支持BGP GR能力(需BGP会话两端都支持)以后,BGP协议重启时GR能力老化路由,并保留这些老化路由,这些老化路由和普通路由没有任何区别(保留转发状态),只是打上了stale标记。在BGP GR重启过程中实现了无中断转发。
对于Restarting Speaker(协议重启路由器),协议重启时BGP进程将所有Loc-RIB老化。一但Restarting Speaker与Receiving Speaker重新建立BGP会话,Restarting Speaker将会接收并处理所有对等体发过来的BGP消息。可是Restarting Speaker会延迟路由选择过程,除非等到所有对等体的End-of-RIB (除接收到R位置1的Peer,以及不向外宣告GR能力的Peer的所有Peer),或者update-delay timer超时(详见bgp update-delay)。BGP Speaker执行路由选择,更新转发状态,老化路由标记被删除,最优路由和End-of-RIB被宣告给对等体。
对于Receiving Speaker,当Receiving Speaker检测到拥有GR能力的BGP会话的TCP连接重置后,保留并老化所有从该对等体收到的相关地址簇路由信息。当出现连续重启的情况,路由会删除带的老化标记的路由信息。老化路由与其它路由信息没有什么不同,只是带上老化标记。当与Restarting Speaker bgp会话建立后,Receiving Speaker发送更新信息给Restarting Speaker,完成路由初始更新后,发送End-of-RIB;Receiving Speaker收到来自对等体的路由更新,则更新老化路由并删除老标记,一旦收到相关地址簇的End-of-RIB,Receiving Speaker会马上删除老化标记。如果会话在“Restart Time”时间内无法重新建立BGP会话,Receiving Speaker则删除带有老化标记的路由。
当BGP会话在Restart Time时间内已经建立,根据以下情况,老化路由被删除
–会话建立后,没有收到GR报文
–新接收的GR报文里,指定地址簇的F位没被置1
–新接收的GR报文里,没有该地址簇信息
–Stalepath Timer 超时
使用下面的BGP配置命令来达到上述目的:
命令
|
目的
|
bgp graceful-restart [restart-time value] | [stalepath-time value]
|
配置bgp graceful restart 能力。
|
1.3 监视和维护BGP
管理者可以显示、删除BGP中路由表或其他数据库的内容,也可以显示具体的统计信息值。以下部分描述了这些任务。
1.3.1 清除BGP路由表和数据库
下面的表格列出了与清除高速缓存、表格或者BGP数据库相关的任务,在管理模式下使用这些命令:
命令
|
目的
|
clear ip bgp *
|
复位所有BGP连接。
|
clear ip bgp as-number
|
复位指定自治系统的BGP连接。
|
clear ip bgp address
|
复位指定邻居的BGP连接。
|
clear ip bgp address soft {in|out}
|
清除指定邻居的入站数据库或入站数据库。
|
clear ip bgp aggregates
|
清除路由聚合产生的路由。
|
clear ip bgp networks
|
清除network命令产生的路由。
|
clear ip bgp redistribute
|
清除转发产生的路由。
|
1.3.2 显示路由表和系统统计信息
可以显示诸如BGP路由表、数据库内容之类的具体统计信息。所提供的信息可用于决定资源利用以及解决网络问题。也可以显示节点可达性信息。
使用下面的管理命令显示各种路由统计信息:
命令
|
目的
|
show ip bgp
|
显示系统中的ipv4 BGP路由表。
|
show ip bgp ipv6 unicast
|
显示系统中的ipv6 BGP路由表。
|
show ip bgp prefix
|
显示匹配指定前缀列表的路由。
|
show ip bgp community
|
显示团体属性的统计信息。
|
show ip bgp regexp regular-expression
|
显示同指定正则表达式相匹配的路由。
|
show ip bgp network
|
显示指定BGP路由。
|
show ip bgp neighbors address
|
显示指定邻居的TCP和BGP连接的详细信息。
|
show ip bgp neighbors [address] [received-routes | routes | advertised-routes]
|
显示从特殊BGP邻居获知的路由。
|
show ip bgp paths
|
显示数据库中所有的BGP路径信息。
|
show ip bgp summary
|
显示所有BGP连接的状态。
|
1.3.3 跟踪BGP信息
可以通过跟踪BGP信息观察BGP连接建立的过程,路由收发的过程,从而便于定位错误,解决问题。跟踪信息的命令如下:
命令
|
目的
|
debug ip bgp
|
跟踪一般的BGP信息。
|
debug ip bgp all
|
跟踪所有的BGP信息。
|
debug ip bgp fsm
|
跟踪BGP状态机。
|
debug ip bgp keepalive
|
跟踪BGP的Keepalive报文。
|
debug ip bgp open
|
跟踪BGP的Open报文。
|
debug ip bgp update
|
跟踪BGP的Update报文。
|
1.4 BGP配置举例
以下各节提供了BGP配置的例子:
1.4.1 BGP路由映像举例
下面的例子说明如何使用路由映像修改来自邻居的入站路由属性。从邻居140.222.1.1接收到的并且满足ASPATH访问列表aaa的任何路由之权重都设置为200,本地优先值设置为250,并且被接受,其他路由均被拒绝。
router bgp 100
neighbor 140.222.1.1 remote-as 1
neighbor 140.222.1.1 route-map fix-weight in
!
route-map fix-weight 10 permit
match as-path aaa
set local-preference 250
set weight 200
!
ip as-path access-list aaa permit ^690$
ip as-path access-list aaa permit ^1800$
在下面的例子中,路由映像freddy的第一个条目将起始于自治系统690的所有路由的MED属性设为127。第二个条目使不满足上述条件的路由允许被发送到邻居1.1.1.1:
router bgp 100
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 route-map freddy out
!
ip as-path access-list abc permit _690$
ip as-path access-list xyz permit .*
!
route-map freddy 10 permit
match as-path abc
set metric 127
!
route-map freddy 20 permit
match as-path xyz
下面的例子表示如何使用路由映像修改来自路由转发的路由:
router bgp 100
redistribute rip 1 route-map rip2bgp
!
route-map rip2bgp
match ip address rip
set local-preference 25
set metric 127
set weight 30000
set ip next-hop 192.92.68.24
set origin igp
!
ip access-list standard rip
permit 131.108.0.0 255.255.0.0
permit 160.89.0.0 255.255.0.0
permit 198.112.0.0 255.255.128.0
1.4.2 BGP邻居配置举例
在下面的例子中,BGP路由器属于AS109,它生成两个网络。该路由器共有三个邻居:第一个邻居是外部邻居(在不同的AS);第二个邻居是内部邻居(具有相同的AS编号)。第三个邻居也是外部邻居。
router bgp 109
network 131.108.0.0
network 192.31.7.0
neighbor 131.108.200.1 remote-as 167
neighbor 131.108.234.2 remote-as 109
neighbor 150.136.64.19 remote-as 99
1.4.3 基于邻居进行BGP路由过滤举例
下面是一个基于邻居进行BGP路径过滤的例子。通过as-path访问列表test1的路由将会获得权值100。只有通过as-path访问列表test2的路由才会发送到193.1.12.10,类似地,只有通过访问列表test3的路由才会被193.1.12.10接收:
router bgp 200
neighbor 193.1.12.10 remote-as 100
neighbor 193.1.12.10 filter-list test1
neighbor 193.1.12.10 weight 100
neighbor 193.1.12.10 filter-list test2 out
neighbor 193.1.12.10 filter-list test3 in
!
ip as-path access-list test1 permit _109_
ip as-path access-list test2 permit _200$
ip as-path access-list test1 permit ^100$
ip as-path access-list test1 deny _690$
ip as-path access-list test1 permit .*
1.4.4 基于端口进行BGP路由过滤举例
下面是基于端口进行路由过滤的配置举例。通过访问列表acl过滤从端口VLAN1来的路由:
router bgp 122
filter vlan1 in access-list acl
下面的例子同时使用访问列表filter-network过滤路由的网络编号,访问列表filter-gateway过滤路由的网关地址过滤来自VLAN1端口的路由:
router bgp 100
filter vlan1 in access-list filter-network gateway filter-gateway
下面的例子同时使用前缀列表filter-prefix过滤路由的网络编号,访问列表filter-gateway过滤路由的网关地址过滤来自所有端口的路由:
router bgp 100
filter * in prefix-list filter-prefix gateway filter-gateway
1.4.5 使用前缀列表配置路由过滤举例
下面的例子拒绝缺省路由0.0.0.0/0:
ip prefix-list abc deny 0.0.0.0/0
下面的例子允许同前缀35.0.0.0/8相匹配的路由
ip prefix-list abc permit 35.0.0.0/8
在下面的例子中,BGP过程仅接受前缀长度从/8 到 /24的前缀:
router bgp 1
network 101.20.20.0
filter * in prefix max24
!
ip prefix-list max24 seq 5 permit 0.0.0.0/0 ge 8 le 24
!
在下面的配置中,路由器过滤从所有端口收到的路由,仅接受前缀为8到24的路由:
router bgp 12
filter * in prefix-list max24
!
ip prefix-list max24 seq 5 permit 0.0.0.0/0 ge 8 le 24
下面是一些其他的前缀列表的配置例子。
下面的例子允许在网络192/8中前缀长度不超过24的路由:
ip prefix-list abc permit 192.0.0.0/8 le 24
下面的例子拒绝在网络192/8中前缀长度超过25的路由:
ip prefix-list abc deny 192.0.0.0/8 ge 25
下面的例子允许在所有地址空间中前缀长度大于8但小于24的路由:
ip prefix-list abc permit 0.0.0.0/0 ge 8 le 24
下面的例子拒绝在所有地址空间中前缀长度大于25的路由。
ip prefix-list abc deny 0.0.0.0/0 ge 25
本例拒绝网络10/8的所有路由,因为如果A类网10.0.0.0/8的掩码小于或者等于32位,则将拒绝其所有路由:
ip prefix-list abc deny 10.0.0.0/8 le 32
下面的例子拒绝网络204.70.1/24中掩码长度超过25的路由:
ip prefix-list abc deny 204.70.1.0/24 ge 25
下面的例子允许所有的路由:
ip prefix-list abc permit any
1.4.6 BGP路由聚合举例
下面的例子说明如何在BGP中生成聚合路由,生成的方式可以是通过路由转发或者使用条件聚合路由功能。
在下面的例子中,redistribute static命令用于转发聚合路由193. * . * . * :
ip route 193.0.0.0 255.0.0.0 null 0
!
router bgp 100
redistribute static
当路由表中至少有一条路由属于指定范围时,下面的配置就在BGP路由表中创建一个聚合路由。聚合路由将被认为来自你的AS,并且具有指示信息可能丢失的atomic属性。
router bgp 100
aggregate 193.0.0.0/8
下面的例子不仅创建了聚合路由193.*.*.*,而且还抑制了把更具体的路由广播给所有邻居:
router bgp 100
aggregate 193.0.0.0/8 summary-only
1.4.7 BGP路由反射器配置举例
下面是一个路由反射器的配置例子。RTA、RTB、RTC、RTE属于同一自治系统AS200,RTA充当路由反射器,RTB、RTC为路由反射器客户,RTE为普通IBGP邻居。RTD属于AS100,与RTA建立EBGP连接。配置如下:
RTA配置:
interface vlan110
ip address 2.0.0.1 255.0.0.0
!
interface vlan111
ip address 3.0.0.1 255.0.0.0
!
interface vlan112
ip address 4.0.0.1 255.0.0.0
!
interface vlan113
ip address 5.0.0.1 255.0.0.0
!
router bgp 200
neighbor 2.0.0.1 remote-as 200 /*RTC IBGP*/
neighbor 2.0.0.1 route-reflector-client
neighbor 3.0.0.1 remote-as 200 /*RTB IBGP*/
neighbor 3.0.0.1 route-reflector-client
neighbor 5.0.0.1 remote-as 200 /*RTE IBGP*/
neighbor 4.0.0.2 remote-as 100 /*RTD EBGP*/
network 11.0.0.0/8
!
ip route 11.0.0.0 255.0.0.0 2.0.0.12
RTB配置:
interface vlan110
ip address 3.0.0.2 255.0.0.0
!
router bgp 200
neighbor 3.0.0.1 remote-as 200 /*RTA IBGP*/
network 13.0.0.0/8
!
ip route 13.0.0.0 255.0.0.0 3.0.0.12
RTC配置:
interface vlan110
ip address 2.0.0.2 255.0.0.0
!
router bgp 200
neighbor 2.0.0.1 remote-as 200 /*RTA IBGP*/
network 12.0.0.0/8
!
ip route 12.0.0.0 255.0.0.0 2.0.0.12
RTD配置:
interface vlan110
ip address 4.0.0.2 255.0.0.0
!
router bgp 100
neighbor 4.0.0.1 remote-as 200 /*RTA EBGP*/
network 14.0.0.0/8
!
ip route 14.0.0.0 255.0.0.0 4.0.0.12
RTE配置:
interface vlan110
ip address 5.0.0.2 255.0.0.0
!
router bgp 200
neighbor 5.0.0.1 remote-as 200 /*RTA IBGP*/
network 15.0.0.0/8
!
ip route 15.0.0.0 255.0.0.0 5.0.0.12
1.4.8 BGP自治系统联盟举例
下面是一个自治系统联盟的配置,RTA、RTB、RTC建立IBGP连接,属于私有自治系统65010;RTE属于私有自治系统65020;RTE与RTA建立自治系统联盟内部EBGP连接;AS65010、AS65020组成自治系统联盟,自治系统号为AS200;RTD属于自治系统AS100,RTD通过RTA与自治系统200建立EBGP连接。
RTA配置:
interface vlan110
ip address 1.0.0.1 255.0.0.0
!
interface vlan111
ip address 2.0.0.1 255.0.0.0
!
interface vlan112
ip address 4.0.0.1 255.0.0.0
!
interface vlan113
ip address 5.0.0.1 255.0.0.0
!
router bgp 65010
bgp confederation identifier 200
bgp confederation peers 65020
neighbor 1.0.0.2 remote-as 65010 /*RTB IBGP*/
neighbor 2.0.0.2 remote-as 65010 /*RTC IBGP*/
neighbor 5.0.0.2 remote-as 65020 /*RTE EBGP*/
neighbor 4.0.0.2 remote-as 100 /*RTD EBGP*/
RTB配置:
interface vlan110
ip address 1.0.0.2 255.0.0.0
!
interface vlan111
ip address 3.0.0.1 255.0.0.0
!
router bgp 65010
bgp confederation identifier 200
bgp confederation peers 65020
neighbor 1.0.0.1 remote-as 65010 /*RTA IBGP*/
neighbor 3.0.0.2 remote-as 65010 /*RTC IBGP*/
RTC配置:
interface vlan110
ip address 2.0.0.2 255.0.0.0
!
interface vlan111
ip address 3.0.0.2 255.0.0.0
!
router bgp 65010
bgp confederation identifier 200
bgp confederation peers 65020
neighbor 2.0.0.1 remote-as 65010 /*RTA IBGP*/
neighbor 3.0.0.1 remote-as 65010 /*RTB IBGP*/
RTD配置:
interface vlan110
ip address 4.0.0.2 255.0.0.0
!
router bgp 100
neighbor 4.0.0.1 remote-as 200 /*RTA EBGP*/
RTE配置:
interface vlan110
ip address 5.0.0.2 255.0.0.0
!
router bgp 65020
bgp confederation identifier 200
bgp confederation peers 65010
neighbor 5.0.0.1 remote-as 65010 /*RTA EBGP*/
1.4.9 使用BGP团体属性的路由映像举例
本节包括使用具有BGP团体属性的路由映像的三个例子。
在第一个例子中, route map set-community用于到邻居171.69.232.50的出站更新。通过访问列表aaa的路由设置特殊的团体属性值"no-export",其它的路由进行正常广播。该特殊的团体属性值自动地阻止AS200内的BGP会话者将该路由广播到自治系统外。
router bgp 100
neighbor 171.69.232.50 remote-as 200
neighbor 171.69.232.50 send-community
neighbor 171.69.232.50 route-map set-community out
!
route-map set-community 10 permit
match ip address aaa
set community no-export
!
route-map set-community 20 permit
在第二个例子中,route map set-community用于到邻居171.69.232.90的出站更新。所有由 AS 70产生的路由设置将团体属性值200 200 添加到现有的值中,所有其它路由进行正常广告。
router bgp 200
neighbor 171.69.232.90 remote-as 100
neighbor 171.69.232.90 send-community
neighbor 171.69.232.90 route-map set-community out
!
route-map set-community 10 permit
match as-path test1
set community-additive 200 200
!
route-map set-community 20 permit
match as-path test2
!
ip as-path access-list test1 permit 70$
ip as-path access-list test2 permit .*
在第三个例子中,根据路由的团体属性值有选择性地设置来自邻居171.69.232.55的路由的MED和本地优先级值。所有同团体列表com1匹配的路由都设置MED为8000,这可能包括有团体值"100 200 300" 或 "900 901."的路由。这些路由也可能有其它属性值。
所有传送团体列表com2的路由都设置本地优先级值为500。
所有其他路由都设置本地优先级值为50。因此,邻居171.69.232.55的所有剩余路由的本地优先值为50。
router bgp 200
neighbor 171.69.232.55 remote-as 100
neighbor 171.69.232.55 route-map filter-on-community in
!
route-map filter-on-community 10 permit
match community com1
set metric 8000
!
route-map filter-on-community 20 permit
match community com2
set local-preference 500
!
route-map filter-on-community 30 permit
set local-preference 50
!
ip community-list standard com1 permit 100 200 300
ip community-list standard com1 permit 900 901
!
ip community-list standard com2 permit 88
ip community-list standard com2 permit 90
!