🔥 本文专栏:网络安全从小白到大神
🚀 作者主页:小度爱学习
1、路由反射器
1.1、定义
BGP反射器能把从IBGP邻居学习的路由反射给其他IBGP邻居(打破IBGP水平分割的限制)
1.2、作用
用于替代IBGP全连接,减少IBGP邻居数量;解决BGP路由黑洞问题;
1.3、角色
RR(router reflect):路由反射器
反射器角色:
- client:RR客户机
- 非客户机
注:将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR
思考:为啥不把一个AS内的所有路由器都变成客户机?还有非客户机的存在?(RTE\RTF)
答案:因为一个AS就是一个城域网。一个城市的城域网中有好多路由器,一个城域网怎么可能只有一个反射器。比如:高新区选一个反射器,不可能让他给雁塔区啊、长安区啊提供反射服务。一个反射器给他特定的客户机提供反射服务。我们可以在这些区各选一个反射器,让他们给本区的路由器提供反射服务。也就是说可以在一个AS内建立多个路由器反射群。两个反射群之间需要建立邻居关系。它们之间需要传递路由。
1.4、反射规则
从非反射客户端接受的路由,仅反射给客户端;
从客户端接受到的路由,反射给所有客户端和非客户端,路由始发者除外;
从EBGP接收的路由,反射给所有的客户端和非客户端;
注:一个反射群里的所有反射客户端只需与反射器建立IBGP邻居关系
1.5、反射集群
由反射器和客户端组成的网络范围;
如果存在多个反射器,配置相同的cluster_id
思考:当RR故障后,会发生啥?怎么解决?
思考:RR之间需要建立邻居关系?------当然需要
但是这样的组网容易形成环路。(一条路由从客户机1传到RR,RR传到备用RR,备用RR再反射给客户机1)
1.6、路由反射存在问题
使得IBGP水平分割原则失效,会导致环路的产生
1.7、解决方法:
通过两个路径属性来避免环路
(1)cluster_list(集群列表):
- 类似AS_PATH,每个RR都有一个Cluster id,默认为路由器的router id,可手工修改; 同一个AS内的Cluster
- id必须相同,才能有防环作用。 路由传递过程中,把经过的反射器的Cluster_id一次记录在Cluster_list中;
- Cluster_list用于反射器防环,当反射器收到BGP路由时,如果本机的Cluster_id出现在Cluster_list中,则丢弃该路由;
(例如:一条路由从客户机1传到RR,RR会将Cluster id为1.1.1.1这个属性写给这个路由,RR再传到备用RR,会检查自身的Cluster id,发现学到的路由Cluster id与自己一样,就直接丢弃)
Cluster-list用于路由优选,短的优先
特殊情况:不受Cluster-list防环机制的约束,依然形成环路
思考:一条路由从客户机3传到备用RR,再传到rr,rr会不会传给客户机3?
答案:会,解决方法用originator_ID
(2)originator_ID:起源ID
由路由器反射器反射一条路由时产生,会在反射出去的路由中增加originator_ID,它就是本地AS路由器的BGP路由器的router-id;
即使这条反射路由经过多个RR,当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
originator_ID用于路由优选,短的优先
1.8、总结BGP的防环机制
(1)AS_PATH:解决AS之间的环路问题
(2)IBGP的水平分割:解决一个AS内部IBGP邻居之间环路问题
(3)当一个反射群中存在多个反射器时,通过Cluster-list防环,(BGP反射器)
(4)originator_ID:在多个反射群之间,通过originator_ID防环,(BGP反射器)
1.9、注意事项
反射路由无法使用策略去更改路由属性
1.10、实验配置
[R2-bgp]peer 3.3.3.3 reflect-client //在反射器上配置其反射客户机
[R2-bgp]reflector cluster-id 2.2.2.2 //配置反射器的集群id