OSPF Helloパケット

OSPFには、5つのパケット種類があります。Helloパケットは、OSPFの処理を行う上で、最初に送受信するパケットです。OSPF Helloパケットによって、ネイバーの発見とネイバーの維持を行います。

図 OSPF Helloパケットでネイバーを発見
図 OSPF Helloパケットでネイバーを発見

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

OSPFパケットは、IPでカプセル化されます。IPヘッダのプロトコル番号は89です。Helloパケットの宛先IPアドレスは通常224.0.0.5です。これはすべてのOSPFルータを表すマルチキャストアドレスです。フレームリレーのようなNBMA上でOSPFを動作させるときには、neighborコマンドで指定したIPアドレスが宛先IPアドレスになります。

OSPFパケットには、24バイトのOSPFヘッダがあり、OSPFパケットの種類がわかるようにしています。Helloパケットはタイプ1です。

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

Network Mask

Network Mask(32ビット)は、Helloパケットを送信するインタフェースのサブネットマスクです。ネイバーになるためには、Network Maskが一致していないといけません。ip unnumberedでIPアドレスを設定しているインタフェースでは、Network Maskは0.0.0.0です。

Hello Interval

Hello Interval(16ビット)は、Helloパケットを送信する間隔です。Hello Intervalのデフォルトは、現在の環境では10秒と考えて差し支えありません。Hello Intervalが一致していることがネイバーを確立する条件です。

Options

Options(8ビット)で、OSPFルータのさまざまな機能を示しています。Optionsフィールドでスタブエリアに対応しているかどうかなどを表します。

Router Priority

Router Priority(8ビット)は、イーサネットのようなマルチアクセスネットワークでのDR/BDRの選定に利用します。Router Priorityが大きいルータがDR/BDRに選定されます。Router Priorityが0になっていると、DR/BDRの選定に参加しません。

Router Dead Interval

Router Dead Interval(32ビット)の間、Helloパケットを受信できなければネイバーがダウンしたとみなします。Router Dead IntervalのデフォルトはHello Intervalの4倍です。たいていは40秒です。Router Dead Intervalもネイバーを確立するためには一致していなければいけません。

これ以降は、シンプルにDead Intervalと表記します。

Designated Router

Designated Router(32ビット)は、DRのIPアドレスが格納されます。DRを選定中だったり、DR/BDRを選定しないポイントツーポイントのネットワークタイプのときには「0.0.0.0」です。

Backup Designated Router

Backup Designated Router(32ビット)は、BDRのIPアドレスが格納されます。BDRを選定中だったり、DR/BDRを選定しないポイントツーポイントのネットワークタイプのときには「0.0.0.0」です。

Neighbor

Neighbor(32ビット)は、ネイバーとして認識しているルータIDが格納されます。はじめは「0.0.0.0」です。複数のネイバーがある場合は、Neighborが複数行となります。


ネイバーになるための条件

OSPF Helloパケットでネイバーを確立します。そのためには、Helloパケットに含まれている以下の情報が一致していなければいけません。

  • エリアID(OSPFヘッダ)
  • 認証タイプ/認証データ(OSPFヘッダ)
  • Network Mask
  • Hello Interval
  • Dead Interval
  • Options(E/Nビット)

OSPFでは、ネイバーを確立できなければ話になりません。ネイバーをうまく確立できないときには、Helloパケットの上記の情報を確認してください。

図 ネイバーになるための条件
図 ネイバーになるための条件

Hello Interval/Dead Intervalのデフォルト値

Hello Interval/Dead Intervalのデフォルト値はOSPFが有効化されたインタフェースのネットワークタイプによって以下のように決まります。

ネットワークタイプHello IntervalDead Interval
BROADCAST 10 40
POINT_TO_POINT 10 40
NON_BROADCAST 30 120
表 Hello/Deadインターバルのデフォルト

NON_BROADCASTのネットワークタイプになるのは、フレームリレーやATMのインタフェースです。フレームリレー/ATMを利用することはほとんどないでしょう。Hello/Dead Intervalのデフォルトは10秒/40秒と考えて差し支えありません。

Hello/Dead Intervalの変更と確認

Hello/Dead Intervalのデフォルトは10秒/40秒です。そのため、ネイバーのダウンを認識するのに40秒程度かかってしまうことになります。ネイバーのダウンをもっと早く検出できるようにHello/Dead Intervalの値を変更することが多いでしょう。Hello/Dead Intervalを変更するには、OSPFが有効なインタフェースのインタフェースコンフィグレーションで以下のコマンドを利用します。

Hello/Dead Intervalの変更

(config)#interface <interface-name>
(config-if)#ip ospf hello-interval <hello>
(config-if)#ip ospf dead-interval <dead>

<interface-name> : インタフェース名
<hello> : Hello Intervalの値
<dead> : Dead Intervalの値

Dead Intervalの推奨は、Hello Intervalの4倍です。Hello Intervalの値を変更すると、Dead Intervalは自動的にHello Intervalの4倍の値になります。ただし、Dead Intervalの設定を変えても、Hello Intervalの値は自動的に変更されません。

Dead Intervalを1秒に設定してネイバーのダウンをより早く検出できるようにすることも可能です。OSPFが有効なインタフェースコンフィグレーションモードで次のように設定します。

Dead Intervalを1秒に設定

(config)#interface <interface-name>
(config-if)#ip ospf dead-interval minimal hello-multiplier <number>

<interface-name> : インタフェース名
<number> : 3-20の値。Hello Intervalは1/<number>秒になる

Hello/Dead Intervalの値は、ネイバーを確立するための条件です。設定を変更するときには、ネイバーになるべきルータ同士で一致するように注意してください。

Hello/Dead Intervalの値を確認するには、show ip ospf interfaceコマンドを利用します。show ip ospf interfaceコマンドのサンプルは次のようになります。

R1#show ip ospf interface
FastEthernet0/0 is up, line protocol is up
  Internet Address 192.168.12.1/24, Area 0
  Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 2.2.2.2, Interface address 192.168.12.2
  Backup Designated router (ID) 1.1.1.1, Interface address 192.168.12.1
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:09
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 2.2.2.2  (Designated Router)
  Suppress hello for 0 neighbor(s)

OSPFの仕組み