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があれば、疎通が取れるのは、少々意外だった。。