由于水平分割原则的原因,为了保证中转AS所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:
1 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时,路由器性能资源占用大。
2 AS内BGP网络的可扩展性较差,配置条目繁琐。
为此可以采用路由反射器技术。
RR会将学习的路由在IBGP中反射出去
接收反射,与路由反射器直连。
非客户端之间和路由反射器需建立全互联。
配置路由反射器及其客户端(自身为反射器,对等体为客户端)
[R1-bgp]peer 2.2.2.2 reflect-client
在一个AS中,要建立配置的对等体数量等于n*(n-1)/2,n代表IBGP路由器数量,相应的对等体关系对数则为n*(n-1)/4
如果路由反射器从自己的非客户对等体学习到一条IBGP路由,则它会将该路由反射给所有客户,但不会反射给其他非客户对等体。
如果路由反射器从自己的客户学习到一条IBGP路由,则它会将该路由反射给所有非客户,以及除了该客户之外的其他所有客户。
如果路由学习自EBGP对等体,则发送给所有客户、非客户IBGP对等体。
因此,对于同一反射器情况下,反射器之间需要建立对等体关系,客户端之间不需要建立对等体关系,客户端与非客户端之间也不需要建立对等体关系,非客户端之间则必须建立对等体关系。
RR的设定使得IBGP水平分割原则失效(对等体非直连的情况下无法学习到路由),这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路: Originator_ID、Cluster_List。Originator_ID和Cluster_List属性都属于可选过渡类型。
RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID。
若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR(若有)所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇。
每一个簇都有唯一的簇ID(Cluster_ID,缺省时为RR的BGP Router ID )。
当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。
当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新。
配置路由反射器的集群ID(缺省值为RR的Router Id)
[R1-bgp] reflector cluster-id 1.1.1.1
BGP联盟是将若干个小型AS组成一个大型AS,小型AS之间采用EBGP的方式连接,组成的大型AS对于外部网络视为一个AS,用于解决IBGP中全互联时连接过多的问题。但是由于配置繁琐(改变小型AS配置必须先删除该AS),因此在现网中不常见。
配置联盟ID(对外部网络视为一个AS号)
[R5-bgp]confederation id 200
配置联盟中的邻居AS号
[R5-bgp]confederation peer-as 666 777
- [R5-bgp]dis th
- [V200R003C00]
- #
- bgp 555
- confederation id 200
- confederation peer-as 666 777
- peer 6.6.6.6 as-number 666
- peer 6.6.6.6 ebgp-max-hop 2
- peer 6.6.6.6 connect-interface LoopBack0
- peer 7.7.7.7 as-number 777
- peer 7.7.7.7 ebgp-max-hop 2
- peer 7.7.7.7 connect-interface LoopBack0
- #
- ipv4-family unicast
- undo synchronization
- network 55.55.55.55 255.255.255.255
- peer 6.6.6.6 enable
- peer 6.6.6.6 next-hop-local
- peer 7.7.7.7 enable
- peer 7.7.7.7 next-hop-local
- #
- return
1 聚合后的路由,只考虑前8位是否一致(不一致那就代表不是一条路由)。
2 只对引入的BGP路由会自动聚合,network宣告进BGP的路由无法执行自动聚合。
3 只对始发与本地的BGP路由聚合会生效,对于通过其他BGP设备传递而来的外部路由聚合不会生效。
4 只将聚合后的路由发布出去,明细路由会被抑制
5 聚合后自动在本地生成一条指向聚合的Null路由(下一跳127.0.0.1)来防止可能出现的环路
6 默认情况BGP设备的自动聚合是关闭的
自动聚合
[R1-bgp]summary automatic
1 可以在任何设备对任何BGP路由进行聚合
2 可以聚合任何属性的路由
手动聚合
[R1-bgp]aggregate 1.1.1.0 24
聚合时抑制明细路由(常用)
[R1-bgp]agg 1.1.1.0 24 detail-suppressed
聚合时保留AS-PATH属性,用于防环(常用)
[R1-bgp]aggregate 1.1.1.0 24 as-set
聚合时使用路由策略修改属性
- [R1]route-policy 1 permit node 10
- [R1-route-policy]apply origin incomplete
-
- [R1-bgp]aggregate 1.1.1.0 24 attribute-policy 1
聚合时使用抑制策略选择需要抑制的路由
- [R1-acl-basic-2000]rule 5 permit source 1.1.1.1 32
-
- [R1]route-policy 1 permit node 10
- [R1-route-policy]if-match acl 2000
-
- [R1-bgp]aggregate 1.1.1.0 24 suppress-policy 1
- [R1]display bgp routing-table 11.11.11.0
-
- BGP local router ID : 1.1.1.1
- Local AS number : 100
- Paths: 1 available, 1 best, 1 select
- BGP routing table entry information of 11.11.11.0/24:
- Aggregated route.
- Route Duration: 00h00m46s
- Direct Out-interface: NULL0
- Original nexthop: 127.0.0.1
- Qos information : 0x0
- AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, active,
- pre 255
- Aggregator: AS 100, Aggregator ID 1.1.1.1, Atomic-aggregate
- Advertised to such 4 peers:
- 5.5.5.5
- 2.2.2.2
- 3.3.3.3
- 4.4.4.4
Atomic-aggregate属性:属于公认任意属性,表示该聚合路由的所有明细路由做了抑制,用于告知对等体,原始的明细路由的AS_PATH出现了丢失。
Aggregator属性:属于可选过渡属性,表示该路由做了聚合,包含聚合路由所在AS号、通告者的RID,如配合原子聚合属性,表示路由信息在何处出现了丢失。