留言板

CCIE R&S v4.0 理论

当前位置: 首页CCIE资料库CCIE R&S v4.0 理论BGP


BGP

 

 

                                                         文档下载:

  目录

概述
BGP AS
BGP 邻居
BGP 更新源
BGP TTL
BGP AS_Path
BGP 路由表
BGP Synchronization
Path Attributes
BGP RIB-Failure
BGP 最优路径选择
BGP 基础实验
BGP 路由聚合
BGP 默认路由
BGP 路由过滤
BGP 条件路由
BGP Peer Group
BGP Community
BGP Reflector(BGP反射器)
BGP Confederation(BGP联邦)
BGP 后门路由
BGP Dampening
BGP 重分布进IGP

概述

 在当前所使用的计算机网络中,一个网络,通常使用一个IP网段来表示,要将所有网络连接起来,并且要通信,就需要将这些IP网段连接起来,让每个IP网段都知道其它IP网段的信息,就可以实现全网通信。将网络与网络连接起来的设备是路由器,只要网络中每一台路由器都知道所有IP网段的信息,就可以为全网提供数据转发,如果某一台路由器不能得知所有的IP网段信息,也就表示这台路由器所连接的网络不能与其它网段通信。为了帮助路由器获得全网的IP网段信息,因此路由协议工作在路由器与路由器之间,路由协议将网络中每一条路由(IP网段)在路由器与路由器之间传递,最终让网络中每一台路由器都拥有全网完整的路由信息,从而实现全网可达。

从上可以看出,路由协议在路由器之间传递路由信息,是保证网络通信的基础,如果路由协议传递了错误的路由信息,或者没有传递路由信息,将导致某些网络通信的中断,所以路由协议从一台路由器收到路由更新后,必须毫不保留地传递给其它路由器,而当一个网络失效后,也必须告知其它路由器该网段不可达,需要将相应路由删除。

当全网每一台路由器都拥有所有的路由信息,并且完全一致时,这种状态被称为收敛状态,一个网络只有在收敛状态时,才能保证全网可达。而当今所使用的最庞大的互联网,是由数万台路由器连接起来的,如果每一台路由器都拥有互联网中的每一条路由信息,那么就意味着每一台路由器都将拥有数十万甚至数百万条路由条目,这个数量是惊人的。但是由于路由协议的特征以及互联网全网通信的需求,就必须让互联网中每一台路由器将自己的路由信息与其它路由器互换,最终使整个互联网的达到收敛状态。虽然这是铁定的要求,但是请仔细想一下,这是万万不可能的,因为一个拥有数万台路由器组建起来的超大型网络,永远不可能达到收敛状态,因为当某个网络断开时,最先得知的路由器需要将这个信息告知给其它所有路由器,因为信息是一台传一台传过去的,所以一个网络断开的信息要让数万台路由器都知道,这需要很长的时间,并且可能在这个信息还没有传遍整个网络时,这个之前中断的网络就恢复了正常,那么这时,最先知道的路由器又要重新向网络中通告该网段恢复正常的信息,如此一来,互联网中不断变化的网络,会让所有路由器不停地传递路由信息,结果是导致网络中路由信息的不一致,也将导致庞大的路由更新影响所有路由器的性能。因此,互联网中,一个网络的中断与恢复,实在没有必须通告给数以万计的路由器。而网络的信息,必须向其它路由器通告,那么,一台路由器的路由信息,既然没有必须向网络中每一台路由器通告,那么,它究竟该通告给哪些路由器呢?或者换句话说,它的路由更新通告的范围究竟有多大呢?

基于以上种种原因,所以我们将一台路由器的路由更新限制在一定的范围内,也只有这样,一个被划分为更小范围的网络,才能达到收敛状态。所以现实情况是,我们的互联网被划分成了一个一个更小范围的网络,而任何一台路由器的路由更新,被限制在这个特定的范围内,而这个特定的范围,就是你应该知道的被称为自治系统的网络范围,即autonomous system(AS) 。我们设计了互联网中路由协议的更新只应该在一个AS内部传递,但是互联网是需要全网通信的,所以必须让每一个AS都能够获得其它AS的路由信息才行,因此,路由协议被定义为两种截然不同的种类,即只在一个AS内部更新的路由协议,称为Interior Gateway Protocol (IGP) ,以及在AS与AS之间更新的路由协议,称为Border Gateway Protocol (BGP)。

需要更多的解释,将互联网划分成多个AS,目的并不仅仅是将路由协议的更新限制在特定的范围内,还有一个重要的原因是,将互联网划分成若干个小范围的网络后,那么这每一个小网络就可以单独定义各自的路由策略与安全策略,并且这样不需要干扰其它AS,也不受其它AS干扰。比如网络中若干的ISP,这些ISP对自己的网络需要制定自己的策略,又需要让这些策略保持私有性而不与其它ISP互相干扰,所以划分AS,帮他们实现了这个目的。

只能在一个AS内部传递更新的IGP路由协议有RIP,EIGRP,OSPF,IS-IS,可以在AS之间传递更新的路由协议目前只有BGP。但是有个特别之处是,EIGRP也使用了AS的概念来工作,运行EIGRP的网络也会被划分成多个AS,虽然默认情况下,EIGRP不能在AS与AS之间更新路由信息,但是EIGRP也可以实现AS之间的路由更新。需要说明的是,EIGRP概念中的AS与BGP的AS并无任何关联,它们之间没有任何共同操作性,真正的AS是指BGP的AS,而EIGRP不管有什么样的AS特征,它永远被限制在BGP的单一AS之中。

注:BGP支持classless interdomain routing (CIDR)

                                                                   返回目录


BGP AS

 

对于BGP的AS号码的分配,是由Internet Assigned Number Authority (IANA)机构来统一规划和分配的,IOS中运行的BGP,目前最多支持4字节长度的AS号码,但并不表示所有AS号码都能任意配置,在2009年1月之前,只能使用最多2字节长度的AS号码,即1-65535,在2009年1月之后,(IANA)决定使用4字节长度AS,范围是65536 -4294967295。

当前,通常还是使用2字节长度的AS,也就是1-65535,所以不对4字节的AS号码做太多讨论。因为BGP是使用在互联网之中的,互联网由多个BGP AS域组成,所以互联网中不能出现AS号码相同的域,如果一台路由器要接入互联网并运行BGP,那么必须向IANA申请合法的AS号码。为了考虑到某些大型企业需要使用BGP与ISP对接,而又没有足够的AS号码用来分给企业用户,所以将AS号码划分为公有AS和私有AS,公有AS的范围是1-64511,私有AS范围是64512-65534;公有AS只能用于互联网,并且全球唯一,不可重复,而私有AS可以在得不到合法AS的企业网络使用,可以重复。很显然,因为私有AS可以被多个企业网络重复使用,所以这些私有AS不允许传入互联网,ISP在企业用户边缘,需要过滤掉带有私有AS号码的路由条目。

                                                                   返回目录


BGP 邻居

如果你在自己的PC上从某个FTP服务器去下载文件,那么你的PC只要和FTP服务器是通畅的即可,也就是说你的PC只要ping得通FTP服务器就行,不管距离有多远,因为不可能每个从FTP服务器上下载文件的PC都与之是直接连在一起的;PC从FTP服务器下载文件时,使用的是TCP传输,当数据在中途出现丢包时,被丢弃的数据包能够得到重新传递,从而保证下载的文件是完整的。由于BGP运行在整个互联网,传递着数量庞大的路由信息,因此需要让BGP路由器之间的路由传递具有高可靠性和高准确性,所以BGP路由器之间的数据传输使用了TCP协议,端口号为179,并且指的是会话的目标端口号为179,而会话源端口号是随机的。

正因为BGP使用了TCP协议传递,所以两台运行BGP的路由器只要通信正常,也就是说只要ping得通,而不管路由器之间的距离有多远,都能够形成BGP邻居,从而互换路由信息。

一个配置了BGP进程的路由器只能称为BGP-Speaker,当和其它运行了BGP的路由器形成邻居之后,就被称为BGP-Peer。如果一个网络中的多台路由器都运行OSPF之后,那么这些路由器会在相应网段去主动发现OSPF邻居,并主动和对方形成OSPF邻居。而一个路由器运行BGP后,并不会主动去发现和寻找其它BGP邻居,BGP的邻居必须手工指定。

BGP和其它路由协议一样,传递的是网络层协议,如IP协议,除此之外,BGP还能够传递除IP协议之外的其它网络层协议,能够传递的协议如下:

 

IP Version 4 (IPv4),

IP Version 6 (IPv6),

Virtual Private Networks version 4 (VPNv4),

Connectionless Network Services (CLNS),

Layer 2 VPN (L2VPN).

 

这些协议被称为address family,配置时,需要进入相应的协议address family模式,而Ipv4除外。所有命令在address family中独立配置,独立生效,并且都拥有独立的数据库。正常的BGP配置模式被称为NLRI 模式,而address family模式称为AFI模式,像MPLS,只能在AFI中配置,而不能在NLRI 模式中配置,在NLRI 模式中配置的参数只对Ipv4单播生效。

IOS支持四个AFI模式,为:IPv4, IPv6, CLNS, VPNv4,并且IPv4和IPv6还有单播和组播之分。

 

思科路由器运行的BGP为version 4,一台路由器只能运行一个BGP进程,并且整台路由器只能属于一个AS,但是一台路由器可以承载多个address family,而一个支持多个address family的BGP和一个不支持的可以正常通信,但这也仅限于Ipv4。

一台BGP路由器运行在一个单一的AS内,在和其它BGP路由器建立邻居时,如果对方路由器和自己属于相同AS,则邻居关系为internal BGP (iBGP),如果属于不同AS,则邻居关系为external BGP (eBGP)。BGP要求eBGP邻居必须直连,而iBGP邻居可以任意距离,但这些都是可以改变的。

在BGP形成邻居后,最开始会交换所有路由信息,但是之后都采用增量更新,也就是只有在路由有变化时才更新,并且只更新有变化的路由。

BGP建立邻居后,会通过相互发送类似hello包的数据来维持邻居关系,这个数据包称为Keepalive,默认每60秒发送一次,hold timer为180秒,即到达180秒没有收到邻居的Keepalive,便认为邻居丢失,则断开与邻居的连接。

 

 

BGP之间建立邻居,需要经历如下几个过程:

 

Idle—BGP进程被启动或被重置,这个状态是等待开始,比如等于指定一个BGP peer,当收到TCP连接请求后,便初始化另外一个事件,当路由器或peer重置,都会回到idle状态。

Connect—检测到有peer要尝试建立TCP连接。

Active—尝试和对方peer建立TCP连接,如有故障,则回到idle状态

OpenSent— TCP连接已经建立,BGP发送了一个OPEN消息给对方peer,然后切换到OpenSent状态,如果失败,则切换到Active状态。

OpenReceive— 收到对方peer的OPEN消息,并等待keepalive消息,如果收到keepalive,则转到Established状态,如果收到notification,则回到idle状态,比如错误或配置改变,都会发送notification而回到idle状态。

Established— 从对端peer收到了keepalive,并开始交换数据,收到keepalive后,hold timer都会被重置,如果收到notification,就回到idle状态。

                                                                    返回目录

 
BGP 更新源

BGP并不能主动在网络中寻找邻居,必须手工指定BGP邻居的地址,那么BGP才会将数据包发往指定的地址来请求建立邻居,与此同时,BGP发出的请求数据包除了写明目标IP地址外,还要写上自己的IP地址,即BGP源地址。路由器自己产生流量后从接口发出时,流量从哪个接口被发出,那么这些数据包的源IP地址就是哪个接口的地址。因此当BGP发出数据包寻找邻居时,这些数据包从哪个接口被发出,那么BGP源IP地址就是哪个接口的地址。要两台BGP路由器要正常建立邻居,必须双方路由器都相互指定邻居,相互发送数据包才行。当一台BGP路由器收到建立邻居的请求后,如果发现数据包的目标IP不是自己的BGP源地址,那么就拒绝该连接请求,只有当请求数据包的目标IP与自己的BGP源地址相同时,才可建立BGP邻居。需要注意的是,这个条件只在两个邻居之间,任意一个邻居满足条件即可,并不需要双方都满足,也就是说一方收到的数据包目标IP与自己的BGP源地址相同即可,另一方收到的数据包目标IP与它的BGP源地址不同也没关系,只要单方面符合条件就行,但我们通常都将BGP两端的源与目标保持一致。BGP的源地址是可以随意更改的,但只能是路由器上的接口地址。

如下图

在上图中,R1与R2之间有两条链路,当配置BGP邻居时,如果R1指定邻居地址为12.1.1.2,R2指定邻居地址为12.1.1.1,那么在建立邻居过程中,R1将请求数据包从接口F0/0发出,数据包的目标IP为12.1.1.2,BGP源地址为F0/0的接口地址12.1.1.1, 当R2将请求数据包从接口F0/0发出时,数据包的目标IP为12.1.1.1,BGP源地址为F0/0的接口地址12.1.1.2,由于R1发出的数据包目标IP12.1.1.2与R2的BGP源地址12.1.1.2完全相同,所以最终能够正常建立BGP邻居。R1在检测地址时,R2的目标IP与R1的源也完全相同,通常我们都保证双方一致。

当R1与R2之间的直连接口F0/0中断后,如果双方将数据包从S0/0发出,那么R1的源地址就是10.1.1.1,R2的源地址就是20.1.1.2,由此可以看出,双方发出的数据包的目标IP都与对方的源地址不符,所以无法建立BGP邻居。虽然在上面的网络环境中,双方路由器之间都拥有多条链路,在中断某条链路之间,仍然可以通信,但是这并不能保证BGP邻居的永久连接。为了使拥有多条链路的BGP邻居之间永远保持连接,考虑到路由器的loopback口在设备正常工作的情况下,不会像物理接口那样出现中断,所以建议在BGP邻居之间使用loopback接口的地址来建立TCP连接,当指定邻居时,不再将邻居的地址指定为对方物理接口地址,而改为指定对方的loopback地址,这样一来,既然物理接口中断,只要还有通畅的链路,那么BGP邻居仍然可以保持连接。在将BGP邻居地址指定为对方loopback地址时,为了使数据包的目标IP与对方的BGP源地址相同,所以邻居也要将BGP源地址更改为自己的loopback接口地址,从而使得双方正常建立BGP连接。

在上图中,当R1指定邻居地址为2.2.2.2,BGP源地址为1.1.1.1,而R2指定邻居地址为1.1.1.1,BGP源地址为2.2.2.2,这样一来,双方的目标IP都与对方的BGP源地址相同,所以可以正常建立邻居,并且在双方链路中,任何一条链路断开,都不影响邻居的会话,BGP的连接仍然保持而不会中断,实现了连接的冗余性和稳定性。

                                                                   返回目录


BGP TTL

一台BGP路由器只属于一个AS,在建立BGP邻居时,如果对方路由器和自己属于相同AS,即在同一自治系统内部,则邻居关系为internal BGP (iBGP),如果属于不同AS,即邻居在自治系统外部,则邻居关系为external BGP (eBGP)。考虑到外部自治系统的路由器对BGP发起DOS攻击,所以BGP要求外部BGP邻居,即eBGP邻居必须与自己直连,而iBGP邻居可以任意距离。这些控制是通过控制BGP数据包的TTL值来实现的,将建立eBGP邻居时发出的数据包的TTL值限制为1,就限制了eBGP邻居必须直连,而由于iBGP邻居可以在任意位置,所以建立iBGP邻居时发出的数据包的TTL值为最大,即255。对于建立eBGP的数据包的TTL值可以随意修改,甚至改为255都行。

                                                                   返回目录 


BGP AS_Path

BGP的路由可能会从一个AS发往另外一个AS,从而穿越多个AS。但是由于运行BGP的网络会是一个很大的网络,路由从一个AS被发出,可能在经过转发之后,又回到了最初的AS之中,最终形成路由环路,所以出于防止环路的目的考虑,BGP在将路由发往其它AS时,也就是发给eBGP邻居时,需要在路由中写上自己的AS号码,下一个AS收到路由后,再发给其它AS时,除了保留之前的AS号码之外,也要添加上自己的AS号码,这样的写在路由中的AS被称为AS-path,如果BGP收到的路由的AS_PATH中包含自己的AS号码,就认为路由被发了回来,以此断定出现了路由环路,最后就会丢弃收到的路由。BGP只有在将路由发给eBGP时,才会在AS-path中添加自己的AS号码,而在发给iBGP时,是不会添加AS号码的,因为iBGP邻居在同一个AS中,即使要添加,AS号码全是一样的,所以没有必要。

如下图:

 

在上图中,当路由穿越各个AS时,所有发给eBGP邻居的路由,都会在AS-path中添加自己的AS,自己的AS总是添加在AS-path的最前面。例如一条路由从AS 10被发往AS 20,则AS-path为“10”,当AS 20将路由发往AS 30时,添加上自己的AS号码20之后,AS-path变成“20,10”,当AS 30将路由发往AS 50时,最终AS 50收到的路由的AS-path为“30,20,10”。当AS 30将路由发给AS 40,AS 40再将路由发给AS 10时,路由的AS-path为“40,30,20,10”,由于AS 10在收到路由后,发现AS-path中包含自己的AS号码10,所以认为出现环路,便丢弃收到的所有路由。

 在IGP协议中,我们将路由协议分成两大类:距离矢量路由协议和链路状态路由协议,而BGP被划分为路径矢量路由协议(path-vector routing),路径矢量算法结合了距离矢量特性与AS-path防环特性。

 因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,具体操作为:一台BGP路由器从eBGP邻居收到路由,发给iBGP邻居之后,iBGP邻居收到后就不能再传给其它任何iBGP邻居,只能传递给eBGP邻居。此规则被多数人称为BGP的水平分割,就是一台BGP路由器从iBGP邻居收到的路由,不能传递给其它iBGP邻居,只能传给eBGP邻居。如下图:

在上图中,当R1从eBGP邻居R6那里收到路由后,可以发给任何iBGP邻居,包括R3和R4,当R3从iBGP邻居R1那里收到路由后,不可以转发给任何iBGP邻居,只可以转发给eBGP邻居,所以R3从R1收到路由后,只能转发给eBGP邻居R5。由于R3和R4从R1收到路由后,都不可以转发给iBGP邻居R2,在上图环境中,最终造成R2无法接收任何路由,要让R2收到路由,建议在R1与R2之间再建立一条BGP会话,所以如此一来,在同一个AS中,要将路由全网传递,就需要在iBGP邻居之间配置全互联,最终AS 20内的邻居关系如下图:

AS内部,除了建立全互联的iBGP邻居关系外,还可以通过BGP Reflector(BGP反射器)和BGP Confederation(BGP联邦)的方式来实现路由全网传递,将在后续介绍。

 

                                                                   返回目录
BGP 路由表

当路由器之间建立BGP邻居之后,就可以相互交换BGP路由。一台运行了BGP协议的路由器,会将BGP得到的路由与普通路由分开存放,所以BGP路由器会同时拥有两张路由器,一张是存放普通路由的路由表,被称为IGP路由表,就时平时我们使用命令show ip route看到的路由表,IGP路由表的路由信息只能从IGP协议和手工配置获得,并且只能传递给IGP协议;另外一张就是运行BGP之后创建的路由表,称为BGP路由表,需要通过命令show ip bgp才能查看,BGP路由表的路由信息只能传递给BGP协议,如果两台BGP邻居的BGP路由表为空,就不会有任何路由传递。在初始状态下,BGP的路由表为空,没有任何路由,要让BGP传递相应的路由,只能先将该路由导入BGP路由表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,BGP路由表的路由获得有多种方式,可以从BGP邻居获得,也可以手工将IGP路由导入BGP路由表,还可以将其它路由重分布进BGP,只要BGP的路由不是从邻居学习到的而是手工导入的,那么这样的路由被称为BGP本地路由。

因为BGP的邻居类型分为两种:eBGP和iBGP,所以BGP路由的AD值也有区分,如果BGP的路由是从eBGP学习到的,AD值为20,可以发现,从eBGP邻居学习到的路由,将优于任何IGP协议;从iBGP学习到的路由的AD值为200,同样可以发现,此类路由的优先级低于任何IGP协议。BGP除了以上两种AD值之外,如果BGP路由是从本地手工导入的,即BGP本地路由,则BGP本地路由的AD值为200,与iBGP路由的AD值相同,优先级低于任何IGP协议。

