因为各位工程师在下载之前的BGP路由协议详解(完整篇)时,不能下载附件,因此今天我将这个博再从新发一次。http://www.ruijie.com.cn/plan/new_2397 redis
上个月我写一篇关于BGP协议的博文,曾许诺过要完善这个文档,但因最近的工做和授课很忙,因此没有时间进行完善。为了实现这个承诺,我在去外地出差期间对BGP协议详解博文进行一些修改,其中内容包括了一些实验,以及一些内容的补充和深刻阐述,更宜于网友们学习BGP路由协议。由于这个文档出来的很晚,也但愿网友们见谅! 算法
此BGP协议的内容也不算太难,一些关于BGP的高级应用,会在之后MPLS 协议和MPLS流量工程中的内容中会更深刻的讲解!
但愿经过本文档能帮助那些爱好网络知识和那些参加CCIE考试的网友们提供一些帮助。 数据库
1、BGP的概况 api
BGP最新的版本是BGP第4版本(BGP4),它是在RFC4271中定义的;一个路由器只能属于一个AS。AS的范围从1-65535(64512-65535是私有AS号),RFC1930提供了AS号使用指南。网络
BGP的主旨是提供一种域间路由选择系统,确保自主系统只可以无环地交换路由选择信息,BGP路由器交换有关前往目标网络的路径信息。session
BGP是一种基于策略的路由选择协议,BGP在肯定最佳路径时考虑的不是速度,而是让AS可以根据多种BGP属性来控制数据流的传输。并发
? BGP将传输控制协议(TCP)用做其传输协议。是可靠传输,运行在TCP的179端口上(目的端口)tcp
? 因为传输是可靠的,因此BGP0使用增量更新,在可靠的链路上不须要使用按期更新,因此BGP使用触发更新。ide
? 相似于OSPF和ISIS路由协议的Hello报文,BGP使用keepalive周期性地发送存活消息(60s)(维持邻居关系)。
? BGP在接收更新分组的时候,TCP使用滑动窗口,接收方在发送方窗口达到一半的时候进行肯定,不一样于OSPF等路由协议使用1-to-1窗口。
? 丰富的属性值
? 能够组建可扩展的巨大的网络
? 邻居关系表
n 全部BGP邻居
? 转发数据库
n 记录每一个邻居的网络
n 包含多条路径去往同一目的地,经过不一样属性判断最好路径
n 数据库包括BGP属性
? 路由表
n 最佳路径放入路由表中
n EBGP路由(从外部AS获悉的BGP路由)的管理距离为20
n IBGP路由(从AS系统获悉的路由)管理距离为200
以下图所示。
? 邻居表,包含与之创建BGP链接的邻居
n 使用命令show ip bgp summary能够查看到
Router#sh ip bgp summary BGP router identifier 11.1.1.1, local AS number 100 BGP table version is 8, main routing table version 8 5 network entries using 585 bytes of memory 6 path entries using 312 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 1417 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 10.1.1.1 4 100 14 18 8 0 0 00:09:32 2 11.1.1.2 4 200 12 16 8 0 0 00:07:03 1 |
? 转发表,从邻居那里获悉的的全部路由都被加入到BGP转发表中。
n 使用命令show ip bgp能够查看
Router#sh ip bgp BGP table version is 8, local router ID is 11.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 0.0.0.0 0 32768 i * i 10.1.1.1 0 100 0 i *> 11.1.1.0/24 0.0.0.0 0 32768 i *>i192.168.1.0 10.1.1.1 0 100 0 i *> 192.168.2.0 0.0.0.0 0 32768 i *> 192.168.3.0 11.1.1.2 0 0 200 i |
? 路由表,BGP路由选择进程从BGP转发表中选出前往每一个网络的最佳路由,并加入到路由表中。
n 使用命令show ip route bgp能够查看
Router#sh ip route bgp B 192.168.1.0/24 [200/0] via 10.1.1.1, 00:13:11 B 192.168.3.0/24 [20/0] via 11.1.1.2, 00:11:19 |
? open:用来创建最初的BGP链接。(包含hold-time,router-id)
? Keepalive:对等体之间周期性的交换这些消息以保持会话有效。(默认60秒)
? Update:对等体之间使用这些消息来交换网络层可达性信息。
? Notification:这些消息用来通知出错信息。
全部的BGP分组共享一样的公有首部,在学习不一样类型的分组以前,先讨论公共首部,以下图所示,这个首部的字段以下。
? 标记:这个16字节标记字段保留给鉴别用
? 长度:这个2字节字段定义包括首部在内的报文总长度
? 类型:这个1字节段定义分组的类型,用数值1至4定义BGP消息类型
打开消息:主要是利用此报文创建邻居,运行BGP的路由器打开与邻居的TCP链接,并发送打开报文,若是邻居接受这种邻居关系,由响应保活报文。打开报文格式以下所示。
? 版本:这个1字节字段定义BGP的版本,当前的版本是4
? 自治系统:这个2字节字段定义自治系统号。
? 保持时间:这个2字节字段定义一方从另外一方收到保活报文或更新报文以前所通过的最大秒数,若路由器在保持时间的期间内没有收到这些报文中的一个,就认为对方是不工做的。
? BGP协议标识:这是2字节字段,这定义发送打开报文的路由器,为此,这个路由器一般使用它的IP地址中的一个做为BGP标识符。
? 选项长度:打开报文还能够包含某些选项参数,若包含,则这个1字节字段定义选项参数总长度,若没有选项参数,则这个字段的值为0
? 选项参数:若选项参数长度的值不是0,则表示有某些选项参数,每个选项参数自己又有两个字段,参数长度和参数值,到如今已定义的惟一的选项参数是鉴别。
以下图是采用ethereal采集到的BGP的打开消息报文。
更新报文:更新报文是BGP协议的核心,路由器使用它来撤销之前已通知的终点和宣布到一个新终点的路由,或二者都有,应该注意:BGP能够撤销好几个在之前曾通知过的终点,但在单个更新报文中则只能通知一个新终点,以下所示。
? 不可行路由长度:这个2字节字段定义下一字段的长度。
? 撤销路由:这个字段列出必须从之前通知的清单中删除的全部路由
? 路径属性长度:这个2字节字段定义下一个字段的长度
? 路径属性:这个字段定义到这个报文宣布可达性的网络路径属性
? 网络层可达性信息:这个字段定义这个报文真正通知的网络。它有一个长度字段和一个IP地址前缀,长度定义前缀中的位数。前缀定义这个网络地址的共同部分。例如,若这个网络是123.1.10.0/24,则网络前缀是24而前缀是123.1.10。
下图为,是采用ethereal采集到的BGP的更新消息报文。
保活报文:是用来告诉对方本身是工做的,保活报文只包括公共首部,以下图所示。
下图为,是采用ethereal采集到的BGP的保活报文。
通知报文:当检测出差错状态或路由器打算关闭链接时,路由器就发送通知报文,以下图所示。
? 差错码:这个1字节字段定义差错的种类
? 差错子码:这个1字节字段进一步定义每一种差错的类型
? 差错数据:这个字段可用来给出关于该差错的更多的诊断信息
具体的差错码,以下表所示。
差错码 |
差错码说明 |
差错子码说明 |
1 |
报文首部差错 |
3种不一样的子码:同步问题(1),坏的报文长度(2),坏的报文类型(3) |
2 |
打开报文差错 |
6种不一样的子码:不支持的版本(1),坏的对等AS(2),坏的BGP标识符(3),不支持的可选参数(4),鉴别失败(5),不可接受的保持时间(6) |
3 |
更新报文差错 |
11种不一样的子码:错误造成的属性表(1),不能识别的熟知属性(2),丢失熟知属性(3),属性标志差错(4),属性长度差错(5),非法起点属性(6),AS路由选择环路(7),无效的下一路属性(8),可选属性差错(9),无效的网络字段(10),错误造成的AS_PATH(11) |
4 |
保持计时器截止期到 |
未定义子码 |
5 |
有限状态机差错 |
定义过程的差错,未定义子码 |
6 |
关闭 |
未定义子码 |
下图为,是采用ethereal采集到的BGP的通知报文。
在两个BGP发言人交换信息以前,BGP都要求创建邻居关系,BGP不是动态地发现所感兴趣的运行BGP的路由器,相反,BGP使用一个特殊的邻居IP地址来配置的。
BGP使用周期性的Keepalive分组来确认BGP邻居的可访问性。
Keepalive计时器是保持时间(Hold Time)的三分之一,若是发给某一特定BGP邻居三个连续的Keepalive分组都丢失的话,保持时间计时器超时,那个邻居被视为不可达,RFC1771对保持时间的建议是90秒,Keepalive计时器的建议值是30秒。
按照RFC1771,BGP创建邻居关系要经历如下几个阶段,以下图所示。
? Idle:在此状态下不分配网络资源,不容许传入的BGP链接。当在持续性差错条件下,常常性的重启会致使波动。所以,在第一次进入到空闲状态后,路由器会设置链接重试定时器,在定时器到期时才会从新启动BGP,思科的初始链接重试时间为60秒,之后每次链接重试时间都是以前的两倍,也就是说,链接等待时间呈指数关系递增。
? Connect:(已经创建完成了TCP三次握手),BGP等待TCP链接完成,若是链接成功,BGP在发送了OPEN分组给对方以后,状态机变为OpenSent状态,若是链接失败,根据失败的缘由,状态机可能演变到Active,或是保持Connect,或是返回Idle。
? Active:在这个状态下,初始化一个TCP链接来创建BGP间的邻居关系。若是链接成功,BGP在发送了OPEN分组给对方以后,状态机变为OpenSent状态,若是链接失败,可能仍处在Active状态或返回Idle状态。
? OpenSent:BGP发送OPEN分组给对方以后,BGP在这一状态下等待OPEN的回应分组,若是回应分组成功收到,BGP状态变为OpenConfirm,并给对方发送一条Keepalive分组,若是没有接到回应分组,BGP状态从新变为Idle或是Active。
? OpenConfirm:这时,距离最后的Established状态只差一步,BGP在这个状态下等待对方的Keepalive分组,若是成功接收,状态变为Established,不然,由于出现错误,BGP状态将从新变为Idle。
? Established:这是BGP对等体之间 能够交换信息的状态,可交换的信息包括UPDATE分组、KeepAlive分组和Notification分组。
connect和active都是TCP链接阶段,ACTIVE是发起方,connect是应答方。可使用命令show ip bgp summary、debug ip bgp events、debug ip bgp来查看。
Router#debug ip bgp BGP debugging is on for address family: IPv4 Unicast *Jun 23 22:00:05.619: BGP: 11.1.1.2 went from Idle to Active *Jun 23 22:00:05.627: BGP: 11.1.1.2 open active delayed 30128ms (35000ms max, 28% jitter) *Jun 23 22:00:06.215: BGP: 11.1.1.2 passive open to 11.1.1.1 *Jun 23 22:00:06.219: BGP: 11.1.1.2 went from Active to Idle *Jun 23 22:00:06.219: BGP: 11.1.1.2 went from Idle to Connect *Jun 23 22:00:06.227: BGP: 11.1.1.2 rcv message type 1, length (excl. header) 26 *Jun 23 22:00:06.227: BGP: 11.1.1.2 rcv OPEN, version 4, holdtime 180 seconds *Jun 23 22:00:06.231: BGP: 11.1.1.2 went from Connect to OpenSent *Jun 23 22:00:06.231: BGP: 11.1.1.2 sending OPEN, version 4, my as: 100, holdtime 180 seconds *Jun 23 22:00:06.231: BGP: 11.1.1.2 rcv OPEN w/ OPTION parameter len: 16 *Jun 23 22:00:06.231: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 6 *Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has CAPABILITY code: 1, length 4 *Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has MP_EXT CAP for afi/safi: 1/1 *Jun 23 22:00:06.235: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2 *Jun 23 22:00:06.235: BGP: 11.1.1.2 OPEN has CAPABILITY code: 128, length 0 *Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has ROUTE-REFRESH capability(old) for all address-families *Jun 23 22:00:06.239: BGP: 11.1.1.2 rcvd OPEN w/ optional parameter type 2 (Capability) len 2 *Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has CAPABILITY code: 2, length 0 *Jun 23 22:00:06.239: BGP: 11.1.1.2 OPEN has ROUTE-REFRESH capability(new) for all address-families BGP: 11.1.1.2 rcvd OPEN w/ remote AS 200 *Jun 23 22:00:06.243: BGP: 11.1.1.2 went from OpenSent to OpenConfirm *Jun 23 22:00:06.243: BGP: 11.1.1.2 send message type 1, length (incl. header) 45 *Jun 23 22:00:06.359: BGP: 11.1.1.2 went from OpenConfirm to Established *Jun 23 22:00:06.363: %BGP-5-ADJCHANGE: neighbor 11.1.1.2 Up |
IBGP运行在AS内部,不须要直连。IBGP有水平分割,建议使用Full Mesh,因为Full Mesh不具备扩展性,为了解决IBGP的Full Mesh问题,使用路由反射器(RR)和联邦两种方法来解决。主要减小了backbone IGP中的路由。
Neighbor后所指的地址可达。发起方不能是缺省路由,应答方不能是缺省路由。
可使用下面两种方法来创建IBGP邻居:
? 邻居之间能够经过各自的一个物理接口创建对等关系,该对等关系是经过属于它们共享的子网的IP地址来创建的。
? 邻居之间也能够经过使用环回接口创建对等关系。
在IBGP中,因为假定了IBGP邻居在物理上直接相连的可能性不大,因此将IP分组头中的TTL域设置为255。
六、创建EBGP邻居
EBGP运行在AS与AS之间的边界路由器上,默认状况下,须要直连或使用静态路由,若是不是直连,必须指EBGP多跳,Neighbor x.x.x.x ebgp-multihop [1-255] 不选择为最大值,255跳。
可使用下面两种方法来创建EBGP邻居:
? 邻居之间能够经过各自的一个物理接口创建对等关系。
? 邻居之间也能够经过使用环回接口创建对等关系。
七、neighbor ip-address remote-as number命令
例:neighbor 10.1.1.1 remote-as 100
指定对方属于哪个AS。所指的10.1.1.1地址,必须在IGP中可达。
? 容许邻居用这个地址来访问个人179端口,但没有指明访问本路由器的哪一个地址,只检查源地址。
? 本路由器以更新源地址去访问neighbor后面这个地址的179端口,是否能够创建TCP连接要看对方是否容许个人更新源来访问它。
示例:
R1/R2两台路由器运行RIPv2,都将环回口宣告进RIP。这时假如在两台路由器之间运行IBGP邻居关系:
R1:neighbor 192.168.2.1 remote-as 1
R2:neighbor 10.1.1.1 remote-as 1
双方都没有写更新源。(neighbor x.x.x.x update-source lo0表明本路由器的更新源为lo0口,BGP的包以这个接口的地址为源地址发送出去。)
一边指环回口,一边指直链接口。能够创建邻居。这里有2个TCP的session,其中只有R1去访问R2的环回口的179端口的TCP session能够创建。能够用show tcp brief查看。
Router#sh tcp brief TCB Local Address Foreign Address (state) 65693960 10.1.1.1.51124 192.168.2.1.179 ESTAB |
这时在R2上写上肯定更新源命令:neighbor 10.1.1.1 update-source lo1,这时便可创建2条TCP session。可使用命令Show tcp brief查看到2条TCP session在创建,当一条establish完成后,另外一条过会即消失。
Router#sh tcp brief TCB Local Address Foreign Address (state) 65693960 10.1.1.1.51124 192.168.2.1.179 CLOSED 65693E14 10.1.1.1.37992 192.168.2.1.179 ESTAB Router#sh tcp brief TCB Local Address Foreign Address (state) 65693E14 10.1.1.1.37992 192.168.2.1.179 ESTAB |
注:路由器创建BGP邻居写两条正确的neighbor命令,是为了冗余。
? BGP同步规则指出,BGP路由器不该用使用经过IBGP获悉的路由或将其通告给外部邻居,除非该路由是本地的或是经过IGP获悉的。
? 同步开启意味着,从一个IBGP邻居学来的路由,除非从IGP中也一样学习到,不然不可能被选为最优。
? 若是IGP为OSPF,那么在IGP中,这些前缀的router-id也必须与通告这些前缀的bgp的router-id相匹配。才有可能被选为最优。
实例说明:以下图所示
R一、R二、R3同为OSPF area 0中路由器(每台路由器的router-id如上图所示),R2上一条路由3.3.3.0/24宣告进OSPF。
R一、R3运行IBGP,R1将3.3.3.0/24的前缀引入BGP,传给R3。这时R3既从OSPF area0中的R2学习到该前缀,又从IBGP对等体R1,学习到该前缀,若是R3的synchronizaion是开启的,检查同步,在R3的BGP转发表里:
R1 router ospf 10 router-id 2.2.2.1 log-adjacency-changes network 10.1.1.0 0.0.0.255 area 0 network 11.1.1.0 0.0.0.255 area 0 ! router bgp 100 synchronization bgp log-neighbor-changes redistribute ospf 10 neighbor 11.1.1.2 remote-as 100 no auto-summary
R3 router ospf 10 router-id 2.2.2.3 log-adjacency-changes network 11.1.1.0 0.0.0.255 area 0 ! router bgp 100 synchronization bgp log-neighbor-changes neighbor 11.1.1.1 remote-as 100 no auto-summary R3#sh ip bgp BGP table version is 30, local router ID is 11.1.1.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 * i3.3.3.3/32 10.1.1.1 11 100 0 ? * i10.1.1.0/24 11.1.1.1 0 100 0 ? r>i11.1.1.0/24 11.1.1.1 0 100 0 ? R3#sh ip bgp 3.3.3.3 BGP routing table entry for 3.3.3.3/32, version 26 Paths: (1 available, no best path) Not advertised to any peer Local 10.1.1.1 (metric 20) from 11.1.1.1 (11.1.1.1) Origin incomplete, metric 11, localpref 100, valid, internal, not synchronized |
说明同步检查没有经过,当把R1的bgp的router-id改成2.2.2.2时,R3这时检查同步就能够经过了。
R1 router ospf 10 router-id 2.2.2.1 log-adjacency-changes network 10.1.1.0 0.0.0.255 area 0 network 11.1.1.0 0.0.0.255 area 0 ! router bgp 100 synchronization bgp router-id 2.2.2.2 bgp log-neighbor-changes redistribute ospf 10 neighbor 11.1.1.2 remote-as 100 no auto-summary R3#sh ip bgp BGP table version is 37, local router ID is 11.1.1.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 r>i3.3.3.3/32 10.1.1.1 11 100 0 ? r>i10.1.1.0/24 11.1.1.1 0 100 0 ? r>i11.1.1.0/24 11.1.1.1 0 100 0 ? R3#sh ip bgp 3.3.3.3 BGP routing table entry for 3.3.3.3/32, version 35 Paths: (1 available, best #1, table Default-IP-Routing-Table, RIB-failure(17)) Flag: 0x820 Not advertised to any peer Local 10.1.1.1 (metric 20) from 11.1.1.1 (2.2.2.2) Origin incomplete, metric 11, localpref 100, valid, internal, synchronized, best |
? 关闭同步的条件
n 将EBGP的路由重分布进IGP
n 本AS不为其余AS提供穿越服务(末节的AS)
n 穿越路径上全部路由器都运行BGP
2、BGP属性
路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性能够是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也能够是部分的。并不是组织的和有组合都是合法的,路径属性分为4类:
? ——公认强制的
? ——公认自由决定的
? ——可选传递的
? ——可选非传递的
? 只有可选传递属性可被标记为部分的
公认属性
? 是公认全部BGP实现都必须可以识别的属性。这早些属性被传递给BGP邻居。
? 公认强制属性必须出如今路由描述中,公认自由决定属性能够不出如今路由描述中
可选属性
? 非公认属性被称为可选的,可选属性能够是传递的或非传递的
? 可选属性不要求全部的BGP实现都支持
? 对于不支持的可选传递属性,路由器将其原封不动地传递给其余BGP路由器,在这种状况下,属性被标记为部分的。
? 对于可选非传递属性,路由器必须将其删除,而不将其传递给其余BGP路由器
BGP定义属性
? 公认强制属性
? 公认自由决定
? 可选传递属性
? 可选非传递属性
BGP每条更新消息都有一个长度可变的路径属性序列<属性类型,属性长度,属性值>,若是第1比特是0,则属因而公认属性,若是它是1,则该属性是任选属性,若是第2比特是0,则该属性是不可传递的,若是它是1,则属性是可传递的,公认属性老是可传递的,属性标志域中的第3个比特指示任选可传递属性中的信息是部分的(值为1)仍是完整的(值为0),第4个比特肯定该属性长度是1字仍是2字节,标志域其余4个比特总为0.属性类型代码字节含有属性代码。以下图所示。
一、AS路径属性(AS-path)
AS_PATH是一个公认必选的属性,它用AS号的顺序来描述AS间的路径或到NLRI所明确的目的地的路由。
当每一个运行运行BGP的路由器发起一条路由——当它在本身的AS域内公布一个有关目的地NLRI——它将本身的AS号附加到AS_PATH中。当后续的运行BGP的路由器向外部的对端公布路由,它将本身的AS号附加到AS_PATH中。AS能够描述全部它通过的自治系统,以最近的AS开始,以发起者的AS结束。以下图所示。
只有将更新消息发送给在另外一个AS域内的邻居时,BGP路由器才将它的AS号加到AS_PATH中,也就是说只有在两个EBGP对等体之间公布路由时,AS号才被附加到AS_PATH中。
能够经过使用AS附加改变其公布路由的AS_PATH来影响数据流的流向。
AS_PATH属性的另外一个功能就是避免环路,若是BGP路由器从它的外部邻居收到一条路由,而该路由AS_PATH包含这个BGP路由器本身的AS号。因而该路由器就知道是条环路路由。以下图所示。
实例说明:如图所示。
能够将私有的AS号进行隐藏,以下配置所示。
下面是AS属性的另外一个实例,以下图所示。
R1在发送更新的时候,剥除私有AS号;而且不将AS100的路由传播给其客户路由器R3,配置以下所示。
聚合后继承明细路由的属性,在大括号里面的as-path在计算长度时,只算一个。在联盟内小括号里面的AS号,在选路时,不计算到as-path长度里面。
增长as-path的长度,能够用route-map里面的set as-path prepend来作,如:
neighbor 1.1.1.1 route-map AS {in|out} route-map AS set as-path prepend 10 10 |
在neighbor的入向作as-path prepend。是在as-path靠近个人地方加长度,如:
10 10 2i 。10 10是新加的。
而在neighbor的出向作as-path prepend。是在AS起源的方向加path长度,如:
2 10 10i 。10 10是新加的。
在as-path prepend的后面还有一个参数,last-as,如:
route-map AS set as-path prepend last-as ? <1-10> number of last-AS prepends |
意思是将离我最近的AS,将它的AS号在as-path里面再重复出现几回。这个10看起来能够和allowas-in里面的10对应起来。
假如as-path prepend 与as-path prepend last-as合用的时候,last-as先生效,而后prepend再生效。
减少as-path的长度,如用联盟和remove-private-AS等能够实现。
注意:Remove-private-as,若是在as-path里交替出现私有和公有的AS号,这样将没法将私有AS号去掉。在起源的时候,连续的时候才有效。
bgp bestpath as-path ignore(隐藏命令),这条命令可使咱们在选路时,跳过as-path的选路,直接往下继续选择最优路径。
二、源头属性(Origin)
源头是公认强制属性,它定义了路径信息的源头。
IGP:路由在起始AS的内部,使用network命令经过BGP通告路由时,一般属于这种状况,在BGP表中,IGP源头用i表示
EGP:路由是经过EGP获悉的,在BGP表中用e表示。
不彻底:路由的源头未知或是经过其余方法获悉的,在BGP表中,不完整源头用?表示
以下示例所示。
二、下一跳属性(NEXT_HOP)
该为公认必选属性,描述了到公布目的地的路径下一跳路由器的IP地址。由BGP NEXT_HOP属性所描述的IP地址不常常是邻居路由器的IP地址,要遵循下面的规则:
若是正在进行路由宣告的路由器和接收的路由器在不一样的自治系统中,NEXT_HOP是正在宣告路由器接口的IP地址,以下图所示。
若是正在进行路由宣告的路由器和接收的路由器在同一个AS内,而且更新消息的NLRI指明的目的地也在同一个AS内,那么NEST_HOP就是宣告路由的邻居的IP地址。以下图所示。
若是正在宣告的路由器和接收的路由器是内部对等体,而且更新消息的NLRI指明目的地在不一样的AS,则NEXT_HOP就是学习到路由的外部对等实体的IP地址。以下图所示。
从上面图能够知道,在去往192.168.5.0的网段中会出现路径不可达的状况,解决这个问题的方法是保证内部路由器知道与两处自治系统相连的外部网络,可使用静态路由的办法,但实际的作法是在外部端口上以被动模式运行IGP。但在某种状况下,该方法并不理想。
第二种方法是采用配置选项来作,这个配置选项被称作next-hop-self。
下面具体详述了下一跳的不可达的解决方法:
? 解决下一跳不可达的方法:
n 静态路由
n 在IBGP邻居所处的IGP中宣告
n 将与EBGP直连的网络重分布进IGP
n neighbor x.x.x.x next-hop-self(将指向EBGP邻居更新源的地址变为本身的更新源地址)(RR有的版本会将下一跳改变)
? 通常状况下,在本路由器上将直连的网络引入BGP,下一跳为0.0.0.0,本路由器聚合的路由的下一跳也为0.0.0.0。
? 在本路由器上将从IGP学来的路由引入BGP时,在本路由器上看BGP的转发表,下一跳为IGP路由的下一跳。在多访问网络环境中,用直链接口创建邻居关系,会产生第三方下一跳。
实例说明:以下图所示,
R2与R1是IBGP邻居,R1与R3是EBGP邻居,当用直链接口建邻居时,R2引入BGP的前缀172.16.2.0/24,在R3的bgp转发表里,将显示为R2的多访问网络接口地址(如:10.1.1.2)。产生第三方下一跳的现象。
n 若是R一、R二、R3所有用直链接口建邻居时会产生第三方下一跳。
n 若是R一、 R2用环回口而R一、R3用直连创建邻居时,会产生第三方下一跳。
n 若是R一、R2用直连而R一、R3用回环口时,不会产生第三方下一跳,以下所示配置。
n 若是R一、R二、R3都用环回口创建邻居,则不会产生第三方下一跳,以下配置所示。
R3#show ip bgp BGP table version is 4, local router ID is 172.16.3.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 *> 172.16.1.0/24 10.1.1.1 0 0 100 i *> 172.16.2.0/24 10.1.1.2 0 100 i *> 172.16.3.0/24 0.0.0.0 0 32768 i |
R1 router bgp 100 no synchronization bgp log-neighbor-changes network 172.16.1.0 mask 255.255.255.0 neighbor 3.3.3.3 remote-as 200 neighbor 3.3.3.3 ebgp-multihop 2 neighbor 3.3.3.3 update-source Loopback1 neighbor 10.1.1.2 remote-as 100 no auto-summary R3 router bgp 200 no synchronization bgp log-neighbor-changes network 172.16.3.0 mask 255.255.255.0 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 ebgp-multihop 2 neighbor 1.1.1.1 update-source Loopback1 no auto-summary R3#sh ip bgp BGP table version is 8, local router ID is 172.16.3.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 *> 172.16.1.0/24 1.1.1.1 0 0 100 i *> 172.16.2.0/24 1.1.1.1 0 100 i *> 172.16.3.0/24 0.0.0.0 0 32768 i |
R1 router bgp 100 no synchronization bgp log-neighbor-changes network 172.16.1.0 mask 255.255.255.0 neighbor 2.2.2.2 remote-as 100 neighbor 2.2.2.2 update-source Loopback1 neighbor 3.3.3.3 remote-as 200 neighbor 3.3.3.3 ebgp-multihop 2 neighbor 3.3.3.3 update-source Loopback1 no auto-summary R2 router bgp 100 no synchronization bgp log-neighbor-changes network 172.16.2.0 mask 255.255.255.0 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 update-source Loopback1 no auto-summary R3 router bgp 200 no synchronization bgp log-neighbor-changes network 172.16.3.0 mask 255.255.255.0 neighbor 1.1.1.1 remote-as 100 neighbor 1.1.1.1 ebgp-multihop 2 neighbor 1.1.1.1 update-source Loopback1 no auto-summary R3#sh ip bgp BGP table version is 10, local router ID is 172.16.3.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 *> 172.16.1.0/24 1.1.1.1 0 0 100 i *> 172.16.2.0/24 1.1.1.1 0 100 i *> 172.16.3.0/24 0.0.0.0 0 32768 i |
第三方下一跳:收到路由更新的源地址与将要发出去的接口地址在同一网段的时候,路由的下一跳不改变,为原来路由更新的源地址。
? 有时虽然路由的下一跳可达,但会出现访问网络出现环路的现象。
实例说明:
R五、R3,R一、R2为EBGP邻居关系,R一、R3为IBGP邻居关系。那么R5经过BGP传给R3的路由(如10.1.1.0/24),R3经过IBGP传给R1,R1经过EBGP传给R2,这时R2访问10.1.1.0/24这个网络的下一跳就在R1上。这时R2去访问R5的时候,就会产生环路。
则R2(走下一跳)——R1(走物理链路)——R2,这样环路产生了。
解决方法:
? neighbor x.x.x.x next-hop-unchanged (此命令只能用在EBGP多跳的环境下,将路由的下一跳,从本身的更新源地址改变为从IBGP学来的下一跳地址)(这时路由的下一跳在路由表里将改变。)
? neighbor x.x.x.x route-map XX {in|out}而后在route-map里面set ip next-hop来改变前缀的下一跳。(在路由表里下一跳会改变。)
? 策略路由PBR,强制命令R2到10.1.1.0/24的时候走R3。(路由表里下一跳不会改变)
三、本地优先级属性(Local_preference)
本地优先级是公认自由决定的属性,它告诉AS中的路由器,那条路径离开AS的首选路径。本地优先级越高,路径被选中的可能性越大。本地优先级这种属性只能在同一个AS中的路由器之间交换,本是优先级只适用于内部邻居,用于内部对等体之间的Update消息。
本地优先级,能够在本AS和大联盟内传递。越大越优先。影响路由器的出站流量。默认状况下,local-preference为100。
使用下面的命令,以下图所示
是将路由器收到的全部外部BGP路由的默认本地优先级修改成指定值。对IBGP邻居路由器传过来的路由,不会改变它们的local-preference。若是将一个IBGP邻居传来的路由传给另一个IBGP邻居,那我必须是RR。
实例说明:以下图所示。
未使用本地优先级操做路径,以下所示路由器C的BGP表。
在路由器A 上修改本地优先级,以下所示。
在使用本地优先操纵后的路径,查看路由器C 的BGP表。
四、原子聚合属性
原子聚合是一个公认自决的属性。类型代码为6,它告诉邻接AS,始发路由器对路由进行了聚合。可使用下面的命令进行配置,
命令只聚合已经包含在BGP表中的网络,这与使用network来通告汇总路由要求不一样,后者要求网络必须出 如今IP路由选择表中
配置命令aggregate-address后,一条与汇总路由对应的指向null0的BGP路由将自动被加入到IP路由表中。以下示例所示。
可使用show ip bgp命令来查看
关于原子聚合的详细内容在之后的章节中详细说明。
五、权重属性
cisco私有的参数。本地有效。缺省条件下,本地始发的路径具备相同的WEIGHT值(即32768),全部其余的路径的weight值为0。越大越优选。影响路由器的出站流量。
权重只影响当前路由器,指定邻居的权重。使用下面命令来修改权重。
能够在neighbor的入向设置。范围0-65535。Neighbor 1.1.1.1 weight 10,从对等体1.1.1.1接收过来的全部路由的weight值都设置为10。
还能够用route-map来设定,能够将特定路由的weight值改变。以下所示:
Neighbor 1.1.1.1 route-map AA in Route-map AA permit 10 Match ip address prefix AA Set weight 10 Route-map AA permit 20 |
六、MED属性
MED属性也被称为度量值,是一种可选非传递属性。承载于EBGP的Update消息中。MED用于向外部邻居指出进入AS的首选路径,当入口有多个时,AS可使用MED来动态地影响其余AS如何选择进入路径,在BGP中,MED是惟一一个可影响数据如何进入AS的属性。度量值越小,路径被选中的可能性越大。与本地优先级不一样,MED是在自主系统之间交换的。MED影响进入AS的数据流,而本地优先级影响离开AS的数据流。以下图所示。
Metric和med:BGP的metric对IBGP一样有效。特指med:从EBGP收到的metric比较的时候才叫MED,MED是借用了BGP的metric在EBGP的时候进行比较。MED(多出口区分)比较EBGP的metric找到最优的出口。
MED至关于IGP路由的metric值,越小越优先。在新的IOS中,将IGP中的路由重分布进BGP,BGP将自动继承IGP路由的metric值。在老的IOS里,若是须要继承须要在重分布时加route-map,如:
Redistribute rip route-map RE Route-map RE set metric-type internal |
默认状况下,只有在两条路径的第一个(邻近的)AS相同的状况下才会进行比较:任何联盟内的子自治系统都被忽略。任何多跳路径,只有在AS_SEQUENCE中的第一个AS相同的状况下,才会比较MED;任何打头的AS_CONFED_SEQUENCE都将被忽略。若是激活了bgp always-compare-med,那么对于全部路径都比较MED,而不考虑是否来自同一个AS。若是使用了这个选项,就应该在整个AS中都这样作,以免路由选择环路。
实例说明:以下拓扑图
下面是一个使用策略路由来实现修改MED值的案例。
实例说明:以下图所示,此实例采用了本地优先级与MED属性
七、共同体属性
BGP团体是一组共享某些共同特性的目的地,用于简化路由策略的执行,一个团体并不被限制在一个网络或一个AS之中。是另外一种过滤入站或出站BGP路由的方法。
COMMUNITY属性是一组4个8位组的数值,RFC1997规定,前2个8位组表示自治系统,后2个8位组表示出于管理目的而定义的标识符,格式为AA:NN,而思科的默认格式为NN:AA,可使用命令ip bgpcommunity new-format将思科默认格式改成RFC1997的标准格式。
团体属性是一个可传递属性,类型代码为8。
? no_export——若是接收到的路由携带该数值,不通告到EBGP对等体。若是配置了联盟,则不能将此路由宣告到联盟以外。
? no_advertise——若是接收到的路由携带该数值,不通告给任何对等体,包括EBGP和IBGP。
? internet ——无任何值,全部路由器默认状况下都属于该团体,带此属性的路由在被收到后,应该被通告给全部的其余路由器
? local_as——带有此属性的路由在被收到后,应该被通告给本地AS域内的对等体,但不该该被通告给外部系统中的对等体,包括同一个联盟内其它自治系统中的对等体。
实例说明:以下图所示。
3、BGP路由汇总
BGP的汇总有2种:
A.汇总:summary
静态路由手工汇总指向null 0,再network引入BGP。
若是明细路由断了,汇总仍然会被引入,且缺少灵活性。
命令network要求路由选择表中有与指定的前缀或掩码彻底匹配的条目,为知足这种要求,可配置一条指向接口null0的静态路由,若是IGP执行汇总,则路由选择中可能已以有这样的静态路由。
命令network告诉BGP通告哪些网络,而不如何通告,仅当描写的网络号出如今IP路由选择中后,BGP才会通告它,以下图所示。
B.聚合:aggregate
聚合路由在本路由器上生成一条聚合路由,下一跳为0.0.0.0。
aggregate-address 172.16.12.0 255.255.252.0 ?
advertise-map Set condition to advertise attribute
as-set Generate AS set path information
attribute-map Set attributes of aggregate
route-map Set parameters of aggregate
summary-only Filter more specific routes from updates
suppress-map Conditionally filter more specific routes from updates
nlri
<cr>
? Advertise-map
n 只对advertise-map里面匹配的路由进行聚合。当advertise-map里面匹配的明细路由所有消失后,即便聚合路由范围内还有其余明细路由,聚合路由也将消失。当与as-set合用时,只继承advertise-map里面匹配的明细路由的属性。若是用summary-only,会将全部的明细包括没有在advertise-map里面匹配的路由一块儿抑制。
? As-set
n 聚合路由继承明细路由的属性,包括:as-path、local_preference、community、origin-code。与advertise-map合用,只继承advertise-map里面匹配的明细路由的属性。若是继承了as-path属性,继承的as-path若是没有在大括号{ }中显示,则有几个算几个AS;若是继承AS是在大括号中排列的,那么只算一个AS号。只关心AS的号码,不关心顺序。
? As-path、as-seq(as-path)原子聚合不带任何AS。AS-SET首先是区别于atomic-aggregate,产生了AS的序列,序列中无分前后顺序,这一点也不一样于有明确顺序的AS-SEQEUENCE
? Attribute-map和route-map
? 这两个参数同样,能够将聚合路由的属性清除掉(除了as-path属性),添加本身须要添加的属性。Attribute-map 与 as-set的合用时,可否将聚合的路由的属性重置。(OK能够改)
? Summary-only将聚合路由所包括的全部路由都抑制掉,被抑制的路由在bgp的转发表里,显示为s,表明suppress的意思。发送更新时,只发送聚合路由。能够与
? neighbor 1.1.1.1 unsuppress-map XX合用,对特定邻居漏过特定的明细路由。
? Suppress-map,将suppress-map里面匹配的路由抑制掉,被抑制的路由在bgp的转发表里,显示为s,表明suppress的意思。发送更新时,只发送聚合路由和没有被抑制的明细路由。能够与
? neighbor 1.1.1.1 unsuppress-map XX合用,对特定邻居漏过特定的明细路由。
4、BGP路由决策
BGP的RIB包括三部分:
? Adj-RIBs-In:存储了从对等体学习到的路由理新中未经处理的路由信息,这些包含在Adj-RIBs-In中的路由被认为是可行路由。
? Loc-RIB:包含了BGP发言者对Adj-RIBs-In中的路由应用本地策略以后选定的路由
? Adj-RIBs-Out:包含了BGP发言者向对等体宣告路由。
BGP有三个部分既能够是3个不一样的数据库,也能够是利用指针来区分不一样部分的单一数据库。BGP路由决策经过对Adj-RIBs-In中的路由应用本地路由策略,且向Loc-RIB 和Adj-RIBs-Out中输入选定或修改的路由进行路由选择。其有三个阶段。
第一阶段:计算每条可行路由的优先级
第二阶段:从全部可用路由中为特定目的地选出最佳路由,并将其安装到Loc-RIB中。
第三阶段:将相应的路由加入到Adj-RIBs-Out中,以便向对等体进行宣告。
如下为BGP选路原则的13条:
(1)weight
cisco私有的参数。本地有效。缺省条件下,本地始发的路径具备相同的WEIGHT值(即32768),全部其余的路径的weight值为0。越大越优选。影响路由器的出站流量。
(2)local-preference
本地优先级,能够在本AS和大联盟内传递。越大越优先。影响路由器的出站流量。默认状况下,local-preference为100。
(3)本地起源
路由器本地始发的路径优先。在BGP的转发表里显示为0.0.0.0。依次下降的优先级顺序是:default-originate(针对每一个邻居配置)、default-informaiton-originate(针对每种地址簇配置)、network、redistribute、aggregate-address。
(4)as-path
评估as-path的长度,as-path列表最短的路径优先。
聚合后继承明细路由的属性,在大括号里面的as-path在计算长度时,只算一个。在联盟内小括号里面的AS号,在选路时,不计算到as-path长度里面。
(5)起源代码
评估路由的origin code属性,有3个i<e<?。i表明用network将IGP引入BGP的,或者是聚合等路由,e表明EGP,?表明重分布进BGP的路由。i为0,e为1,?为3。越小越优。
(6)MED
metric传递不能传出AS。例外:始发路由器能够metric传给邻居,能够是IBGP/EBGP,可是EBGP再传不出去。
MED至关于IGP路由的metric值,越小越优先。
(7)EBGP优于IBGP
这里EBGP>联盟内的EBGP>IBGP。
(8)最近的IGP邻居
这里是指peer的更新源在个人路由表里显示,哪一个最近哪一个最优。
OSPF是否考虑O、OIA、OE一、OE2?只看cost不看O/OIA/OE。
(9)若是配置了maximum-path[ibgp]n,若是存在多条等价的路径,会插入多条路径。
BGP默认maximum-path=1,只能有一条最优路径,但能够经过命令来改变,若是没有IBGP参数,默认只能作EBGP的负载均衡。作负载均衡还有一个条件,就是上面的8条都比不出哪条最优的状况下,才有可能出现负载均衡。
作了BGP的负载均衡后,在BGP的转发表里仍是一个最优,但在路由表里能够出现2个下一跳。
(10)最老的
与本端最先创建邻居关系的peer,被优选。由于它最稳定。但通常不考虑,会跳过这个继续往下选。
若是如下任一条件为真,这一步将会被忽略:
启用了bgp bestpath compare-routerid,多条路径具备相同的router-id,由于这些路由都是从同一台路由器接收过来的;当前没有最佳路径。缺少当前最佳路径的例子发生在正在通告最佳路径的邻居失效的时候。
(11)最低的ROUTER-ID
BGP优选来自具备最低的路由器ID的BGP路由器的路由。Router-id是路由器上最高的IP地址,而且优选环回口。也能够经过bgp router-id命令静态的设定路由器ID。若是路径包含RR属性,那么在路径选择过程当中,就用originator-id来替代路由器ID。
(12)多跳路径的始发路由器ID相同,那么选择CLUSTER_LIST长度短的,由于每通过一个RR,cluster-list会加上这个RR的router-id
若是多条路径的始发router-id相同,那么BGP将优选cluster-list长度最短的路径。这种状况仅仅出如今BGP RR的环境下。
(13)BGP优选来自于最低的邻居地址的路径。是BGP的neighbor配置中的那个地址,若是是环回口,则看环回口地址的高低。
BGP优选来自于最低的邻居地址的路径。这是BGP的neighbor配置中所使用的IP地址,而且它对应于与本地路由器创建TCP链接的远端对等体。
5、路由翻动(route flaps)和路由惩罚(route dampening)
路由翻动产生的缘由有不少种好比:链路不稳定、路由器接口故障、ISP工程施工、管理员错误配置和错误故障检查等等都能形成路由翻动,因为路由翻动会形成每台路由器从新计算路由,从而消耗了大量的网络带宽和路由器的CPU资源。
BGP邻居的flaping
当R1与R2两台路由器运行IGP协议,而且创建EBGP的邻居关系,用环回口创建邻居关系。这时假如R一、R2将他们的更新源通告进了BGP,而后经过BGP传递给对方,这时因为从EBGP学到的路由的AD为20,大于IGP的默认AD,这时会产生邻居的flaping现象。
这时show ip bgp summary能够看到每通过60秒BGP table version is 1, main routing table version 1会改变一次。BGP转发表里变化了多少次。
用debug ip bgp、debug ip bgp update来查看BGP的flaping。
解决方法:
(1)EBGP建邻居时不要将环回口引入BGP。
(2)Network + backdoor
R一、R二、R3由于属于同一个AS,因此运行一个IGP,R2-R4,R3-R5之间的链路并无通告进IGP中。R一、R二、R3 IBGP对等体关系,R3在指R1时,打了neighbor 1.1.1.1 next-hop-self;R四、R2 ,R五、R3 ,R四、R5为EBGP对等体关系,它们都拿直链接口创建邻居关系。
这时R4将它的环回口4.4.4.0/24和R2-R4的直连网络24.0.0.0/24引入BGP,这时在R1上就会产生路由下一跳flaping的现象。这时show ip bgp summary能够看到每通过60秒BGP table version is 1, main routing table version 1会改变一次。
解决方法:
(1)静态路由(R1上静态路由)
(2)在IBGP邻居所处的IGP中宣告
(3)将与EBGP直连的网络重分布进IGP
(4)neighbor x.x.x.x next-hop-self(R2指R1时输入)
路由惩罚(route dampening)由RFC2439描述,它主要由如下三个目的:
? 提供了一种机制,以减小因为不稳定路由引发的路由器处理负载
? 防止持续的路由抖动
? 加强了路由的稳定性,但不牺牲表现良好的(well-behaved)路由的收敛时间。
ROUTER BG 1
BG DAMP 15 750 2000 60 ---- 针对全部的路由。
BG DAMP ROUTE-MAP XXX
ROUTE-MAP XXX
MATIP ADD PREFIS XX
SET DAM 15 750 2000 60 ---DEFAULT
IP PREFIX XX PERMIT 1.1.1.0/24
SH IP BG 1.1.1.0
SH IP BG DAM PARA
Dampening为每一条前缀维护了一个路由抖动的历史记录。Dampening算法包含如下几个参数:
? 历史记录――――当一条路由flaping后,改路由就会被分配一个惩罚值,而且它的惩罚状态被设置为history。
? 惩罚值(penalty)――――路由每flaping一次,这个惩罚值就会增长。默认的路由flaping惩罚值为1000。若是只有路由属性发生了变化,那么惩罚值为500。这个值是硬件编码的。
? 抑制门限(suppress limit)――――若是惩罚值超过了抑制门限,改路由将被惩罚或dampen。路由状态将由history转变为damp状态。默认值的抑制门限是2000,它能够被设置。
? 惩罚状态(damp state)――――当路由处于惩罚状态时,路由器在最佳路径选择中将不考虑这条路径,所以也不会把这条前缀通告给它的对等体。
? 半衰期(half life)――――在一半的生命周期的时间内,路由的惩罚值将被减小,半衰期的缺省值是15分钟。路由的惩罚值每5秒钟减小一次。半衰期的值能够被设置。
? 重用门限(reuse limit)――――路由的惩罚值不断的递减。当惩罚值降到重用门限如下时,改路由将再也不被抑制。缺省的重用门限为750。路由器每10秒钟检查一次那些不须要被抑制的前缀。重用门限时能够被配置的。当惩罚值达到了重用门限的一半时,这条前缀的历史记录(history)将被清除,以便更有效率的使用内存。
? 最大抑制门限/最大抑制时间――――若是路由在短期内表现出极端的不稳定性,而后又稳定下来,那么累计的惩罚值可能会致使这条路由在过长的时间里一直处于惩罚状态。这就是设置最大抑制门限的基本目的。若是路由表现出连续的不稳定性,那么惩罚值就停留在它的上限上,使得路由保持在惩罚状态。最大抑制门限是用公式计算出来的。最大抑制时间为一条路由停留在惩罚状态的最长时间。默认为60分钟(半衰期的4倍)能够配置。
n 最大抑制门限=重用门限×2(最大抑制时间÷半衰期)
n 因为最大抑制门限为公式算出来的,因此有可能最大抑制门限≤抑制门限,当这种状况发生时,dampening的设置是没有效果的。如重用门限=750,抑制门限=3000,半衰期=30分钟,最大抑制时间=60分钟。按照这样的配置,算出来的最大抑制门限为3000,
n 与抑制门限同样,由于必须超过抑制门限,才能对路由进行dampening,因此这时dampening的设置没有效果。
BGP的dampening仅仅影响EBGP的路由。Dampening是基于每条路径的路由而操做的。若是一条前缀具备两条路径,而且其中一条被惩罚了,那么另外一条前缀仍然是可用的,能够通告给BGP对等体。
命令:
bgp dampening [route-map XX] [{Half-life reuse-limit suppress-limit Maximum-time }]
若是挂了route-map,那么就在route-map里面匹配特定EBGP路由,来设置dampening值。
检查命令:
show ip protocol
sh ip bgp dampening ?
dampened-paths 只显示(清除)被抑制的路由。
flap-statistics 显示(清除)全部出现摆动的路由以及该路由出现摆动的次数。
parameters Display details of configured dampening parameters
show ip bgp neighbors 1.1.1.1 dampened-routes
show ip bgp neighbors 1.1.1.1 flap-statistics
6、路由反射器
因为IBGP的水平分割问题,因此IBGP须要Full Mesh。因为整个IBGP full mesh的话,须要建的session数为n*(n-1)/2。不具备扩展性。因此产生两种解决方法,路由反射器是其中一种,而另外一种则是联邦。
路由反射器是被配置为容许它把经过IBGP所获悉的路由通告到其余IBGP对等体的路由器,路由器反射器与其余路由器有部分IBGP对等关系,这些路由器被称为客户。客户间的对等是不须要的,由于路由反射器将在客户间传递通告。 以下图所示。
其优势:减小AS内BGP邻居关系的数量,从而减小了TCP链接数;在AS内能够有多个路由反射器,便是为了冗余也是为了分红组,以进一步减小所需IBGP会话的数量。路由反射器的路由器能够与非路由反射器的路由器共存,因此配置更简单。
RFC1966中定义了3条RR用来决定要宣告哪条路由的规则,具体使用时取决于路由是如何学习到的。
? 若是路由学习自非客户IBGP对等体,则仅反射给客户路由器。
? 若是路由学习自某客户,则反射给全部非客户和客户路由器(发起该路由的客户除外)。
? 若是路由学习自EBGP对等体,则反射给全部非客户和客户路由器
路由反射器的客户并不知道本身是客户。客户和非客户通过路由反射器反射的路由更新将会带上cluster-list和originator,可用于IBGP防环。Cluster-id默认为路由反射器本身的router-id,能够经过命令bgp cluster-id 1.1.1.1来修改,cluster-id为32位的值,能够写成点分十进制,也能够写成十进制数;originator为IBGP内起源路由器的router-id。路由反射器是IBGP的特性,出了IBGP后,路由反射器全部的特性消失(即路由携带的cluster-list和originator所有消失)。
neighbor 1.1.1.1 route-reflector-client
能够经过这条命令来将IBGP的peer 1.1.1.1变为本身的客户。建议对每一个IBGP邻居都打上。
当路由反射器的客户full mesh时,能够用no bgp client-to-client reflection禁止客户到客户的路由反射。能够减小路由更新。
以下图为路由反射器的基本配置。
7、BGP联邦
因为IBGP的水平分割问题,因此IBGP须要full mesh。因为整个IBGP full mesh的话,须要建的session数为n*(n-1)/2。不具备扩展性。因此产生两种解决方法,联邦是其中一种。
联邦既有EBGP的特性,又有IBGP的特性。
联盟是另外一种控制大量IBGP对等体的方法,它就是一个被细分为一组子自治系统(称为成员自治系统)的AS。以下图所示。
联盟增长了两种类型的AS_PATH属性
AS_CONFED_SEQUENCE:一个去往特定目的地所经路径上的有序AS号列表,其用法与AS_SEQUENCE彻底同样,区别在于该列表中的AS号属于本地联盟中的自治系统。
AS_CONFED_SET:一个去往特定目的地所经路径上的无序AS号列表,其用法与AS_SET彻底同样,区别在于该列表中的AS号属于本地联盟中的自治系统。
因为AS_PATH发生被用于成员自治系统之间,于是保留了环路预防功能。将Update消息发送给联盟以外的对等体时,将从AS_PATH属性中剥离AS_CONFED_SEQUENCE和AS_CONFED_SET信息,而将联盟ID附加到AS_PATH中。
Local_preference和MED能够在联邦内传递。联盟内的小AS号,在as-path里显示在小括号里,在as-path计算长度时,不被考虑。下一跳在联邦内传递不会改变。
8、配置样例1
下面的示例中涉及到BGP的基本配置,涉及到一些基本的知识点,如EBGP多跳、更新源使用环回接口、路由映射发布团体属性等,以下图所示。
下面是其参考配置。
R1#sh running-config
!
interface Loopback0
ip address 192.168.250.1 255.255.255.0
!
interface Loopback1
ip address 192.168.1.213 255.255.255.252
!
interface Loopback6
ip address 5.5.5.5 255.255.255.0
!
interface Serial2/0
ip address 192.168.1.210 255.255.255.252
serial restart-delay 0
!
router bgp 300
no synchronization
bgp log-neighbor-changes
network 192.168.1.212 mask 255.255.255.252
network 192.168.250.0
neighbor 6.6.6.6 remote-as 100
neighbor 6.6.6.6 ebgp-multihop 2
neighbor 6.6.6.6 update-source Loopback6
no auto-summary
!
ip route 6.6.6.0 255.255.255.0 192.168.1.209
!
R2#sh running-config
!
interface Loopback5
ip address 1.1.1.1 255.255.255.255
!
interface Loopback6
ip address 6.6.6.6 255.255.255.0
!
interface Ethernet1/0
ip address 192.168.1.221 255.255.255.252
duplex half
!
interface Ethernet1/1
ip address 192.168.1.193 255.255.255.252
duplex half
!
!
interface Serial2/0
ip address 192.168.1.209 255.255.255.252
serial restart-delay 0
!
interface Serial2/1
ip address 192.168.1.226 255.255.255.252
serial restart-delay 0
!
router ospf 10
log-adjacency-changes
passive-interface Serial2/0
passive-interface Serial2/1
network 1.1.1.1 0.0.0.0 area 0
network 192.168.1.192 0.0.0.3 area 0
network 192.168.1.220 0.0.0.3 area 0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback5
neighbor 2.2.2.2 next-hop-self
neighbor 3.3.3.3 remote-as 100
neighbor 3.3.3.3 update-source Loopback5
neighbor 3.3.3.3 next-hop-self
neighbor 5.5.5.5 remote-as 300
neighbor 5.5.5.5 ebgp-multihop 2
neighbor 5.5.5.5 update-source Loopback6
neighbor 192.168.1.225 remote-as 200
no auto-summary
!
ip route 5.5.5.0 255.255.255.0 192.168.1.210
!
R3#sh running-config
!
interface Loopback5
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet1/0
ip address 192.168.1.222 255.255.255.252
duplex half
!
interface Ethernet1/1
ip address 192.168.1.198 255.255.255.252
duplex half
!
router ospf 10
log-adjacency-changes
network 2.2.2.2 0.0.0.0 area 0
network 192.168.1.196 0.0.0.3 area 0
network 192.168.1.220 0.0.0.3 area 0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback5
neighbor 3.3.3.3 remote-as 100
neighbor 3.3.3.3 update-source Loopback5
no auto-summary
!
R4#sh running-config
!
interface Loopback5
ip address 3.3.3.3 255.255.255.255
!
interface Ethernet1/0
ip address 192.168.1.194 255.255.255.252
duplex half
!
interface Ethernet1/1
ip address 192.168.1.197 255.255.255.252
duplex half
!
interface Ethernet1/2
ip address 192.168.1.206 255.255.255.252
duplex half
!
!
router ospf 10
log-adjacency-changes
passive-interface Ethernet1/2
network 3.3.3.3 0.0.0.0 area 0
network 192.168.1.192 0.0.0.3 area 0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback5
neighbor 1.1.1.1 next-hop-self
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback5
neighbor 2.2.2.2 next-hop-self
neighbor 192.168.1.205 remote-as 400
no auto-summary
!
R5#sh running-config
!
interface Loopback0
ip address 192.168.50.1 255.255.255.0
!
interface Loopback1
ip address 192.168.75.1 255.255.255.0
!
interface Loopback3
ip address 192.168.1.201 255.255.255.252
!
interface Ethernet1/0
ip address 192.168.1.205 255.255.255.252
duplex half
!
router bgp 400
no synchronization
bgp log-neighbor-changes
network 192.168.1.200 mask 255.255.255.252
network 192.168.50.0
network 192.168.75.0
neighbor 192.168.1.206 remote-as 100
no auto-summary
!
R6#sh running-config
!
interface Loopback0
ip address 192.168.100.1 255.255.255.0
!
interface Loopback1
ip address 192.168.200.1 255.255.255.0
!
interface Loopback3
ip address 192.168.1.217 255.255.255.252
!
interface Loopback10
ip address 192.168.192.1 255.255.255.0
!
interface Loopback11
ip address 192.168.193.1 255.255.255.0
!
interface Loopback12
ip address 192.168.194.1 255.255.255.0
!
interface Loopback13
ip address 192.168.195.1 255.255.255.0
!
interface Loopback14
ip address 192.168.196.1 255.255.255.0
!
interface Loopback15
ip address 192.168.197.1 255.255.255.0
!
interface Loopback16
ip address 192.168.198.1 255.255.255.0
!
interface Loopback17
ip address 192.168.199.1 255.255.255.0
!
interface Serial2/0
ip address 192.168.1.225 255.255.255.252
serial restart-delay 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
network 192.168.1.216 mask 255.255.255.252
network 192.168.100.0
network 192.168.192.0
network 192.168.193.0
network 192.168.194.0
network 192.168.195.0
network 192.168.196.0
network 192.168.197.0
network 192.168.198.0
network 192.168.199.0
network 192.168.200.0
aggregate-address 192.168.192.0 255.255.248.0
neighbor 192.168.1.226 remote-as 100
neighbor 192.168.1.226 send-community
neighbor 192.168.1.226 route-map community out
no auto-summary
!
!
no ip http server
no ip http secure-server
!
!
access-list 110 permit ip host 192.168.192.0 host 255.255.248.0
!
route-map community permit 10
match ip address 110
set community none
!
route-map community permit 20
set community no-export
!
使用一些经常使用命令来查看其状态信息,以下所示:
R2#sh ip bgp
BGP table version is 18, 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
*>i192.168.1.200/30 3.3.3.3 0 100 0 400 i
*> 192.168.1.212/30 5.5.5.5 0 0 300 i
*> 192.168.1.216/30 192.168.1.225 0 0 200 i
*>i192.168.50.0 3.3.3.3 0 100 0 400 i
*>i192.168.75.0 3.3.3.3 0 100 0 400 i
*> 192.168.100.0 192.168.1.225 0 0 200 i
*> 192.168.192.0 192.168.1.225 0 0 200 i
*> 192.168.192.0/21 192.168.1.225 0 0 200 i
*> 192.168.193.0 192.168.1.225 0 0 200 i
*> 192.168.194.0 192.168.1.225 0 0 200 i
*> 192.168.195.0 192.168.1.225 0 0 200 i
*> 192.168.196.0 192.168.1.225 0 0 200 i
*> 192.168.197.0 192.168.1.225 0 0 200 i
*> 192.168.198.0 192.168.1.225 0 0 200 i
*> 192.168.199.0 192.168.1.225 0 0 200 i
*> 192.168.200.0 192.168.1.225 0 0 200 i
*> 192.168.250.0 5.5.5.5 0 0 300 i
R2#sh ip bgp summary
BGP router identifier 6.6.6.6, local AS number 100
BGP table version is 18, main routing table version 18
17 network entries using 1989 bytes of memory
17 path entries using 884 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
1 BGP community 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 3589 total bytes of memory
BGP activity 17/0 prefixes, 17/0 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2.2.2.2 4 100 15 18 18 0 0 00:12:09 0
3.3.3.3 4 100 16 18 18 0 0 00:12:17 3
5.5.5.5 4 300 16 18 18 0 0 00:12:49 2
192.168.1.225 4 200 17 18 18 0 0 00:12:03 12
R4#sh ip bgp
BGP table version is 18, 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
*> 192.168.1.200/30 192.168.1.205 0 0 400 i
*>i192.168.1.212/30 1.1.1.1 0 100 0 300 i
*>i192.168.1.216/30 1.1.1.1 0 100 0 200 i
*> 192.168.50.0 192.168.1.205 0 0 400 i
*> 192.168.75.0 192.168.1.205 0 0 400 i
*>i192.168.100.0 1.1.1.1 0 100 0 200 i
*>i192.168.192.0 1.1.1.1 0 100 0 200 i
*>i192.168.192.0/21 1.1.1.1 0 100 0 200 i
*>i192.168.193.0 1.1.1.1 0 100 0 200 i
*>i192.168.194.0 1.1.1.1 0 100 0 200 i
*>i192.168.195.0 1.1.1.1 0 100 0 200 i
*>i192.168.196.0 1.1.1.1 0 100 0 200 i
*>i192.168.197.0 1.1.1.1 0 100 0 200 i
*>i192.168.198.0 1.1.1.1 0 100 0 200 i
*>i192.168.199.0 1.1.1.1 0 100 0 200 i
*>i192.168.200.0 1.1.1.1 0 100 0 200 i
*>i192.168.250.0 1.1.1.1 0 100 0 300 i
R4#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
B 192.168.192.0/24 [200/0] via 1.1.1.1, 00:12:47
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/11] via 192.168.1.193, 00:13:28, Ethernet1/0
B 192.168.193.0/24 [200/0] via 1.1.1.1, 00:12:47
2.0.0.0/32 is subnetted, 1 subnets
O 2.2.2.2 [110/21] via 192.168.1.193, 00:13:28, Ethernet1/0
B 192.168.194.0/24 [200/0] via 1.1.1.1, 00:12:47
B 192.168.75.0/24 [20/0] via 192.168.1.205, 00:12:49
3.0.0.0/32 is subnetted, 1 subnets
C 3.3.3.3 is directly connected, Loopback5
B 192.168.195.0/24 [200/0] via 1.1.1.1, 00:12:47
B 192.168.196.0/24 [200/0] via 1.1.1.1, 00:12:47
B 192.168.197.0/24 [200/0] via 1.1.1.1, 00:12:47
B 192.168.198.0/24 [200/0] via 1.1.1.1, 00:12:48
B 192.168.199.0/24 [200/0] via 1.1.1.1, 00:12:48
B 192.168.200.0/24 [200/0] via 1.1.1.1, 00:12:48
B 192.168.250.0/24 [200/0] via 1.1.1.1, 00:12:49
B 192.168.50.0/24 [20/0] via 192.168.1.205, 00:12:51
192.168.1.0/30 is subnetted, 7 subnets
B 192.168.1.200 [20/0] via 192.168.1.205, 00:12:51
C 192.168.1.204 is directly connected, Ethernet1/2
C 192.168.1.192 is directly connected, Ethernet1/0
C 192.168.1.196 is directly connected, Ethernet1/1
B 192.168.1.216 [200/0] via 1.1.1.1, 00:12:48
O 192.168.1.220 [110/20] via 192.168.1.193, 00:13:30, Ethernet1/0
B 192.168.1.212 [200/0] via 1.1.1.1, 00:12:49
B 192.168.100.0/24 [200/0] via 1.1.1.1, 00:12:48
B 192.168.192.0/21 [200/0] via 1.1.1.1, 00:12:48
R4#sh ip bgp summary
BGP router identifier 3.3.3.3, local AS number 100
BGP table version is 18, main routing table version 18
17 network entries using 1989 bytes of memory
17 path entries using 884 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 3565 total bytes of memory
BGP activity 17/0 prefixes, 17/0 paths, scan interval 60 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 100 19 17 18 0 0 00:13:37 14
2.2.2.2 4 100 16 17 18 0 0 00:13:25 0
192.168.1.205 4 400 17 19 18 0 0 00:13:30 3
R5#sh ip bgp
BGP table version is 18, local router ID is 192.168.75.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
*> 192.168.1.200/30 0.0.0.0 0 32768 i
*> 192.168.1.212/30 192.168.1.206 0 100 300 i
*> 192.168.1.216/30 192.168.1.206 0 100 200 i
*> 192.168.50.0 0.0.0.0 0 32768 i
*> 192.168.75.0 0.0.0.0 0 32768 i
*> 192.168.100.0 192.168.1.206 0 100 200 i
*> 192.168.192.0 192.168.1.206 0 100 200 i
*> 192.168.192.0/21 192.168.1.206 0 100 200 i
*> 192.168.193.0 192.168.1.206 0 100 200 i
*> 192.168.194.0 192.168.1.206 0 100 200 i
*> 192.168.195.0 192.168.1.206 0 100 200 i
*> 192.168.196.0 192.168.1.206 0 100 200 i
*> 192.168.197.0 192.168.1.206 0 100 200 i
*> 192.168.198.0 192.168.1.206 0 100 200 i
*> 192.168.199.0 192.168.1.206 0 100 200 i
*> 192.168.200.0 192.168.1.206 0 100 200 i
*> 192.168.250.0 192.168.1.206 0 100 300 i
R5#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
B 192.168.192.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.193.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.194.0/24 [20/0] via 192.168.1.206, 00:13:03
C 192.168.75.0/24 is directly connected, Loopback1
B 192.168.195.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.196.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.197.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.198.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.199.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.200.0/24 [20/0] via 192.168.1.206, 00:13:03
B 192.168.250.0/24 [20/0] via 192.168.1.206, 00:13:34
C 192.168.50.0/24 is directly connected, Loopback0
192.168.1.0/30 is subnetted, 4 subnets
C 192.168.1.200 is directly connected, Loopback3
C 192.168.1.204 is directly connected, Ethernet1/0
B 192.168.1.216 [20/0] via 192.168.1.206, 00:13:04
B 192.168.1.212 [20/0] via 192.168.1.206, 00:13:35
B 192.168.100.0/24 [20/0] via 192.168.1.206, 00:13:04
B 192.168.192.0/21 [20/0] via 192.168.1.206, 00:13:04
9、配置样例2
下面的示例中涉及到聚合路由内容,并将聚合路由使用community、router-map及prefix-list等功能实现过滤精细路由,拓扑图以下所示。
具体配置以下:
R1#sh running-config
!
hostname R1
!
interface Loopback0
ip address 192.168.192.1 255.255.255.0
!
interface Loopback1
ip address 192.168.193.1 255.255.255.0
!
interface Loopback2
ip address 192.168.194.1 255.255.255.0
!
interface Loopback3
ip address 192.168.195.1 255.255.255.0
!
interface Loopback4
ip address 192.168.196.1 255.255.255.0
!
interface Loopback5
ip address 192.168.197.1 255.255.255.0
!
interface Loopback6
ip address 192.168.198.1 255.255.255.0
!
interface Loopback7
ip address 192.168.199.1 255.255.255.0
!
interface Ethernet1/0
ip address 10.1.1.1 255.255.255.0
duplex half
!
interface Ethernet1/1
ip address 10.1.6.1 255.255.255.0
duplex half
!
router ospf 10
log-adjacency-changes
network 10.1.1.0 0.0.0.255 area 0
network 10.1.6.0 0.0.0.255 area 0
network 192.168.192.0 0.0.0.255 area 0
network 192.168.193.0 0.0.0.255 area 0
network 192.168.194.0 0.0.0.255 area 0
network 192.168.195.0 0.0.0.255 area 0
network 192.168.196.0 0.0.0.255 area 0
network 192.168.197.0 0.0.0.255 area 0
network 192.168.198.0 0.0.0.255 area 0
network 192.168.199.0 0.0.0.255 area 0
-------------------------------------------------------------------------------------------------------------------------
R2#sh running-config
interface Ethernet1/0
ip address 10.1.1.2 255.255.255.0
duplex half
!
interface Serial2/0
ip address 10.1.2.1 255.255.255.0
serial restart-delay 0
!
router ospf 10
log-adjacency-changes
network 10.1.1.0 0.0.0.255 area 0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
aggregate-address 192.168.192.0 255.255.248.0
redistribute ospf 10 metric 50
neighbor 10.1.2.2 remote-as 200
neighbor 10.1.2.2 send-community
neighbor 10.1.2.2 route-map community out
neighbor 10.1.6.2 remote-as 100
no auto-summary
!
access-list 110 permit ip host 192.168.192.0 host 255.255.248.0
!
route-map community permit 10
match ip address 110
set community none
!
route-map community permit 20
set community no-export
!
-------------------------------------------------------------------------------------------------------------------------
R3#sh running-config
interface Ethernet1/0
ip address 10.1.7.1 255.255.255.0
duplex half
!
interface Serial2/0
ip address 10.1.2.2 255.255.255.0
serial restart-delay 0
!
interface Serial2/1
ip address 10.1.3.1 255.255.255.0
serial restart-delay 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 10.1.2.1 remote-as 100
neighbor 10.1.3.2 remote-as 300
neighbor 10.1.7.2 remote-as 200
no auto-summary
!
-------------------------------------------------------------------------------------------------------------------------
R4#sh running-config
interface Serial2/0
ip address 10.1.3.2 255.255.255.0
serial restart-delay 0
!
interface Serial2/1
ip address 10.1.4.1 255.255.255.0
serial restart-delay 0
!
router bgp 300
no synchronization
bgp log-neighbor-changes
neighbor 10.1.3.1 remote-as 200
neighbor 10.1.4.2 remote-as 200
no auto-summary
!
-------------------------------------------------------------------------------------------------------------------------
R5#sh running-config
interface Ethernet1/0
ip address 10.1.7.2 255.255.255.0
duplex half
!
interface Serial2/0
ip address 10.1.4.2 255.255.255.0
serial restart-delay 0
!
interface Serial2/1
ip address 10.1.5.1 255.255.255.0
serial restart-delay 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 10.1.4.1 remote-as 300
neighbor 10.1.5.2 remote-as 100
neighbor 10.1.7.1 remote-as 200
no auto-summary
!
-------------------------------------------------------------------------------------------------------------------------
R6#sh running-config
interface Ethernet1/0
ip address 10.1.6.2 255.255.255.0
duplex half
!
interface Serial2/0
ip address 10.1.5.2 255.255.255.0
serial restart-delay 0
!
!
router ospf 10
log-adjacency-changes
network 10.1.6.0 0.0.0.255 area 0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
aggregate-address 192.168.192.0 255.255.248.0
redistribute ospf 10 metric 50
neighbor 10.1.1.2 remote-as 100
neighbor 10.1.5.1 remote-as 200
neighbor 10.1.5.1 send-community
neighbor 10.1.5.1 route-map community out
no auto-summary
!
!
ip prefix-list aggregate seq 5 permit 192.168.192.0/21
!
route-map community permit 10
match ip address prefix-list aggregate
set community none
!
route-map community permit 20
set community no-export
!
配置完成之后,能够查看聚合路由表。
R4#sh ip bgp
BGP table version is 32, local router ID is 10.1.4.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
* 192.168.192.0/21 10.1.4.2 0 200 100 i
*> 10.1.3.1 0 200 100 i
R3#sh ip bgp
BGP table version is 22, local router ID is 10.1.7.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
* i10.1.1.0/24 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 0 0 100 ?
* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.192.0/21 10.1.5.2 0 100 0 100 i
*> 10.1.2.1 0 0 100 i
* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.195.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.196.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.197.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.198.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.199.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
R5#sh ip bgp
BGP table version is 33, local router ID is 10.1.7.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
* i10.1.1.0/24 10.1.2.1 0 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i10.1.6.0/24 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 0 0 100 ?
*> 192.168.192.0/21 10.1.5.2 0 0 100 i
* i 10.1.2.1 0 100 0 100 i
* i192.168.192.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.193.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.194.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.195.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.196.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.197.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.198.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
* i192.168.199.1/32 10.1.2.1 50 100 0 100 ?
*> 10.1.5.2 50 0 100 ?
使用下面的命令查看携带NO-EPORT COMMUNITY属性的路由状况
R3#sh ip bgp community no-export
BGP table version is 22, local router ID is 10.1.7.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 10.1.2.1 0 0 100 ?
*> 10.1.6.0/24 10.1.2.1 50 0 100 ?
*> 192.168.192.1/32 10.1.2.1 50 0 100 ?
*> 192.168.193.1/32 10.1.2.1 50 0 100 ?
*> 192.168.194.1/32 10.1.2.1 50 0 100 ?
*> 192.168.195.1/32 10.1.2.1 50 0 100 ?
*> 192.168.196.1/32 10.1.2.1 50 0 100 ?
*> 192.168.197.1/32 10.1.2.1 50 0 100 ?
*> 192.168.198.1/32 10.1.2.1 50 0 100 ?
*> 192.168.199.1/32 10.1.2.1 50 0 100 ?
R5#sh ip bgp community no-export
BGP table version is 33, local router ID is 10.1.7.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
*> 10.1.1.0/24 10.1.5.2 50 0 100 ?
*> 10.1.6.0/24 10.1.5.2 0 0 100 ?
*> 192.168.192.1/32 10.1.5.2 50 0 100 ?
*> 192.168.193.1/32 10.1.5.2 50 0 100 ?
*> 192.168.194.1/32 10.1.5.2 50 0 100 ?
*> 192.168.195.1/32 10.1.5.2 50 0 100 ?
*> 192.168.196.1/32 10.1.5.2 50 0 100 ?
*> 192.168.197.1/32 10.1.5.2 50 0 100 ?
*> 192.168.198.1/32 10.1.5.2 50 0 100 ?
*> 192.168.199.1/32 10.1.5.2 50 0 100 ?
也能够在上面配置的基础上实现以下策略:
? 经过R2-R3链路来宣告192.168.192.0/2四、192.168.193.0/2四、192.168.194.0/24
? 经过R6-R5链路来宣告192.168.196.0/2四、192.168.197.0/2四、192.168.198.0/24
? 不宣告192.168.195.0/2四、192.168.199.0/24
具体配置以下:
R2#sh running-config
router bgp 100
no synchronization
bgp log-neighbor-changes
aggregate-address 192.168.192.0 255.255.248.0 suppress-map suppress
!
access-list 1 permit 192.168.195.0 0.0.0.255
access-list 1 permit 192.168.196.0 0.0.3.255
!
route-map suppress permit 10
match ip address 1
R6#sh running-config
router bgp 100
no synchronization
bgp log-neighbor-changes
aggregate-address 192.168.192.0 255.255.248.0 suppress-map suppress
!
ip prefix-list suppress seq 5 permit 192.168.192.0/22 le 24
ip prefix-list suppress seq 10 permit 192.168.199.0/24
!
route-map suppress permit 10
match ip address prefix-list suppress
使用命令查看路由状态
R3#sh ip bgp
BGP table version is 39, local router ID is 10.1.7.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
* i10.1.1.0/24 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 0 0 100 ?
* i10.1.6.0/24 10.1.5.2 0 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.192.0/21 10.1.5.2 0 100 0 100 i
*> 10.1.2.1 0 0 100 i
* i192.168.192.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.193.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.194.1/32 10.1.5.2 50 100 0 100 ?
*> 10.1.2.1 50 0 100 ?
* i192.168.195.1/32 10.1.5.2 50 100 0 100 ?
* i192.168.196.1/32 10.1.5.2 50 100 0 100 ?
* i192.168.197.1/32 10.1.5.2 50 100 0 100 ?
* i192.168.198.1/32 10.1.5.2 50 100 0 100 ?
* i192.168.199.1/32 10.1.5.2 50 100 0 100 ?
R5#sh ip bgp
BGP table version is 62, local router ID is 10.1.7.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
*> 10.1.1.0/24 10.1.5.2 50 0 100 ?
* i 10.1.2.1 0 100 0 100 ?
*> 10.1.6.0/24 10.1.5.2 0 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.192.0/21 10.1.5.2 0 0 100 i
* i 10.1.2.1 0 100 0 100 i
*> 192.168.192.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.193.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.194.1/32 10.1.5.2 50 0 100 ?
* i 10.1.2.1 50 100 0 100 ?
*> 192.168.195.1/32 10.1.5.2 50 0 100 ?
*> 192.168.196.1/32 10.1.5.2 50 0 100 ?
*> 192.168.197.1/32 10.1.5.2 50 0 100 ?
*> 192.168.198.1/32 10.1.5.2 50 0 100 ?
*> 192.168.199.1/32 10.1.5.2 50 0 100 ?