コンテンツにスキップ

4. ルーティング

4.1. ルーティングの基本

ルータはパケットの送信の際に最適なルートをルーティングテーブルから選び転送する。 この動作はルーティングと呼ばれルータの基本動作となる。

4.1.1. ルータの基本動作

ルータのデータの転送の流れは以下のようになる。

  1. ルーティング対象のIPパケットを受信する
  2. 宛先IPアドレスからルーティングテーブル上のルート情報を検索して、転送先を決定する
  3. L2ヘッダを書き換えてIPパケットを転送する

ルータがIPパケットを転送するには、あらかじめルーティングテーブルに転送先のネットワークの情報が登録されていることが前提となる。 ルーティングテーブルの作成方法にはスタティックルーティングダイナミックルーティングの2通りの方法がある。

4.1.2. スタティックルーティングとダイナミックルーティング

方法 内容
スタティックルーティング ネットワーク管理者が手動で登録する方法
ダイナミックルーティング ルータ間で情報のやり取りを行い自動でルート情報を設定する方法

4.2. ルーティングプロトコル

ダイナミックルーティングで使用されるルーティングプロトコルは複数の種類がある。 代表的なものは以下の通り。

  • RIP(Route Information Protocol)
  • OSPF(Open Shorttest Path First)
  • EIGRP(Enhanced Interior Gateway Routing Protocol)
  • BGP(Bourder Gateway Protocol)
  • IS-IS(Intermediate System To Intermediate System)

ルーティングプロトコルを語るうえでメトリックとアドバタイズという値が重要になる。

4.2.1. メトリック

メトリックは宛先ネットワークまでの距離を表すものとなる。 これは最適なルート選択際に使用される値であり、最も値が小さいルートが優先されルーティングテーブルに登録される。

ルーティングプロトコル メトリック値
RIP ホップ数
OSPF 帯域幅から計算するコスト
EIGRP 帯域幅, 遅延,信頼性, 負荷, MTUを使う複合的なメトリック

4.2.2. アドバタイズ

ダイナミックルーティングでルータ同士が交換しているルート情報はルーティングアップデートと呼ばれ、ルート情報を隣接ルータに通知することはアドバタイズと呼ばれる。

4.2.3. ルーティングプロトコルの分類

4.2.3.1. 使用場面による分類

ルーティングプロトコルは使用される場面で分けると2つの分けられIGPEGPに分けられる。

IGPは自律システム内(AS)で経路情報を交換するためのルーティングプロトコルの総称。 ASはある組織がある管理ポリシに従い運用しているルータやネットワークをひとまとめにしたものをさす。 ISPが管理しているネットワークなどがASにあたる。

EGPは異なるAS間でやりとりするためのルーティングプロトコルの総称

種類 プロトコル
IGP RIP, OSPF, EIGRP, IS-IS
EGP BGP, EGP

4.2.3.2. アルゴリズムによる分類

ルーティングプロトコルは最適なルートを導き出すための手順/考え方が異なる。 これはルーティングアルゴリズムと呼ばれ、IGPではディスタンスベクタ型、拡張ディスタンスベクタ型、リンクステート型に分けられる。

分類されるプロトコル 説明 規模
ディスタンスベクタ型 RIP 互いのルーティングテーブルを交換する方式。距離と方向情報を基にベルマンフォード法により最適ルートを選択する 小・中
拡張ディスタンスベクタ型(ハイブリッド型) EIGRP ディスタンスベクタ型にリンクステート型の特徴を入れた方式。アルゴリズムはDUALを使用し、帯域幅、遅延、信頼性、MTU、負荷にK値と呼ばれる重み係数をかけてメトリック計算を行う。 中・大
リンクステート型 OSPF, IS-IS ルータが自身のインターフェイス情報(LSA)の交換を行う。リンクステートの情報からSPFアルゴリズムを用いて計算を行い最適ルートを選択する 中・大
各項目 ディスタンスベクタ型 拡張ディスタンスベクタ型(ハイブリッド型) リンクステート型
アルゴリズム ベルマンフォード DUAL SPF
交換情報 ルーティングテーブル ルーティングテーブルの一部 リンクステート(インターフェイス状態)
コンバージェンス速度 遅い 速い 速い
ルータの処理負荷 小さい リンクステートより小さい 大きい
帯域消費 高い 低い 低い
ルーティングループの発生 あり なし なし
プロトコル RIP EIGRP OSPF, IS-IS