如果某一条相同的路由同时从eBGP和iBGP以及本地路由学习到,那么究竟哪条路由会被选择为最优路径呢?路由的AD值并不一定会影响到路径选择,因为BGP并不会在一开始,就通过比较AD值来选择最优路径。

                                                                    返回目录


BGP Synchronization

BGP邻居之间的通信与交流运行在TCP的基础上,在两个节点之间,只要网络是通的,就能够建立TCP建立,网络的连通,可以是任何IGP路由协议,甚至是静态路由,总之,只要网络是通的,TCP连接就一定能够建立起来。只要让两台路由器之间连通,保证TCP能够正常连接,就能够保证BGP的通信。在一个AS中,除了需要建立BGP连接之外,同时还需要运行IGP协议,其中运行BGP的目的是为了在大型网络中传递庞大的路由表或路由信息,而运行IGP协议的目的可想而知,并不是为了传递庞大的路由信息,在AS中运行IGP的根本目的是为了让BGP路由器之间能够建立TCP连接,从而为BGP的通信服务。因此可以看出,BGP就像是一辆运货的卡车,BGP的路由就是卡车要运的货,而IGP协议就是为了在站与站之间铺平道路,如果没有IGP去让道路连通,那么BGP就无法在站与站之间运送货物。

因为BGP在建立邻居时,BGP的源地址可以是任意地址,这些地址可以不是直连的,只要是能通信的,能建立TCP连接即可。当BGP在向邻居发送流量时,只要将流量发往邻居的对端地址,因为邻居的地址并不一定是直连的,所以要找到去往邻居地址的路径,可能需要查询IGP路由表,因为IGP为BGP的通信与连接提供了保证。由此可见,BGP要将数据发给邻居,BGP在查询去往邻居的路径时,采用的是递归查询,BGP查询去往邻居的过程中,可能要多次查询IGP路由表,只要在IGP路由表中找到了去往邻居地址的相应路径或相应下一跳,那么就会将数据发给这个下一跳。

在上图的网络中,R1与R4建立eBGP连接,R3与R5建立eBGP连接,而R1与R3建立iBGP连接。在R1与R3建立iBGP连接时,R1通过目标地址3.3.3.3找到邻居R3,R1的BGP源地址为1.1.1.1,而R3也通过目标地址1.1.1.1找到邻居R1,R3的BGP源地址为3.3.3.3,为了让1.1.1.1和3.3.3.3能够正常通信,从而建立TCP连接,R1、R2、R3之间启用了IGP协议OSPF,OSPF的目的只是为了使1.1.1.1能够与3.3.3.3通信,并不传递AS中庞大的路由信息。

当AS 10中的R4将网段10.1.1.0/24通告给AS 20中的R1后,因为R1与R3之间是iBGP邻居,所以R1将路由10.1.1.0/24传递给R3,最终R3将路由10.1.1.0/24传递给AS 30中的R5。当R5将目的地为10.1.1.0/24的流量发给R3时,R3在查询路由表后得知,去往10.1.1.0/24的数据包需要发给iBGP邻居1.1.1.1才能够到达,于是R3便执行递归查询,查询如何去往1.1.1.1,正因为R1与R3之间的通信是靠OSPF提供的,所以R3得知去往1.1.1.1必须将数据包交给R2,即交给下一跳23.1.1.2,因为R2只运行了OSPF为BGP服务,所以R2没有BGP的路由10.1.1.0/24,当R2发现数据包的目标地址为10.1.1.0/24后,只能将数据包全部丢弃,这就类似于路由黑洞。

从以上情况中可以看出,当BGP从iBGP收到路由时,因为邻居之间可能跨越了多台IGP路由器,所以BGP在将数据包发往目的地时,通常会发给一台只运行了IGP的路由器,而只运行IGP的路由器并没有BGP的路由,因而最终导致数据包丢失,造成路由黑洞。要杜绝此类问题的发生,其实答案很明了,就是让AS中只运行IGP的路由器同时也拥有BGP的路由表即可。由于以上原因,在BGP路由传递中,有以下一条规则:当BGP要将从iBGP邻居学习到的路由信息传递给其它邻居之前(这个邻居通常是eBGP邻居),这些路由必须在IGP路由表中也能学到,否则认为此路由无效而不能发给其它邻居。

此规则称为iBGP与IGP路由同步。

在上图环境中,在R3将从iBGP邻居R1学习到的路由传递给eBGP邻居R5之前,必须确定这条路由在自己的IGP路由表中也存在,否则不使用该路由。要查看路由在IGP路由表中是否存在,使用命令show ip route即可。

注意,只有从iBGP邻居学习到的路由,才受iBGP与IGP路由同步规则的限制,如果路由是从eBGP邻居学习到的,则不受此规则限制,并且此规则可以手工开启或关闭。

 BGP 同步默认是开启的,在IOS 12.2(8)T 以及之后的版本默认都是关闭的。

                                                                    返回目录

 
Path Attributes

在默认情况下,到达同一目的地,BGP只走单条路径,并不会在多条路径之间执行负载均衡。对于IGP路由协议,当有多条路径可以到达同一目的地时,则根据最小metric值来选择最优路径,而BGP存在多条路径到达同一目的地时,对于最优路径的选择,BGP并不会以metric值大小为依据,BGP对于最优路径的选择,需要靠比较路由条目中的Path Attributes,即路径属性,只有在比较多条路由的属性之后,才能决定选择哪条为最优路径。BGP的每条路由都带有路径属性,BGP的路径属性可以划分为以下四类:

 

公认强制    (Well-Known Mandatory)

公认自选    (Well-Known Discretionary)

可选可传递  (Optional Transitive)

可选不可传递(Optional Nontransitive)

 

对于各属性的各特征如下:

公认强制 (Well-Known Mandatory)

对于任何一台运行BGP的路由器,都必须支持公认强制属性,并且在将路由信息发给其它BGP邻居时,必须在路由中写入公认强制属性,这些属性是被强制写入路由中的,一条不带公认强制属性的路由被BGP路由器被视为无效而被丢弃,一个不支持公认强制属性的BGP,是不正常的,不合法的BGP。

BGP路由必须携带的公认强制属性有三个:Origin,Next_Hop,AS-path

 

公认自选 (Well-Known Discretionary)

公认自选属性并不像公认强制属性那么严格,任何一台运行BGP的路由器都必须支持公认自选属性,必须理解和认识公认自选属性,但是为路由写入公认自选属性并不是必须的,是否要为路由写入公认自选属性可以自由决定,为路由写上公认自选属性之后,所有BGP路由器都能认识和理解,并且都会自动保留和传递该属性。

可选可传递 (Optional Transitive)

并不是所有运行BGP的路由器都能理解和支持可选可传递属性,路由的可选可传递属性是任意写入的,其它BGP路由器并不一定能理解,也并不一定能保留和传递该属性,但是当为路由设置了可选可传递属性后,可以明确要求BGP路由器保留和传递该属性。

 

可选不可传递(Optional Nontransitive)

只有特定的BGP路由器才理解和支持可选不可传递属性,并且可选不可传递属性理论上是不能手工设置的,即使手工设置了可选不可传递属性,这些属性也不能任意传递,只可以传递到特定的BGP路由器。

 

以下是一些常用BGP属性的介绍:

 

1.Origin(公认强制属性):

在路由器之间建立BGP邻居之后,邻居之间只能相互传递BGP路由表中的路由,在初始状态下,BGP的路由表为空,没有任何路由,要让BGP传递相应的路由,只能先将该路由导入BGP路由表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,只能手工导入,对于路由是怎么进入BGP路由表的,这种方式会被记录在路由条目中,称为Origin属性,Origin属性就反映出了路由是如何进入BGP路由表的。要将路由导入BGP路由表,有三种方式,

第一:因为路由器上默认会有IGP路由表,通过命令show ip route可以查看到,这些IGP表中的路由可以被手工导入BGP,通过在BGP进程模式下使用命令network,即可将IGP表中的相应路由导入BGP路由表,并且需要指定掩码,只有network后面的网段和掩码在IGP路由表中能找到时,才会进入BGP路由表,并不能通过这种方式将一条不存在的路由凭空导入BGP,通过命令network被导入BGP的路由的Origin属性为IGP属性。

第二:BGP可以从EGP路由协议中获得路由信息,而EGP已经被淘汰,被BGP所取代,所以我们很难遇见EGP路由协议,从EGP路由协议获得的路由的Origin属性为EGP。

第三:BGP路由表除了从IGP和EGP获得路由外,还可以将路由重分布进BGP路由表,而重分布的路由的Origin属性为Incomplete。

BGP路由表中到达同一目的地存在多条路径时,会通过比较路由的Origin属性来选择最优路径,它们的优先级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。

 

2.AS_Path(公认强制属性):

AS_Path中包含了BGP路由器到达目的地所经过的所有AS的集合,AS_Path中会包含了多个AS号码,号码的多少,逻辑上反映了到达目的地的远近。

 

AS_Path还能细分为:

AS_SEQUENCE(有序的AS号码,即AS号码在AS_Path中是按一定顺序排列的)

AS_SET(无序的AS号码,即AS号码在AS_Path中的排列是没有顺序的,通常是将多条拥有不同AS_Path的路由汇总后产生的)

BGP路由表中到达同一目的地存在多条路径时,会优选AS-Path最短的路径。

 

3.Next_Hop(公认强制属性):

也就是BGP将数据包发往目的地的下一跳,BGP路由的下一跳,就是BGP建立邻居时的地址,也是BGP之间建立TCP连接所使用的地址。因为这个地址可以是路由器上任意接口的地址,是要能通信即可(其连通性由IGP提供保证),所以BGP在将数据包发往下一跳时,通常需要采用递归查询在IGP路由表中查询该下一跳地址。默认情况下,一台BGP路由器将路由传递给eBGP邻居时,会将Next-hop属性改为自己的地址,也就是和对方建立邻居所使用的地址,而在将路由传递给iBGP邻居时,不会改变Next-hop属性。

对于将路由传递给BGP邻居时,是否改变Next-hop属性的功能,可以自由关闭或启用。

BGP路由表中由本地产生的路由而不是从BGP邻居学习来的,即本地发起路由的Next-hop属性都为0.0.0.0。

 

4.Local_Pref(公认自选属性):

Local_Pref称为本地优先级,其中的(Local)本地就是指本AS,或AS内的意思,所以可以想象得出,Local_Pref属性的传递范围,只在同一个AS内有效,一条路由的Local_Pref属性只能在同一AS内部传递,出了AS后就会被还原成默认值。

Local_Pref属性在BGP邻居之间是自动传递的,只有在将路由发给iBGP时才会传递,而在发给eBGP时,是没有Local_Pref值的,一条路由的Local_Pref属性在一个AS内的所有BGP路由器上是完全相同的。Local_Pref的默认值为100,由此可以看出,一条路由在AS内的所有路由器上默认值为100。

 

本地优先级属性是用于区分到同一目的地的各个路由优先程度的。本地优先级越高,路由优先级越高。默认值为100。

BGP路由表中到达同一目的地存在多条路径时,会比较Local_Pref值的大小,Local_Pref值大的会被选为最优路径,如110与100,那么110会被选为最优路径。

Local_Pref值可以被随意修改,修改后将在整个AS内传递,所以推荐使用Local_Pref属性来控制一个AS的路由器去往目的地在其它AS的路径。如下图:

在上图中,AS 10中的BGP路由器R3可以同时通过R1与R2去往目的地在AS 20中的R4上时,可以通过在AS 10内部修改路由的Local_Pref值来影响选路,比如在R1上将路由的Local_Pref值改为110,而路由器R2上不作任何改动,最终R3将选择从R1去往AS 20,因为R1的Local_Pref值为110,而R2的Local_Pref值为100(默认),所以R3选择R1为最优路径。

因为R1和R2在将路由发给iBGP邻居R3时会携带Local_Pref属性,所以R3同时比较iBGP邻居R1与iBGP邻居R2时,才合适使用Local_Pref属性,因为下一跳都是iBGP邻居,如果下一跳不都是iBGP邻居,并不建议修改Local_Pref属性来影响选路。

 

 

5.MULTI_EXIT_DISC(MED,可选不可传递属性):

MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,因为在多个下一跳都为iBGP时,是建议使用修改Local_Pref属性来影响选路的,而多个下一跳都为eBGP时,则使用MED。MED是BGP路由的metric,所以多条路径中拥有最小MED值的路径会被优先使用。MED默认值为0。

Local_Pref属性只在同一个AS内部传递,而MED只能在AS之间传递,只有在将路由发给eBGP邻居时,才会传递MED,在发给iBGP时,是不会传递MED的。当一条路由被设置MED值后传递给eBGP邻居,在eBGP邻居收到后,如果将该路由继续传递给iBGP邻居,那么这个值会被还原为默认值0,也就是说同一个AS内,所有发给iBGP邻居的路由的MED值都为0,这是为了让所有AS内部路由器都能够拥有相同的选路结果。

MED值也是可以随意修改的。

 

 

 

 

在上图中,当AS 20中的路由器R4要去往目的地为AS 10的网段时,由于下一跳R1与R2都为eBGP邻居,所以可以通过修改MED值来影响R4对于下一跳的选择。比如将R2的MED改为10,而R1的MED保持默认不变,那么最终R4将选择R1去往AS 10中的目的地,因为R1的MED值0小于R2的MED值10,所以被优先使用。

默认情况下,只有当去往目的地的多个下一跳eBGP邻居都为相同AS时,才会比较MED值,如果多个eBGP邻居为不同AS时,是不会比较MED的,若是要强制在多个不同的eBGP邻居之间比较MED值,需要在BGP进程下输入命令:bgp always-compare-med。

 

6.Weight

Weight属性为Cisco私有属性,只有Cisco的路由器才能认识和理解Weight。路由的Weight属性只在路由器本地起作用,BGP将路由传递给邻居时,并不会保留Weight。Weight值的范围为0~65535,默认为0,如果是BGP本地路由,则Weight值为32768。可以手工任意修改路由的Weight值,可以对路由进行修改,也可以对整个邻居进行修改,但也只能对本地起作用,路由的Weight值并不会传递给邻居。

BGP路由表中到达同一目的地存在多条路径时,会优选Weight值最大的路径。在Cisco路由器中,比较最优路径的第一条规则就是比较Weight值,所以只要改动Weight值,就绝能够控制Cisco路由器的BGP选路。

 

其它属性,在应用中继续介绍。

 

 


BGP RIB-Failure

在BGP的路由表中,并非所有的路由都会被BGP使用,默认情况下,BGP到任何目的地,只选择单一路径。在BGP路由表中,只有最优路由才会被BGP使用,也只有最优路由才会发给BGP邻居,需要说明的是,思科官方强调BGP会将所有路由发给邻居,请以实际为准。BGP路由要被标为最优路由必须达到以下两个条件:

下一跳可达

如果是从iBGP收到的路由,则必须满足IGP与iBGP同步,除非该规则已被关闭。

 

如果某BGP路由的状态为RIB-Failure,则是不能被使用的,被定为RIB-Failure的原因有:

该路由在IGP中已经拥有比BGP更高优先级的AD值。

内存错误

超出VRF中的路由限制数。

 

而BGP建立邻居的条件如下:

双方需要建立邻居的IP地址在网络上是互通的,可以建立TCP会话。

双方指定的AS号码必须匹配

双方BGP数据包必须可达(eBGP默认TTL为1,需要注意)。

对方BGP数据包的目的IP和自己的源IP必须相同(单向满足即可)

                                                                    返回目录

 
BGP最优路径选择

在默认情况下,到达同一目的地,BGP只走单条路径,并不希望在多条路径之间执行负载均衡。当BGP路由表中有多条路径可以到达同一目的地时,需要靠比较路由条目中的路径属性,只有在比较多条路由的属性之后,才能决定选择哪条为最优路径。BGP的每条路由都带有路径属性,对于通过比较路径属性来选择最优路径,BGP需要在多条路径之间按照一定的顺序比较属性,当多条路由的同一属性完全相同时,需要继续比较顺序中的下一条属性。BGP在选择最优路径时,需要按照以下顺序来做比较:

 

1.最高Weight值

  (选择最高Weight值的路由,Weight值为Cisco路由器特有,并且只在本地路由器有效,默认Weight值为0,本地发起路由为32768。)

 

2.最高LOCAL_PREF值

(如果Weight值相同,则选择拥有最高LOCAL_PREF值的路由,默认为100。)

 

3.本地发起路由

 (如果LOCAL_PREF值相同,则选择BGP本地发起的路由,换句话说,也就是下一跳为0.0.0.0的路由,本地发起的路由有多种方式,如通过在BGP进程下命令network命令从IGP路由表导入,将其它路由协议重分布进BGP路由表,最后是汇总路由表。而通过命令network和重分布的路由优先于手工汇总的路由。)

 

4.最短AS_PATH

(如果本地发起路由无法比出最优路径,则选择拥有最短AS_PATH的路由,但是可以跳过这一步,输入命令bgp bestpath as−path ignore后,就会忽略对AS_PATH的比较,而直接比较下一属性。需要更加注意的是,AS_SET被认为是1个AS,而无论AS_SET中包含多少个AS,并且BGP联邦内部AS不被计算。)

 

5.最低Origin类型

(如果AS_PATH无法比出最优路径,则选择拥有最低Origin类型的路由,Origin表示路由最初是如何进入BGP路由表的,目前有三种进行BGP路由表的方法,从IGP导入,从EGP学习,以及重分布,它们的优先级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。

 

6.最小MED值

(如果Origin类型无法比出最优路径,则选择拥有最小MED值的路由,并且只有当多个下一跳邻居在同一AS时才比较MED值。如果要在多个不同AS的下一跳中比较MED,可在BGP进程中输入命令bgp always-compare-med,注意须保证此命令在整个AS的路由器上输入,否则可能产生路由环路。默认的MED值为0,如果收到一条没有MED的路由,也认为是0。)

 

7.eBGP优于iBGP

(如果MED值无法比出最优路径,则选择下一跳为eBGP的邻居而不选择iBGP邻居。都知道eBGP的路由AD值为20,而iBGP的路由AD值为200,但BGP并不在eBGP与iBGP之间比较AD值,并且在比到此步时,邻居类型才影响了最优路径的选择,这种影响是受邻居类型的影响,而不是受AD值的影响。注意:BGP联邦内部没有此规则。)

 

8.最小IGP metric到达下一跳的路由

(如果多条路径的下一跳邻居同为eBGP或iBGP,则选择拥有最小IGP metric到达下一跳的路由。)

 

9.负载均衡(如果开启的话)

(BGP并不是不能负载均衡的,如果之前的属性都无法选出最优路径,则执行负载均衡,但必须是之前的所有属性均完全相同,缺一不可。需要注意:只有负载均衡功能开启了,BGP才会执行负载均衡,否则,继续比较下一属性。)

 

在开启负载均衡功能时,在BGP进程下输入以下命令:

maximum-paths n (多条路径的下一跳邻居都为eBGP时,输入此命令)

maximum-paths ibgp n(多条路径的下一跳邻居都为iBGP时,输入此命令)

 

其中n为执行负载均衡的路径数量,最大值为6,默认为1,也就是不执行负载均衡。

如果在eBGP和iBGP邻居之间同时执行负载均衡,输入命令maximum-paths eibgp n,此命令只支持在Ipv4 VRF模式下输入,就是只能支持MPLS VPN下的eBGP和iBGP邻居之间负载均衡。

 

10.如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)

(为了避免路由翻动,所以选择最早学习到的路由,如果要忽略比较路由学习到的时间长短,可在BGP进程下输入命令bgp best path compare−routerid,某些IOS已经自动加入此命令,并且不能删除。如果多条路由拥有相同的Router-ID,比如路由是从同一个邻居学习到的,同样也会忽略比较路由学习到的时间长短。)

11.最低Router-ID下一跳

(BGP的Router-ID选举如同OSPF,在此步,拥有最低Router-ID的下一跳路由将被选为最优路径。)

 

12.最短cluster list(如同AS_PATH)

[cluster list只在BGP reflector (RR)的环境下才有,功能如同AS_PATH]

 

13.最小下一跳的邻居地址

