OSPFv2において使われるOSPFパケットの種類と機能を以下の表に示します。
OSPFのポート番号
OSPFはTCPもUDPも使いませんので、ポート番号という概念はありません。IPヘッダの次にはTCPでもUDPでもなく、OSPFのパケットフォーマットが入ります。
OSPFのパケットフォーマット
OSPFv2はIPv4のプロトコル番号89番のプロトコルです。TCP(プロトコル番号6番)でも UDP(プロトコル番号17番)でもありません。
しかし、TCPのように、相手からのパケット受信確認(LSAck)や再送の仕組みがあるため、 (どちらかと言えばUDPよりも)TCPに近い高信頼性のプロトコルです。
OSPFパケットのヘッダ
OSPFv2において使われるOSPFパケットのヘッダは、上記5種類のパケット全てで共通のものになります。 OSPFパケットヘッダのフォーマットを以下に示します。
Version
OSPFのバージョン情報です。IPv4の場合はVerion2なので2が入ります。 IPv6の場合はVersion3なので3が入ります。
Type
パケットのタイプコードが入ります。Helloであれば1、DBDであれば2、LSRであれば3、LSUであれば4、LSAckであれば5です。
Packet Length
パケット長(単位はByte)が入ります。
Router ID
そのパケットの送信元のルータを一意に識別するIDです。Ciscoでは手動での設定もできますし、 設定を省いた場合はルータのIPアドレス(Loopback インタフェースが優先、高いIPアドレスが優先) がルータIDとして設定されます。
Area ID
OSPFのエリアを識別するIDです。パケットを送信するエリアのIDが入ります。
Checksum
OSPFヘッダにbit誤りがないかを確認するbit列が入ります。
AuType
OSPFの情報をやり取りをして良いかを判断するための認証方法を示します。0の場合は認証無し、1の場合はクリアテキストによる認証(この場合、パケットキャプチャを されたらあっさりと認証を破られます)、2の場合はMD5ハッシュによる認証です。
Authentication
認証情報が入ります。AuTypeが0の場合はここの領域は無視されます。1の場合はクリアテキストでパスワードが 入ります。2の場合は以下のフォーマットで認証情報が入ります。
- Key ID
- 認証アルゴリズムとハッシュを生成するための秘密鍵を決定します。
- Auth Length
パケットの最後に付けられるハッシュ認証情報の長さ(単位はByte)が入ります。
- Cryptographic Sequence Number
リプレイ攻撃対策で利用されるシーケンス番号です。