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

7. Router State Diagram (ルーター状態遷移図)

7. Router State Diagram (ルーター状態遷移図)​

ルーターの動作は、以下の状態遷移図によってより正式に規定されます。

ルーターは、単一の接続されたネットワークに関して、以下の 2 つの可能な状態のいずれかになります:

  • "Querier" (クエリア)、このルーターがこのネットワーク上で IGMP Membership Queries を送信するように指定されている場合。

  • "Non-Querier" (非クエリア)、別のルーターがこのネットワーク上で IGMP membership Queries を送信するように指定されている場合。

ルーターの状態を変更する可能性のある 3 つのイベントがあります:

  • "query timer expired" (クエリタイマー満了) は、クエリ送信のために設定されたタイマーが満了したときに発生します。

  • "query received from a router with a lower IP address" (より低い IP アドレスを持つルーターからのクエリ受信) は、同じネットワーク上のより低い IP アドレスを持つルーターから IGMP Membership Query が受信されたときに発生します。

  • "other querier present timer expired" (他のクエリア存在タイマー満了) は、ネットワーク上のより低い IP アドレスを持つ別のクエリアの存在を記録するために設定されたタイマーが満了したときに発生します。

上記のイベントに応答して実行される可能性のある 3 つのアクションがあります:

  • "start general query timer" (一般クエリタイマー開始)、接続されたネットワークに対して。

  • "start other querier present timer" (他のクエリア存在タイマー開始)、接続されたネットワークに対して [Other Querier Present Interval]。

  • "send general query" (一般クエリ送信)、接続されたネットワーク上で。General Query は全システムグループ (224.0.0.1) に送信され、[Query Response Interval] の Max Response Time を持ちます。

                                      --------------------------------
_______|________ gen. query timer |
--------- | | expired |
| Initial |---------------->| | (send general query, |
--------- (send gen. q., | | set gen. q. timer) |
set initial gen. q. | |<----------------------
timer) | Querier |
| |
-----| |<---
| | | |
| |________________| |
query received from a | | other querier
router with a lower | | present timer
IP address | | expired
(set other querier | ________________ | (send general
present timer) | | | | query,set gen.
| | | | q. timer)
| | | |
---->| Non |----
| Querier |
| |
| |
---->| |----
| |________________| |
| query received from a |
| router with a lower IP |
| address |
| (set other querier |
| present timer) |
---------------------------

ルーターは、すべての接続されたネットワークで Initial 状態で開始し、すぐに Querier 状態に移行すべきです (SHOULD)。

さらに、どのグループにメンバーがいるかを追跡するために、ルーターは、単一の接続されたネットワーク上の単一の IP マルチキャストグループに関して、以下の 4 つの可能な状態のいずれかになります:

  • "No Members Present" (メンバー不在) 状態、このマルチキャストグループのレポートを送信したホストがネットワーク上に存在しない場合。これはルーター上のすべてのグループの初期状態です。ルーターにストレージを必要としません。

  • "Members Present" (メンバー存在) 状態、このマルチキャストグループの Membership Report を送信したホストがネットワーク上に存在する場合。

  • "Version 1 Members Present" (バージョン 1 メンバー存在) 状態、このマルチキャストグループの Version 1 Membership Report を送信した IGMPv1 ホストがネットワーク上に存在する場合。

  • "Checking Membership" (メンバーシップ確認中) 状態、ルーターが Leave Group メッセージを受信したが、まだマルチキャストグループの Membership Report を聞いていない場合。

ルーターの状態遷移を引き起こす可能性のある 6 つの重要なイベントがあります:

  • "v2 report received" (v2 レポート受信) は、ルーターがインターフェース上のグループの Version 2 Membership Report を受信したときに発生します。有効であるためには、Report メッセージは少なくとも 8 オクテット長で、正しい IGMP チェックサムを持っていなければなりません。

  • "v1 report received" (v1 レポート受信) は、ルーターがインターフェース上のグループの Version 1 Membership report を受信したときに発生します。同じ有効性要件が適用されます。

  • "leave received" (脱退受信) は、ルーターがインターフェース上のグループの IGMP Group Leave メッセージを受信したときに発生します。有効であるためには、Leave メッセージは少なくとも 8 オクテット長で、正しい IGMP チェックサムを持っていなければなりません。

  • "timer expired" (タイマー満了) は、グループメンバーシップのために設定されたタイマーが満了したときに発生します。

  • "retransmit timer expired" (再送タイマー満了) は、グループ特定 Membership Query を再送するために設定されたタイマーが満了したときに発生します。

  • "v1 host timer expired" (v1 ホストタイマー満了) は、グループメンバーとしてのバージョン 1 ホストの存在を記録するために設定されたタイマーが満了したときに発生します。

