相对于自动路由聚合来讲,手动路由聚合具有更高的灵活性和可控性。
手动路由聚合时,可以手动控制聚合路由的掩码长度,修改聚合路由属性等。
这是实验拓扑,物理接口建立 IBGP , EBGP 邻居
有两种方法:
1.配置一条静态路由,然后network 命令进行通告
2.使用aggregate命令进行聚合。
基本配置:
R1:
sys
sysname R1
int loop 0
ip add 1.1.1.1 24
int g0/0/0
ip add 192.168.12.1 24
int g0/0/1
ip add 192.168.13.1 24
q
R2:
sys
sysname R2
int loop 0
ip add 2.2.2.2 24
int g0/0/0
ip add 192.168.12.2 24
int g0/0/1
ip add 192.168.24.2 24
q
R3:
sys
sysname R3
int loop 0
ip add 3.3.3.3 24
int g0/0/1
ip add 192.168.13.3 24
int g0/0/0
ip add 192.168.34.3 24
int g0/0/2
ip add 192.168.35.3 24
q
R4:
sys
sysname R4
int loop 0
ip add 4.4.4.4 24
int g0/0/1
ip add 192.168.24.4 24
int g0/0/0
ip add 192.168.34.4 24
int g0/0/2
ip add 192.168.46.4 24
q
R5:
sys
sysname R5
int loop 0
ip add 5.5.5.5 24
int loop 1
ip add 172.16.1.1 24
int loop 2
ip add 172.16.2.1 24
int loop 3
ip add 172.16.3.1 24
int loop 4
ip add 172.16.4.1 24
int loop 5
ip add 172.16.5.1 24
int loop 6
ip add 172.16.6.1 24
int loop 7
ip add 172.16.7.1 24
int g0/0/0
ip add 192.168.56.5 24
int g0/0/1
ip add 192.168.35.5 24
q
R6:
sys
sysname R6
int loop 0
ip add 6.6.6.6 24
int loop 1
ip add 192.168.1.1 24
int loop 2
ip add 192.168.2.1 24
int loop 3
ip add 192.168.3.1 24
int loop 4
ip add 192.168.4.1 24
int loop 5
ip add 192.168.5.1 24
int loop 6
ip add 192.168.6.1 24
int loop 7
ip add 192.168.7.1 24
int g0/0/0
ip add 192.168.56.6 24
int g0/0/1
ip add 192.168.46.6 24
q
配置BGP 路由协议:
使用直连物理接口建立邻居,R5 R6 的环回口在网络中使用network通告到BGP进程中
R1:
bgp 100
router-id 1.1.1.1
peer 192.168.12.2 as-number 200
peer 192.168.13.3 as-number 300
q
R2:
bgp 200
router-id 2.2.2.2
peer 192.168.12.1 as-number 100
peer 192.168.24.4 as-number 300
q
R3:
bgp 300
router-id 3.3.3.3
peer 192.168.13.1 as-number 100
peer 192.168.34.4 as-number 300
peer 192.168.34.4 next-hop-local
peer 192.168.35.5 as-number 400
q
R4:
bgp 300
router-id 4.4.4.4
peer 192.168.24.2 as-number 200
peer 192.168.34.3 as-number 300
peer 192.168.34.3 next-hop-local
peer 192.168.46.6 as-number 400
q
R5:
bgp 400
router-id 5.5.5.5
peer 192.168.35.3 as-number 300
peer 192.168.56.6 as-number 400
peer 192.168.56.6 next-hop-local
network 172.16.1.0 24
network 172.16.2.0 24
network 172.16.3.0 24
network 172.16.4.0 24
network 172.16.5.0 24
network 172.16.6.0 24
network 172.16.7.0 24
q
R6:
bgp 400
router-id 6.6.6.6
peer 192.168.46.4 as-number 300
peer 192.168.56.5 as-number 400
peer 192.168.56.5 next-hop-local
network 192.168.1.0 24
network 192.168.2.0 24
network 192.168.3.0 24
network 192.168.4.0 24
network 192.168.5.0 24
network 192.168.6.0 24
network 192.168.7.0 24
q
配置完成后,查看相互间的邻居关系都 要建立成功
R1上接收到BGP 协议的明细路由
在R5上使用ping测试R5 的环回口与R6的环回口之间的连通性
配置BGP 路由聚合:
R6上配置静态路由,然后使用network通告出去(第一种聚合方法)
R6:
ip route-static 192.168.0.0 21 NULL 0
bgp 400
network 192.168.0.0 21
q
静态路由指向NULL0的目的是防止网络中产生环路,这条静态路由仅仅是用来通告的
R5上使用aggregate(第二种聚合方法)
R5:
bgp 400
aggregate 172.16.0.0 255.255.248.0
q
可以写 21 ,也可以写255.255.248.0 ,建议写成 255.255.248.0
使用aggregate命令进行聚合,要求BGP路由表中至少有一条属于聚合后的路由的子网路由,否则聚合不会生效。
R1的BGP 路由表包含了聚合后的路由,但同时也有明细路由。
控制路由聚合,R5 R6的方法有所不同:
若想抑制明细路由,则需要配合route-policy 来实现对明细路由的抑制。如果抑制明细路由的数量比较多时,配置工作量就会比较多,而且维护起来不太方便,这种方法的扩展性和可维护性比较差。
R6:
ip ip-prefix noad permit 192.168.1.0 24
ip ip-prefix noad permit 192.168.2.0 24
ip ip-prefix noad permit 192.168.3.0 24
ip ip-prefix noad permit 192.168.4.0 24
ip ip-prefix noad permit 192.168.5.0 24
ip ip-prefix noad permit 192.168.6.0 24
ip ip-prefix noad permit 192.168.7.0 24
ip ip-prefix noad permit 172.16.1.0 24
ip ip-prefix noad permit 172.16.2.0 24
ip ip-prefix noad permit 172.16.3.0 24
ip ip-prefix noad permit 172.16.4.0 24
ip ip-prefix noad permit 172.16.5.0 24
ip ip-prefix noad permit 172.16.6.0 24
ip ip-prefix noad permit 172.16.7.0 24
route-policy no-ad permit node 1
if-match ip-prefix noad
apply community no-advertise
route-policy no-ad permit node 2
bgp 400
peer 192.168.46.4 route-policy no-ad export
peer 192.168.46.4 advertise-community
使用前缀列表和route-policy给这些明细路由添加no-advertise的团体属性。
peer X.X.X.X advertise-community 是为了将团体属性传递给对等体,缺省情况下是不传递的。
R5:
ip ip-prefix noad permit 192.168.1.0 24
ip ip-prefix noad permit 192.168.2.0 24
ip ip-prefix noad permit 192.168.3.0 24
ip ip-prefix noad permit 192.168.4.0 24
ip ip-prefix noad permit 192.168.5.0 24
ip ip-prefix noad permit 192.168.6.0 24
ip ip-prefix noad permit 192.168.7.0 24
ip ip-prefix noad permit 172.16.1.0 24
ip ip-prefix noad permit 172.16.2.0 24
ip ip-prefix noad permit 172.16.3.0 24
ip ip-prefix noad permit 172.16.4.0 24
ip ip-prefix noad permit 172.16.5.0 24
ip ip-prefix noad permit 172.16.6.0 24
ip ip-prefix noad permit 172.16.7.0 24
route-policy no-ad permit node 1
if-match ip-prefix noad
apply community no-advertise
route-policy no-ad permit node 2
bgp 400
peer 192.168.35.3 route-policy no-ad export
peer 192.168.35.3 advertise-community
配置完成后,在R1 上查看一下,只有聚合路由,没有明细
R3有聚合也有明细
detail-suppressed 抑制明细,as-set 加上原有的as-path:
还可以利用aggregate 命令结合detail-suppressed来实现对明细路由的抑制,只将聚合后的路由发送出去。
R5 R6 都采用 aggregate 方式来聚合路由
R6:
undo ip route-static 192.168.0.0 21 NULL 0
bgp 400
undo network 192.168.0.0 21
aggregate 192.168.0.0 21 detail-suppressed
q
R5:
bgp 400
aggregate 172.16.0.0 21 detail-suppressed
R5上只利用aggregate 聚合 172.16.0.0 网段的,所以detail-suppressed抑制的是 172.16.0.0
suppress-policy 抑制部分明细:
suppress-policy 抑制部分明细,抑制 172.16.2.0、 172.16.4.0、 172.16.6.0
R5:
ip ip-prefix sup permit 172.16.2.0 24
ip ip-prefix sup permit 172.16.4.0 24
ip ip-prefix sup permit 172.16.6.0 24
route-policy sup permit node 10
if-match ip-prefix sup
bgp 400
undo peer 192.168.35.3 route-policy noad export
aggregate 172.16.0.0 21 suppress-policy sup
配置完成后,在R3 上查看一下
attribute-policy可以修改聚合后的路由属性:
R5通告的是属性没有经过任何修改的路由,其聚合路由的 Origin 属性是 i。现在通过 attribute-policy 将聚合路由的属性修改成 Incomplete ,在BGP 路由表中显示为 ?
R5:
route-policy att permit node 10
apply origin incomplete
bgp 400
aggregate 172.16.0.0 21 attribute-policy att suppress-policy sup
可以加 suppress-policy sup,也可以不加
配置完成后,在R3 上查看一下
origin-policy:
如果希望汇总路由的产生,只以某条或某些特定的明细路由为触发条件
如 R5 的BGP 路由表中存在有 172.16.1.0/24 的路由时,才触发其产生汇总路由,172.16.0.0/21 ,而当明细路由172.16.1.0/24 丢失,则 R5 不再通告该条汇总路由,那么就需要使用origin-policy 关键字了。
R5:
ip ip-prefix or permit 172.16.1.0 24
route-policy or permit node 10
if-match ip-prefix or
bgp 400
aggregate 172.16.0.0 21 origin-policy or
配置完成后, R3 的路由中还是有汇总路由 172.16.0.0 /21 的
在R5 上把 int loo1 删除掉,没有了 172.16.1.0/24,在R3 上也没有汇总路由了
R5:
undo int loo1
在R3 上查看 BGP 路由表,可以看到没有172.16.1.0,也没有汇总的路由
as-set:
为了避免路由聚合可能引起的路由环路,BGP设计了AS_Set属性。AS_Set属性是一种无序的AS_Path属性,标明聚合路由所经过的AS号。当聚合路由重新进入AS_Set属性中列出的任何一个AS时,BGP将会检测到自己的AS号在聚合路由的AS_Set属性中,于是会丢弃该聚合路由,从而避免了路由环路的形成。
在上面的拓扑基础上进行修改
R5:
undo bgp 400
Y
int g0/0/2
ip add 192.168.57.5 24
q
bgp 400
router-id 5.5.5.5
peer 192.168.56.6 as-n 500
peer 192.168.57.7 as-n 600
peer 192.168.35.3 as-n 300
q
R6:
int loo1
ip add 172.16.1.1 24
int loo2
ip add 172.16.2.1 24
int loo3
ip add 172.16.3.1 24
int loo4
ip add 172.16.4.1 24
q
und bgp 400
Y
bgp 500
router-id 6.6.6.6
peer 192.168.56.5 as-n 400
net 172.16.1.0 24
net 172.16.2.0 24
net 172.16.3.0 24
net 172.16.4.0 24
q
R7:
sys
sysname R7
int loop 0
ip add 7.7.7.7 24
int loo1
ip add 172.16.5.1 24
int loo2
ip add 172.16.6.1 24
int loo3
ip add 172.16.7.1 24
int g0/0/0
ip add 192.168.57.7 24
q
bgp 600
router-id 7.7.7.7
peer 192.168.57.5 as-n 400
net 172.16.5.0 24
net 172.16.6.0 24
net 172.16.7.0 24
q
在没有汇总之前,R3 看到的是明细路由
在R5上进行路由汇总,并把明细抑制
R5:
bgp 400
aggregate 172.16.0.0 21 detail-suppressed
R3 看到的是汇总路由,只有一个as 400的,而原始的 500,600 没有显示出来,存在环路的风险
如果在汇总的时候加上 as-set,则会继承明细路由的路径属性
R5:
bgp 400
aggregate 172.16.0.0 21 detail-suppressed as-set