以下に、本発明に係るデータ中継装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明の実施の形態1に係るレイヤ2スイッチを有した通信ネットワークの構成を示す図である。通信ネットワーク1は、ネットワーク上で複数の相手を指定して同じデータを送信するマルチキャスト通信ネットワークであり、レイヤ2スイッチ10、マルチキャストルータ30、端末装置(受信端末)20J〜20Lを備えている。
レイヤ2スイッチ(データ中継装置)10は、マルチキャストルータ30と端末装置20J〜20Lとの間に配置され、マルチキャストルータ30と端末装置20J〜20Lとの間で送受信されるデータ(メッセージ)をスヌーピングしながらデータ中継(マルチキャスト中継を制御)する。
レイヤ2スイッチ10は、I/F部11Jで端末装置20Jと接続し、I/F部11Kで端末装置20Kと接続し、I/F部11Lで端末装置20Lと接続している。また、レイヤ2スイッチ10は、I/F部16でマルチキャストルータ30と接続している。
レイヤ2スイッチ10は、マルチキャストルータ30から送られるQueryメッセージ(マルチキャスト受信要求メッセージ)51を端末装置20J〜20Lへ中継するとともに、所定の端末装置(例えば、端末装置20J)から送られるReportメッセージ(Queryメッセージに対するマルチキャスト受信応答メッセージ)をマルチキャストルータ30に中継する。また、レイヤ2スイッチ10は、マルチキャストルータ30の送信するマルチキャストデータパケット(Reportメッセージに対するマルチキャストデータ)を所定の端末装置(受信側)へ中継する。
ここでは、レイヤ2スイッチ10がマルチキャストルータ30からのQueryメッセージ51を端末装置20J〜20Lへ中継し、端末装置20JからのReportメッセージ52をマルチキャストルータ30へ中継している場合を示している。また、ここではマルチキャストルータ30からのマルチキャストデータパケット53をレイヤ2スイッチ10が端末装置20Jに中継している場合を示している。
なお、以下では、マルチキャスト受信者としてIGMPv1/v2または、MLDv1をサポートした端末装置20J〜20Lが存在するものとして説明する。なお、ここでは通信ネットワーク1が1つのレイヤ2スイッチ10を備える構成の場合について説明したが。通信ネットワーク1が複数のレイヤ2スイッチ10を備える構成としてもよい。この場合、各レイヤ2スイッチ10が互いに接続されるとともに、マルチキャストルータ30と端末装置20J〜20Lとの間に配置される。
図2は、本発明の実施の形態1に係るレイヤ2スイッチの構成を示すブロック図である。レイヤ2スイッチ10は、I/F部(端末側通信部)11J〜11L、ルータモード受信部12J〜12L、マルチキャストテーブル記憶部13J〜13L、受信グループ管理テーブル記憶部14、Query受信処理部15、I/F部(ルータ側通信部)16を備えている。なお、ここでのルータモード受信部12J〜12LとQuery受信処理部15が特許請求の範囲に記載の通信制御部に対応する。
I/F部11J〜11Lは、それぞれ端末装置20J〜20Lと接続する通信インタフェースであり、I/F部16はマルチキャストルータ30と接続する通信インタフェースである。
ルータモード受信部12Jは、I/F部11Jと接続し、I/F部11Jの接続先(端末装置20J)に対してルータモード動作を行なう。ルータモード受信部12Kは、I/F部11Kと接続し、I/F部11Kの接続先(端末装置20K)に対してルータモード動作を行なう。ルータモード受信部12Lは、I/F部11Lと接続し、I/F部11Lの接続先(端末装置20L)に対してルータモード動作を行なう。
マルチキャストテーブル記憶部13Jは、ルータモード受信部12Jと接続し、I/F部11Jのマルチキャスト状態(マルチキャスト情報)を管理するマルチキャストテーブル(I/F部11Jのマルチキャストテーブル)を記憶する。
マルチキャストテーブル記憶部13Kは、ルータモード受信部12Kと接続し、I/F部11Kのマルチキャスト状態を管理するマルチキャストテーブル(I/F部11Kのマルチキャストテーブル)を記憶する。
マルチキャストテーブル記憶部13Lは、ルータモード受信部12Lと接続し、I/F部11Lのマルチキャスト状態を管理するマルチキャストテーブル(I/F部11Lのマルチキャストテーブル)を記憶する。
各マルチキャストテーブル内の各エントリは、マルチキャストアドレス、エントリタイマ(マルチキャストエントリのI/F部毎のエントリタイマ)、ソースリスト、ソースタイマ、除外リスト、フィルタタイマの各フィールドを有している。
マルチキャストアドレスは、マルチキャストパケットを中継する際に用いるアドレスである。エントリタイマは、I/F部毎のマルチキャストテーブル(マルチキャストエントリ)の管理に用いるタイマであり、各I/F部のエントリが有効か無効かの判断に用いられる。ソースリストは、マルチキャストパケットの送信元となるソースアドレスのリストである。ソースタイマは、ソースリストの管理に用いるタイマであり、ソースリストが有効か無効かの判断に用いられる。除外リストは、受信者(端末装置20J〜20L)が除外を要求しているソースのソースアドレスのリストである。フィルタタイマは、除外リストの管理に用いるタイマであり、除外リストが有効か無効かの判断に用いられる。
受信グループ管理テーブル記憶部14は、マルチキャストテーブル記憶部13J〜13Lと接続し、受信グループ管理テーブルを記憶する。ここでの受信グループ管理テーブルは、マルチキャストグループアドレス毎に受信者と接続するI/F部11J〜11Lに関する情報のデータテーブル(各I/F部を管理するためのデータテーブル)である。
受信グループ管理テーブル内の各エントリは、マルチキャストアドレス、宛先I/Fのリスト、エントリタイマ、ソースリスト、除外リストの各フィールドを有している。ここでのエントリタイマは、マルチキャストアドレスエントリの管理に用いるタイマであり、マルチキャストアドレスエントリが有効か無効かの判断に用いられる。
Query受信処理部15は、受信グループ管理テーブル記憶部14、I/F部11J〜11L、I/F部16と接続している。Query受信処理部15は、I/F部11J〜11L毎にホストモード動作を行なう。
なお、図2では、I/F部16の先にマルチキャストルータ30が存在する場合のレイヤ2スイッチ10の構成を示しているが、各I/F部11J〜11Lの先にもマルチキャストルータが存在する可能性があるので、全てのI/F部にルータモード受信部およびQuery受信処理部を用意してもよい。
なお、受信グループ管理テーブルやI/F部毎のマルチキャストテーブルが特許請求の範囲に記載の受信者情報に対応する。また、エントリタイマ、ソースタイマ、フィルタタイマが特許請求の範囲に記載の管理タイマに対応する。
つぎに、実施の形態1に係るレイヤ2スイッチの動作手順について説明する。通信ネットワーク1において、マルチキャストルータ30は、所定の周期でGeneral Queryメッセージ(問合せメッセージ)を送信し、レイヤ2スイッチ10はI/F部16でGeneral Queryメッセージを受信する。ここでのGeneral Queryメッセージには、質問間隔(Query Interval)、質問応答間隔(Query Response Interval)、信頼性変数(Robustness Variable)が含まれており、レイヤ2スイッチ10はこれらの値を受信グループ管理テーブル記憶部14で記憶しておく。
図3は、実施の形態1に係るレイヤ2スイッチがGeneral Queryメッセージを受信した際のQuery受信処理部の動作手順を示すフローチャートであり、図4は、実施の形態1に係るレイヤ2スイッチがReportメッセージを受信した際の、ルータモード受信部の動作手順を示すフローチャートである。
レイヤ2スイッチ10のI/F部16では、General Queryメッセージを受信すると(ステップS100)、Query受信処理部15へGeneral Queryメッセージを転送する。
Query受信処理部15は、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルを検索して、受信グループ管理テーブルにGeneral Queryメッセージに対応するマルチキャストアドレスエントリが存在するか否かを確認する(ステップS110)。
マルチキャストアドレスエントリが存在しない場合(ステップS110、エントリなし)、Query受信処理部15は、General Queryメッセージを受信したI/F部(I/F部16)以外の各I/F部(I/F部11J〜11L)を介してGeneral Queryメッセージを中継する(ステップS120)。例えば、レイヤ2スイッチ10が、端末装置20J〜20LからGeneral Queryメッセージに対するReportメッセージを受信して、端末装置20J〜20Lのマルチキャストアドレスエントリを生成するまでは、各I/F部11J〜11Lから端末装置20J〜20LへGeneral Queryメッセージを中継する。ここでは、まだ端末装置20J〜20LからGeneral Queryメッセージに対するReportメッセージを受信していないので、端末装置20J〜20LにGeneral Queryメッセージを中継することとなる。このように、受信グループ管理テーブルにGeneral Queryメッセージに対応するマルチキャストアドレスエントリが存在しない場合は、端末装置20J〜20LにGeneral Queryメッセージを中継する。
通信ネットワーク1上にマルチキャスト受信者(端末装置)が存在する場合、マルチキャスト受信者(端末装置)はGeneral Queryメッセージに対してReportメッセージを応答する。ここでは、端末装置20JがGeneral Queryメッセージに対してReportメッセージを応答し、レイヤ2スイッチ10のI/F部11JがReportメッセージを受信する場合について説明する。I/F部11Jは、端末装置20JからのReportメッセージを受信すると、ルータモード受信部12JにReportメッセージを転送する。
ここで、Reportメッセージを受信した際のルータモード受信部12J〜12Lの動作処理を説明する。なお、ルータモード受信部12J〜12Lは同様の動作を行なうため、ここではルータモード受信部12Jの動作手順について図4を参照して説明する。
図4では、レイヤ2スイッチ10で、IGMPv1、IGMPv2、MLDv1などのソース指定を伴わないグループメンバシップ管理プロトコルのReportメッセージを受信した場合の動作手順を示している。
ルータモード受信部12Jは、I/F部11Jを介してReportメッセージを受信すると(ステップS200)、マルチキャストテーブル記憶部13J内のマルチキャストテーブル(I/F部11Jのマルチキャストテーブル)からReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS210)。
マルチキャストテーブル記憶部13J内のマルチキャストテーブルに、Reportメッセージのマルチキャストアドレスに該当するエントリが存在しない場合(ステップS210、エントリなし)、ルータモード受信部12Jは、Reportメッセージに対応するマルチキャストエントリ(I/F部11Jのマルチキャストエントリ)をマルチキャストテーブルに生成する(ステップS220)。ここでは、I/F部11Jが端末装置20Jから初めてReportメッセージを受信しているので、I/F部11J(端末装置20J)に対応するマルチキャストエントリを生成する。
マルチキャストエントリを生成した後、ルータモード受信部12Jは、I/F部毎のエントリタイマとして、I/F部11Jのエントリタイマを起動する(ステップS230)。ここでのエントリタイマは、エントリタイマ初期値をMALI(Multicast Address Listening Interval)(質問間隔と信頼性変数の積と質問応答時間の和)とし、時間の経過とともにタイマ値を減算していく。MALIは、マルチキャストの受信間隔でありタイムアウトするまでの時間(受信者がいないと決定する前に、待たなくてはならない時間量)である。
さらに、ルータモード受信部12Jは、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS240)。
受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在しない場合(ステップS240、エントリなし)、ルータモード受信部12Jは、受信グループ管理テーブルに新たなエントリを生成して登録する。具体的には、受信グループ管理テーブルに新たなマルチキャストアドレスと、Reportメッセージを受信したI/F部11Jの情報(宛先I/F)などを設定し、受信グループ管理テーブル記憶部14に記憶させる(ステップS250)。
ここでは、I/F部11Jが端末装置20Jから初めてReportメッセージを受信しているので、ルータモード受信部12Jは、受信グループ管理テーブルに新たなエントリを設定する。
Query受信処理部15は、受信グループ管理テーブルに新たに生成したエントリに基づいて、Reportメッセージを生成する。生成したReportメッセージは、I/F部16を介してマルチキャストルータ30の接続ポート(以下、ルータ接続ポートという)へ送信する(ステップS260)。このとき、新規エントリ(受信グループ管理テーブルのマルチキャストアドレスエントリ)のエントリタイマ値はMALIにしておく(ステップS270)。
一方、ステップS240の処理において、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS240、エントリあり)、ルータモード受信部12Jは、受信グループ管理テーブル内の宛先I/Fに、Reportメッセージを受信したI/F部11Jを追加する(ステップS280)。そして、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマをMALIに更新する(ステップS270)。
なお、ルータ接続ポートは、Queryメッセージやマルチキャストルータ30が送信するプロトコルパケット(RFC4601等で規定されるPIM Helloパケット、RFC4286で規定されるMRDメッセージなど)を受信したI/F部(I/F部16)を学習して設定されるか、または管理者による設定によって定義されるものとする。
ルータ接続ポートから送信されたReportメッセージは、マルチキャストルータ30に到着する。これにより、マルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレス宛へのマルチキャストパケットの中継を開始する。
レイヤ2スイッチ10では、マルチキャストルータ30からのマルチキャストパケットをI/F部16により受信すると、Query受信処理部15が受信グループ管理テーブルを参照して宛先マルチキャストアドレスに対応するエントリを抽出する。Query受信処理部15は、抽出したエントリ内の宛先I/Fに定義されたI/F部(ここではI/F部11J)にマルチキャストパケットを中継する。
このように、I/F部11J以外のI/F部(Reportメッセージを受信していないI/F部)にはマルチキャストパケットが中継されないので、マルチキャスト受信者の存在しないインタフェースに不要なトラヒックが中継されることはない。これにより、不要なトラヒックの中継を防ぐことができる。
つぎに、レイヤ2スイッチ10がマルチキャスト受信者に関する情報(I/F部11Jのマルチキャストエントリ)を設定した後、マルチキャストルータ30が質問間隔周期で送信するGeneral QueryをI/F部16で受信した際の動作を図3を参照して説明する。
レイヤ2スイッチ10のI/F部16では、General Queryメッセージを受信すると(ステップS100)、Query受信処理部15へGeneral Queryメッセージを転送する。
Query受信処理部15は、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルを検索し、受信グループ管理テーブル内にGeneral Queryメッセージに対応するマルチキャストアドレスエントリが存在するか否かを確認する(ステップS110)。
ここでは、端末装置20Jから既にReportメッセージを受信した後であり、受信グループ管理テーブルにマルチキャストアドレスエントリを作成してあるので、受信グループ管理テーブルにマルチキャストアドレスエントリ(Reportメッセージを受信したI/F部11Jの情報)が存在することとなる。マルチキャストアドレスエントリが存在する場合(ステップS110、エントリあり)、Query受信処理部15は、このマルチキャストアドレスエントリのエントリタイマ値を確認する(ステップS130)。
エントリタイマ値がLLQT(Last Listener Query Time)(質問応答時間と信頼性変数の積)よりも大きければ(ステップS130、>LLQT)、Query受信処理部15がマルチキャストアドレスエントリのマルチキャストアドレスを用いたReportメッセージを生成する。このとき、生成するReportメッセージパケットのソースアドレスは未定アドレスとしておく。なお、ここでのLLQT(閾値)は、最終の問い合わせ時間から応答を待つ時間(問合せメッセージの最大応答待ち時間)である。
生成したReportメッセージは、ルータ接続ポートへ送信する(ステップS140)。すなわち、エントリタイマ値がLLQTより大きくてマルチキャストアドレスエントリからエントリが削除される可能性の小さい受信者からは、Reportメッセージの受信を待つことなく、ソースアドレスを未定アドレスとしたReportメッセージをマルチキャストルータ30へ送信しておく。これにより、Query受信処理部15は、エントリタイマ値がLLQTより大きなエントリに対応する受信者へのGeneral Queryメッセージの中継と、この受信者から送られるReportメッセージの受信を待つことなく、マルチキャストルータ30へReportメッセージを送信している。
マルチキャストルータ30は、Reportメッセージのソースアドレスが未定アドレスの場合であっても、Reportメッセージを正常なメッセージとして処理するよう設定されているものとする。例えば、マルチキャストルータ30をRFC3376等の標準規格で規定しておく。Reportメッセージを受信したマルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレスの受信者の存在を確認し、マルチキャストパケットの中継を継続する。
このように、エントリタイマ値がLLQTより大きなエントリに対しては、Query受信処理部15が受信者から送られるReportメッセージの受信を待つことなく、マルチキャストルータ30へReportメッセージを送信しているので、マルチキャストルータ30は、エントリタイマ値がLLQTより大きなエントリの受信者に対しては、マルチキャストパケットの中継を継続するか否かを迅速に判断することが可能となる。
一方、エントリタイマ値がLLQT以下であれば(ステップS130、≦LLQT)、マルチキャストアドレスエントリからエントリが削除される可能性が高い受信者のエントリであると判断して、マルチキャストルータ30へのReportメッセージを生成しない。この後、マルチキャストアドレスエントリからエントリが削除される可能性の高い受信者からReportメッセージが送信されない場合には、この受信者に対応するReportメッセージのマルチキャストルータ30への送信を省略できることとなる。
この後、Query受信処理部15は、受信グループ管理テーブルを検索して、受信グループ管理テーブルに次のマルチキャストアドレスエントリ(他のマルチキャストアドレスエントリ)が存在するか否かを確認する(ステップS110)。Query受信処理部15は、受信グループ管理テーブル内の全てのマルチキャストアドレスエントリに対してステップS130、S140の処理を行う。
受信グループ管理テーブル内の全てのマルチキャストアドレスエントリに対してステップS130、S140の処理を行うと、受信グループ管理テーブル内に残っているマルチキャストアドレスエントリが存在しないと判断する(ステップS110、エントリなし)。そして、I/F部16が受信したGeneral Queryメッセージを、I/F部16以外の各I/F部11J〜11Lを介して、端末装置20J〜20L側の全ポートに中継する(ステップS120)。
I/F部11J〜11Lの先にマルチキャスト受信者が存在すれば、中継されたGeneral Queryメッセージに対してマルチキャスト受信者(端末装置)からReportメッセージが返答される。ここでは、I/F部11Jの先にマルチキャスト受信者である端末装置20Jが存在するので、中継されたGeneral Queryメッセージに対して端末装置20JからReportメッセージが返答される。この端末装置20JからのReportメッセージは、I/F部11Jで受信され、ルータモード受信部12Jに転送される。
ここで、マルチキャストアドレスのエントリをマルチキャストテーブルに設定した後にルータモード受信部12JがReportメッセージを受信した際の動作手順を図4を参照して説明する。
ルータモード受信部12Jは、I/F部11Jを介してReportメッセージを受信すると(ステップS200)、マルチキャストテーブル記憶部13J内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS210)。
マルチキャストテーブル記憶部13J内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS210、エントリあり)、ルータモード受信部12JはI/F部毎のエントリタイマ値(I/F部11Jのエントリタイマ値)をMALIに更新する(ステップS290)。
そして、ルータモード受信部12Jは、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマ値を確認する(ステップS300)。マルチキャストアドレスエントリのエントリタイマ値がLLQTを超える値ならば(ステップS300、>LLQT)、マルチキャストアドレスエントリのエントリタイマ値をMALIに更新する(ステップS270)。
一方、マルチキャストアドレスエントリのエントリタイマ値がLLQT以下の値である場合(ステップS300、≦LLQT)、ステップS140の処理(Reportメッセージの生成と送信)を行っていないので、Query受信処理部15は、Reportメッセージを生成する。生成したReportメッセージは、I/F部16を介してルータ接続ポートへ送信する(ステップS260)。そして、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマ値をMALIに更新する(ステップS270)。受信者の何れか(端末装置20J〜20L)が継続的にマルチキャストに参加している状態では、レイヤ2スイッチ10が図3および図4の動作を定期的に実行する。
つぎに、受信者がマルチキャストに参加している状態で、受信者が明示的にLeaveメッセージ(離脱要求メッセージ)を送信してマルチキャストを離脱する場合のレイヤ2スイッチ10の動作手順について説明する。ここでは端末装置20Jがマルチキャストを離脱する場合について説明する。
受信者である端末装置20Jは、マルチキャストを離脱する際に、マルチキャストグループアドレスを格納したLeaveメッセージを送信する。I/F部11Jは、端末装置20JからのLeaveメッセージを受信すると、ルータモード受信部12Jに転送する。そして、ルータモード受信部12Jは、マルチキャストテーブル記憶部13Jのマルチキャストテーブル内で端末装置20Jに対応するエントリのエントリタイマ(I/F部11Jのエントリタイマ)値をLLQTまたはLLQT以下の値(閾値)に短縮する。ここで設定されるエントリタイマ値がReportメッセージの送信判定やQueryメッセージの中継判定の閾値となる。
このとき、ルータモード受信部12Jは、他のI/F部(I/F部20K,20L)で有する同一のマルチキャストグループアドレスのエントリのうち、最も大きなエントリタイマ値を取得する。そして、取得したエントリタイマ値を受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマに設定する。Leaveメッセージを受信したI/F部11Jのみがマルチキャストグループアドレスのエントリを有している場合は、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマもLLQTに変更することとなる。
ルータモード受信部12Jは、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマ値がLLQT以下に更新されたことを契機に、エントリのマルチキャストグループアドレスを用いてLeaveメッセージを生成し、ルータ接続ポートに送信する。
マルチキャストルータ30は、Leaveメッセージを受信すると、Leaveメッセージ内で示されたマルチキャストグループアドレスに対するエントリタイマをLLQTに更新し、Specific Queryメッセージ(離脱する受信者を確認するためのメッセージ)を送信する。
なお、Leaveメッセージに対してマルチキャストルータ30からSpecific Queryメッセージが送信され、レイヤ2スイッチ10に到着するまでの時間を見越して、レイヤ2スイッチ10ではLeaveメッセージ送信のエントリタイマ判定閾値をLLQTよりも大きな値(タイムラグに応じた値)としてもよい。
レイヤ2スイッチ10のI/F部16では、マルチキャストルータ30からのSpecific Queryメッセージを受信すると、このメッセージをQuery受信処理部15へ送信する。
ここで、Query受信処理部15がSpecific Queryメッセージを受信した際の動作手順について説明する。図5は、実施の形態1に係るレイヤ2スイッチがSpecific Queryメッセージを受信した際のQuery受信処理部の動作手順を示すフローチャートである。
図5では、IGMPv1、IGMPv2、MLDv1などのソース指定を伴わないグループメンバシップ管理プロトコルのSpecific Queryメッセージを受信した場合の動作を示している。
レイヤ2スイッチ10のI/F部16では、Specific Queryメッセージを受信すると(ステップS400)、Query受信処理部15へSpecific Queryメッセージを転送する。
Query受信処理部15は、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルを検索する。Query受信処理部15は、受信グループ管理テーブルにSpecific Queryメッセージで指示されたマルチキャストグループアドレスに対応するマルチキャストアドレスエントリが存在するか否かを確認する(ステップS410)。
受信グループ管理テーブルにSpecific Queryメッセージで指示されたマルチキャストグループアドレスのマルチキャストアドレスエントリが存在する場合(ステップS410、エントリあり)、Query受信処理部15は、マルチキャストアドレスエントリのエントリタイマ値を確認する(ステップS420)。
マルチキャストアドレスエントリのエントリタイマ値が、LLQTより大きい場合(ステップS420、>LLQT)、Query受信処理部15は、マルチキャストアドレスエントリのマルチキャストアドレスを用いたReportメッセージを生成し、ルータ接続ポートへ送信する(ステップS430)。
これにより、マルチキャストルータ30は、エントリタイマ値がLLQTより大きなエントリに対しては、マルチキャストを離脱する受信者であるか否かを迅速に判断することが可能となる。
一方、マルチキャストアドレスエントリのエントリタイマ値が、LLQT以下の場合(ステップS420、≦LLQT)、Query受信処理部15は、Reportメッセージを生成しない。
すなわち、エントリタイマ値がLLQT以下であれば、マルチキャストアドレスエントリからエントリが削除される可能性が高い受信者のエントリであると判断して、マルチキャストルータ30へのReportメッセージを生成しない。これにより、マルチキャストアドレスエントリからエントリが削除される可能性の高い受信者からSpecific Queryメッセージに対するReportメッセージが送信されない場合には、この受信者に対応するReportメッセージのマルチキャストルータ30への送信を省略できることとなる。
本実施の形態では、ルータモード受信部12Jが端末装置20JからLeaveメッセージを受信した際に、I/F部11Jのエントリタイマ値をLLQTに短縮しているので、マルチキャストエントリのエントリタイマ値がLLQT未満となる。このため、Query受信処理部15はReportメッセージは送信しない。
Query受信処理部15は、Specific Queryメッセージで指示されたマルチキャストアドレスであって、I/F部毎のエントリタイマ値がLLQT以下であるエントリを持つI/F部のそれぞれに対して、Specific Queryメッセージを中継する(ステップS440)。
すなわち、指示されたマルチキャストアドレスのエントリを持たないI/F部や、I/F部毎のマルチキャストテーブル(マルチキャストエントリ)におけるI/F部毎のエントリタイマ値がLLQTよりも大きなI/F部にはSpecific Queryメッセージを中継しない。これにより、Query受信処理部15に中継されて、通信ネットワーク1内を流れるSpecific Queryメッセージの量と、Specific Queryメッセージに対して端末装置で応答されるReportメッセージの量を削減することが可能となる。
Specific Queryメッセージを中継したI/F部の先に受信者が存在しなければ、Specific Queryメッセージに対してReportメッセージが応答されることはない。このため、Reportメッセージの応答がなかったI/F部のマルチキャストエントリのエントリタイマ、および受信グループ管理テーブル(マルチキャストアドレスエントリ)のエントリタイマが満了する。これにより、Query受信処理部15は、受信グループ管理テーブルからエントリタイマが満了した各エントリの削除を行なうとともに、マルチキャストパケットの中継を停止する。
また、マルチキャストルータ30は、Reportメッセージ未受信によるタイムアウトによってマルチキャストパケットの中継を停止し、通信ネットワーク1内へのマルチキャストパケットの流入を停止する。
一方、Specific Queryメッセージを中継したI/F部の先に受信者が存在し、受信者からSpecific Queryメッセージに対するReportメッセージが応答された場合は、I/F部11Jで受信する。このReportメッセージは、ルータモード受信部12Jに転送される。
Specific Queryメッセージに対するReportメッセージを受信した際のルータモード受信部12Jの動作手順を図4を参照して説明する。ここでは、端末装置20JからSpecific Queryメッセージに対するReportメッセージが送信された場合について説明する。
ルータモード受信部12Jは、I/F部11Jを介してReportメッセージを受信すると(ステップS200)、マルチキャストテーブル記憶部13J内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS210)。
マルチキャストテーブル記憶部13J内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS210、エントリあり)、ルータモード受信部12JはI/F部毎のエントリタイマ値(I/F部11Jのエントリタイマ値)をMALIに更新する(ステップS290)。
そして、ルータモード受信部12Jは、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマ値を確認する(ステップS300)。マルチキャストアドレスエントリのエントリタイマ値がLLQTを超える値ならば(ステップS300、>LLQT)、マルチキャストアドレスエントリのエントリタイマ値をMALIに更新する(ステップS270)。
一方、マルチキャストアドレスエントリのエントリタイマ値がLLQT以下の値ならば(ステップS300、≦LLQT)、ステップS430の処理(Reportメッセージの生成と送信)を行っていないので、Query受信処理部15は、Reportメッセージを生成する。生成したReportメッセージは、I/F部16を介してルータ接続ポートへ送信する(ステップS260)。そして、受信グループ管理テーブルのマルチキャストアドレスエントリのエントリタイマ値をMALIに更新する(ステップS270)。マルチキャストルータ30は、Reportメッセージを受信すると、エントリタイマをMALIに更新してマルチキャストの中継を継続する。
これにより、レイヤ2スイッチ10は、任意の受信者が脱退(消失)した場合にはその受信者を収容するI/F部へのマルチキャスト中継を停止するが、その他のI/F部へのマルチキャストの中継は継続することとなる。
このように、実施の形態1によれば、端末装置から送られるReportメッセージなどに基づいて、I/F部毎のマルチキャストテーブルや受信グループ管理テーブルの生成、更新を行い、I/F部毎のマルチキャストテーブルや受信グループ管理テーブルを用いてメッセージ中継を行なっているので、プロキシ機能を用いたマルチキャストを実現することが可能となる。
また、I/F部毎のマルチキャストテーブルエントリのエントリタイマ値を参照してSpecific Queryメッセージの中継の有無(必要性)を判定しているので、必要のないメッセージ中継を無くすことができ、制御メッセージ交換トラヒックを削減することが可能となる。
また、受信グループ管理テーブルにおけるマルチキャストアドレスエントリのエントリタイマ値がLLQT以下の場合には、Specific QueryメッセージやGeneral Queryメッセージに対するマルチキャストルータ30へのReportメッセージを行なわず、エントリタイマ値の更新時にLLQT以下からLLQTを超える値に変更されたことをReportメッセージ送信の条件としているので、必要最小限のReportメッセージのみがマルチキャストルータ30へ送信されることとなり、制御メッセージ交換トラヒックを削減することが可能となる。
したがって、通信ネットワーク1内の各リンクに流れるメッセージが少なくなり、効率良くマルチキャストグループメンバシップ管理プロトコル交換を行なうことが可能となる。
実施の形態2.
つぎに、図6〜図12を用いてこの発明の実施の形態2について説明する。実施の形態2では、INCLUDEモードの受信者が任意のソースをソースリストから削除するBLOCKタイプのReportメッセージを送信した場合に、ソースタイマ値の変化に基づいて、マルチキャストルータ30へのReportメッセージを送信するか否かを判断する。
図6は、本発明の実施の形態2に係るレイヤ2スイッチを有した通信ネットワークの構成を示す図である。図6の各構成要素のうち図1に示す実施の形態1の通信ネットワーク1と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
レイヤ2スイッチ40は、レイヤ2スイッチ10と同様のスイッチである。レイヤ2スイッチ40は、I/F部11Jで端末装置20Jと接続し、I/F部16でレイヤ2スイッチ10と接続している。
また、レイヤ2スイッチ10は、I/F部11Jでレイヤ2スイッチ40と接続し、I/F部11Lで端末装置20Lと接続し、I/F部16でマルチキャストルータ30と接続している。
ここでは、端末装置20KからのReportメッセージ31が、レイヤ2スイッチ40、レイヤ2スイッチ10の順番で中継されてマルチキャストルータ30に送られる場合を示している。また、ここではレイヤ2スイッチ10がマルチキャストルータ30からのマルチキャストデータパケット35をレイヤ2スイッチ40へ中継し、レイヤ2スイッチ40がレイヤ2スイッチ10からのマルチキャストデータパケット35を端末装置20Kに中継している場合を示している。
なお、以下では、通信ネットワーク1がマルチキャスト受信者としてIGMPv3または、MLDv2をサポートし、ソースアドレスも指定可能な端末装置20J〜20Lが存在するものとして説明する。
これらのソースアドレスを指定可能な端末装置20J〜20Lは、Reportメッセージの中に、自装置が参加を希望するマルチキャストグループアドレスと、送信元装置のIPアドレスであるソースアドレスのリスト(ソースアドレスリスト)と、フィルタモードとを含めておき、これらの情報をレイヤ2スイッチ10,40に通知する。このうち、フィルタモードは、ソースアドレスリストが受信を要求する対象であるか、受信から除外する対象であるかを示す情報である。
例えば、マルチキャストアドレスMでフィルタモードINCLUDE(A)の場合、ソースリストAに含まれるソースアドレスを送信元とし、この送信元に宛先Mのマルチキャストパケットの受信を要求するものである。
また、マルチキャストアドレスMでフィルタモードEXCLUDE(X,Y)の場合、ソースリストYに含まれるソースアドレス以外のソースアドレスを送信元とし、この送信元に宛先Mのマルチキャストパケットの受信を要求するものである。
ここでの前記Xは、「要求リスト」と呼ばれ、ソースタイマを起動中のソースを列記したソースリストである。また、前記Yは「除外リスト」と呼ばれ、受信者が除外を要求しているソースを列記したソースリストである。
ここでのマルチキャストルータ30も、実施の形態1のマルチキャストルータ30と同様に、定期的にGeneral Queryメッセージを送信する。そして、レイヤ2スイッチ10,40は、General Queryメッセージ中のインターバルタイマ値等の情報を記憶し、General Queryメッセージを各I/F部に中継する。
図6に示す通信ネットワーク1では、レイヤ2スイッチ10,40が多段接続しており、それぞれのレイヤ2スイッチ10,40で実施の形態1のレイヤ2スイッチ10と同様に情報更新とメッセージ中継を行なう。
通信ネットワーク1上にソースアドレス指定に対応したマルチキャスト受信端末(端末装置20J〜20L)が存在する場合、マルチキャスト受信端末はQueryメッセージに対してソースアドレスとフィルタモードを含むReportメッセージを応答する。本実施の形態では、端末装置20KがソースリストA、フィルタモードINCLUDEとして、マルチキャストグループに参加する場合について説明する。
端末装置20Kは、マルチキャストルータ30からのQueryメッセージに対してReport(IS_IN(A))メッセージ(ソースリストA、フィルタモードINCLUDE)(参加要求メッセージ)を応答する。このReportメッセージは、レイヤ2スイッチ40のI/F部11Kで受信される。レイヤ2スイッチ40のI/F部11Kは、Reportメッセージを受信するとルータモード受信部12KにReportメッセージを転送する。
ここで、Reportメッセージを受信した際のルータモード受信部12J〜12Lの動作について説明する。なお、ルータモード受信部12J〜12Lは同様の動作を行なうため、ここではルータモード受信部12Kの動作手順について説明する。
図7は、実施の形態2に係るレイヤ2スイッチがReportメッセージを受信した際のルータモード受信部の動作手順を示すフローチャートである。図7では、レイヤ2スイッチ40が、IGMPv3やMLDv2などのソース指定可能なグループメンバシップ管理プロトコルのReportメッセージを受信した場合の動作手順を示している。
ルータモード受信部12Kは、I/F部11Kを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13K内のマルチキャストテーブル(I/F部毎のマルチキャストテーブル)からReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13K内のマルチキャストテーブルに、Reportメッセージのマルチキャストアドレスに該当するエントリが存在しない場合(ステップS510、エントリなし)、ルータモード受信部12Kは、Reportメッセージに対応するマルチキャストエントリ(I/F部毎のマルチキャストエントリ)をマルチキャストテーブルに生成する(ステップS520)。具体的には、Reportメッセージ中のフィルタモードおよびソースリストをマルチキャストエントリに設定する。ここでは、I/F部11Kが端末装置20Kから初めてReportメッセージを受信しているので、I/F部11K(端末装置20K)に対応するマルチキャストエントリ(ソースリストA、フィルタモードINCLUDE)を生成する。
マルチキャストエントリを生成した後、ルータモード受信部12Kは、ソースタイマまたはフィルタタイマを起動する。ここでは、マルチキャストエントリにフィルタモードINCLUDEを生成しているので、ソースタイマを起動する。ここでのソースタイマは、ソースタイマ初期値をMALIとし、時間の経過とともにタイマ値を減算していく(ステップS530)。
ルータモード受信部12Kは、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS540)。
受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するマルチキャストアドレスエントリが存在しない場合(ステップS540、エントリなし)、ルータモード受信部12Kは、受信グループ管理テーブルに新たなエントリを生成して登録する。具体的には、受信グループ管理テーブルに新たなマルチキャストアドレスと、Reportメッセージ中のフィルタモードおよびソースリストと、宛先I/F(I/F部11K)などを設定し、受信グループ管理テーブル記憶部14に記憶させる(ステップS550)。
ここでは、I/F部11Kが端末装置20Kから初めてReportメッセージを受信しているので、ルータモード受信部12Kは、受信グループ管理テーブルに新たなエントリを設定する。
Query受信処理部15は、新たに生成したエントリに基づいて、Reportメッセージを生成する。生成したReportメッセージは、I/F部16を介してルータ接続ポートへ送信する(ステップS560)。ここでのReportメッセージは、例えばReport(TO_IN(A))としてもよいし、Report(ALLOW(A))としてもよい。
ルータ接続ポートから送信されたReportメッセージは、レイヤ2スイッチ10のI/F部11Jに到着する。レイヤ2スイッチ10では、レイヤ2スイッチ40と同様の処理を実行し、レイヤ2スイッチ10のI/F部16(ルータ接続ポート)からReportメッセージが送信される。
レイヤ2スイッチ10のルータ接続ポートから送信されたReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレスを宛先として、Reportメッセージで指定されたソースリストやフィルタモードで受信要求されているソースアドレスを持つマルチキャストパケットの中継を開始する。
レイヤ2スイッチ10は、マルチキャストルータ30からのマルチキャストパケットをI/F部16により受信すると、Query受信処理部15が受信グループ管理テーブルを参照して宛先マルチキャストアドレスに対応するエントリを抽出する。そして、エントリ内の宛先I/Fに定義されたI/F部のうち、I/F部毎のマルチキャストテーブルのソースリストやフィルタモードで受信要求されているソースアドレスとマルチキャストパケットのソースアドレスとが合致するI/F部に、マルチキャストパケットを中継する。ここでは、I/F部毎のマルチキャストテーブルとして、I/F部11K(端末装置20K)に対応するマルチキャストエントリ(ソースリストA、フィルタモードINCLUDE)が生成されている。したがって、INCLUDE(A)エントリを持つI/F部11Jにマルチキャストパケットを中継する。
レイヤ2スイッチ10のI/F部11Jから送られるマルチキャストパケットは、レイヤ2スイッチ40が受信する。レイヤ2スイッチ40でもレイヤ2スイッチ10と同様な処理を行ない、I/F部11Kからマルチキャストパケットが中継され、端末装置20Kにマルチキャストパケットが到着する。
このように、ソース指定に対応したMLDv2においても、ソース指定に対応していないMLDv1等と同様に、レイヤ2スイッチ40のI/F部11K以外のI/F部にはマルチキャストが中継されないので、マルチキャスト受信者の存在しないインタフェースに不要なトラヒックが中継されることはない。これにより、不要なトラヒックの中継を防ぐことができる。
つぎに、レイヤ2スイッチ10がマルチキャスト受信者に関する情報(マルチキャストマルチキャストアドレスエントリ)を設定した後、マルチキャストルータ30が質問間隔周期で送信するGeneral QueryをI/F部16で受信した際の動作を図8を参照して説明する。
図8は、実施の形態2に係るレイヤ2スイッチがGeneral Queryメッセージを受信した際のQuery受信処理部の動作手順を示すフローチャートである。レイヤ2スイッチ10のI/F部16では、General Queryメッセージを受信すると(ステップS600)、Query受信処理部15へGeneral Queryメッセージを転送する。
Query受信処理部15は、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルを検索して、受信グループ管理テーブルにマルチキャストアドレスエントリが存在するか否かを確認する(ステップS610)。
ここでは、端末装置20Kから既にReportメッセージを受信した後であり、受信グループ管理テーブルにエントリを作成してあるので、受信グループ管理テーブルにマルチキャストマルチキャストアドレスエントリが存在することとなる。マルチキャストマルチキャストアドレスエントリが存在する場合(ステップS610、エントリあり)、Query受信処理部15は、このマルチキャストマルチキャストアドレスエントリのフィルタモード、ソースリストを用いてエントリ毎のReportメッセージを生成する。
そして、生成したReportメッセージをルータ接続ポートから送信する。このとき、複数エントリの情報をそれぞれのアドレスレコードとして、1つのReportメッセージに格納して送信してもよい。ここでは、Query受信処理部15が、Report(IS_IN(A))メッセージを生成して、ルータ接続ポートに送信する。このとき、生成するReportメッセージパケットのソースアドレスは未定アドレスとしておく(ステップS620)。
マルチキャストルータ30は、Reportメッセージのソースアドレスが未定アドレスの場合であっても、Reportメッセージを正常なメッセージとして処理するよう設定されているものとする。例えば、マルチキャストルータ30をRFC3376等の標準規格で規定しておく。
Reportメッセージを受信したマルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレス、ソースリストおよびフィルタモードで指定されたマルチキャストの受信者の存在を確認し、マルチキャストの中継を継続する。
Query受信処理部15では、受信グループ管理テーブルを検索して、受信グループ管理テーブルに次のマルチキャストアドレスエントリ(他のマルチキャストアドレスエントリ)が存在するか否かを確認する(ステップS610)。Query受信処理部15は、受信グループ管理テーブル内の全てのマルチキャストアドレスエントリに対してステップS620の処理を行う。
受信グループ管理テーブル内の全てのマルチキャストアドレスエントリに対してステップS620の処理を行うと、受信グループ管理テーブル内に残っているマルチキャストアドレスエントリが存在しないと判断する(ステップS610、エントリなし)。そして、I/F部16が受信したGeneral Queryメッセージを、I/F部16以外の各I/F部11J〜11Lを介して、端末装置20J〜20L側の全ポートに中継する(ステップS630)。
なお、レイヤ2スイッチ10が、端末装置からGeneral Queryメッセージに対するReportメッセージを受信して、端末装置のマルチキャストマルチキャストアドレスエントリを生成するまでは、受信グループ管理テーブルにマルチキャストアドレスエントリが存在しない(ステップS610、エントリなし)。このため、端末装置からReportメッセージを受信するまでは、マルチキャストルータ30にReportメッセージを作成することなく、各I/F部からGeneral Queryメッセージを中継する(ステップS630)。
レイヤ2スイッチ10が中継したGeneral Queryメッセージは、レイヤ2スイッチ40で受信され、レイヤ2スイッチ40においてもレイヤ2スイッチ10と同様な処理(各I/F部へのQueryの中継)が行なわれる。
レイヤ2スイッチ40が各I/F部11J〜11Lに対してGeneral Queryメッセージを中継した結果、マルチキャスト受信者(端末装置)が存在すれば、中継されたGeneral Queryメッセージに対してマルチキャスト受信者からReportメッセージが返答される。
ここでは、I/F部11Kの先にマルチキャスト受信者である端末装置20Kが存在するので、中継されたGeneral Queryメッセージに対して端末装置20KからReportメッセージが返答される。この端末装置20KからのReportメッセージは、レイヤ2スイッチ40のI/F部11Kで受信され、ルータモード受信部12Kに転送される。
ここで、マルチキャストアドレスのエントリをマルチキャストテーブルに設定した後にルータモード受信部12KがReportメッセージを受信した際の動作手順を図7を参照して説明する。
ルータモード受信部12Kは、I/F部11Kを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13K内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13K内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS510、エントリあり)、ルータモード受信部12Kは、新たなフィルタモードおよびソースリストの更新処理を行なう。具体的には、エントリのフィルタモードおよびソースリストと、メッセージのフィルタモードおよびソースリストとに基づいて、新たなフィルタモードおよびソースリストを抽出し、新たなフィルタモードおよびソースリストとしてマルチキャストテーブルに登録する。そして、フィルタモードとソースリストとの組み合わせに応じた処理(例えば、Reportメッセージの送信処理など)を行なう。ここでのルータモード受信部12Kは、例えば、後述するエントリ情報101,102に基づいて、エントリの更新処理とルータ接続ポートからのReportメッセージ送信を行なう(ステップS570)。
ここでフィルタモードとソースリストとの組み合わせに基づいた、エントリの更新処理とルータ接続ポートから送信するReportメッセージの内容について説明する。図9および図10は、ルータモード受信部のマルチキャストエントリ状態とルータ接続ポートから送信するメッセージの関係を示す図である。図9,10のエントリ情報101,102では、ルータモード受信部12J〜12Lのマルチキャストエントリの状態に応じて、受信したReportメッセージの内容により更新するI/F部毎のマルチキャストテーブルエントリの管理内容と、ルータ接続ポートから送信するReportメッセージの内容と、をそれぞれ対応付けている。
エントリ情報101,102では、「Router State」を示す列91、「Router Receiver」を示す列92、「New Router State」を示す列93、「Router Mode Action」を示す列94、「Host Mode Action」を示す列95がそれぞれ対応付けられている。
列91は、Reportメッセージ受信前のI/F部毎のマルチキャストエントリの状態を表している。INCLUDEモードにおける括弧内は、ソースリストを表している。EXCLUDEモードにおける括弧内の第1項は要求ソースのリストを表しており、第2項は除外ソースのリストを表している。列92は、I/F部11J〜11Lで受信するReportメッセージの内容を示している。括弧内は、ソースリストを表している。
列93は、Reportメッセージを受信したことによる新たなエントリ状態(エントリの更新内容)を表している。ソースリスト(括弧内)における「+」演算子は和集合を示し、「−」演算子は差集合を示し、「*」演算子は積集合を示している。
列94は、Reportメッセージを受信したことによるルータモード受信部12J〜12Lの動作を表している。「(A)=T(時間)」は、ソースリストAのソースタイマをTに更新することを表している。「Delete(A)」は、ソースリストAを削除することを表している。「Filter Timer=T」は、フィルタタイマをTに更新することを表している。
本発明の特徴の1つである列95は、Reportメッセージを受信した際に、ルータ接続ポートへ送信すべき情報(マルチキャストルータ30に対する動作)を示している。「Report(TYPE(A))」は、レコードタイプが「TYPE」、ソースリストAのReportメッセージをルータ接続ポートへ送信することを表している。例えば、「Report(BLOCK(A))」の場合は、レコードタイプが「BLOCK」、ソースリストAのReportメッセージをルータ接続ポートへ送信することを表している。
本実施の形態では、INCLUDE(A)のエントリを持っているときに、IS_IN(A)を受信している。図10のエントリ情報102(009)に示すように、INCLUDE(A)のエントリを持っているときに、IS_IN(B)を受信すると、新たなエントリ状態はINCLUDE(A+B)なるので、INCLUDE(A)のエントリを持っているときに、IS_IN(A)を受信すると、新たなエントリ状態は、INCLUDE(A+A)となる。すなわち、新たなエントリ状態は、INCLUDE(A)となる。そして、ルータモード受信部12Kの動作は、(A)=MALIへの更新であるので、ソースリストAのソースタイマをMALIに更新する。
なお、ここでは「Host Mode Action」を示す列95が設定されていないため、マルチキャストルータ30へのReportメッセージの送信処理は行なわない。
ルータモード受信部12Kが、I/F部毎のマルチキャストテーブルにおいてフィルタモードおよびソースリストの更新処理を行なった後、Query受信処理部15は受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Kの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
宛先I/Fの情報の再計算においては、例えばRFC3810の4.2節等に記載されたインタフェース毎の状態の管理方法などを用いる。すなわちQuery受信処理部15は、EXCLUDEモードの宛先I/Fが1つでも存在すれば、再計算後のモードはEXCLUDEとする。そして、全てのEXCLUDEモードの宛先I/Fのソースリストの共通項から、INCLUDEモードの宛先I/Fのソースリストを除外したものをソースリストとする。また、全ての宛先I/FがINCLUDEモードである場合、再計算後のモードはINCLUDEモードとし、全ての宛先I/Fのソースリストの和を再計算後のソースリストとする。
そして、更新前後のフィルタモード、ソースリストを比較して変化があった場合、または、更新前後の各宛先I/Fのマルチキャストエントリのソースタイマ値の最大値を比較して更新前後でLLQT以下の値のソースタイマ値がMALIに更新された場合は、変化の内容に応じたReportメッセージを生成し、ルータ接続ポートに送信する(ステップS590)。
具体的には、フィルタモードがINCLUDEモードからEXCLUDEモードに変更された場合は、TO_EXタイプのReportメッセージを生成し、EXCLUDEモードからINCLUDEモードに変更された場合は、TO_INタイプのReportメッセージを生成する。
また、INCLUDEモードのソースリストが変更された場合は、追加されたソースリストについてALLOWタイプのReportメッセージを生成し、削除されたソースリストについてBLOCKタイプのReportメッセージを生成する。
また、EXCLUDEモードのソースリストが変更された場合は、追加されたソースリストについてBLOCKタイプのReportメッセージを生成し、削除されたソースリストについてALLOWタイプのReportメッセージを生成する。
また、受信I/F部の中で最大のソースタイマ値がLLQT以下からLLQTよりも大きな値に更新された場合は、当該ソースリストを指定したALLOWタイプのReportメッセージを生成する。
なお、メッセージ数を削減するために、Query受信からMaximum Response Delay時間以内の受信グループ管理テーブルエントリの更新情報をまとめてReportメッセージを生成してもよい。これにより、複数メッセージを集約してReportメッセージを生成できる。
また、レイヤ2スイッチが複数段接続していることを考慮して、レイヤ2スイッチ間の中継遅延時間を差し引いて、Maximum Response Delayよりも小さな時間以内での更新情報をまとめてもよい。
ここでは、受信グループ管理テーブルエントリのエントリタイマおよびソースタイマ値はLLQTより大きい値となっており、フィルタモードの変更やソースリストの変更もないため、受信グループ管理テーブルエントリの更新を契機としてReportの送信を行なうことはない。
なお、レイヤ2スイッチ40が、General Query受信時の処理としてルータ接続ポートであるI/F部16からReport(IS_IN(A))メッセージを送信すると、このReport(IS_IN(A))メッセージは、レイヤ2スイッチ10によって受信される。レイヤ2スイッチ10は、レイヤ2スイッチ40と同様に、I/F部毎のマルチキャストエントリのソースタイマ値をMALIに更新するのみで、マルチキャストルータ30へReportメッセージは送信しない。受信者が継続的にマルチキャストに参加している状態では、上記の動作(図7,8に示した動作)が定期的に実行される。
つぎに、通信ネットワーク1に受信者が追加された場合について説明する。ここでは、受信者として端末装置20Lが追加された場合について説明する。図11は、実施の形態2の通信ネットワークに受信者が追加された場合のデータ中継を説明するための図である。
ここでは、端末装置20Kとマルチキャストルータ30の間のデータ中継に加えて、端末装置20Lとマルチキャストルータ30の間のデータ中継が行なわれている場合を示している。具体的には、図6のデータ中継に加えて、端末装置20LからのReportメッセージ32が、レイヤ2スイッチ10で中継されてマルチキャストルータ30に送られている。また、マルチキャストルータ30からのマルチキャストデータパケット35が、レイヤ2スイッチ10で中継されて端末装置20Lに送られている。
端末装置20Lは、マルチキャストに参加するため、Reportメッセージ32として例えばReport(TO_IN(B))メッセージなどを送信する。レイヤ2スイッチ10のI/F部11Lは、端末装置20LからのReportメッセージ32を受信し、ルータモード受信部12Lにメッセージを転送する。
ここで、マルチキャストに参加するためのReportメッセージ32を受信した際のルータモード受信部12Lの動作手順を図7を参照して説明する。レイヤ2スイッチ10のルータモード受信部12Lは、I/F部11Lを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13L内のマルチキャストテーブル(I/F部毎のマルチキャストテーブル)からReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13L内のマルチキャストテーブルに、Reportメッセージのマルチキャストアドレスに該当するエントリが存在しない場合(ステップS510、エントリなし)、ルータモード受信部12Lは、Reportメッセージに対応するマルチキャストエントリ(I/F部毎のマルチキャストエントリ)をマルチキャストテーブルに生成する(ステップS520)。具体的には、Reportメッセージ中のフィルタモードおよびソースリストをマルチキャストエントリに設定する。ここでは、I/F部11Lが端末装置20Lから初めてReportメッセージを受信しているので、I/F部11L(端末装置20L)に対応するマルチキャストエントリ(ソースリストA、フィルタモードINCLUDE)を生成する。
マルチキャストエントリを生成した後、ルータモード受信部12Lは、ソースタイマを起動する(ステップS530)。ここでのソースタイマは、ソースタイマ初期値をMALIとし、時間の経過とともにタイマ値を減算していく(ステップS530)。
ルータモード受信部12Lは、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS540)。
ここでは、既に端末装置20Kのマルチキャストアドレスが受信グループ管理テーブルに登録されているので、受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在している。受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS540、エントリあり)、受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Lの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
そして、Query受信処理部15は、Reportメッセージの送信が必要か否かを判断し、必要に応じてReportメッセージを生成する。ここでのレイヤ2スイッチ10は、受信グループ管理テーブルのマルチキャストアドレスエントリとして、対象のマルチキャストアドレス、フィルタモードINCLUDE、ソースリスト(A)、宛先I/F(I/F部11J)のエントリを有している。したがって、I/F部11LからReport(TO_IN(B))メッセージを受信すると、Query受信処理部15がエントリ情報101に基づいて、マルチキャストアドレスエントリのソースリストを(A+B)に更新し、宛先I/Fの情報にI/F部11Lを追加する。
ソースリスト(A)の範囲のソースタイマはLLQTよりも大きな値であるが、ソースリスト(B−A)の範囲は新たに追加されたソースリストであるため、ソースリスト(B−A)についてALLOWタイプのReportメッセージを生成し、ルータ接続ポートへ送信する(ステップS590)。
このReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、ソースリスト(B−A)をソースリストに追加し、ソースリスト(B−A)の範囲のマルチキャストの中継を開始する。
つぎに、受信者が明示的にBLOCKタイプのReportメッセージを送信して一部のソースリストを変更する場合の処理について説明する。例えば、端末装置20Kは、INCLUDEモードで参加中のマルチキャストのソースリストAからソースリストCを除外するため、BLOCK(C)を指定したReportメッセージを送信する。
レイヤ2スイッチ40のI/F部11Kは、端末装置20KからのReportメッセージを受信すると、ルータモード受信部12Kに転送する。ルータモード受信部12Kは、I/F部11Kのマルチキャストテーブルの対応エントリに対して、エントリ情報101,102に基づいた処理を行なう。ここでは、INCLUDE(A)状態でBLOCK(C)を受信するため、ソースリスト(A*C)のソースタイマをLLQTに短縮し、ルータ接続ポートからReport(BLOCK(C))を送信する(図9の002)。ここでのReportメッセージは、BLOCKメッセージ内のソースリスト全体Cを対象として上流側へBLOCKメッセージを送信される。
また、受信グループ管理テーブルの該当エントリについては、Query受信処理部15が、他のI/F部で有する同一のマルチキャストグループアドレスのエントリのソースリストを抽出する。このソースリストのうち、ソースタイマ値がLLQTより大きなソースをソースリストCから除外し、LLQTより大きなソースが除外されたソースリストCに対して、ソースタイマ値をLLQTに更新する。ここでは、他のI/F部でマルチキャストエントリを有していないため、ソースリストCの全体について、ソースタイマ値をLLQTに更新する。
ルータ接続ポートから送信されたReport(BLOCK(C))メッセージは、レイヤ2スイッチ10に到着してルータモード受信部12Jに転送される。、このメッセージを受けたルータモード受信部12Jは、エントリ情報101,102に従った処理を行なう。
ここでは、INCLUDE(A)状態でBLOCK(C)を受信するため、ルータモード受信部12Jは、ソースリスト(A*C)のソースタイマをLLQTに短縮し、ルータ接続ポートからReport(BLOCK(C))メッセージ(受信したBLOCKメッセージに含まれるソースリスト全体)を送信する。また、Query受信処理部15は、受信グループ管理テーブルの該当エントリの更新を行なう。
ここでのレイヤ2スイッチ10は、受信グループ管理テーブルエントリとして、対象のマルチキャストアドレス、フィルタモードINCLUDE,ソースリスト(A+B)のエントリを有している。I/F部11JからReport(BLOCK(C))メッセージを受信しても、I/F部11Lのソースリストは変化しない。このため、受信グループ管理テーブルエントリの内容の変化をトリガとしたReport送信は行なわない。
レイヤ2スイッチ10のルータ接続ポートから送信されたReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、Reportメッセージ内で示されたマルチキャストグループアドレスのソースリストに対して、ソースタイマをLLQTに更新し、Multicast Address and Source Specific Queryメッセージを送信する。レイヤ2スイッチ10のI/F部16では、マルチキャストルータ30からのSpecific Queryメッセージを受信すると、Query受信処理部15へ送信する。
ここで、Query受信処理部15がSpecific Queryメッセージを受信した際の処理について説明する。図12は、実施の形態2に係るレイヤ2スイッチがSpecific Queryメッセージを受信した際のQuery受信処理部の動作手順を示すフローチャートである。
図12では、レイヤ2スイッチ10がIGMPv3やMLDv2などのソース指定可能なグループメンバシップ管理プロトコルのソース指定を含むSpeicific Queryメッセージを受信した場合の動作手順を示している。
レイヤ2スイッチ10のI/F部16では、Specific Queryメッセージを受信すると(ステップS700)、Query受信処理部15へSpecific Queryメッセージを転送する。
Query受信処理部15は、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルを検索する。Query受信処理部15は、受信グループ管理テーブルにSpecific Queryメッセージで指示されたマルチキャストグループアドレスに対応するマルチキャストアドレスエントリが存在するか否かを確認する(ステップS710)。
受信グループ管理テーブルにSpecific Queryメッセージで指示されたマルチキャストグループアドレスのマルチキャストアドレスエントリが存在する場合(ステップS710、エントリあり)、Query受信処理部15がマルチキャストアドレスエントリの宛先I/FのそれぞれについてI/F部毎のマルチキャストアドレスエントリを確認する。そして、Specific Queryメッセージで指定されたソースリストに含まれるソースであって、ソースアドレスのソースタイマ値がLLQTより大きなソースを抽出する(ステップS720)。そして、抽出したソースをソースリストにまとめ、1つのIS_INタイプのReportメッセージを生成してルータ接続ポートから送信する(ステップS730)。
I/F部11Jのエントリは、INCLUDE(A)、LLQT以下の値を示すソースタイマ(A*C)であり、I/F部11LのエントリはINCLUDE(B)、LLQTよりも大きな値を示すソースタイマ(B)である。従って、ここでのQuery受信処理部15は、ソースリスト(B*C)は必要であるので、Report(IS_IN(B*C))メッセージを生成してルータ接続ポートから送信する。
また、Query受信処理部15は、各宛先I/Fからソースタイマ値LLQT以下のソースリストメンバを持つI/F部を抽出する。そして抽出したそれぞれのI/F部に対してSpecific Queryメッセージを中継する(ステップS740)。
ここでのQuery受信処理部15は、I/F部11Jのソースタイマ(A*C)がLLQT以下となっているため、I/F部11JにQueryメッセージの中継を行なう。I/F部11Lのソースタイマ(B)はLLQTより大きな値のため、I/F部11LへはQueryメッセージの中継を行なわない。
Query受信処理部15によって中継されたSpecific Queryメッセージは、レイヤ2スイッチ40に到着する。レイヤ2スイッチ40でもレイヤ2スイッチ10と同様な処理が行なわれる。ここでは、ソースタイマ(A*C)がLLQT以下であるI/F部11KにSpecific Queryメッセージを中継する。また、Specific Queryで指定されているソースリスト(C)の範囲は全てソースタイマ値がLLQT以下となっているため、レイヤ2スイッチ40ではルータ接続ポートへのReportメッセージの送信を行なわない。
このように、指定されたマルチキャストアドレスのエントリを持たないI/F部(レイヤ2スイッチ40のI/F部11J)や、全てのソースタイマ値がLLQTよりも大きなI/F部(レイヤ2スイッチ10のI/F部11L)にはSpecific Queryメッセージを中継しないこととなる。
また、Specific Queryメッセージを中継したI/F部11Kの先に受信者が存在しなければSpecific Queryメッセージに対してReportメッセージが応答されることはない。この場合、I/F部毎のマルチキャストテーブルのエントリのソースタイマが満了するのでソースリスト(A*C)を削除する。そして、受信グループ管理テーブルエントリの更新を行ない、ソースリストを(A−C)に更新する。これにより、レイヤ2スイッチ40ではソースリスト(A−C)以外のソースアドレスからのマルチキャストパケットの中継を停止する。
また、レイヤ2スイッチ10においても、Reportメッセージの未受信によってソースタイマがタイムアウトし、I/F部毎のマルチキャストテーブル(I/F部11Jのマルチキャストテーブル)のエントリからソースリスト(A*C)のソースを削除する。そして、受信グループ管理テーブルエントリの更新を行ない、ソースリストを(B+(A−C))に更新する。これにより、レイヤ2スイッチ10ではソースリスト(A*C)に対応するソースアドレスからのマルチキャストパケットの中継を停止する。
マルチキャストルータ30では、ソースリスト(C)に対するSpecific Queryへの応答としてIS_IN(B*C)のみを受信する。このため、ソースリスト(C−B)についてはソースタイマがタイムアウトし、ソースリストから削除される。これにより、ソースリスト(C−B)に対応するソースアドレスからのマルチキャストパケットの中継が停止する。
このように、INCLUDEモードの受信者が任意のソースをソースリストから削除するBLOCKタイプのReportメッセージを送信した場合には、その受信者を収容するI/F部へのマルチキャスト中継は停止するが、その他のI/F部へのマルチキャストの中継は継続することとなる。
また、BLOCKタイプのReportメッセージを上流側(マルチキャストルータ30側)に伝達する際に、BLOCKメッセージ内のソースリスト全体を対象として上流側へBLOCKメッセージを送信するので、レイヤ2スイッチが多段接続されている場合であってもマルチキャストルータ30から適切なソースリスト範囲を対象としたSpecific Queryメッセージが送信されることとなる。
なお、レイヤ2スイッチ40のI/F部11Kの先に受信者が存在し、Specific Queryメッセージに対してIS_IN(C)タイプのReportメッセージが応答された場合は、このメッセージがI/F部11Kで受信される。そして、このメッセージは、ルータモード受信部12Kに転送される。
ここで、ソースタイマ(A*C)がLLQT以下であるI/F部11KにSpecific Queryメッセージを中継した後に、ルータモード受信部12KがIS_IN(C)タイプのReportメッセージを受信した際の動作手順を図7を参照して説明する。
ルータモード受信部12Kは、I/F部11Kを介してIS_IN(C)タイプのReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13K内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13K内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS510、エントリあり)、ルータモード受信部12Kは、エントリ情報101,102に従って、新たなフィルタモードおよびソースリストの更新処理、Reportメッセージの送信処理を行なう(ステップS570)。
つぎに、Query受信処理部15は、受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Kの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
このとき、Query受信処理部15は、受信グループ管理テーブルのマルチキャストアドレスエントリの宛先I/Fのそれぞれに対し、I/F部毎のマルチキャストテーブルのマルチキャストアドレスエントリを確認する。ステップS570の処理でLLQT以下のソースタイマ値から、当該ソースタイマ値よりも大きな値に更新されたソースと同一のソースであって、かつマルチキャストアドレスエントリのソースタイマ値がLLQTより大きなソースを抽出する。そして抽出したソースをソースリストから削除したソースリストに対してReportメッセージを生成し、各ルータ接続ポートへ送信する(ステップS590)。ここでは、Query受信処理部15がReport(ALLOW(C))メッセージを生成し送信する。
このReport(ALLOW(C))メッセージは、レイヤ2スイッチ10により受信され、レイヤ2スイッチ10ではレイヤ2スイッチ40と同様な処理が行なわれる。これにより、ルータ接続ポートに対してReport(IS_IN(C−B))メッセージが送信される。マルチキャストルータ30は、レイヤ2スイッチ10からのReportメッセージを受信すると、ソースタイマをMALIに更新してマルチキャストの中継を継続する。
なお、本実施の形態では、受信者からのBLOCKタイプのReportメッセージを受信してソースタイマ値をLLQTとしたことを契機として、ルータ接続ポートへのBLOCKタイプのReportメッセージを送信する場合について説明したが、ソースタイマがエージングによりLLQT以下の値に更新されたことを契機としてルータ接続ポートへのBLOCKタイプのReportメッセージを送信してもよい。この場合も、レイヤ2スイッチ10,40は、前述したレイヤ2スイッチ10,40と同様の動作を行なう。
このように、実施の形態2によれば、ソースタイマ値の更新時に閾値(LLQT)を挟んだ変化が行なわれたか否かによってReportメッセージの送信要否を判定しているので、BLOCKメッセージを受信したセグメントに他の受信者が存在した場合であっても、少ないメッセージ交換によって確実な受信者確認が可能となる。したがって、効率良くマルチキャストの中継を継続することが可能となる。
また、BLOCKタイプのReportメッセージを上流側に伝達する際には、BLOCKメッセージ内のソースリスト全体を対象として上流側へBLOCKメッセージを送信するので、レイヤ2スイッチが多段接続されている場合であってもマルチキャストルータ30から適切なソースリスト範囲を対象としたSpecific Queryメッセージが送信される。したがって、下流側で漏れのない範囲のソースリストに対して端末装置の有無を確認することができ迅速なグループメンバ削除が可能となる。
実施の形態3.
つぎに、図7、図12〜図13を用いてこの発明の実施の形態3について説明する。実施の形態3では、受信者がEXCLUDEモード(除外要求モード)である場合に、Nullのメッセージを用いてEXCLUDEモードからINCLUDEモード(受信要求モード)への遷移を行なう。
図13は、実施の形態3の通信ネットワークのデータ中継を説明するための図である。図13の各構成要素のうち図1に示す実施の形態1の通信ネットワーク1と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
ここでは、レイヤ2スイッチ10がマルチキャストルータ30からのQueryメッセージ51を端末装置20J〜20Lへ中継し、端末装置20JからのReportメッセージ62をマルチキャストルータ30へ中継している場合を示している。また、ここではマルチキャストルータ30からのマルチキャストデータパケット63をレイヤ2スイッチ10が端末装置20Jに中継している場合を示している。
なお、以下では、通信ネットワーク1がマルチキャスト受信者としてIGMPv3または、MLDv2をサポートし、ソースアドレスも指定可能な端末装置20Jが存在するものとして説明する。
つぎに、実施の形態3に係るレイヤ2スイッチの動作手順について説明する。実施の形態1,2のレイヤ2スイッチ10,40と同様に、マルチキャストルータ30は定期的にGeneral Queryメッセージを送信し、レイヤ2スイッチ10はメッセージ中のインターバルタイマ値情報等を記憶し、受信メッセージを各I/F部に中継する。
本実施の形態では、通信ネットワーク1において、端末装置20Jが除外リストA、フィルタモードEXCLUDEとしてマルチキャストグループに参加する場合について説明する。
端末装置20Jは、マルチキャストルータ30からのGeneral Queryメッセージに対してReport(IS_EX(A))メッセージを応答する。このReportメッセージは、レイヤ2スイッチ10のI/F部11Jで受信され、I/F部11Jは受信したReportメッセージをルータモード受信部12Jに転送する。
ここで、Reportメッセージを受信した際のルータモード受信部の動作手順を図7を参照して説明する。ルータモード受信部12Jは、I/F部11Jを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13J内のマルチキャストテーブル(I/F部11Jのマルチキャストテーブル)からReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13J内のマルチキャストテーブルに、Reportメッセージのマルチキャストアドレスに該当するエントリが存在しない場合(ステップS510、エントリなし)、ルータモード受信部12Jは、Reportメッセージに対応するマルチキャストエントリ(I/F部毎のマルチキャストエントリ)をマルチキャストテーブルに生成する(ステップS520)。具体的には、Reportメッセージ中のフィルタモードおよびソースリストをマルチキャストエントリに設定する。ここでは、I/F部11Jが端末装置20Jから初めてReportメッセージを受信しているので、I/F部11J(端末装置20J)に対応するマルチキャストエントリ(ソースリストA、フィルタモードEXCLUDE)を生成する。
マルチキャストエントリを生成した後、ルータモード受信部12Jは、ソースタイマまたはフィルタタイマを起動する。ここでは、マルチキャストエントリにフィルタモードEXCLUDEを生成しているので、フィルタタイマを起動する。ここでのフィルタタイマは、フィルタタイマ初期値をMALIとし、時間の経過とともにタイマ値を減算していく(ステップS530)。
ルータモード受信部12Jは、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS540)。
受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在しない場合(ステップS540、エントリなし)、ルータモード受信部12Jは、受信グループ管理テーブルに新たなエントリを生成して登録する。具体的には、受信グループ管理テーブルに新たなマルチキャストアドレスと、Reportメッセージ中のフィルタモードおよびソースリストと、宛先I/F(I/F部11J)などを設定し、受信グループ管理テーブル記憶部14に記憶させる(ステップS550)。
ここでは、I/F部11Jが端末装置20Jから初めてReportメッセージを受信しているので、ルータモード受信部12Jは、受信グループ管理テーブルに新たなエントリを設定する。ここでの受信グループ管理テーブルへの追加エントリは、例えばEXCLUDE(Null,A)である。
Query受信処理部15は、新たに生成したエントリに基づいて、Reportメッセージを生成する。生成したReportメッセージは、I/F部16を介してルータ接続ポートへ送信する(ステップ560)。ここでのReportメッセージは、例えばReport(TO_EX(A))である。
ルータ接続ポートから送信されたReportメッセージはマルチキャストルータ30に到着する。マルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレスを宛先として、Reportメッセージで指定されたソースリストやフィルタモードで受信要求されているソースアドレスを持つマルチキャストパケットの中継を開始する。このとき、マルチキャストルータ30が管理するレコードはEXCLUDE(Null,A)となっている。
レイヤ2スイッチ10は、マルチキャストルータ30からのマルチキャストパケットをI/F部16により受信すると、Query受信処理部15が受信グループ管理テーブルを参照して宛先マルチキャストアドレスに対応するエントリを抽出する。そして、エントリ内の宛先I/Fに定義されたI/F部のうち、I/F部毎のマルチキャストテーブルのソースリストやフィルタモードで受信要求されているソースアドレスとマルチキャストパケットのソースアドレスとが合致するI/F部に、マルチキャストパケットを中継する。ここでは、I/F部毎のマルチキャストテーブルとして、I/F部11J(端末装置20J)に対応するマルチキャストエントリ(ソースリストA、フィルタモードEXCLUDE)が生成されている。したがって、EXCLUDE(A)エントリを持つI/F部11Jにマルチキャストパケットを中継する。
このように、ソース指定に対応したIGMPv3またはMLDv2においてEXCLUDEモード受信者が存在する場合であっても、I/F部11J以外のI/F部にはマルチキャストは中継されないので、マルチキャスト受信者の存在しないインタフェースに不要なトラヒックが中継されることはない。これにより、不要なトラヒックの中継を防ぐことができる。
つぎに、レイヤ2スイッチ10がマルチキャスト受信者に関する情報を設定した後、マルチキャストルータ30が質問間隔周期で送信するGeneral QueryをI/F部16で受信した際の動作について説明する。
I/F部16がGeneral Queryメッセージを受信すると、Query受信処理部15へメッセージを転送する。Query受信処理部15の処理は、実施の形態2の図8に示した動作手順と同様の手順によってReportメッセージの生成と送信、General Queryメッセージの中継を行なうので、その説明は省略する。
なお、本実施の形態では、ステップS620の処理において、Query受信処理部15が、Report(IS_EX(A))メッセージを生成し、マルチキャストルータ30に送信する。このとき、生成するReportメッセージパケットのソースアドレスは未定アドレスとしておく。
レイヤ2スイッチ10がルータ接続ポートに送信したReportメッセージを受信したマルチキャストルータ30は、Reportメッセージに含まれるマルチキャストアドレス、ソースリストおよびフィルタモードで指定されたマルチキャストの受信者の存在を確認し、マルチキャストの中継を継続する。
レイヤ2スイッチ10が各I/F部11J〜11Lに対してGeneral Queryメッセージを中継した結果、マルチキャスト受信者が存在すれば、中継されたGeneral Queryメッセージに対してマルチキャスト受信者からReportメッセージが返答される。
ここでは、I/F部11Jの先にマルチキャスト受信者である端末装置20Jが存在するので、中継されたGeneral Queryメッセージに対して端末装置20JからReportメッセージが返答される。この端末装置20JからのReportメッセージは、レイヤ2スイッチ10のI/F部11Jで受信され、ルータモード受信部12Jに転送される。
ここで、マルチキャストアドレスのエントリをマルチキャストテーブルに設定した後にルータモード受信部12JがReportメッセージを受信した際の動作手順を図7を参照して説明する。
ルータモード受信部12Jは、I/F部11Jを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13J内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13J内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS510、エントリあり)、ルータモード受信部12Jは、新たなフィルタモードおよびソースリストの更新処理を行なう。具体的には、エントリのフィルタモードおよびソースリストと、メッセージのフィルタモードおよびソースリストとに基づいて、新たなフィルタモードおよびソースリストを抽出し、新たなフィルタモードおよびソースリストとしてマルチキャストテーブルに登録する。そして、フィルタモードとソースリストとの組み合わせに応じた処理(例えば、Reportメッセージの送信処理など)を行なう。ここでのルータモード受信部12Jは、例えばエントリ情報101,102に基づいて、エントリの更新処理とルータ接続ポートからのメッセージ送信を行なう(ステップS570)。本実施の形態では、EXCLUDE(A)のエントリを持っているときに、IS_EX(A)を受信しているので、フィルタタイマをMALIに更新するのみである。
ルータモード受信部12Jが、I/F部毎のマルチキャストテーブルにおいてフィルタモードおよびソースリストの更新処理を行なった後、Query受信処理部15は受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Jの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
そして、Query受信処理部15は、Reportメッセージの送信が必要か否かを判断し、必要に応じてReportメッセージを生成する。Reportメッセージの送信要否の判定は、前述のステップS590と同様の処理によって行なう。
ここでは、エントリ内容に変更はなく、フィルタモードの変更やソースリストの変更もないため、ステップS590の処理でReportメッセージの送信を行なうことはない。受信者が継続的にマルチキャストに参加している状態では、上記の動作(図7,8に示した動作)が定期的に実行される。
つぎに、通信ネットワーク1にINCLUDEモードの受信者が追加された場合について説明する。ここでは、受信者として端末装置20Lが追加された場合について説明する。図13において、端末装置20Lもマルチキャストに参加するため、例えばReport(TO_IN(B))メッセージを送信したものとする。
ここでは、マルチキャストに参加するためのReportメッセージを受信した際のルータモード受信部12Lの動作手順を図7を参照して説明する。レイヤ2スイッチ10のI/F部11LはReportメッセージを受信し、ルータモード受信部12Lに受信したメッセージを中継する。
レイヤ2スイッチ10のルータモード受信部12Lは、I/F部11Lを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13L内のマルチキャストテーブル(I/F部11Lのマルチキャストテーブル)からReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13L内のマルチキャストテーブルに、Reportメッセージのマルチキャストアドレスに該当するエントリが存在しない場合(ステップS510、エントリなし)、ルータモード受信部12Lは、Reportメッセージに対応するマルチキャストエントリ(I/F部毎のマルチキャストエントリ)をマルチキャストテーブルに生成する(ステップS520)。具体的には、Reportメッセージ中のフィルタモードおよびソースリストをマルチキャストエントリに設定する。ここでは、I/F部11Lが端末装置20Lから初めてReportメッセージを受信しているので、I/F部11L(端末装置20L)に対応するマルチキャストエントリ(ソースリストA、フィルタモードINCLUDE)を生成する。
マルチキャストエントリを生成した後、ルータモード受信部12Lは、ソースタイマを起動する(ステップS530)。ここでのソースタイマは、ソースタイマ初期値をMALIとし、時間の経過とともにタイマ値を減算していく(ステップS530)。
ルータモード受信部12Lは、受信グループ管理テーブル記憶部14内の受信グループ管理テーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS540)。
ここでは、既に端末装置20Jのマルチキャストアドレスが受信グループ管理テーブルに登録されているので、受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在している。受信グループ管理テーブル記憶部14内の受信グループ管理テーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS540、エントリあり)、受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Lの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
そして、Query受信処理部15は、Reportメッセージの送信が必要か否かを判断し、必要に応じてReportメッセージを生成する。Reportメッセージの送信要否の判定は、前述のステップS590と同様の処理によって行なう。
ここでのレイヤ2スイッチ10は、受信グループ管理テーブルエントリとして、対象のマルチキャストアドレス、フィルタモードEXCLUDE、ソースリストNull、除外リストAのエントリを有している。したがって、I/F部11LからReport(TO_IN(B))メッセージを受信すると、I/F部11LのマルチキャストテーブルにINCLUDE(B)エントリを生成し、受信グループ管理エントリのソースリストを(B)に更新し、除外リストを(A−B)に更新して、宛先I/Fの情報にI/F部11Lを追加する。
さらに、ソースリスト(A*B)の範囲は新たに追加されたソースリストであるため、Query受信処理部15は、ソースリスト(A*B)についてALLOWタイプのReportメッセージを生成し、ルータ接続ポートへ送信する(ステップS590)。
このReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、ソースリスト(A*B)をソースリストに追加し、マルチキャスト管理レコードをEXCLUDE(B,A−B)に更新し、マルチキャスト管理レコード(ソースリスト)の範囲のマルチキャストの中継を開始する。
つぎに、受信者が明示的にBLOCKタイプのReportメッセージを送信して一部のソースリストを変更する場合の処理について説明する。例えば、端末装置20JはEXCLUDEモードで参加中のマルチキャストのソースリストからソースリストCを除外するため、BLOCK(C)を指定したReportメッセージを送信する。なお、ここでのソースリストCは除外リストAと重複しない範囲のソースリストとする。
レイヤ2スイッチ40のI/F部11Jは、端末装置20JからのReportメッセージを受信すると、ルータモード受信部12Jに転送する。ルータモード受信部12Jは、I/F部11Jのマルチキャストテーブルの対応エントリに対して、エントリ情報101,102に基づいた処理を行なう。ここでは、EXCLUDE(Null,A)状態でBLOCK(C)を受信するため、ソースリスト(C)のソースタイマをLLQTとして起動し、ルータ接続ポートからReport(BLOCK(C))を送信する。
レイヤ2スイッチ10のルータ接続ポートから送信されたReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、Reportメッセージ内で示されたマルチキャストグループアドレスのソースリスト(C)に対して、ソースタイマをLLQTに更新し、Multicast Address and Source Specific Queryメッセージを送信する。レイヤ2スイッチ10のI/F部16では、マルチキャストルータ30からのSpecific Queryメッセージを受信すると、Query受信処理部15へ送信する。
ここで、Query受信処理部15がSpecific Queryメッセージを受信した際の処理について図12を参照して説明する。なお、ここでのステップS700〜S720の処理は実施の形態2の処理と同様の処理であるため、その説明は省略する。
本実施の形態では、I/F部11JのエントリがEXCLUDE(A)、ソースタイマ(C)<LLQTであり、I/F部11LのエントリがINCLUDE(B)、ソースタイマ(B)>LLQTである。従って、Query受信処理部15は、Report(IS_IN(B*C))メッセージを生成してルータ接続ポートから送信する(ステップS730)。
また、Query受信処理部15は、I/F部11Jのソースタイマ(C)がLLQT以下となっているため、I/F部11JにSpecific Queryメッセージの中継を行なう。また、Query受信処理部15は、I/F部11Lのソースタイマ(B)はLLQTより大きな値のため、Queryメッセージの中継は行なわない(ステップS740)。
このように、指定されたマルチキャストアドレスのエントリを持たないI/F部や、全てのソースタイマ値がLLQTよりも大きなI/F部にはSpecific Queryメッセージを中継しないこととなり、制御メッセージの交換を低減させることが可能となる。
また、Specific Queryメッセージを中継したI/F部11Jの先に対象ソースを要求する受信者が存在しなければSpecific Queryメッセージに対してReportメッセージが応答されることはない。この場合、I/F部毎のマルチキャストテーブルのエントリに含まれるソースタイマが満了するので、ソースリスト(C)を削除して除外リストに追加する。そして、I/F部11JのエントリはEXCLUDE(Null,A+C)となる。また、Query受信処理部15は、受信グループ管理テーブルエントリの更新を行ない、ソースリストを(B−C)に、除外リストを(A+C−B)に更新する。これにより、レイヤ2スイッチ10では、新たに除外対象となったソース(C−A−B)からのマルチキャストパケットの中継を停止する。
マルチキャストルータ30では、ソースリスト(C)に対するSpecific Queryへの応答としてReport(IS_IN(B*C))メッセージのみを受信する。このため、ソースリスト(C−B)についてはソースタイマがタイムアウトし、ソースリストから削除する。これにより、マルチキャストルータ30では、ソースリスト(C−B)に対応するソースアドレスからのマルチキャストパケットの中継を停止する。
このように、EXCLUDEモードの受信者が任意のソースを除外リストに追加するBLOCKタイプのReportメッセージを送信した場合には、その受信者を収容するI/F部へのマルチキャスト中継は停止するが、その他のI/F部へのマルチキャストの中継は継続することとなる。
また、BLOCKタイプのReportメッセージを上流側に伝達する際に、BLOCKメッセージ内のソースリスト全体を対象として上流側へBLOCKメッセージを送信するので、レイヤ2スイッチが多段接続されている場合であってもマルチキャストルータ30から適切なソースリスト範囲を対象としたSpecific Queryメッセージが送信される。これにより、下流側で漏れのない範囲のソースリストに対して受信者の有無の確認が可能となり、迅速なグループメンバ削除が可能となる。
なお、レイヤ2スイッチ10のI/F部11Jの先に受信者が存在し、Specific Queryメッセージに対してIS_IN(C)タイプのReportメッセージが応答された場合は、このメッセージがI/F部11Jで受信される。そして、このメッセージはルータモード受信部12Jに転送される。
ここで、ソースタイマ(C)がLLQT以下であるI/F部11JにSpecific Queryメッセージを中継した後に、ルータモード受信部12JがReportメッセージを受信した際の動作手順を図7を参照して説明する。
ルータモード受信部12Kは、I/F部11Kを介してReportメッセージを受信すると(ステップS500)、マルチキャストテーブル記憶部13K内のマルチキャストテーブルからReportメッセージに含まれるマルチキャストアドレスを検索する(ステップS510)。
マルチキャストテーブル記憶部13K内のマルチキャストテーブルにマルチキャストアドレスに該当するエントリが存在する場合(ステップS510、エントリあり)、ルータモード受信部12Kは、エントリ情報101,102に従って、新たなフィルタモードおよびソースリストの更新処理、Reportメッセージの送信処理を行なう(ステップS570)。
つぎに、Query受信処理部15は、受信グループ管理テーブルのマルチキャストアドレスエントリの更新を行なう(ステップS580)。具体的には、I/F部11Jの更新エントリ内容と他のI/F部のエントリ内容に基づいて、ソースリスト、フィルタモード、宛先I/Fの情報を再計算する。
このとき、Query受信処理部15は、受信グループ管理テーブルのマルチキャストアドレスエントリの宛先I/Fのそれぞれに対し、I/F部毎のマルチキャストテーブルのマルチキャストエントリを確認する。ステップS570の処理でLLQT以下のソースタイマ値からさらに大きな値に更新されたソースと同一のソースであって、かつマルチキャストアドレスエントリのソースタイマ値がLLQTより大きなソースを抽出する。そして抽出したソースをソースリストから削除したソースリストに対してReportメッセージを生成し、各ルータ接続ポートへ送信する。ここでは、I/F部11Lのソースタイマ(B)がLLQTより大きな値となっているので、Report(IS_IN(C−B))メッセージを生成し送信する。マルチキャストルータ30は、レイヤ2スイッチ10からのReportメッセージを受信すると、ソースタイマをMALIに更新してマルチキャストの中継を継続する。
このように、ソースタイマ値の更新時に閾値(LLQT)を挟んだ変化が行なわれたか否かによってReportメッセージの送信要否を判定しているので、BLOCKメッセージを送信したセグメントに他の受信者が存在した場合であっても、少ないメッセージ交換によって確実な受信者確認が可能となる。したがって、効率良くマルチキャストの中継を継続することが可能となる。
つぎに、受信者がEXCLUDEモードからINCLUDEモードへ変更する場合の動作について説明する。ここでは、端末装置20JがEXCLUDEモードで参加中のマルチキャストからソースリストCを指定したINCLUDEモードに遷移するため(ソースリストを変更するため)に、TO_IN(C)を指定したReportメッセージを送信した場合について説明する。
レイヤ2スイッチ10のI/F部11Jは、TO_IN(C)を指定したReportメッセージを受信すると、I/F部毎のマルチキャストテーブルの対応エントリに対してエントリ情報101,102に基づいた処理を行なう。
本実施の形態では、EXCLUDE(Null,A)の状態でTO_IN(C)を受信するので(図9の「008」)、I/F部11Jは、EXCLUDE(C,A−C)状態に遷移する。また、ソースリスト(C)のソースタイマをMALIとして起動し、フィルタタイマをLLQTに更新する。さらに、ルータ接続ポートであるI/F部16からReport(TO_IN({}))を送信する。なお、I/F部11JのEXCLUDEモードのエントリでは要求リストがNullであることから、BLOCKタイプのReportメッセージは内容が空となる。このため、Reportメッセージの送信は行なわない。
ルータ接続ポートから送信されたReportメッセージは、マルチキャストルータ30に到着する。マルチキャストルータ30は、EXCLUDEモードのレコードを更新し、要求リスト(B+C)のソースタイマをLLQTに更新してMulticast Address and Source Specific Queryメッセージ(第1のQueryメッセージ)を送信する。また、マルチキャストルータ30は、フィルタタイマをLLQTに更新してMulticast Address Specific Queryメッセージ(第2のQueryメッセージ)を送信する。
ここで、Query受信処理部15がSpecific Queryメッセージを受信した際の処理について図12を参照して説明する。なお、ここでのステップS700〜S720の処理は実施の形態2の処理と同様の処理であるため、その説明は省略する。
本実施の形態では、I/F部11JのエントリがEXCLUDE(A−C)、ソースタイマ(C)>LLQTであり、I/F部11LのエントリがINCLUDE(B)、ソースタイマ(B)>LLQTである。従って、Query受信処理部15は、Report(IS_IN(B+C))メッセージを生成してルータ接続ポートから送信する(ステップS730)。
また、Query受信処理部15は、I/F部11JにLLQT以下のソースタイマが存在しないので、第1のQueryメッセージを中継しない(ステップS740)。I/F部16は、第1のQueryメッセージに続いて第2のQueryメッセージを受信し、Query受信処理部15へ転送する。
ここで、Query受信処理部15がMulticast Address Specific Queryメッセージを受信した場合の動作について説明する。図14は、Query受信部がMulticast Address Specific Queryメッセージを受信した際の動作手順を示すフローチャートである。
図14では、レイヤ2スイッチ10がIGMPv3やMLDv2などのソース指定可能なグループメンバシップ管理プロトコルのソース指定を伴わないSpecific Queryメッセージを受信した場合の動作を示している。
Query受信処理部15は、I/F部16を介してMulticast Address Specific Queryメッセージ(第2のQueryメッセージ)を受信すると(ステップS800)、受信グループ管理テーブルにSpecific Queryメッセージで指示されたマルチキャストグループアドレスに対応するマルチキャストアドレスエントリが存在するか否かを確認する(ステップS810)。
指示されたマルチキャストアドレスのエントリが存在する場合(ステップS810、エントリあり)、Query受信処理部15は、エントリの宛先I/FのそれぞれについてI/F部毎のマルチキャストエントリを確認する。そして、フィルタタイマ値がLLQT以下のI/F部を除いた各I/F部のエントリを集約して1つのReportメッセージを生成し、ルータ接続ポートから送信する(ステップS820)。
本実施の形態では、I/F部11JのエントリがEXCLUDE(A−C)、フィルタタイマ<LLQTであり、I/F部11LのエントリがINCLUDE(B)である。従って、Query受信処理部15は、Report(IS_IN(B))メッセージを生成してルータ接続ポートから送信する。
また、Query受信処理部15は、宛先I/FとなっているI/F部のうち、ソースタイマ値がLLQT以下のソースリストメンバを持つ各I/F部、またはフィルタタイマ値がLLQT以下のEXCLUDEモードエントリを持つ各I/F部(メンバ)対して、第2のQueryメッセージを中継する(ステップS830)。
ここでは、I/F部11JのエントリがEXCLUDE(A−C)、フィルタタイマ<LLQTであり、I/F部11LのエントリがINCLUDE(B)、ソースタイマ(B)>LLQTである。従って、Query受信処理部15は、I/F部11Jにのみ第2のQueryメッセージを中継する。
このように、指定されたマルチキャストアドレスのエントリを持たないI/F部や、全てのソースタイマ値がLLQTよりも大きなI/F部にはSpecific Queryメッセージを中継しないこととなるので、メッセージ交換手順を削減することが可能となる。
これにより、レイヤ2スイッチ10のI/F部11Jは第2のQueryメッセージを送信し、端末装置20Jは第2のQueryメッセージに対してReport(IS_IN(C))メッセージを応答する。
なお、レイヤ2スイッチ10が送信する各Reportメッセージは、Queryメッセージに対する応答として送信しているため、LLQTよりも小さな送信待ち遅延時間を用意し、その時間内に発生したReport送信要求を1つのReportメッセージに集約して送信してもよい。
I/F部11Jは、端末装置20JからのReport(IS_IN(C))メッセージを受信すると、I/F部毎のマルチキャストテーブルの対応エントリに対して、エントリ情報101,102に基づいた処理を行なう。
ここでは、EXCLUDE(C、A−C)状態でIS_IN(C)を受信するため、ソースリスト(C)のソースタイマをMALIに更新するのみである(図10の010)。この後、フィルタタイマは満了するため、I/F部11JのエントリはINCLUDE(C)に遷移する。また、受信グループ管理テーブルエントリはINCLUDE(B+C)に更新する。
これにより、マルチキャストルータ30ではQueryメッセージの送信に対してReport(IS_IN(B+C))メッセージを受信するのみである。この結果、マルチキャストルータ30ではフィルタタイマが満了し、管理レコードはINCLUDE(B+C)に遷移する。
このように実施の形態3によれば、フィルタタイマがLLQT以下に更新する際に、NullのTO_INタイプのReportメッセージを送信することでマルチキャストルータ30からのMulticast Address Speicific Queryメッセージの送信を促すことができ、このQueryメッセージを中継することで受信者の存在確認を迅速に行なうことが可能となる。これにより、EXCLUDEモードからINCLUDEモードへの遷移を確実かつ迅速に行なうことが可能となる。
また、マルチキャストルータ30から送信されるQueryメッセージを用いて受信者の存在確認を行なうので、受信者によってQueryメッセージパケットが廃棄されることがない。さらに、レイヤ2スイッチ10の使用するIPアドレスをQuerier選出プロセスと関連付けることなく割り当てることができるのでマルチキャストルータ30はアドレス管理を容易に行なうことが可能となる。
また、Specific Queryメッセージの受信時にソースタイマ、フィルタタイマの値に応じた応答メッセージの内容を生成し、中継先のI/F部の選別を行なっているので、少ないメッセージ交換手順でメッセージ交換を行うことが可能となる。
実施の形態4.
つぎに、図15および図16を用いてこの発明の実施の形態4について説明する。実施の形態4ではネットワークトポロジの変化を検出すると、送信元リスト(受信要求の対象)を空としたTO_INタイプのReportメッセージをルータ接続ポートに送信して、マルチキャスト中継ツリーの再構成を迅速に行なう。
図15は、本発明の実施の形態4に係るレイヤ2スイッチを有した通信ネットワークの構成を示す図である。図15の各構成要素のうち図1や図6に示す実施の形態1,2の通信ネットワーク1,2と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
通信ネットワーク3は、マルチキャストルータ30、レイヤ2スイッチ10、レイヤ2スイッチ41,42、端末装置20P〜20Sを備えている。マルチキャストルータ30は、レイヤ2スイッチ10に接続し、レイヤ2スイッチ10はレイヤ2スイッチ41,42に接続している。また、レイヤ2スイッチ41は、端末装置20Pと端末装置20Qに接続し、レイヤ2スイッチ42は、端末装置20Rと端末装置20Sに接続している。
レイヤ2スイッチ41,42は、レイヤ2スイッチ40(レイヤ2スイッチ10)と同様のスイッチである。また、端末装置20P〜20Sは、端末装置20J〜20Lと同様の端末装置である。
レイヤ2スイッチ41とレイヤ2スイッチ42は接続されてループ経路を形成しているが、リンク障害が発生していない状態ではレイヤ2スイッチ41とレイヤ2スイッチ42との間の経路がブロッキングされている。これにより、リンク障害が発生していない状態では、レイヤ2スイッチ42と43の間のパケットの中継を遮断している
通信ネットワーク3では、レイヤ2スイッチ41が端末装置20PからのReportメッセージ54をレイヤ2スイッチ10へ中継し、レイヤ2スイッチ42が端末装置20R,20SからのReportメッセージ54をレイヤ2スイッチ10へ中継している。そして、レイヤ2スイッチ10がReportメッセージ54をマルチキャストルータ30へ中継している。
また、レイヤ2スイッチ10がマルチキャストルータ30からのQueryメッセージ51をレイヤ2スイッチ41,42へ中継している。そして、レイヤ2スイッチ41がレイヤ2スイッチ10からのQueryメッセージ51を端末装置20P,20Qに中継し、レイヤ2スイッチ42がレイヤ2スイッチ10からのQueryメッセージ51を端末装置20R,20Sに中継している。
つぎに、実施の形態4に係るレイヤ2スイッチの動作手順について説明する。通信ネットワーク3において、レイヤ2スイッチ10,41,42は、物理的なループを構成しているので、論理的なツリートポロジを構成してパケットの無限周回を防ぐ構成制御機構を動作させているものとする。例えば、レイヤ2スイッチ10,41,42では、IEEE802.1D Spanning Tree Protocol等によって構成制御機構を動作させている。
端末装置のうち、端末装置20P,20R,20SがIGMPやMLDなどのマルチキャストグループメンバシップ管理プロトコルによってマルチキャストグループに参加し、マルチキャストルータ30からのマルチキャストデータパケットを受信しているものとする。レイヤ2スイッチ10,41,42は、それぞれスヌーピング動作を行なっており、I/F部毎のマルチキャストテーブル、受信グループ管理テーブルを有している。
レイヤ2スイッチ41とレイヤ2スイッチ42の間のリンクに障害が発生すると、構成制御機構によってレイヤ2スイッチ41とレイヤ2スイッチ42の間のリンクがブロッキング解除される。
ここで、レイヤ2スイッチ41とレイヤ2スイッチ42の間のリンクに障害が発生した場合のデータ中継について説明する。図16は、図15に示した実施の形態4に係る通信ネットワークがリンク障害発生した場合のデータ中継を説明するための図である。
ブロッキング解除されると、通信ネットワーク3では、レイヤ2スイッチ41が端末装置20PからのReportメッセージ56をレイヤ2スイッチ10へ中継している。また、レイヤ2スイッチ42が端末装置20R,20SからのReportメッセージ54をレイヤ2スイッチ41に中継し、レイヤ2スイッチ41がレイヤ2スイッチ42からのReportメッセージ54をレイヤ2スイッチ10へ中継している。そして、レイヤ2スイッチ10がReportメッセージ56をマルチキャストルータ30へ中継している。
また、レイヤ2スイッチ10がマルチキャストルータ30からのQueryメッセージ55をレイヤ2スイッチ41へ中継している。そして、レイヤ2スイッチ41がレイヤ2スイッチ10からのQueryメッセージ(Multicast Address Specific Queryメッセージ)55を端末装置20P、レイヤ2スイッチ42に中継し、レイヤ2スイッチ42がレイヤ2スイッチ10からのQueryメッセージ55を端末装置20R,20Sに中継している。
つぎに、実施の形態4に係る通信ネットワークの動作手順について説明する。各レイヤ2スイッチ10,41,42は、構成制御機構によるネットワークトポロジの変化を検出すると、送信元リストを空としたTO_INタイプのReportメッセージをルータ接続ポートに送信する。また、このとき各レイヤ2スイッチ10,41,42は、最大応答待ち時間のタイマ(ネットワークトポロジ変化からLLQT時間経過するまでを計測するタイマ)を起動するとともに、エントリタイマ、ソースタイマ、フィルタタイマをLLQTに短縮する。
このとき、各レイヤ2スイッチ10,41,42の送信するReportメッセージが多数マルチキャストルータ30に到着しないように、タイマを設けてReportメッセージの送信数を制限してもよい。
マルチキャストルータ30は、Reportメッセージを受信すると、Multicast Address Speicific Queryメッセージを送信する。レイヤ2スイッチ10は、マルチキャストルータ30からのQueryメッセージを受信した際に、先述のタイマが起動中であれば(タイマ値が満了するまでの間)、全ポート(ここではレイヤ2スイッチ41)にQueryメッセージを中継する。
レイヤ2スイッチ41は、レイヤ2スイッチ10からのQueryメッセージを受信し、レイヤ2スイッチ10と同様に全ポート(ここでは端末装置20P、レイヤ2スイッチ42)に中継する。
レイヤ2スイッチ42は、ブロッキングが解除されたポートからレイヤ2スイッチ41からのQueryメッセージを受信し、ルータ接続ポートとして学習する。そして、レイヤ2スイッチ42は、レイヤ2スイッチ41と同様に全ポート(ここでは端末装置20R,20S)にQueryメッセージを中継する。
各受信者はこれらのQueryメッセージを受信するとReportメッセージを応答する。これにより、各レイヤ2スイッチ10,41,42はI/F部毎のマルチキャストテーブルの内容を更新する。また、各種タイマ値がLLQT以下の値からMALIへ更新されるため、ルータ接続ポートへReportメッセージを送信する。これにより、通信ネットワーク3ではトポロジ変化後のマルチキャストツリーが再構築される。
このように、ネットワークトポロジの変化を検出した際に、各種タイマ値をLLQTに短縮し、ネットワークトポロジ変化からLLQT時間経過するまでを計測するタイマを起動している。そして、Report(TO_IN({}))メッセージを送信してルータからのMulticast Address Speicific Queryメッセージ送信を促し、タイマ起動中に受信したMulticast Address Speicific Queryメッセージは全ポートに中継しているので、受信端末の存在を迅速に確認することが可能となる。
このように、実施の形態4によれば、ネットワークトポロジの変化を検出すると、送信元リストを空としたTO_INタイプのReportメッセージをマルチキャストルータ30に送信しているのでネットワークトポロジ変化後のマルチキャスト中継ツリー再構成を迅速に行なうことが可能となる。
また、予めマルチキャストルータ30の接続する上流インタフェースとマルチキャスト受信端末が接続する下流インタフェースを登録しておく必要がなく、任意のトポロジで各インタフェースを利用可能である。
さらに、受信者情報を収集するためにレイヤ2スイッチ自身がQueryメッセージを生成することなく、マルチキャストルータ30からのQueryメッセージの送信を促すよう、Reportメッセージを送信するのみであるため、端末装置が受信処理を行なうことが保障されていない未定アドレスを使う必要もない。これにより、Query送信者選出プロセスに参加しないようレイヤ2スイッチのアドレス管理を行なう必要もないのでアドレス管理を容易に行なうことが可能となる。