4.2.3.3. クラスレスルーティングプロトコル/クラスフルルーティングプロトコル

クラスフスルーティングプロトコルはルーティングのアップデートにサブネットマスク情報を含めることができるルーティングプロトコルのことで、クラスレスルーティングプロトコルはサブネットマスク情報を含めないルーティングプロトコルのこと。

プロトコル 代表的なプロトコル
クラスフルルーティングプロトコル RIP(Ver 1.0)
クラスレスルーティングプロトコル RIP(Ver 2.0), OSPF, IS-IS, EIGRP, BGP

4.2.3.4. アドミニストレーティブディスタンス

ルータでは複数のルーティングプロトコルを同時動作させることができる。 その場合どのルーティングプロトコルで得た情報をルーティングに使用するか判断する必要がある。 Cisco製品のルータの場合はアドミニストレーティブディスタンス値(AD値)を使用しそれを決定する。 AD値はルーティングプロトコルに対する信頼性を表す値。

アドミニストレーティブディスタンス値はルーティングプロトコルの優先値であり小さいほど優先度が高い

プロトコル アドミニストレーティブディスタンス値 コード
接続接続されているネットワーク 0 C
スタティックルート 1 S
eBGP 20 B
EIGRP 90 D
OSPF 110 O
IS-IS 115 i
RIPv1,v2 120 R
iBGP 200 B

手動で設定したスタティックルートはアドミニストレーティブディスタンス値(以下ad値)が1となるため優先度が高い。 これは障害発生時にダイナミックルーティングでルート学習できなくなった際にこのルートを使用するといったことが可能。 このスタティックルートはフローディングスタティックルートと呼ばれる。

4.2.4. 最適経路の選択

ルーティングにおいて最適経路は以下の順位で算出される。

  1. ロンゲストマッチ(最長一致)
  2. AD値(アドミニストレーティブディスタンス値)
  3. メトリック

4.2.5. 経路集約

経路集約はRIPv2、EIGRP、OSPFで使用できる機能で複数のサブネットワークのルーティングアップデートを1つに集約して送信できるもの。 これによりルーティングテーブルのサイズが縮小され、コンバージェンス時間も短縮される。

注意点として経路集約を行う際は集約を行うアドレスの上位ビットは同じである必要がある。

4.3. OSPF

4.3.1. OSPFの概要

OSPFは使用用途でルーティングプロトコルを分けた際にIGPに分類されるルーティングプロトコル。現在最も使用されている。 また以下のような特徴を持つ。

  • 様々なベンダーのルータで使用可能
  • リンクステート型のルーティングプロトコル
  • ルーティングプロトコルのトラフィックを削減可能
  • コンバージェンスが速い
  • VLSM(可変長サブネットマスク)に対応
  • ネットワークの階層化が可能
  • メトリックとしてコスト削減が可能
  • ルーティング認証が可能

OSPF

OSPFのルーティングテーブルへの登録手順

  1. LSA(IPアドレスなどのインターフェイス情報)を受け取ったらLSDBと呼ばれるDBに格納する
  2. 各ルータはLSDBを基にSPFアルゴリズムにより自信を起点としたSPFツリーを作成しそこからの最短経路をルーティングテーブルに登録する

OSPFのルーティングアップデート

OSPFでは通常隣接ルータの生存確認にはHelloパケットのみを送信する。 これによりRIPよりもトラフィックが少なくなる。

OSPFのコンバージェンス

OSPFではあらかじめすべてのルータがネットワーク構成を把握しているため高速にコンバージェンスができる。

OSPFのネットワーク階層化

OSPFではエリアという単位でネットワークを分割できるため、把握すべきルータの台数が増えても記憶すべきトポロジの情報量を減らすことができる。 エリア分割は中心エリア(バックボーンエリア)とその他のエリアに分けて階層化を行い管理する。

OSPFのメトリックを使用したコスト計算

OSPFではメトリックに帯域幅から計算するコストを使用する。

メトリックは簡単に言うと目的地にたどり着くまでの困難さを示す指標

コスト = 10^8 (bps) / 帯域幅(bps)

小数点以下は切り上げを行う。 この算出式より得られるコストの合計が最小になるルートが最適ルートとなる。

なおコストが同じとなる経路が複数ある場合は負荷分散される。 この特性を生かして恣意的に同じコストになるように調整する場合もある。

4.3.2. OSPFの動作