(如果比较之前的所有属性都无法选出最优路径,最终选择下一跳的邻居地址最小的路由,这个地址就是在建立邻居时所指的地址,也是邻居和自己建立TCP连接所使用的源地址,建立不同邻居,不可能使用相同地址,所以不可能两个不同路径的邻居地址是相同的,在这一步一定能够选出最优路径。

 

                                                                   返回目录

 
BGP基础实验

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的,以此来作为BGP的连接地址。

 

1.IGP使全网Loopback 0互通

说明:使用OSPF保证Loopback 0之间的通信,从而建立BGP连接。

(1)配置各路由器的OSPF

 

R1

r1(config)#router ospf 1

r1(config-router)#router-id 1.1.1.1

r1(config-router)#network 12.1.1.1 0.0.0.0 area 0

r1(config-router)#network 13.1.1.1 0.0.0.0 area 0

r1(config-router)#network 1.1.1.1 0.0.0.0 area 0

 

R2

r2(config)#router ospf 1

r2(config-router)#router-id 2.2.2.2

r2(config-router)#network 12.1.1.2 0.0.0.0 area 0

r2(config-router)#network 24.1.1.2 0.0.0.0 area 0

r2(config-router)#network 2.2.2.2 0.0.0.0 area 0

 

R3

r3(config)#router ospf 1

r3(config-router)#router-id 3.3.3.3

r3(config-router)#network 13.1.1.3 0.0.0.0 area 0

r3(config-router)#network 34.1.1.3 0.0.0.0 area 0

r3(config-router)#network 3.3.3.3 0.0.0.0 area 0

 

R4

r4(config)#router ospf 1

r4(config-router)#router-id 4.4.4.4

r4(config-router)#network 24.1.1.4 0.0.0.0 area 0

r4(config-router)#network 34.1.1.4 0.0.0.0 area 0

r4(config-router)#network 4.4.4.4 0.0.0.0 area 0

 

说明:发布各路由器的直连网段与Loopback 0到OSPF中。

 

 

2.检查IGP连接

(1)检查R1上的OSPF邻居

r1#show ip ospf neighbor

 

Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3.3           1   FULL/BDR        00:00:34    13.1.1.3        FastEthernet0/1

2.2.2.2           1   FULL/BDR        00:00:38    12.1.1.2        FastEthernet0/0

r1#

说明:R1与R2和R3的OSPF邻居正常。

 

(2)检查R4上的OSPF邻居

r4#show ip ospf neighbor

 

Neighbor ID     Pri   State           Dead Time   Address         Interface

3.3.3.3           1   FULL/DR         00:00:34    34.1.1.3        FastEthernet0/0

2.2.2.2           1   FULL/DR         00:00:29    24.1.1.2        FastEthernet0/1

r4#

说明:R4与R2和R3的OSPF邻居正常。

  

(3)在R1上查看全网的loopback 0 通信情况

r1#ping 2.2.2.2 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

r1#

r1#ping 3.3.3.3 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

r1#ping 4.4.4.4 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

r1#

说明:全网的loopback 0 通信正常,可以用此地址建立BGP连接。

 

 

3.建立BGP邻居

(1)在R1与R2之间建立BGP邻居

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor 2.2.2.2 remote-as 1

说明:配置R1的Router-ID,并指定邻居为2.2.2.2,邻居AS为1。

 

(2)在R1与R2之间建立BGP邻居

r2(config)#router bgp 1

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

说明:配置R2的Router-ID,并指定邻居为1.1.1.1,邻居AS为1。

 

(3)查看BGP邻居

r1#show ip bgp summary

BGP router identifier 1.1.1.1, local AS number 1

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     1       0       0        0    0    0 never    Active

r1#

说明:R1无法与R2建立BGP邻居,因为自己目的地址是2.2.2.2,而对方源地址是12.1.1.2,同样对方目的是1.1.1.1,而自己源是12.1.1.1,源与目的不匹配,所以必须修改。

 

(4)修改R1的BGP源地址

r1(config)#router bgp 1

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

说明:将R1的源地址改为loopback 0,即1.1.1.1,而R2的目标地址也是1.1.1.1,与R1的源相同。

 

(5)查看R1的BGP邻居

r1#show ip bgp summary

BGP router identifier 1.1.1.1, local AS number 1

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     1       9       9        1    0    0 00:05:43        0

r1#

说明:因为R1的源与R2的目的相匹配,所以双方正常建立BGP邻居。

 

(6)修改R2的BGP源地址

r2(config)#router bgp 1

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

说明:虽然R1的源与R2的目的相匹配,已正常建立BGP邻居,但为了统一,也配置使R2的源与R1的目的相匹配。

 

 

4.建立R2与R4的BGP邻居

(1)配置R2的BGP参数

r2(config)#router bgp 1

r2(config-router)#neighbor 4.4.4.4 remote-as 4

r2(config-router)#neighbor 4.4.4.4 update-source loopback 0

说明:在R2上指定邻居为4.4.4.4,邻居AS为4,并且R2的源为loopback 0,即2.2.2.2。

 

(2)配置R4的BGP参数

r4(config)#router bgp 4

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#neighbor 2.2.2.2 remote-as 1

r4(config-router)#neighbor 2.2.2.2 update-source loopback 0

说明:配置R4的Router-ID,并指定邻居为2.2.2.2,邻居AS为1,R4的源地址为4.4.4.4。

 

(3)查看BGP邻居

r2#sh ip bgp summary

BGP router identifier 2.2.2.2, local AS number 1

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

1.1.1.1         4     1      12      12        1    0    0 00:08:45        0

4.4.4.4         4     4       0       0        0    0    0 never    Idle

r2#

说明:因为R2与R4之间为eBGP邻居,hello的TTL值默认为1,而R2的源2.2.2.2到达R4的源4.4.4.4,不止经过了一个网段,所以TTL值必须修改,才能够建立连接。

 

(4)修改R2与R4的TTL值

r2(config)#router bgp 1

r2(config-router)#neighbor 4.4.4.4 ebgp-multihop

 

r4(config)#router bgp 4

r4(config-router)#neighbor 2.2.2.2 ebgp-multihop

 

说明:将R2与R4之间的TTL值改大,默认改为255。

 

(5)查看BGP邻居

r2#sh ip bgp summary

BGP router identifier 2.2.2.2, local AS number 1

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

1.1.1.1         4     1      14      14        1    0    0 00:10:27        0

4.4.4.4         4     4       4       4        1    0    0 00:00:16        0

r2#

说明:由于邻居参数配置,所以邻居已经正常建立。

 

 

5.发布BGP路由

(1)查看BGP路由表

R1

r1#sh ip bgp

r1#

 

R2

r2#sh ip bgp

r2#

 

R4

r4#sh ip bgp

r4#

说明:默认情况下,BGP的路由表为空。

 

 

(2)在R1上导入BGP路由表

r1(config)#router bgp 1

r1(config-router)#network 11.1.1.0 mask 255.255.255.0

说明:将路由11.1.1.0/24导入BGP路由表,命令network后面的网段必须在IGP表中真实存在,也就是show ip route必须能够看见,且掩码匹配,否则无法导入BGP路由表。

 

(3)查看R1的BGP路由表

1#sh ip bgp

BGP table version is 2, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

r1#

说明:因为R1已经通过命令network将11.1.1.0/24导入BGP路由表中,所以能够看见该路由,由于此路由是自己导入的而并非从邻居学习到的,所以为本地路由,默认Next Hop为0.0.0.0,并且weight值为32768,最后的i表示该路由的origin属性为IGP,就表示是从IGP路由表被导入BGP路由表的。

 

 

(4)在R2上导入BGP路由表

r2(config)#route-map loop permit 10

r2(config-route-map)#match interface loopback 22

 

r2(config)#router bgp 1

r2(config-router)#redistribute connected route-map loop

说明:R2通过重分布的方法将22.2.2.0/24导入BGP路由表。

 

(5)查看R2的BGP路由表

r2#sh ip bgp

BGP table version is 2, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

* i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 ?

r2#

说明:因为R2是通过重分布的方法将路由导入BGP路由表的,所以为本地路由,默认Next Hop为0.0.0.0,并且weight值为32768,并且因为是使用重分布的方法,所以该路由的origin属性为incomplete;而路由11.1.1.0/24是从邻居R1学习到的,所以 下一跳为邻居1.1.1.1的地址,前面的i表示是从iBGP邻居学习到的,而后面的i同样表示该路由的origin属性为IGP。

 

 

(6)在R4上导入BGP路由表

r4(config)#router bgp 4

r4(config-router)#network 44.4.4.0 mask 255.255.255.0

说明:通过命令network将路由44.4.4.0/24发布到BGP路由表中。

 

(7)查看R4的BGP路由表

r4#sh ip bgp

BGP table version is 3, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

r4#

说明:因为R4是通过命令network将路由导入BGP路由表的,所以为本地路由,默认Next Hop为0.0.0.0,并且weight值为32768, origin属性为IGP;而路由22.2.2.0/24是从eBGP邻居R2学习到的,所以 下一跳为邻居2.2.2.2的地址,后面的?表示该路由的origin属性为incomplete。

 

6.保证BGP全网可达

(1)查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 2, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

* i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      4.4.4.4                  0    100      0 4 i

r1#

说明:R1已经学习到三条路由,11.1.1.0/24为自己本地路由,所以路由前面出现>符号,表示该路由为最优路径,被BGP选中并使用,而22.2.2.0/24和44.4.4.0/24没有>符号,所以并不是最优路由,就不会被BGP使用,被标为最优路径的两个条件中,下一跳可达已经符合,而由于这两条路由前面有i的标记,所以是从iBGP学习到的,因此必须完成iBGP与IGP之间的同步后,才能为最优路由。

 

(2)在R1上关闭iBGP与IGP之间的同步

r1(config)#router bgp 1

r1(config-router)#no synchronization

 

(3)再次查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 4, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      4.4.4.4                  0    100      0 4 i

r1#

说明:由于所有路由的下一跳都可达,并且iBGP与IGP之间的同步已不需要满足,所以所有路由都成为了最优路由。

 

(4)查看R4的BGP路由表

r4#sh ip bgp

BGP table version is 3, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

r4#

说明:R4所有的路由都不需要iBGP与IGP之间的同步,而下一跳都可达,所以全部被标为最优路由,但是缺少R1发布的路由11.1.1.0/24。

 

(5)查看R2的BGP路由表

r2#sh ip bgp

BGP table version is 3, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

* i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 ?

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

r2#

说明:因为11.1.1.0/24是从iBGP学习到的,并且不满足iBGP与IGP之间的同步,所以该路由没有被标为最优路由,所以就没有发给邻居R4。

 

(6)在R2上关闭iBGP与IGP之间的同步

r2(config)#router bgp 1

r2(config-router)#no synchronization

(7)再次查看R2的BGP路由表

r2#sh ip bgp

BGP table version is 4, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 ?

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

r2#

说明:由于所有路由的下一跳都可达,并且iBGP与IGP之间的同步已不需要满足,所以所有路由都成为了最优路由。

 

(8)查看R4的BGP路由表

r4#sh ip bgp

BGP table version is 4, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

r4#

说明:R1,R2,R4都已经拥有了全部的路由。

 

 

RIB failure

 

1.R4创建网段并发布进OSPF

(1)R4创建网段并发布进OSPF

r4(config)#int loopback 100

r4(config-if)#ip address 100.1.1.1 255.255.255.0

r4(config-if)#ip ospf network point-to-point

 

r4(config)#router ospf 1

r4(config-router)#network 100.1.1.1 0.0.0.0 area 0

说明:在R4上创建网段100.1.1.0/24,并将其发布进OSPF

 

(2)R4将100.1.1.0/24导入BGP路由表

r4(config)#router bgp 4

r4(config-router)#network 100.1.1.0 mask 255.255.255.0

 

(3)查看R4的BGP路由表

r4#sh ip bgp

BGP table version is 7, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:100.1.1.0/24已经被发布进BGP,成为本地路由,所以下一跳为0.0.0.0,weight值为32768。

 

2.查看RIB failure

(1)查看R2的BGP路由表

r2#sh ip bgp

BGP table version is 7, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 ?

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 100.1.1.0/24     4.4.4.4                  0             0 4 i

r2#

说明:因为R2从eBGP邻居R4学习到的100.1.1.0/24的AD值为20,并且还从OSPF学习到一次,AD为110,而OSPF的AD比BGP学习到的AD高,所以BGP中的路由正常。

 

(2)查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 6, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      4.4.4.4                  0    100      0 4 i

r>i100.1.1.0/24     4.4.4.4                  0    100      0 4 i

r1#

说明:因为R2从iBGP邻居R2学习到的100.1.1.0/24的AD值为200,并且还从OSPF学习到一次,AD为110,而OSPF的AD比BGP学习到的AD低,所以BGP中的路由为RIB failure,所以路由前面标记为r。

 

(3)查看R1的RIB failure表

r1#sh ip bgp rib-failure

Network            Next Hop                      RIB-failure   RIB-NH Matches

100.1.1.0/24       4.4.4.4             Higher admin distance              n/a

r1#

说明:可以看到100.1.1.0/24为RIB failure路由,原因为已经拥有比BGP更优先的AD值。

 

 

BGP选路规则实验

 

1.使R1,R2,R3,R4全网建立BGP,并且互通

(1)将R3加入BGP中

R1

r1(config)#router bgp 1

r1(config-router)#neighbor 3.3.3.3 remote-as 1

r1(config-router)#neighbor 3.3.3.3 update-source loopback 0

 

R3

r3(config)#router bgp 1

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#neighbor 1.1.1.1 remote-as 1

r3(config-router)#neighbor 1.1.1.1 update-source loopback 0

 

r3(config-router)#neighbor 4.4.4.4 remote-as 4

r3(config-router)#neighbor 4.4.4.4 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 ebgp-multihop

 

R4

r4(config)#router bgp 4

r4(config-router)#neighbor 3.3.3.3 remote-as 1

r4(config-router)#neighbor 3.3.3.3 update-source loopback 0

r4(config-router)#neighbor 3.3.3.3 ebgp-multihop

 

 

(2)查看R3的BGP邻居

r3#sh ip bg summary

BGP router identifier 3.3.3.3, local AS number 1

BGP table version is 4, main routing table version 4

3 network entries using 351 bytes of memory

3 path entries using 156 bytes of memory

3/2 BGP path/bestpath attribute entries using 372 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 903 total bytes of memory

BGP activity 3/0 prefixes, 3/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

1.1.1.1         4     1       7       7        4    0    0 00:02:08        1

4.4.4.4         4     4       7       5        4    0    0 00:00:08        2

r3#

说明:R3已经与其它路由器建立BGP邻居。

 

 

2.改变AS 1内部下一跳

(1)查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 6, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      4.4.4.4                  0    100      0 4 i

*>i                 4.4.4.4                  0    100      0 4 i

r i100.1.1.0/24     4.4.4.4                  0    100      0 4 i

r>i                 4.4.4.4                  0    100      0 4 i

r1#

说明:因为R1都是从iBGP收到的路由,所以到达R4的路由44.4.4.0的下一跳都为4.4.4.4,而没有被R2和R3改变。

(2)改变R2与R3对R1的下一跳为自己

r2(config)#router bgp 1

r2(config-router)#neighbor 1.1.1.1 next-hop-self

 

r3(config)#router bgp 1

r3(config-router)#neighbor 1.1.1.1 next-hop-self

 

(3)再次查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      3.3.3.3                  0    100      0 4 i

*>i                 2.2.2.2                  0    100      0 4 i

r i100.1.1.0/24     3.3.3.3                  0    100      0 4 i

r>i                 2.2.2.2                  0    100      0 4 i

r1#

说明:学习到的路由44.4.4.0/24已经被R2和R3改为自己。

 

 

测试选路规则说明:

测试R1通过R2与R3到达R4的网段44.4.4.0/24的选路,

以及测试R4通过R2与R3到达R1的网段11.1.1.0/24的选路,

 

要测试的选路顺序为

1.最高Weight值

2.最高LOCAL_PREF值

3.本地发起路由

4.最短AS_PATH

5.最低Origin类型

6.最小MED值

7.eBGP优于iBGP

8.最小IGP metric到达下一跳的路由

9.负载均衡(如果开启的话)

10.如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)

11.最低Router-ID下一跳

12.最短cluster list(如同AS_PATH)

13.最小下一跳的邻居地址

 

因为选路顺序为由上至下,当上一个属性已经比较出最优路径,则下一属性被忽略,所以我们实验从下往上修改来进行比较,因为改过下面的属性影响选路之后,只要再改上一条,就能再次影响选路,就能证明,上一条是比下一条优先的。

 

  

测试第13条 最小下一跳的邻居地址

说明:因为只有下一跳邻居的Router-ID相同的情况下,才会比较下一跳邻居的地址大小,所以先将R2与R3的Router-ID改为相同,以测试比较下一跳地址。

(1)修改R3的Router-ID与R2相同

r3(config)#router bgp 1

r3(config-router)#bgp router-id 2.2.2.2

r3(config-router)#

 

(2)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      3.3.3.3                  0    100      0 4 i

*>i                 2.2.2.2                  0    100      0 4 i

r i100.1.1.0/24     3.3.3.3                  0    100      0 4 i

r>i                 2.2.2.2                  0    100      0 4 i

r1#

说明:R1到达网段44.4.4.0/24选则最小下一跳邻居R2为最优路径。

 

 

 

测试第12条 最短cluster list

说明:因为比较最短cluster list只在BGP Route Reflector (RR)环境中才有,所以此步跳过。

 

测试第11条 最低Router-ID下一跳

说明:选择下一跳有最小Router-ID的邻居为最优路径。

 

(1)修改R3的Router-ID

r3(config)#router bgp 1

r3(config-router)#bgp router-id 1.1.1.3

说明:R3的Router-ID改为1.1.1.3

 

(2)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 10, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      3.3.3.3                  0    100      0 4 i

* i                 2.2.2.2                  0    100      0 4 i

r>i100.1.1.0/24     3.3.3.3                  0    100      0 4 i

r i                 2.2.2.2                  0    100      0 4 i

r1#

说明:因为R2的Router-ID为2.2.2.2,而R3的Router-ID为1.1.1.3,所以最小Router-ID的R3被选为最优路径。

 

测试第10条 如果下一跳都为eBGP,则选择最早学习到的路由(即时间最长的路由)

说明:因为只有下一跳都为eBGP,才比较选择最早学习到的路由,所以测试R4通过R2与R2到达11.1.1.0/24的选路。

(1)查看R4到达11.1.1.0/24的选路

r4#sh ip bgp       

BGP table version is 7, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:R4选择R2到达11.1.1.0/24

 

(2)查看R2与R3的邻居时间

r4#sh ip bg summary

BGP router identifier 4.4.4.4, local AS number 4

BGP table version is 7, main routing table version 7

4 network entries using 404 bytes of memory

5 path entries using 240 bytes of memory

3 BGP path attribute entries using 180 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 848 total bytes of memory

BGP activity 5/1 prefixes, 8/3 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     1      51      49        7    0    0 00:43:27        2

3.3.3.3         4     1      27      33        7    0    0 00:02:23        1

r4#

说明:因为R2的邻居时间比R3长,所以R2为最优路径。

 

(3)清除R2的邻居,以刷新邻居时间

r4(config)#router bgp 4

r4(config-router)#neighbor 2.2.2.2 shutdown

r4(config-router)#

*Mar  1 01:16:09.823: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down Admin. shutdown

r4(config-router)#no neighbor 2.2.2.2 shutdown

r4(config-router)#

*Mar  1 01:16:37.452: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up

r4(config-router)#

说明:将邻居R2断开,再建立,从而刷新邻居的建立时间。

 

(4)再次查看邻居的建立时间

r4#sh ip bg summary

BGP router identifier 4.4.4.4, local AS number 4

BGP table version is 10, main routing table version 10

4 network entries using 404 bytes of memory

5 path entries using 240 bytes of memory

3 BGP path attribute entries using 180 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 848 total bytes of memory

BGP activity 5/1 prefixes, 10/5 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     1      57      55       10    0    0 00:00:27        2

3.3.3.3         4     1      28      36       10    0    0 00:03:45        1

r4#

说明:R3的邻居时间比R2长。

 

(5)再次查看R4到达11.1.1.0/24的选路

r4#sh ip bgp

BGP table version is 10, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      2.2.2.2                                0 1 i

*>                  3.3.3.3                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:因为R3的邻居时间比R2长,所以选择了R3为最优路径。

 

 

测试第9条 BGP负载均衡

说明:只有在前面8条属性都相同的话,才能开启BGP的负载功能,前8条属性任何一条不同,都不能负载。

(1)查看R1到达44.4.4.0/24的选路

r1#sh ip route bgp

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [200/0] via 2.2.2.2, 00:38:33

     44.0.0.0/24 is subnetted, 1 subnets

B       44.4.4.0 [200/0] via 3.3.3.3, 00:05:12

