OSPFメモ
[OSPF(Open Shortest Path First)]
リンクステート型ルーティングプロトコル。
大規模ネットワークに適したIGP。
[特徴]
・リンクステートルーティングプロトコルの中で、代表的なプロトコル
・マルチベンダ仕様、CISCO独自ではない。
・クラスレスルーティング、VLSMをサポート
・マルチキャスト(224.0.0.5)により差分アップデートをする
なおDR/BDR向けには224.0.0.6を利用する。
・IP上のプロトコル番号89を使用
・エリアによる階層型ネットワークを形成できる
・コストを元にベストパスを決定する。
コストは帯域幅を元に計算される
・等コストバランシングが実行される。
デフォルト4つのパス、設定変更することで最大15パスサポート
・大規模ネットワークに適している。ホップ数に制限がない。
・各ルータはネットワーク全体図(トポロジデータベース)をもち、
個々のルータがネットワークの全体像を把握している。
トポロジマップが完成するとネットワーク全体図を形成し、
各ネットワークへのベストパスを算出する。
・ネットワーク形成後の定期アップデート間隔はRIPと比較して
非常に長い(デフォルトで30分)
・ダイクストラアルゴリズム(SPFアルゴリズム)により
トポロジマップを形成する。
・IPv4対応のOSPFv2とIPv6対応のOSPFv3の2種類ある。
一般的にはv2を利用
・再配信は明示的にsubnetを配信対象に追加しないと
クラスフル以外のルートは配信してもらえない
[要素]
▼OSPFのもつテーブル
①ネイバーテーブル
→認識しているネイバーOSPFルータのリスト。
Helloパケットによって確立・維持される。
sh ip ospf neiで確認。
②トポロジテーブル
→エリア内のOSPFルータから収集したLSAによって作成した
データベースでLSDB(リンクステートデータベース)とも呼ばれる。
LSDBをもとに、SPFアルゴリズムを実行して自身を起点に
各ネットワークまでの最短パスツリーを形成する
sh ip ospf databeseで確認。
③ルーティングテーブル
→トポロジテーブルのベストルートを格納する。
sh ip routeで確認。
▼ルータID
・OSPFルータを一意に識別する識別番号という扱いになる。
同じルーティングポリシが動いているルータのグループをAS
あるいはドメインを呼ぶが、ルータIDは同一ドメイン内で
ユニークなアドレスを持つ必要がある。
OSPF関連のパケットには識別の為にルータIDのエントリが必ず
入っており、どこから来たパケットなのか区別できるようになっている。
・ルータIDアドレスは以下のポリシに従い決定される。
①router-idコマンドで設定された値
→ (config-router)# router-id router-id
②ループバックインターフェイスの最大IPアドレス
③アクティブな物理インターフェイスの最大IPアドレス
▼Helloパケット
Helloパケットの主なエントリ内容
①ルータID
②HelloおよびDeadタイマー間隔
③エリアID
④ネイバールータのリスト
⑤インターフェイスのプライオリティ値
⑥DRとBDRのIPアドレス
⑦認証情報(認証タイプとパスワード)
⑧スタブエリアフラグ(オプション)
上記のうち、隣接するルータ間でHelloパケットを交換する際、
以下を同じ値にしておく必要がある。
・②HelloおよびDeadタイマー間隔
・③エリアID
・⑦認証情報(認証タイプとパスワード)
・⑧スタブエリアフラグ(オプション)
※ネイバーが結べない場合要確認。
よくあるのはHello/Deadの間隔が違う、スタブ設定漏れ。
※OSPFの設定とは少し違うがIFのMTUサイズも一致させる必要あり。
▼仮想リンク
OSPFでは、全エリアが必ずバックボーンエリア( エリア 0 )に
直結している必要がある。
なんらかの事情でエリア 0に直接接続できないエリアが発生する場合は、
仮想リンクを導入し2台のABR間に論理リンクを確立させて
エリア0へ到達させる。
なお、仮想リンクを確立する上で、リンクの両端の2台のABRは
OSPFネイバー同士が直結している必要はない。
・仮想リンク構成イメージ
・設定方法
仮想リンクを設定するためには、トランジットエリアと
対向側のルータ IDを指定する。
(config)# router ospf procces-id
(config-router)# area area-id virtual-link router-id
※確認コマンドはshow ip ospf virtual-link
「 up 」と「 Adjacency State Full(Hello suppressed)」になっていればOK。
[動作ロジック]
①ネイバー関係確立
隣接ルータとHelloパケットを交換することでネイバー関係を確立する。
(Helloパケットはマルチキャスト224.0.0.5で送信。)
ネイバーを認識するとネイバーテーブルに格納され、ネイバー確立後
ネイバー関係を維持するためにHelloパケットを定期送信する。
②DR選出
OSPFではセグメントごとにDR (Designated Router)と
BDR (Backup Designated Router)を1台ずつ選出する。
DR、BDRに選出されなかったOSPFルータはDROTHERと呼ぶ。
DROTHERはDR、BDRとだけの間でLSAを交換するようになり、
LSAを交換するネイバールータを減らせる(トラフィックが減る)。
・DROTHER⇒DR,BDR(224.0.0.6:DR/BSR向けマルチキャスト),
・DR、BDR⇒DROTHER(224.0.0.5:OSPF全ルータ向けマルチキャスト)
DRの選出にはOSPFプライオリティ値とルータIDが使用される。
優先順位は下記の通り
①OSPFプライオリティ値が最も大きいルータをDRとする。
②OSPFプライオリティ値が2番目に大きいルータをBDRとする。
③OSPFプライオリティ値が同じ場合、ルータIDが最も大きいルータをDR、
2番目に大きいルータをBDRとする。
※OSPFプライオリティの変更コマンドは下記(Interface指定)。
→(config-if)# ip ospf priority number
※OSPFプライオリティ値のデフォルトは 1。
DRにしたい場合は255、DROTHERにしたい場合は0を指定。
③アジャセンシー関係確立
DR/BDRの選出が完了すると、アジャセンシー関係(Adjacency)に至る
ルータ間では、自身の持つリンク情報(インターフェース情報)をネイバーへ
LSA(Link State Advertisement)として送信し合う。
受信したLSAはトポロジテーブルに格納。受信したLSAは別のネイバーへ
送信され最終的にネットワーク全体でLSAが通知される。
OSPFではトポロジテーブルのことをLSDB( Link State Database )と呼び、
LSDBは同エリア内の全ルータで同じLSDBを保持する。
LSDBに格納されたLSAを組み合わせてトポロジマップを作成する。
③ルーティングテーブルの作成
トポロジマップを作成したOSPFルータでは、次にSPFアルゴリズムを
実行し階層ツリーのSPFツリーを作成する。
SPFは宛先ネットワークに対する最短パスを計算するアルゴリズムで、
各ルータは自身をルートとして頂点として宛先ネットワークへの
コスト合計値を計算する。
コストはリンク(インターフェース)の帯域幅を基に自動算出する。
各リンク毎に手動で設定することも可能。
コストの計算式は下記の通り。
・コスト=100Mbps/リンク帯域幅(bps)
※10Mbpsは10、100Mbpsは1、1Gbpsは、計算上0.1だが1と考える。
なお宛先セグに対して最適経路が複数ある場合は、複数経路分
ルーティングテーブルに載る(コストロードバランス機能)
[LSAタイプ]
LSAは、OSPFルータのLSDB(リンクステートデータベース)を
作成する上で基礎的な要素。
LSAタイプにはCiscoルータでサポートしているのは「1 ~ 5、7」だが、
技術的には「1~11」まで存在する。
LSAタイプによって、エリア内だけでフラッディングされるもの、
ABRを越えてフラッディングされるものがある。
・LSAタイプ 1
→自身のエリア内でのみフラッディングされる。
LSAにはOSPFルータID、リンクの数、各リンクの詳細情報が含まれており
LSAタイプ1は全てのOSPFルータが生成する。
ルーティングテーブル上、LSAタイプ1の経路は「O」のコードが
付けられる。
※LSAタイプ1のLSAは以下コマンドで確認可能。
show ip ospf database router
・LSAタイプ2
→自身のエリア内でのみフラッディングされる。
LSAタイプ1は、すべてのOSPFルータがLSAを生成するのに対し、
LSAタイプ2はDRが生成する。
このLSAにはDRのIPアドレス、サブネットマスク情報、
セグメント上のルータIDの一覧などが含まれる。
ルーティングテーブル上は、LSAタイプ1と同様に
「O」のコードが付けられる。
※LSAタイプ2のLSAは以下コマンドで確認可能。
show ip ospf database router
・LSAタイプ3
→異なるエリアへフラッディングされる。
LSAタイプ3はABRが生成する。
このLSAには各エリアの経路情報やコスト情報が含まれる。
ルーティングテーブルで、LSAタイプ3の経路情報は
エリア間ルートを示す「O IA」のコードが付けられる。
※LSAタイプ3のLSAは以下コマンドで確認可能。
show ip ospf database summary
・LSAタイプ4
→異なるエリアへフラッディングされる。LSAタイプ4は
タイプ3同様にABRが生成する。
このLSAには、ASBRのルータID、ASBRに到達するまでの
メトリック値が含まれる。
LSAタイプ4はOSPFネットワークに非OSPFネットワークが接続されて、
ASBRが保持する経路情報をOSPFネットワークにルート再配布した際
そのエリアに所属するABRがLSAタイプ4を生成する。
※LSAタイプ4のLSAは以下コマンドで確認可能。
show ip ospf database asbr-summary
・LSAタイプ5(外部LSA)
→AS全体にフラッディングされる。LSAタイプ5はASBRが生成する。
LSAには非OSPFネットワークアドレス、サブネットマスク、
メトリック値、転送アドレスが含まれる。
このLSAは非OSPFネットワークのルート情報を再配布した
ASBRが生成する。
ルーティングテーブルでLSAタイプ5の経路情報は、
OSPF外部ルートを示す「O E1」または「O E2」のコードが
付けられる。
※LSAタイプ5のLSAは以下コマンドで確認可能。
show ip ospf database external
・LSAタイプ7
→NSSA(スタブエリアにASBRが存在できる特別なエリア)へ
フラッディングされる。
LSAタイプ7は、NSSAのASBRが生成する。このLSAには
LSA5と同様に非OSPFネットワークアドレス、サブネットマスク、
メトリック値、転送アドレスが含まれる。
このLSAは非OSPFネットワークのルート情報を再配布した
ASBRが生成する。
ルーティングテーブルでLSAタイプ7の経路情報は、
OSPF外部ルートを示す「O N1」または「O N2」のコードが
付けられる。
※LSAタイプ7のLSAは以下コマンドで確認可能。
show ip ospf database nssa-external
[エリア]
OSPFには以下の6つのエリアがある。
一般的に使用されるのはバックボーンエリアと標準エリアだが、
エリア内に流れるLSAの量を減らすための特別なエリアが定義される場合がある。
- バックボーンエリア
→全種類のエリアがつながる中心となるエリア。
全エリアはこのエリアに接続されて経路情報を交換する。
バックボーンエリアには、エリア「0」のラベルが付けられる。
※流入可能LSA Type:1 ~ 5
- 標準エリア
→バックボーンエリア以外のOSPFの標準エリア。
標準エリアで受信可能なLSAは 3 ~ 5。
※流入可能LSA Type:1 ~ 5
- スタブエリア
→無駄なLSAトラフィックを少なくするために考えられたエリア。
ASBRから再配布された外部ルート(LSA5)を受信せず、
スタブエリアとの接続点にいるABRがスタブエリアに注入してくれた
デフォルトルートを使用して、非OSPFネットワークに
アクセスする。
※スタブエリアは、ASBRの配置不可。仮想リンク設定不可。
バックボーンでは不可
※流入可能LSA Type:1 ~ 3
- トータリースタブエリア
→さらに無駄なLSAトラフィックを少なくするために考えられたエリア。
ASBRから再配布された外部ルート(LSA5)だけでなく、ABRから
配布されるルート(LSA3)も受信せずトータリースタブエリアとの
接続点にいるABRが注入してくれたデフォルトルートを使用して
非OSPFネットワーク、または異なるエリアへのネットワークへ
アクセスする。
※流入可能LSA Type:1 ~ 2
- NSSAエリア
→スタブエリアにASBRが存在することができるエリア。
NSSAに外部ルートが再配布された場合は、NSSAにしか存在できない
LSAタイプ7が発生する。
このNSSA上のASBRで発生したLSA7の経路は他のエリアに流れる際には
「LSA5」として流される。
※流入可能LSA Type:1 ~ 3、7
- トータリーNSSAエリア
→トータリースタブエリアにASBRが存在することができるエリア。
トータリーNSSAに外部ルートが再配布された場合は、
トータリーNSSAにしか存在できないLSAタイプ7が発生する。
このトータリーNSSA上のASBRで発生したLSA7の経路は、
他のエリアに流れる際はLSA5として流される。
※流入可能LSA Type:1 ~ 2、7
[主な確認コマンド]
sh ip route
sh ip ospf
sh ip ospf nei
sh ip ospf database