《最详细BGP的学习笔记(共31页).docx》由会员分享,可在线阅读,更多相关《最详细BGP的学习笔记(共31页).docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上BGP第一节:IBGP邻居(所用的版本是4)IBGP邻居:通常运行在同一个AS内。AS :就是一组被统一管理的路由器。这组路由器的特点:使用相同的内部网关协议,统一的度量值。特点:可以直连,也可以不直连,但是底层必须能够访问。AS号在eigrp的作用就是用于邻居的建立。在BGP中可以理解为是不同的运营商。bgp的AS号是需要申请的。具体的配置:neighbor 邻居Ip remote-as AS号show controllers serial 0/0查看某接口是DCE还是DTE。配置时钟速率:clock rate 64000一定要在DCE端配置时钟速率。R1与R2 建
2、立邻居BGP的三张表:邻居表:BGP的邻居关系不会自动建立,需要单播进行指邻居。(保留对端的AS 号码)BGP表:收集所有的路由信息,并且保留BGP 的所有属性-更好的做人为控制。BGP的管理距离值:20和200;20是从EBGP学过来的路由,200是从IBGP学过来的路由。路由表:BGP的报文:Open:Keepalive:激活 (hold时间不一样,邻居可以建立,它会进行协商选择时间小的,并且它的keepalive的时间自动调整为Hold时间的1/3。如果hello时间为0则BGP的邻居不down)(需要注注意的是:hello时间不一样,ospf的邻居将不会建立) 修改命令;times b
3、gp 10 30Update:包括路由器的属性,还有我BGP的路由信息。Notification:如果两端的AS号不一致,则会出现NOTIFICATION这个报文。-BGP建立出错的时候也会出现这个报文。(2):清除了BGP的邻居关系时,也会出现这种报文。BGP的经典案例(IBGP)解决方法:如果有多条链路,就要建立多个邻居关系。用物理接口建立邻居;不太可行(不太稳定),但是所出现的问题能解决。用这种方法所出现的问题:设备的消耗(内存,CPU)第二中的解决方法:就是邻居地址起环回口。(提供了邻居关系的备份)这样的解决方案是最优的。为什么做是最优的?用环回口建立邻居可以使的邻居关系更稳定,因为如
4、果是接口建立,一出现接口动荡就会影响邻居关系,用环回口会一直在。环回口还可以使链路有冗余。但是需要解决两问题:1:底层路由可达性2:就是对源的检测(比较我neighbor地址是否是对端的发包地址的源地址)源检测就是检测数据包的源地址是否是neighbor后的地址如果要想邻居建立则如图该怎么解决呢?根据命令修改。Neighbor (ip-address)update-source interface-type interface-numberR1Neighbor 2.2.2.2 update-source loopback 0R2Neighbor 1.1.1.1 update-source lo
5、opback 0需要注意的是:该命令通常用在建立IBGP邻居。如果R2开启了源检测,则那一个端口是TCP端口。(提供服务的端口,或者是目的端口)R2是TCP端口。查看命令 show ip bgp neiShow tcp briBGP的同步技术如果不是通过IBP得到的路由,或者是不可到达广播的下一跳,就不能把IBGP学到的路由,安装在路由表中,这就是同步。EBGP邻居的建立建立EBGP所遵循的规则;1:解决问题是路由。(通常AS与AS之间有两种路由,一种是静态路由,另一种是缺省路由。)-底层可达2:更新源的问题3:检测直连路由(TTL默认1)如果TTL值为0,路由器将会把包丢弃。以环回接口来建立
6、EBGP邻居,如果TTL值为1.则BGP不会发包,所以要修改TTL值。命令:neighbor (ip-address) ebgp-multihop +(ttl值)总结:1:如果用的是直连接口,不管建立的是EBGP还IBGP,只需neighbor一条命令。2:如果用环回接口来建立IBGP邻居,需要两条命令(1)neighbor XXX remote-as +AS号(2)Neighbor (ip-address)update-source interface-type interface-number3:如果用环回接口来建立EBGP邻居,需要用三条命令:(1)neighbor(2)Neighbor
7、 (ip-address)update-source interface-type interface-number(3)neighbor (ip-address) ebgp-multihop +(ttl值)注意的是;BGP的连接关系凌驾与IGP之上。(BGP的邻居的建立需要igp,但是我bgp的路由的传递不需要igp的)如果两AS与AS之间用的是静态路由,则邻居将会建立。如果两AS与AS之间用的是缺省路由,则邻居将不会建立。原因是:BGP建立邻居需要在路由表里找到邻居Ip地址的明细路由,如果没有明细路由邻居将不能建立。假如:R1 静态路由 (发包)R2 缺省路由 show tcp bri 1
8、79实验:EBGP建立邻居一般用直连接口建立。show running-config | begin bgp第二部分:邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。比较特殊的是ebgp的network和IBGP不一样,EBGP的network叫通告路由。BGP路由的通告邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。就是没有BGP路由。解决方法:就是用通告路由技术。就是BGP的network比较特殊的是IGP的network和EGP不一样,EGP的network叫通告路由。IGP的network是匹配接口范围。(属于这个范围的接口,都能network)第一个问题:BG
9、P network所遵循的规则;1:不能随便network,比如是自己路由表中不存在的路由条目,BGP就不能network。2:BGP network时首先检测自己的路由表,如果路由表中有这条路由条目,则这条路由就能被BGP network.如果没有就不能network。(除去路由条目的前面标识为 B的路由条目)Router bgp AS号Network xxxx mask xxxx一般从EBGP邻居学来的路由,都是可优的。只有优化的路由才能被传递。bgp的路由传递不借助底层链路。第二个问题:从IBGP学来的路由让它可优遵循两条件:1:同步我BGP的路由和IGP的路由相同。也可以说我BGP有的
10、路由条目,我IGP也有。ip route x x x x x x x x null 0 (不同放入路由表,该方法不可行)2:下一跳可达 主要看自己的路由表中有没有下一跳可达路由的网段。如果没有,用BGP欺骗的方法给自己的路由表中加入该网段。 命令: ip route x x x x x x x x null 0 (不可行,但是能解决)正确的解决方法:Neighbor (ip-address) next-hop-self需要注意的是:(一般跳数是根据AS来算的,在一个AS内部跳数不会发生改变 )接下来就是解决同步问题:1:重分布,把bgp额路由条目重分布到,OSPF中,这种是一种方法。2:关闭同
11、步 no synchronization 关闭同步的条件。解决BGP的路由黑洞1:全网互联2:联邦3:路由反射器另一种邻居的建立Neighbor peer-group -name peer-group当一个路由器尝试与多个路由器之间建立BGP邻居关系时,并且我和这几个邻居路由器之间的路由条目或者做的路由的策略相同时,这样我就会与这个组建立邻居。条件就是:必须把这几个路由器加入到这个组里。需要用到的命令:Neighbor 组的名字 peer-groupNeighbor 邻居的地址 peer-group 组名Peer-group 的缺点:当 R2 R3建立单独的策略时,out方向不行,in方向行。
12、优点:1:减少资源2:减少配置BGP的五种状态Idle 查找路由表 ,找建立邻居的路由条目,如果有则进行TCP握手。Active 表明我的底层路由有,并且尝试的去建立邻居了。Connect 当完成了三次握手,就到了这状态了。目的端口是179时,才会到这状态。意味这TCP连接已经完成了。Open sent 发送BGP信息,路由信息Open confirm 表示邻居已经建立。Established查看某路由器是否是给自己的邻居路由的命令:Show ip bgp neighbors 对端邻居的地址 advertised-routesBGP邻居的认证命令:neighbor (ip-address/pe
13、er-group-name) password string(密码)注意:bgp只支持MD5认证,不支持明文认证。认证成功的标志:就是对端发送过来的hash与自己本端的hash值进行对比。如果相同,则表明认证成功。反之,则认证不成功清除BGP表的方式清除BGP表的方式有两种:1:硬清除 hard reset clear ip bgp * / clear ip bgp +邻居地址2:软清除 soft reset clear ip bgp +(邻居地址/ *) softout (只对out方向进行清理)对in方向的清理命令: clear ip bgp +邻居地址 soft-reconfigurat
14、ion inbound clear ip bgp +(邻居地址/*) soft in这几条命令的用途:配置路由器的策略时。主要对bgp的策略起来的速度 快点IBGP的水平分割技术解析该试验;R4将自己的4.4.44 network后,查R2的bgp表,得到的结果是该路由是优化的,在查看R1是该路由没有优化,(解决方法就是在R2上修改下一跳)这样这条路由就优化了。但是在查看R3时,发现R3的bgp表中就没有这条路由条目,(不管是优化的,还是没有优化的都没有)。根据这条命令查看(Show ip bgp neighbors 对端邻居的地址 advertised-routes)得到结果就是R1就没有给
15、R3发送这条路由。造成这样的后果 的原因就是,IBGP的水平分割。解决以上 出现的问题就是:1:R2 与R3之间建立IBGP邻居。2:创建路由反射器IBGP的水平分割:(路由黑洞)就是从IBGP邻居学习到的一条路由,我就不会再把这条路由在传递我的IBGP邻居。解决IBGP水平的方法:1:R2与R3建立IBGP邻居。2:全网 互联3:路由反射器4:联邦 第一部分:路由反射器(RR)路由反射簇:一组路由器的集合解释图中的角色:RB RC RD 是一个路由反射簇。RC RD是一个路由反射簇中的客户端RB是反射器RE是非客户端RA是EBGP邻居杰克的三句话:1:从我的路由反射簇中的组成员,传过来一条路
16、由,我会把它反射给我的另一个客户端,我会把它反射给我的一个非客户端。同 时也反射给我的一个EBGP邻居。2:角色介绍:RB RD 是一个路由反射簇RB是反射器RD是客户端一个普通运行BGP的路由器,传过来 一条路由,给RR,RR会给我的客户端,RR也会给我的EBGP邻居。但不会传给我的另外一个普通的IBGP邻居。3:角色介绍:RB RD 是一个路由反射簇RB是反射器RD是客户端3:从我EBGP传过来的路由,当达到RR之后,RR会反射给我的另一个EBGP邻居,RR也会反射我的客户端,RR也会反射给我的另外一个普通IBGP邻居。总结:路由反射簇=大的路由器实验:主要的配置就是在反射器上,配置一条命
17、令:Neighbor (对端邻居的地址) route-reflector-client这样做的效果就是让R3 R5 把4.4.4.4这条路由优化。配置路由反射器簇ID:bgp cluster-id xxxx(它会随机产生的)这簇id与BGP的选路的时候会考虑到簇id,进过的RR越多 ,则簇id越长。作业:分析实验拓扑。会出现什么情况呢?主要的两句话:1:我们把路由反射簇当做一个大的路由器。我路由反射器与client共同构成了路由反射簇。2:这个路由反射簇只有RR知道。就是在这个路由反射簇中只有server知道client,但是 client不知道server。以上的两句话是解决以上实验拓扑的钥
18、匙。认真研究。联邦技术主要就是在大的AS中划分成几个的小的联邦。需要一个联邦的AS号(私有的)说明:R2与R1组的AS号是:65001R3组的AS号是:65002在大的AS=123中建立两个小联邦,联邦的标识用联邦的AS来标识。 需要注意的是:R2与R1建立bgp confederation identifier 123)这句话配在建立联邦的每一个路由器上。 这句话的作用就是:告诉我EBGP邻居,我的AS号是123.R2 R4 建立的是EBGP邻居时,只要配置这一条命令,邻居就会起来,但是如果向R3 R5建立的是IBGP邻居时。这条命令不能让邻居起来。解决的方法:R1与R3建立的是联邦的EBG
19、P,R2 与R1建立的IBGP不一样。R1与R3在大的AS=123中建立的是联邦的EBGP,而且是用环回口建立的所以要敲三条命令:Neighbor 环回 remote-as AS号Neighbor 环回 update-soureNeighbor 环回 ebgp-multihop建立联邦必须要打的命令:bgp confederation peers+邻居的AS号作用 就是除去这个AS号,其他的是As是123bgp confederation identifier 123 主要作用就是。来联邦内部的路由器向外部宣告自己是AS=123一定要注意的是在建立R4与 R2 和 R3与R5,邻居时其实就要就
20、要这样配: Router bgp 400Neihbor 192.169.24.2 remote-as 123小技巧:检测下一跳是否可达,拼下一跳就会判定出来。BGP聚合技术作用:减少路由条目BGP的路由聚合可以在任何路由器上做聚合。第一种方法: 有两步:1:在路由表中加一条: ip route +(明细的聚合路由) mask x x x x null 0 (防止打环)2:再把这条聚合路由network BGP表中。需要注意的是:把明细的路由条目不要network到BGP表中。如: 172.1.12.1172.1.13.1172.1.14.1172.1.15.1会聚后的地址:172.1.12.1
21、- 255.255.252.0第二种方法:Router bgp 400 Aggregate-address 172.1.12.0 255.255.252.0 summary-only 注意的是:AS的丢失会造成路由环路。AS可以防环。2)“as-set”参数可以使BGP 聚合路由不丢失原来的AS-PATH 属性,从而避免路由环路。解决AS丢失的问题:Router bgp 400Aggregate-address 172.1.12.0 255.255.252.0 summary-only as-set这条命令的作用就是:还原AS-path属性实验图形:这个实验比较简单,主要能体现出,还原AS-P
22、ATH属性的实验。R1:BGP表 Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 0.0.0.0 0 32768 i* 1.1.0.0/22 192.168.13.3 0 0 200 i* 1.1.1.0/24 0.0.0.0 0 32768 i* 1.1.2.0/24 192.168.13.3 0 200 300 i* 1.1.3.0/24 192.168.13.3 0 200 300 iR2:BGP表: Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 192.168.
23、23.3 0 200 100 i* 1.1.0.0/22 192.168.23.3 0 0 200 i* 1.1.1.0/24 192.168.23.3 0 200 100 i* 1.1.2.0/24 0.0.0.0 0 32768 i* 1.1.3.0/24 0.0.0.0 0 32768 iR3:BGP表 Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 192.168.13.1 0 0 100 i* 1.1.0.0/22 0.0.0.0 32768 i* 1.1.1.0/24 192.168.13.1 0 0 100 i* 1.
24、1.2.0/24 192.168.23.2 0 0 300 i* 1.1.3.0/24 192.168.23.2 0 0 300 iR4:BGP表 Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 192.168.34.3 0 200 100 i* 1.1.0.0/22 192.168.34.3 0 0 200 i* 1.1.1.0/24 192.168.34.3 0 200 100 i* 1.1.2.0/24 192.168.34.3 0 200 300 i* 1.1.3.0/24 192.168.34.3 0 200 300 i
25、路由器R1、R4 收到“1.1.0.0/22”聚合路由,通过AS-PATH 属性可以看出,执行地址聚合的路由器R2 成为新路由的创造者,原来AS-PATH 属性丢失; 路由器R4 同时也收到4 条明细路由,在显示的AS-PATH 序列中,路由的始发AS 在列表的末端(右侧),每个收到该路由,并把它传递给其它AS 的BGP 对等体会把它自己的AS 追加在列表的开头(左侧); BGP 路由器下一跳为“0.0.0.0”,表示该BGP 路由起源本地,Weight 值为“32768”; 因为所有BGP 路由条目的代码为“*”,所以所有BGP 路由条目都为最优。R3路由器配置了路由聚合:2)“as-set
26、”参数可以使BGP 聚合路由不丢失原来的AS-PATH 属性,从而避免路由环路,在路由器R3 上操作如下aggregate-address 1.1.0.0 255.255.252.0 as-setBGP表的变化: Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 192.168.13.1 0 0 100 i* 1.1.0.0/22 0.0.0.0 100 32768 100,300 i* 1.1.1.0/24 192.168.13.1 0 0 100 i* 1.1.2.0/24 192.168.23.2 0 0 300 i* 1.1.
27、3.0/24 192.168.23.2 0 0 300 iR4 Network Next Hop Metric LocPrf Weight Path* 1.1.0.0/24 192.168.34.3 0 200 100 i* 1.1.0.0/22 192.168.34.3 0 0 200 100,300 i* 1.1.1.0/24 192.168.34.3 0 200 100 i* 1.1.2.0/24 192.168.34.3 0 200 300 i* 1.1.3.0/24 192.168.34.3 0 200 300 i 路由器R4 上收到的汇总路由“1.1.0.0/22”中,AS-PAT
28、H 包含了被聚合路由中所有的AS 号码的集合“100,300”; 聚合路由正是由于携带了所有的AS,所以在路由器R1 的BGP 表中没有出现,当然在路由器R2 的BGP 表中也不会出现。【技术要点】BGP 使用AS-PATH 属性作为路由更新的一部分来确保没有路由环路。因为在BGP 对等体之间传递的每条路由都携带它所经过的AS 号码序列表,如果该路由被通告给它始发的AS,该AS 路由器将在AS 序列表中看到自己的AS,它将不接受该路由。R3#show ip bgp neighbor 192.168.13.1 advertised-routes Network Next Hop Metric L
29、ocPrf Weight Path* 1.1.0.0/22 0.0.0.0 100 32768 100,300 i说明:R3向R1发送了一条1.1.0.0/22这条路由聚合。R1#show ip bgp neighbors 192.168.13.3 received-routes% No such neighbor or address family路由器R1 没有接收聚合路由“1.1.0.0/22”,因为它发现聚合路由条目中的AS-PATH 属性列表“100,300”中包含自己的AS 号码100,所以不接收。同理,路由器R3 也不会接收该聚合路由条目。接下来这个实验有点难。路由条目表项的状态
30、代码以上输出中,路由条目表项的状态代码(Status codes)的含义解释如下: s:表示路由条目被抑制; d:表示路由条目由于被惩罚而受到抑制,从而阻止了不稳定路由的发布; h: 表示该路由该路由正在被惩罚,但还未达到抑制阀值而使它被抑制; *: 表示该路由条目有效; : 表示该路由条目最优,可以被传递,达到最优的重要前提是下一跳可达; i:表示该路由条目是从IBGP 邻居学到的; r:表示将BGP 表中的路由条目放入到IP 路由表中失败。以上输出中,起源代码(Origin codes)的含义解释如下: i:表示路由条目来源为IGP; e:表示路由条目来源为EGP; ?: 表示路由条目来源
31、不清楚,通常是从IGP 重分布到BGP 的路由条目。BGP的suppress-map参数的解释:主要含义是:如果有特殊的需求,在聚合后只抑制部分明细路由条目,参数“suppress-map”可以完成。在做会聚路由的路由器上查看BGP表会出现一个情况:路由器R3 上所有被聚合的明细路由被标记为“s”,表示被抑制,不被送;“summary-only”这参数的意思是:会抑制全部的明细路由条目。(在其他路由器上)实验要求:本实验要求路由器R2 地址聚合后,要求路由器R1 的两条明细路由被抑制,而路由器R2 的明细路由要求传递给路由器R4,路由器R3 配置步骤如下:前缀列表的写法:ip prefix-l
32、ist 1 permit 1.1.0.0/24 /匹配路由条目,以便进行控制ip prefix-list 1 permit 1.1.1.0/24route-map sup permit 10match ip address prefix-list 1router bgp 200aggregate-address 1.1.0.0 255.255.252.0 as-setsuppress-map supR3的BGP表的变化 Network Next Hop Metric LocPrf Weight Paths 1.1.0.0/24 192.168.13.1 0 0 100 i* 1.1.0.0/2
33、2 0.0.0.0 100 32768 100,300 is 1.1.1.0/24 192.168.13.1 0 0 100 i* 1.1.2.0/24 192.168.23.2 0 0 300 i* 1.1.3.0/24 192.168.23.2 0 0 300 iBGP的属性(community)团体这个的属性的作用:主要给这些BGP的路由设些标记,按照标记所传的范围,对相应的路由做相应的过滤。“local-AS”、“no-export”和“no-advertise(常用的属性)1;Additive:添加community属性,假如说对于一条路由,如果我把它匹配住,这条路由在我匹配之前,都
34、有匹配过团体路由,如果我想再加一些属性,那么以前的属性将被覆盖。为了避免这一情况,我们加入additive这参数。这样新的属性将会加入的,而且会保留以前的属性。2:internet:默认就是这种属性。3:local-AS:就是不要把标有该属性的路由传出联邦小的的AS.(范围是联邦的AS)当我有联邦AS时,该路由将不会传出AS.4:no-export:就是不要把标有该属性的路由传出我大AS.换句话说不要这条路由公告给我的EBGP邻居。5:no-advertise:就是不要把标有该属性的路由公告给我任何邻居。注意的是:因为如果没有联邦AS的话,你把这条路由设置为LOCAL-AS,或者no-expo
35、rt,则产生的将是该路由将不会传到其他的AS.配置实例:ip prefix-list 1 permit 4.4.4.0/24 /定义前缀列表route-map Local_AS permit 10 /定义route-mapmatch ip address prefix-list 1 /匹配前缀列表set community local-AS /设置团体属性router bgp 65002neighbor 3.3.3.3 send-community /开启发送团体属性的能力neighbor 3.3.3.3 route-map Local_AS out/在出方向向邻居发送团体属性需要注意的是;如
36、果BGP表还有原来的路由条目,则用clear ip bgp * s 命令。BGP的路由汇总表BGP的六大属性(1)AS_PATH(AS 路径):指出包含在UPDATE 报文中的路由信息所经过的自治系统的序列;(属于公认强制属性:所有的路由器都认识,必须要强制执行)作用:就是防止环路如果我收到一个条目发现这个条目的AS-PATH属性有我本AS号,这时候我将不去接收它。解决这种问题的方法:就是敲一条命令:neighbor (想收我标有本as路由的邻居)allowas-in +加收的条数。注意:AS-PATH在一个AS里是不会改变的。通过修改AS-PATH来影响BGP的选路。怎样才是优的路由呢?经过
37、的AS越少越优,如果AS短的链路带宽低,AS长的带宽高,要想数据走带宽高的链路,解决方法就是将短的AS加长。(2)Next_HOP(下一跳):声明路由器所获得的BGP 路由的下一跳。对EBGP 会话来说,下一跳就是通告该路由的邻居路由器的源地址。对于IBGP 会话,有两种情况,一是起源AS内部的路由的下一跳就是通告该路由的邻居路由器的源地址;二是由EBGP 注入AS 的路由,它的下一跳会不变的带入IBGP 中;(公认强制的)(3)ORIGIN(起源):这个属性说明了源路由是怎样放到BGP 表中的。有三个可能的源:IGP,EGP 以及INCOMPLETE。路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN 类型的路径。ORIGIN 类型从低到高的顺序为:IGPEGPi1.1.1.0/24 1.1.1.1 0 100 0 i用IGP承载BGP,大于任何的IGP的管理距离,所以放不进路由表。起源属性ip prefix-list 1 permit 4.4.4.0/24route-map egp permit 10match ip address prefix-list 1set origin egp 900 /设置起源代码router bgp 200neighbor 14.14.14.1 route-map egp out/在出方向为去往