BGP路由反射器
IBGP路由学习问题
由于水平分割原则的原因,为了保证中转AS所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:
1 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时,路由器性能资源占用大。
2 AS内BGP网络的可扩展性较差,配置条目繁琐。
为此可以采用路由反射器技术。
路由反射器角色
RR(Route Reflector):路由反射器
RR会将学习的路由在IBGP中反射出去
Client:RR客户端
接收反射,与路由反射器直连。
No client:非客户端
非客户端之间和路由反射器需建立全互联。
相关命令
配置路由反射器及其客户端(自身为反射器,对等体为客户端)
[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属性都属于可选过渡类型。
Originator ID
RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID。
若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR(若有)所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。
路由反射簇列表 (Cluster _list)
路由反射簇包括反射器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 联盟
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
BGP 聚合
自动聚合的特性
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,如配合原子聚合属性,表示路由信息在何处出现了丢失。