バーチャルリンク登場の背景
OSPF では、ループ回避の目的で、Area 0 以外のエリア (非バックボーンエリア) 間での LSA 情報交換は直接は禁止されており、必ず Area 0 (バックボーンエリア) を経由するよう義務付けられています。
例えば下記構成において、R4 では Area 245 と Area 346 の情報交換はできませんので、R5 から R6 への通信ルートは非効率なものとなります。
解決策は当然、R2 と R4 の間のリンク、もしくは R3 と R4 の間のリンク、もしくはその両方を Area 0 にすれば良いのですが、仮に制約上それが不可の場合を考えます。
R4 に Area0 のインタフェースが出来れば、R4 の中で Area346 ⇒ Area0 ⇒ Area245 と内部的に処理ができるのでOKです。
例えば、R4 の Loopback インタフェースを Area 0 にしてみます。すると R5 から R6 (6.6.6.6) への NextHop が R4 に変わります。
しかしここで問題となるのは、R2 と R3 (ABR:境界ルータ) は Area 245 (非バックボーンエリア) からは LSA Type3 を受け取れないことです。(※Type4,5 は受け取れます)
OSPF のループ回避のための構成上、あってはならないためです。
このような問題があるため、バックボーンエリアの分断はNGとなるのです。
上記例の場合、R2 と R3 は 4.4.4.0/24 の LSA Type3 を無視するため、R1、R2、R3 には 4.4.4.0/24 のルート情報が載りません。(R5 と R6 は ABR では無いため問題なく 4.4.4.0/24 のルート情報を載せることができます)
ここでの問題解決策候補として挙がるのが Virtual Linkです。
Virtual link の設定と本質的な意味
この例では R2 と R4 の間で Virtual Link を張ることにします。
Cisco の場合、設定が「area 245 virtual-link <相手のrouter-id>」となり誤解を生みやすいのですが、Virtual Link の本質は、互いのルータに Area 0 所属の仮想インタフェースを創り、互いを Area 0 で繋げ、非バックボーンエリアを越えて Area 0 の情報を一元管理することにあります。
つまり、物理構成はともかく、論理構成が OSPF 構成原則をしっかり守るようにすればよく、その論理構成を柔軟に対応させるのが Virtual Link です。
具体的な効果としては以下の 2 つです。
- Area 0 に接していないルータを Area 0 に所属させ、非バックボーンエリア間での LSA type3~5 の情報交換を許可する
- 分断されたArea0を繋ぎ、物理的に離れた Area 0 を論理的に 1 つにし、LSA 等の情報を正しく交換、共有する
先の例で言えば、R4 の Area 0 の Loopback インタフェースが無い状態で R2 と R4 を Virtual Link で繋げば 1 の効果、R4 の Area 0 の Loopback インタフェースが有る状態で R2 と R4 を Virtual Link で繋げば 2 の効果が得られます。
実際に良く見る構成は下記のようなものだと思います。
Virtual Link を通して伝わる情報は実は本質的に必要な情報ではなく、単純に Area 0 の LSA Type1/2 の情報 (例えば「R3 が Area 0 に参加していますよ」という情報) のみです。
効果として一番期待されるのは Virtual Link を通して伝わる情報ではなく、R3 が直接 Area 12 と Area 23 の間で (内部的には Area 0 を経由して) LSA Type3~5 を交換できるようにするということなのです。
余談ですが、Area 0 からの LSA Type3~5 はどのエリアに伝達してもループは発生しません。
なので、どのエリアにも伝達することが可能であり、例え非バックボーンエリアが分断 (エリア重複) されていても問題は発生しません。
また、よくある引っ掛け問題として、「Area 0 に認証設定を掛けなさい」というものがあります。
実際に area 0 authentication と設定をしてみると Virtual Link が切れてしまいます。
これは Virtual Link も Area 0 であるため、R2、R3 ともに Virtual Link に認証キーの設定が必要になるためです。
コメント