OSPF的不规则区域
OSPF中区域划分要求:1.区域之间必须存在ABR,2.区域划分按星型拓扑划分。但在现实中应种种不可抗因素,导致不规则区域的出现,常见的不规则区域如下:
在远离骨干的非骨干区域中,area 2和area 1间的ABR由于没有连接到骨干区域,被称为非法ABR,非法ABR可以收集所连区域的lsa,但不能将传播路由信息,导致area 2 和其他区域间不能通信。
在不连续骨干区域中,由于区域水平分割的存在,area 1可以学到两个骨干区域的路由信息,但不能将学到的路由信息传播到另一个区域,导致连个骨干区域之间不能互通。
解决不规则区域的方法有3个,以下就以远离骨干的非骨干区域为例,展示如何解决。实验拓扑如下:
使用vpn连接不规则区域
在实验拓扑中,因为AR4没有连接骨干区域,所以AR4是非法ABR,area 2与其他区域不能通信,但如果在AR4与AR2间连接一根线,就可以让AR4成为合法ABR,但在现实中,专线连接不易实现,这是我们可以用虚拟专线实现AR4与AR2间的连接。这里我使用gre连接AR4和AR2。
- 配置IP,启动ospf,在R1上查看路由表,没有任何关于area 2的路由信息
[r1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 5 Routes : 5
OSPF routing table status : <Active>
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/32 OSPF 10 1 D 12.1.1.2 GigabitEthernet
0/0/0
3.3.3.3/32 OSPF 10 2 D 12.1.1.2 GigabitEthernet
0/0/0
4.4.4.4/32 OSPF 10 3 D 12.1.1.2 GigabitEthernet
0/0/0
23.1.1.0/24 OSPF 10 2 D 12.1.1.2 GigabitEthernet
0/0/0
34.1.1.0/24 OSPF 10 3 D 12.1.1.2 GigabitEthernet
0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 在R2和R4上创建tunnel口,并使用gre连接R2和R4
[r2]interface Tunnel 0/0/0
[r2-Tunnel0/0/0]ip address 24.1.1.1 24
[r2-Tunnel0/0/0]tunnel-protocol gre
[r2-Tunnel0/0/0]source 23.1.1.1
[r2-Tunnel0/0/0]destination 34.1.1.2
[r4]interface Tunnel 0/0/0
[r4-Tunnel0/0/0]ip address 24.1.1.2 24
[r4-Tunnel0/0/0]tunnel-protocol gre
[r4-Tunnel0/0/0]source 34.1.1.2
[r4-Tunnel0/0/0]destination 23.1.1.1
- 使用gre连接AR2和AR4后,可以选择将tunnel口宣告到area 0中或者和宣告到area 2中,接下来我们会对这两种宣告都进行尝试,并对这两种宣告进行一个比较。
将tunnel口都宣告到area 0中
[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 24.1.1.1 0.0.0.0
[r4]ospf 1
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 24.1.1.2 0.0.0.0
- 查看R1的路由表,可以看出R1学到了area 2的所有路由。由于R4通过gre连接到area 0成为了合法ABR,R4可以将某个区域的路由信息传递给其他区域,也将area 2的路由信息通过tunnel口传递到area 0,area 0和area 1都学到了area 2的路由信息,但此时也产生了一个问题,area 1学到了area 2的路由后,可以通过AR2将路由信息传递给area 0,而且tunnel口开销值很大,如果只比较开销值,那R2应该会选择area 1传来的路由信息,而不是通过tunnel口传来的路由信息,但事实却与之相反,这是由于如果从骨干区域和普通区域学到了同一条路由,那么会不论开销直接选择从骨干区域传来的路由
[r1]display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 7
OSPF routing table status : <Active>
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/32 OSPF 10 1 D 12.1.1.2 GigabitEthernet 0/0/0
3.3.3.3/32 OSPF 10 2 D 12.1.1.2 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 3 D 12.1.1.2 GigabitEthernet 0/0/0
5.5.5.5/32 OSPF 10 1564 D 12.1.1.2 GigabitEthernet 0/0/0
23.1.1.0/24 OSPF 10 2 D 12.1.1.2 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 12.1.1.2 GigabitEthernet 0/0/0
34.1.1.0/24 OSPF 10 3 D 12.1.1.2 GigabitEthernet 0/0/0
45.1.1.0/24 OSPF 10 1564 D 12.1.1.2 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 查看R3的路由表,R3收到R2和R4传来的路由信息,由于R2和R4都是合法ABR,所以R3选择开销小的。
<r3>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 8
OSPF routing table status : <Active>
Destinations : 7 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 2 D 23.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 OSPF 10 1 D 23.1.1.1 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 1 D 34.1.1.2 GigabitEthernet 0/0/1
5.5.5.5/32 OSPF 10 2 D 34.1.1.2 GigabitEthernet 0/0/1
12.1.1.0/24 OSPF 10 2 D 23.1.1.1 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 23.1.1.1 GigabitEthernet 0/0/0
OSPF 10 1563 D 34.1.1.2 GigabitEthernet 0/0/1
45.1.1.0/24 OSPF 10 2 D 34.1.1.2 GigabitEthernet 0/0/1
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 查看R5的路由表,发现R5只能通过tunnel口与area 0通信
<r5>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 8 Routes : 8
OSPF routing table status : <Active>
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 OSPF 10 3 D 45.1.1.1 GigabitEthernet 0/0/0
3.3.3.3/32 OSPF 10 2 D 45.1.1.1 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 1 D 45.1.1.1 GigabitEthernet 0/0/0
12.1.1.0/24 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
23.1.1.0/24 OSPF 10 3 D 45.1.1.1 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 45.1.1.1 GigabitEthernet 0/0/0
34.1.1.0/24 OSPF 10 2 D 45.1.1.1 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 如果将tunnel口都宣告到area 0,area 0与area 2间的通信都是通过tunnel口,大大增加了资源占用
将tunnel口都宣告到area 2中
[r2]ospf 1
[r2-ospf-1]area 2
[r2-ospf-1-area-0.0.0.2]network 24.1.1.1 0.0.0.0
[r4]ospf 1
[r4-ospf-1]area 2
[r4-ospf-1-area-0.0.0.2]network 24.1.1.2 0.0.0.0
- 查看R1的路由表,R1学到area 2的路由,是通过tunnel口去往area 2。
<r1>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 8 Routes : 8
OSPF routing table status : <Active>
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/32 OSPF 10 1 D 12.1.1.2 GigabitEthernet 0/0/0
3.3.3.3/32 OSPF 10 2 D 12.1.1.2 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 3 D 12.1.1.2 GigabitEthernet 0/0/0
5.5.5.5/32 OSPF 10 1564 D 12.1.1.2 GigabitEthernet 0/0/0
23.1.1.0/24 OSPF 10 2 D 12.1.1.2 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 12.1.1.2 GigabitEthernet 0/0/0
34.1.1.0/24 OSPF 10 3 D 12.1.1.2 GigabitEthernet 0/0/0
45.1.1.0/24 OSPF 10 1564 D 12.1.1.2 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 查看R3的路由表,发现R3访问area 2也是通过R2的tunnel口,这是因为R4依然是非法ABR,不能传递路由信息,area 2的路由信息只能由R2进行通告。
<r3>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 7
OSPF routing table status : <Active>
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 2 D 23.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 OSPF 10 1 D 23.1.1.1 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 1 D 34.1.1.2 GigabitEthernet 0/0/1
5.5.5.5/32 OSPF 10 1564 D 23.1.1.1 GigabitEthernet 0/0/0
12.1.1.0/24 OSPF 10 2 D 23.1.1.1 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 23.1.1.1 GigabitEthernet 0/0/0
45.1.1.0/24 OSPF 10 1564 D 23.1.1.1 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 查看R5的路由表,发现在R5的路由表中访问其他区域的开销都非常大。R4可以收到了R2和R3通告的关于area 0的路由信息,由于这两部分路由信息都是从area 0学到的,所以R4访问其他设备都是通过正常接口,但R4依然是非法ABR,不能将从area 1学到的路由信息传递给R5,R5只能学到R2通告的的路由信息,所以R5的路由表中开销都非常大,但R5与其他设备通信时都需进过R4,R4访问其他设备无需通过tunnel口,所以R5访问其他设备时也无需经过tunne口。
<r5>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 8 Routes : 8
OSPF routing table status : <Active>
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 OSPF 10 1563 D 45.1.1.1 GigabitEthernet 0/0/0
3.3.3.3/32 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 1565 D 45.1.1.1 GigabitEthernet 0/0/0
12.1.1.0/24 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
23.1.1.0/24 OSPF 10 1564 D 45.1.1.1 GigabitEthernet 0/0/0
24.1.1.0/24 OSPF 10 1563 D 45.1.1.1 GigabitEthernet 0/0/0
34.1.1.0/24 OSPF 10 1565 D 45.1.1.1 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
- 如果将tunnel口都宣告到area 0,其他区域向area 2发消息都必须经过tunnel口,area 2回消息则无需经过tunnel。
注意
- 当一台ABR同时连接骨干区域和多个非骨干区域时,非骨干区域之间将直接通过这个ABR来传递路由信息,而不需要经过骨干区域。
- 当路由信息同时从骨干区域和非骨干区域学到,设备将无条件选择骨干区域发来的信息,而不要非骨干发来的信息,即使骨干区域发送的信息开销值更大。
缺点
- 由于OSPF会优先选择骨干区域学来的路由信息,所以,可能会造成选路不佳的问题;
- 通过隧道连接后,非法的ABR变成合法的ABR后,将会直接通过区域0学到骨干区域的路由信息,也会通过区域1学到区域0的路由信息,导致重复更新的产生。
- 因为虚链路的存在,AR2和AR4之间也需要建立邻居关系,所以,导致邻居间周期性的数据都需要穿越area 1进行传递,会对区域1的资源造成额外的损耗。
虚链路
使用vpn连接远离骨干的非骨干区域会导致选路不佳和额外的资源占用,在上述实验中,我们使用gre技术,将R4连接到骨干区域,使之成为合法ABR,或者将R2的tunnel口宣告的area 2中,使R2将area 2的路由信息传递给其他区域。事实上,我们也可以通过虚链路技术,在R2与R4间建立虚链路,使R2对R4进行授权,使R4成为合法ABR。
[r2]ospf 1
[r2-ospf-1]area 1 --- 虚链路的配置是在虚链路需要穿过的区域内进行配置。
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 --- 指定虚链路邻居,4.4.4.4为该邻居的RID
[r4]ospf 1
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2 --- 虚链路需要双方同时建立才能生效
- 查看R5的路由表,可以看出R5正常的学到了其他区域的所有路由
<r5>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 7
OSPF routing table status : <Active>
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 OSPF 10 4 D 45.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 OSPF 10 3 D 45.1.1.1 GigabitEthernet 0/0/0
3.3.3.3/32 OSPF 10 2 D 45.1.1.1 GigabitEthernet 0/0/0
4.4.4.4/32 OSPF 10 1 D 45.1.1.1 GigabitEthernet 0/0/0
12.1.1.0/24 OSPF 10 4 D 45.1.1.1 GigabitEthernet 0/0/0
23.1.1.0/24 OSPF 10 3 D 45.1.1.1 GigabitEthernet 0/0/0
34.1.1.0/24 OSPF 10 2 D 45.1.1.1 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
缺点
- 因为虚链路的存在,AR2和AR4之间也需要建立邻居关系,所以,导致邻居间周期性的数据都需要穿越AREA 1进行传递,会对区域1的资源造成额外的损耗。
- 虚链路限制只能穿越一个区域。
多进程双向重发布
使用vpn和虚链路都不可避免的造成额外的资源占用,如果不想占用额外的资源,我们可以使用多进程双向重发布。多进程双向重发布即在一台设备上运行多个路由协议,每个路由协议进程都是独立的,互不影响,互不通信,多个进程使用的路由协议可以相同也可以不同,重发布即将该设备上某个路由协议进程学到的路由发布到其他进程里,进行双向重发布的设备成为ASBR(自治系统边界路由器/协议边界路由器。
在R4上启动两个ospf进程
[r4]ospf 1 route-id 4.4.4.4 -- 启动ospf进程1
[r4-ospf-1]area 1
[r4-ospf-1-area-0.0.0.1]network 35.1.1.2 0.0.0.0 --- 将左边接口和环回接口都宣告到进程1中
[r4-ospf-1-area-0.0.0.1]network 4.4.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.1]ospf 2 route-id 4.4.4.4 --- 启动ospf进程2,RID只需在ospf域内唯一
[r4-ospf-2]area 2
[r4-ospf-1-area-0.0.0.2]network 45.1.1.1 0.0.0.0 -- 将右边接口宣告到进程2中
双向重发布
r4-ospf-2]import ospf 1 --- 将ospf进程1学到的路由导入到进程2中
[r4-ospf-2]ospf 1
[r4-ospf-1]import ospf 2 -- 将ospf进程2学到的路由导入到进程1中
- 查看R5的路由表,发现R5学到了所有的路由信息,但路由信息显示proto为O_ASE,且Pre为150,这是因为这些路由信息都是R4将ospf进程1导入到进程2的路由,也成为域外路由,由于域外路由可控性差(毕竟是从其他地方导入的),域外路由的优先级都是150。
<r5>display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 7 Routes : 7
OSPF routing table status : <Active>
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
2.2.2.2/32 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
3.3.3.3/32 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
4.4.4.0/24 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
12.1.1.0/24 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
23.1.1.0/24 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
34.1.1.0/24 O_ASE 150 1 D 45.1.1.1 GigabitEthernet 0/0/0
OSPF routing table status : <Inactive>
Destinations : 0 Routes : 0
不连续骨干区域也可以通过这三种方法进行解决