联盟方案
把一个AS内的设备划分成若干个子AS,子AS之间为EBGP对等体关系,遵循EBGP传递原则;
子AS内部为IBGP对等体关系,遵循IBGP传递原则。
缺点:如果子AS内部要增加设备,依然要做到全互连。
RR反射器
RR设备三种角色:
RR反射器
客户端
非客户端
路由反射规则:
所谓的客户机就是EBGP邻居,非客户机就是IBGP邻居。
RR在收到BGP路由时:
- 从非客户端对等体学来的IBGP路由,会反射给所有客户端对等体(不反射给非客户端);
- 从客户端对等体学来的IBGP路由,会反射给所有客户端和非客户端对等体;
- 从EBGP对等体学来的路由,依然会反射给所有客户端和非客户端对等体。
传递给RR的路由必须是可用且最优的路由,如果不是,RR将不会反射出去。
当路由反射器学习到一条EBGP路由,并通告给客户机时,是不会创建Origin_ID和Cluster_ID的,因为这本质上不是路由反射行为,而是正常的路由通告行为。
反之,当一条携带Origin_ID和Cluster_ID的BGP路由通告给EBGP对等体时,会移除Origin_ID和Cluster_ID。
RR防环
因为RR导致水平分割消失,所以RR使用Originator_ID、Cluster_List进行防环。
假设4产生了一条路由,发给了1,1发给2和3,2反射给5和3,3反射给6,同时3也会反射给1,那么此时1又会重新反射,又形成了环路,Origin ID解决不了这种问题,所以提出了簇的概念(Cluster_List)
Oringin
Origin ID:越小越优
RR把路由反射出去时,会携带Origin ID,为产生且通告该路由的Router ID。
Origin ID后续不会被更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
路由反射簇
如果在簇内学到的路由,比较Oringin ID,如果在簇间学到的路由,比较Cluster ID
Cluster ID:越短越优
路由反射簇由RR反射器和客户机组成,一个AS可以有多个反射簇。
簇ID(Cluster ID)为RR的Router ID。
当路由被反射出去,该簇ID会被添加,当收到一条路由时,且簇ID为发出时的簇ID,RR则认为有环路,不会接收。
Origin_ID是本地AS内始发路由器的Router-ID
而Cluster_ID是路由反射器的Router-ID