OSPFはコンバージェンスまでに状態を遷移する。 状態の遷移は以下の通り。

  1. Helloパケットを交換し隣接ルータの発見/生存確認を行う
  2. 隣接ルータの情報を保持するネイバーテーブルに送信元ルータを登録する
  3. 相互認識をルータ間で行いLSDB交換準備をする
  4. ルータ間でDBDパケットの交換をする
  5. 詳細なLSA情報の交換をする

1. Helloパケットを交換し隣接ルータの発見/生存確認を行う

OSPFを動作させたルータはHelloパケットをマルチキャストアドレス(224.0.0.5)宛てに送信する。 Helloパケットで検知した隣接ルータはネイバーと呼ばれる。

Helloパケットを受け取る前のネイバーの初期状態はDown Stateとなる。

2. 隣接ルータの情報を保持するネイバーテーブルに送信元ルータを登録する

Helloパケットを受け取ったルータは、ネイバー一覧を保存するネイバーテーブルに送信元ルータを登録する。 そのルータの状態はinit stateに設定する。 この状態では一方だけが相手のルータを認識している状態となる。

ネイバーとして登録するにはHelloインターバルDeadインターバルスタブフラグサブネットマスク認証の情報エリアIDを隣接ルータと合わせる必要がある。

3. 相互認識をルータ間で行いLSDB交換準備をする

ネイバーを認識したルータはHelloパケットに自身の認識しているネイバー一覧を確認する。 相手から受け取ったHelloパケットに自身の情報が記録されているとき2Wayステートと呼ばれる状態になる。

4. ルータ間でDBDパケットの交換をする

ルータが互いに2Wayステートになった後、DBDパケットを使用して各ルータが持つLSDBの要約情報を交換する。 OSPFではLSDBをこの手順により同一化する。

DBDパケットの交換の際2つのルータでマスター(シーケンス番号の決定を行うルータ)とスレーブの関係を築く。 役割の決定を終えるとExchange Stateに移行する。

5. 詳細なLSA情報の交換をする

Exchange Stateのときに相手から受け取ったDBDパケットに新しいLSAが見つかったとき、ネイバーにLSRパケットを送信する。 LSRを受け取った隣接ルータは更新用のLSUパケットを送信する。LSUはインターフェイス情報等を保存したLSAのまとまりであり、 それを受け取ったら確認応答としてLSAckパケットを送信する。

LSRパケットとLDUパケットの送信している間はLoading Stateとなり、互いに最新情報を交換しLSDBの動機が完了するとAdjacency(完全隣接関係)となる。この状態にFull Stateとなる。

OSPFの状態遷移とパケットをまとめると以下の通り。

状態 説明
Down State Helloパケットを受け取る前
init State ネイバーからHelloパケットを受け取ったが、相手側ルータはまだこちらを認識していない状態
2-Way State ルータが相互認識している状態
Exstart State DBDパケットを交換するためのマスター,スレーブを選択している状態
Exchange State DBDパケットを互いに交換しLSDBを同期させている状態
Loading State LSRパケットを送信し、最新のLSAをLSUパケットとして取得している状態
Full State 完全隣接関係を築いた状態
パケット 説明
Helloパケット ネイバーの発見/生存確認
DBDパケット LSDB要約情報の送信
LSRパケット 詳細情報の問い合わせ
LSUパケット LSDBの更新のため
LSAckパケット LSUパケットの確認応答

4.3.3. マルチアクセスの際の動作

マルチアクセスはL2スイッチに複数のルータが接続されている状態をさす。 この構成ではトポロジ変更の際に各ルータがLSUを送信するとネットワークトラフィックが増大する。 そのためDR(代表ルータ)とそのバックアップとなるBDR(バックアップ代表ルータ)を選び、完全な隣接関係を全ルータではなく一部に決定する。これによりトラフィックの減少が見込める。

動作的にはDRとBDRのみが完全な隣接関係を結び、集めたLSUを他ルータに転送することで効率を上げている。 なおDRとBDRに選ばれなかったルータはDR-Otherと呼ばれる。

DRとBDRの決定

DRとBDRの選択基準にはルータプライオリティ(デフォルト: 1, 範囲: 0~255)とルータIDがある。

ルータプライオリティはルータのインターフェスごとに決定できる値でHelloパケットに含まれる。 マルチアクセス環境下ではルータプライオリティの値が最も大きいルータがDR、2番目に大きいルータがBDRとなる。

