OSPFのパケットの種類
OSPFのパケットの種類には以下の5種類が存在します。
| タイプ | パケット名 | 意味 |
| 1 | Helloパケット | ネイバールータを検出するためのパケット。 ネイバーの維持にも利用される。 マルチキャスト(224.0.0.5) |
| 2 | DDパケット | LSDBの同期をとるのに利用されるパケット。 DDパケットを送信するルータのすべてのLSAが含まれている。 ユニキャスト。 |
| 3 | LSRパケット | DDパケットにより認識した自身のLSDBにないLSAをネイバールータに 要求するために利用される。ユニキャスト。 |
| 4 | LSUパケット | LSRパケットによりLSA送信を要求されたときに利用される。 マルチキャスト。 (DR/BDRは224.0.0.5、DRHOTHEは224.0.0.6(DR/BDR宛)) |
| 5 | LSAckパケット | LSUの受信に対する確認応答のパケット。このパケットにより信頼性を 確保しているマルチキャスト。 (DR/BDRは224.0.0.5、DRHOTHEは224.0.0.6(DR/BDR宛)) |
OSPFのパケットフォーマット
OSPFのパケットの基本的なフォーマットは以下の通りです。
プロトコル番号は89番を使用します。OSPFではTCPが使われていませんがそれぞれのパケットによって信頼性を確保する技術が使われています。
OSPFデータにはそれぞれのパケットの種類によって異なるデータになるのでそれぞれのパケット項目で解説します。

| Version | OSPFのバージョン。IPv4なら2、IPv6なら3になる。 |
| Type | OSPFのパケットのタイプ。 |
| Packet Length | OSPFのパケットの長さ |
| Router ID | OSPFルータを識別する役割のルータ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 Interval | Helloパケットを送信する感覚。デフォルトでは10秒。 |
| Options | OSPFの様々な機能(スタブエリアの対応など)を示すフィールド。 |
| Router Priority | DR/BDRの選出に使用される値。0は選出されません。 |
| Router Dead Interval | Helloパケットをこの時間受信しなかったときネイバーがダウンしたと判断する。 デフォルトは40秒 |
| Designated Router | DRのIPアドレスが格納されている。選定中は0.0.0.0 |
| Backup Designated Router | BDRの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が一致してないとネイバーを張ることはできない。 |
| Options | OSPFの様々な機能(スタブエリアの対応など)を示すフィールド。 |
| I | Initial bit。最初のDDパケットの場合は1、そうでない場合は0になる。 |
| M | More bit。DDパケットが続く場合1、最後の場合は0になる。 |
| M/S | Master/Slave bit。自身がMasterの場合は1。 ルータIDが高いほうがMasterになる。MasterからDDパケットを交換する。 |
| DBD Secuence Number | DDパケットの同期を確認するシーケンス番号。 マスターが初期値を決定してやり取りをするたびに1つずつ増えていく |
| LSA Headers | LSDBに含まれるすべてのLSAヘッダを送信する。 ほかのルータのLSDBのLSAと比較ができる |
LSRパケット
LSRパケットのフォーマットは以下の通りです。

| Link State Type | LSAのタイプを示すフィールド。LSAの詳細はOSPF LSAをご覧ください。 |
| Link State ID | LSAのタイプによって変わってくる。詳細はOSPF LSAをご覧ください。 |
| Advertising Router | LSAを生成したルータのルータID |
LSUパケット
LSUパケットのフォーマットは以下の通りです。

| Number of LSAs | LSUパケットに含まれているLSAの数。 |
| LSAs | LSUパケットで送信するLSA。 |
LSRパケットを送信後にLSUパケットが届かなかったらLSRパケットを再送します。
LSAcKパケット
LSAcKパケットのフォーマットは以下の通りです。

| LSA Headers | 受信したLSAのヘッダ情報。 |
受信したLSUに対してLSAckパケットを送信することで信頼性を確保します。