r1#

说明:R1到达44.4.0/24只走R3,默认没有负载。

 

(2)开启BGP负载功能

r1(config)#router bgp 1

r1(config-router)#maximum-paths ibgp 2

说明:因为两个下一跳都为iBGP,所以开启iBGP的负载功能。

 

(3)再次查看R1到达44.4.0/24的选路

r1#sh ip route bgp

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [200/0] via 2.2.2.2, 00:39:16

     44.0.0.0/24 is subnetted, 1 subnets

B       44.4.4.0 [200/0] via 2.2.2.2, 00:00:18

                 [200/0] via 3.3.3.3, 00:00:18

r1#

说明:R1到达44.4.4.0/24已经执行负载。

 

(4)查看R4到达11.1.1.0/24的选路

r4#sh ip route bgp

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [20/0] via 2.2.2.2, 00:03:03

     11.0.0.0/24 is subnetted, 1 subnets

B       11.1.1.0 [20/0] via 3.3.3.3, 00:03:31

r4#

说明:R4到达11.1.1.0/24没有负载。

 

(5)开启R4到达11.1.1.0/24的负载

r4(config)#router bgp 4

r4(config-router)#maximum-paths 2

说明:因为两个下一跳都为eBGP,所以开启eBGP的负载。

 

(6)再次查看R4到达11.1.1.0/24的选路

r4#sh ip route bgp

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [20/0] via 2.2.2.2, 00:03:33

     11.0.0.0/24 is subnetted, 1 subnets

B       11.1.1.0 [20/0] via 2.2.2.2, 00:00:15

                 [20/0] via 3.3.3.3, 00:00:15

r4#

说明:R4到达11.1.1.0/24已经执行负载。

 

 

测试第8条 最小IGP metric到达下一跳的路由

说明:拥有最小IGP metric到达下一跳的路由为最优路径。

(1)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 14, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      2.2.2.2                  0    100      0 4 i

*>i                 3.3.3.3                  0    100      0 4 i

r i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r>i                 3.3.3.3                  0    100      0 4 i

r1#

说明:R1选择R3到达44.4.0/24,但并不是因为IGP metric。

 

(2)查看到达两个下一跳R2与R3的IGP metric值

r1#sh ip route

Codes: C - connected, S - static, 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

       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 not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 13.1.1.3, 00:28:17, FastEthernet0/1

     1.0.0.0/32 is subnetted, 1 subnets

C       1.1.1.1 is directly connected, Loopback0

     2.0.0.0/32 is subnetted, 1 subnets

O       2.2.2.2 [110/2] via 12.1.1.2, 00:28:17, FastEthernet0/0

     100.0.0.0/24 is subnetted, 1 subnets

O       100.1.1.0 [110/3] via 12.1.1.2, 00:28:17, FastEthernet0/0

                  [110/3] via 13.1.1.3, 00:28:17, FastEthernet0/1

     3.0.0.0/32 is subnetted, 1 subnets

O       3.3.3.3 [110/2] via 13.1.1.3, 00:28:18, FastEthernet0/1

     4.0.0.0/32 is subnetted, 1 subnets

O       4.4.4.4 [110/3] via 12.1.1.2, 00:28:18, FastEthernet0/0

                [110/3] via 13.1.1.3, 00:28:18, FastEthernet0/1

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [200/0] via 2.2.2.2, 00:41:12

     24.0.0.0/24 is subnetted, 1 subnets

O       24.1.1.0 [110/2] via 12.1.1.2, 00:28:21, FastEthernet0/0

     11.0.0.0/24 is subnetted, 1 subnets

C       11.1.1.0 is directly connected, Loopback11

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     13.0.0.0/24 is subnetted, 1 subnets

C       13.1.1.0 is directly connected, FastEthernet0/1

     44.0.0.0/24 is subnetted, 1 subnets

B       44.4.4.0 [200/0] via 2.2.2.2, 00:02:14

                 [200/0] via 3.3.3.3, 00:02:14

r1#

说明:到达两个下一跳R2与R3的IGP metric值相同。

 

(3)改大到达下一跳R3的IGP metric值,使最优路径走R2

r1(config)#int f0/1

r1(config-if)#ip ospf cost 2

 

(4)再次查看到达两个下一跳R2与R3的IGP metric值

r1#sh ip route

Codes: C - connected, S - static, 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

       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 not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/3] via 13.1.1.3, 00:01:10, FastEthernet0/1

                 [110/3] via 12.1.1.2, 00:01:10, FastEthernet0/0

     1.0.0.0/32 is subnetted, 1 subnets

C       1.1.1.1 is directly connected, Loopback0

     2.0.0.0/32 is subnetted, 1 subnets

O       2.2.2.2 [110/2] via 12.1.1.2, 00:01:10, FastEthernet0/0

     100.0.0.0/24 is subnetted, 1 subnets

O       100.1.1.0 [110/3] via 12.1.1.2, 00:01:10, FastEthernet0/0

     3.0.0.0/32 is subnetted, 1 subnets

O       3.3.3.3 [110/3] via 13.1.1.3, 00:01:11, FastEthernet0/1

     4.0.0.0/32 is subnetted, 1 subnets

O       4.4.4.4 [110/3] via 12.1.1.2, 00:01:11, FastEthernet0/0

     22.0.0.0/24 is subnetted, 1 subnets

B       22.2.2.0 [200/0] via 2.2.2.2, 00:43:18

     24.0.0.0/24 is subnetted, 1 subnets

O       24.1.1.0 [110/2] via 12.1.1.2, 00:01:11, FastEthernet0/0

     11.0.0.0/24 is subnetted, 1 subnets

C       11.1.1.0 is directly connected, Loopback11

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     13.0.0.0/24 is subnetted, 1 subnets

C       13.1.1.0 is directly connected, FastEthernet0/1

     44.0.0.0/24 is subnetted, 1 subnets

B       44.4.4.0 [200/0] via 2.2.2.2, 00:00:14

r1#

说明:到达R2的metric值为2,到达R3的metric值为3,大于R2。

 

(5)再次查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 16, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      2.2.2.2                  0    100      0 4 i

* i                 3.3.3.3                  0    100      0 4 i

r>i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r i                 3.3.3.3                  0    100      0 4 i

r1#

说明:因为到达R2的IGP metric值比R3小,所以最优路径为R2。

 

 

测试第7条  eBGP优于iBGP

说明:因为没有两个下一跳同时存在eBGP和iBGP的,所以此步跳过。

 

 

测试第6条  最小MED值

说明:最小MED值的路由为最优路径,一条没有MED的路由,默认为0。

因为MED希望是在下一跳都为eBGP,也就是出AS时比较,但现在要证明,只要有MED值存在,无论邻居是何类型,都将比较MED值,所以选择比较R1到达44.4.4.0/24的选路。

 

(1)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 16, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      2.2.2.2                  0    100      0 4 i

* i                 3.3.3.3                  0    100      0 4 i

r>i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r i                 3.3.3.3                  0    100      0 4 i

r1#

 

说明:R2和R3的MED默认为0,相同。

 

(2)加大R2的MED值,使其走R3

r1(config)#access-list 44 permit 44.4.4.0

 

r1(config)#route-map med permit 10

r1(config-route-map)#match ip address 44

r1(config-route-map)#set metric 44

r1(config-route-map)#exit

r1(config)#route-map med permit 20

 

r1(config)#router bgp 1

r1(config-router)#neighbor 2.2.2.2 route-map med in

 

自动刷新:

r1(config)#router bgp 1

r1(config-router)#neighbor 2.2.2.2 soft-reconfiguration inbound

 

说明:修改属性后,BGP无法得知,所以配置自动刷新策略,只能为in方向。

(3)再次查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 17, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      2.2.2.2                 44    100      0 4 i

*>i                 3.3.3.3                  0    100      0 4 i

r>i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r i                 3.3.3.3                  0    100      0 4 i

r1#

说明:因为R3的MED小于R2,所以R3为最优路径。

 

注:在R4上修改MED影响选路的方法不再举例。

 

 

测试第5条 最低Origin类型

说明:优先级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。

 

(1)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 17, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      2.2.2.2                 44    100      0 4 i

*>i                 3.3.3.3                  0    100      0 4 i

r>i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r i                 3.3.3.3                  0    100      0 4 i

r1#

说明:两个下一跳邻居的origin属性都为IGP。

 

(2)将R3的origin属性改为incomplete,使其走R2

 

r1(config)#route-map ori permit 10

r1(config-route-map)#match ip address 44

r1(config-route-map)#set origin incomplete

r1(config)#route-map ori permit 20

 

r1(config)#router bgp 1

r1(config-router)#neighbor 3.3.3.3 route-map ori in

r1(config-router)#neighbor 3.3.3.3 soft-reconfiguration inbound

 

(3)再次查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 18, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

*>i44.4.4.0/24      2.2.2.2                 44    100      0 4 i

* i                 3.3.3.3                  0    100      0 4 ?

r>i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r i                 3.3.3.3                  0    100      0 4 i

r1#

说明:因为R3的origin属性为为incomplete,R2的origin属性为IGP,所以选R2为最优路径。

 

 

测试第4条最短AS_PATH

说明:修改AS_Path只能在eBGP邻居之间,iBGP邻居是不能改动AS_Path,所以测试R4通过eBGP邻居R2和R3到达11.1.1.0的选路。

 

(1)查看R4到达11.1.1.0/24的选路

r4#sh ip bgp

BGP table version is 14, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      2.2.2.2                                0 1 i

*>                  3.3.3.3                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:R2与R3的AS_Path长短相同。

 

 

(2)加长R3路径上的AS_Path,使其走R2

r4(config)#access-list 3 permit 11.1.1.0

 

r4(config)#route-map as permit 10

r4(config-route-map)#match ip address 3

r4(config-route-map)#set as-path prepend 3

r4(config-route-map)#exit

r4(config)#route-map as permit 20

 

r4(config)#router bgp 4

r4(config-router)#neighbor 3.3.3.3 route-map as in

r4(config-router)#neighbor 3.3.3.3 soft-reconfiguration inbound

 

 

(3)再次查看R4到达11.1.1.0/24的选路

r4#sh ip bgp

BGP table version is 15, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      2.2.2.2                                0 1 i

*                   3.3.3.3                                0 3 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:因为R3的AS_Path比R2长,所以最优路径选择R2。

 

 

测试第3条 本地发起路由

说明:因为一条路由是不是由本地引入BGP,无法修改,所以此步跳过。

 

 

测试第2条 最高LOCAL_PREF值

因为LOCAL_PREF希望是在下一跳都为iBGP,也就是AS内部比较,但现在要证明,只要有LOCAL_PREF值存在,无论邻居是何类型,都将比较LOCAL_PREF值,所以选择比较R4到达11.1.1.0/24的选路。

 

(1) 查看R4到达11.1.1.0/24的选路

r4#sh ip bgp

BGP table version is 15, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      2.2.2.2                                0 1 i

*                   3.3.3.3                                0 3 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:R2为最优路径。

 

(2)改R3的LOCAL_PREF值比R2大,让其走R3

r4(config)#access-list 11 permit 11.1.1.0

 

r4(config)#route-map r3 permit 10

r4(config-route-map)#match ip address 11

r4(config-route-map)#set local-preference 3

r4(config-route-map)#exit

r4(config)#route-map r3 permit 20

 

r4(config)#route-map r2 permit 10

r4(config-route-map)#match ip address 11

r4(config-route-map)#set local-preference 2

r4(config-route-map)#exit

r4(config)#route-map r2 permit 20

 

r4(config)#router bgp 4

r4(config-router)#neighbor 3.3.3.3 route-map r3 in

r4(config-router)#neighbor 2.2.2.2 route-map r2 in

r4(config-router)#neighbor 2.2.2.2 soft-reconfiguration inbound

 

 

(3)再次查看R4到达11.1.1.0/24的选路

r4#sh ip bgp

BGP table version is 5, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      2.2.2.2                         2      0 1 i

*>                  3.3.3.3                         3      0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 ?

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

r4#

说明:因为R3的LOCAL_PREF值比R2大,所以最优路径为R3。

 

 

注:在R1上修改LOCAL_PREF影响选路的方法不再举例。

 

 

测试第1条  最高Weight值

说明:可针对路由修改Weight值,也可针对整个邻居修改Weight值。

 

(1)查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 23, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      3.3.3.3                  0    100      0 4 ?

*>i                 2.2.2.2                 44    100      0 4 i

r i100.1.1.0/24     3.3.3.3                  0    100      0 4 i

r>i                 2.2.2.2                  0    100      0 4 i

r1#

说明:R2为最优路径。

 

(2)改大R3的weight值,使其走R3

r1(config)#router bgp 1

r1(config-router)#neighbor 3.3.3.3 weight 3

 

(3)再次查看R1到达44.4.4.0/24的选路

r1#sh ip bgp

BGP table version is 6, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 ?

* i44.4.4.0/24      2.2.2.2                 44    100      0 4 i

*>i                 3.3.3.3                  0    100      3 4 ?

r i100.1.1.0/24     2.2.2.2                  0    100      0 4 i

r>i                 3.3.3.3                  0    100      3 4 i

r1#

说明:因为R3的weight值大于R2,所以R3为最优路径。

 

 

结论:可以证明,按照选路顺序,虽然改变了某个属性,从而改变了选路,但是前一个属性的改变,再次影响了选路,就表示顺序必须是由前往后,只有在前一个属性无法比出结果,才会比较后面一个,如果前面的属性已经比出结果,则后面的属性已经无关紧要了,所以以上选路规则顺序成立。

                                                                    返回目录

 
BGP 路由聚合

路由表的大小,可以影响到路由器的转发速度,对于拥有庞大路由表的BGP,如果能够尽可能地减小其路由表的大小,那么性能可以得到明显的提高。减少路由表的条目,缩小路由表的空间,可以使用对路由的汇总来实现,在BGP中,称为路由聚合。在BGP中做路由汇总,需要手工创建,只要有一条路由包含在汇总路由中,那么这条汇总路由即可生效。

当创建了BGP汇总路由后,并不表示一定能够缩小路由表大小,因为在创建汇总路由后,被汇总的明细路由默认依然会通告给邻居,所以路由条目并没有减少,路由表的大小也就没有缩小。对于被包含在汇总路由中的明细路由是否需要通告给邻居,是可以自定义的,只要将某些路由抑制住,那么这些路由就不会通告给邻居。也可以选择抑制所有明细路由而只发送汇总路由给邻居。

因为汇总路由往往包含多条明细路由,而这些明细路由可能会拥有各不相同的AS_Path属性,默认情况下,汇总路由会将所有明细路由的AS_Path全部去掉,当汇总路由发给其它邻居之后,由于AS_Path的丢失,所以很有可能造成路由环路,因此BGP会在汇总路由中附加一定的属性来提示该路由产生了路径丢失,需要BGP路由器额外小心,这个属性就是atomic-aggregate。

在BGP中创建汇总路由之后,默认会去掉明细路由中的所有AS_Path,但也可以选择让汇总路由保留所有明细路由的AS_Path,这个在汇总路由中的AS_Path称为AS-SET,AS-SET包含了所有明细路由的所有AS_Path,而这些AS_Path的排列是没有固定顺序的,并且放在括号中,如AS 15,AS 25,AS 35,AS 45,变成AS-SET,很有可能就是{35,15,45,25}。由此可见,拥有AS-SET的汇总路由没有丢失路径,所以这样的汇总路由就不需要携带atomic-aggregate属性,也不会携带atomic-aggregate属性。汇总路由是否使用AS-SET,可以自由决定。因为AS-SET中可能包含多个AS,但即使一个AS-SET中有多个AS,但在计算AS_Path长度时,只被计算为1个AS。

创建汇总路由的BGP路由器被认为是该路由的起源,所以汇总路由在该路由器上为本地路由,AD值为200,下一跳属性为0.0.0.0。

 

创建BGP汇总路由的方法有两种:

1.手工命令创建汇总路由

2.创建静态路由并重分布进BGP。

 

配置BGP 路由聚合

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

R6  Loopback 0  6.6.6.6/32      Loopback 66  66.6.6.6/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

1.IGP保证全网Loopback 0互通

(1)配置OSPF

说明:此步略,请参见之前配置。

(2)测试全网Loopback 0连通性

r1#ping 2.2.2.2 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/50/88 ms

r1#ping 3.3.3.3 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/43/76 ms

r1#ping 4.4.4.4 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/74/116 ms

r1#ping 5.5.5.5 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 132/172/228 ms

r1#ping 6.6.6.6 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 96/169/248 ms

r1#

说明:全网Loopback 0连通性连通性正常。

 

 

2.配置全网BGP

(1)配置R1的BGP

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor 2.2.2.2 remote-as 1

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

r1(config-router)#neighbor 3.3.3.3 remote-as 1

r1(config-router)#neighbor 3.3.3.3 update-source loopback 0

r1(config-router)#network 11.1.1.0 mask 255.255.255.0

(2)配置R2的BGP

r2(config)#router bgp 1

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

r2(config-router)#neighbor 4.4.4.4 remote-as 4

r2(config-router)#neighbor 4.4.4.4 update-source loopback 0

r2(config-router)#neighbor 4.4.4.4 ebgp-multihop

r2(config-router)#network 22.2.2.0 mask 255.255.255.0

(3)配置R3的BGP

r3(config)#router bgp 1

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#neighbor 1.1.1.1 remote-as 1

r3(config-router)#neighbor 1.1.1.1 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 remote-as 4

r3(config-router)#neighbor 4.4.4.4 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 ebgp-multihop

r3(config-router)#network 33.3.3.0 mask 255.255.255.0

(4)配置R4的BGP

r4(config)#router bgp 4

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#neighbor 2.2.2.2 remote-as 1

r4(config-router)#neighbor 2.2.2.2 update-source loopback 0

r4(config-router)#neighbor 2.2.2.2 ebgp-multihop

r4(config-router)#neighbor 3.3.3.3 remote-as 1

r4(config-router)#neighbor 3.3.3.3 update-source loopback 0

r4(config-router)#neighbor 3.3.3.3 ebgp-multihop

r4(config-router)#neighbor 5.5.5.5 remote-as 5

r4(config-router)#neighbor 5.5.5.5 update-source loopback 0

r4(config-router)#neighbor 5.5.5.5 ebgp-multihop

r4(config-router)#neighbor 6.6.6.6 remote-as 6

r4(config-router)#neighbor 6.6.6.6 update-source loopback 0

r4(config-router)#neighbor 6.6.6.6 ebgp-multihop

r4(config-router)#network 44.4.4.0 mask 255.255.255.0

(5)配置R5的BGP

r5(config)#router bgp 5

r5(config-router)#bgp router-id 5.5.5.5

r5(config-router)#neighbor 4.4.4.4 remote-as 4

r5(config-router)#neighbor 4.4.4.4 update-source loopback 0

r5(config-router)#neighbor 4.4.4.4 ebgp-multihop

r5(config-router)#network 55.5.5.0 mask 255.255.255.0

(6)配置R6的BGP

r6(config)#router bgp 6

r6(config-router)#bgp router-id 6.6.6.6

r6(config-router)#neighbor 4.4.4.4 remote-as 4

r6(config-router)#neighbor 4.4.4.4 update-source loopback 0

r6(config-router)#neighbor 4.4.4.4 ebgp-multihop

r6(config-router)#network 66.6.6.0 mask 255.255.255.0

 

3.创建BGP路由汇总

(1)在R1和R6上添加BGP明细路由

r1(config)#int loopback 100

r1(config-if)#ip address 100.1.1.1 255.255.255.0

 

r1(config)#router bgp 1

r1(config-router)#network 100.1.1.0 mask 255.255.255.0

 

 

r6(config)#int loopback 100

r6(config-if)#ip address 100.1.2.1 255.255.255.0

r6(config-if)#ip address 100.1.3.1 255.255.255.0 secondary

 

r6(config)#router bgp 6

r6(config-router)#network 100.1.2.0 mask 255.255.255.0

r6(config-router)#network 100.1.3.0 mask 255.255.255.0

说明:在R1和R6上添加路由,以供BGP汇总使用。

 

(2)在R5上查看BGP路由

r5#sh ip bgp

BGP table version is 10, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:R5上看到R1和R6发出的路由100.1.1.0/24, 100.1.2.0/24, 100.1.3.0/24,并且AS_Path有所不同,分别为4,6和4,1,可以看出分别由AS 1和AS4发起,并经过了AS 4。

 

(3)在R4上创建BGP路由汇总

r4(config)#router bgp 4