上記のイベントに応答して実行される可能性のある 6 つのアクションがあります:

  • "start timer" (タイマー開始)、インターフェース上のグループメンバーシップに対して - タイマーが現在実行中の場合、タイマーを初期値 [Group Membership Interval] にリセットします。

  • "start timer*" (タイマー開始*)、インターフェース上のグループメンバーシップに対して - この代替アクションは、このルーターが Querier の場合はタイマーを [Last Member Query Interval] * [Last Member Query Count] に設定し、このルーターが non-Querier の場合はパケット内の [Max Response Time] * [Last Member Query Count] に設定します。

  • "start retransmit timer" (再送タイマー開始)、インターフェース上のグループメンバーシップに対して [Last Member Query Interval]。

  • "start v1 host timer" (v1 ホストタイマー開始)、インターフェース上のグループメンバーシップに対して。タイマーが現在実行中の場合、タイマーを初期値 [Group Membership Interval] にリセットします。

  • "send group-specific query" (グループ特定クエリ送信)、接続されたネットワーク上のグループに対して。Group-Specific Query はクエリ対象のグループに送信され、[Last Member Query Interval] の Max Response Time を持ちます。

  • "notify routing +" (ルーティング通知 +)、この接続されたネットワーク上にこのグループのメンバーが存在することをルーティングプロトコルに通知します。

  • "notify routing -" (ルーティング通知 -)、この接続されたネットワーク上にこのグループのメンバーがもはや存在しないことをルーティングプロトコルに通知します。

Querier 状態のルーターの状態図は以下の通りです:

                              ________________
 ----------------------------|                |<-----------------------
|                            |                |timer expired           |
|               timer expired|                |(notify routing -,      |
|          (notify routing -)|   No Members   |clear rxmt tmr)         |
|                    ------->|    Present     |<-------                |
|                   |        |                |       |                |
|v1 report rec'd    |        |                |       |  ------------  |
|(notify routing +, |        |________________|       | | rexmt timer| |
| start timer,      |                    |            | |  expired   | |
| start v1 host     |  v2 report received|            | | (send g-s  | |
|  timer)           |  (notify routing +,|            | |  query,    | |
|                   |        start timer)|            | |  st rxmt   | |
|         __________|______              |       _____|_|______  tmr)| |
|        |                 |<------------       |              |     | |
|        |                 |                    |              |<----- |
|        |                 | v2 report received |              |       |
|        |                 | (start timer)      |              |       |
|        | Members Present |<-------------------|    Checking  |       |
|  ----->|                 | leave received     |   Membership |       |
| |      |                 | (start timer*,     |              |       |
| |      |                 |  start rexmt timer,|              |       |
| |      |                 |  send g-s query)   |              |       |
| |  --->|                 |------------------->|              |       |
| | |    |_________________|                    |______________|       |
| | |v2 report rec'd |  |                          |                   |
| | |(start timer)   |  |v1 report rec'd           |v1 report rec'd    |
| |  ----------------   |(start timer,             |(start timer,      |
| |v1 host              | start v1 host timer)     | start v1 host     |
| |tmr    ______________V__                        | timer)            |
| |exp'd |                 |<----------------------                    |
|  ------|                 |                                           |
|        |    Version 1    |timer expired                              |
|        | Members Present |(notify routing -)                         |
|        |                 |-------------------------------------------
|        |                 |<--------------------
 ------->|_________________| v1 report rec'd     |
| v2 report rec'd |   |   (start timer,          |
| (start timer)   |   |    start v1 host timer)  |
 -----------------     --------------------------

Non-Querier 状態のルーターの状態図も同様ですが、non-Queriers はメッセージを送信せず、メッセージ受信によってのみ駆動されます。non-Queriers は Membership Report メッセージが Version 1 か Version 2 かを気にしないことに注意してください。

                              ________________
| |
| |
timer expired| |timer expired
(notify routing -)| No Members |(notify routing -)
--------->| Present |<---------
| | | |
| | | |
| | | |
| |________________| |
| | |
| |report received |
| |(notify routing +,|
| | start timer) |
________|________ | ________|________
| |<--------- | |
| | report received | |
| | (start timer) | |
| Members Present |<-------------------| Checking |
| | g-s query rec'd | Membership |
| | (start timer*) | |
---->| |------------------->| |
| |_________________| |_________________|
| report received |
| (start timer) |
-----------------