ネスペ令和3年午後1問2のOSPFについて
ネスペ過去問の令和3年度午後1問2のOSPFエリアに関する問題が解答を見てもよく分からなかったので、調べながら考えてみる。
問題内容
内容をざっくりと要約すると、D社がE社を買収しネットワーク構成を統合したいので新しく構成を考える、というもので、ここでの問題がOSPFエリアのエリア0(バックボーンエリア)がエリア1に挟まれて分断されてしまっているというところになっている。
D社が買収したE社は奇跡的にD社と同じビルの違うフロアにネットワークが構築されていたので、L3SWを接続するだけでネットワークに加えることができた。ただ、すでにあるD社(本社)のOSPFエリア0と被る形でE社のネットワークもOSPFエリア0に設定をしており、このままではうまくいかないらしい。

そもそもOSPFエリアについての理解も浅いので、そこもちゃんと調べてみる。
現状のOSPFエリアに対する理解
まず現状のOSPFエリアに対する理解としては、「OSPFのLSDBなどを小さくするために管理範囲を狭めるもの」という程度となる。そのため、上記問題のように特定のエリアが分断されているような形でどういう経路情報の交換が起きるのかなど全く想像がついていない。

OSPFのバックボーンエリアについて
OSPFはエリア0のことをバックボーンエリアといい、このバックボーンエリアにすべてのエリアは原則的には隣接していなくてはならない。OSPFでエリアを分けるとバックボーンエリアを通じてエリアごとのLSAのやり取りを行う。

このバックボーンエリアがないとすべてのエリアが多くの情報を持たなくてはいけなくなるので、中央集権的にバックボーンエリアのみが他のエリアのLSAを受け取って中継役となる。
OSPFの仮想リンク
先ほどのを言い換えると、基本的にはバックボーンエリア以外はバックボーンエリアとしか経路情報を交換しないので、中継などを行わないとも言える。つまり、ネスペ過去問の状況では、エリア1にバックボーンエリアが分断されるような形になっているが、エリア1は二つのバックボーンエリアと自身のLSAのみ交換するため、二つのバックボーンエリアは互いにLSAを交換することができない。
そこで、OSPFの仮想リンクという機能を使う。
OSPFの仮想リンクは下記のページで説明されているように、バックボーンエリアをつなげるためというよりは、何かの事情でバックボーンエリアと隣接できなかったエリアを繋げてあげるために利用されるようだ。

仮想リンクは中継したいエリア(トランジットエリアという)の両端にあるABR(エリア境界ルータ)で行われる。設定方法はトランジットエリアと対抗側のルータIDを指定してあげるとできるようになる。Ciscoのルータでは以下のように仮想リンクを張る二つのルータにそれぞれ設定を行うらしい。
R2(config)# router ospf 1
R2(config-router)#area 10 virtual-link 4.4.4.4
R2(config-router)#network 10.1.1.254 0.0.0.0 area 20
R2(config-router)#network 10.2.1.254 0.0.0.0 area 10R4(config)# router ospf 1
R4(config-router)#area 10 virtual-link 2.2.2.2
R4(config-router)#network 10.4.1.254 0.0.0.0 area 10
R4(config-router)#network 10.5.1.254 0.0.0.0 area 0この仮想リンクを繋げることによってLSAの交換が行われるようになる。問題内容に戻ると、二つのバックボーンエリアでLSA交換が行われるようになるが、OSPFのパケットにはエリアIDが含まれるので互いに同じエリアだと分かり経路情報をうまく交換できるようになる。
論理的には、バックボーンエリアが一つにつながり、それにエリア1が接続されている一般的なOSPFエリア設計となる。
ちなみに、ネスペの問題で問われていたのは、
OSPFエリアを繋げる機能:OSPF仮想リンク
E社バックボーンエリアから接続できない場所:D社バックボーンエリア
の二つだった。
前者は機能をそのまま答えるだけで、後者はエリア1がD社バックボーンエリアの情報は渡さないためにE社バックボーンエリアからは見えない、といったわけだった。
OSPFのエリアについての理解自体はあっていたが、OSPF仮想リンクについてそもそも知らなかったので解けなかった。あとは、OSPFのエリア間のLSAの交換方法もあまり詳しくは知らなかった。お約束としてバックボーンエリアと接続するっていうのが頭の隅に残ってたくらい。
実はOSPFについては「ネットワークエンジニアとして」のページを参照するとまだ知らないことがあるようで、また別の機会に勉強したいと思っている。