ひよっこエンジニアの備忘録

日常とかSEとしての備忘を書いていきます。

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ネイバー同士が直結している必要はない。
・仮想リンク構成イメージ
 f:id:nrlay00:20180422182441p:plain

 ・設定方法
 仮想リンクを設定するためには、トランジットエリアと
 対向側のルータ 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