[第1の実施の形態]
〔通信システム〕
図1に示すように、通信システム1は、送信端末10と、複数のUMPルータ(UMP Router、以下「UR」と表す)20a〜20cと、複数の非UMPルータ(Non−UMP Router、以下「NR」と表す)30a〜30cと、複数の受信端末40a〜40cとを備える。送信端末10には送信端末アドレス「S」が付与されている。受信端末40a,40b,40cにはそれぞれアドレス「R1」、「R2」、「R3」が付与されている。UR20a,20b,20cにはそれぞれアドレス「UR2」、「UR3」、「UR4」が付与されている。NR30a,30b,30cにはそれぞれアドレス「NR1」、「NR5」、「NR6」が付与されている。尚、通信システム1では、IPv6を用いるが、IPv4を用いてもよい。
送信端末10は、端末転送先アドレスにマルチキャストパケットを転送する。受信端末40a〜40cは、マルチキャストパケットを受信する。UR20a〜20c及びNR30a〜30cは、送信端末10と受信端末40a〜40cとの間に設定されたマルチキャストパケットの転送経路(以下、「マルチキャストツリー」という)に従って、ルータ転送先アドレスにマルチキャストパケットを転送する。受信端末40a〜40cとUR20c、NR30b、NR30cは無線通信を行う。送信端末10、UR20a〜20c、受信端末40a〜40cは、マルチキャストツリーを設定する。UR20a〜20cは、複数のルータ転送先アドレスにマルチキャストパケットを転送する分岐ルータになることができる。
(URの構成)
まず、URの構成についてUR20aを例にとって説明する。図2(a)に示すように、UR20aは、エントリ保持部21aと、受信部22と、転送部23と、データ処理部24と、メッセージ処理部25と、メッセージ生成部26とを備える。尚、UR20b,20cもUR20aと同様の構成を備える。
受信部22は、送信端末10、他のURやNR、受信端末40a〜40cから、マルチキャストパケットや、制御メッセージを受信する。マルチキャストパケットには送信端末10からのデータが含まれる。又、マルチキャストパケットは、送信端末と分岐ルータとの間、分岐ルータ間はカプセル化されて転送される。制御メッセージは、マルチキャストツリーの設定や維持、変更等、マルチキャストツリーの制御に関するメッセージである。制御メッセージには、Joinメッセージ、Membership Report、Stableオプションが設定されたJoinメッセージ(以下「Stable Joinメッセージ」という)、Stableオプションが設定されたMembership Report(以下「Stable Membership Report」という)、Pruneメッセージ、Leave Groupメッセージ、Redirectメッセージ、Binding Updateメッセージ(以下「BUメッセージ」と表す)、Location Updateメッセージ(以下「LUメッセージ」と表す)等がある。Joinメッセージ、Stable Joinメッセージ、Pruneメッセージ、Redirectメッセージのヘッダには、制御メッセージであることを示す特別なオプションが設定される。
JoinメッセージやMembership Reportは、マルチキャストパケットの送信を要求する参加要求メッセージである。マルチキャストツリーには、初期状態と安定状態がある。既にそのマルチキャストパケットについてマルチキャストツリーが設定されている場合には、JoinメッセージやMembership Reportは、マルチキャストツリーの初期状態において送信されるマルチキャストツリーを維持するための維持要求メッセージとなる。Stable JoinメッセージやStable Membership Reportは、マルチキャストツリーが安定状態に移行した後に送信されるマルチキャストツリーを維持するための維持要求メッセージである。PruneメッセージやLeave Groupメッセージは、マルチキャストツリーからの離脱を要求する離脱要求メッセージである。Joinメッセージ、Pruneメッセージは、UR20a〜20cや受信端末40a〜40cが送信する。Membership Report、Leave Groupメッセージは、受信端末40a〜40cが送信する。
Redirectメッセージは、JoinメッセージとPruneメッセージを含む参加/離脱要求メッセージである。具体的には、Ridirectメッセージは、ルータ転送先アドレスや端末転送先アドレスへの追加を要求するアドレスと、ルータ転送先アドレスや端末転送先アドレスからの削除を要求するアドレスを含む。
BUメッセージは、送信端末アドレスが変更された場合に、端末転送先アドレスに送信端末アドレスの変更を通知する転送先更新メッセージである。LUメッセージは、送信端末アドレスが変更された場合に、受信端末に変更後の送信端末アドレスを通知する位置更新メッセージである。例えば、LUメッセージは、送信端末10の移動等により送信端末アドレスが変更された場合に、変更前の送信端末アドレスと変更後の送信端末アドレスとを対応付けて通知し、受信端末に対して移動を通知する。送信端末は、LUメッセージを、LUメッセージ単独で送信してもよく、マルチキャストパケットに付加して転送してもよい。
受信部22は、ヘッダのオプションに基づいてマルチキャストパケットであるか制御メッセージであるかを判断する。更に、受信部22は、カプセル化されたマルチキャストパケットの宛先アドレスが、UR20a自身のアドレスと一致するか否かを判断する。受信部22は、一致するときは、UR20aが分岐ルータである場合であるため、マルチキャストパケットをデータ処理部24に入力する。受信部22は、これらの条件に一致しない場合には転送部23に入力する。受信部22は、制御メッセージを受信した場合には、その制御メッセージをメッセージ処理部25に入力する。
転送部23は、送信端末10、他のURやNR、受信端末40a〜40cに制御メッセージを送信する。転送部23は、他のURやNR、受信端末40a〜40cにマルチキャストパケットを転送する。転送部23は、受信部22やデータ処理部24からマルチキャストパケットを取得する。転送部23は、メッセージ処理部25やメッセージ生成部26から制御メッセージを取得する。
エントリ保持部21aは、ルータ転送先アドレスを保持するルータ保持手段である。図2(b)に示すように、エントリ保持部21aは、テーブル種別、送信端末アドレス、マルチキャストグループアドレス、トンネル元アドレス、前トンネル元アドレスに対応付けて、ルータ転送先アドレス、KAT(Keep Alive Timer)、JT(Join Timer)を保持する。
テーブル種別には、マルチキャスト制御テーブル(Multicast Control Table、以下「MCT」と表す)と、マルチキャスト送信テーブル(Multicast Forwarding Table、以下「MFT」と表す)がある。MCTは、マルチキャストツリーを設定するために用いる情報を保持する。MFTは、マルチキャストツリーの設定及びマルチキャストパケットの転送に用いる情報を保持する。
送信端末アドレスは、送信端末10の移動等により変更される場合がある。そのため、エントリ保持部21aは、送信端末10の現在位置における現在の送信端末アドレスのMCTエントリやMFTエントリと、変更前の送信端末アドレスのMCTエントリやMFTエントリを保持できる。
マルチキャストグループアドレスは、マルチキャストグループを示すアドレスである。マルチキャストツリーや、マルチキャストパケットは、送信端末アドレスとマルチキャストグループアドレスとの組み合わせによって、どの送信端末10からのどのマルチキャストグループに関するものであるかを特定できる。送信端末10がマルチキャストパケットを転送するマルチキャストグループには、マルチキャストグループアドレス「G」が付与されている。
ルータ転送先アドレスは、URのマルチキャストパケットの転送先を示すアドレスである。トンネル元アドレスは、URが受信したマルチキャストパケットのカプセル化に用いられている送信元アドレスである。そのため、例えば、図1においてUR20aが分岐ルータの場合、UR20aのエントリ保持部21aに登録されるトンネル元アドレスは、送信端末アドレス「S」となる。前トンネル元アドレスは、トンネル元アドレスが変更した場合の変更前のトンネル元アドレスである。
KATは、ルータ転送先アドレスや端末転送先アドレスの保持時間を計測するタイマ値である。KATは、ルータ転送先アドレスと対応付けて保持する。図2(b)において、KAT(UR3)は、ルータ転送先アドレス「UR3」のKAT、KAT(R3)は、ルータ転送先アドレス「R3」のKATを示す。KATが満了したルータ転送先アドレスは、エントリ保持部21aから削除される。JTは、Joinメッセージの送信開始までの時間を計測するタイマ値である。JTの満了によりJoinメッセージが送信される。JTは、送信端末アドレス、マルチキャストグループアドレスに対応付けて保持する。テーブル種別がMCTの場合、トンネル元アドレス、前トンネル元アドレス、JTを保持する必要はない。
データ処理部24は、マルチキャストパケットを処理する。具体的には、データ処理部24は、受信部22からカプセル化されたマルチキャストパケットを取得し、ディカプセル化してマルチキャストパケットを取り出す。データ処理部24は、エントリ保持部21aから、マルチキャストパケットに含まれる送信端末アドレスとマルチキャストグループアドレスに対応付けられているルータ転送先アドレスを取得する。
データ処理部24は、エントリ保持部21aを参照し、マルチキャストパケットがルータ転送先アドレスの数になるように、マルチキャストパケットを複製する。データ処理部24は、取得したルータ転送先アドレスを宛先アドレスに設定し、UR20a自身のアドレスを送信元アドレスに設定して、マルチキャストパケットをカプセル化する。データ処理部24は、カプセル化したマルチキャストパケットを転送部23に入力する。データ処理部24は、例えば、「IP in IP Tunneling」(RFC1853)や、「Generic Packet Tunneling in Ipv6 Specification」(RFC2473)に示されているカプセル化技術を用いてカプセル化を行うことができる。
メッセージ処理部25は、制御メッセージを処理する。メッセージ処理部25は、受信部22からUR20aが受信した制御メッセージを取得する。メッセージ処理部25は、制御メッセージの種類、制御メッセージの宛先アドレスや送信元アドレス、エントリ保持部21aが保持する情報に基づいて、エントリ保持部21aへの情報の登録、エントリ保持部21aが保持する情報の更新や削除を行う。メッセージ処理部25は、新たなルータ転送先アドレスを登録する場合、MFTエントリ又はMCTエントリを作成する。具体的には、メッセージ処理部25は、エントリ保持部21aのテーブル種別にMFT又はMCTを設定し、送信端末アドレス、マルチキャストグループアドレス毎にMFTエントリ又はMCTエントリを作成する。例えば、メッセージ処理部25は、UR20aが新たに受信したJoinメッセージにより指定されている送信端末アドレス、マルチキャストグループアドレス毎にMFTエントリ又はMCTエントリを作成する。このように作成されたMFTエントリやMCTエントリは、MFTやMCTとして機能する。
メッセージ処理部25は、作成したMFTエントリに、送信端末アドレス、マルチキャストグループアドレス、トンネル元アドレス、前トンネル元アドレス、ルータ転送先アドレス、KAT、JTを対応付けて登録する。メッセージ処理部25は、作成したMCTエントリに、送信端末アドレス、マルチキャストグループアドレス、ルータ転送先アドレス、KATを対応付けて登録する。
又、メッセージ処理部25は、送信端末アドレスをマルチキャストツリーの上流としたときに、ルータが分岐ルータになるかを判断する判断手段として機能する。メッセージ処理部25は、制御メッセージ及びエントリ保持部21aが保持するルータ転送先アドレスに基づいて判断を行う。更に、メッセージ処理部25は、分岐ルータになると判断した場合、ルータ保持手段に送信端末アドレスに対応付けて、複数のルータ転送先アドレスを登録するルータ登録手段としても機能する。具体的には、メッセージ処理部25は、UR20aが分岐ルータになると判断した場合、エントリ保持部21aにMFTエントリを作成して、ルータ転送先アドレスを登録する。
又、メッセージ処理部25は、ルータ20aよりも下流の分岐ルータからの参加/離脱メッセージであるRedirectメッセージに基づいて、下流の分岐ルータのルータ転送先アドレスをエントリ保持部21aから削除し、下流の分岐ルータのアドレスをエントリ保持部21aに登録する。尚、メッセージ処理部25は、UR20aが分岐ルータになると判断した場合に加えて、UR20aが受信端末40a〜40cと接続する末端ルータとなる場合にも、MFTエントリを作成してルータ転送先アドレスを登録する。メッセージ処理部25は、UR20aが分岐ルータ又は末端ルータとなる場合以外は、MCTエントリを作成してルータ転送先アドレスを登録する。
又、メッセージ処理部25は、UR20aが分岐ルータになるか否かに基づいて、受信した制御メッセージをそのまま送信するか、受信した制御メッセージに基づいて新たに制御メッセージを生成して送信するかを判断する。メッセージ処理部25は、分岐ルータにならない場合にはそのまま送信すると判断し、受信した制御メッセージを転送部23に入力する。メッセージ処理部25は、分岐ルータになる場合には新たに生成すると判断し、受信した制御メッセージをメッセージ生成部26に入力する。
メッセージ生成部26は、制御メッセージを生成する。メッセージ生成部26は、メッセージ処理部25から取得するUR20aが受信した制御メッセージ、エントリ保持部21aが保持する情報に基づいて、制御メッセージを生成する。メッセージ生成部26は、生成した制御メッセージを転送部23に入力する。
(送信端末の構成)
次に、送信端末10の構成について説明する。図3(a)に示すように、送信端末10は、エントリ保持部11と、受信部12と、送信部13と、メッセージ処理部14と、パケット生成部15とを備える。
受信部12は、UR20a〜20cやNR30a〜30c、受信端末40a〜40cから、制御メッセージを受信する。受信部12は、受信した制御メッセージをメッセージ処理部14に入力する。
エントリ保持部11は、端末転送先アドレスを保持する送信端末保持手段である。図3(b)に示すように、エントリ保持部11は、テーブル種別、送信端末アドレス、マルチキャストグループアドレスに対応付けて、端末転送先アドレス、KATを保持する。送信端末10は、MFT以外用いないため、テーブル種別には「MFT」が設定される。端末転送先アドレスは、送信端末10がマルチキャストパケットを転送する転送先アドレスである。送信端末10が保持する端末転送先アドレスは、分岐ルータ、末端ルータ、受信端末のいずれかのアドレスである。図2(b)と同様に、KAT(UR2)は、端末転送先アドレス「UR2」のKATを示す。送信端末アドレスは、送信端末10の移動等により変更される場合がある。そのため、エントリ保持部11は、送信端末10の現在位置における現在の送信端末アドレスのMFTエントリと、変更前の送信端末アドレスのMFTエントリを保持できる。
メッセージ処理部14は、制御メッセージを処理する。メッセージ処理部14は、受信部12から送信端末10が受信した制御メッセージを取得する。メッセージ処理部14は、制御メッセージの種類、制御メッセージの送信元アドレス、エントリ保持部11が保持する情報に基づいて、エントリ保持部11への情報の登録、エントリ保持部11が保持する情報の更新や削除を行う。特に、メッセージ処理部14は、参加/離脱メッセージであるRedirectメッセージに基づいて、分岐ルータのルータ転送先アドレスを送信端末保持手段から削除し、分岐ルータのアドレスを送信端末保持手段に登録する送信端末登録手段として機能する。
メッセージ処理部14は、エントリ保持部11のテーブル種別にMFTを設定し、送信端末アドレス、マルチキャストグループアドレス毎にMFTエントリを作成する。例えば、メッセージ処理部14は、送信端末10が新たに受信したJoinメッセージやRedirectメッセージにより指定されている送信端末アドレス、マルチキャストグループアドレス毎にMFTエントリを作成する。メッセージ処理部14は、作成したMFTエントリに、送信端末アドレス、マルチキャストグループアドレス、端末転送先アドレス、KATを対応付けて登録する。
パケット生成部15は、データを含むマルチキャストパケットを生成する。パケット生成部15は、必要に応じて、BUメッセージやLUメッセージのような制御メッセージや、LUメッセージを付加したマルチキャストパケットを生成する。パケット生成部15は、エントリ保持部11から、端末転送先アドレスを取得する。又、パケット生成部15は、アプリケーション部からの入力や外部入力によって、データを取得する。
まず、パケット生成部15は、データに、送信元アドレスとして送信端末アドレス、宛先アドレスとしてマルチキャストグループアドレスを付加したマルチキャストパケットを生成する。パケット生成部15は、エントリ保持部11を参照し、マルチキャストパケットが端末転送先アドレスの数になるように、生成したマルチキャストパケットを複製する。パケット生成部15は、マルチキャストパケットをカプセル化し、送信元アドレスに送信端末アドレスを設定し、宛先アドレスに端末転送先アドレスを設定する。パケット生成部15は、カプセル化したマルチキャストパケットを送信部13に入力する。
送信部13は、UR20a〜20cやNR30a〜30c、受信端末40a〜40cに、マルチキャストパケットや制御メッセージを送信する。送信部13は、パケット生成部15からカプセル化されたマルチキャストパケットを取得し、メッセージ処理部14から制御メッセージを取得する。
次に、通信システム1におけるマルチキャストツリーの設定について、図4〜7を用いて詳細に説明する。前述したようにマルチキャストツリーには、初期状態と安定状態がある。そのため、初期状態における処理と安定状態における処理に分けて説明する。図4〜図7の説明において、UR20a〜20cが備えるエントリ保持部21a〜21cと、送信端末10が備えるエントリ保持部11を併記する。尚、説明を簡単にするために、エントリ保持部11,21a〜21cが保持する情報のうち、テーブル種別、送信端末アドレス、マルチキャストグループアドレス、端末転送先アドレス又はルータ転送先アドレスのみを示す。具体的には、送信端末アドレス、マルチキャストグループアドレス、端末転送先アドレス又はルータ転送先アドレスを、(送信端末アドレス,マルチキャストグループアドレス):[端末転送先アドレス又はルータ転送先アドレス]のように表記する。(送信端末アドレス,マルチキャストグループアドレス)により、マルチキャストツリーやマルチキャストパケットが、どの送信端末からのどのマルチキャストグループに関するものであるかを特定できる。又、送信端末10を最上流として説明する。
(初期状態)
初期状態では、エントリ保持部11,21a〜21cは端末転送先アドレス、ルータ転送先アドレスを保持していない。図4に示すように、受信端末40aが、送信端末10が送信するマルチキャストパケットの受信を開始したい場合、マルチキャストパケットの送信を要求する。受信端末40aは、受信端末40aが無線リンクを介して接続しているルータがURの場合、MLDv2(Multicast Listener Discovery Version 2、「draft−vida−mld−v2−xx.txt」参照)に従って送信を要求できる。具体的には、受信端末40aは、Membership Report2をUR20cに送信する。尚、受信端末40aは、IPv6を用いる場合にはMLDv2に従うが、IPv4を用いる場合にはIGMPv3に従ってMembership Report2を送信する。
受信端末40aは、Membership Report2を用いて、送信端末アドレス「S」、マルチキャストグループアドレス「G」、即ち、(S,G)によって特定されるマルチキャストパケットの送信を要求する。Membership Report2は、宛先アドレスにマルチキャストグループアドレス「G」、送信元アドレスに受信端末40aのアドレス「R1」が設定され、マルチキャストグループアドレス「G」の指定を含む。
受信端末40aから送信端末10への経路の最下流に存在するUR20cが、Membership Report2を受信する。UR20cのメッセージ処理部25は、UR20cが受信端末40aと接続する末端ルータであることから、エントリ保持部21cにMFTエントリを作成する。メッセージ処理部25は、(S,G):[G]をMFTエントリに登録する。メッセージ処理部25は、ルータ転送先アドレス「G」のKAT及び(S,G)に関するJTを起動させる。ルータ転送先アドレスがマルチキャストグループアドレス「G」の場合、(S,G)により特定されるマルチキャストパケットの受信を希望する受信端末40aがUR20cに接続していることを示す。よって、UR20cの転送部23は、宛先アドレスがマルチキャストグループアドレス「G」の場合、データ処理部24によりディカプセル化されたマルチキャストパケットを、UR20c自身に接続している受信端末40aに送信すればよい。
UR20cのメッセージ処理部25は、受信したMembership Report2をメッセージ生成部26に入力する。UR20cのメッセージ生成部26は、受信端末40aがMembership Report2を用いて要求したマルチキャストパケットの送信を、送信端末10に要求するJoinメッセージ3を生成する。具体的には、メッセージ生成部26は、宛先アドレスに送信端末アドレス「S」を設定し、送信元アドレスにUR20cのアドレス「UR4」を設定し、マルチキャストグループアドレス「G」を指定したJoinメッセージ3を生成する。
このとき、UR20cのメッセージ生成部26は、Joinメッセージ3のヘッダに特別なオプションを設定する。特別なオプションとしては、例えば、IPv6を用いる場合にはRFC2460で規定されているHop−by−Hopオプションを設定でき、IPv4を用いる場合にはRFC2113で規定されているRouter Alert オプションを設定できる。これにより、UR20cは、他のUR20a,20bや送信端末10にJoinメッセージ3が特別な制御メッセージであることを通知できる。更に、メッセージ生成部26は、特別なオプションとして、オプションを解釈できない場合であってもそのメッセージを破棄しないよう指示するデータ、例えば、Hop−by−Hopオプションの場合、オプションタイプの先頭を「00」から開始するオプションを付加する。これにより、UR20cから送信端末10までの経路にオプションを解釈できないルータ、例えば、NRが存在しても破棄されず、UR20a,20bや送信端末10がJoinメッセージ3を受信できる。
そして、UR20cのメッセージ生成部26は、生成したJoinメッセージ3を転送部23に入力し、UR20cの転送部23が送信端末10宛にJoinメッセージ3を送信する。これにより、UR20cは、より上流のUR20b,20aにもJoinメッセージ3を転送できる。
UR20cから送信端末10までの経路に存在するUR20bが、Joinメッセージ3を受信する。UR20bのメッセージ処理部25は、エントリ保持部21bを参照する。メッセージ処理部25は、エントリ保持部21bがルータ転送先アドレスを保持していないことから、UR20bがマルチキャストパケットを転送するルータ転送先アドレスは、受信したJoinメッセージ3により決まる1つであると判断する。よって、メッセージ処理部25は、UR20bは分岐ルータにはならないと判断する。
そのため、UR20bのメッセージ処理部25は、エントリ保持部21bにMCTエントリを作成する。メッセージ処理部25は、Joinメッセージ3の送信元アドレスに設定されている「UR4」をルータ転送先アドレスと判断し、(S,G):[UR4]をMCTエントリに登録する。メッセージ処理部25は、ルータ転送先アドレス「UR4」のKATを起動させる。このように初期状態では、分岐ルータではないURもMCTを保持することになる。更に、メッセージ処理部25は、受信したJoinメッセージ3をそのまま転送部23に入力する。UR20bの転送部23が送信端末10宛にJoinメッセージ3を送信し、より上流のUR20aにJoinメッセージを転送する。
そして、UR20cから送信端末10までの経路のより上流に存在するUR20aが、Joinメッセージ3を受信する。UR20aのメッセージ処理部25も、UR20bと同様にして、エントリ保持部21aにMCTエントリを作成して、(S,G):[UR4]をMCTエントリに登録し、ルータ転送先アドレス「UR4」のKATを起動させる。NR30aは、特別なオプションを解釈できないため、Joinメッセージ3を通常のユニキャストパケットとして送信端末10に転送する。
最後に、送信端末10が、Joinメッセージ3を受信する。メッセージ処理部14は、エントリ保持部11にMFTエントリを作成する。メッセージ処理部14は、Joinメッセージ3の送信元アドレスに設定されている「UR4」を端末転送先アドレスと判断し、(S,G):[UR4]をMFTエントリに登録する。メッセージ処理部25は、端末転送先アドレス「UR4」のKATを起動させる。
以上の処理により、最上流の送信端末10から、末端ルータであるUR20cを経由して受信端末40aにマルチキャストパケットが転送されるマルチキャストツリーが設定される。この(S,G)により特定されるマルチキャストツリーに受信端末40aが参加している図4に示す状態において、受信端末40bが、送信端末10が送信するマルチキャストパケットの受信を開始したい場合、図5に示すようにしてマルチキャストツリーに参加する。尚、エントリ保持部11,21a,21bについて、受信端末40aだけが参加している図4における状態と、受信端末40bが参加した図5における状態とを区別するために、図4におけるエントリ保持部11,21a,21bの状態を、図5では、変更前エントリ保持部111,211a,211bとして図示する。
まず、受信端末40bはNR30bに接続しているため、受信端末40bが無線リンクを介して接続しているルータがNRであることを検出する。受信端末40bは、Membership Queryの受信の有無により検出できる。例えば、受信端末40bは、規定時間以上、Membership Queryを受信できない場合には、Membership Queryを送信するURが存在しないと判断でき、NRに接続していることを検出できる。あるいは、受信端末40bは、Membership Reportを送信後、規定時間を経過してもマルチキャストパケットを受信できない場合にも、Membership Reportを処理できるURが存在しないと判断でき、NRに接続していることを検出できる。
受信端末40bは、NRに接続している場合には、(S,G)により特定されるマルチキャストツリーへの参加を要求する、特別なオプションを設定したJoinメッセージ3を送信する。受信端末40bが、特別なオプションを設定したJoinメッセージ3を送信することにより、NR30bがJoinメッセージ3を破棄しないため、受信端末40bから送信端末10までの経路に存在するUR20bがJoinメッセージ3を受信できる。受信端末40bは、宛先アドレスに送信端末アドレス「S」を設定し、送信元アドレスに受信端末40bのアドレス「R2」を設定し、マルチキャストグループアドレス「G」を指定したJoinメッセージ3を送信する。
URの中で、受信端末40bから送信端末10への経路の最下流に存在するUR20bが、Joinメッセージ3を受信する。UR20bのメッセージ処理部25は、UR20bの変更前エントリ保持部211bを参照する。メッセージ処理部25は、MCTエントリを保持する変更前エントリ保持部211bが、既に(S,G)に対応するルータ転送先アドレスとして保持している「UR4」と、受信した(S,G)に関するJoinメッセージ3の送信元アドレス「R2」とが異なることから、UR20bが(S,G)により特定されるマルチキャストパケットを転送するルータ転送先アドレスは、「UR4」と「R2」の複数あると判断する。よって、メッセージ処理部25は、UR20bは分岐ルータになると判断する。このように初期状態では、MCTエントリは分岐ルータになるかを判断するために用いられる。
分岐ルータになると判断したUR20bのメッセージ処理部25は、変更前エントリ保持部211bからMCTエントリを削除し、新たにMFTエントリを作成する。メッセージ処理部25は、変更前エントリ保持部211bが保持していた情報と、受信したJoinメッセージ3に基づいて、(S,G):[UR4,R2]を、エントリ保持部21bのMFTエントリに登録し、MCTエントリで使われていたルータ転送先アドレス「UR4」のKATをコピーする。又、メッセージ処理部25は、ルータ転送先アドレス「R2」のKAT及び(S,G)に関するJTを起動させる。更に、メッセージ処理部25は、受信したJoinメッセージ3を、UR20bのメッセージ生成部26に入力する。
UR20bのメッセージ生成部26は、エントリ保持部21bが保持するルータ転送先アドレスと、受信したJoinメッセージ3に基づいて、Redirectメッセージ4を生成する。メッセージ生成部26は、Redirectメッセージ4を生成後、受信したJoinメッセージ3は破棄する。UR20bのメッセージ生成部26は、分岐ルータとなるUR20bのアドレス「UR3」を端末転送先アドレスに追加することを要求するJoinメッセージと、端末転送先アドレスから分岐ルータであるUR20bのルータ転送先アドレス「UR4」と「R2」を削除することを要求するPruneメッセージとを含むRedirectメッセージ4を生成する。
又、メッセージ生成部26は、宛先アドレスに送信端末アドレス「S」を、送信元アドレスにUR20bのアドレス「UR3」を設定し、マルチキャストグループアドレス「G」を指定したRedirectメッセージ4とする。更に、メッセージ生成部26は、Redirectメッセージ4のヘッダに特別なオプションを設定する。そして、UR20bのメッセージ生成部26は、生成したRedirectメッセージ4を転送部23に入力し、UR20bの転送部23が送信端末10宛にRedirectメッセージ4を送信する。これにより、UR20bは、より上流のUR20aにもRedirectメッセージ4を転送できる。このようにして、転送部23は、分岐ルータのアドレスを端末転送先アドレスに追加し、分岐ルータのルータ転送先アドレスを端末転送先アドレスから削除することを要求する参加/離脱メッセージを送信アドレス宛に送信するルータ送信手段として機能する。
そして、UR20bから送信端末10までの経路に存在するUR20aが、Redirectメッセージ4を受信する。UR20aのメッセージ処理部25は、Reidirectメッセージ4に従って、エントリ保持部21aを更新する。具体的には、メッセージ処理部25は、変更前エントリ保持部211aのMCTエントリから、削除の指示を受けている「UR4」、「R2」のうち、ルータ転送先アドレスとして保持している「UR4」及びそのKATを削除し、追加の指示を受けている「UR3」をMCTエントリにルータ転送先アドレスとして登録する。メッセージ処理部25は、ルータ転送先アドレス「UR3」のKATを起動させる。これにより、エントリ保持部21aのMCTエントリは、(S,G):[UR3]に更新される。このように分岐ルータよりも上流に位置するURも、Redirectメッセージ4に含まれる分岐ルータのアドレスをルータ転送先アドレスに追加し、分岐ルータのルータ転送先アドレスをルータ転送先アドレスから削除する。
更に、メッセージ処理部25は、受信したRedirectメッセージ4をそのまま転送部23に入力する。そして、UR20aの転送部23が送信端末10宛にRedirectメッセージ4を送信し、NR30aが、Redirectメッセージ4をユニキャストパケットとして送信端末10に転送する。
最後に、送信端末10が、Redirectメッセージ4を受信する。メッセージ処理部14は、Reidirectメッセージ4に従って、エントリ保持部11を更新する。具体的には、メッセージ処理部14は、変更前エントリ保持部111のMFTエントリから、削除の指示を受けている「UR4」、「R2」のうち、端末転送先アドレスとして保持している「UR4」及びそのKATを削除し、追加の指示を受けている分岐ルータのアドレス「UR3」をMFTエントリに端末転送先アドレスとして登録する。メッセージ処理部14は、端末転送先アドレス「UR3」のKATを起動させる。これにより、エントリ保持部11のMFTエントリは、(S,G):[UR3]に更新される。このようにして、メッセージ処理部14は、参加/離脱メッセージに基づいて、分岐ルータのルータ転送先アドレスを送信端末保持手段から削除し、分岐ルータのアドレスを送信端末保持手段に登録する送信端末登録手段として機能する。
以上の処理により、最上流の送信端末10から、分岐ルータとなったUR20b、末端ルータであるUR20cを経由して受信端末40aにマルチキャストパケットが転送され、UR20bを経由して受信端末40bにマルチキャストパケットが転送されるマルチキャストツリーが設定される。このように、マルチキャストツリーの初期状態では、新たな受信端末がマルチキャストツリーに次々と参加する。そして、新たな参加があるたびにマルチキャストツリーが変更され、設定されていく。
受信端末40b及び末端ルータとなったUR20c、分岐ルータとなったUR20bはそれぞれ、分岐ルータであるUR20b、送信端末10に定期的にJoinメッセージを送信する。又、受信端末40aは、末端ルータであるUR20cに定期的にMembership Report2を送信する。送信端末10、UR20bは、Joinメッセージを受信することにより、UR20cは、Membership Reportを受信することにより、エントリ保持部11,21a〜21cの端末転送先アドレスやルータ転送先アドレスを維持する。
具体的には、分岐ルータとなったUR20bのメッセージ生成部26は、エントリ保持部21bを参照し、JTが満了したときに、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「UR3」のJoinメッセージを生成する。そして、UR20bの転送部23が、生成したJoinメッセージを送信する。送信端末10のメッセージ処理部14は、エントリ保持部11を参照し、端末転送先アドレス「UR3」のKATが満了した場合、エントリ保持部11から(S,G)に対応する端末転送先アドレス「UR3」を削除する。一方、メッセージ処理部14は、端末転送先アドレス「UR3」のKATが満了する保持時間内に、受信部12が、分岐ルータであるUR20bから、送信元アドレスが「UR3」のJoinメッセージを受信した場合、端末転送先アドレス「UR3」のKATを再起動して、保持時間を延長する。
又、末端ルータとなったUR20cもUR20bと同様にして、JTが満了したときにKATが満了していないルータ転送先アドレスが1つでもある場合は、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「UR4」のJoinメッセージを送信する。受信端末40bも、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「R2」のJoinメッセージを送信する。
分岐ルータとなったUR20bのメッセージ処理部25は、エントリ保持部21bを参照し、ルータ転送先アドレス「UR4」のKATが満了した場合には、エントリ保持部21bのMFTエントリを削除してMCTエントリを作成し、ルータ転送先アドレス「R2」を登録する。メッセージ処理部25は、ルータ転送先アドレスが「R2」1つになったことから、UR20bが分岐ルータから、分岐ルータではないルータ(以下「非分岐ルータ」という)になったと判断する。そして、メッセージ処理部25は、メッセージ生成部26に、Redirectメッセージの生成を指示する。そして、メッセージ生成部26が、非分岐ルータとなったUR20bのルータ転送先アドレス「R2」を端末転送先アドレスに追加し、非分岐ルータとなったUR20bのアドレス「UR3」を端末転送先アドレスから削除することを要求するRedirectメッセージを生成する。そして、転送部23が、そのRedirectメッセージを送信端末アドレス「S」宛に送信する。
このようにして、メッセージ処理部25は、URが分岐ルータから非分岐ルータになるかを判断する。そして、転送部23は、メッセージ処理部25が非分岐ルータになると判断した場合に、非分岐ルータのルータ転送先アドレスを端末転送先アドレスに追加し、非分岐ルータのアドレスを端末転送先アドレスから削除することを要求する参加/離脱要求メッセージを送信端末アドレス宛に送信する。これにより、通信システム1では、一度分岐ルータになったURが非分岐ルータに変化した場合にも、適切なマルチキャストツリーに変更できる。次に、UR20bのメッセージ処理部25は、ルータ転送先アドレス「R2」のKATが満了した場合、エントリ保持部21bからルータ転送先アドレス「R2」が登録されたMCTエントリを削除する。
一方、UR20bのメッセージ処理部25は、ルータ転送先アドレス「UR4」、「R2」のKATが満了する前に、UR20bの受信部22が、末端ルータであるUR20c、受信端末40bから、送信元アドレスが「UR4」、「R2」のJoinメッセージを受信した場合、ルータ転送先アドレス「UR4」、「R2」のKATを再起動し、保持時間を延長する。尚、末端ルータであるUR20cのメッセージ処理部25もUR20bと同様に、エントリ保持部21cを参照し、ルータ転送先アドレス「G」のKATが満了した場合、エントリ保持部21cのMFTエントリから、(S,G)に対応するルータ転送先アドレス「G」を削除する。又、UR20cのメッセージ処理部25は、UR20cの受信部22が受信端末40aから、Membership Reportを受信した場合、ルータ転送先アドレス「G」のKATを再起動する。このようにして初期状態ではマルチキャストツリーが維持される。又、Joinメッセージや、Membership Reportは、マルチキャストツリーを維持するための維持要求メッセージとしても機能できる。
(安定状態)
マルチキャストツリーは、初期状態から安定状態に移行する。マルチキャストツリーは、例えば、新たに参加する受信端末の減少により安定状態に移行する。例えば、生放送の開始後は、新たに参加する受信端末が減少する。送信端末10は、新たに参加する受信端末が減少してきたと判断できた場合に、安定状態に移行したと判断できる。
安定状態移行後の処理について、図5に示したマルチキャストツリーの状態で安定状態に移行した場合を例にとって、図6を用いて説明する。尚、エントリ保持部21aについて、図5における状態と、安定状態移行後における状態とを区別するために、図5におけるエントリ保持部21aの状態を、図6では、変更前エントリ保持部211aとして図示する。
マルチキャストツリーが安定状態に移行すると、送信端末10のパケット生成部15は、安定状態に移行したことを示すStableオプションを設定したマルチキャストパケットを生成し、送信部13が送信する。これにより、送信端末10は、参加している受信端末40a,40bに、マルチキャストツリーが安定状態に移行したことを通知する。受信端末40a,40bは、Stableオプションが設定されたマルチキャストパケットを受信した後は、受信端末40aの場合、Stable Membership Report、受信端末40bの場合、Stable Joinメッセージ3aを送信する。例えば、受信端末40bは、Stableオプションが設定されたマルチキャストパケットの受信後は、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「R2」であるStable Joinメッセージ3aを送信する。
そして、UR20b,20cは、受信端末40a,40b又は下流のURから、Stable Joinメッセージ3aを受信した後は、Stable Joinメッセージ3aを送信する。例えば、末端ルータであるUR20cのメッセージ生成部26は、JTが満了したときにKATが満了していないルータ転送先アドレスが1つでもある場合は、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「UR4」、マルチキャストグループアドレスとして「G」を指定したStable Joinメッセージ3aを生成する。UR20cの転送部23が、生成されたStable Joinメッセージ3aを送信する。
そして、UR20cから送信端末10までの経路に存在するUR20bが、UR20cからのStable Joinメッセージ3aを受信する。UR20bのメッセージ処理部25は、エントリ保持部21bを参照し、受信したStable Joinメッセージ3aの送信元アドレスをルータ転送先アドレスとして保持するエントリが、MFTエントリ又はMCTエントリのいずれであるかを判断する。メッセージ処理部25は、MFTエントリが、Stable Joinメッセージ3aの送信元アドレスをルータ転送先アドレスとして保持している場合には、ルータ転送先アドレスの保持時間を延長する。メッセージ処理部25は、MCTエントリが、Stable Joinメッセージ3aの送信元アドレスを、ルータ転送先アドレスとして保持している場合には保持時間を延長しない。尚、MFTエントリが、Stable Joinメッセージ3aの送信元アドレスをルータ転送先アドレスとして保持している場合は、当然、そのルータ転送先アドレスのKATが満了する前、即ち、保持時間内にUR20bは、Stable Joinメッセージ3aを受信していることになる。
UR20bのメッセージ処理部25は、エントリ保持部21bのMFTエントリが、受信したStable Joinメッセージ3aの送信元アドレス「UR4」をルータ転送先アドレスとして保持しているため、ルータ転送先アドレス「UR4」のKATを再起動し、保持時間を延長する。同様に、受信端末40bから送信端末10までの経路に存在するUR20bが、受信端末40bからのStable Joinメッセージ3aを受信する。そして、UR20bのメッセージ処理部25は、エントリ保持部21bのMFTエントリが、受信したStable Joinメッセージ3aの送信元アドレス「R2」をルータ転送先アドレスとして保持しているため、ルータ転送先アドレス「R2」のKATを再起動し、保持時間を延長する。
更に、UR20bのメッセージ処理部25は、今後生成するJoinメッセージには、Stableオプションを設定するようメッセージ生成部26に指示する。そして、UR20bのメッセージ生成部26は、JTが満了したときにKATが満了していないルータ転送先アドレスが1つでもある場合は、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「UR3」、マルチキャストグループアドレスとして「G」を指定したStable Join3aメッセージを生成する。そして、UR20bの転送部23が、生成されたStable Joinメッセージ3aを送信する。このように、分岐ルータは、Stable Joinメッセージ3aの受信後は、自身もStable Joinメッセージ3aを送信する。
そして、UR20bから送信端末10までの経路に存在するUR20aが、Stable Joinメッセージ3aを受信する。UR20aのメッセージ処理部25は、変更前エントリ保持部211aを参照する。メッセージ処理部25は、変更前エントリ保持部211aがMCTエントリしか保持しておらず、しかも、MCTエントリに登録されているルータ転送先アドレスが、受信したStable Joinメッセージ3aの送信元アドレス「UR3」と同一であるため、そのルータ転送先アドレス「UR3」のKATを再起動せず、保持時間を延長しない。このように、Stable Joinメッセージ3aは、MCTエントリが保持するルータ転送先アドレスのKATの再起動には用いられない。更に、UR20aのメッセージ処理部25は、Stable Joinメッセージ3aをそのまま転送部23に入力する。UR20aの転送部23が送信端末10宛にStable Joinメッセージ3aを送信し、NR30aが、Stable Joinメッセージ3aをユニキャストパケットとして送信端末10に転送する。
変更前エントリ保持部211aが保持するルータ転送先アドレス「UR3」のKATは再起動されないため、満了する。UR20aのメッセージ処理部25は、KATが満了したルータ転送先アドレス「UR3」を、変更前エントリ保持部211aから削除する。その結果、エントリ保持部21aは、MCTエントリが破棄されて、ルータ転送先アドレスを保持しない状態に更新される。
最後に、送信端末10が、Stable Joinメッセージ3aを受信する。メッセージ処理部14は、エントリ保持部11が、受信したStable Joinメッセージ3aの送信元アドレス「UR3」を端末転送先アドレスとして保持しているため、端末転送先アドレス「UR3」のKATを再起動し、保持時間を延長する。尚、末端ルータであるUR20cのエントリ保持部21cが保持するルータ転送先アドレス「G」のKATは、初期状態におけるマルチキャストツリーの維持の場合と同様に、UR20cがMembership Reportを受信した場合に、UR20cのメッセージ処理部25が再起動する。
このように、通信システム1では、安定状態移行後は、エントリ保持部21a〜21cのMFTエントリが保持するルータ転送先アドレスの保持時間の延長にのみ利用するStable Joinメッセージ3aを用いることにより、エントリ保持部21a〜21cのMFTエントリが保持するルータ転送先アドレスだけが保持され、MCTエントリが保持するルータ転送先アドレスは削除される。これにより、UR20a〜20cは、エントリ保持部21a〜21cのMFTエントリがルータ転送先アドレスを保持する分岐ルータ又は末端ルータの場合にだけ、ルータ転送先アドレスを保持し続けることができ、安定状態のマルチキャストツリーを維持できる。
MCTは、マルチキャストツリーの設定のため、より具体的には、URが分岐ルータになるか否かを判断するために用いられる。そのため、受信端末の参加が頻繁に起こるマルチキャストツリーの初期状態では有用である。しかし、マルチキャストツリーが安定状態に移行した後は、新たにマルチキャストツリーに参加する受信端末の数が減少するため、URが分岐ルータになるか否かを判断する機会が減り、MCTエントリが利用される機会も減少する。よって、MCTエントリが保持するルータ転送先アドレスは初期状態においてのみ保持し、マルチキャストツリーが安定状態に移行した後は削除することにより、分岐ルータ及び末端ルータ以外のURの負荷を更に軽減できる。
安定状態に移行し、更に、MCTエントリが保持するルータ転送先アドレスが削除された図6に示す状態において、受信端末40cが、送信端末10が送信するマルチキャストパケットの受信を開始したい場合、図7に示すようにして安定状態のマルチキャストツリーに参加する。尚、エントリ保持部11,21aについて、受信端末40a,40bが参加している図6における状態と、受信端末40cが参加した図7における状態と、図6における状態から図7における状態への移行状態とを区別するために、図7では、図6におけるエントリ保持部11,21aの状態を、変更前エントリ保持部112,212aとして図示し、移行状態におけるエントリ保持部11,21aの状態を、移行中エントリ保持部111,211aとして図示する。
まず、受信端末40cはNR30cに接続しているため、受信端末40bと同様にして、受信端末40cが無線リンクを介して接続しているルータがNRであることを検出し、Joinメッセージ3を送信する。このとき、受信端末40cは、マルチキャストツリーに参加していないため、Stableオプションが設定されたマルチキャストパケットを受信していない。よって、受信端末40cは、Stableオプションが設定されていない通常のJoinメッセージ3を送信する。受信端末40cは、宛先アドレスに送信端末アドレス「S」を設定し、送信元アドレスに受信端末40cのアドレス「R3」を設定し、マルチキャストグループアドレス「G」を指定したJoinメッセージ3を送信する。
URの中で、受信端末40cから送信端末10への経路の最下流に存在するUR20aが、Joinメッセージ3を受信する。UR20aのメッセージ処理部25は、UR20aの更新前エントリ保持部212aを参照する。メッセージ処理部25は、更新前エントリ保持部212aがルータ転送先アドレスを保持しておらず、かつ、安定状態のマルチキャストツリーの維持に用いるStable Joinメッセージ3aではない通常のJoinメッセージ3を受信したことから、受信したJoinメッセージ3の送信元アドレスに設定されている「R3」を、UR20aがマルチキャストパケットを転送するルータ転送先アドレスと判断する。しかも、ルータ転送先アドレスは1つであるため、メッセージ処理部25は、UR20aは分岐ルータにはならないと判断する。
そのため、UR20aのメッセージ処理部25は、更新前エントリ保持部212aにMCTエントリを作成して、(S,G):[R3]を登録し、移行中エントリ保持部211aの状態とする。更に、メッセージ処理部25は、受信したJoinメッセージ3をそのままUR20aの転送部23に入力し、転送部23が送信端末10宛にJoinメッセージ3を送信する。
送信端末10は、Joinメッセージ3を受信する。メッセージ処理部14は、更新前エントリ保持部112が、受信したJoinメッセージ3の送信元アドレスに設定されている「R3」を保持していないため、「R3」を新たなルータ転送先アドレスと判断する。メッセージ処理部14は、MFTエントリを作成してルータ転送先アドレス「R3」を追加し、更新前エントリ保持部112を、移行中エントリ保持部111の状態(S,G):[UR3,R3]に更新する。これにより、送信端末10から受信端末40cにマルチキャストパケットが直接転送されるマルチキャストツリーが、一旦構築される。
その後、UR20bが、JTの満了により、宛先アドレスが送信端末アドレス「S」、送信元アドレスが「UR3」、マルチキャストグループアドレスとして「G」を指定したStable Joinメッセージ3aを送信する。そして、UR20bから送信端末10までの経路に存在するUR20aが、Stable Joinメッセージ3aを受信する。
UR20aのメッセージ処理部25は、移行中エントリ保持部211aを参照する。メッセージ処理部25は、移行中エントリ保持部211aが既に(S,G)に対応するルータ転送先アドレスとして保持している「R3」と、受信した(S,G)に関するStable Joinメッセージ3aの送信元アドレス「UR3」とが異なるので、Stable Joinメッセージ3aは安定状態のマルチキャストツリーの維持に用いるものではないと判断する。更に、メッセージ処理部25は、UR20aが(S,G)により特定されるマルチキャストパケットを転送するルータ転送先アドレスは「UR3」と「R3」の複数あるため、UR20aは分岐ルータになると判断する。そのため、UR20aのメッセージ処理部25は、移行中エントリ保持部211aからMCTエントリを削除し、新たにMFTエントリを作成する。メッセージ処理部25は、(S,G):[UR3,R3]をエントリ保持部21aのMFTエントリに登録する。
更に、UR20aのメッセージ生成部26は、新たに分岐ルータとなるUR20aのアドレス「UR2」を端末転送先アドレスに追加することを要求するJoinメッセージと、端末転送先アドレスから分岐ルータであるUR20aのルータ転送先アドレス「UR3」と「R3」を削除することを要求するPruneメッセージとを含むRedirectメッセージ4を生成する。又、メッセージ生成部26は、宛先アドレスに送信端末アドレス「S」を、送信元アドレスにUR20aのアドレス「UR3」を設定し、マルチキャストグループアドレス「G」を指定したRedirectメッセージ4とする。そして。UR20aの転送部23が送信端末10宛にRedirectメッセージ4を送信する。
送信端末10は、Redirectメッセージ4を受信する。メッセージ処理部14は、Reidirectメッセージ4に従ってエントリ保持部11を更新する。具体的には、メッセージ処理部14は、移行中エントリ保持部111のMFTエントリから、削除の指示を受けている「UR3」、「R3」を削除し、追加の指示を受けている分岐ルータのアドレス「UR2」を、MFTエントリに端末転送先アドレスとして登録する。これにより、エントリ保持部11のMFTエントリは、(S,G):[UR2]に更新される。
以上の処理により、最上流の送信端末10から、新たに上流の分岐ルータとなったUR20a、上流にあるUR20aが分岐ルータとなったことにより下流の分岐ルータとなったUR20b、末端ルータであるUR20cを経由して受信端末40aにマルチキャストパケットが転送され、UR20a、UR20bを経由して受信端末40bにマルチキャストパケットが転送され、UR20aを経由して受信端末40cにマルチキャストパケットが転送されるマルチキャストツリーが設定される。このようにして安定状態のマルチキャストツリーが設定される。
〔通信方法〕
図1に示した通信システム1を用いた通信方法を説明する。まず、Joinメッセージを受信した時の処理手順を説明する。図8に示すように、UR20a〜20cの受信部22が、Joinメッセージを受信する(S101)。UR20a〜20cのメッセージ処理部25は、エントリ保持部21a〜21cがJoinメッセージの送信元アドレスを、ルータ転送先アドレスとして保持しているかを判断する(S102)。
ステップ(S102)において、UR20a〜20のcメッセージ処理部25は、送信元アドレスを保持していないと判断した場合、受信したJoinメッセージが、Stableオプションが設定されたStable Joinメッセージであるか否かを判断する(S103)。UR20a〜20cのメッセージ処理部25は、Stable Joinメッセージであると判断した場合、UR20a〜20cの転送部23がStable Joinメッセージを上流に転送する(S106)。
一方、ステップ(S103)において、UR20a〜20cのメッセージ処理部25は、Stable Joinメッセージではなく、通常のJoinメッセージであると判断した場合、エントリ保持部21a〜21cにMCTエントリを作成する(S105)。更に、UR20a〜20cのメッセージ処理部25は、作成したMCTエントリに受信したJoinメッセージの送信元アドレスをルータ転送先アドレスとして登録し、そのKATを起動する(S107)。そして、UR20a〜20cの転送部23は、Joinメッセージを上流に転送する(S108)。
又、ステップ(S102)において、UR20a〜20cのメッセージ処理部25は、送信元アドレスを保持していると判断した場合、エントリ保持部21a〜21cのMCTエントリ又はMFTエントリのいずれが保持しているかを判断する(S104)。MFTエントリが保持すると判断した場合、UR20a〜20cのメッセージ処理部25は、Joinメッセージが示す送信端末アドレスとマルチキャストグループアドレス、即ち、(S,G)に対応するMFTエントリが、ルータ転送先アドレスとして、Joinメッセージの送信元アドレスを保持しているかを判断する(S109)。UR20a〜20cのメッセージ処理部25は、(S,G)に対応するMFTエントリが保持していないと判断した場合には、Joinメッセージの送信元アドレスをルータ転送先アドレスとして、エントリ保持部21a〜21cの(S,G)に対応するMFTエントリに登録する(S114)。そして、UR20a〜20cのメッセージ処理部25は、受信したJoinメッセージを破棄する(S115)。更に、UR20a〜20cのメッセージ処理部25は、登録した(S,G)に対応するMFTエントリが保持するルータ転送先アドレスのKATを起動させる(S118)。
一方、ステップ(S109)において、UR20a〜20cのメッセージ処理部25は、(S,G)に対応するMFTエントリが保持していると判断した場合には、ステップ(S115)に進み、受信したJoinメッセージを破棄する。更に、UR20a〜20cのメッセージ処理部25は、ステップ(S118)に進み、(S,G)に対応するMFTエントリが保持するルータ転送先アドレスのKATを再起動させる。
ステップ(S104)において、MCTエントリが保持すると判断した場合、UR20a〜20cのメッセージ処理部25は、Joinメッセージが示す送信端末アドレスとマルチキャストグループアドレス、即ち、(S,G)に対応するMCTエントリが、ルータ転送先アドレスとしてJoinメッセージの送信元アドレスを保持しているかを判断する(S110)。UR20a〜20cのメッセージ処理部25は、(S,G)に対応するMCTエントリが保持していないと判断した場合には、(S,G)に対応するMFTエントリを作成する(S111)。
更に、UR20a〜20cのメッセージ生成部26は、(S,G)に対応するRedirectメッセージを生成し、UR20a〜20cの転送部23が「送信端末アドレス宛に送信する(S113)。そして、UR20a〜20cは、ステップ(S114)、(S115)に進み、作成した(S,G)に対応するMFTエントリに送信元アドレスをルータ転送先アドレスとして登録し、Joinメッセージを破棄する。更に、UR20a〜20cは、ステップ(S118)に進み、登録した(S,G)に対応するMFTエントリが保持するルータ転送先アドレスのKATを起動させる。尚、この場合には、UR20a〜20cはJTも起動させる。
一方、ステップ(S110)において、UR20a〜20cのメッセージ処理部25は、(S,G)に対応するMCTエントリが保持していると判断した場合は、受信したJoinメッセージが、Stableオプションが設定されたStable Joinメッセージであるか否かを判断する(S112)。UR20a〜20cのメッセージ処理部25が、Stable Joinメッセージであると判断した場合、UR20a〜20cの転送部23が、Stable Joinメッセージを上流に転送する(S116)。一方、ステップ(S112)において、UR20a〜20cのメッセージ処理部25が、Stable Joinメッセージではなく、通常のJoinメッセージであると判断した場合、UR20a〜20cの転送部23が、Joinメッセージを上流に転送した後(S117)、ステップ(S118)に進み、(S,G)に対応するMCTエントリが保持するルータ転送先アドレスのKATを再起動させる。このようにして、通信システム1は、マルチキャストツリーを設定する。
次に、Pruneメッセージを受信した時の処理手順を説明する。図9に示すように、まず、UR20a〜20cの受信部22が、Pruneメッセージを受信する(S201)。UR20a〜20cのメッセージ処理部25は、エントリ保持部21a〜21cがPruneメッセージの送信元アドレスを、ルータ転送先アドレスとして保持しているかを判断する(S202)。UR20a〜20cのメッセージ処理部25は、Pruneメッセージの送信元アドレスを保持していないと判断した場合、受信したPruneメッセージを上流に転送する(S208)。
一方、ステップ(S202)において、UR20a〜20cのメッセージ処理部25は、Pruneメッセージの送信元アドレスを保持していると判断した場合、エントリ保持部21a〜21cのMCTエントリ又はMFTエントリのいずれが保持しているかを判断する(S203)。MCTエントリが保持していると判断した場合、UR20a〜20cのメッセージ処理部25は、エントリ保持部21a〜21cから、MCTエントリを削除する(S205)。そして、UR20a〜20cは、ステップ(S208)に進む。
一方、ステップ(S203)において、UR20a〜20cのメッセージ処理部25は、MFTエントリが保持していると判断した場合、Pruneメッセージの送信元アドレスをエントリ保持部21a〜21cのMFTエントリから削除する(S204)。UR20a〜20cのメッセージ処理部25は、ステップ(S204)において、MFTエントリからPruneメッセージの送信元アドレスを削除したことにより、MFTエントリがMCTエントリに変化するかを判断する(S206)。
ステップ(S206)において、UR20a〜20cのメッセージ処理部25は、MCTエントリに変化すると判断した場合、メッセージ生成部26にRedirectメッセージの生成を指示する。UR20a〜20cのメッセージ生成部26は、特別なオプションを設定したRedirectメッセージを生成し、転送部23が送信端末10に送信する(S207)。そして、UR20a〜20cのメッセージ処理部25は、Pruneメッセージを破棄する(S209)。一方、ステップ(S206)において、UR20a〜20cのメッセージ処理部25は、MFTエントリが複数のルータ転送先アドレスを保持しており、MFTエントリから送信元アドレスを削除したとしてもMCTエントリに変化しないと判断した場合には、ステップ(S209)に進む。
次に、設定したマルチキャストツリーを用いたマルチキャストパケットの転送方法を説明する。図10に、図5に示した初期状態のマルチキャストツリーを用いた転送方法を示す。
まず、送信端末10が、データに送信元アドレスとして送信端末アドレス「S」、宛先アドレスとしてマルチキャストグループアドレス「G」を設定してマルチキャストパケットを生成する。そして、送信端末10が、生成したマルチキャストパケットに送信元アドレスとして送信端末アドレス「S」、宛先アドレスとして、エントリ保持部11が保持する端末転送先アドレス「UR3」を設定し、マルチキャストパケットをカプセル化する。そして、送信端末10は、カプセル化されたマルチキャストパケット5aをユニキャストにより、分岐ルータであるUR20bに転送する(S301)。これにより、送信端末10と分岐ルータであるUR20bとの経路上に存在するNR30a、UR20aは、マルチキャストパケット5aがマルチキャストパケットであることを意識することなく、通常のユニキャストの処理によって転送できる。
UR20bは、エントリ保持部21bのトンネル元アドレスに、カプセル化されたマルチキャストパケット5aの送信元アドレス「S」を設定し、カプセル化されたマルチキャストパケット5aをディカプセル化する。UR20bは、エントリ保持部21bが保持するルータ転送先アドレス「UR4」と「R2」に送信するために、データ処理部24を用いてマルチキャストパケットを複製する。そして、UR20bは、送信元アドレスとして、UR20b自身のアドレス「UR3」、宛先アドレスとして、ルータ転送先アドレス「UR4」を設定してカプセル化し、カプセル化したマルチキャストパケット5bを、末端ルータであるUR20cに転送する(S302)。UR20cは、カプセル化されたマルチキャストパケット5bをディカプセル化してマルチキャストパケット5cを取り出し、受信端末40aに転送する(S303)。
又、UR20bは、送信元アドレスとして、UR20b自身のアドレス「UR3」、宛先アドレスとして、もう一つのルータ転送先アドレス「R2」を設定してカプセル化し、カプセル化したマルチキャストパケット5dを、受信端末40bに転送する(S304)。このようにして、複数の送信先、受信端末40aと受信端末40bにデータをマルチキャスト配信できる。
〔効果〕
このような通信システム1、UR20a〜20c及び通信方法によれば、UR20a〜20cは、送信端末10が送信するマルチキャストパケットを複数のルータ転送先アドレスに転送する分岐ルータになると判断した場合にだけ、複数のルータ転送先アドレスを保持して、複製ポイントになる。更に、UR20a〜20cは、分岐ルータとなった場合に、そのUR20a〜20cのアドレスを端末転送先アドレスに追加し、分岐ルータのルータ転送先アドレスを端末転送先アドレスから削除することを要求するRedirectメッセージのような参加/離脱要求メッセージを、送信端末アドレス宛に送信することにより、自身よりも上流のURや送信端末10に、分岐ルータのアドレスのルータ転送先アドレスや端末転送先アドレスへの追加と、分岐ルータのルータ転送先アドレスのルータ転送先アドレスや端末転送先アドレスからの削除を要求できる。そして、上流のURや送信端末10が、下流の分岐ルータのアドレスをルータ転送先アドレスや端末転送先アドレスとして保持し、下流の分岐ルータのルータ転送先アドレスを、ルータ転送先アドレスや端末転送先アドレスから削除できる。
これにより、UR20a〜20cが、適宜、分岐ルータになることができる。即ち、通信システム1では、分岐ルータが動的に決定される。そして、送信端末10から分岐ルータを経由して受信端末40a〜40cにマルチキャストパケットが転送される適切なマルチキャストツリーが設定される。しかも、UR20a〜20c、NR30a〜30cのうち、分岐ルータのみがルータ転送先アドレスを保持し、マルチキャストパケットを複数の転送先に転送する。よって、送信端末10と分岐ルータとの間に存在するURやNRは、カプセル化されたマルチキャストパケットをユニキャストで転送するだけでよい。そのため、分岐ルータ以外のURの負荷は軽減され、分岐ルータ以外のルータがNRであっても、通信システム1全体としてはマルチキャストを実現できる。よって、通信システム1は、通信システム1の負荷を増大させず、更に、送信端末と分岐ルータとの間や、分岐ルータ間にNRが存在していても、適切なマルチキャストツリーを設定してマルキャストを実現できる。
又、メッセージ処理部14,25は、端末転送先アドレスやルータ転送先アドレスのKAT、即ち、保持時間が満了した場合にはエントリ保持部11,21a〜21cから端末転送先アドレスやルータ転送先アドレスを削除し、ルータ転送先アドレスや端末転送先アドレスを送信元アドレスとするJoinメッセージ3やStable Joinメッセージ3aを、保持時間内に送信端末10やUR20a〜20cが受信した場合には保持時間を延長する。そのため、通信システム1は、保持時間だけマルチキャストツリーを維持することにより、ネットワークトポロジが変化した場合にも、常に適切なマルチキャストツリーを用いることができる。しかも、通信システム1は、Joinメッセージ3やStable Joinメッセージ3aにより、必要な間はマルチキャストツリーを維持できる。
[第2の実施の形態]
〔通信システム〕
次に、送信端末10の移動等により、送信端末アドレスが変更される場合について、図11に示す通信システム201を用いて説明する。通信システム201は、送信端末10と、複数のUR20a〜20fと、複数のNR30a,30bと、複数の受信端末40a〜40cとを備える。通信システム201は、図1に示した通信システム1と比較し、UR20d〜20fが増え、送信端末10と、UR20a〜20fと、NR30a,30bと、受信端末40a〜40cとの接続関係が変化した以外は実質的に同様である。UR20d〜20fも、図2(a)に示したUR20aと同様の構成を備える。
送信端末10が、ネットワークを移動し、送信端末アドレスが、「S」から「S’」に変化した場合を考える。以下、変更後の送信端末アドレス、即ち、送信端末10の現在位置のアドレスを「ISA(Instantaneous Source Address)」という。変更前の送信端末アドレスを「oISA(old ISA)」という。又、UR20d,20e,20fにはそれぞれアドレス「UR6」、「UR7」、「UR8」が付与されている。
(受信端末の構成)
次に、受信端末40a〜40cの構成について説明する。図12(a)に示すように、受信端末40aは、エントリ保持部41と、受信部42と、送信部43と、パケット処理部44と、メッセージ生成部45とを備える。尚、受信端末40b,40cも、受信端末40aと同様の構成を備える。
受信部42は、UR20a〜20cやNR30a〜30c、送信端末10から、制御メッセージ、マルチキャストパケットを受信する。受信部42は、受信した制御メッセージ及びマルチキャストパケットをパケット処理部44に入力する。
エントリ保持部41は、ISA、即ち、送信端末アドレス及びマルチキャストグループアドレスを保持するアドレス保持手段である。図12(b)に示すように、エントリ保持部41は、ISA、マルチキャストグループアドレス、oISA、MPT(Message Pending Timer)、ST(Stale Timer)を保持する。エントリ保持部41は、ISAとoISAを対応付けて保持する。MPTは、Pruneメッセージ又はLeave Groupメッセージの送信を抑制するメッセージ抑制時間を計測するタイマ値である。MPTが満了し、オフとなっている間は、Pruneメッセージ又はLeave Groupメッセージが送信される。MPTがオンになっている間は、PruneメッセージやLeave Groupメッセージは送信されない。STは、oISAの保持時間を計測するタイマ値である。STは、oISAと対応付けて保持される。STが満了すると、対応するoISAはエントリ保持部41から削除される。
パケット処理部44は、制御メッセージ及びマルチキャストパケットを処理する。パケット処理部44は、受信部42から受信端末40aが受信した制御メッセージ及びマルチキャストパケットを取得する。パケット処理部44は、LUメッセージ又はLUメッセージが付加されたマルチキャストパケットを受信した場合には、エントリ保持部41が現在保持しているISA「S」を、エントリ保持部41のoISAに設定し、そのSTを起動させる。更に、パケット処理部44は、LUメッセージに含まれるISA「S’」を、エントリ保持部41のISAに設定する。
更に、パケット処理部44は、エントリ保持部41を参照し、マルチキャストパケットの送信元アドレスがoISAであるか否かを判断する。パケット処理部44は、送信元アドレスがoISAの場合には、エントリ保持部41を参照し、MPTがオンかオフかを判断する。パケット処理部44は、MPTがオフの場合には、メッセージ生成部45に、oISAを指定したPruneメッセージ又はLeave Groupメッセージを生成するよう指示する。更に、パケット処理部44は、エントリ保持部41のMPTを起動させる。更に、パケット処理部44は、エントリ保持部41からSTが満了したoISAを削除する。
メッセージ生成部45は、制御メッセージを生成する。メッセージ生成部45は、エントリ保持部41から、ISA、マルチキャストグループアドレスを取得する。メッセージ生成部45は、取得したISA、マルチキャストグループアドレスを用いて、Joinメッセージ、Membership Report、Stable Joinメッセージ等を生成する。メッセージ生成部45は、パケット処理部44からのoISAを指定したPruneメッセージ又はLeave Groupメッセージの生成の指示に従って、Pruneメッセージ又はLeave Groupメッセージを生成する。メッセージ生成部45は、生成した制御メッセージを送信部43に入力する。
送信部43は、UR20a〜20cやNR30a〜30c、送信端末10に、制御メッセージを送信する。送信部43は、メッセージ生成部45から制御メッセージを取得して、送信する。特に、送信部43は、位置更新メッセージであるLUメッセージに基づいて更新されたエントリ保持部41が保持するISAを用いて、JoinメッセージやMembership Reportのような参加要求メッセージを変更後の送信端末アドレスであるISA宛に送信する受信端末送信手段として機能する。更に、送信部43は、受信端末40aがNRに接続する場合には、参加要求メッセージを破棄しないように指示するデータが付加された参加要求メッセージを送信する。具体的には、送信部43は、特別なオプションを設定したJoinメッセージを送信する。これにより、NRがJoinメッセージを破棄しないため、受信端末40aから送信端末10までの経路に存在するURがJoinメッセージを受信できる。
次に、送信端末アドレスが変更された場合の通信システム201における処理について、図11、13、14を用いて説明する。図11、13、14の説明において、送信端末10、UR20a〜20fが備えるエントリ保持部11,21a〜21fを併記する。尚、説明を簡単にするために、エントリ保持部11,21a〜21fが保持する情報のうち、テーブル種別、送信端末アドレス、マルチキャストグループアドレス、端末転送先アドレス又はルータ転送先アドレスのみを示す。
図11は、送信端末10がoISA「S」からISA「S’」に移動した直後の状態を示す。そのため、図11では、エントリ保持部21a〜21fは、oISA「S」を用いた(S,G)によって特定されるマルチキャストツリーにおけるルータ転送先アドレスを保持している。送信端末10がoISA「S」に存在するときは、oISA「S」をマルチキャストツリーの上流としたときに最適となるように、マルチキャストツリーが設定されている。又、受信端末40a〜40c全てがマルチキャストツリーに参加している。よって、送信端末10のエントリ保持部11が、(S,G):[UR2]、UR20aのエントリ保持部21aが、(S,G):[UR4,UR8]をMFTエントリとして保持し、UR20cのエントリ保持部21cが、(S,G):[UR6,UR7]をMFTエントリとして保持し、分岐ルータとなっている。又、UR20d〜20fのエントリ保持部21d〜21fが、(S,G):[G]をMFTエントリとして保持し、末端ルータとなっている。
送信端末10がoISA「S」からISA「S’」に移動すると、パケット生成部13が、oISA「S」とISA「S’」とを対応付けたBUメッセージ6を生成する。そして、送信部13は、エントリ保持部11に従って、BUメッセージ6をUR20aのアドレス「UR2」宛に送信する。UR20aのメッセージ処理部25は、受信部22が受信したBUメッセージ6に基づいて、ISA「S’」とoISA「S」を対応付けて保持する。そして、UR20aのメッセージ処理部25は、受信部22が受信したoISA「S」宛の制御メッセージを、転送部23にISA「S’」に転送させる。このようにして、UR20aは、送信端末10との間にトンネル(Bi-Directional Tunneling)9を構築し、ホームエージェントとして機能する。
更に、送信端末10の送信部13は、マルチキャストパケット5をエントリ保持部11に基づいてUR20aに送信し、(S,G)によって特定されるマルチキャストツリーを用いて送信する。(S,G)によって特定されるマルチキャストツリーは、oISA「S」をマルチキャストツリーの上流としたときに最適となるように設定されているため、冗長経路を含む。よって、通信システム201は、ISA「S’」に基づいて、(S’,G)によって特定されるマルチキャストツリーを再設定する必要がある。そのため、パケット生成部15は、Stableオプションを設定せずに、マルチキャストパケット5を生成する。
更に、パケット生成部15は、oISA「S」とISA「S’」とを対応付けたISAを通知するLUメッセージをマルチキャストパケット5に付加する。このようなマルチキャストパケット5を送信部13が送信し、受信端末40a〜40cに送信端末10がoISA「S」からISA「S’」へ移動したことを通知する。このように、送信部13は、送信端末アドレスが変更された場合に、まず、端末転送先アドレスに、送信端末アドレスの変更を通知する転送先更新メッセージ(BUメッセージ)を送信する。更に、送信部13は、マルチキャストパケットを受信する受信端末に、変更後の送信端末アドレスを通知する位置更新メッセージ(LUメッセージ)を送信し、送信端末送信手段として機能する。
受信端末40a〜40cは、図13に示すように、受信したマルチキャストパケット5に付加されているLUメッセージに基づいて、宛先アドレスにISA「S’」を設定したMembership Report2を送信する。具体的には、パケット処理部44がLUメッセージに基づいてエントリ保持部41を更新する。そして、メッセージ生成部45が、更新後のエントリ保持部41に保持されたISA「S’」を用いて、Membership Report2を生成し、送信部43が送信する。尚、一つの末端ルータに複数の受信端末が接続している場合には、受信端末は、MLDにおいて規定されている輻輳回避制御に従って、Membership Report2を送信する。これによれば、全ての受信端末が、新たに設定される(S’,G)によって特定されるマルチキャストツリーに参加しようとすることによって引き起こされる輻輳を回避できる。
末端ルータであるUR20d〜20fの受信部22が、ISA「S’」を宛先アドレスに設定したMembership Report2を受信すると、UR20d〜20fのメッセージ処理部25は、受信したMembership Report2をメッセージ生成部26に入力する。UR20d〜20fのメッセージ生成部26は、Membership Report2を取得すると、特別なオプションを設定し、宛先アドレスをISA「S’」に設定したJoinメッセージ3を生成する。そして、UR20d〜20fの転送部23が、ISA「S’」宛のJoinメッセージ3を送信する。
このISA「S’」宛のMembership Report2及びJoinメッセージ3を契機に、送信端末10及びUR20a〜20fは、図4、5に示した通信システム1における初期状態のマルチキャストツリーを設定する場合の処理と同様にして、ISA「S’」をマルチキャストツリーの上流としたときに最適になるように、(S’,G)に対応したルータ転送先アドレスを、エントリ保持部11,21a〜21fに登録していく。
具体的には、UR20a〜20fのメッセージ処理部25は、変更後の送信端末アドレスであるISA「S’」をマルチキャストツリーの上流としたときに、UR20a〜20fが分岐ルータになるかを判断する。分岐ルータになると判断したUR20a〜20fのメッセージ処理部25は、エントリ保持部21a〜21fに、ISA「S’」を用いた(S’,G)に対応付けて複数のルータ転送先アドレスを登録する。そして、分岐ルータになると判断したUR20a〜20fのメッセージ生成部26が、宛先アドレスをISA「S’」に設定したRedirectメッセージを生成し、転送部23が送信する。
この結果、図13に示すように、ルータ転送先アドレスを保持していなかったUR20bのエントリ保持部21bが、(S’,G):[UR4,UR6]をMFTエントリとして保持し、(S’,G)により特定されるマルチキャストツリーにおける分岐ルータとなる。又、UR20cのエントリ保持部21cが、MFTエントリとして保持していた(S,G):[UR6,UR7]に加えて、(S’,G):[UR7,UR8]をMFTエントリとして保持し、(S’,G)により特定されるマルチキャストツリーにおいても分岐ルータとなる。更に、UR20aのエントリ保持部21aが、MFTエントリとして保持していた(S,G):[UR4,UR8]に加えて、(S’,G):[UR8]をMCTエントリとして保持する。
又、UR20d〜20fのエントリ保持部21d〜21fが、MFTエントリとして保持していた(S,G):[G]に加えて、(S’,G):[G]をMCTエントリとして保持し、(S’,G)により特定されるマルチキャストツリーにおいても末端ルータとなる。そして、送信端末10のエントリ保持部11が保持していた(S,G):UR2]に加えて、(S’,G):[UR3]を保持する。
このようにして、ISA「S’」に対して最適なマルチキャストツリーを設定した直後は、通信システム201は、図13に示すように、oISA「S」に対して最適な(S,G)により特定されるマルチキャストツリーと、ISA「S’」に対して最適な(S’,G)により特定されるマルチキャストツリーが併存した状態になる。そのため、通信システム201では、2つのマルチキャストツリーにより、マルチキャストパケットが重複して転送されてしまい、受信端末40a〜40cはマルチキャストパケットを重複して受信してしまう。
そのため、送信端末10、UR20a〜20fのメッセージ処理部14,24は、Leave GroupメッセージやPruneメッセージ、又は、端末転送先アドレスやルータ転送先アドレスの保持時間の少なくとも1つに基づいて、oISA「S」に対応付けられている端末転送先アドレスやルータ転送先アドレスを、エントリ保持部11,21a〜21fから削除することが好ましい。
LUメッセージを受信した受信端末40a〜40cは、(S,G)を指定したStable Joinメッセージの送信を停止する。具体的には、受信端末40a〜40cのメッセージ生成部45は、エントリ保持部41のISA「S’」を用いてStable Joinメッセージを生成する。そのため、LUメッセージによりエントリ保持部41のISAが更新された後は、メッセージ生成部45は、oISAとなってしまった「S」を用いたStable Joinメッセージを生成しなくなる。
その結果、受信端末40a〜40cは、(S’,G)を指定したStable Joinメッセージのみ送信する。これにより、メッセージ処理部14,25は、(S’,G)に対応する端末転送先アドレスやルータ転送先アドレスのKATだけを再起動し、保持時間を延長する。そのため、エントリ保持部11,21a〜21fの(S’,G)に対応するMFTエントリだけが保持され、(S,G)に対応するMFTエントリが保持する端末転送先アドレスやルータ転送先アドレスが削除される。よって、送信端末10、UR20a〜20fは、(S,G)に対応するマルチキャストツリーを削除し、(S’,G)に対応するMFTエントリだけを保持し続けることができる。そのため、送信端末10、UR20a〜20fは、(S’,G)に対応するマルチキャストツリーだけを維持できる。
又、図14に示すように、受信端末40a〜40cは、KATの満了を待たずに、Leave GroupメッセージやPruneメッセージを用いることにより、oISA「S」を用いたマルチキャストツリーから明示的に離脱できる。受信端末40a〜40cは、(S’,G)により特定されるマルチキャストツリーから、マルチキャストパケットを受信した後に、(S,G)により特定されるマルチキャストツリーからの離脱を要求するLeave Groupメッセージ7を、末端ルータであるUR20d〜20fに送信する。具体的には、受信端末40a〜40cのメッセージ生成部45が、oISA「S」を指定したLeave Groupメッセージ7を生成し、送信部43が送信する。
UR20d〜20fのメッセージ処理部25は、(S,G)により特定されるマルチキャストツリーからの離脱を要求するLeave Groupメッセージ7に基づいて、エントリ保持部21d〜21fが保持する(S,G)に対応するMFTエントリを削除する。更に、メッセージ処理部25は、受信したLeave Groupメッセージ7を、メッセージ生成部26に入力する。
UR20d〜20fのメッセージ生成部26は、Leave Groupメッセージ7に基づいて、宛先アドレスにoISA「S」を設定し、(S,G)に対応するMFTエントリの削除を要求するPruneメッセージ8を生成する。そして、UR20d〜20fの転送部23がPruneメッセージ8を送信する。UR20aは、Pruneメッセージ8を受信すると、ISA「S’」とoISA「S」の対応付けに従って、トンネル9によりPruneメッセージ8を、ISA「S’」に転送する。このようにして、Pruneメッセージ8は、UR20a〜20cや、ISA「S’」に位置する送信端末10に到達する。
送信端末10のメッセージ処理部14やUR20a〜20cのメッセージ処理部25は、Pruneメッセージ8に基づいて、エントリ保持部11,21a〜21cから、(S,G)に対応するMFTエントリを削除する。その結果、図14に示すように、送信端末10やUR20a〜20fのエントリ保持部11,21a〜21fは、(S’,G)に対応するMFTエントリのみを保持できる。
〔通信方法〕
図11に示した通信システム201を用いた通信方法の手順を説明する。まず、UR20a〜20fの動作について説明する。UR20a〜20fの受信部22が、マルチキャストパケットを受信する(S401)。UR20a〜20fのデータ処理部24は、マルチキャストパケットからトンネル元アドレスを取得し、一時的に記憶する(S402)。UR20a〜20fは、マルチキャストパケットをディカプセル化する(S403)。UR20a〜20fは、マルチキャストパケットに設定されている送信端末アドレスやマルチキャストグループアドレスに基づいて、エントリ保持部21a〜21fが、対応するMFTエントリ又はMCTエントリを保持しているかを判断する(S404)。UR20a〜20fは、保持していないと判断した場合には、マルチキャストパケットを破棄する(S406)。
一方、ステップ(S404)において、UR20a〜20fのメッセージ処理部25は、保持していると判断した場合には、MCTエントリ又はMFTエントリのいずれが保持しているかを判断する(S405)。MCTエントリが保持していると判断した場合には、UR20a〜20fのメッセージ生成部26は、UR20a〜20fのルータ転送先アドレスを端末転送先アドレスに追加し、UR20a〜20f自身のアドレスを端末転送先アドレスから削除することを要求する、Hop-by-Hopオプションを設定した送信端末アドレス宛のRedirectメッセージを生成する。そして、転送部23がRedirectメッセージを送信する(S412)。
一方、ステップ(S405)において、MFTエントリが保持していると判断した場合には、UR20a〜20fのデータ処理部24は、受信したマルチキャストパケットのトンネル元アドレスが、エントリ保持部21a〜21fが保持するトンネル元アドレスと一致するかを判断する(S407)。
ステップ(S407)において、トンネル元アドレスが一致しない場合には、UR20a〜20fのデータ処理部24は、受信したマルチキャストパケットのトンネル元アドレスが、エントリ保持部21a〜21fが保持する前トンネル元アドレスと一致するかを判断する(S408)。前トンネル元アドレスと一致する場合には、UR20a〜20fのメッセージ生成部26は、Hop-by-Hopオプションを設定しないPruneメッセージを生成し、転送部23が前トンネル元アドレス宛に送信する(S409)。
一方、ステップ(S408)において、前トンネル元アドレスと一致しない場合には、UR20a〜20fのデータ処理部24は、エントリ保持部21a〜21fが現在保持しているトンネル元アドレスを、エントリ保持部21a〜21fの前トンネル元アドレスに設定する(S410)。このとき、データ処理部24は、エントリ保持部21a〜21fのKATをSTとして利用し、STの満了により前トンネル元アドレスが削除されるように設定してもよい。その後、UR20a〜20fのデータ処理部24は、ステップ(S402)において記憶したトンネル元アドレスを、エントリ保持部21a〜21fに登録する(S411)。UR20a〜20fは、ステップ(S409)、(S411)の後、ステップ(S413)に進む。
ステップ(S407)において、トンネル元アドレスが一致する場合、ステップ(S409)、(S411)が終了した場合には、UR20a〜20fのデータ処理部24は、ステップ(S402)において記憶したトンネル元アドレスを、MFTエントリが保持するかを判断する(S413)。MFTエントリが保持すると判断した場合、UR20a〜20fのデータ処理部24は、そのトンネル元アドレスを除いたMFTエントリが保持するルータ転送先アドレスに対して、マルチキャストパケットをカプセル化し、転送部23が送信する(S414)。一方、ステップ(S413)において、MFTエントリが保持しないと判断した場合、UR20a〜20fのデータ処理部24は、MFTエントリが保持するルータ転送先アドレスに対してマルチキャストパケットをカプセル化し、転送部23が送信する(S415)。尚、ステップ(S407)〜(S411)は、省略できる。
次に、受信端末40a〜40cの動作について説明する。受信端末40a〜40cの受信部42は、マルチキャストパケットを受信する(S501)。受信端末40a〜40cのパケット処理部44は、エントリ保持部41を参照し、受信したマルチキャストパケットの送信元アドレスがISAであるか否かを判断する(S502)。
マルチキャストパケットの送信元アドレスがISAである場合には、受信端末40a〜40cのパケット処理部44は、エントリ保持部41がoISAを保持するか否かを判断する(S503)。エントリ保持部41がoISAを保持する場合には、パケット処理部44は、そのMPTがオンかオフか判断する(S504)。MPTがオフの状態の場合には、受信端末40a〜40cのメッセージ生成部45は、Hop-by-Hopオプションを設定した、oISA宛のPruneメッセージを生成し、送信部43が送信する。あるいは、メッセージ生成部45は、oISA宛のLeave Groupメッセージを生成し、送信部43が送信する(S505)。更に、パケット処理部44は、エントリ保持部41のMPTを起動させる(S506)。
尚、ステップ(S502)において、マルチキャストパケットの送信元アドレスがISAではない場合、ステップ(S503)においてエントリ保持部41がoISAを保持しない場合、ステップ(S504)においてMPTがオンの場合には、受信端末40a〜40cは特別な処理はせずに、パケット処理部44がマルチキャストパケットに含まれるデータを処理する。
〔効果〕
このような通信システム201、UR20a〜20f、受信端末40a〜40c及び通信方法によれば、送信端末10は、その送信端末アドレスが変更された場合に、端末転送先アドレスに、送信端末アドレスの変更を通知するBUメッセージを送信し、受信端末40a〜40cに、ISA「S’」を通知するLUメッセージを送信する送信部13を備える。又、受信端末40a〜40cは、LUメッセージに基づいて、Joinメッセージ又はMembership ReportをISA宛に送信する送信部43を備える。
そのため、送信端末10の移動等により送信端末アドレス変更された場合に、送信端末10が端末転送先アドレスにBUメッセージを送信することにより、送信端末とその端末転送先アドレスのURとの間にトンネルを構築することができる。よって、oISA宛の制御メッセージは送信端末10に転送される。
更に、送信端末10は、LUメッセージにより受信端末40a〜40cに送信端末アドレスの変更を通知できる。そして、受信端末40a〜40cは、LUメッセージにより送信端末アドレスの変更を把握して、Joinメッセージ又はMembership ReportをISA「S’」に送信できる。そのため、ISA「S’」宛のJoinメッセージ又はMembership Reportを契機として、ISA「S’」において適切なマルチキャストツリーが新たに設定される。よって、通信システム201は、送信端末アドレスが変化しても、適切なマルチキャストツリーを用いたマルチキャストを実現できる。
しかも、分岐ルータは、ISA「S’」に対応付けて複数のルータ転送先アドレスを保持する。よって、UR20a〜20fは、oISA「S」、即ち、(S,G)に対応するマルチキャストツリーと、ISA「S’」、即ち、(S’,G)に対応するマルチキャストツリーとを明確に区別できる。
又、受信端末40a〜40cの送信部43は、変更前の送信端末のアドレスを指定したLeave GroupメッセージやPruneメッセージを送信する。そして、送信端末10、UR20a〜20fのメッセージ処理部14,25は、Leave GroupメッセージやPruneメッセージ、端末転送先アドレスやルータ転送先アドレスの保持時間に基づいて、oISA「S」、即ち、(S,G)に対応付けられている端末転送先アドレスやルータ転送先アドレスを、エントリ保持部11,21a〜21fから削除する。
そのため、通信システム201は、oISA「S」を用いて形成されたマルチキャストツリーを、Leave GroupメッセージやPruneメッセージ、端末転送先アドレスやルータ転送先アドレスの保持時間を用いて削除できる。よって、oISA「S」を用いたマルチキャストツリーと、ISA「S’」を用いたマルチキャストツリーが併存することによるマルチキャストパケットの重複した転送を抑制できる。特に、Leave GroupメッセージやPruneメッセージによれば、受信端末40a〜40cは、保持時間の満了を待たずに、Leave GroupメッセージやPruneメッセージにより指定されたoISA「S」を用いて形成されたマルチキャストツリーから明示的に離脱できる。よって、通信システム201では、重複した転送をより軽減できる。