OSPFのパケット

OSPFのパケットの種類

OSPFのパケットの種類には以下の5種類が存在します。

タイプパケット名意味
1Helloパケットネイバールータを検出するためのパケット。
ネイバーの維持にも利用される。
マルチキャスト(224.0.0.5)
2DDパケットLSDBの同期をとるのに利用されるパケット。
DDパケットを送信するルータのすべてのLSAが含まれている。
ユニキャスト。
3LSRパケットDDパケットにより認識した自身のLSDBにないLSAをネイバールータに
要求するために利用される。ユニキャスト。
4LSUパケットLSRパケットによりLSA送信を要求されたときに利用される。
マルチキャスト。
(DR/BDRは224.0.0.5、DRHOTHEは224.0.0.6(DR/BDR宛))
5LSAckパケットLSUの受信に対する確認応答のパケット。このパケットにより信頼性を
確保しているマルチキャスト。
(DR/BDRは224.0.0.5、DRHOTHEは224.0.0.6(DR/BDR宛))

OSPFのパケットフォーマット

OSPFのパケットの基本的なフォーマットは以下の通りです。
プロトコル番号は89番を使用します。OSPFではTCPが使われていませんがそれぞれのパケットによって信頼性を確保する技術が使われています。
OSPFデータにはそれぞれのパケットの種類によって異なるデータになるのでそれぞれのパケット項目で解説します。

VersionOSPFのバージョン。IPv4なら2、IPv6なら3になる。
TypeOSPFのパケットのタイプ。
Packet LengthOSPFのパケットの長さ
Router IDOSPFルータを識別する役割のルータID
Area IDエリアを識別するID。
Checksumエラーチェック用
Autype認証方法の種類を示す。ナシなら0、平文なら1、MD5なら2
Authentication認証をするならそのパスワードや情報が格納される。MD5の場合はKey IDなども含まれる。

Helloパケット

Helloパケットのフォーマットは以下の通りです。

Network Mask送信するIFのネットマスク。ip unnumberedが設定されている場合は0.0.0.0になる
Hello IntervalHelloパケットを送信する感覚。デフォルトでは10秒。
OptionsOSPFの様々な機能(スタブエリアの対応など)を示すフィールド。
Router PriorityDR/BDRの選出に使用される値。0は選出されません。
Router Dead IntervalHelloパケットをこの時間受信しなかったときネイバーがダウンしたと判断する。
デフォルトは40秒
Designated RouterDRのIPアドレスが格納されている。選定中は0.0.0.0
Backup Designated RouterBDRのIPアドレスが格納されている。選定中は0.0.0.0
NeighborネイバーのルータID。複数のネイバーが存在する場合複数行になる。

HelloパケットはネイバーのルータIDを含めて送信することで相手のHelloパケットが送信されていることの信頼性を確保しています。

OSPFではHelloパケットでネイバーを確立するためには以下が一致している必要があります。

・エリアID
・認証タイプ
・ネットワークマスク
・Hello Interval
・Dead Interval
・Options(スタブエリアのフラグ)
・IFのMTU(後述するDDパケットに含まれている)

DDパケット

DDパケットのフォーマットは以下の通りです。

Interface MTUインターフェイスのMTU。
MTUが一致してないとネイバーを張ることはできない。
OptionsOSPFの様々な機能(スタブエリアの対応など)を示すフィールド。
IInitial bit。最初のDDパケットの場合は1、そうでない場合は0になる。
MMore bit。DDパケットが続く場合1、最後の場合は0になる。
M/SMaster/Slave bit。自身がMasterの場合は1。
ルータIDが高いほうがMasterになる。MasterからDDパケットを交換する。
DBD Secuence NumberDDパケットの同期を確認するシーケンス番号。
マスターが初期値を決定してやり取りをするたびに1つずつ増えていく
LSA HeadersLSDBに含まれるすべてのLSAヘッダを送信する。
ほかのルータのLSDBのLSAと比較ができる

LSRパケット

LSRパケットのフォーマットは以下の通りです。

Link State TypeLSAのタイプを示すフィールド。LSAの詳細はOSPF LSAをご覧ください。
Link State IDLSAのタイプによって変わってくる。詳細はOSPF LSAをご覧ください。
Advertising RouterLSAを生成したルータのルータID

LSUパケット

LSUパケットのフォーマットは以下の通りです。

Number of LSAsLSUパケットに含まれているLSAの数。
LSAsLSUパケットで送信するLSA。

LSRパケットを送信後にLSUパケットが届かなかったらLSRパケットを再送します。

LSAcKパケット

LSAcKパケットのフォーマットは以下の通りです。

LSA Headers受信したLSAのヘッダ情報。

受信したLSUに対してLSAckパケットを送信することで信頼性を確保します。