r4(config-router)#aggregate-address 100.1.0.0 255.255.252.0

说明:创建路由汇总100.1.0.0/22

 

4.查看BGP汇总路由

(1)在R5上查看BGP汇总路由

r5#sh ip bgp

BGP table version is 11, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:可以看到,R5除了收到BGP汇总路由100.1.0.0/22之外,其中的明细路由也同样收到,并且汇总路由100.1.0.0/22的AS_Path为4,说明AS_Path缺失。

 

(2)查看atomic-aggregate

r5#sh ip bgp 100.1.0.0

BGP routing table entry for 100.1.0.0/22, version 32

Paths: (1 available, best #1, table Default-IP-Routing-Table)

  Not advertised to any peer

  4, (aggregated by 4 4.4.4.4)

    4.4.4.4 (metric 65) from 4.4.4.4 (4.4.4.4)

      Origin IGP, metric 0, localpref 100, valid, external, atomic-aggregate, best

r5#

说明:因为100.1.0.0/22产生了路径丢失,所以该路由中携带atomic-aggregate属性,说明路径丢失。

5.调整BGP汇总路由路径信息

(1)调整AS-SET

r4(config)#router bgp 4                            

r4(config-router)#aggregate-address 100.1.0.0 255.255.252.0 as-set

说明:在R4创建汇总路由时,使用AS-SET,以保留所有明细路由的AS_Path。

 

(2)再次查看R5的BGP汇总路由

r5#sh ip bgp

BGP table version is 12, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 {1,6} i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:汇总路由100.1.0.0/22包含了所有明细路由的AS_Path,因此没有路径丢失。

(3)查看atomic-aggregate

r5#sh ip bgp 100.1.0.0

BGP routing table entry for 100.1.0.0/22, version 33

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Flag: 0x820

  Not advertised to any peer

  4 {1,6}, (aggregated by 4 4.4.4.4)

    4.4.4.4 (metric 65) from 4.4.4.4 (4.4.4.4)

      Origin IGP, metric 0, localpref 100, valid, external, best

r5#

说明:因为100.1.0.0/22没有产生路径丢失,所以该路由中没有携带atomic-aggregate属性。

 

 

6.调整BGP汇总路由抑制

(1)在R4上抑制不需要通告的明细路由

r4(config)#access-list 1 permit 100.1.1.0

r4(config)#route-map sup permit 10

r4(config-route-map)#match ip address 1

 

r4(config)#router bgp 4

r4(config-router)#aggregate-address 100.1.0.0 255.255.252.0 as-set suppress-map sup

说明:将100.1.1.0/24放入route-map,在suppress-map中的route-map所包含的路由便会被抑制而不会通告给邻居。

 

(2)在R5上查看BGP路由

r5#sh ip bgp

BGP table version is 12, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 {1,6} i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:可以看到,R5并没有收到明细路由100.1.1.0/24,说明被抑制了。

(3)在R4上抑制全部明细路由

r4(config)#router bgp 4                                     

r4(config-router)#aggregate-address 100.1.0.0 255.255.252.0 as-set summary-only

说明:在R4上抑制全部明细路由,只发汇总路由。

(4)在R5上查看BGP路由

r5#sh ip bgp

BGP table version is 15, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 {1,6} i

r5#

说明:R5只能收到汇总路由,其它明细路由已经被全部抑制。

 

(5)在R4上查看抑制路由

r4#sh ip bgp

BGP table version is 15, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      2.2.2.2                                0 1 i

*                   3.3.3.3                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 i

*> 33.3.3.0/24      3.3.3.3                  0             0 1 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

*> 66.6.6.0/24      6.6.6.6                  0             0 6 i

*> 100.1.0.0/22     0.0.0.0                       100  32768 {1,6} i

s  100.1.1.0/24     3.3.3.3                                0 1 i

s>                  2.2.2.2                                0 1 i

s> 100.1.2.0/24     6.6.6.6                  0             0 6 i

s> 100.1.3.0/24     6.6.6.6                  0             0 6 i

r4#

说明:路由前面的标识s表示该路由在汇总时被抑制而不发给邻居。

 

 

(6)使用不抑制

r4(config)#access-list 3 permit 100.1.3.0

 

r4(config)#route-map unsup permit 10

r4(config-route-map)#match ip address 3

 

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 unsuppress-map unsup

说明:在使用了抑制路由之后,如果希望某些路由还是发给某邻居而不抑制,那么可以使用不抑制的映射列表unsuppress-map,在该列表后面包含的路由都将被发给邻居。

(7)在R5上查看BGP路由

r5#sh ip bgp

BGP table version is 16, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 {1,6} i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:可以看见,因为R4上配置上对100.1.3.0/24不抑制,所有R5在收到汇总路由之后,还能收到不被抑制的路由。

 

7.重分布汇总路由

(1)在R4上创建静态路由并重分布进BGP

r4(config)#ip route 100.1.0.0 255.255.252.0 null 0

r4(config)#router bgp 4

r4(config-router)#redistribute static

说明:手工创建静态路由方式的汇总路由,并指向null 0以防止路由黑洞。手工创建的默认路由是不能被重分布进BGP的。

 

(2)在R5上查看路由表

r5#sh ip bgp

BGP table version is 35, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 ?

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

R5

说明:R5已经收到重分布进的汇总路由信息。

                                                                    返回目录


BGP 默认路由

BGP的默认路由只能创建,而不能通过静态重分布。创建默认路由,可以选择对所有邻居生效,也可以只针对某个邻居发布默认路由。

 

配置BGP 默认路由

说明:以上个实验环境为基础,继续BGP 默认路由的实验。

 

1.创建BGP默认

(1)在R4上发布BGP默认路由

r4(config)#router bgp 4

r4(config-router)#default-information originate

说明:没有指定邻居,则向所有邻居通告默认路由。

(2)在R5上查看默认路由

r5#sh ip bgp

BGP table version is 37, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 0.0.0.0          4.4.4.4                  0             0 4 ?

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 ?

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

*> 200.0.0.0/8      4.4.4.4                  0             0 4 ?

r5#

说明:R5收到R4发来的默认路由。

(3)只对单个邻居发送默认路由

r4(config-router)#neighbor 5.5.5.5 default-originate

说明:此邻居包含邻居,即可针对单个邻居通告默认路由。

 

                                                                   返回目录


BGP 路由过滤

对于在BGP中过滤路由,可以有多种方法,比如通过利用access-list或prefix-list来匹配中特定路由,然后在BGP进程中使用,可以针对所有邻居使用,也可以针对特定邻居使用。

因为BGP的路由通常会携带AS_Path,所以除了根据路由的IP来过滤之外,还可以根据路由携带的AS_Path来过滤,要匹配路由的AS_Path,需要使用Regular Expressions (正则表达式)来匹配AS特征,对于Regular Expressions (正则表达式)的匹配规则如下:

 

. 任何一个单一字符,包括空格

* 字符或模式出现0次或多次

^ 一行的开始

_ 类似于逗号

$ 一行的结束

 

 

举例:

 

.*

表示匹配任意

 

^123$

表示只匹配AS 123

 

^$

表示没有经过任何AS,即本地AS的路由

 

^12[0-3]$

表示匹配 120  121  122  123

 

^12.

表示匹配 12 ,120 – 129 开始的AS号

 

_12_

表示匹配经过了AS 12的路由

 

 

 

配置BGP 路由过滤

说明:以上个实验环境为基础,继续BGP 路由过滤的实验。

1.配置R5使用As-path filter路由过滤

(1)查看R5当前路由情况

r5#sh ip bgp

BGP table version is 13, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.0.0/22     4.4.4.4                  0             0 4 {1,6} i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:R5当前拥有所有网段的路由。

 

(2)只收起源于AS 6的路由,过滤其它所有路由

r5(config)#ip as-path access-list 5 permit ^6$

 

r5(config)#router bgp 5

r5(config-router)#neighbor 4.4.4.4 filter-list 5 in

说明:R5方向应用As-path filter

 

(3)查看过滤后的路由情况

r5#sh ip bgp

BGP table version is 22, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

r5#

说明:除了自己本地路由之外,没有收到任何路由,因为^6$不与任何路由匹配,并不表示为起源于AS 6的路由。

 

(3)改写起源于AS 6的路由

r5(config)#ip as-path access-list 55 permit _6$

r5(config)#router bgp 5 

r5(config-router)#neighbor 4.4.4.4 filter-list 55 in

说明:起源于AS 6的路由格式应该为_6$,因为AS的方向问题,并且符合_可以表示逗号的意思。

 

(4)查看正确过滤后的路由情况

r5#sh ip bgp

BGP table version is 19, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:使用As-path filter过滤路由成功,只有起源于AS 6的路由。

 

 

2.在R4上配置distribute-list路由过滤

(1)配置全局过滤路由

r4(config)#access-list 2 permit 100.1.2.0

 

r4(config)#router bgp 4

r4(config-router)#distribute-list 2 in

说明:该方式配置全局过滤路由,只接收100.1.2.0的路由。

(2)查看过滤后的路由情况

 

r4#sh ip bgp 

BGP table version is 9, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 100.1.0.0/22     0.0.0.0                       100  32768 {1,6} i

*> 100.1.2.0/24     6.6.6.6                  0             0 6 i

r4#

说明:除了本地路由外,只接收到100.1.2.0的路由,说明路由过滤成功。

 

(3)针对单个邻居过滤路由

r4(config)#router bgp 4

r4(config-router)#no distribute-list 2 in

r4(config-router)#neighbor 6.6.6.6 distribute-list 2 in

说明:配置过滤路由只针对某个邻居R6生效。

 

(4)查看过滤后的路由情况

r4#sh ip bgp 

BGP table version is 9, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 i

*> 33.3.3.0/24      3.3.3.3                  0             0 1 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

*> 100.1.0.0/22     0.0.0.0                       100  32768 {1,6} i

*  100.1.1.0/24     3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 100.1.2.0/24     6.6.6.6                  0             0 6 i

r4#

说明:只从R6收到100.1.2.0的路由,说明针对单个邻居过滤路由生效。

                                                                    返回目录

 
BGP条件路由

BGP可以使用有条件的路由,通过定义某个条件,来限制路由的发送。

配置BGP条件路由后,只有当定义的条件满足时,相应的路由才会被通告给邻居,否则是被抑制的。

BGP条件路由通过两个route-map来实现,advertise map 和exist map,定义route-map中的路由,可以使用access list或IP prefix list,配置完之后,BGP会跟踪exist map中的路由,只有相应路由存在BGP路由表中时,advertise map 中的路由才会被通告给邻居,否则是被抑制的。

路由的条件除了存在路由表中外,还可以是消失于路由表中,需要nonexist map来定义,而advertise map保持不变。

需要重点说明的是,BGP条件路由为IOS中一个不稳定的技术,效果并不明显,也不稳定,所以使用中请仔细斟酌并小心使用,否则会有预料之外的效果。

 

 

配置BGP 条件路由

说明:以上个实验环境为基础,继续BGP条件路由的实验。

配置R4只有当100.1.2.0存在于BGP路由表时,才向邻居5.5.5.5通告11.1.1.0。

 

 

1.配置BGP 条件路由

(1)查看R5当前路由情况

r5#sh ip bgp 

BGP table version is 9, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:R5当前拥有全部路由,包括11.1.1.0。

 

(2)查看R4当前路由情况

r4#sh ip bgp

BGP table version is 20, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 i

*> 33.3.3.0/24      3.3.3.3                  0             0 1 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

*> 66.6.6.0/24      6.6.6.6                  0             0 6 i

*  100.1.1.0/24     3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 100.1.2.0/24     6.6.6.6                  0             0 6 i

*> 100.1.3.0/24     6.6.6.6                  0             0 6 i

r4#

说明:R4当前拥有全部路由,包括11.1.1.0和100.1.2.0。

 

(3)在R4上配置BGP 条件路由

r4(config)#access-list 11 permit 11.1.1.0

r4(config)#access-list 2 permit 100.1.2.0

 

r4(config)#route-map adv permit 10

r4(config-route-map)#match ip address 11

r4(config-route-map)#exit

 

r4(config)#route-map exi permit 10

r4(config-route-map)#match ip address 2

 

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 advertise-map adv exist-map exi

说明:配置只有当100.1.2.0存在于BGP路由表时,才向邻居5.5.5.5通告11.1.1.0。

 

(4)测试使100.1.2.0消失

r6(config)#router bgp 6

r6(config-router)#no network 100.1.2.0 mask 255.255.255.0

说明:使100.1.2.0消失。

 

(5)查看R4的BGP路由情况

r4#sh ip bgp

BGP table version is 21, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 i

*> 33.3.3.0/24      3.3.3.3                  0             0 1 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

*> 66.6.6.0/24      6.6.6.6                  0             0 6 i

*  100.1.1.0/24     3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 100.1.3.0/24     6.6.6.6                  0             0 6 i

r4#

说明:100.1.2.0已经从BGP路由表中消失。

 

(6)查看R5的BGP路由情况

r5#sh ip bgp

BGP table version is 23, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:由于路由100.1.2.0的消失,所以11.1.1.0被抑制,导致R5没有收到11.1.1.0。

                                                                    返回目录

 
BGP Peer Group

BGP的配置中可以看到,在配置邻居时,需要使用多条命令指定多个参数,比如AS号码,BGP更新源地址,TTL等等,才能够配置一个正常的邻居;而BGP是使用在大型网络中的,这就意味着一台BGP路由器将要使用许许多多的命令来完成邻居的建立,而这其中势必会有许多邻居都拥有相同的配置参数。

为了能够简化BGP对邻居的参数配置,BGP使用了Peer Group的概念,BGP的Peer Group就相当于是一个容器,这个容器拥有着BGP参数和策略,只要将BGP邻居放入这个容器中,那么该邻居即可获得容器的所有参数和策略,从而大大简化为每个邻居重复配置相同参数和策略。

BGP的Peer Group创建之后,就可以为其配置参数,所有可以为邻居配置的一切参数,都可以为Peer Group配置,在配置了Peer Group之后,就可以不必再为每个邻居一一配置参数,只要将邻居划入Peer Group即可,对Peer Group配置的参数会对Peer Group中所有邻居生效。

在使用普通方式配置BGP邻居时,假如配置一个特定的邻居需要4条命令,那么配置10个邻居就需要40条命令,在使用Peer Group时,创建Peer Group使用1条命令,再使用4条命令为Peer Group配置参数,最后再使用10条命令将10个邻居全部划入Peer Group,可以看出,使用Peer Group配置10个邻居所使用的15条命令,远远少于使用普通方式的40条命令,从而体现出使用Peer Group对配置BGP工作量的简化是相当明显的。

除了可以对Peer Group配置各种参数外,各种可以为邻居配置的属性和策略,也完全可以对Peer Group进行配置。

Peer Group唯一的限制就是,同一个Peer Group中的所有邻居,必须全部为iBGP邻居,或者全部为eBGP邻居,也就是说不能将iBGP邻居和eBGP邻居同时混杂在同一个Peer Group中,但是如果全部都为eBGP邻居,这些邻居可以是任意AS的,而不必所有邻居都是同一个AS的。

在使用Peer Group配置邻居后,可以对Peer Group配置参数和策略,也可以对Peer Group中的单个邻居配置参数和策略,如果对单个邻居配置,那么配置只对单个特定的邻居生效,而不影响Peer Group中其它邻居,所以在使用Peer Group配置减少工作量的同时,也能保证邻居策略的多样化。

 

 

配置BGP Peer Group

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

因为R1拥有多个BGP邻居,所以使用BGP Peer Group的方式来配置R1,从而简化工作量。

1.IGP保证全网Loopback 0互通

说明:使用IGP协议OSPF来保证全网Loopback 0互通,从而使用Loopback 0来传递BGP信息。

(1)测试全网Loopback 0连通性:

r1#ping 2.2.2.2 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 72/126/192 ms

r1#ping 3.3.3.3 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/99/192 ms

r1#

r1#ping 4.4.4.4 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/70/152 ms

r1#

r1#ping 5.5.5.5 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:

Packet sent with a source address of 1.1.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/129/196 ms

r1#

说明:所有路由器之间的Loopback 0通信正常。

 

2.使用Peer Group配置R1

(1)使用Peer Group配置同AS内的iBGP邻居

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor as1 peer-group

r1(config-router)#neighbor as1 remote-as 1

r1(config-router)#neighbor as1 update-source loopback 0

r1(config-router)#neighbor 2.2.2.2 peer-group as1

r1(config-router)#neighbor 3.3.3.3 peer-group as1

说明:创建Peer Group为as1 ,配置as1中的邻居为as 1,更新时使用地址为Loopback0的地址,然后将邻居2.2.2.2和3.3.3.3放入Peer Group(as1)中。

 

 

(2)使用Peer Group配置不同AS内的eBGP邻居

r1(config)#router bgp 1

r1(config-router)#neighbor as45 peer-group

r1(config-router)#neighbor as45 update-source loopback 0

r1(config-router)#neighbor as45 ebgp-multihop

 

r1(config-router)#neighbor 4.4.4.4 remote-as 4

r1(config-router)#neighbor 4.4.4.4 peer-group as1

% Peer with AS 4 cannot be in this peer-group, members must be all internal or all external  (报错提示)

r1(config-router)#neighbor 4.4.4.4 peer-group as45

 

r1(config-router)#neighbor 5.5.5.5 remote-as 5         

r1(config-router)#neighbor 5.5.5.5 peer-group as1

% Peer with AS 5 cannot be in this peer-group, members must be all internal or all external  (报错提示)

r1(config-router)#neighbor 5.5.5.5 peer-group as45

r1(config-router)#

 

说明:创建Peer Group为as45 ,配置as45更新时使用地址为Loopback0的地址,指定TTL为255,但并没有指定as45中的邻居AS,因为并不是所有eBGP邻居都在同一AS,所以需要单独为各个邻居指定AS之后,才将邻居放入Peer Group(as1)中,也可以看见,在指定邻居为其它AS之后,就不可能再放入本AS的Peer Group中,否则有如上报错信息。

 

3.使用普通方式配置其它BGP路由器

(1)使用普通方式配置R2

r2(config)#router bgp 1

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

r2(config-router)#neighbor 1.1.1.1 up loopback 0

r2(config-router)#network 22.2.2.0 mask 255.255.255.0

说明:正常配置R2,并发布相应网段,以做测试用。

 

(2)使用普通方式配置R3

r3(config)#router bgp 1

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#neighbor 1.1.1.1 remote-as 1

r3(config-router)#neighbor 1.1.1.1 up loopback 0

r3(config-router)#network 33.3.3.0 mask 255.255.255.0

说明:正常配置R3,并发布相应网段,以做测试用。

 

 

(3)使用普通方式配置R4

r4(config)#router bgp 4

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#neighbor 1.1.1.1 remote-as 1

r4(config-router)#neighbor 1.1.1.1 up loopback 0

r4(config-router)#neighbor 1.1.1.1 ebgp-multihop

r4(config-router)#network 44.4.4.0 mask 255.255.255.0

说明:正常配置R4,并发布相应网段,以做测试用。

 

(4)使用普通方式配置R5

r5(config)#router bgp 5

r5(config-router)#bgp router-id 5.5.5.5

r5(config-router)#neighbor 1.1.1.1 remote-as 1

r5(config-router)#neighbor 1.1.1.1 update-source loopback 0

r5(config-router)#neighbor 1.1.1.1 ebgp-multihop

r5(config-router)#network 55.5.5.0 mask 255.255.255.0

说明:正常配置R5,并发布相应网段,以做测试用。

 

4.查看结果

(1)查看BGP邻居状态

r1#sh ip bgp summary

BGP router identifier 1.1.1.1, local AS number 1

BGP table version is 5, main routing table version 5

4 network entries using 516 bytes of memory

4 path entries using 208 bytes of memory

4/3 BGP path/bestpath attribute entries using 496 bytes of memory

2 BGP AS-PATH entries using 48 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1268 total bytes of memory

BGP activity 4/0 prefixes, 4/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4     1       8       9        5    0    0 00:03:01        1

3.3.3.3         4     1       7       8        5    0    0 00:02:18        1

4.4.4.4         4     4       6       7        4    0    0 00:01:15        1

5.5.5.5         4     5       5       6        4    0    0 00:00:28        1

r1#

说明:在R1上可以看见,所有BGP邻居均已正常建立。

 

(2)查看BGP路由情况

r1#sh ip bgp

BGP table version is 5, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

r1#

说明:已经学习到所有BGP路由。

 

5.测试邻居参数

(1)修改对Peer Group的参数配置

r1(config)#router bgp 1

r1(config-router)#neighbor as1 weight 111

说明:将Peer Group “as1”的weight值改为111,将对Peer Group中所有邻居生效。

(2)查看修改结果

r1#sh ip bgp

BGP table version is 7, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i22.2.2.0/24      2.2.2.2                  0    100    111 i

*>i33.3.3.0/24      3.3.3.3                  0    100    111 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

r1#

说明:对Peer Group修改的参数已对Peer Group中所有邻居生效。

(3)修改单个邻居的参数配置

r1(config)#router bgp 1

r1(config-router)#neighbor 5.5.5.5 weight 5

说明:将Peer Group “as45”的中邻居5.5.5.5的weight值改为5,此改动只对Peer Group中的单个邻居生效,而不会影响其它邻居。

 

(4)查看修改结果

r1#sh ip bgp

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i22.2.2.0/24      2.2.2.2                  0    100    111 i

*>i33.3.3.0/24      3.3.3.3                  0    100    111 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      5.5.5.5                  0             5 5 i

r1#

说明:Peer Group中单个邻居修改的参数,只对Peer Group中单个邻居生效,而不影响其它邻居。

                                                                   返回目录


BGP Community

BGP Community只是BGP路由可以携带的一种属性,是BGP中的一个可选可传递属性(Optional Transitive),所以可以选择为路由配置Community,也可以不配,如果配置,Community需要明确要求BGP路由器保留和传递该属性,否则邻居收不到路由的Community属性。

都知道Peer Group是用来简化BGP邻居配置的,而BGP Community则可以简化BGP路由在某方面的配置。对于Community 属性,它只是BGP路由中携带的一个标签而已,可以分成不同的类别,分为众所周知的Community和私有Community,也可以分为标准Community和扩展Community(Extended  Community),它们的区别如下:

 

众所周知的Community

众所周知的Community被所有BGP路由器认识和理解,并且必须对携带众所周知的Community的路由做相应的操作,BGP拥有4个预先定义的众所周知的Community,分别为

no-export—不将路由发给任何eBGP邻居,也就是只能将该路由在本AS内部传递。

no-advertise—不将路由发给任何BGP邻居。

internet—可以将路由发给任何BGP邻居。

local-as—同no-export,即不将路由发到AS外。

 

注:众所周知的Community为固定格式,不可自定义,只能使用预定义的格式。

 

 

 

私有Community

私有Community可以理解为BGP路由的自定义标签,所以可以通过为BGP路由配置私有Community来配置任何自定义的标签,该标签可以在任何时候被利用。例如一台BGP路由器为某个Community标签配置策略后,那么所有携带该Community标签的路由都将获得相应策略。

在正常情况下,BGP路由器要对某些一定范围内的路由配置策略,必须使用prefix list或 access list将所有符合条件的路由匹配出来,然后调用之后再配置相应策略,如果是网络中所有路由器都要对这些路由设置策略,那么就必须在网络中每台设备上单独使用大量重复的配置将路由匹配出来,再做相应策略,工作烦琐并且容易出错,而在使用私有Community之后,就可以将特定的路由设置私有Community,并将其传递给所有邻居,最终所有路由器都对拥有该私有Community的路由配置策略,并且对大量路由设置私有Community只需要在一台路由器上完成后,发给所有邻居即可,可见私有Community可以减少网络中路由器对相同路由的匹配工作,这就是标签的效果。

私有Community的类型为数字,长度为32bit,但被分为两种格式:

单个32bit,如123,666

或者2字节长度的AS号码加两字节普通数字,称为AS:NN格式,范围为1:0 至 65534:65535。

默认路由器支持单个32bit格式,若要支持AS:NN格式,必须开启BGP-Community New-Format功能。

 

标准Community

标准Community就是普通路由可以设置的Community,包括上面提到的众所周知Community和私有Community。

 

扩展Community(Extended  Community)

扩展Community为MPLS中的VRF路由传递所定义的,在MPLS中有所解释。

注:BGP Community必须明确要求传递,否则邻居收不到相应Community。

 

要匹配携带Community的路由,方法为使用Community List,并且有数字list和命名list两种,每两条语句之间相隔10,以10递增,一组数字list最多支持100条语句,而命名list则不受此限制,但并不是所有IOS都支持命名list。在使用Community List匹配指定路由条目后,则可使用route-map来调用Community List,从而为指定路由设置相应参数和策略,最终应用该route-map。

 

注:Community可以传递的距离不受限制,邻居可以再传给其它邻居,Community可以被多个路由器多次使用。

 

 

配置BGP Community

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

R6  Loopback 0  6.6.6.6/32      Loopback 66  66.6.6.6/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

1.IGP保证全网Loopback 0互通

说明:此步略,请参见之前配置。

 

2.基础BGP配置

说明:此步略,请参见之前配置。

 

3.测试no-export

说明:在R5上将路由55.5.5.0/24设置no-export后传递给R4,由于带no-export的路由不能传递给任何eBGP邻居,所以R6将无法收到R4转发的55.5.5.0/24。

(1)查看R4的BGP路由

r4#sh ip bgp

BGP table version is 11, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 22.2.2.0/24      2.2.2.2                  0             0 1 i

*> 33.3.3.0/24      3.3.3.3                  0             0 1 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

*> 66.6.6.0/24      6.6.6.6                  0             0 6 i

*  100.1.1.0/24     3.3.3.3                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 100.1.2.0/24     6.6.6.6                  0             0 6 i

*> 100.1.3.0/24     6.6.6.6                  0             0 6 i

r4#

说明:R4拥有全部的路由,其中包括R5发来的所有路由。

 

(2)查看R6的BGP路由

r6#sh ip bgp

BGP table version is 156, local router ID is 6.6.6.6

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      4.4.4.4                                0 4 5 i

*> 66.6.6.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     0.0.0.0                  0         32768 i

*> 100.1.3.0/24     0.0.0.0                  0         32768 i

r6#

说明:R4已将自己的全部路由发给R6。

 

(3)R5将自己的路由55.5.5.0/24设置no-export后发给R4

r5(config)#access-list 55 permit 55.5.5.0

 

r5(config)#route-map noe permit 10

r5(config-route-map)#mat ip address 55

r5(config-route-map)#set community no-export

r5(config-route-map)#exit

r5(config)#route-map noe permit 20

r5(config-route-map)#exit

 

r5(config)#router bgp 5

r5(config-router)#neighbor 4.4.4.4 route-map noe out

r5(config-router)#neighbor 4.4.4.4 send-community

说明:R5已将自己的路由55.5.5.0/24设置no-export,并且指示将community传给R4。

 

(4)查看R4收到的带community的路由

r4#sh ip bgp community       

BGP table version is 12, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

r4#

说明:R4已经收到R5发来的带community的路由。

 

(5)查看R4收到的带community的路由

r4#sh ip bgp 55.5.5.0        

BGP routing table entry for 55.5.5.0/24, version 12

Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to EBGP peer)

