《最详细BGP的学习笔记.docx》由会员分享,可在线阅读,更多相关《最详细BGP的学习笔记.docx(25页珍藏版)》请在三一办公上搜索。
1、最详细BGP的学习笔记BGP第一节:IBGP邻居 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的邻居关系不会自动建立,需要单播进行指邻居。 BGP表:收集所有的路由信息,并且保留BGP 的所有属性-更好的做人为控制。 BGP的管理距离值:20和200;20是从EBGP学过来的路由,200是从IBGP学过来的路由。 路由表: BGP的报文: Open: Keepalive:激活 (需要注注意的是:hello时间不一样,ospf的邻居将不会建立) 修改命令;timesbgp 10 30 Update:包括路由器的属性,还有我BGP的路由信息。 Notification: 如果两端的AS号不一致,则会出现NOTIFICATION这个报文。-BGP建立
3、出错的时候也会出现这个报文。:清除了BGP的邻居关系时,也会出现这种报文。 BGP的经典案例 解决方法:如果有多条链路,就要建立多个邻居关系。 用物理接口建立邻居;不太可行(不太稳定),但是所出现的问题能解决。 用这种方法所出现的问题:设备的消耗 第二中的解决方法:就是邻居地址起环回口。 这样的解决方案是最优的。 为什么做是最优的? 用环回口建立邻居可以使的邻居关系更稳定,因为如果是接口建立,一出现接口动荡就会影响邻居关系,用环回口会一直在。环回口还可以使链路有冗余。 但是需要解决两问题: 1:底层路由可达性 2:就是对源的检测 源检测就是检测数据包的源地址是否是neighbor后的地址 如果
4、要想邻居建立则如图 该怎么解决呢?根据命令修改。 Neighbor update-source interface-type interface-number R1 Neighbor 2.2.2.2 update-source loopback 0 R2 Neighbor 1.1.1.1 update-source loopback 0 需要注意的是:该命令通常用在建立IBGP邻居。 如果R2开启了源检测,则那一个端口是TCP端口。 R2是TCP端口。查看命令 show ipbgpnei Show tcpbri BGP的同步技术 如果不是通过IBP得到的路由,或者是不可到达广播的下一跳,就不能
5、把IBGP学到的路由,安装在路由表中,这就是同步。 EBGP邻居的建立 建立EBGP所遵循的规则; 1:解决问题是路由。-底层可达 2:更新源的问题 3:检测直连路由如果TTL值为0,路由器将会把包丢弃。 以环回接口来建立EBGP邻居,如果TTL值为1.则BGP不会发包,所以要修改TTL值。 命令:neighbor (ip-address) ebgp-multihop +(ttl值) 总结: 1:如果用的是直连接口,不管建立的是EBGP还IBGP,只需neighbor一条命令。 2:如果用环回接口来建立IBGP邻居,需要两条命令 neighbor XXX remote-as +AS号 Neig
6、hbor update-source interface-type interface-number 3:如果用环回接口来建立EBGP邻居,需要用三条命令: neighbor Neighbor update-source interface-type interface-number neighbor (ip-address) ebgp-multihop +(ttl值) 注意的是; BGP的连接关系凌驾与IGP之上。 如果两AS与AS之间用的是静态路由,则邻居将会建立。 如果两AS与AS之间用的是缺省路由,则邻居将不会建立。 原因是:BGP建立邻居需要在路由表里找到邻居Ip地址的明细路由,如果
7、没有明细路由邻居将不能建立。 假如: R1 静态路由 R2 缺省路由 show tcpbri 179 实验: EBGP建立邻居一般用直连接口建立。 show running-config | begin bgp 第二部分: 邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。 比较特殊的是ebgp的network和IBGP不一样,EBGP的network叫通告路由。 BGP路由的通告 邻居已建立,但是路由器的BGP表是空的,需要我们手工指定的。就是没有BGP路由。 解决方法:就是用通告路由技术。就是BGP的network 比较特殊的是IGP的network和EGP不一样,EGP的net
8、work叫通告路由。 IGP的network是匹配接口范围。(属于这个范围的接口,都能network) 第一个问题: BGP network所遵循的规则; 1:不能随便network,比如是自己路由表中不存在的路由条目,BGP就不能network。 2:BGP network时首先检测自己的路由表,如果路由表中有这条路由条目,则这条路由就能被BGP network. 如果没有就不能network。 Router bgp AS号 Network xxxx mask xxxx 一般从EBGP邻居学来的路由,都是可优的。只有优化的路由才能被传递。 bgp的路由传递不借助底层链路。 第二个问题: 从I
9、BGP学来的路由让它可优遵循两条件: 1:同步我BGP的路由和IGP的路由相同。也可以说我BGP有的路由条目,我IGP也有。 ip route x xxxxxxx null 0 2:下一跳可达 主要看自己的路由表中有没有下一跳可达路由的网段。如果没有,用BGP欺骗的方法给自己的路由表中加入该网段。 命令: ip route x xxxxxxx null 0 正确的解决方法: Neighbor (ip-address) next-hop-self 需要注意的是:(一般跳数是根据AS来算的,在一个AS内部跳数不会发生改变 ) 接下来就是解决同步问题: 1:重分布,把bgp额路由条目重分布到,OSP
10、F中,这种是一种方法。 2:关闭同步 no synchronization 关闭同步的条件。 解决BGP的路由黑洞 1:全网互联 2:联邦 3:路由反射器 另一种邻居的建立 Neighbor peer-group -name peer-group 当一个路由器尝试与多个路由器之间建立BGP邻居关系时,并且我和这几个邻居路由器之间的路由条目或者做的路由的策略相同时,这样我就会与这个组建立邻居。 条件就是:必须把这几个路由器加入到这个组里。 需要用到的命令: Neighbor 组的名字 peer-group Neighbor 邻居的地址 peer-group 组名 Peer-group 的缺点:
11、当 R2 R3建立单独的策略时,out方向不行,in方向行。 优点: 1:减少资源 2:减少配置 BGP的五种状态 Idle 查找路由表,找建立邻居的路由条目,如果有则进行TCP握手。 Active 表明我的底层路由有,并且尝试的去建立邻居了。 Connect 当完成了三次握手,就到了这状态了。目的端口是179时,才会到这状态。意味这TCP连接已经完成了。 Open sent 发送BGP信息,路由信息 Open confirm 表示邻居已经建立。 Established 查看某路由器是否是给自己的邻居路由的命令: Show ipbgp neighbors 对端邻居的地址 advertised-
12、routes BGP邻居的认证 命令:neighbor (ip-address/peer-group-name) password string 注意:bgp只支持MD5认证,不支持明文认证。 认证成功的标志:就是对端发送过来的hash与自己本端的hash值进行对比。如果相同,则表明认证成功。反之,则认证不成功 清除BGP表的方式 清除BGP表的方式有两种: 1:硬清除 hard reset clear ipbgp * / clear ipbgp +邻居地址 2:软清除 soft reset clear ipbgp +(邻居地址/ *) softout (只对out方向进行清理) 对in方向的
13、清理命令: clear ipbgp +邻居地址 soft-reconfiguration inbound clear ipbgp +(邻居地址/*) soft in 这几条命令的用途:配置路由器的策略时。主要对bgp的策略起来的速度快点 IBGP的水平分割技术 解析该试验; R4将自己的4.4.44 network后,查R2的bgp表,得到的结果是该路由是优化的,在查看R1是该路由没有优化,这样这条路由就优化了。但是在查看R3时,发现R3的bgp表中就没有这条路由条目,。 根据这条命令查看得到结果就是R1就没有给R3发送这条路由。 造成这样的后果的原因就是,IBGP的水平分割。 解决以上出现的
14、问题就是: 1:R2 与R3之间建立IBGP邻居。 2:创建路由反射器 IBGP的水平分割: 就是从IBGP邻居学习到的一条路由,我就不会再把这条路由在传递我的IBGP邻居。 解决IBGP水平的方法: 1:R2与R3建立IBGP邻居。 2:全网互联 3:路由反射器 4:联邦 第一部分: 路由反射器 路由反射簇:一组路由器的集合 解释图中的角色: RB RC RD 是一个路由反射簇。 RC RD是一个路由反射簇中的客户端 RB是反射器 RE是非客户端 RA是EBGP邻居 杰克的三句话: 1:从我的路由反射簇中的组成员,传过来一条路由,我会把它反射给我的另一个客户端,我会把它反射给我的一个非客户端
15、。同时也反射给我的一个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邻居。 总结: 路由反射簇=大的路由器 实验: 主要的配置就是在反射器上,配置一条命令: Neighbor (对端邻居的地
16、址) 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。 以上的两句话是解决以上实验拓扑的钥匙。认真研究。 联邦技术 主要就是在大
17、的AS中划分成几个的小的联邦。 需要一个联邦的AS号 说明: R2与R1组的AS号是:65001 R3组的AS号是:65002 在大的AS=123中建立两个小联邦,联邦的标识用联邦的AS来标识。 需要注意的是:R2与R1建立 bgp confederation identifier 123)这句话配在建立联邦的每一个路由器上。 这句话的作用就是:告诉我EBGP邻居,我的AS号是123. R2 R4 建立的是EBGP邻居时,只要配置这一条命令,邻居就会起来,但是如果向R3 R5建立的是IBGP邻居时。这条命令不能让邻居起来。 解决的方法: R1与R3建立的是联邦的EBGP,R2 与R1建立的IB
18、GP不一样。 R1与R3在大的AS=123中建立的是联邦的EBGP,而且是用环回口建立的所以要敲三条命令 : Neighbor 环回 remote-as AS号 Neighbor 环回 update-soure Neighbor 环回ebgp-multihop 建立联邦必须要打的命令: bgp confederation peers+邻居的AS号 作用就是除去这个AS号,其他的是As是123 bgp confederation identifier 123 主要作用就是。来联邦内部的路由器向外部宣告自己是AS=123 一定要注意的是在建立R4与 R2 和 R3与R5,邻居时其实就要就要这样配:
19、 Router bgp 400 Neihbor 192.169.24.2 remote-as 123 小技巧:检测下一跳是否可达,拼下一跳就会判定出来。 BGP聚合技术 作用:减少路由条目 BGP的路由聚合可以在任何路由器上做聚合。 第一种方法: 有两步: 1:在路由表中加一条: ip route +(明细的聚合路由) mask x xxx null 0 (防止打环) 2:再把这条聚合路由network BGP表中。 需要注意的是:把明细的路由条目不要network到BGP表中。 如: 172.1.12.1 172.1.13.1 172.1.14.1 172.1.15.1 会聚后的地址:172
20、.1.12.1- 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 400 Aggregate-address 172.1.12.0 255.255.252.0 summary-only as-set 这条命令的作用就是:还原AS-path属性 实验图形: 这个实验
21、比较简单,主要能体现出,还原AS-PATH属性的实验。 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 i R2:BGP表: Network Next Hop Metric LocPrf Weight
22、Path * 1.1.0.0/24 192.168.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 i R3: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
23、.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 i R4: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 30
24、0 i * 1.1.3.0/24 192.168.34.3 0 200 300 i 路由器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 路由条目的代码为“*”,所以所有
25、BGP 路由条目都为最优。 R3路由器配置了路由聚合: 2)“as-set”参数可以使BGP 聚合路由不丢失原来的AS-PATH 属性,从而避免路由环路,在路由器R3 上操作如下 aggregate-address 1.1.0.0 255.255.252.0 as-set 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 100 32768 100,300 i * 1.1.1.0/24 192.168.13.1 0 0 100
26、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 i R4 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.3
27、4.3 0 200 300 i 路由器R4 上收到的汇总路由“1.1.0.0/22”中,AS-PATH 包含了被聚合路由中所有 的AS 号码的集合“100,300”; 聚合路由正是由于携带了所有的AS,所以在路由器R1 的BGP 表中没有出现,当然 在路由器R2 的BGP 表中也不会出现。 BGP 使用AS-PATH 属性作为路由更新的一部分来确保没有路由环路。因为在BGP 对等体 之间传递的每条路由都携带它所经过的AS 号码序列表,如果该路由被通告给它始发的AS, 该AS 路由器将在AS 序列表中看到自己的AS,它将不接受该路由。 R3#show ipbgp neighbor 192.168
28、.13.1 advertised-routes Network Next Hop Metric LocPrf 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 ipbgp neighbors 192.168.13.3 received-routes % No such neighbor or address family 路由器R1 没有接收聚合路由“1.1.0.0/22”,因为它发现聚合路由条目中 的AS-PATH 属性列表“100,300”中包含自己的AS
29、号码100,所以不接收。同理,路由器 R3 也不会接收该聚合路由条目。 接下来这个实验有点难。 路由条目表项的状态代码 以上输出中,路由条目表项的状态代码的含义解释如下: s:表示路由条目被抑制; d:表示路由条目由于被惩罚而受到抑制,从而阻止了不稳定路由的发布; h: 表示该路由该路由正在被惩罚,但还未达到抑制阀值而使它被抑制; *: 表示该路由条目有效; : 表示该路由条目最优,可以被传递,达到最优的重要前提是下一跳可达; i:表示该路由条目是从IBGP 邻居学到的; r:表示将BGP 表中的路由条目放入到IP 路由表中失败。 以上输出中,起源代码的含义解释如下: i:表示路由条目来源为I
30、GP; e:表示路由条目来源为EGP; ?: 表示路由条目来源不清楚,通常是从IGP 重分布到BGP 的路由条目。 BGP的suppress-map参数的解释: 主要含义是: 如果有特殊的需求,在聚合后只抑制部分明细路由条目,参数“suppress-map”可以完成。 在做会聚路由的路由器上查看BGP表会出现一个情况: 路由器R3 上所有被聚合的明细路由被标记为“s”,表示被抑制,不被送; “summary-only”这参数的意思是:会抑制全部的明细路由条目。 实验要求: 本实验要求路由器R2 地址聚合后,要求路由器R1 的两条明细路由被抑制,而路由器R2 的明细路由要求传递给路由器R4,路由
31、器R3 配置步骤如下: 前缀列表的写法: ip prefix-list 1 permit 1.1.0.0/24 /匹配路由条目,以便进行控制 ip prefix-list 1 permit 1.1.1.0/24 route-map sup permit 10 matchip address prefix-list 1 routerbgp 200 aggregate-address 1.1.0.0 255.255.252.0 as-set suppress-map sup R3的BGP表的变化 Network Next Hop Metric LocPrf Weight Path s 1.1.0.
32、0/24 192.168.13.1 0 0 100 i * 1.1.0.0/22 0.0.0.0 100 32768 100,300 i s 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 i BGP的属性团体 这个的属性的作用: 主要给这些BGP的路由设些标记,按照标记所传的范围,对相应的路由做相应的过滤。 “local-AS”、“no-export”和“no-advertise 1;Additive:添加community属性,假如
33、说对于一条路由,如果我把它匹配住,这条路由在我匹配之前,都有匹配过团体路由,如果我想再加一些属性,那么以前的属性将被覆盖。为了避免这一情况,我们加入additive这参数。这样新的属性将会加入的,而且会保留以前的属性。 2:internet:默认就是这种属性。 3:local-AS:就是不要把标有该属性的路由传出联邦小的的AS.(范围是联邦的AS)当我有联邦AS时,该路由将不会传出AS. 4:no-export:就是不要把标有该属性的路由传出我大AS.换句话说不要这条路由公告给我的EBGP邻居。 5:no-advertise:就是不要把标有该属性的路由公告给我任何邻居。 注意的是:因为如果没有
34、联邦AS的话,你把这条路由设置为LOCAL-AS,或者no-export,则产生的将是该路由将不会传到其他的AS. 配置实例: ip prefix-list 1 permit 4.4.4.0/24 /定义前缀列表 route-map Local_AS permit 10 /定义route-map match ip address prefix-list 1 /匹配前缀列表 set community local-AS /设置团体属性 routerbgp 65002 neighbor 3.3.3.3 send-community /开启发送团体属性的能力 neighbor 3.3.3.3 rou
35、te-map Local_AS out /在出方向向邻居发送团体属性 需要注意的是; 如果BGP表还有原来的路由条目,则用clear ipbgp * s 命令。 BGP的路由汇总表 BGP的六大属性 AS_PATH:指出包含在UPDATE 报文中的路由信息所经过的自治系统的序列; 作用:就是防止环路 如果我收到一个条目发现这个条目的AS-PATH属性有我本AS号,这时候我将不去接收它。 解决这种问题的方法:就是敲一条命令:neighbor (想收我标有本as路由的邻居)allowas-in +加收的条数。 注意:AS-PATH在一个AS里是不会改变的。 通过修改AS-PATH来影响BGP的选路
36、。 怎样才是优的路由呢? 经过的AS越少越优,如果AS短的链路带宽低,AS长的带宽高,要想数据走带宽高的链路,解决方法就是将短的AS加长。 Next_HOP:声明路由器所获得的BGP 路由的下一跳。对EBGP 会话来说,下一跳就是通告该路由的邻居路由器的源地址。对于IBGP 会话,有两种情况,一是起源AS内部的路由的下一跳就是通告该路由的邻居路由器的源地址;二是由EBGP 注入AS 的路由,它的下一跳会不变的带入IBGP 中; ORIGIN:这个属性说明了源路由是怎样放到BGP 表中的。有三个可能的源:IGP,EGP 以及INCOMPLETE。路由器在多个路由选择的处理中使用这个信息。路由器选
37、择具有最低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/24 route-mapegp permit 10 matchip address prefix-list 1 set origin egp 900 /设置起源代码 routerbgp 200 neighbor 14.14.14.1 route-map egp out /在出方向为去往邻居14.14.14.1 的
38、路由设置策略 本地优先级属性: ip prefix-list 1 permit 4.4.4.0/24 route-map local permit 10 matchip address prefix-list 1 set local-preference 2000 /修改LOCAL_PREF 值 neighbor 34.34.34.4 route-map local in 注意: 默认情况下,本地优先级的值为100; 本地优先级属性只在AS 内部传递,不会通告给EBGP 邻居; 本地优先级属性值越高,路由的优选程度越高; 命令“bgp default local-preference”也可以修
39、改本地优先级属性,只是说用 route-map 设置本地优先级灵活性更大。 权重属性:作用范围最小,只影响本路由器。 不会传递给恩赫连接。越大越好 R1(config)#router bgp 100 R1(config-router)#neighbor 2.2.2.2 weight 200 /为从2.2.2.2 学到路由设置权重值 R1(config-router)#neighbor 3.3.3.3 weight 200 /为从3.3.3.3 学到路由设置权重限值 R1(config-router)#neighbor 14.14.14.4 weight 500 /为从14.14.14.4 学到路由设置权重值 weight 属性只影响本地路由器选路 默认值是32768:是自己通告的。 默认值是0:是从其他路径学过来的路由 说明BGP 在路由判定时weight属性是优于本地优先级属性的。 MED属性选路: R3(config)#ip prefix-list 20 permit 20.1.1.0/24 R3(config)#ip prefix-list 30 permit 30.1.1.0/24 R3(config)#
链接地址:https://www.31ppt.com/p-3579557.html