メインコンテンツまでスキップ

8. Protocol Packet Processing (プロトコルパケット処理)

本章では、OSPF ルーターが受信したプロトコルパケットをどのように処理するかを詳しく説明します。これは OSPF 実装の中核部分であり、すべてのパケットタイプの処理ロジックをカバーしています。

章の概要 (Chapter Overview)

OSPF は 5 種類の異なるプロトコルパケットを使用し、それぞれに特定の処理フローがあります:

  • Hello パケット
  • Database Description (DD) パケット
  • Link State Request (LSR) パケット
  • Link State Update (LSU) パケット
  • Link State Acknowledgment (LSAck) パケット

8.1 プロトコルパケットの受信 (Receiving Protocol Packets)

一般的な受信処理 (General Reception Processing)

ステップ 1: IP レイヤー受信

  • 宛先アドレス:224.0.0.5 (AllSPFRouters) または 224.0.0.6 (AllDRouters) またはユニキャスト
  • プロトコル番号:89 (OSPF)
  • IP TTL:1 でなければならない(仮想リンクを除く)

ステップ 2: OSPF ヘッダー検証

チェック項目要件失敗時の処理
Version Number2 でなければならないパケットを破棄
Packet Type1-5 が有効パケットを破棄
Checksum正しくなければならないパケットを破棄
Area IDインターフェース設定と一致パケットを破棄
Authentication検証に合格パケットを破棄

8.2 Hello パケット処理 (Hello Packet Processing)

Hello パケットの受信

処理フロー

Hello を受信

Hello パラメータを検証

ネイバーを検索/作成

ネイバー状態を更新

DR/BDR 選出チェック

Hello パラメータ検証

一致しなければならないパラメータ

パラメータ説明不一致時の処理
Network Maskネットワークマスクパケットを破棄
Hello IntervalHello 送信間隔パケットを破棄
Dead Intervalネイバー失効間隔パケットを破棄
Optionsオプションフラグパケットを破棄

8.3 Database Description パケット処理 (DD Packet Processing)

DD パケットの受信

前提条件

  • ネイバー状態が ExStart 以上
  • それ以外はパケットを破棄

処理ロジック分岐

分岐 1: ExStart 状態

Master 決定

if (受信した DD フラグに I, M, MS が含まれる):
if (ネイバー Router ID > 本ルーター Router ID):
本ルーターが Slave になる
ネイバーが Master になる
ネイバーのシーケンス番号を受け入れる
else:
この DD を無視

LSR パケットの受信

前提条件

  • ネイバー状態が Exchange 以上
  • それ以外はパケットを破棄

処理フロー

LSR を受信

要求リストを走査

各 LSA を LSDB で検索

見つかった: LSU 応答に追加
見つからない: BadLSReq イベント

LSU パケットを送信

LSU パケットの受信

処理の複雑さ

  • LSU は複数の LSA を含むことができる
  • 各 LSA は独立して処理
  • 最も複雑なパケットタイプ

LSA 検証

ステップ 1: 基本検証

チェック項目要件
LS Checksum正しくなければならない
LS Type既知のタイプでなければならない
LS AgeMaxAge (3600秒) 以下

LSAck パケットの受信

処理フロー

LSAck を受信

確認された LSA ヘッダーリストを走査

Link State Retransmission List で検索

見つかり一致: 再送信リストから削除
見つからないまたは不一致: この確認を無視

8.7 パケット送信 (Sending Protocol Packets)

送信決定

Hello パケット

  • 定期的に送信(Hello Interval)
  • 宛先:AllSPFRouters (224.0.0.5)

DD パケット

  • データベース同期中
  • 宛先:ネイバーのユニキャストアドレス

LSU パケット

  • LSR への応答:ユニキャスト
  • 新しい LSA のフラッディング:マルチキャストまたはユニキャスト

8.8 再送信メカニズム (Retransmission Mechanism)

用途

  • 未確認の LSA を追跡
  • 各ネイバーが独立したリストを維持

RxmtInterval

  • デフォルト値:5 秒
  • 設定可能
  • 高遅延リンクでは増加させるべき

技術要点まとめ (Technical Summary)

主要処理原則

  1. 厳密な検証

    • すべてのパケットは複数の検証層を通過
    • 不一致は即座に破棄
    • プロトコルのセキュリティを保証
  2. 状態駆動

    • ネイバー状態が処理ロジックを決定
    • 明確な状態遷移
    • 無効な操作を回避
  3. 信頼性のある伝送

    • 確認メカニズム
    • 再送信メカニズム
    • シーケンス番号検出

参考資料 (References)


注意 (Note):プロトコルパケット処理は OSPF 実装の中核です。各パケットタイプの処理フローを理解することは、正しい実装とトラブルシューティングに不可欠です。