比如,我们在R1上宣告loopback接口的地址,在R2上进行聚合:
R1上:
R1#sh run | s r b
router bgp 100
bgp log-neighbor-changes
network 11.1.0.0 mask 255.255.255.0
network 11.1.1.0 mask 255.255.255.0
network 11.1.2.0 mask 255.255.255.0
network 11.1.3.0 mask 255.255.255.0
/宣告了4个loopback口的地址
neighbor 12.1.1.2 remote-as 200
neighbor 12.1.1.2 update-source Serial1/0
在R2上进行聚合:
R2(config)#router bgp 200
R2(config-router)#aggregate-address 11.1.0.0 255.255.0.0 summary-only
/仅仅做聚合并抑制明细,没做as-set
查看R2上BGP表:
R2# sh ip bgp
BGP table version is 35, local router ID is 22.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
s> 11.1.0.0/24 12.1.1.1 0 0 100 i
*> 11.1.0.0/16 0.0.0.0 32768 i
/可以看到汇总路由as-path上已经丢失了原有的AS100的属性,下一跳0.0.0.0,表示这条路由是由本设备产生的。由于原有路径丢失了,它还会回传给AS100,造成环路。
s> 11.1.1.0/24 12.1.1.1 0 0 100 i
s> 11.1.2.0/24 12.1.1.1 0 0 100 i
s> 11.1.3.0/24 12.1.1.1 0 0 100 i
*> 22.1.1.0/24 0.0.0.0 0 32768 i
*> 33.0.0.0 23.1.1.3 2297856 32768 i
*>i 55.1.1.0/24 44.1.1.1 0 100 0 300 i
在以下命令查看结果带有atomic-aggregate原子聚合属性:
查看R2传给R3的BGP update报文:
由报文内也可看到聚合后的 的BGP路由,会带着ATOMIC_AGGREGATE路径属性,用来告诉其他邻居这是一条聚合过的路由,且聚合路由器ID是AGGREGATOR项表明,聚合自 AS 200,ORIGIN:200表示这条聚合路由更新的来源是22.1.1.1。AS PATH 为空,因为没有加as-set,且是在iBGP内部传递,AS 100和200的路径都不会加上去。
as-set的使用方法:在聚合BGP的节点路由器上,跟在aggregate-address后面用as-set。
即:
R2(config-router)#aggregate-address 11.1.0.0 255.255.0.0 summary-only as-set
此时再在R2上查看:
R2#sh ip bgp
BGP table version is 36, local router ID is 22.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
s> 11.1.0.0/24 12.1.1.1 0 0 100 i
*> 11.1.0.0/16 0.0.0.0 100 32768 100 i
/此时再去查看即可发现已还原了as-path属性
s> 11.1.1.0/24 12.1.1.1 0 0 100 i
s> 11.1.2.0/24 12.1.1.1 0 0 100 i
s> 11.1.3.0/24 12.1.1.1 0 0 100 i
*> 22.1.1.0/24 0.0.0.0 0 32768 i
*> 33.0.0.0 23.1.1.3 2297856 32768 i
*>i 55.1.1.0/24 44.1.1.1 0 100 0 300 i
我们再看一下加了as-set之后R2传给R3的BGP update报文:
可以看到当使用了as-set后,将不再带有ATOMIC_AGGREGATE,取而代之是在AS_PATH里,增加了as 100,它明确路由说明聚合前明细路由是来自哪些AS的。
as-set 参数包含聚合汇总的每个独立路由的相关信息。独立路由发生变化会导致聚合进行更新。在示例中,如果 R1和R2之间以AS 400相连,则聚合的路径信息会从 200 100变化为200 400 100。聚合会相应进行更新。