CCNP-ENARSI_OSPF
OSPF
- リンクステート型のルーティングプロトコル
- ダイクストラアルゴリズムを使用(別名:SPFアルゴリズム_Shortest Path First)
- VLSM(variable length subnet mask)をサポート
- 30分に1度 LSDBを同期させる
- Link-State Database:OSPFで使用するデータベース
- デフォルトで等コストロードバランス
- エリアという概念による階層設計
エリア
OSPFではエリアというグループに分けて管理する
エリア0が中心的な役割を担い
マルチエリアの場合、エリア0 = バックボーンエリア となる。
マルチエリア
ネットワークを複数のエリアに分割することで管理する手法
- エリア0 = バックボーンエリア
- 各エリアごとにルーティング情報を集約することでルーティングテーブルが小さくなり、ルーティングにおけるオーバーヘッドが減少する
- 障害発生時に影響範囲を限定できる
エリアの種類
バックボーンエリア
全てのエリアが接続されるエリア
LSAは1・2・3・4・5
(config-router)# network {アドレス} {ワイルドカードマスク} area 0
標準エリア
バックボーンエリア以外のデフォルトのエリア
LSAは1・2・3・4・5
(config-router)# network {アドレス} {ワイルドカードマスク} area {エリアID}
スタブエリア
外部ASへのルートがデフォルトルートとして通知されるエリア
LSAは1・2・3
(config-router)# network {アドレス} {ワイルドカードマスク} area {エリアID}
(config-router)# area {エリアID} stub
トータリースタブエリア(完全スタブ)
外部ASへのルートと他エリアへのルートがデフォルトルートとして通知されるエリア
LSAは1・2・3
(config-router)# network {アドレス} {ワイルドカードマスク} area {エリアID}
(config-router)# area {エリアID} stub no-summary
NSSA(Not So Stubby Area)
ASBRを配置できるスタブエリア
LSAは1・2・3・7
(config-router)# network {アドレス} {ワイルドカードマスク} area {エリアID}
(config-router)# area {エリアID} nssa
トータリーNSSA
ASBRを配置できるトータリースタブエリア
LSAは1・2・3・7
(config-router)# network {アドレス} {ワイルドカードマスク} area {エリアID}
(config-router)# area {エリアID} nssa no-summary
※トータリースタブエリアとトータリーNSSA存在するLSAタイプ3はデフォルトルートのみ
スタブエリアの制約
- ASBRを配置できない
- バックボーンエリア(エリア0)はスタブエリアに出来ない
- 仮想リンクの通過エリア(トランジットエリア)に出来ない
- エリア内のルータは全て(ABRも内部ルータも)スタブ設定をする必要がある
OSPFのルータのタイプ
内部ルータ
全インターフェイスが同一エリアに収まっているルータ
バックボーンルータ
エリア0に接続するインターフェイスがあるルータ
エリアボーダルータ(ABR)
インターフェイスが複数のエリアにまたがっているルータ
※マルチエリアOSPFの制約として、ABRはエリア0に接続している必要がある
自律システムボーダルータ(ASBR)
外部ASと接続されたインターフェイスを持っているルータ
OSPFステート
OSPFのルータがコンバージェンスするまでの流れは下記(1→7の順番)
- DOWN:Helloパケットを受信していない最初の状態
- INIT:Helloパケットを受信し、相手を認識した状態
- 2WAY:お互いに認識した状態(DROTHER同士は経路情報を直接交換しないので「2WAY」状態でコンバージェンス)
- EXSTART:DR、BDR決定(選出)済み
- EXCHANGE:データベースの交換
- LOADING:詳細情報確認
- FULL:コンバージェンス(最適経路の計算が完了した状態)
OSPFでの用語
- ネイバー
- OSPFパケットを交換する隣接OSPFルータ
- SPFアルゴリズム
- LSDBを最短経路を導き出す計算
- 別名:ダイクストラアルゴリズム
- LSDB
- LSAをまとめた情報
- LSA
- 自身のルータIDやリンクの情報
- DR
- 代表ルータ
- BDR
- DRのバックアップ
- DROTHER
- DRとBDR以外のルータ
OSPFの経路学習プロセス
- Helloパケットを送信してネイバを認識、ネイバテーブルを作成する
- 検出したネイバにマルチキャストでLSU(LSAを含むパケット)を送信する
- LSUを受信したルータはLSDBを作成する(同じエリアのルータは同様のLSDBを持つ)
- SPFアルゴリズムにより経路計算して、最短経路を計算する。
- メトリックはコスト(基準帯域幅÷インターフェースの帯域幅)
- コストの値が最小の経路がルーティングテーブルに登録
- 基準帯域幅のデフォルトは100Mbps
- コンバージェンス(収束)後は定期的にHelloパケットを送信して、リンクが生きているか確認する(キープアライブ)
- ネットワークに変更があった場合はトリガーアップデートして、変更情報だけをフラッディングする。(差分アップデート)
- 各ルータは30分ごとにLSAを送信して情報を維持する
ネットワークタイプ
ブロードキャストマルチアクセス
ip ospf network broadcast
1つのインターフェイスで複数のルータと接続するネットワークタイプ
Ethernetインターフェースはコマンドなしで接続するとこのタイプになる
ノンブロードキャストマルチアクセス
ip ospf network non-broadcast
1つのインターフェイスで複数のルータと接続するネットワークタイプ
ブロードキャストやマルチキャストが使えないネットワークに接続しているインターフェイスで使用する
ポイントツーポイント
ip ospf network point-to-point
1つのインターフェイスで1つのルータと接続するネットワークタイプ
Serialインターフェイスはコマンドなしで接続するとこのタイプになる
ポイントツーマルチポイント
ip ospf network point-to-multipoint
1つのインターフェイスで複数のルータと接続するネットワークタイプ
サブインターフェイスを利用するインターフェイスで使用する。
サブインターフェイス:一つの物理インターフェイスを複数の論理インターフェイスとして扱う技術
その他の比較
ネットワークタイプ | DR/BDR | Hello | Dead |
---|---|---|---|
ブロードキャストマルチアクセス | あり | 10秒 | 40秒 |
ノンブロードキャストマルチアクセス | あり | 30秒 | 120秒 |
ポイントツーポイント | あり | 10秒 | 40秒 |
ポイントツーマルチポイント | あり | 30秒 | 120秒 |
LSAタイプ一覧
タイプ | LSA名 | 表示 | 生成ルータ | フラッティングされるエリア | 概要 |
---|---|---|---|---|---|
1 | ルータリンク | O | 全ルータ | 生成エリア内 | 同じエリアのルータのリンク情報 |
2 | ネットワークリンク | O | DR | 生成エリア内 | 同じエリアのルータの一覧情報 |
3 | 集約リンク | O IA | ABR | 標準エリア バックボーンエリア スタブエリア |
他のエリアへの経路情報 |
4 | ASBR集約リンク | O IA | ABR | 標準エリア バックボーンエリア スタブエリア |
ASBRへの経路情報 |
5 | AS外部リンク | O E1 O E2 |
ASBR | 標準エリア バックボーンエリア |
外部ASへの経路情報 |
7 | NSSAリンク | O N1 O N2 |
NSSA内のASBR | NSSAリンク内 | NSSAのみにフラッティングされる 外部ASへの経路情報 |
LSAのタイプ6が存在しない理由は不明
元々はLSAは1~5で、タイプ7が特殊?
ルータIDの選出
- ルータIDを明示しているID
- 最大のループバックIPアドレス
- 最大のIPアドレス
DR/BDRの選出
選出基準
- プライオリティ
(config-if)#ip ospf priority {プライオリティ値}
- ルータID
DR/BDR選出後の動作
DR/BDR選出後ではプライオリティの高いルータが追加されても再選出されない
頻繁にDR/BDRが変更されるのはネットワークの安定性が欠けるため
DRのセッションが切れると、
- BDRがDRに選出
- そこから新しくBDRを選出する
Helloパケットに含まれる情報
Helloパケットに含まれる情報 | 一致の必要 |
---|---|
ルータID | なし |
ネイバーの一覧 | なし |
プライオリティ | なし |
DRのIPアドレス | なし |
BDRのIPアドレス | なし |
Hello・Dead間隔 | あり |
ネットワークマスク | あり |
エリアID | あり |
認証パスワード | あり |
スタブエリアフラグ | あり |
※一致の必要が有の情報は、ネイバルータと一致しないと隣接関係が確立されない
コマンド_OSPFの有効化
ルータコンフィグレーションモード
(config)#router ospf {プロセスID}
(config-router)#network {アドレス} {ワイルドカードマスク} area {エリアID}
インターフェイスコンフィグレーションモード
(config)#interface {インターフェイス}
(config-if)#ip ospf {プロセスID} area {エリアID}
コマンド_エリア間経路情報の集約
(config)#router ospf {プロセスID}
(config-router)#summary-address {IPアドレス} {サブネットマスク}
コマンド_ネットワークタイプの設定
(config)#interface {インターフェイス}
(config-if)#ip ospf network {ネットワークタイプ}
- ネットワークタイプ:上記の「ネットワークタイプ」参照
コマンド_Hello/Dead間隔の変更
(config)#interface {インターフェイス}
(config-if)#ip ospf {hello-interval | dead-interval} {秒}
コマンド:プライオリティの設定
(config)#router ospf {プロセスID}
(config-router)#maximum-paths {最大数}
コマンド:等コストロードバランシングの最大数の設定
(config)#router ospf {プロセスID}
(config-router)#maximum-paths {最大数}
コマンド:基準帯域幅の設定
(config)#router ospf {プロセスID}
(config-router)#auto-cost reference-bandwidth {基準帯域幅}
※基準帯域幅の単位は「Mbps」
※コストは全体で一貫性のあるものにする必要があるため、基準帯域幅は全ルータで統一する必要がある
コマンド:インターフェースの帯域幅の設定
(config)#interface {インターフェイス}
(config-if)#bandwidth {基準帯域幅}
※基準帯域幅の単位は「kbps」
コマンド:OSPFのコスト設定
(config)#interface {インターフェイス}
(config-if)#ip ospf cost {コスト}
コマンド:ルータIDの設定
(config)#router ospf {プロセスID}
(config-router)#router-id {ルータID}
コマンド:デフォルトルートの広告設定
(config)#router ospf {プロセスID}
(config-router)#default-information originate {always}
- always:ルーティングテーブルにデフォルトルートが存在しなくても、デフォルトルートを広告する
コマンド:パッシブインターフェースの設定
(config)#router ospf {プロセスID}
(config-router)#passive-interface {インターフェース | default}
コマンド:インターフェイス認証の有効化
(config)#interface {インターフェイス}
(config-if)#ip ospf authentication {message-digest}
- message-digest:MD5認証を有効化する場合は「message-digest」を設定
- message-digestなしの場合はプレーンテキスト認証が有効化される
コマンド:インターフェイス認証の有効化(キーチェーン認証)
(config)#interface {インターフェイス}
(config-if)#ip ospf authentication key-chain {チェーン名}
コマンド:エリア認証の有効化
(config)#router ospf {プロセスID}
(config-router)#area {エリアID} authentication {message-digest}
コマンド:プレーンテキスト認証パスワードの設定
(config)#interface {インターフェイス}
(config-if)#ip ospf authentication-key {パスワード}
コマンド:MD5認証パスワードの設定
(config)#interface {インターフェイス}
(config-if)#ip ospf authentication-key {キーID} md5 {パスワード}
コマンド:キーチェーン認証で使用するチェーンの作成
(config)#key chain {チェーン名}
(config-keychain)#key {キーID}
(config-keychain-key)#cryptographic-algorithm md5
(config-keychain-key)#key-string {パスワード}
ルーティングプロセスの停止
(config)#router ospf {プロセスID}
(config-router)#[no] shutdown
ルーティングプロセスを停止した場合は
- Helloパケットの送信を停止
- 既存の隣接関係を削除し、新たな隣接関係を確立しない
- LSDBを削除
- 対象のルーティングプロセスで学習した経路をルーティングテーブルから削除
- ルーティングの設定は残る
OSPFの確認コマンド
-
show ip ospf
:OSPFの状態(プロセスIDやルータIDなど)を表示 -
show ip ospf neighbor
:OSPFの隣接関係(隣接ルータがDRかBDRかなど)を表示 -
show ip ospf interface
:OSPFが動作するインターフェースの情報(自身がDRかBDRかなど)を表示 -
show ip ospf interface brief
:インターフェースの要約情報を表示 -
show ip ospf database
:OSPFのLSDB(Link-State Database:OSPFで使用するLSAのデータベース)を表示 -
show ip protocols
:ルータで動作しているルーティングプロトコルの基本的な情報を表示
仮想リンク
OSPFは全エリアがバックボーンエリアへ接続する必要がある
このバックボーンエリアへ直接接続できない場合、使用されるのが仮想リンク
コマンド:仮想リンク
(config-router)#area {エリアID} virtual-link {ルータID}
show ip ospfの補足
show ip ospfはOSPFの状態(プロセスIDやルータIDなど)を表示するコマンド
実際の画面は下記
引用元:OSPF - sh ip protocols / sh ip ospf / sh ip ospf interface
① :起動しているルーティングプロトコルがOSPFのプロセス 1 であることを表示。
② :このルータの所属するエリアは1つで標準エリアに接続していることを表示。スタブエリア、NSSAエリアには所属なし。
③ エリア 0 に関する情報を表示する見出し。
④ エリア 0 に所属しているこのルータのインターフェースの数。
⑤ エリア認証の有無。no authentication = 認証なし。
⑥ SPFアルゴリズムの実行回数。