OSPFのエリア分割を試してみた

VyattaのOSPFでは、OSPFエリア分割を使用できる。エリア分割では、1. 経路再計算の領域を限定することが出来るが、2. エリア0につながっていないエリアからはvirtual-linkを張らないと通信できない、、などいくつか気になる点があったので、いろいろ試してみた。
※ 量が多かったため詳細な設定は張らず、設定図だけを載せている。。orz

1. エリアが5つある場合

エリア0の隣の2つのエリアとは直接疎通できるが、それ以外のエリア(0.0.0.24, 0.0.0.25)とは直接通信出来ないため、vyatta1<=>vyatta3, vyatta3<=>vyatta4の間で、それぞれバーチャルリンクを張っている。設定は、次のようになる。(vyatta1<=>vyatta3 の間)

vyatta1 :
vyatta@vyatta1# set protocols ospf area 0.0.0.22 virtual-link 192.168.24.3
vyatta3:
vyatta@vyatta3# set protocols ospf area 0.0.0.22 virtual-link 192.168.21.1 

この状態では、vyatta1〜4の全てで通信が出来た。Vyatta2からvyatta4のtracerouteは次のようになった。

traceroute to 192.168.25.4 (192.168.25.4), 30 hops max, 40 byte packets
 1   (192.168.21.1)  5.851 ms  5.850 ms  5.847 ms
 2   (192.168.22.3)  54.845 ms  54.882 ms  54.884 ms
 3   (192.168.25.4)  58.677 ms  58.691 ms  58.687 ms

2. エリア0が存在しない場合

エリア0が無い場合、どうなるのか試してみた。基本的な設定は1と同じだが、vyatta1,vyatta2が属するエリアが、0.0.0.0から0.0.0.21になっている。

この状況でも、virtual-linkがあるせいか、vyatta1, vyatta3, vyatta4の間では疎通が取れた。
ただ、vyatta1, vyatta3, vyatta4 共に、vyatta2のみが所持している192.168.23.0/24(OSPFエリア 0.0.0.23)に対しては、経路が無く通信できなくなった。参考までに、vyatta4のルーティングテーブルは次のようになり、192.168.23.0/24への経路がないことが分かる。

C>* 127.0.0.0/8 is directly connected, lo
O>* 192.168.21.0/24 [110/30] via 192.168.24.3, eth1, 00:01:42
O>* 192.168.22.0/24 [110/20] via 192.168.24.3, eth1, 00:22:42
O   192.168.24.0/24 [110/10] is directly connected, eth1, 00:23:28
C>* 192.168.24.0/24 is directly connected, eth1
O   192.168.25.0/24 [110/10] is directly connected, eth0, 00:23:28
C>* 192.168.25.0/24 is directly connected, eth0

3. エリアが3つの場合(境界ルーターが存在しない場合)


エリア0.0.0.22を広め(ルーターx2, セグメント x3)に取って、バーチャルリンクがなくても動作するか試してみた。結果として、vyatta1からvyatta4まで問題なく通信出来た。vyatta2からvyatta4へのtracerouteは次のようになる。

vyatta@vyatta2:~$ traceroute 192.168.25.4
traceroute to 192.168.25.4 (192.168.25.4), 30 hops max, 40 byte packets
 1   (192.168.21.1)  4.825 ms  4.863 ms  4.857 ms
 2   (192.168.22.3)  7.765 ms  7.786 ms  7.781 ms
 3   (192.168.25.4)  12.874 ms  12.913 ms  12.909 ms

vyatta2のルーティングテーブルは次のようになった。Vyatta4しか接続されていない192.168.25.0/24まできちんと含まれている。

vyatta@vyatta2:~$ show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       I - ISIS, B - BGP, > - selected route, * - FIB route
C>* 127.0.0.0/8 is directly connected, lo
O   192.168.21.0/24 [110/10] is directly connected, eth0, 00:37:50
C>* 192.168.21.0/24 is directly connected, eth0
O>* 192.168.22.0/24 [110/20] via 192.168.21.1, eth0, 00:00:34
O   192.168.23.0/24 [110/10] is directly connected, eth1, 00:37:50
C>* 192.168.23.0/24 is directly connected, eth1
O>* 192.168.24.0/24 [110/30] via 192.168.21.1, eth0, 00:00:34
O>* 192.168.25.0/24 [110/40] via 192.168.21.1, eth0, 00:00:34

これといったオチは無いのだが w、エリア0が無くてもvirtual-linkがあれば、疎通が取れるのは、少々意外だった。。