今回から、ルーティングプロトコルの1つであるOSPF(Open Shortest Path First)と呼ばれるプロトコルについて解説していきます。(ちなみに、私の修士論文はOSPFでした!)
全ての記事を読めば、初学者の方でも、CCNA、CCNPレベルを飛び越えて、一気にCCIEレベルに到達できる内容になっております。
座学
OSPFの特徴
OSPFはIGP(Interior Gateway Protocol)に分類されるルーティングプロトコルの1つで、拠点等のLANで使用されます。
OSPFにはOSPFv2(OSPF Version 2)とOSPFv3(OSPF Version 3)の2種類が存在します。OSPFv2はIPv4環境、OSPFv3はIPv6環境で使用します。一般的にOSPFv2はOSPFと表記します。(OSPFv3は別の記事で解説します。)
Link State
RIPとOSPFの一番の違いはルート情報の交換方法になります。(RIPの解説はこちらの記事になります。)
RIPはDistance Vector型と呼ばれており、ルータ間では10.1.1.0/24などのプレフィックス情報のみ交換されます。また、RIPでは情報が伝搬される過程で、情報が変化します。これにより、ルータ毎にRIP Databaseの内容に差異が発生します。この結果、ルータ毎に内容の異なるRIP Databaseを基にベストパスを計算するため、RIPではルーティングループが発生する可能性があります。
一方、OSPFはLink State型と呼ばれており、ルート情報に加え、各ルータのインタフェースの情報や隣接するルータの情報などを交換します。OSPFではこの情報のことをLSA(Link State Advertisement)と呼び、LSAを格納するデータベースのことをLSDB(Link State DataBase)と呼びます。
一般的にOSPFでは6種類のLSAが使用されます。(LSAの詳細については別の記事で解説します。今は、LSAには色々な種類があるんだー、程度の認識で大丈夫です。)
各ルータは自身のインタフェースのコストやプレフィックス情報、隣接するルータの情報を格納したLSAを生成します。
そして、隣接するルータに対して、自身が保持しているLSAを広報します。
その後、各ルータは他のルータから学習したLSAを別のルータに広報します。この際、LSAの情報を変更せず、そのまま広報します。(RIPの場合はメトリックを修正して広報します。)
最終的に全てのルータまでLSAが伝搬されます。その後、各ルータは全く同じ情報を使用して各宛先へのベストパスを計算するため、OSPFではルーティングループが発生する可能性が極めて低いです。(厳密に言えば、マルチエリア構成の場合、異なるエリアに所属するルータ間では保持するLSAの内容に差異が発生します。エリアに関しては別の記事で詳しく説明します。)
OSPFではルート情報を計算する際、LSDB内のLSAをパズルのピースのようにつなぎ合わせて、ネットワーク全体の構成図を作成します。
その後、各ルータはSPF(Shortest Path First)と呼ばれるアルゴリズムを使用して、自身を根としたSPT(Shortest Path Tree)を生成し、各宛先へのベストパスを求めます。
メトリック
OSPFはメトリックにコストを使用します。コストは、下図の計算式の様にReference Bandwidthと呼ばれる値をインタフェースの帯域幅で割ることで求まります。Reference Bandwidthは管理者が設定可能な変数で、一般的なCiscoルータ/スイッチの場合は108、データセンター用のスイッチのNexusの場合は4×1011がデフォルト値になります。
Reference Bandwidthが108、インタフェースの帯域幅が100Mbpsの場合、インタフェースのコストは1になります。
もし、下図のように、Reference Bandwidthよりインタフェースの帯域幅の方が大きいく、計算結果が1未満になってしまう場合は、1に切り上げます。
下図のように、PCからサーバへの通信経路には、R1 ⇒ R2 ⇒ R3 ⇒ R4とR1 ⇒ R5 ⇒ R4の2つが存在します。RIPの場合はホップ数の少ないR1 ⇒ R5 ⇒ R4の経路をベストパスに選択しますが、OSPFではコストが最小のR1 ⇒ R2⇒ R3⇒ R4の経路をベストパスに選択します。
ルート情報の広報
RIPの場合、ネットワークに変化が発生していない場合でも、ルータは30秒間隔でルーティングテーブルに存在する全ルート情報を広報します。
一方、OSPFでは、ネットワークに変化が発生した場合、ルータは内容に変更が発生したLSAのみ広報します。そのため、RIPと比較し、OSPFではルーティングプロトコル自体のトラフィック量を削減可能です。。(OSPFの場合、ルータ間では定期的に死活監視のためのHelloパケットがやり取りされております。これに関しては、別の記事で解説します。)
Area
OSPFではAreaと呼ばれる概念が存在します。
OSPFでは各ルータは1つ以上のAreaに所属します。もし、Area内に大量のルータが存在する場合、各ルータのLSDBの情報量が肥大化します。
OSPFでは、ネットワークを複数のAreaに分割することで、各ルータのLSDBの情報量を削減可能です。
Areaの詳細は別の記事で詳しく解説しますので、現時点では以下の2点を認識している程度で大丈夫です。
- OSPFが動作しているルータは1つ以上のAreaに所属
- Areaを分割することで、各ルータのLSDBの情報量を削減可能
OSPFのメッセージ
OSPFでやり取りされるメッセージはIPヘッダでカプセル化されます。IPヘッダのプロトコル番号には89番を使用します。
また、OSPFでは224.0.0.5と224.0.0.6の2種類のマルチキャストアドレスを使用し、様々な情報をやり取りします。詳細は別の記事で解説します。
ダイクストラアルゴリズム
OSPFのSPFで使用されているダイクストラアルゴリズムを詳しく説明します。興味がなければスルーしていただいた問題ありません。
ダイクストラアルゴリズムを使用し、R1のSPTを計算する際の流れを見ていきます。ルータの横の四角には、SPTの根のルータから各ルータへの経路の合計のコストを記入します。これ以降、SPTの根のルータから各ルータへのコストを「合計コスト」と表記します。SPT計算開始前の全ルータの合計コストを無限として扱います。
今回、R1を根とするSPTを計算するので、R1の合計コストは0になります。合計コストが確定したルータは赤色で表現します。
次に赤色のルータから到達可能なルータを検索します。今回、R1からR2/R3/R4が到達可能なので、R2/R3/R4を緑色に変化させます。また、R2/R3/R4の合計コストを更新します。
その後、緑色のR2/R3/R4の中で合計コストが最小であるR2を赤色に変更します。
すると、赤色のR2経由でR5に到達できるようになるため、R5を緑色に変更し、R5の合計コストを更新します。
その後、緑色のR3/R4/R5の中で合計コストが最小であるR4を赤色に変更します。
すると、R5はR1 ⇒ R2 ⇒ R5の経路より、R1 ⇒ R4 ⇒ R5の経路の方がコストが低いので、R5の合計コストを更新します。
その後、緑色のR3とR5の中で合計コストが最小であるR3を赤色に変更します。
すると、赤色のR3経由でR6に到達できるようになるため、R6を緑色に変更し、R6の合計コストを更新します。
その後、緑色のR5とR6の中で合計コストが最小であるR5を赤色に変更します。
すると、R6はR1 ⇒ R3 ⇒ R6の経路より、R1 ⇒ R4 ⇒ R5 ⇒ R6の経路の方がコストが低いので、R6の合計コストを更新します。
最後に、R6を赤色に変更します。すべてのルータが赤色に変化すると、SPTの計算が完了します。
コメント