Flag: 0x880

  Not advertised to any peer

  5

    5.5.5.5 (metric 65) from 5.5.5.5 (5.5.5.5)

      Origin IGP, metric 0, localpref 100, valid, external, best

      Community: no-export

r4#

说明:R4收到的路由55.5.5.0/24的community为no-export,也就是不将该路由传给任何eBGP邻居。

 

(6)查看R4的eBGP邻居R6的路由情况

r6#sh ip bgp

BGP table version is 157, local router ID is 6.6.6.6

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 66.6.6.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     0.0.0.0                  0         32768 i

*> 100.1.3.0/24     0.0.0.0                  0         32768 i

r6#

说明:因为R4的路由55.5.5.0/24的community为no-export,也就是不将该路由传给任何eBGP邻居,所以R6没有收到55.5.5.0/24。

 

4.测试no-advertise

说明:在R4上将路由44.4.4.0/24设置no-advertise后传递给R2,由于带no-advertise的路由不能传递给任何BGP邻居,所以R1将无法收到R2转发的44.4.4.0/24。

 

(1)查看R2的BGP路由

r2#sh ip bgp

BGP table version is 124, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*>i100.1.1.0/24     1.1.1.1                  0    100      0 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r2#

说明:R2拥有全部的路由,其中包括R4发来的所有路由。

 

(2)查看R1的BGP路由

r1#sh ip bgp

BGP table version is 186, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*>i44.4.4.0/24      2.2.2.2                  0    100      0 4 i

* i                 3.3.3.3                  0    100      0 4 i

*>i66.6.6.0/24      2.2.2.2                  0    100      0 4 6 i

* i                 3.3.3.3                  0    100      0 4 6 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

* i100.1.2.0/24     3.3.3.3                  0    100      0 4 6 i

*>i                 2.2.2.2                  0    100      0 4 6 i

*>i100.1.3.0/24     2.2.2.2                  0    100      0 4 6 i

* i                 3.3.3.3                  0    100      0 4 6 i

r1#

说明:R2已将自己的全部路由发给R1。

 

(3)R4将自己的路由44.4.4.0/24设置no-advertise后发给R2

r4(config)#access-list 44 permit 44.4.4.0

 

r4(config)#route-map noa permit 10

r4(config-route-map)#match ip address 44

r4(config-route-map)#set community no-advertise

r4(config-route-map)#exit

r4(config)#route-map noa permit 20   

r4(config-route-map)#exit

 

r4(config)#router bgp 4

r4(config-router)#neighbor 2.2.2.2 route-map noa out

r4(config-router)#neighbor 2.2.2.2 send-community

说明:R4已将自己的路由44.4.4.0/24设置no-advertise,并且指示将community传给R2。

 

 

(4)查看R2收到的带community的路由

r2#sh ip bgp community

BGP table version is 125, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

r2#

说明:R2已经收到R4发来的带community的路由。

 

 

(5)查看R2收到的带community的路由

r2#sh ip bgp 44.4.4.0

BGP routing table entry for 44.4.4.0/24, version 125

