背景:
在一个大型的AS当中受到iBGP水平分割(从iBGP的邻居接收到的路由不能再传递给其他的iBGP邻居)的影响,将会造成BGP的路由无法通过iBGP邻居接收。解决办法有三种:
- 成员自治区域系统内建立全互联的IBGP邻居
- 成员自治区域系统之间使用特殊的EBGP连接,我们称之为联盟EBGP
- 路由反射器
BGP联盟
BGP联盟是一种用于优化大型自治系统内部BGP连接的技术。通过将一个大型AS分割成多个子自治系统,BGP联盟能够降低内部IBGP连接的数量,同时对外表现为一个统一的AS。这种方法不仅减少了网络资源和CPU资源的消耗,还提高了网络的管理性。
BGP联盟的工作原理
在BGP联盟中,每个子自治系统内部需要建立全连接的IBGP关系,而子自治系统之间则通过特殊的EBGP连接进行通信。对外部AS来说,整个联盟看起来像是一个单一的AS,外部无法看到内部的子自治系统。联盟内部的路由器会保留外部的next_hop属性,同时在联盟内传递的路由的MED和Local Preference属性也会被保留。在联盟内部,成员AS号会被加入到AS_PATH中,但不会传递到联盟外部。联盟内的AS_PATH属性在选择最短路径时不会比较联盟AS号,而且在传出联盟时相关的属性会被自动删除。
AS-Path属性在联盟中的应用:
分类:
1:AS_SET,一个无序的AS号列表。
2:AS_SEQENCE,一个有序的AS号列表。
3:AS_CONFED_SET,BGP联盟中特有的AS_PATH类型,类似AS_SET,其列表中含有的AS号均属于BGP联盟中的AS号。
4:AS_CONFED_SEQUENCE,BGP联盟中特有AS_PATH类型,类似AS_SEQENCE,其列表中含有的AS号均属于BGP联盟中的AS号。
路由器反射器
路由反射器简介
在一个AS内,其中一台路由器作为路由反射器RR,其他路由器作为客户机,路由反射器在客户机之间反射路由信息,客户机之间不需要建立BGP连接。
反射器角色
- 路由反射器RR:允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备。
- 客户机:与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
- 非客户机:既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间依然必须建立全连接关系。
- 始发者:在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路
- 集群:路由反射器及其他客户机的集合。Cluster_List属性用于防止集群间产生路由环路
目的:让整个IBGP客户机能够获得相应的BGP路由条目
路由反射器工作原理:
从非客户机学到的路由,发布给所有客户机。(非非不互传)
从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
从EBGP对等体学到的路由,发布给所有的非客户机和客户机。
RR场景下的路由防环
RR的设定使得IBGP水平分割原则失效,这就可能导致环路产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路:
- Originator_ID
- Cluster_List
- Originator_lD、Cluster_List属性都属于可选非过渡类型。
1)Originator_lD
- RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器RouterID
- 若AS内存在多个RR,则Originator_lD属性由第一个RR创建,并且不被后续的RR(若有)所更改。
- 当BGP路由器收到一条携带Originator_D属性的IBGP路由,并且Originator_ID属性值与自身的RouterID相同,则它会忽略关于该条路由的更新。

2)路由器反射簇
- 路由器反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇。
- 每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP RouterID)
- 当一条路由被反射器反射后,该RR的Cluster_ID就会被添加至路由的Cluster_list属性中。
- 当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新。

3)Cluster_List

- R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加ClusterList:10.0.1.1。
R3再次反射给R4时,Cluster_List值为:10.0.3.3 10.0.1.1,
R4再次反射给R1时Cluster_List值为:10.0.4.4 10.0.3.3 10.0.1.1 - 当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_id,判断存在环路,从而忽略该路由更新。
反射器和联盟的对比
|-------------------|--------------------------------------------|
| 反射器 | 联盟 |
| 不需要更改现有的网络拓扑,兼容性好 | 需要修改逻辑拓扑 |
| 配置方便,客户机不知道自己是客户机 | 所有设备需要重新进行配置,且所有设备必须支持联盟功能 |
| 集群与集群之间仍然需要全连接 | 联盟之间的子AS之间是特殊的EBGP连接,不需要全连接,子AS内部是IBGP全连接。 |
| 在大型网络中应用广泛 | 同样适用于大型网络中,但应用较少 |