Cisco Systems社認定資格であるCCNA(Cisco Certified Network Associate)出題範囲における技術について、定期的にご紹介します。
CCNA資格は【ICND1】【ICND2】の2つの試験に合格することで取得できます。
今回はICND1の出題範囲であるOSPFについて説明します。
OSPFとは?
ダイナミックルーティングの際に使用されるルーティングプロトコルのうちの1つです。以下のような特徴を持っています。
1. リンクステート方式を採用
各ルータがリンク情報のデータベースを作成し、そのデータベースを基に宛先への最短経路を計算する方式です。
2. クラスレスルーティングプロトコルを使用
アップデート内にサブネットマスク情報を含むルーティングを行います。
そのため、複雑なサブネット環境にも対応しています。
3. ルータ検出にマルチキャストを使用
ブロードキャストを使用しないため、OSPFを有効にしていないルータに負担をかけません。
4. トリガーアップデート
障害発生、ネットワークの追加等のイベント発生時にのみアップデートを行います。
5. エリアの概念を採用
これによりネットワークを論理的に分割し、ルータにかかる負担を軽くすることができます。
6. 最大ホップ数の制限がない
RIPの場合、経由できるルータの数(ホップ数)が15までと制限があり、16以上経由するものに関しては到達不可となってしまいますが、OSPFにはそのような制限がありません。
7. コスト値を用いて最適経路を算出する
後述のメトリックで説明します。
8. LSAの交換によって情報交換を行う
RIPでは経路情報そのものを交換しますが、OSPFではLSAと呼ばれるリンクステート情報を交換します。
メトリック
OSPFでは各インターフェースにOSPFコストが設定されます。
コストは【100Mbps(108bps)÷リンクの帯域幅】で計算され、自動的に設定されます。
また、管理者が手動でコストを設定することや、計算式の100Mbpsの部分を変更することも可能です。
負荷分散
同一宛先ネットワークまでのメトリックが同じ複数の経路があった場合、複数の経路を使用してデータを転送することができます。
OSPFルーティングテーブル作成までのシーケンス
ステップ1:HelloパケットによりOSPFルータを自動検出
Helloパケットをマルチキャスト(224.0.0.5:全OSPFルータ宛)で送信することによって他のOSPFルータを自動検出します。
このHelloパケットは隣接ルータが動作しているかどうか確認するためのキープアライブの役割も果たしています。送信間隔はデフォルトで10秒になっていて、隣接ルータからのHelloパケットが10秒×4=40秒間確認できない場合、隣接ルータはダウンしたと判断します。この間隔をDead Intervalと呼びます。
ステップ2:ネイバー関係の形成
Helloパケットを送受信し合ったルータは、隣接ルータの情報をネイバーテーブルに保存します。各ルータがお互いを認識した状態を「ネイバー関係」と呼びます。
ルータID
OSPFを有効にしたルータはOSPF用のルータIDがセットされます。ルータIDは32bitで表現され、ネイバーテーブルにはこのルータIDが登録されています。
ルータIDは以下の条件に当てはまるものから選ばれます。
① router-idコマンドを使用して設定した値
② アクティブなloopbackインターフェースに設定されているIPアドレス中で最も大きいもの
③ アクティブな物理インターフェースに設定されているIPアドレスの中で最も大きいもの
①の優先順位が最も高く、①が設定されていない場合は②、②が設定されていない場合は③から選ばれます。
ステップ3:DR、BDRの決定
隣接ルータをネイバーテーブルへと登録後、各ネットワーク単位でDR(指定ルータ)、BDR(バックアップ指定ルータ)が1台ずつ選ばれます。
選出方法は
① OSPFプライオリティ値が最大のルータがDR、次がBDR
② OSPFプライオリティ値が同じ場合、ルータIDが最大のルータがDR、次がBDR
となっており、一度選出されるとそのルータがダウンするまで再選出はしません。
また、専用線のようなポイントツーポイントトポロジーでは選出されません。
ステップ4:隣接関係の形成
DRとBDRが決定後、他のルータはDR、BDRと隣接関係と呼ばれる関係になります。隣接関係とはリンクステート情報を交換し合う関係のことを指します。
リンクステート情報…ルータに接続されているネットワーク情報、ルータ情報などが含まれている
ステップ5:LSAの交換
隣接関係が形成されるとDRとBDRにリンクステート情報が集められます。
リンクステート情報はLSA(Link State Advertisement)と呼ばれるパケットにセットされ送信されます。
ステップ6:LSDBの作成
各ルータは他のルータから入手したLSAからリンクステートデータベース(LSDB:Link State Data Base)を作成します。
このLSDBはネットワークの地図の役割を持っています。全ルータがすべてのLSAを受信すると、全ルータが同じLSDBを持つことになります。
ステップ7:SPFアルゴリズムによりルーティングテーブル作成
全ルータが同じLSDBを保持すると、ルータはSPFアルゴリズムを使用し、コストの概念を基に自身のルーティングテーブルを作成します。
LSDBの同期
LSDBに変更があった場合はLSU(Link State Update)で変更分のLSAを通知します。LSUを受け取ったルータはその内容に合わせてLSDBの変更を行い、DR(BDR)へLSUを送信します。最終的に全ルータがLSUを受け取ると、LSDBが同期されたことになります。
OSPFエリア
OSPFは規模の大きいネットワークに対応したルーティングプロトコルですが、ネットワーク全体の規模が大きくなると、ルータにかかる負担が大きくなってしまいます。
また、ネットワークの規模が大きくなればそれだけ障害の発生頻度も増え、LSDBの変更が頻発するようになるため、ルータへの負担が増大します。
これらの問題の解決策として、OSPFではエリアという概念を導入しています。
エリアは複数のサブネットからなる論理的な単位で、エリア内のネットワークについてのLSAだけをやりとりするようになります。
エリア外のネットワークの情報はデフォルトルートや集約した経路情報として扱うことにより、エリア外の情報をなるべく少なくすることができます。
エリア番号0のエリアはバックボーンエリアと呼ばれ、OSPFを使用する上で必須のエリアとなります。
OSPFの設定
Ciscoルータ上でOSPFを有効にする際は以下の設定が必要になります。
ステップ1:OSPFの有効化
ステップ2:OSPFを有効にするネットワークの指定
上記のトポロジーを例に設定すると
ステップ1
1 2 3 |
[shell]RT-A#conf t RT-A(config)#router ospf 1 RT-A(config-router)#[/shell] |
「1」はプロセスIDと呼ばれ、ルータ内でOSPFプロセスを識別するための値です。任意の数字(1~65,535)を入力します。
この数値はあくまでもルータ内で使用される値なので、他のルータのOSPFプロセスIDと一致していなくても構いません。
ステップ2
1 2 |
[shell]RT-A(config-router)#network 192.168.1.0 0.0.0.255 area 0 RT-A(config-router)#network 192.168.2.0 0.0.0.255 area 0[/shell] |
IPアドレスとワイルドカードマスクの組み合わせでインターフェース(ネットワーク)を指定します。
また、エリアIDは所属するエリアの番号を指定します。
ルータID設定
管理上の目的でルータIDを手動で設定する場合は①のrouter-idコマンドを使用します。指定したIDを有効にするためにはルータの再起動、またはOSPFプロセスの再起動が必要になります。プロセスの再起動には②のコマンドを使用します。
① RT-A(config-router)#router-id ルータID
② RT-A#clear ip ospf process プロセスID
DR、BDRを選出する際の優先度を設定する場合は、該当するインターフェース設定モードで③を使用します。
RT-A(config)#interface インターフェースID(f0/0等)
③ RT-A(config-if)#ip ospf priority プライオリティ値
OSPFにおける確認コマンド
● show ip protocols
有効化されているルーティングプロトコルの状態を表示するコマンド
① 使用しているルーティングプロトコルの表示
② ルータID
③ 負荷分散をする際に登録可能な最大経路数
④ networkコマンドで設定したルーティング対象となるネットワークとエリア
⑤ 現在、経路情報をやり取りしているルータと、そのルータに設定した管理距離(アドミニストレーティブディスタンス値)
※IOSのバージョンによっては異なる場合があります。
⑥ デフォルトで使用する管理距離
● show ip ospf interface
OSPFを動作させているインターフェースの状態を表示するコマンド
① エリアID、プロセスID、ルータID、OSPFプライオリティの表示
② DRとBDRの情報
③ Hello間隔とDead間隔(この値が異なっているルータとはネイバーになれない)
● show ip ospf neighbor
ネイバー関係にあるルータの情報を表示するコマンド
① ネイバールータのルータID
② 現在の状態とDR/BDRに選出されているネイバーの情報
③ ネイバーのIPアドレス
④ ネイバーに接続している自身のインターフェース
● show ip ospf database
ルータが保持しているLSDBの表示をするコマンド
いかがでしたでしょうか。
OSPFに関連する問題はICND1に出題される問題の中でも難しいとされる「シナリオ問題」形式での出題が確認されています。
内容を理解するだけでなく、コマンドもしっかり覚えて合格を目指しましょう!