CCNP16-BGP的水平分割问题

打破水平分割:联邦、反射器

当一个AS内路由器过多时,由于IBGP水平分割的原因,一个路由器要和很多路由器建邻,导致过于麻烦,邻居数也过多,所谓有条件的打破IBGP水平分割,在管理员确认无环的前提下来去除IBGP水平分割限制。
在这里插入图片描述

一、路由反射器

角色
存在三种角色:1、 RR(反射器) 2、 客户端 3、 非客户端
RR分别与客户端和非客户端都是IBGP邻居关系,三者构建为一个簇(组),在一个簇内设备的数量不限制;在一个簇中至少存在一台RR和一台客户端;
规则
RR从一个EBGP邻居处学习到的路由,传递给本地客户端、非客户端、其他的EBGP邻居;
RR从一个客户端学习到的路由条目,传递给本地其他客户端、非客户端、其他EBGP邻居;
RR从一个非客户端学习到的路由条目,传递给本地的其他客户端、EBGP邻居;不传递给其他的非客户端;
注意到,只有从非客户端学习到的路由条目,不传递给其他的非客户端;即非非不传
注:RR将路由条目反射给其他IBGP邻居时,不修改条目中的属性;反射条目在RR本地一定是优秀,否则无法传递;
首先我们在AS 234内,为了减少邻居关系的建立,我们让R2和R3建邻,R3和R4建邻即可,然后使用路由反射器,这里只需让R3成为RR,R2或R4其中一个成为客户端即可,那么R3可以从客户端R2学习路由,然后反射给非客户端R4。

R2(config)#router bgp 234
R2(config-router)#neighbor 3.3.3.3 remote-as 234
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 3.3.3.3 next-hop-self 

R3(config)#router bgp 234
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#neighbor 2.2.2.2 remote-as 234
R3(config-router)#neighbor 2.2.2.2 update-source lo0
R3(config-router)#neighbor 4.4.4.4 remote-as 234
R3(config-router)#neighbor 4.4.4.4 update-source lo0

R4(config)#router bgp 234
R4(config-router)#neighbor 3.3.3.3 remote-as 234
R4(config-router)#neighbor 3.3.3.3 up lo0
R4(config-router)#neighbor 3.3.3.3 next-hop-self 

让R2成为我的客户端,同时我成为RR

R3(config-router)#neighbor 2.2.2.2 route-reflector-client
R1#ping 5.5.5.5 source 1.1.1.1

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 = 80/81/88 ms

切记:在真机上,一旦一台设备成为RR或者客户端,那么next-hop-self将失效;在模拟器上生效;
故在真机上使用route-map来取代该指令

R2(config)#route-map next permit 10
R2(config-route-map)#set ip next-hop peer-address 
R2(config-route-map)#exi
R2(config)#router bgp 234
R2(config-router)#neighbor 3.3.3.3 route-map next out 
R2#clear ip bgp * soft

以上策略的意义在于将路由传递给邻居3.3.3.3的时修改下一跳为本地地址;

簇id
RR将一条路由反射给其他路由器时会加上自己的簇id(默认等于route id),若本条路由又被反射给我自己,而包含了自己的簇id,那么将直接丢弃,用来防环。
起源者
RR将一条路由反射给其他路由器时还会加上起源者的route-id,若这条路由被反射给了起源者,那么起源者也会丢弃,用来防环
举例:
在这里插入图片描述
R1、R2、R3、R4、R5在同一个AS内,两两互相为邻居,想让路由互相传递,就必须时R2,R3,R4都为RR,客户端无所谓,那么路由将由R1传给R2,R2反射给R3,R3反射给R4,R4反射给R5,
情况一:
若R4的客户端为R2,那么R4从非客户端R3学习的路由就会反射给R2,而这条路由又是R2传递给R3的,即R2给R3,R3给R4,R4给R2,成环,所有有了簇id解决这个问题,即R2将这条路由反射给R3时,给这条路由加上了自己的簇id,当这条路由再回到R2时,因为有自己的簇id,R2将不学习。
情况二:
若R4的客户端为R1,那么R4从非客户端R3学习的路由就会反射给R1,而这条路由又是R1传递过来的,成环,所以有了起源者解决这个问题,即R2将这条路由反射给R3时,给这条路由加上了起源者R1的route-id,当这条路由再回到R1时,因为有自己的route-id,R1将不学习。

二、联邦

作用:将一个大AS逻辑的划分多个虚拟的小AS;小AS间为联邦内的EBGP邻居关系,这种关系间路由的传递性和真实EBGP邻居一致,但传递过程中条目的属性不变化(更改ebgp多条和next-hop-self),生成的路由管理距离为200;
对于其他的大AS也不清楚这些小AS的情况;

  1. 所有建邻和配置均基于小AS编号进行
  2. 联邦内所有设备声明自己所在的大AS号
R2(config)#router bgp 23
R2(config-router)#bgp confederation identifier 234  //声明自己所在的大AS号

3)小AS间的EBGP邻居关系,需要互指peer;

R3(config)#router bgp 23
R3(config-router)#bgp confederation peers 4  //对端的小AS号

总结:在实际工程中,常常将反射器和联邦同时使用,协同工作,减少配置量;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值