欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CCNP16-BGP的水平分割问题

程序员文章站 2024-02-15 17:50:40
...

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

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

一、路由反射器

角色
存在三种角色: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,若这条路由被反射给了起源者,那么起源者也会丢弃,用来防环
举例:
CCNP16-BGP的水平分割问题
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号

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

相关标签: CCNP