OSPFでネットワーク経路を冗長化【現在の主流のルーティングプロトコル】

OSPFはTCP/IPネットワークで用いられるルーティングプロトコルの一つです。自律システム(AS:Autonomous System)の内部で経路選択を行なうIGP(Interior Gateway Protocol)として使われるプロトコルに含まれます。

これまでの記事では、デフォルトゲートウェイ(ルータ)を冗長化するVRRP、スイッチングハブを冗長化するSTPについて見てきましたが、今回は、ネットワーク経路を冗長化するOSPFについて見ていきます。OSPFはただのルーティングプロトコルではなく、設計次第でネットワーク管理者がネットワークを自由にデザインできるプロトコルと言え、マスターするとネットワークがますます面白いと思えるようになるのではないかと思います。

現在の主流はOSPF

ルータ同士が経路情報を交換するルーティングプロトコルとして昔からあるのがRIPです。RIPはディスタンスベクター(距離ベクトル)型であり、最短のホップ数(経由するルータの数)で宛先に届くかを基準に経路を決定する方式です。

初代のRIPの他、VLSM対応※1やルーティング認証機能※2などが追加されたRIP2、IPv6ネットワークに対応したRIPngがあります。

※1 ルーティングアップデートに/26や/27といったサブネットマスクの情報を含めることができる。
※2 ルーティングアップデートに認証情報を含めることができ、信頼できるルータとのみ情報交換を行うことができる。

しかし、RIPには以下のような欠点があります。

RIPの欠点
  • RIPは経路情報伝達を一定時間間隔でしか行わないので、経路に障害が発生した場合などに経路の迂回路を見つけるのに時間がかかる。
  • RIPを使用すると、ネットワークの回線速度を考慮することができない。
  • ホップ数には15までの制限があり、16を超えるネットワークに対しては経路制御出来ない。

障害が発生したらすぐに切り替わって復活してほしいのですが、RIPは定期的な情報交換(レギュラーアップデート)を30秒間隔で行い、レギュラーアップデートが届かず、そのルーティング情報が無効と判断するのにホールドタイム(180秒)が必要で、さらに、ガベージコレクション(120秒)を待ってからようやくルーティングテーブルから削除されます。つまり、経路が切り替わるのに5分以上かかってしまいます。(このような事象を「コンバージェンスが遅い」と表現します。)

また、RIPは宛先までの経路をホップ数のみで判断するため、経路が64kbpsのISDN回線なのか、100Mbpsの専用線なのか判断できません。つまり、ネットワークの回線速度を考慮できないので、最適となる経路を選べないのです。

RIP2(RIP version 2)では、RIPが持つ問題を部分的に改善していますが、上記のような本質的な欠点は残っており、昨今の複雑化したネットワークには向いていません。

では、今、最も使われているルーティングプロトコルは何かというと、それが「OSPF」です。RIPで問題になっていた部分が改良されたものとなっています。

OSPFとは

OSPF(Open Shortest Path First)は、リンクステート型のルーティングプロトコルです。ネットワークのリンクステート(状態)をすべてのルータで共有することで、ループがあるネットワークでも安定した経路制御を可能にします。

OSPFの特徴

OSPFでは、すべてのルータがネットワークのトポロジー(接続状態)を完全に把握し、その情報を基に経路制御を行います。OSPFは最短経路優先(SPF:Shortest Path First)のアルゴリズムを使用し、コストが最小となる経路を最適経路とします。OSPFの特徴として以下が挙げられます。

OSPFの特徴
  • リンクステート型のプロトコルである。
  • メトリックとしてコストを使用する。
  • ネットワークを階層化できる。
  • コンバージェンスが速い。
  • VLSMに対応している。
  • ルーティング認証をサポートしている。

リンクステート型とは、どのルータとどのルータが隣接しているかという接続情報(リンクステート)を交換し合い、この情報の集合に基づいて経路を選択する方式のことです。

メトリックとしてコストを使用する

メトリックとは、目的地までに辿り着くまでどれだけ大変かを示す指標のことです。メトリックが小さい経路の方が早く辿り着くことができると判断され、その経路が優先されます。

OSPFでは、メトリックに帯域幅から計算するコストを使用します。OSPFのコストについて、IPAでは以下のように定義しています。

OSPFは、あて先までの回線コストの総和が最小となるパスを経路として選択する。回線コストは回線速度に反比例した式で計算される。

