在实际运行的网络中,BGP路由表十分庞大,对于设备而言是很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。
BGP路由表的庞大,因此带来如下两类问题:
路由聚合是将多变少的机制,它通过只向对等体发送聚合后的路由而不发送所有的具体路由的方法,减小路由表的规模。并且被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。
R1上有4条路由,10.1.8.0/24、10.1.9.0/24、10.1.10.0/24、10.1.11.0/24。
R2上192.168.1.16/28、192.168.1.32/28、192.168.1.48/28。
多变少:
路由聚合算法:
IP地址 | 相同位 | 不同位 |
---|---|---|
10.1.8.0/24 | 00001010 00000001 000010 | 00 00000000 |
10.1.9.0/24 | 00001010 00000001 000010 | 01 00000000 |
10.1.10.0/24 | 00001010 00000001 000010 | 10 00000000 |
10.1.11.0/24 | 00001010 00000001 000010 | 11 00000000 |
聚合路由 | 22位相同22=8+8+6 | 10位不同 |
聚合后路由 | 10.1.8.0/22 |
相同的前缀有22位,保留相同位数,将不相同比特后面的数(到末尾)填充为0。
将不相同的比特填充为0,得到00001000,根据8\4\2\1法计算出,十进制为8。得出10.1.8.0/22。
IP地址 | 相同位 | 不同位 |
---|---|---|
192.168.1.16/28 | 1100 0000 10101000 00000001 00 | 01 0000 |
192.168.1.32/28 | 1100 0000 10101000 00000001 00 | 10 0000 |
192.168.1.48/28 | 1100 0000 10101000 00000001 00 | 11 0000 |
聚合路由 | 26位相同26=8+8+8+2 | 6位不同 |
聚合后路由 | 192.168.1.0/26 |
相同的前缀有26位,保留相同位数,将不相同比特后面的数(到末尾)填充为0。
将不相同的比特填充为0,得到00000000,根据8\4\2\1法计算出,十进制为0。得出192.168.1.0/26。
10.1.8.0/24:子网掩码=255.255.255.0,主机数254个10.1.8.1~10.1.8.254。
192.168.1.16/28:子网掩码=255.255.255.240,二进制11110000,子网数2^4(1111)=16个子网,
主机数(4个0)=2^4-2=14,块大小256-240=16。子网为0、16、32、48、64、80、96、112、128、144、160、176、192、208、224、240
192.168.1.0/26:子网掩码=255.255.255.192,二进制11000000,子网数2^2(11)=4个子网,
主机数(6个0)=2^6-2=62,块大小256-192=64。子网为0、64、128、192。
1、基本配置
sys
sysn R1
int g0/0/1
ip add 13.0.0.1 24
int lo 0
ip add 1.1.1.1 32
int lo 1
ip add 10.1.8.1 24
int lo 2
ip add 10.1.9.1 24
int lo 3
ip add 10.1.10.1 24
int lo 4
ip add 10.1.11.1 24
sys
sysn R2
int g0/0/2
ip add 23.0.0.2 24
int lo 0
ip add 2.2.2.2 32
[R2-LoopBack1]ip add 192.168.1.17 28
[R2-LoopBack1]int lo2
[R2-LoopBack2]ip add 192.168.1.33 28
[R2-LoopBack2]int lo3
[R2-LoopBack3]ip add 192.168.1.49 28
R3、R4省略
2、配置EBGP对等体
R1
bgp 100
peer 13.0.0.3 as-number 300
R3
bgp 300
peer 13.0.0.1 as-number 100
bgp 300
peer 23.0.0.2 as-number 200
bgp 300
peer 34.0.0.4 as-number 400
R2
bgp 200
peer 23.0.0.3 as-number 300
R4
bgp 400
peer 34.0.0.3 as-number 300
[R3-bgp]dis bgp peer
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
13.0.0.1 4 100 10 10 0 00:08:46 Established 0
23.0.0.2 4 200 5 5 0 00:03:08 Established 0
34.0.0.4 4 400 2 2 0 00:00:14 Established 0
实际应用中总是不用
,10.1.8.0/24、10.1.9.0/24、10.1.10.0/24、10.1.11.0/24自动汇总–>10.0.0.0/8范围太大。
只会对重分布的
,对NETWORK和Aggregate不会汇总。
Route-policy |
---|
Route-policy [名称] [允许或拒绝] node [系列号]-----隐含拒绝所有。 |
If条件(ACL、前缀列表、接口、tagg等) |
Route-policy [名称] [允许] node [系列号]-----如果允许其他。 |
Any(条件) |
ip ip-prefix r1 index 10 permit 10.1.8.0 24
ip ip-prefix r1 index 20 permit 10.1.9.0 24
ip ip-prefix r1 index 30 permit 10.1.10.0 24
ip ip-prefix r1 index 40 permit 10.1.11.0 24
route-policy r1 permit node 10
if-match ip-prefix r1
bgp 100
import-route direct route-policy r1
summary automatic //按照自然网段自动聚合子网路由
[R1-bgp]dis bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.0.0.0 127.0.0.1 0 ?
s> 10.1.8.0/24 0.0.0.0 0 0 ?
s> 10.1.9.0/24 0.0.0.0 0 0 ?
s> 10.1.10.0/24 0.0.0.0 0 0 ?
s> 10.1.11.0/24 0.0.0.0 0 0 ?
看到下一跳是4个0表示该网段是在本地AS产生的。*>有效且最优路由,变为10.0.0.0/8,?
指的import-route重分布引入的路由。
注意:
summary automatic命令
先在路由表中为聚合地址创建静态表项,再利用network命令宣告该聚合地址。
10.1.8.0/24、10.1.9.0/24、10.1.10.0/24、10.1.11.0/24手工汇总–>10.1.8.0/22
R1
ip route-static 10.1.8.0 22 null 0 //出接口指向空接口null
bgp 100
network 10.1.8.0 22
为什么指向null 0,因为这条10.1.8.0路由并不是具体的明细网络地址,而是手工汇总并产生的网段,AS100以外的数据包发送到AS100时只会寻找明细网络地址,寻找10.1.8.1/24、10.1.9.1/24、10.1.10.1/24、10.1.11.1/24。
[R1-bgp]dis bgp rout
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 0.0.0.0 0 0 i
看到下一跳是4个0表示该网段是在本地AS产生的。
注意:i
是通告network方式注入的路由。
R3上能看到这条手工汇总路由
<R3>dis bgp rou
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 13.0.0.1 0 0 100i
R3的路由表中只有一条聚合路由,其他明细路由均未进入R3的路由表。
<R1>dis ip routing-table protocol static
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.8.0/22 Static 60 0 D 0.0.0.0 NULL0
简单的场景下,通过静态路由进行聚合的方式已经足够了,但是对于拓扑结构或者路由策略稍微复杂一些的情况,通过静态路由进行聚合的方式不建议被使用。
network命令使10.1.8.1/24、10.1.9.1/24、10.1.10.1/24、10.1.11.1/24精确的地址进入BGP路由表。
[R1]bgp 100
[R1-bgp]network 10.1.8.0 24
[R1-bgp]network 10.1.9.0 24
[R1-bgp]net 10.1.10.0 24
[R1-bgp]net 10.1.11.0 24
[R1-bgp]dis bgp ro
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/24 0.0.0.0 0 0 i
*> 10.1.9.0/24 0.0.0.0 0 0 i
*> 10.1.10.0/24 0.0.0.0 0 0 i
*> 10.1.11.0/24 0.0.0.0 0 0 i
*>有效且最优路由,0.0.0.0表示该网段是在本地AS产生的。i
是通告network方式注入的路由。R1的BGP路由表中包含了所有明细路由。
1、通过aggregate命令同时发送聚合路由和明细路由。
10.1.8.0/22的子网掩码,22是指1不变位,也就是22个1,11111111 1111111 11111100 ,8+8+6=22,11111111的十进制是255,11111100 的十进制是252。
bgp 100
[R1-bgp]aggregate 10.1.8.0 255.255.252.0
[R1-bgp]dis bgp ro
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 127.0.0.1 0 i
*> 10.1.8.0/24 0.0.0.0 0 0 i
*> 10.1.9.0/24 0.0.0.0 0 0 i
*> 10.1.10.0/24 0.0.0.0 0 0 i
*> 10.1.11.0/24 0.0.0.0 0 0 i
R1的BGP路由表中包含了聚合路由和所有明细路由。都为*>有效且最优路由。
<R3>dis bgp ro
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 13.0.0.1 0 100i
*> 10.1.8.0/24 13.0.0.1 0 0 100i
*> 10.1.9.0/24 13.0.0.1 0 0 100i
*> 10.1.10.0/24 13.0.0.1 0 0 100i
*> 10.1.11.0/24 13.0.0.1 0 0 100i
R3的路由表中包含了聚合路由和所有明细路由。都为*>有效且最优路由。下一跳13.0.0.1 由AS100传送过来。
100i:100i是指经过了AS100,100i的i-origin(i?) i-通告和汇总产生的,?-import重分布产生。
2、通过aggregate命令手动聚合路由,detail-suppressed抑制明细路由。
(1)对宣告;引入;始发;以及通过BGP学到的路由都会生效
(2)汇总后只将汇总路由传递出去 ,参与汇总的明细路由将在本地BGP路由表打上“S”被抑制
(3)汇总后的路由不再携带明细路由的AS号,只携带汇总设备的AS号,此路由以汇总设备作为始发。
bgp 100
aggregate 10.1.8.0 255.255.252.0 detail-suppressed
[R1-bgp]dis bgp ro
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 127.0.0.1 0 i
s> 10.1.8.0/24 0.0.0.0 0 0 i
s> 10.1.9.0/24 0.0.0.0 0 0 i
s> 10.1.10.0/24 0.0.0.0 0 0 i
s> 10.1.11.0/24 0.0.0.0 0 0 i
R1的BGP路由表中包含了所有明细路由。R1的BGP路由表中,明细路由前面都有“s
”的标志,代表这些路由已经被聚合路由抑制。
<R3>dis bgp ro
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 13.0.0.1 0 100i
R3的路由表中只有一条聚合路由,这是因为在aggregate命令中配置了detail-suppressed参数,使R1只会将聚合路由发送给R2。
[R1-bgp]aggregate 10.1.8.0 255.255.252.0 ?
as-set //发出聚合路由时携带明细路由的AS号。
attribute-policy //设置某些属性,后面带Rout-policy。
detail-suppressed //抑制所有明细,邻居只有汇总路由。
origin-policy //只有命中指定路由后才会产生此聚合路由(被route-policy命中的的明细)
suppress-policy //选择性抑制明细路由(被suppress-policy命中的路由会被抑制)
policy
<cr> Please press ENTER to execute command
默认情况下聚合后的路由不再携带原明细路由的AS号,只有本聚合设备的AS然后开始传递,这样聚合路由回传存在环路的风险。
[R2]int lo1
[R2-LoopBack1]ip add 10.1.10.1 24
[R2-LoopBack1]int lo2
[R2-LoopBack2]ip add 10.1.11.1 24
[R2]ip ip-prefix r1 index 10 permit 10.1.10.0 24
[R2]ip ip-prefix r1 index 20 permit 10.1.11.0 24
[R2]route-policy r1 permit node 10
Info: New Sequence of this List.
[R2-route-policy]if-match ip-prefix r1
[R2-route-policy]q
R3上作聚合
aggregate 10.1.8.0 255.255.252.0 detail-suppressed
R4上查看
<R4>dis bgp ro
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 34.0.0.3 0 300?
R4访问10.1.11.1,R3收到访问信息,由于在R3上是10.1.8.0/22,无法判断是从哪台设备生成的路由?是R1还是R2产生的路由。
3、带AS-SET的汇总,还原本来的AS号码,用于本AS不作汇总
。
[R3-bgp]aggregate 10.1.8.0 255.255.252.0 detail-suppressed as-set
[R3-bgp]dis bgp ro
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 127.0.0.1 0 {200 100}?
s> 10.1.8.0/24 13.0.0.1 0 0 100i
s> 10.1.9.0/24 13.0.0.1 0 0 100i
s> 10.1.10.0/24 23.0.0.2 0 0 200?
s> 10.1.11.0/24 23.0.0.2 0 0 200?
下一跳是127.0.0.1表示该网段是在非本地AS由自己产生的。*>有效且最优路由,变为10.0.0.0/8,来源AS200、AS100,?
指的import-route重分布引入的路由。
i-通告和汇总产生的
?-import重分布产生
s>是在加了detail-suppressed后抑制了。
<R4>dis bgp ro
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.8.0/22 34.0.0.3 0 300 {200 100}?
300 {200 100}?
*>有效且最优路由,聚合路由10.0.0.0/8,从AS200和AS100过来经过AS300,?
指的import-route重分布引入的路由。
这时如果R4与R1相连,由于有100AS号,路由R4不会更新路由,就避免了环路。
<R3>dis bgp rou 10.1.11.1
BGP local router ID : 34.0.0.3
Local AS number : 300
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 10.1.11.0/24:
From: 23.0.0.2 (23.0.0.2)
Route Duration: 00h24m20s
Direct Out-interface: GigabitEthernet0/0/2
Original nexthop: 23.0.0.2
Qos information : 0x0
AS-path 200, origin incomplete, MED 0, suppressed, pref-val 0, valid, external,
best, select, active, pre 255
Not advertised to any peer yet
<R3>dis bgp rou 10.1.8.0 22
BGP local router ID : 34.0.0.3
Local AS number : 300
Aggregator: AS 300, Aggregator ID 34.0.0.3汇总ID, Atomic-aggregate原子聚合
Advertised to such 3 peers3个邻居:
23.0.0.2
13.0.0.1
34.0.0.4
4、suppress-policy
抑制某些属性,后面带Rout-policy ,仅发送聚合路由和选定的明细路由。
Route-policy |
---|
Route-policy [名称] [允许或拒绝] node [系列号]-----隐含拒绝所有 。 |
If条件(ACL、前缀列表、接口、tagg等) |
Apply(修改属性) |
Route-policy [名称] [允许] node [系列号]-----如果允许其他。 |
Any(条件) |
对于R2只通告聚合路由192.168.1.0/26 ,和192.168.1.49/28这条明细路由,192.168.1.17/28和192.168.1.33/28不需外界访问。
[R1]acl 2000
[R2-acl-basic-2000]rule 10 permit source 192.168.1.17 0.0.0.15
[R2-acl-basic-2000]rule 15 permit source 192.168.1.33 0.0.0.15
[R2]route-policy att1 permit node 10 路由策略att1编号10
Info: New Sequence of this List.
[R2-route-policy]if-match acl 2000 //如果符合条件2000,就执行系列号10的att1
接下来找到att1的as-set suppress-policy att1 抑制策略att1
[R2-bgp]Aggregate 192.168.1.0 26 as-set suppress-policy att1
[R2]dis acl all
Total quantity of nonempty ACL number is 1
Basic ACL 2000, 2 rules
Acl's step is 5
rule 10 permit source 192.168.1.16 0.0.0.15
rule 15 permit source 192.168.1.32 0.0.0.15
R2在BGP中宣告三个网段
[R2]bgp 200
[R2-bgp]net 192.168.1.17 28
[R2-bgp]net 192.168.1.33 28
[R2-bgp]net 192.168.1.49 28
[R2-bgp]dis bgp ro
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0/26 127.0.0.1 0 i
s> 192.168.1.16/28 0.0.0.0 0 0 i
s> 192.168.1.32/28 0.0.0.0 0 0 i
*> 192.168.1.48/28 0.0.0.0 0 0 i
*>有效且最优路由,聚合路由192.168.1.0/26,抑制192.168.1.16/28、192.168.1.32/28两个明细网段。
R3上只能看到聚合路由192.168.1.0/26 ,和192.168.1.49/28这条明细路由。
<R3>dis bgp ro
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0/26 23.0.0.2 0 200i
*> 192.168.1.48/28 23.0.0.2 0 0 200i
5、origin-policy 仅聚合特定的明细路由
要求:R2只将192.168.1.16/28和192.168.1.32/28这两条路由进行聚合。聚合路由192.168.1.0/26。
[R2]ip ip-prefix ORIGIN index 10 permit 192.168.1.16 28
[R2]ip ip-prefix ORIGIN index 20 permit 192.168.1.32 28
[R2]route-policy ORIGIN permit node 5
Info: New Sequence of this List.
[R2-route-policy]
[R2-route-policy]if-match ip-prefix ORIGIN
[R2-route-policy]q
[R2]bgp 200
[R2-bgp]aggregate 192.168.1.0 26 detail-suppressed origin-policy ORIGIN
[R2-bgp]dis bgp ro
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0/26 127.0.0.1 0 i
s> 192.168.1.16/28 0.0.0.0 0 0 i
s> 192.168.1.32/28 0.0.0.0 0 0 i
*> 192.168.1.48/28 0.0.0.0 0 0 i
只有匹配路由策略ORIGIN的192.168.1.16/28和192.168.1.32/28路由被聚合,其他明细路由未被聚合。同时宣告聚合路由。
<R3>dis bgp ro
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0/26 23.0.0.2 0 200i
*> 192.168.1.48/28 23.0.0.2 0 0 200i
<R4>dis bgp ro
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.1.0/26 34.0.0.3 0 300 200i
*> 192.168.1.48/28 34.0.0.3 0 300 200i
6、attribute-policy 修改聚合路由的属性
将匹配路由策略按照修改聚合路由属性。
[R2]route-policy ATTR permit node 20
[R2-route-policy]apply origin incomplete //设置起源I变成不完整的?
[R2-route-policy]q
[R2]bgp 200
[R2-bgp]aggregate 192.168.1.0 26 detail-suppressed attribute-policy ATTR
R3对应的路由的Ogn值为“?”代表该路由的Origin属性为Incomplete。