OSPFの機能説明
OSPFは、ダイナミックルーティングを実現するルーティングプロトコルです。RIP/RIPngのように最大メトリック値「15」という制限がないため、大規模ネットワークに適しています。OSPFには、IPv4用のOSPFv2およびIPv6用のOSPFv3の2つのバージョンがあります。
セカンダリーIPアドレスのサブネットでは、OSPFv2を有効にできません。
OSPFv3は、ループバックインターフェースでは使用できません。
OSPFv3では、イコールコストマルチパス(ECMP)をサポートしていません。
OSPFのルーティングテーブルは、下図に示した流れで作成されます。
ルーティングテーブル作成の流れ
-
ネイバー関係の確立
OSPFのルーティングテーブルの作成は、隣接ルーターとネイバー関係を確立することから始まります。隣接ルーターとHelloパケットをやりとりしてネイバー関係を確立し、ネイバーテーブルを作成します。 -
Adjacencyの確立とLSAの交換
ネイバー関係を確立した装置同士は、ネットワーク情報やインターフェースのパスコストなどの情報を格納したLSA(Link-State Advertisement)を交換するために、Adjacencyを確立します。Adjacencyを確立した装置間では、LSAの交換が行われます。 -
LSDBの作成
装置は、収集したLSAに基づいてLSDB(Link-State Database)を作成します。Adjacencyを確立した装置同士は、同じLSDBを保持します。 -
ネットワークツリーの作成
作成したLSDBに基づいて、装置自身をルートとするネットワークツリーを作成します。 -
ルーティングテーブルの作成
作成したネットワークツリーに基づいて、ルーティングテーブルを作成します。
OSPFでは、30分ごとにLSAを生成し、ルーティングテーブルを更新します。また、経路上のルーターに障害が発生するなどによってネットワークの状態が変化し、経路情報に変更があった場合、トリガードアップデートによって最新のLSAを含んだLSU(Link State Update)をネットワーク内のすべてのルーターにアドバタイズします。これにより、ルーティングテーブルは最新情報に更新されます。
ネットワークツリーが作成される際、インターフェースに設定されたパスコストによって宛先ネットワークへの最短経路が計算されます。パスコストはインターフェースの帯域幅で決定される値で、10Mbpsのパスコストは「10」、100Mbps以上の帯域幅のパスコストは「1」です。パスコストが最小の経路が最適経路になり、ルーティングテーブルに登録されます。
下図のように、ルーターAからネットワークまでの2つの経路がある場合、ルーターB経由のパスコストの合計が「12」で、ルーターDとルーターE経由のパスコストの合計が「4」のため、ルーターDとルーターEを経由する経路が最適経路になります。
最短経路の決定
ルーターIDの手動設定
OSPFを構成する装置は、ルーターIDで管理されます。ルーターIDはOSPFネットワーク内で一意の値である必要があります。デフォルト設定では、自動で装置のIPv4アドレスがルーターIDに設定されます。なお、装置に複数のIPv4アドレスが設定されている場合、アクティブなループバックインターフェースのうち、最も大きな値のIPv4アドレスがルーターIDに設定されます。アクティブなループバックインターフェースがない場合は、装置に設定されているインターフェースのうち、最も大きな値のIPv4アドレスがルーターIDに設定されます。
ルーターIDを手動で設定するには、OSPFv2およびOSPFv3のどちらの場合もrouter-idコマンドを使用します。
router-idコマンドでルーターIDを設定または変更した場合、ルーターIDは即時反映されます。ただし、ネイバー関係およびAdjacencyもリセットされ、経路の再学習が行われます。
router-idコマンドの設定を省略してルーターIDが自動的に選択されている場合、さらに優先度の高いIPアドレスが設定されても、ルーターIDは変更されません。同様に、clear ip ospf processコマンドおよびclear ipv6 ospf processコマンドを実行した場合も、ルーターIDは変更されません。ただし、装置の再起動などでOSPFv2およびOSPFv3が再起動する場合に、さらに優先度の高いIPアドレスが設定されているときは、ルーターIDが変更されます。
OSPFのネットワークの種類
装置に実装されているOSPFv2には、Point-to-Pointとブロードキャストという2つのネットワークの種類が存在します。OSPFv2でネットワークの種類を設定するには、ip ospf networkコマンドを使用します。
また、装置に実装されているOSPFv3は、ブロードキャストのみ対応しています。
- Point-to-Point
Point-to-Pointは、通信可能な2台のルーターだけが隣接するネットワークです。OSPFを構成する各ルーターは並行関係にあり、隣接ルーター同士でネイバー関係とAdjacencyを確立してLSAを交換します。
Point-to-PointのLSA交換
- ブロードキャスト
ブロードキャストでは、すべてのルーターとAdjacencyを確立するのではなく、代表ルーター(以後、DR)とバックアップ代表ルーター(以後、BDR)の選出を行い、DRおよびBDRとのみAdjacencyを確立してLSAの交換を行います。DRとBDR以外のルーターは、DROTHERと呼びます。DROTHER同士はネイバー関係を確立します。これによってAdjacencyが減少するため、ネットワーク負荷が軽くなります。
DRとBDRは、経路情報が更新されると各DROTHERにLSAを送信します。DROTHERは、DRとBDRから受け取ったLSAに基づいて、ルーティングテーブルを更新します。
DRとBDRは優先度で決定します。最も優先度が高いルーターがDR、2番目に優先度が高いルーターがBDRとして選出されます。なお、優先度値に「0」を指定したルーターは、DRおよびBDRになりません。
優先度を設定するには、OSPFv2の場合はip ospf priorityコマンド、OSPFv3の場合はipv6 ospf priorityコマンドを使用します。
ブロードキャストのLSA交換
OSPFパケットの種類
OSPFでは、以下の5種類のパケットが送受信されます。OSPFヘッダーのTypeフィールドに対応したコードが入ります。
- タイプ1 Helloパケット
Helloパケットは、隣接ルーターとネイバー関係を確立する際に使用され、ネイバー関係を確立した後のルーターの生存確認でも使用されます。また、Helloパケットには優先度値が格納されており、DRおよびBDRの選出の際にも使用されます。
Helloパケットは定期的(デフォルト設定で10秒ごと)に送信されます。ネイバー関係を確立したルーターからHelloパケットが一定期間(デフォルト設定で40秒間)受信できなかった場合、ルーターに障害が発生したとみなされ、ネイバー関係が解消されます。
- タイプ2 Database Descriptionパケット
Database Descriptionパケットは、Adjacencyを確立する際に使用されます。また、他のルーターとLSDBを交換する際にも使用されます。
- タイプ3 Link State Requestパケット
Link State Requestパケットは、Adjacencyを確立する際、相手ルーターにLSAを要求するときに使用されます。
- タイプ4 Link State Updateパケット
Link State Updateパケットは、Adjacencyを確立したルーターからネットワークやルーター情報の送信を要求されたときに、LSAを含んだLink State Updateパケットを要求元のルーターに通知する際に使用されます。
- タイプ5 Link State Acknowledgmentパケット
Link State Acknowledgmentパケットは、Link State Updateパケットを受信したことを送信元ルーターに知らせるために使用されます。
LSAの種類
OSPFv2およびOSPFv3のLSUに含まれるLSAには、以下の種類があります。
- LSタイプ1 ルーターLSA
LSタイプ1 ルーターLSAは、エリアに所属する内部ルーターが生成するLSAです。エリア内だけで送受信されます。LSタイプ1 ルーターLSAには、エリアへのルーターのリンク情報やインターフェースのパスコストなどの情報が格納されています。
- LSタイプ2 ネットワークLSA
LSタイプ2 ネットワークLSAは、DRが生成するLSAです。DRが所属するエリアにのみ通知されます。LSタイプ2 ネットワークLSAには、DRが所属するネットワークセグメントに接続されているルーターIDの一覧やネットワークマスクの情報などが格納されています。
- LSタイプ3 サマリーLSA
LSタイプ3 サマリーLSAは、ABRが生成するLSAです。LSタイプ3 サマリーLSAには、エリア間のネットワーク情報が格納されています。
- LSタイプ4 ASBRサマリーLSA
LSタイプ4 ASBRサマリーLSAは、ABRが生成するLSAです。ASBRまでの経路情報が格納されています。
- LSタイプ5 AS外部LSA
LSタイプ5 AS外部LSAは、ASBRが生成するLSAです。AS内のスタブエリアとNSSA以外のエリアに通知されます。LSタイプ5 AS外部LSAには、AS外部のネットワークへの経路情報が格納されています。
LSタイプ5 AS外部LSAにはタイプ1とタイプ2の2つの種類があり、パスコストが異なります。タイプ1のパスコストは、外部パスコストにASBRまでのパスコストが加算されます。タイプ2のパスコストは、外部パスコストのみです。
- LSタイプ7 NSSA外部LSA
LSタイプ7 NSSA外部LSAは、NSSA内でASBRが生成するLSAです。外部ASの宛先へのパスコストの情報が格納されています。
- LSタイプ1 ルーターLSA
LSタイプ1 ルーターLSAは、エリアに所属する内部ルーターが生成するLSAです。エリア内だけで送受信されます。LSタイプ1 ルーターLSAには、エリアへのルーターのリンク情報やインターフェースのパスコストなどの情報が格納されています。
- LSタイプ2 ネットワークLSA
LSタイプ2 ネットワークLSAは、DRが生成するLSAです。DRが所属するエリアにのみ通知されます。LSタイプ2 ネットワークLSAには、DRが所属するネットワークセグメントに接続されているルーターIDの一覧やネットワークマスクの情報などが格納されています。
- LSタイプ3 エリア間プレフィックスLSA
LSタイプ3 エリア間プレフィックスLSAは、ローカルエリア内の宛先ごとにABRが外部エリアに送信するLSAです。LSタイプ3 エリア間プレフィックスLSAには、ABRからローカルエリア内の宛先へのパスコストの情報が格納されています。
- LSタイプ4 エリア間ルーターLSA
LSタイプ4 エリア間ルーターLSAは、ABRが外部エリアに送信するLSAです。LSタイプ4 エリア間ルーターLSAに含まれるパスコストは、ASBRにアドバタイズされます。
- LSタイプ5 AS外部LSA
LSタイプ5 AS外部LSAは、ASBRが生成するLSAです。AS内のスタブエリアとNSSA以外のエリアに通知されます。LSタイプ5 AS外部LSAには、AS外部のネットワークへの経路情報が格納されています。
LSタイプ5 AS外部LSAにはタイプ1とタイプ2の2つの種類があり、パスコストが異なります。タイプ1のパスコストは、外部パスコストにASBRまでのパスコストが加算されます。タイプ2のパスコストは、外部パスコストのみです。
- LSタイプ8 リンクLSA
LSタイプ8 リンクLSAは、ローカルリンクにだけフラッディングされるLSAです。すべてのルーターがフラッディングスコープを使用してLSタイプ8 リンクLSAを送信します。LSタイプ8 リンクLSAには、リンクローカルアドレスとIPv6アドレスが格納されています。
- LSタイプ9 エリア内プレフィックスLSA
LSタイプ9 エリア内プレフィックスLSAは、ローカルのOSPFv3のエリアにフラッディングされます。すべてのルーターがLSタイプ9 エリア内プレフィックスLSAを送信します。LSタイプ9 エリア内プレフィックスLSAには、プレフィックスまたはリンク状態へのすべての変更情報が格納されています。
- LSタイプ11 猶予LSA
LSタイプ11 猶予LSAは、ルーターが再起動されるときに、リンクローカルのフラッディングスコープを使用して送信するLSAです。グレースフルリスタートに使用されます。
エリアの作成
OSPFでは、エリアという論理的なグループを作成できます。LSAは同一エリア内だけで交換可能で、エリア内の装置は同じLSDBを保持します。大規模なネットワークでは、エリアを作成することでLSAの交換範囲を制限し、装置が保持するLSDBのサイズを抑制できます。これにより、装置の負荷を軽減できます。
エリアには、バックボーンエリア、ノーマルエリア、スタブエリア、およびNSSAの4つの種類があります。また、これらのエリアで構成されたOSPFネットワーク全体のことを自律システム(以後、AS)と呼びます。
エリアは複数の役割をもったルーターで構成されます。すべてのインターフェースが同エリアに所属しているルーターを内部ルーターと呼びます。また、バックボーンエリアに接続するルーターのことをバックボーンルーターと呼びます。
各エリアはABR(Area Border Router:エリア境界ルーター)によって接続します。また、ASBR(AS Boundary Router:AS境界ルーター)を介して外部のAS(たとえばRIPを稼働しているAS)と接続することもできます。
エリアの例
エリアの種類
OSPFのエリアには、以下の種類があります。
OSPFv2の場合、以下のエリアを作成する際に指定するエリアIDは、0 ~ 4,294,967,295 の範囲またはIP アドレス形式のいずれでも設定できますが、構成情報にはIP アドレス形式で表示されます。
- バックボーンエリア
OSPFの中心となるエリアです。OSPFを構成する際、バックボーンエリア以外のすべてのエリアは、必ずバックボーンエリアに接続します。バックボーンエリアのエリアIDには必ず「0.0.0.0」を指定します。
バックボーンエリアを作成するには、OSPFv2の場合はnetwork areaコマンド、OSPFv3の場合はipv6 ospf areaコマンドを使用します。
- ノーマルエリア
すべての種類のLSAが流通するエリアです。ASBRを設置して外部ASと接続できます。
ノーマルエリアを作成するには、OSPFv2の場合はnetwork areaコマンド、OSPFv3の場合はipv6 ospf areaコマンドを使用します。
- スタブエリア
スタブエリアは、エリア内を流れる一部のLSAを減らし、エリア内に所属するルーターの負荷を低減するために考えられたエリアです。スタブエリアには、外部経路情報のLSA(AS-external LSA)を送信できません。そのため、スタブエリアにはASBRを設置できません。
また、AS-external-LSAが伝わらないため、スタブエリア内の内部ルーターに対してABRがデフォルトルートを通知する必要があります。
スタブエリアを作成するには、OSPFv2およびOSPFv3のどちらの場合もarea stubコマンドを使用します。
- NSSA
スタブエリアと同じく、NSSAには外部経路情報であるAS-external LSAを送信できません。NSSAでは、専用の外部経路情報のLSA(LSタイプ7 NSSA外部LSA)によって外部経路を認識します。これにより、NSSAにはASBRが設置可能です。
注 意NSSAは、OSPFv2で作成できます。OSPFv3は対応していません。
OSPFv2でNSSAを作成するには、area nssaコマンドを使用します。
area nssaコマンドは、NSSAに設定するエリア内の全ルーターに設定する必要があります。
エリアの削除
エリアを削除するには、OSPFv2およびOSPFv3のどちらの場合もno areaコマンドを使用します。
OSPFを構成するルーターの役割
OSPFを構成するルーターには、以下の役割があります。
- 内部ルーター
すべてのインターフェースが同一エリアに接続されたルーターです。バックボーンエリア内では、バックボーンルーターを兼ねることができます。
- バックボーンルーター
1つ以上のインターフェースがバックボーンエリアに接続されたルーターです。ABRまたはASBRを兼ねることができます。
- ABR(Area Border Router)
エリアの境界に存在し、複数のエリアに接続されているルーターです。
接続されているエリアのLSAを収集し、各エリア内の内部ルーターに通知します。これにより、各エリアの内部ルーターは、エリア外部の情報を収集できます。
また、エリアごとのLSDBを保持し、エリア間のルーティングを行います。
- ASBR(AS Boundary Router)
外部ASとの境界に存在し、1つ以上のインターフェースが外部ASのルーターに接続されているルーターです。
OSPF以外のプロトコルの経路情報をOSPF内に再配布することで、外部ASとの通信が可能になります。
スタブエリアとNSSAのデフォルトパスコストの変更
OSPFv2の場合は、スタブエリアとNSSAに接続されたABRで、スタブエリアとNSSAに出力するデフォルトパスコストを変更します。デフォルト設定では、ABRがスタブエリアとNSSAに出力するデフォルトパスコストは「1」です。OSPFv2でABRがスタブエリアとNSSAに出力するデフォルトパスコストを変更するには、スタブエリアまたはNSSAに接続されたABRでarea default-costコマンドを使用します。
OSPFv3の場合は、スタブエリアに接続されたABRで、スタブエリアに出力するデフォルトパスコストを変更します。デフォルト設定では、ABRがスタブエリアに出力するデフォルトパスコストは「1」です。OSPFv3でABRがスタブエリアに出力するデフォルトパスコストを変更するには、スタブエリアに接続されたABRでarea default-costコマンドを使用します。
再配布ルートのデフォルトのメトリック値の変更
OSPFの再配布ルートのデフォルトのメトリック値を変更します。デフォルト設定では、再配布ルートのデフォルトのメトリック値は「20」です。
再配布ルートのデフォルトメトリック値を変更するには、OSPFv2およびOSPFv3のどちらの場合もdefault-metricコマンドを使用します。
仮想リンクによるバックボーンエリアと他のエリアの接続
バックボーンエリアから物理的に分離されたエリアは、仮想リンクで接続できます。
バックボーンエリアから物理的に分離されたエリアを仮想リンクで接続するには、OSPFv2およびOSPFv3のどちらの場合もarea virtual-linkコマンドを使用します。
特定のエリアに属するスタブホストエントリーの設定
OSPFv2で、特定のエリアに属するスタブホストエントリーを設定します。これにより、設定したホストルートがスタブリンクのLSタイプ1 ルーターLSAとして通知されます。
OSPFv3では、特定のエリアに属するスタブホストエントリーを設定できません。
特定のエリアに属するスタブホストエントリーを設定するには、host areaコマンドを使用します。
ABRでのOSPFルートのサマライズ
ABRでエリアのルートの統合、またはOSPFルートをサマライズします。これにより、単一のサマリールートがABRから他のエリアに通知されます。
ABRでエリアのルートの統合、またはOSPFルートをサマライズするには、OSPFv2およびOSPFv3のどちらの場合も、ABRでarea rangeコマンドを使用します。
サマライズされた経路に対応するNULL経路は、自動生成されません。サマライズされた経路に対応するNULL経路が必要な場合は、ip routeコマンドで設定してください。
デフォルトルートの外部ルートのASへの出力
OSPFv2で、デフォルトルートであるネットワーク0.0.0.0の外部ルートをASに出力します。これにより、デフォルトルートがASに通知されるようにルーティングプロセスが設定されます。
OSPFv3では、デフォルトルートのネットワークの外部ルートをASに出力できません。
デフォルトルートであるネットワーク0.0.0.0の外部ルートをASに出力するには、ASBRでdefault-information originateコマンドを使用します。
OSPFv2 ECMP経路の最大マルチパス数
NP7000、NP5000、およびNP3000のOSPFv2では、イコールコストマルチパス(ECMP)をサポートしています。
NP7000、NP5000、およびNP3000のOSPv3は、イコールコストマルチパス(ECMP)をサポートしていません。
OSPFv2 ECMP経路の最大マルチパス数は、デフォルト設定では1です。最大マルチパス数を変更するには、maximum-pathsコマンドを使用します。
OSPFのAD値の変更
特定のOSPF ルーティングプロトコルのアドミニストレーティブディスタンス値(以後、AD値)を変更します。OSPFv2のデフォルト設定は、inter-areaが「90」、intra-areaが「80」、external-1が「110」、external-2が「115」です。OSPFv3のデフォルト設定は、すべてのルートが「110」です。
OSPFルーティングプロトコルで学習した経路のAD値を変更するには、OSPFv2およびOSPFv3のどちらの場合もdistance ospfコマンドを使用します。
ApresiaNPシリーズでは、AD値を255に設定した場合でも、通常の経路としてルーティングテーブルに取り込む対象として動作します。
OSPFv2のルーティングテーブルの更新のフィルタリング
ルーティングプロトコルによるOSPFv2のルーティングテーブルの更新をアクセスリストでフィルタリングできます。ルーティングテーブルの更新をフィルタリングするには、アクセスリストを指定してdistribute-list inコマンドを使用します。
OSPFv2認証の有効化
LSAを交換する際に認証を実行できます。OSPFv2の認証は、デフォルト設定では無効です。
OSPFv2の認証を有効化するには、ip ospf authenticationコマンドを使用します。
認証モードに平文認証を指定した場合、ip ospf authentication-keyコマンドを使用して認証パスワードを設定します。また、認証モードにMD5認証を指定した場合、ip ospf message-digest-keyコマンドを使用してMD5ダイジェストキーを設定します。
インターフェースでのパスコストの変更
インターフェースのパスコストは、デフォルト設定ではOSPFv2が「1」、OSPFv3が「10」です。
インターフェースのパスコストを変更するには、OSPFv2の場合はip ospf costコマンド、OSPFv3の場合はipv6 ospf costコマンドを使用します。
Helloパケットの送信間隔の変更
Helloパケットの送信間隔を変更します。デフォルト設定では、Helloパケットの送信間隔は10秒です。
Helloパケットの送信間隔を変更するには、OSPFv2の場合はip ospf hello-intervalコマンド、OSPFv3の場合はipv6 ospf hello-intervalコマンドを使用します。
隣接ルーターがダウンしたとみなすまでの待機時間の変更
隣接ルーターからのHelloパケットが受信されず、隣接ルーターがダウンしたとみなすまでの待機時間を変更します。デフォルト設定では、隣接ルーターがダウンしたとみなすまでの待機時間は40秒です。
隣接ルーターがダウンしたとみなすまでの待機時間を変更するには、OSPFv2の場合はip ospf dead-intervalコマンド、OSPFv3の場合はipv6 ospf dead-intervalコマンドを使用します。
パッシブインターフェースの設定
インターフェースをパッシブインターフェースに設定することで、OSPFパケットの送受信を無効化し、ネイバー関係が解消されます。パッシブインターフェースは、インターフェースごとに設定できます。デフォルト設定では、インターフェースはパッシブインターフェースに設定されていません(OSPFパケットがインターフェースで送受信されます)。
インターフェースをパッシブインターフェースに設定するには、OSPFv2およびOSPFv3のどちらの場合もpassive-interfaceコマンドを使用します。
経路情報の再配布の有効化
他のルーティングプロトコルで学習した経路情報をOSPF経路として再配布します。デフォルト設定では、他のルーティングプロトコルで学習した経路情報のOSPF経路としての再配布は無効です。
他のルーティングプロトコルで学習した経路情報のOSPF経路としての再配布を有効化するには、OSPFv2およびOSPFv3のどちらの場合もredistributeコマンドを使用します。
OSPFv3基準帯域の変更
OSPFv3でインターフェースのパスコストを計算するための基準帯域を変更します。デフォルト設定では、OSPFv3の基準帯域は100Mbpsです。
OSPFv3の基準帯域を変更するには、auto-cost reference-bandwidthコマンドを使用します。
auto-cost reference-bandwidthコマンドによるパスコスト値は、以下の計算式で算出されます。
パスコスト=auto-cost reference-bandwidthコマンドの設定値 ÷ 10
OSPFv3 LSAを再送する間隔の変更
OSPFv3で、LSAを再送する間隔を変更します。デフォルト設定では、再送間隔は5秒です。
LSAの再送間隔を変更するには、ipv6 ospf retransmit-intervalコマンドを使用します。
OSPFv3 Link State Updateパケットの送信まで待機する時間の変更
OSPFv3のインターフェースで、Link State Updateパケットを送信するまでの待機時間を変更します。デフォルト設定は、1秒です。
Link State Updateパケットを送信するまでの待機時間を変更するには、ipv6 ospf transmit-delayコマンドを使用します。
ルーター設定モード
OSPFのコマンドを使用するには、ルーター設定モードに遷移します。
ルーター設定モードに遷移するには、OSPFv2の場合はrouter ospfコマンド、OSPFv3の場合はipv6 router ospfコマンドを使用します。
OSPFプロセスのクリア
OSPFプロセスをクリアし、ルーティングデータベースを再作成します。
OSPFプロセスをクリアするには、OSPFv2の場合はclear ip ospfコマンド、OSPFv3の場合はclear ipv6 ospfコマンドを使用します。
OSPFv2の場合、match ip route-sourceコマンドを使用した再配布などの設定は即時適用されません。match ip route-sourceコマンドによる設定内容を適用するには、clear ip ospfコマンドを使用してください。