例えば、RIPは単純にホップ数をメトリックとしていますが、ホップ数が多くても、回線帯域が広ければ、そっちの経路の方が早くなるので、そちらを優先してほしいですね。しかし、RIPはそのような経路制御ができません。

OSPFでは、「回線コスト = 100(Mbps) ÷ 回線速度」という式でコストを計算します。
回線速度が10Mbpsであればコストは10、100Mbpsであればコストは1になります。

上記式は一例であり、コストは手動でも設定することができるため、管理者によって意図的に経路を変えることもできます。

このようにあて先までのコストを加算していき、合計が最小値になる経路がSPFアルゴリズム(ダイクストラとも言う)によって求められ、最適な経路として選出されます。

コストが同じ場合の動作

あて先までのコストが同じとなる経路が複数あるときは、負荷分散されます。この動作を活かして、あえて同じコストに設定し、トラフィックを負荷分散させる設計とすることもよくあります。むしろ、この負荷分散を目的として、OSPFを使用するケースも多いようです。

ネットワークを階層化できる

OSPFは、ネットワークトポロジーを把握し、経路制御を行いますが、ルータの台数が増え、トポロジーの情報が大きくなりすぎると、経路情報が複雑で大容量となります。結果、計算が大変になり、ルータにかかる負荷も増大します。ルータの負荷が増大すると、転送速度や切り替わり時間が遅くなるなどの問題が発生します。そのような問題を防ぐために、OSPFではエリアというグループに分けて管理することができるようになっています。

エリア分割の際は、中心となるバックボーンエリアとその他のエリアに分けてネットワークを階層化して管理します。上図のように各エリアは、必ずバックボーンエリアに接続されます。

バックボーンエリアと各エリアの境界にあるルータがエリア境界ルータとなります。各エリアのルータは、そのエリア内のトポロジー情報だけを持っており、エリア外については、エリア境界ルータからの距離しかわかりません。

このようにエリアを分けることで、経路制御情報を減らすことができ、1台あたりのルータ負荷が軽くなります。

さらに、AS(自律システム)の境界で他のASと接続する役割のルータをAS境界ルータといいます。

OSPFにおいて、ルータの種類として以下のようなものがあります。

ルータの種類説明
代表ルータ
(DR:Designated Router)
エリア内に各1つずつ選出された代表となるルータ。
バックアップ代表ルータ
(BDR:Backup Designated Router)
代表ルータのバックアップとなるルータ。エリア内に各1つずつ選出される。
エリア境界ルータ
(ABR:Area Border Router)
エリアの境界上に位置するルータ。
AS境界ルータ
(ASBR:AS Boundary Router)
別のASとの接続点となるルータ。

コンバージェンスが速い

コンバージェンスとはルータ間で経路情報が十分に行き渡り、すべてのルータが最新の経路をすべて認識している状態のことです。
OSPFでは各ルータはLSA(Link State Advertisement)と呼ばれる情報を交換することで、経路情報を把握します。LSAにはルータIDや、どのルータと接続されているかというリンク状態、コストなどの経路情報を把握するために必要な情報が含まれています。

OSPFでは初回時のLSA交換のやり取りで各ルータがネットワークの全体構成を把握します。また、ネットワークに変更があるとその変更内容のみが他のルータに伝えられるため、定期的にアップデートを送信するディスタンスベクタ型に比べ、高速にコンバージェンスできます。

LSA種類として以下のようなものがあります。

LSAの種類生成ルータ目的存在できるエリア
Router LSA全ルータ基本となるLSAで、エリア内にネットワーク情報を伝搬する。生成されたエリア内
Network LSADRエリア内の情報はDRを中心として交換することで、LSA交換のパケット総量を削減する。生成されたエリア内
Network Summary LSAABRエリア間のネットワーク情報を伝搬する。生成されたエリア内
AS External LSAASBRAS間のネットワーク情報を伝搬する。スタブエリア※以外のエリア

※スタブエリア:外部ネットワークがデフォルトルートとして通知されるエリアのこと

まとめ

OSPFは、RFC(Request for Comments)で標準仕様が規定されており、様々なメーカーのルータがOSPFに対応しています。そのため、CiscoやYamahaといった別メーカーのルータが混在しているマルチベンダ環境でも動作させることが可能です。

OSPFは中規模~大規模ネットワーク向きとされますが、小規模ネットワークでも負荷分散と冗長化を目的として使われることも多いです。特に障害が発生したら自動的に経路を切り替えてくれる点はとても重要です。