Paths: (1 available, best #1, table Default-IP-Routing-Table, not advertised to any peer)

Flag: 0x880

  Not advertised to any peer

  4

    4.4.4.4 (metric 2) from 4.4.4.4 (4.4.4.4)

      Origin IGP, metric 0, localpref 100, valid, external, best

      Community: no-advertise

r2#

说明:R2收到的路由44.4.4.0/24的community为no-advertise,也就是不将该路由传给任何BGP邻居。

 

(6)查看R2的邻居R1的路由情况

r1#sh ip bgp

BGP table version is 187, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*>i44.4.4.0/24      3.3.3.3                  0    100      0 4 i

*>i66.6.6.0/24      2.2.2.2                  0    100      0 4 6 i

* i                 3.3.3.3                  0    100      0 4 6 i

*> 100.1.1.0/24     0.0.0.0                  0         32768 i

* i100.1.2.0/24     3.3.3.3                  0    100      0 4 6 i

*>i                 2.2.2.2                  0    100      0 4 6 i

*>i100.1.3.0/24     2.2.2.2                  0    100      0 4 6 i

* i                 3.3.3.3                  0    100      0 4 6 i

r1#

说明:因为R2的路由44.4.4.0/24的community为no-advertise,也就是不将该路由传给任何邻居,所以R1没有收到R2发来的44.4.4.0/24。

 

 

 

5.测试普通私有Community

说明:私有Community的功能为路由标签,通过利用Community标签来匹配路由。

 

 

(1)R4将100.0.0.0/8的全部路由的Community设置为 123,并发给R5

r4(config)#access-list 10 permit 100.0.0.0 0.255.255.255

 

r4(config)#route-map com permit 10

r4(config-route-map)#match ip address 10

r4(config-route-map)#set community 123

r4(config-route-map)#exit

r4(config)#route-map com permit 20

r4(config-route-map)#exit

 

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 route-map com out

r4(config-router)#neighbor 5.5.5.5 send-community

说明:R4将100.0.0.0/8的全部路由的Community设置为 123,并发给R5

 

(2)查看R5收到的带community的路由

r5#sh ip bgp community

BGP table version is 41, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:R4收到的带community的路由为全部100.0.0.0/8。

 

(3)查看R5的community的路由情况

r5#sh ip bgp 100.1.1.0

BGP routing table entry for 100.1.1.0/24, version 39

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Flag: 0x880

  Not advertised to any peer

  4 1

    4.4.4.4 (metric 65) from 4.4.4.4 (4.4.4.4)

      Origin IGP, localpref 100, valid, external, best

      Community: 123

r5#

说明:R4收到的路由100.0.0.0/8的community为123

 

 

(4)查看R5当前BGP路由情况

r5#sh ip bgp

BGP table version is 41, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 4 6 i

r5#

说明:R5当前BGP路由正常,包括10.0.0.0/8。

 

(5)R5将所有community为123的路由的weight值改为123

r5(config)#ip community-list 5 permit 123

 

r5(config)#route-map wei permit 10

r5(config-route-map)#match community 5

r5(config-route-map)#set weight 123

r5(config-route-map)#exit

r5(config)#route-map wei permit 20

r5(config-route-map)#exit

 

r5(config)#router bgp 5

r5(config-router)#neighbor 4.4.4.4 route-map wei in

说明:R5上community-list匹配community为123的路由,并将weight值改为123。

 

(6)查看R5修改后的路由情况

r5#sh ip bgp

BGP table version is 44, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 4 6 i

*> 100.1.1.0/24     4.4.4.4                              123 4 1 i

*> 100.1.2.0/24     4.4.4.4                              123 4 6 i

*> 100.1.3.0/24     4.4.4.4                              123 4 6 i

r5#

说明:community为123的路由100.0.0.0/8的weight值已被改为123。

 

 

6.测试AS:NN私有Community

(1)R4将100.0.0.0/8的全部路由的Community设置为 4:123,并发给R5

 

r4(config)#access-list 10 permit 100.0.0.0 0.255.255.255

 

r4(config)#route-map com2 permit 10

r4(config-route-map)#match ip address 10

r4(config-route-map)#set community 4:123

r4(config-route-map)#exit

r4(config)#route-map com2 permit 20

r4(config-route-map)#exit

 

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 route-map com2 out

r4(config-router)#neighbor 5.5.5.5 send-community

 

说明:R4将100.0.0.0/8的全部路由的Community设置为4: 123,并发给R5,

 

(2)如果双方不做如下配置,则Community格式不是AS:NN:

r4(config)#ip bgp-community new-format

r5(config)#ip bgp-community new-format

 

r5#sh ip bgp 100.1.1.0

BGP routing table entry for 100.1.1.0/24, version 11

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Flag: 0x880

  Not advertised to any peer

  4 1

    4.4.4.4 (metric 65) from 4.4.4.4 (4.4.4.4)

      Origin IGP, localpref 100, valid, external, best

      Community: 262267

r5#

说明:不配置bgp-community new-format,格式不为AS:NN。

 

 

(3)配置bgp-community new-format后,格式为AS:NN:

r5#sh ip bgp 100.1.1.0    

BGP routing table entry for 100.1.1.0/24, version 11

Paths: (1 available, best #1, table Default-IP-Routing-Table)

  Not advertised to any peer

  4 1

    4.4.4.4 (metric 65) from 4.4.4.4 (4.4.4.4)

      Origin IGP, localpref 100, valid, external, best

      Community: 4:123

r5#

说明:双方配置bgp-community new-format后,Community变为 4:123,即为AS:NN格式。

 

 

7.测试错误AS号码下的BGP邻居

说明:当在指定BGP邻居时,如果AS号码错误,可以通过AS欺骗的形式来建立邻居。

(1)在R5上配置BGP

r5(config)#router bgp 5

r5(config-router)#bgp router-id 5.5.5.5

r5(config-router)#neighbor 4.4.4.4 remote-as 100

r5(config-router)#neighbor 4.4.4.4 up loopback 0

r5(config-router)#neighbor 4.4.4.4 ebgp-multihop

r5(config-router)#network 55.5.5.0 mask 255.255.255.0

说明:邻居4.4.4.4应该是AS 4的,而R5错指为100。

 

(2)在R4上配置AS 欺骗

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 remote-as 5

r4(config-router)#neighbor 5.5.5.5 update-source loopback 0

r4(config-router)#neighbor 5.5.5.5 ebgp-multihop

r4(config-router)#neighbor 5.5.5.5 local-as 100

说明:R4将自己针对邻居5.5.5.5的AS改为100,以建立BGP邻居。

 

(3)查看R5的BGP邻居

r5#sh ip bgp summary

BGP router identifier 5.5.5.5, local AS number 5

BGP table version is 10, main routing table version 10

9 network entries using 1161 bytes of memory

9 path entries using 468 bytes of memory

5/4 BGP path/bestpath attribute entries using 620 bytes of memory

3 BGP AS-PATH entries using 72 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 2321 total bytes of memory

BGP activity 9/0 prefixes, 9/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

4.4.4.4         4   100      10       7       10    0    0 00:00:34        8

r5#

说明:可以看到,R5已经与R4建立邻居关系,并且认为对方是AS 100。

 

 

(4)查看R5的BGP路由

r5#sh ip bgp

BGP table version is 10, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 100 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 100 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 100 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 100 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 100 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 100 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 100 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 100 4 6 i

r5#

说明:R4在将所有路由发给R5时,除了原有的所有真正AS外,虚假AS 100也被添加进了AS_Path中,用以欺骗R5。

 

(5)查看R6的BGP路由

r6#sh ip bgp

BGP table version is 158, local router ID is 6.6.6.6

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      4.4.4.4                                0 4 100 5 i

*> 66.6.6.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     0.0.0.0                  0         32768 i

*> 100.1.3.0/24     0.0.0.0                  0         32768 i

r6#

说明:于R4与R5之间的虚假AS 100,在将路由发给R6时,这个AS同样存在。

  

(6)在AS_Path中移除虚假AS 100

r4(config)#router bgp 4

r4(config-router)#neighbor 5.5.5.5 local-as 100 no-prepend

说明:指定虚假AS 100不添加在AS_Path中。

 

(7)再次查看R5的BGP路由表

r5#sh ip bgp

BGP table version is 26, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 100 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 100 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 100 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 100 4 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

*> 66.6.6.0/24      4.4.4.4                                0 100 4 6 i

*> 100.1.1.0/24     4.4.4.4                                0 100 4 1 i

*> 100.1.2.0/24     4.4.4.4                                0 100 4 6 i

*> 100.1.3.0/24     4.4.4.4                                0 100 4 6 i

r5#

说明:对于R5来说,虚假的AS 100无法去除,因为对方邻居指定为100,如果AS_Path中没有AS 100,则会有错误。

 

(8)再次查看R6的BGP路由

 

r6#sh ip bgp

BGP table version is 160, local router ID is 6.6.6.6

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      4.4.4.4                                0 4 1 i

*> 22.2.2.0/24      4.4.4.4                                0 4 1 i

*> 33.3.3.0/24      4.4.4.4                                0 4 1 i

*> 44.4.4.0/24      4.4.4.4                  0             0 4 i

*> 55.5.5.0/24      4.4.4.4                                0 4 5 i

*> 66.6.6.0/24      0.0.0.0                  0         32768 i

*> 100.1.1.0/24     4.4.4.4                                0 4 1 i

*> 100.1.2.0/24     0.0.0.0                  0         32768 i

*> 100.1.3.0/24     0.0.0.0                  0         32768 i

r6#

说明:在将路由发给与虚假AS 100不相关的邻居时,虚假AS 可以不添加到AS_Path中。

 

                                                                   返回目录

 
BGP Reflector(BGP反射器)

     

因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,导致一台BGP路由器从eBGP邻居收到路由时,发给iBGP邻居之后,iBGP邻居收到就不再传给其它任何iBGP邻居了,而只能传递给eBGP邻居,最终使得AS内部邻居过多时,很难保证每台路由器都能收到所有路由。

 

如上图环境中,R1从eBGP邻居R5收到路由后,可以传递给iBGP邻居R2,而R2为了防止环路,不能将从iBGP邻居R1收到的路由传递给iBGP邻居R3,最后导致BGP路由器R3和R4都不能拥有完整的BGP路由表。

为了解决AS内,不能将从iBGP邻居收到的路由发给iBGP邻居的问题,通过创建全互联的邻居关系,将所有iBGP邻居都与拥有eBGP邻居的路由器建立邻居。这种方法工作繁琐且消耗系统资源,如上图,需要所有路由器都与R1建立邻居,从而使R1成为单点故障。

除了创建全互联的BGP邻居关系外,还可以使用BGP Reflector(BGP反射器)的方式来将从iBGP邻居学习到的路由传递给其它iBGP邻居。

BGP Reflector可以将自己的任何BGP路由反射给自己的client,从而可以突破iBGP路由传递的限制,具体规则为:

★从eBGP邻居学习到的路由会发送给所有client和所有非client,也就是发给所有邻居。

★从非client学习到的路由将发送给所有client。

★从client学习到的路由将发送给所有client和所有非client,也就是发给所有邻居。

 

BGP Reflector和自己的Client称为一个cluster,如下图:

 

我们将R2配置为BGP Reflector,将R3配置为client,那么R2和R3就是一个cluster。在配置BGP Reflector时,只需要在Reflector上配置参数,而不需要在client做任何配置,所以client并不知道自己是client,因此一个cluster的client,同样还可以配置成另一个cluster的Reflector,类似于嵌套,如下图:

在Cluster 1中,R2为Reflector,R3为client,因为R3并不知道自己是client,所以又将R3配置成了Cluster 2中的Reflector,并将R4配置成为Cluster 2中的client。最终因为Reflector R2收到了R1的路由,将所有路由发给client R3,又因为R3也是Reflector,再将路由发给client R4,并将所有从R4的路由也发送给R2,最后所有路由器都拥有全网的路由。

 

一个AS中可以有多个Cluster,所以为了防止环路,引入了类似于AS_Path的技术,一个Cluster拥有一个唯一的Cluster ID,这个Cluster ID默认就是Reflector的Router-ID,也可以随意设置,并且一个Cluster中可以有多个Reflector互为备份,所以当一个Cluster中有多个Reflector时,Cluster ID必须手工设置。Reflector在将路由反射出去时,都会写入自己的Cluster ID,在路由发送到其它Cluster后,其它Reflector在写入自己的Cluster ID时,还会保留之前的Cluster ID,就像保留AS_Path一样,如果收到一条路由带有与自己相同的Cluster ID,就说明路由发回了原来的Cluster,则认为环路产生,将接收到的路由丢失,以此来防止环路。

除了Cluster ID外,路由还带有Originator ID,这个Originator ID是产生这条路由的路由器的Router-ID,发回起源路由器,也认为环路产生,则被丢弃。在路由是从别的AS发过来时,Originator ID就是AS边界接收的第一台BGP路由器。

 

配置BGP Reflector

 

 

以上图环境为例,配置BGP Reflector

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

1.IGP保证全网Loopback 0互通

说明:此步略,请参见之前配置。

 

2.全网配置BGP

(1)配置R5的BGP

r5(config)#router bgp 5

r5(config-router)#bgp router-id 5.5.5.5

r5(config-router)#neighbor 1.1.1.1 remote-as 1

r5(config-router)#neighbor 1.1.1.1 update-source loopback 0

r5(config-router)#neighbor 1.1.1.1 ebgp-multihop

r5(config-router)#network 55.5.5.0 mask 255.255.255.0

 

(2)配置R1的BGP

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor 5.5.5.5 remote-as 5

r1(config-router)#neighbor 5.5.5.5 update-source loopback 0

r1(config-router)#neighbor 5.5.5.5 ebgp-multihop

r1(config-router)#neighbor 2.2.2.2 remote-as 1

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

r1(config-router)#network 11.1.1.0 mask 255.255.255.0

 

(3)配置R2的BGP

r2(config)#router bgp 1

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

r2(config-router)#neighbor 3.3.3.3 remote-as 1

r2(config-router)#neighbor 3.3.3.3 update-source loopback 0

r2(config-router)#network 22.2.2.0 mask 255.255.255.0

 

(4)配置R3的BGP

r3(config)#router bgp 1

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#neighbor 2.2.2.2 remote-as 1

r3(config-router)#neighbor 2.2.2.2 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 remote-as 1

r3(config-router)#neighbor 4.4.4.4 update-source loopback 0

r3(config-router)#network 33.3.3.0 mask 255.255.255.0

 

(5)配置R4的BGP

r4(config)#router bgp 1

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#neighbor 3.3.3.3 remote-as 1

r4(config-router)#neighbor 3.3.3.3 update-source loopback 0

r4(config-router)#network 44.4.4.0 mask 255.255.255.0

 

 

3.查看BGP路由情况

(1)查看R5的BGP路由情况

r5#sh ip bgp

BGP table version is 4, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      1.1.1.1                  0             0 1 i

*> 22.2.2.0/24      1.1.1.1                                0 1 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

r5#

说明:因为R2无法将R3和R4的路由33.3.3.0和44.4.4.0发给R1,所以导致R5路由表不完整。

 

(2)查看R1的BGP路由情况

r1#sh ip bgp

BGP table version is 4, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

r1#

说明:因为R2无法将R3和R4的路由33.3.3.0和44.4.4.0发给R1,所以导致R1路由表不完整。

 

(3)查看R2的BGP路由情况

r2#sh ip bgp

BGP table version is 5, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i

r2#

说明:因为R3无法将R4的路由44.4.4.0发给R2,所以导致R2路由表不完整。

 

(4)查看R3的BGP路由情况

r3#sh ip bgp

BGP table version is 4, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*> 33.3.3.0/24      0.0.0.0                  0         32768 i

*>i44.4.4.0/24      4.4.4.4                  0    100      0 i

r3#

说明:R3只能收到R2和R4的直连路由。

 

 

(5)查看R4的BGP路由情况

r4#sh ip bgp

BGP table version is 3, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

r4#

说明:R4只能收到R3的直连路由。

 

4.配置BGP Reflector

(1)配置R2为BGP Reflector

r2(config)#router bgp 1

r2(config-router)#neighbor 3.3.3.3 route-reflector-client

说明:配置R2为BGP Reflector,R3为Client。

(2)查看R3的路由情况

r3#sh ip bgp

BGP table version is 8, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*> 33.3.3.0/24      0.0.0.0                  0         32768 i

*>i44.4.4.0/24      4.4.4.4                  0    100      0 i

*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i

r3#

说明:R2将R1和R5的路由都发来了,R3的路由表已经完整。

 

(3)查看R1的路由情况

r1#sh ip bgp

BGP table version is 5, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 55.5.5.0/24      5.5.5.5                  0             0 5 i

r1#

说明:因为从client学习到的路由将发送给所有client和所有非client,所以R1收到了R2发来的所有路由,但不包括R4的路由。

 

(4)查看R2的路由情况

r2#sh ip bgp

BGP table version is 7, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*> 22.2.2.0/24      0.0.0.0                  0         32768 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i

r2#

说明:因为R3不能将iBGP R4的路由发给任何iBGP邻居,所以R2也没有R4的路由。

 

 

(5)在R3上查看R4发来的路由44.4.4.0

r3#sh ip bgp 44.4.4.0

BGP routing table entry for 44.4.4.0/24, version 4

Paths: (1 available, best #1, table Default-IP-Routing-Table)

  Not advertised to any peer

  Local

    4.4.4.4 (metric 2) from 4.4.4.4 (4.4.4.4)

      Origin IGP, metric 0, localpref 100, valid, internal, best

r3#

说明:R4发给R3的路由为正常路由,所以没有不同。

 

(6)在R3上查看R2发来的路由55.5.5.0

r3#sh ip bgp 55.5.5.0

BGP routing table entry for 55.5.5.0/24, version 8

Paths: (1 available, best #1, table Default-IP-Routing-Table)

  Not advertised to any peer

  5

    5.5.5.5 (metric 4) from 2.2.2.2 (2.2.2.2)

      Origin IGP, metric 0, localpref 100, valid, internal, best

      Originator: 1.1.1.1, Cluster list: 2.2.2.2

r3#

说明:因为R2是Reflector,所以发出的路由带有Cluster ID,即为自己的Router-ID 2.2.2.2,还有个Originator ID,就是AS 边界第一台路由器R1的Router-ID。

 

(7)改变Reflector路由器R2对Client的下一跳属性

r2(config)#router bgp 1

r2(config-router)#neighbor 3.3.3.3 next-hop-self

 

(8)再次查看R3的路由情况

r3#sh ip bgp

BGP table version is 8, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*> 33.3.3.0/24      0.0.0.0                  0         32768 i

*>i44.4.4.0/24      4.4.4.4                  0    100      0 i

*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i

r3#

说明:可以看到,从R2反射过来的R5的路由55.5.5.0的下一跳还是R5,所以在Reflector环境中,下一跳属性是不能被改变的。

 

5.配置Cluster 2

(1)查看R4的路由情况

 

r4#sh ip bgp

BGP table version is 3, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

r4#

说明:由于R3不能将任何从iBGP接收到的路由发给R4,导致R4只有R3和R4两台路由器的路由。

 

(2)将R3配置为另一个Cluster的Reflector

r3(config)#router bgp 1

r3(config-router)#neighbor 4.4.4.4 route-reflector-client

说明:R3配置为Reflector,R4配置为Client。

 

(3)查看R4的路由情况

r4#sh ip bgp

BGP table version is 8, local router ID is 4.4.4.4

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*>i22.2.2.0/24      2.2.2.2                  0    100      0 i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      0.0.0.0                  0         32768 i

*>i55.5.5.0/24      5.5.5.5                  0    100      0 5 i

r4#

说明:R3将所有路由反射给client R4,最后R4拥有了全部的路由。

 

 

(4)查看R4从Reflector反射过来的路由信息

r4#sh ip bgp 55.5.5.0

BGP routing table entry for 55.5.5.0/24, version 8

Paths: (1 available, best #1, table Default-IP-Routing-Table)

  Not advertised to any peer

  5

    5.5.5.5 (metric 5) from 3.3.3.3 (3.3.3.3)

      Origin IGP, metric 0, localpref 100, valid, internal, best

      Originator: 1.1.1.1, Cluster list: 3.3.3.3, 2.2.2.2

r4#

说明:路由从一个cluster发到另外一个cluster,cluster ID会像AS_Path一样被保留累积。

 

 

(5)在R3上修改cluster ID

r3(config)#router bgp 1

r3(config-router)#bgp cluster-id 123

说明:R3上修改cluster ID为0.0.0.123。

 

(6)查看R4从Reflector反射过来的路由信息

r4#sh ip bgp 55.5.5.0

BGP routing table entry for 55.5.5.0/24, version 11

Paths: (1 available, best #1, table Default-IP-Routing-Table)

Flag: 0x800

  Not advertised to any peer

  5

    5.5.5.5 (metric 5) from 3.3.3.3 (3.3.3.3)

      Origin IGP, metric 0, localpref 100, valid, internal, best

      Originator: 1.1.1.1, Cluster list: 0.0.0.123, 2.2.2.2

r4#

说明:R3已经将cluster ID改为0.0.0.123。

                                                                   返回目录

 
BGP Confederation(BGP联邦)

为了解决由于从iBGP邻居收到的路由不能转发给其它iBGP邻居的限制问题,除了可以使用在iBGP邻居之间创建全互联的邻居关系和使用BGP Reflector之外,还可以使用BGP Confederation(BGP联邦)。

因为只有从iBGP邻居收到的路由才不能转发给其它iBGP邻居,而从eBGP邻居收到的路由可以转发给任何邻居,包括iBGP邻居,所以在拥有多个路由器的大型AS中,BGP Confederation采用在AS内部建立多个子AS的方法,从而将一个大的AS分割成多个小型AS,让AS内部拥有足够数量的eBGP邻居关系来解决路由限制问题。

         如下图

在上图中,当R3从iBGP邻居R1收到路由后,不能再转发给iBGP邻居R4,而R2从eBGP邻居R5收到R1的路由后,因为拥有自己的AS号码,最后将路由丢弃而不转发给R4,最终造成R4拥有不完整的路由表,同样R3也像R4一样不能拥有完整的路由表。

对于上述问题,可以创建全互联的BGP邻居关系,或者在R3和R4上配置BGP Reflector的方法来解决。除此之外,还可以使用在AS内部创建BGP Confederation的方法来解决,如下:

 

在上图环境中,通过BGP Confederation的方式在R1与R3之间创建子AS 64512,而在R2与R4之间创建子AS 64513,这样一来,在R1将全部路由发给R3,以及R2将全部路由发给R4之后,

因为R3与R4是eBGP邻居的关系,所以R3与R4之间可以任意转发BGP路由信息,从而使双方都拥有完整的全网路由表。

在使用BGP Confederation在AS内部创建子AS时,建议使用私有AS号码,范围是64512-65534,所有BGP Confederation内部的子AS,对于外界都是不可见的,如上图中,R1与R2在AS 1中分别为AS 64512和AS 64513,但是对于R5来说,R1和R2都为AS 1的,而AS 64512和AS 64513对于R5来说是透明的,外界并不知道AS内部是否创建了BGP Confederation,对于子AS的号码只在AS内部传递路由时才会添加到AS_Path中去,在出AS时,这些子AS号码是不会写入AS_Path的。

 

注:

★在路径属性中,联邦内部的子AS是不被AS_Path计算在内的。

★在选路规则中,比较eBGP与iBGP邻居类型时,AS内部的子AS之间是不作eBGP与iBGP邻居类型比较的。

 

配置BGP Confederation

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32      Loopback 11  11.1.1.1/24

R2  Loopback 0  2.2.2.2/32      Loopback 22  22.2.2.2/24

R3  Loopback 0  3.3.3.3/32      Loopback 33  33.3.3.3/24

R4  Loopback 0  4.4.4.4/32      Loopback 44  44.4.4.4/24

R5  Loopback 0  5.5.5.5/32      Loopback 55  55.5.5.5/24

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

 

 

1.IGP保证全网Loopback 0互通

(1)配置OSPF

说明:此步略,请参见之前配置。

(2)测试全网Loopback 0连通性

r5#ping 1.1.1.1 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/114/228 ms

r5#ping 2.2.2.2 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/84/128 ms

r5#

r5#

r5#ping 3.3.3.3 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/106/180 ms

r5#ping 4.4.4.4 source loopback 0

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:

Packet sent with a source address of 5.5.5.5

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 48/124/224 ms

r5#

说明:全网Loopback 0连通性连通性正常。

 

 

2.配置BGP Confederation

(1)在R5上配置BGP

r5(config)#router bgp 5

r5(config-router)#bgp router-id 5.5.5.5

r5(config-router)#neighbor 1.1.1.1 remote-as 1

r5(config-router)#neighbor 1.1.1.1 update-source loopback 0

r5(config-router)#neighbor 1.1.1.1 ebgp-multihop

r5(config-router)#neighbor 2.2.2.2 remote-as 1

r5(config-router)#neighbor 2.2.2.2 update-source loopback 0

r5(config-router)#neighbor 2.2.2.2 ebgp-multihop

r5(config-router)#network 55.5.5.0 mask 255.255.255.0

说明:R5的配置常规不变。

 

(2)在R1上配置BGP Confederation

r1(config)#router bgp 64512

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#bgp confederation identifier 1

r1(config-router)#bgp confederation peers 64513

r1(config-router)#neighbor 5.5.5.5 remote-as 5

r1(config-router)#neighbor 5.5.5.5 update-source loopback 0

r1(config-router)#neighbor 5.5.5.5 ebgp-multihop

r1(config-router)#neighbor 2.2.2.2 remote-as 64513

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

r1(config-router)#neighbor 2.2.2.2 ebgp-multihop

r1(config-router)#neighbor 3.3.3.3 remote-as 64512

r1(config-router)#neighbor 3.3.3.3 update-source loopback 0

r1(config-router)#network 11.1.1.0 mask 255.255.255.0

说明:指定子AS为64512,而真正的AS为1,并指明与AS 64513同属一个AS,在联邦内部与R2为eBGP关系,与R3为iBGP关系。

 

(3)在R2上配置BGP Confederation

r2(config)#router bgp 64513

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#bgp confederation identifier 1  

r2(config-router)#bgp confederation peers 64512

r2(config-router)#neighbor 5.5.5.5 remote-as 5

r2(config-router)#neighbor 5.5.5.5 update-source loopback 0

r2(config-router)#neighbor 5.5.5.5 ebgp-multihop

r2(config-router)#neighbor 1.1.1.1 remote-as 64512

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

r2(config-router)#neighbor 1.1.1.1 ebgp-multihop

r2(config-router)#neighbor 4.4.4.4 remote-as 64513

r2(config-router)#neighbor 4.4.4.4 update-source loopback 0

r2(config-router)#network 22.2.2.0 mask 255.255.255.0

 

说明:指定子AS为64513,而真正的AS为1,并指明与AS 64512同属一个AS,在联邦内部与R1为eBGP关系,与R4为iBGP关系。

(4)在R3上配置BGP Confederation

r3(config)#router bgp 64512

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#bgp confederation identifier 1

r3(config-router)#bgp confederation peers 64513

r3(config-router)#neighbor 1.1.1.1 remote-as 64512

r3(config-router)#neighbor 1.1.1.1 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 remote-as 64513

r3(config-router)#neighbor 4.4.4.4 update-source loopback 0

r3(config-router)#neighbor 4.4.4.4 ebgp-multihop

r3(config-router)#network 33.3.3.0 mask 255.255.255.0

说明:指定子AS为64512,而真正的AS为1,并指明与AS 64513同属一个AS,在联邦内部与R4为eBGP关系,与R1为iBGP关系。

(5)在R4上配置BGP Confederation

r4(config)#router bgp 64513

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#bgp confederation identifier 1

r4(config-router)#bgp confederation peers 64512

r4(config-router)#neighbor 2.2.2.2 remote-as 64513

r4(config-router)#neighbor 2.2.2.2 update-source loopback 0

r4(config-router)#neighbor 3.3.3.3 remote-as 64512

r4(config-router)#neighbor 3.3.3.3 update-source loopback 0

r4(config-router)#neighbor 3.3.3.3 ebgp-multihop

r4(config-router)#network 44.4.4.0 mask 255.255.255.0

说明:指定子AS为64513,而真正的AS为1,并指明与AS 64512同属一个AS,在联邦内部与R3为eBGP关系,与R1为iBGP关系。

 

3.查看BGP邻居关系

(1)查看R5的BGP邻居状况

r5#sh ip bgp summary

BGP router identifier 5.5.5.5, local AS number 5

BGP table version is 6, main routing table version 6

5 network entries using 645 bytes of memory

9 path entries using 468 bytes of memory

4/3 BGP path/bestpath attribute entries using 496 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1633 total bytes of memory

BGP activity 5/0 prefixes, 9/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

1.1.1.1         4     1      25      26        6    0    0 00:17:30        4

2.2.2.2         4     1      15      16        6    0    0 00:07:08        4

r5#

说明:R1与R2在联邦内部虽然为AS 64512和AS 64513,但对于R5来说,它们都为AS 1,子AS则透明不可见。

 

(2)查看R1的BGP邻居状况

r1#sh ip bgp summary

BGP router identifier 1.1.1.1, local AS number 64512

BGP table version is 6, main routing table version 6

5 network entries using 645 bytes of memory

6 path entries using 312 bytes of memory

6/4 BGP path/bestpath attribute entries using 744 bytes of memory

3 BGP AS-PATH entries using 72 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 1773 total bytes of memory

BGP activity 5/0 prefixes, 6/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

2.2.2.2         4 64513      13      13        6    0    0 00:06:27        3

3.3.3.3         4 64512       8      11        6    0    0 00:03:14        1

5.5.5.5         4     5      26      25        6    0    0 00:17:51        1

r1#

说明:子AS在联邦内部AS之间可见。

 

注:其它BGP邻居关系类同,不再一一查看。

 

 

4.查看BGP路由情况

(1)查看R5的BGP路由情况

r5#sh ip bgp

BGP table version is 6, local router ID is 5.5.5.5

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*  11.1.1.0/24      2.2.2.2                                0 1 i

*>                  1.1.1.1                  0             0 1 i

*  22.2.2.0/24      1.1.1.1                                0 1 i

*>                  2.2.2.2                  0             0 1 i

*  33.3.3.0/24      2.2.2.2                                0 1 i

*>                  1.1.1.1                                0 1 i

*  44.4.4.0/24      1.1.1.1                                0 1 i

*>                  2.2.2.2                                0 1 i

*> 55.5.5.0/24      0.0.0.0                  0         32768 i

r5#

说明:R5已经收到全部的路由,说明对方AS内部正常稳定运行。

(2)查看R1的BGP路由情况

r1#sh ip bgp

BGP table version is 6, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*> 22.2.2.0/24      2.2.2.2                  0    100      0 (64513) i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      4.4.4.4                  0    100      0 (64513) i

*  55.5.5.0/24      5.5.5.5                  0    100      0 (64513) 5 i

*>                  5.5.5.5                  0             0 5 i

r1#

说明:R1也收到全部路由,说明BGP邻居正常运行,且路由收发和预期相同。需要注意,虽然在AS内部,R1与R2为eBGP邻居关系,但下一跳属性并没有作修改,所以需要手工修改。

(3)修改R2对R1的下一跳属性

r2(config)#router bgp 64513

r2(config-router)#neighbor 1.1.1.1 next-hop-self

 

(4)再次查看R1的BGP路由情况

r1#sh ip bgp

BGP table version is 7, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*> 22.2.2.0/24      2.2.2.2                  0    100      0 (64513) i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

* i44.4.4.0/24      4.4.4.4                  0    100      0 (64513) i

*>                  2.2.2.2                  0    100      0 (64513) i

*  55.5.5.0/24      2.2.2.2                  0    100      0 (64513) 5 i

*>                  5.5.5.5                  0             0 5 i

r1#

说明:R2对R1的下一跳属性成功修改。

 

 

(5)AS内部都将改变下一跳属性

 R1:

r1(config)#router bgp 64512

r1(config-router)#neighbor 2.2.2.2 next-hop-self

r1(config-router)#neighbor 3.3.3.3 next-hop-self

 

R3:

r3(config)#router bgp 64512

r3(config-router)#neighbor 1.1.1.1 next-hop-self

r3(config-router)#neighbor 4.4.4.4 next-hop-self

 

R4:

r4(config)#router bgp 64513

r4(config-router)#neighbor 2.2.2.2 next-hop-self

r4(config-router)#neighbor 3.3.3.3 next-hop-self

 

 

5.测试BGP联邦内部选路

(1)查看R1当前的BGP路由情况

r1#sh ip bgp

BGP table version is 7, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*> 22.2.2.0/24      2.2.2.2                  0    100      0 (64513) i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      2.2.2.2                  0    100      0 (64513) i

*  55.5.5.0/24      2.2.2.2                  0    100      0 (64513) 5 i

*>                  5.5.5.5                  0             0 5 i

r1#

说明:R1到达R5的网段55.5.5.0/24从S0/0出去。

 

(2)在R1上改变去往55.5.5.0/24的路径

说明:因为在路径比较中,联邦内部AS_Path是不被计算在内的,所以要证明虽然R1去往55.5.5.0/24,从R2走的AS_Path要长于R5,但并不是因为R2的AS_Path比R5长,因为子AS不被计算,所以只要选路规则的属性中AS_Path后面一个属性的变更影响到选路后,就能证明子AS是被忽略的,所以在此选择修改AS_Path后面的属性,如MED。

r1(config)#access-list 55 permit 55.5.5.0

 

r1(config)#route-map med permit 10

r1(config-route-map)#match ip address 55

r1(config-route-map)#set metric 55

r1(config-route-map)#exit

r1(config)#route-map med permit 20

r1(config-route-map)#exit

 

r1(config)#router bgp 64512

r1(config-router)#neighbor 5.5.5.5 route-map med in

说明:将走R5的MED值设置为55,大于R2的MED值0。

(3)再次查看R1去往55.5.5.0/24的路径

r1#sh ip bgp               

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 11.1.1.0/24      0.0.0.0                  0         32768 i

*> 22.2.2.0/24      2.2.2.2                  0    100      0 (64513) i

*>i33.3.3.0/24      3.3.3.3                  0    100      0 i

*> 44.4.4.0/24      2.2.2.2                  0    100      0 (64513) i

*> 55.5.5.0/24      2.2.2.2                  0    100      0 (64513) 5 i

*                   5.5.5.5                 55             0 5 i

r1#

说明:R1去往55.5.5.0/24选择从R2走,虽然R1的AS_Path看起来比R5长,但因为联邦内部的子AS不被计算,所以最终因为R2的低MED值影响了选路,所以eBGP邻居优于iBGP邻居的规则在BGP联邦内部是被忽略的。

 

(4)查看R3的BGP路径

r3#sh ip bgp

BGP table version is 12, local router ID is 3.3.3.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i11.1.1.0/24      1.1.1.1                  0    100      0 i

*  22.2.2.0/24      4.4.4.4                  0    100      0 (64513) i

*>i                 1.1.1.1                  0    100      0 (64513) i

*> 33.3.3.0/24      0.0.0.0                  0         32768 i

*  44.4.4.0/24      4.4.4.4                  0    100      0 (64513) i

*>i                 1.1.1.1                  0    100      0 (64513) i

*  55.5.5.0/24      4.4.4.4                  0    100      0 (64513) 5 i

*>i                 1.1.1.1                  0    100      0 (64513) 5 i

r3#

说明:可以看见,R3去往55.5.5.0/24,下一跳选择了iBGP邻居R1而没有选择eBGP邻居R4,所以再一次证实了eBGP邻居优于iBGP邻居的选路规则在BGP联邦内部是被忽略的。

 

                                                                   返回目录


BGP 后门路由

如上图网络环境中,AS 1与AS 2存在多种业务流量,AS 1中的路由器R1与AS 2中的路由器R2建立eBGP邻居关系,当R2将AS 2内的路由传递给R1之后,便可以实现AS 1与AS 2的互通,R1将所有去往AS 2的流量全部交给R2。

R1除了与R2建立eBGP邻居之外,由于某些特殊业务需求,AS 1到达AS 2中33.0.0.0/8网段的流量需要在R1和R3直连的链路上传输,因此在R1与R3之间建立了EIGRP邻居关系,R3将33.0.0.0/8通过EIGRP传给R1,但是为了冗余性,R3除了将33.0.0.0/8通告在EIGRP之外,还通告在了BGP中,当R1与R3的直连链路断掉之后,便可以启用R1与R2之间的备用链路,最后R1通过R2去往33.0.0.0/8。由于R1同时从eBGP邻居R2和EIGRP邻居R3都收到33.0.0.0/8的路由,而eBGP的AD值为20,EIGRP的AD值为90,这样一来,R1便将所有去往33.0.0.0/8的流量都从R1与R2之间的直连链路上转发,因此不符合要求。

如果要让R1直接从与R3直连的链路上到达33.0.0.0/8,就需要将eBGP的AD值调整到高于EIGRP,如果改动整个协议的AD值,势必会影响全局所有路由的走向,但只要求33.0.0.0/8的流量被改动。     

基于上述问题,eBGP有种特殊的路由处理方式,就是将某些路由在BGP进程中通过命令network导入BGP路由表,将其变成本地路由,从而将AD值改为200,大于任何IGP协议的AD值,但是该路由只对自己本地生效,只影响自己的选路,并不会传递给其它BGP邻居。这样的路由处理被称为BGP backdoor(BGP 后门路由)。可以看出,BGP后门路由的使用可以使BGP中的某些路由不通过BGP传递,而优先使用其它后门链路,可以实现对特定流量的路径调整。

 

配置BGP 后门路由

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32

R2  Loopback 0  2.2.2.2/32

R3  Loopback 0  3.3.3.3/32

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

1.IGP保证全网Loopback 0互通

(1)配置OSPF

说明:此步略,请参见之前配置。

(2)测试全网Loopback 0连通性

说明:此步略,请参见之前配置。

 

2.配置BGP

(1)配置R1与R2之间的BGP

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor 2.2.2.2 remote-as 2

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

r1(config-router)#neighbor 2.2.2.2 ebgp-multihop

说明:R1与R2之间建立eBGP邻居。

 

(2)配置R2与R1和R3的BGP

r2(config)#router bgp 2

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

r2(config-router)#neighbor 1.1.1.1 ebgp-multihop

r2(config-router)#neighbor 3.3.3.3 remote-as 2

r2(config-router)#neighbor 3.3.3.3 update-source loopback 0

说明:R2与R1之间建立eBGP邻居, 在R2与R3之间建立iBGP邻居

(3)配置R3与R2的BGP

r3(config)#router bgp 2

r3(config-router)#bgp router-id 3.3.3.3

r3(config-router)#neighbor 2.2.2.2 remote-as 2

r3(config-router)#neighbor 2.2.2.2 update-source loopback 0

r3(config-router)#network 33.0.0.0 mask 255.0.0.0

说明:R3与R2之间建立iBGP邻居,并将33.0.0.0/8导入BGP路由表。

 

3.查看路由

(1)查看R2的BGP路由

r2#sh ip bgp

BGP table version is 4, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*>i33.0.0.0         3.3.3.3                  0    100      0 i

r2#

说明:R2从iBGP邻居R3收到33.0.0.0。

 

(2)查看R1的BGP路由

r1#sh ip bgp

BGP table version is 7, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 33.0.0.0         2.2.2.2                                0 2 i

r1#

说明:R1也从eBGP邻居R2收到33.0.0.0。

 

(3)查看R1的IGP路由表

r1#sh ip route

Codes: C - connected, S - static, 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

       i - IS-IS, su - IS-IS summary, 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 not set

 

     1.0.0.0/32 is subnetted, 1 subnets

C       1.1.1.1 is directly connected, Loopback0

     2.0.0.0/32 is subnetted, 1 subnets

O       2.2.2.2 [110/2] via 12.1.1.2, 00:15:39, FastEthernet0/0

B    33.0.0.0/8 [20/0] via 2.2.2.2, 00:00:13

     3.0.0.0/32 is subnetted, 1 subnets

O       3.3.3.3 [110/66] via 12.1.1.2, 00:15:39, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/65] via 12.1.1.2, 00:15:39, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     13.0.0.0/24 is subnetted, 1 subnets

C       13.1.1.0 is directly connected, FastEthernet0/1

r1#

说明:R1去往33.0.0.0的最终路径是从R2走。

 

(4)跟踪R1去往33.0.0.0的路径

r1#traceroute 33.3.3.3

 

Type escape sequence to abort.

Tracing the route to 33.3.3.3

 

  1 12.1.1.2 16 msec 84 msec 16 msec

  2 23.1.1.3 184 msec *  316 msec

r1#

说明:R1从R1与R2之间的链路去往33.0.0.0。

 

4.配置EIGRP

(1)配置R1与R3之间的EIGRP

R1

r1(config)#router eigrp 100

r1(config-router)#no auto-summary

r1(config-router)#network 13.1.1.1 0.0.0.0

 

R3

r3(config)#router eigrp 100

r3(config-router)#no auto-summary

r3(config-router)#network 13.1.1.3 0.0.0.0

r3(config-router)#network 33.3.3.3 0.0.0.0

 

说明:R1与R3之间建立EIGRP,R3将33.0.0.0通告进EIGRP。

 

(2)查看R1从EIGRP收到的路由

r1#sh ip eigrp topology

IP-EIGRP Topology Table for AS(100)/ID(1.1.1.1)

 

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,

       r - reply Status, s - sia Status

 

P 13.1.1.0/24, 1 successors, FD is 28160

        via Connected, FastEthernet0/1

P 33.0.0.0/8, 0 successors, FD is Inaccessible

        via 13.1.1.3 (156160/128256), FastEthernet0/1

r1#

说明:R1从与R3的直连链路收到33.0.0.0。

 

5.配置BGP后门路由

(1)R1通过BGP后门路由将33.0.0.0变为本地路由

r1(config)#router bgp 1

r1(config-router)#network 33.3.3.0 backdoor

 

(2)查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 4, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

r> 33.0.0.0         2.2.2.2                                0 2 i

r1#

说明:33.0.0.0前面标记为r,说明该路由在BGP中为RIB-failure,所以不会被使用。

 

(3)查看R1的IGP路由表

r1#sh ip route

Codes: C - connected, S - static, 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

       i - IS-IS, su - IS-IS summary, 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 not set

 

     1.0.0.0/32 is subnetted, 1 subnets

C       1.1.1.1 is directly connected, Loopback0

     2.0.0.0/32 is subnetted, 1 subnets

O       2.2.2.2 [110/2] via 12.1.1.2, 00:19:28, FastEthernet0/0

D    33.0.0.0/8 [90/156160] via 13.1.1.3, 00:02:35, FastEthernet0/1

     3.0.0.0/32 is subnetted, 1 subnets

O       3.3.3.3 [110/66] via 12.1.1.2, 00:19:28, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/65] via 12.1.1.2, 00:19:28, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     13.0.0.0/24 is subnetted, 1 subnets

C       13.1.1.0 is directly connected, FastEthernet0/1

r1#

说明:R1去往33.0.0.0的最终路径是直接从R3走,符合需求。

 

(4)跟踪R1去往33.0.0.0的路径

r1#traceroute 33.3.3.3

 

Type escape sequence to abort.

Tracing the route to 33.3.3.3

 

  1 13.1.1.3 204 msec *  56 msec

r1#

说明:R1直接从R3去往33.0.0.0。

 

                                                                   返回目录


BGP Dampening

BGP通常是在大型网络中使用,拥有数量庞大的路由条目。虽然在路由表达到收敛状态后,并不会定期更新路由表,但是只要路由有变动,则会立马通告给邻居,而邻居还会通告给其它邻居,最终变动信息将通告给网络中所有的BGP路由器。

如果由于管理员误操作导致路由频繁变动,或者由于物理原因以及软件原因导致路由多次翻动,那么这些变化的路由将在整个网络中不停传播,将带来严重影响,所以为了防止路由翻动而带来的大量路由更新,BGP采取抑制翻动路由的方法,来将不稳定的路由抑制住,而只有稳定后的路由才会被通告给邻居。

对于衡量什么样的路由算是不稳定的路由,什么样的路由才能传递给邻居,BGP有一套自己的机制,称为BGP Dampening,具体过程如下:

对于路由每次翻动,BGP都会给该路由加上一个惩罚值,并且如果翻动多次,惩罚值都会全部累加,当惩罚值累加到一定程度,也就是累加到最大抑制值,那么该路由就被认为是不稳定的,也就不再发给邻居,但是路由的惩罚值会随着时间而减少,当减到释放值时,该路由又可以重新发给邻居。惩罚值的减少,是和某个时间有关系的,这个时间称为半衰期,每过一个半衰期的时间,惩罚值就减少到原来的一半。虽然路由每翻动一次,都会累加惩罚值,但惩罚值并不是无限累加的,是有一定限制的,这就是最大抑制值,无论路由翻动多少次,累加的惩罚值都不会超过最大抑制值。

 

 以下是各个值的具体参数:

 

Penalty(惩罚值)

路由每翻动一次加1000。

 

Suppress limit(抑制值)

默认为2000,当某条路由的惩罚值累加到2000时,便会被抑制而不发给邻居。

 

Half-life (半衰期)

默认为15分钟,每经过一个半衰期时间,惩罚值减到原来的一半。(每5秒会计算一次)

 

Resume limit (释放值)

默认为750,当某条被抑制的路由的惩罚值减到释放值时,就可以再次发给邻居。(每10秒查看一次)

 

Maximum suppress limit(最大抑制值)

默认为过4个半衰期时间可以减到释放值,即60分钟,按释放值750计算,那么4个半衰期减到750,原来的值就是12000。

 

 

注:

★并不是所有的路由都能配置BGP Dampening,只有从eBGP收到的路由才能配置BGP Dampening,从iBGP收到的路由是不可以的。

BGP Dampening可以针对所有BGP路由配置,也可以针对特定路由配置,但不可以针对特定邻居配置。

BGP Dampening所有值都可自定义,但有范围限制。

 

 

配置BGP Dampening

 

 

 

说明:

上图中所有路由器都配有Loopback地址,地址分别为:

R1  Loopback 0  1.1.1.1/32

R2  Loopback 0  2.2.2.2/32

 

所有路由器之间运行OSPF,并将Loopback 0的地址发布到OSPF中,保证全网Loopback 0之间是可以通信的。

 

1.IGP保证全网Loopback 0互通

说明:此步略,请参见之前配置。

 

2.配置BGP

(1)在R1上配置BGP

r1(config)#router bgp 1

r1(config-router)#bgp router-id 1.1.1.1

r1(config-router)#neighbor 2.2.2.2 remote-as 2

r1(config-router)#neighbor 2.2.2.2 update-source loopback 0

r1(config-router)#neighbor 2.2.2.2 ebgp-multihop

说明:R1与R2建立eBGP邻居关系。

 

(2)在R2上配置BGP

r2(config)#router bgp 2

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 1.1.1.1 remote-as 1

r2(config-router)#neighbor 1.1.1.1 update-source loopback 0

r2(config-router)#neighbor 1.1.1.1 ebgp-multihop

r2(config-router)#network 10.1.1.0 mask 255.255.255.0

r2(config-router)#network 20.1.1.0 mask 255.255.255.0

说明:R2将10.1.1.0/24和20.1.1.0/24导入BGP路由表中。

 

 

(3)查看R1的BGP路由

r1#sh ip bgp

BGP table version is 3, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 10.1.1.0/24      2.2.2.2                  0             0 2 i

*> 20.1.1.0/24      2.2.2.2                  0             0 2 i

r1#

说明:R1已经收到R2发来的10.1.1.0/24和20.1.1.0/24。

 

 

3.针对所有路由配置BGP Dampening

(1)在R1上对所有路由配置BGP Dampening

r1(config)#router bgp 1

r1(config-router)#bgp dampening

 

(2)查看BGP Dampening参数

r1#sh ip bgp dampening parameters

 dampening 15 750 2000 60 (DEFAULT)

  Half-life time      : 15 mins       Decay Time       : 2320 secs

  Max suppress penalty: 12000         Max suppress time: 60 mins

  Suppress penalty    :  2000         Reuse penalty    : 750

说明:以上值为BGP Dampening默认值。

 

(3)查看被BGP Dampening监控的路由

r1#sh ip bgp dampening dampened-paths

 

r1#

说明:因为没有路由发生翻动,所以路由为空。

 

(4)测试 bgp dampening

r2(config)#int loopback 10

r2(config-if)#shutdown

说明:10.1.1.0/24的接口断开,表示翻动一次。

 

(5)R1上查看10.1.1.0/24

r1#sh ip bgp 10.1.1.0

BGP routing table entry for 10.1.1.0/24, version 4

Paths: (1 available, no best path)

Flag: 0x820

  Not advertised to any peer

  2 (history entry)

    2.2.2.2 (metric 65) from 2.2.2.2 (2.2.2.2)

      Origin IGP, metric 0, localpref 100, external

      Dampinfo: penalty 980, flapped 1 times in 00:00:29

r1#

说明:可以看到,由于10.1.1.0/24发生了一次翻动,所以有了penalty值,为980。

 

(6)R1上再次查看10.1.1.0/24

r1#sh ip bgp 10.1.1.0

BGP routing table entry for 10.1.1.0/24, version 6

Paths: (1 available, no best path)

Flag: 0x820

  Not advertised to any peer

  2 (history entry)

    2.2.2.2 (metric 65) from 2.2.2.2 (2.2.2.2)

      Origin IGP, metric 0, localpref 100, external

      Dampinfo: penalty 1903, flapped 2 times in 00:04:25

r1#

说明:10.1.1.0/24翻动了两次,现在penalty值为1903,但还是低于抑制值2000。

 

(7)R1上再次查看10.1.1.0/24

r1#sh ip bgp 10.1.1.0

BGP routing table entry for 10.1.1.0/24, version 8

Paths: (1 available, no best path)

Flag: 0x820

  Not advertised to any peer

  2 (history entry)

    2.2.2.2 (metric 65) from 2.2.2.2 (2.2.2.2)

      Origin IGP, metric 0, localpref 100, external

      Dampinfo: penalty 2780, flapped 3 times in 00:06:03

r1#

说明:翻动3次后,penalty值为2780,大于抑制值2000,可以被抑制了。

 

(8)查看被抑制的路由

r1#sh ip bgp dampening dampened-paths

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          From             Reuse    Path

*d 10.1.1.0/24      2.2.2.2          00:04:49 2 i

r1#

说明:可以看到10.1.1.0/24是被抑制的路由,需要注意,只有该路由重新活动后,才能看见被抑制,否则断开的路由也是不会显示在抑制表中的。

 

(9)查看R1的BGP路由表

r1#sh ip bgp

BGP table version is 8, local router ID is 1.1.1.1

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*d 10.1.1.0/24      2.2.2.2                  0             0 2 i

*> 20.1.1.0/24      2.2.2.2                  0             0 2 i

r1#

说明:BGP路由表中也显示了10.1.1.0/24是被抑制的。

 

 

4.针对特定路由配置BGP Dampening

(1)在R1上只针对20.1.1.0配置BGP Dampening

r1(config)#access-list 20 permit 20.1.1.0

r1(config)#route-map damp permit 10