ルータIDはルータプライオリティが同値のときに比較される値。 ルータIDはIPアドレスと同じ書式となりルータIDの値が最も大きいルータがDR、2番目に大きいルータがBDRになる。

ルータIDは1つ値が安定し設定されることが推奨されているため以下手順で決められる。

  1. コマンドで手動設定する
  2. ルータの有効なループバックインターフェスのIPアドレスの中で最も大きいIPアドレスが選択される
  3. 有効な物理インターフェイスのIPアドレスの中で最も大きなIPアドレスが選択される

ループバックインターフェイスは管理者が任意で作成できる仮想的インターフェイスであり、シャットダウンしない限りはダウンしないものとなっている。

4.3.4. OSPFのルート選択

メトリックの計算

経由するインターフェイス数の和をとったときに最小のルートが最短となりルーティングに保存される。

厳密にはコストは10^8/帯域幅(bps)で求められるが、ファストイーサネット、ギガイーサネットのインターフェスでは1となる。

等コストバランシング

等コストバランシングはCISCO製機器の場合でコストが最短なルートが複数ある場合にデフォルトで4つまでルーティングテーブルに登録できる機能のこと。

この機能によりトラフィックを分散し異なるルータをデータが通れる。

ルート変更

デフォルト(コストがファストイーサネット、ギガイーサネットのインターフェスでは1)の帯域幅をそのまま使用して計算が行われると、帯域幅が1GBpsでも100MBpsでも同じコストになってしまう問題がある。下記のように調整することで対処する。

  • インターフェイスのコスト値を直接設定する
  • インターフェイスの帯域幅を変えてコストの計算結果を変更する
  • コストの計算式の分子(10^18)の値を変更する

4.3.5. OSPFの考慮事項

OSPFはネットワークのタイプにより動作が変わるプロトコルである。 以下にその動作関係をまとめた表を記載する。

タイプ DRとBDRの選出 Helloパケットによるネイバー自動検出 Hello/Deadインターバル
ブロードキャスト する する 10秒/40秒 イーサネット
ポイントツーポイント しない する 10秒/40秒 PPP
MBMA する しない 30秒/120秒 フレームリレー
ポイントツーマルチポイント しない する 30秒/120秒
ポイントツーマルチポイント(ノンブロードキャスト) しない しない 30秒/120秒

OSPF

パッシブインターフェイス

パッシブインターフェイスはOSPFを有効にしてもHelloパケットを送信しないようにする機能

これはPCを接続しているインターフェイスからはHelloパケットを送信する意味がないため、そういったケースに対応するための機能といえる。 この場合はOSPFとして、LSA(≒インターフェイス情報)がアドバタイズされる機能が必要なため必要ともいえる。

なおOSPFでパッシブインターフェイスの設定を行うとHelloパケットの送受信を行わなくなる

MTUサイズの合致

MTUは一回で送信できる最大パケットサイズのことを表す。 OSPFの場合、ネイバーのインターフェイスのMTUと自身のインターフェイスのMTUサイズが異なると完全な隣接関係を築けない。

そのため、MTUサイズは対向ルータと合わせるか、MTUの不一致の検出機能を無効にする必要がある。

4.3.6. マルチエリアOSPF

ネットワークが巨大になりルータの台数が増えトポロジ情報が多くなると経路情報の複雑化と大容量化が進むため計算が膨大になる。 そのためルータの負荷が増加し転送速度低下や切り替え時間が長くなるといった問題が起きる。 その対策機能としてマルチエリアOSPFがある。これはネットワークを階層化して管理するものである。

マルチエリアOSPFの種類には1つのエリアだけでOSPFを動作させることをシングルエリアOSPF、複数のエリアを作成してOSPFを動作させることをマルチエリアOSPFの2種類がある。

エリア作成の注意点

エリアを作成することでルート制御用のトラフィックを減らすことができる。 エリアを作成する際の注意点は以下より。

  • バックボーンエリアを作成する
  • 他のエリアをバックボーンエリア(エリア番号0)に接するように作成する
  • ルータをエリア境界に配置する

ルータの役割

ルータは所属エリアや場所により役割が異なる。

ルータの役割 説明
内部ルータ すべてのインターフェイスが同エリアに所属、且つ他のエリアに一切接していないルータ
バックボーンルータ バックボーンエリアに所属するインターフェイスを持つルータ。
エリアボーダルータ(ABR) インターフェイスが2つ以上のエリアの所属しているルータ。エリア間の境界に位置している。
ASバウンダリルータ(ASBR) インターフェイスが異なるASに所属するルータ

