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

4.10. PIM Timers (PIM タイマー)

PIM-SM は複数のタイマーを使用してプロトコルの動作を制御します。このセクションではすべての PIM タイマーとその用途を要約します。

タイマーの分類

PIM タイマーはいくつかのカテゴリに分類できます:

1. Hello 関連タイマー

タイマー名用途典型的な値
Hello Timer (HT)Hello メッセージの送信をトリガー30 秒
Neighbor Liveness Timer (NLT)ネイバーの活性を追跡受信した Holdtime に基づく

2. Join/Prune 関連タイマー

タイマー名用途典型的な値
Join/Prune Timer (JT)Join/Prune の定期送信60 秒
Expiry Timer (ET)Join/Prune 状態のタイムアウト受信した Holdtime に基づく (210 秒)
Prune-Pending Timer (PPT)LAN での Prune 遅延J/P_Override_Interval
Override Timer (OT)(S,G,rpt) オーバーライドタイマーランダム値

3. Register 関連タイマー

タイマー名用途典型的な値
Register-Stop Timer (RST)登録抑制時間60 秒

4. Assert 関連タイマー

タイマー名用途典型的な値
Assert Timer (AT)Assert 状態のタイムアウト180 秒

5. その他のタイマー

タイマー名用途典型的な値
Keepalive Timer (KAT)(S,G) 状態をアクティブに保つ210 秒

タイマーの開始と停止

タイマー開始ルール:

  • ほとんどのタイマーは状態作成時に開始されます
  • 一部のタイマー (AT など) は特定のイベントがトリガーされたときに開始されます

タイマー停止ルール:

  • 状態遷移時にタイマーを停止する場合があります
  • 更新メッセージを受信したときにタイマーをリセットします
  • 状態削除時にすべての関連タイマーを停止します

タイマー期限切れ処理

各タイマーが期限切れになると, 特定のアクションがトリガーされます:

Hello Timer 期限切れ:

Hello メッセージを送信
Hello Timer を再起動

Join Timer 期限切れ:

if (JoinDesired == TRUE) {
Join メッセージを送信
Join Timer を再起動
} else {
Prune メッセージを送信
Join Timer を停止
}

Expiry Timer 期限切れ:

対応する Join/Prune 状態を削除
送信インターフェースリストを再計算
上流状態の変更をトリガーする可能性

Assert Timer 期限切れ:

NoInfo 状態に遷移
新しい Assert 選出をトリガーする可能性

タイマーの精度とジッター

同期効果を回避するため, 一部のタイマーはランダム化を使用します:

ランダム化戦略:

  • Override Timer: rand(0, Effective_Override_Interval)
  • Initial Join Delay: 初期 Join をランダムに遅延

タイマー精度要件:

  • Hello Timer: ±10% の精度が許容されます
  • Join Timer: ±10% の精度が許容されます
  • Assert Timer: 正確であるべきです

タイマーの相互作用

一部のタイマー間には依存関係があります:

  1. Join Timer と Expiry Timer:

    • Join Timer 周期 < Expiry Timer タイムアウト
    • タイムアウト前に状態が更新されることを保証します
  2. Hello Timer と Neighbor Timer:

    • Hello Holdtime > Hello Period
    • 通常 Holdtime = 3.5 × Hello Period
  3. Register-Stop Timer と Keepalive Timer:

    • RP 上の (S,G) 状態が早期にタイムアウトしないことを保証します
注記

各タイマーの詳細な動作, トリガー条件, および期限切れ処理については, RFC 7761 のセクション 4.10 および関連する状態マシン定義を参照してください。