AS ... OSPF以外のRIPなどのルーティングプロトコルが動作しているネットワーク

4.4. EIGRP

4.4.1. EIGRPの概要

EIGRPは使用用途でルーティングプロトコルを分けた際にIGPに分類されるルーティングプロトコル。現在最も使用されている。 また以下のような特徴を持つ。

  • クラスレスルーティングプロトコルで自動集約をサポート
  • 自身が属しているAS番号内の経路をInternal(内部)、他のAS番号に属している経路やEIGRP以外のルーティングプロトコルで学習した経路をexternal(外部)として識別
  • 拡張ディスタンスベクタ型ルーティング(別名:ハイブリッドルーティング)
  • 「ネイバーテーブル」「トポロジテーブル」「ルーティングテーブル」の3つのテーブルを保持
  • ルーティングアルゴリズムはDUALを使用
  • メトリックには、帯域幅・遅延・信頼性・負荷を基に計算する複合メトリックを使用
  • メトリックが等しくない経路での負荷分散が可能な不等コストロードバランシングをサポート
  • IPだけでなく Novell IPXやAppleTalkのルーテッドプロトコルもサポート

4.4.1.1. 複合メトリック

EIGRPは最適な経路を選択するために、帯域幅・遅延・信頼性・負荷を基に計算する複合メトリックを使用する。 使用する内容は以下の通り。

  • 帯域幅:宛先ネットワークに到達するまでに経由するリンクの最小帯域幅(kbps単位)
  • 遅延:宛先ネットワークに到達するまでに経由する各インターフェースの遅延(delay)の合計(10マイクロ秒単位)
  • 信頼性:宛先ネットワークまでのリンクの信頼性。ビットエラーなどが発生すると信頼性は下がる(最も信頼できるものが255)
  • 負荷:宛先ネットワークまでのリンクでのトラフィック量。トラフィックが高いと負荷が上がる(最も負荷が低いものが1)

4.4.1.2. FD/RD

EGIRPではFDとRDの2種類のメトリックがあり、それはサクセサとフィージブルサクセサの決定に関係する。

メトリック 説明
FD(Feasible Distance) 自ルータから宛先ネットワークまでの合計メトリック
RD(Reported Distance) ネイバールータから宛先ネットワークまでの合計メトリック(ネイバーが教えてくれたメトリック)

4.4.1.3. サクセサとフィージブルサクセサ

サクセサはEIGRPの最適経路のネクストホップのことをさす。 サクセサは宛先ネットワークまでのFDが最も小さくなるネクストホップとなる。

フィージブルサクセサはサクセサのFDよりも小さいRDを通知するネイバのことを言う。 フィージブルサクセサの条件である「FD > RD」を満たす経路はルーティングループが発生しないことが保証されるので、フィージブルサクセサはバックアップルートや不等コストマルチパスのネクストホップとして使われる。

4.4.1.4. EIGRPの保持するテーブル

EIGRPではネイバーテーブル、トポロジテーブル、ルーティングテーブルの3つのテーブルを保持/使用する。

ネイバーテーブル ... EIGRPのネイバー関係を確立しているルータの一覧表 トポロジテーブル ... EIGRPで学習した全経路情報を保持するテーブル ルーティングテーブル ... トポロジテーブルからサクセサルートを抽出したテーブル

4.4.1.5. EIGRPの隣接関係構築条件

EIGRPでは以下の条件を満たす場合に隣接関係が構築される。

  • ルータが同じ自律システム(AS)に所属している
  • メトリックの計算値(K値)が一致している
  • 認証情報(キーIDとパスワード)が一致している
  • Helloパケットを送受信するインターフェースが同一のサブネットに属している(前提条件)
  • Helloパケットを送受信するインターフェースでEIGRPが有効になっている(前提条件)

4.3.2. EIGRPの動作

EIGRPにおける最短経路は以下のように算出される。

  1. 宛先ネットワークから自身までのすべてのネイバ経由のFDを算出する
  2. 宛先ネットワークから自身までのFDのうち、最も小さいFDになるネイバを「サクセサ」とする
  3. サクセサのFDと各ネイバのRDを比較し、FD > RDとなるネイバを「フィージブルサクセサ」とする
  4. サクセサをネクストホップとする経路をルーティングテーブルに載せる