(57)【要約】【課題】ネットワーク上に障害が発生した場合であっても、マルチキャストメッセージを転送すべきグループノードに対し、より確実にマルチキャストメッセージを転送できるようにする技術を提供する。【解決手段】マルチキャストグループに参加するホスト１は、直接、接続されたスイッチ１２でＩＧＭＰレポート５０の振り分け先となりうる各ポートからそのＩＧＭＰレポート５０を送信させるために、送信されるポートが異なる複数のＩＧＭＰレポート５０を生成し送信する。それにより、複数のＩＧＭＰレポート５０を受信するスイッチ１２は、異なるポートからＩＧＭＰレポート５０を送信する。それにより、ＩＧＭＰレポート５０は、より多くのスイッチ１２にスリーピングされる。この結果、マルチキャストグループに属するホスト宛のパケットの転送経路は、複数、確保される。【選択図】図５
2014131186.tif 000002
【特許請求の範囲】
【請求項１】
転送されたメッセージのスヌーピングが可能な転送装置を複数、用いてマルチパスが実現されているネットワークにノードとして接続されたコンピュータが、
マルチキャストグループに参加する場合に、前記転送装置のなかから、前記スヌーピングを行い、且つ前記マルチキャストグループに属するノード宛の第１のメッセージを受信する可能性のある第１のポートを複数、備えた転送装置である第１の転送装置を少なくとも１台、選択し、
前記マルチキャストグループに参加する旨を表す第２のメッセージを、前記選択した第１の転送装置が備える前記第１のポート別に作成し、該作成した第２のメッセージをそれぞれ送信して、該第２のメッセージを各第１のポートを介して転送させることにより、前記第１のメッセージの転送経路を複数、確保する、
ことを特徴とする経路制御方法。
【請求項２】
転送されたメッセージのスヌーピングが可能な転送装置を複数、用いてマルチパスが実現されているネットワークにノードとして接続可能な情報処理装置において、
前記スヌーピングを行い、且つマルチキャストグループに属するノード宛の第１のメッセージを受信する可能性のある第１のポートを複数、備えた転送装置である第１の転送装置の該第１のポート別に、該第１のポートからメッセージを送信させる第１のアドレスを表すアドレス情報を少なくとも１台分、記憶した記憶部と、
前記マルチキャストグループに参加する場合に、前記記憶部に前記装置情報が記憶された第１の転送装置のなかの少なくとも１台を選択する選択部と、
前記選択部が選択した第１の転送装置のアドレス情報を用いて、前記マルチキャストグループに参加する旨を表す第２のメッセージを、前記選択した第１の転送装置が備える前記第１のポート別に作成するメッセージ作成部と、
前記メッセージ作成部が作成した前記第２のメッセージをそれぞれ送信する送受信部と、
を有することを特徴とする情報処理装置。
【請求項３】
前記第１の転送装置と通信を行い、該第１の転送装置が備える第１のポートに関するポート情報を取得するポート情報取得部と、
前記第１の転送装置と通信を行い、前記ポート情報取得部が取得したポート情報が表す第１のポート別に、該第１のポートからメッセージを送信させる第１のアドレスを特定するアドレス特定部と、を有し、
前記記憶部には、前記アドレス特定部が特定した前記第１のアドレスを用いて前記アドレス情報が記憶される、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
転送されたメッセージのスヌーピングが可能な転送装置を複数、用いてマルチパスが実現されているネットワークにノードとして接続されたコンピュータが、
マルチキャストグループに参加する場合に、前記転送装置のなかから、前記スヌーピングを行い、且つ前記マルチキャストグループに属するノード宛の第１のメッセージを受信する可能性のある第１のポートを複数、備えた転送装置である第１の転送装置を少なくとも１台、選択し、
前記マルチキャストグループに参加する旨を表す第２のメッセージを、前記選択した第１の転送装置が備える前記第１のポート別に作成し、該作成した第２のメッセージをそれぞれ送信する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチキャストのメッセージが転送されるマルチパスのネットワーク上の経路を制御するための技術に関する。
【背景技術】
【０００２】
近年、ネットワークの普及により、ネットワークに情報処理装置（コンピュータ）をノードとして接続させたユーザを対象にするサービスが広く行われている。現在では、ネットワークの広帯域化により、より幅広いサービスが提供可能となっている。ここでは便宜的に、ノードとはサービスの提供対象とするユーザが操作する情報処理装置を指す意味で用いる。
【０００３】
そのサービスの一つとして、映像、或いは音声等の配信サービスがある。その配信サービスは、個人を対象にデータを送信する個人視聴サービスと、特定グループに属する人を対象に同一データを一斉に送信するグループ視聴サービスと、に大別することができる。グループ視聴サービスでは、現在、マルチキャスト伝送が多く採用されている。
【０００４】
複数のノードに同一データを一斉に送信可能な伝送方式には、ブロードキャスト伝送がある。そのブロードキャスト伝送では、データの転送経路上に位置する各スイッチ（転送装置）は、全ポートからそのデータを転送する。これに対し、マルチキャスト伝送では、データの転送経路上に位置する各スイッチは、必要なポートのみからそのデータを転送する。そのため、マルチキャスト伝送は、ブロードキャスト伝送と比較して、帯域の浪費を抑えつつ、データを効率的に伝送することができる。この利点から、グループ視聴サービスでは、マルチキャスト伝送が採用されることが増えている。
【０００５】
マルチキャスト伝送の制御には、一般的に、ＩＧＭＰ（Internet Group Management Protocol）が用いられる。このＩＧＭＰは、ルータに、マルチキャストグループに属するノードを認識させることができる。以降、マルチキャストグループに属するノードを他と区別するために、「グループノード」と表記する。
【０００６】
マルチキャストグループに参加を希望するノードは、ＩＧＭＰレポートと呼ばれるメッセージをルータ宛に送信する。各スイッチは、ノードから送信されたメッセージをスヌーピングして、自身の配下に存在するグループノードを認識し、その認識結果をマルチキャストテーブルに反映させる。
【０００７】
マルチキャストテーブルには、認識結果が格納されるエントリ（レコード）が用意される。各エントリには、認識結果として、マルチキャストグループに割り当てられたマルチキャストアドレスと、そのマルチキャストアドレスを宛先のＩＰ（Internet Protocol）アドレスとする、グループノード宛のメッセージを送信するポートの識別情報と、が格納される。その識別番号として、以降、ポート番号を想定する。そのグループノード宛のメッセージを送信するポートは、ＩＧＭＰレポートが受信されるポートである。そのＩＧＭＰレポートは、ＩＧＭＰ  ｊｏｉｎメッセージとも呼ばれる。グループノード宛のメッセージは以降、「マルチキャストメッセージ」と表記する。
【０００８】
各スイッチは、ルータから送信されたマルチキャストメッセージを受信した場合、マルチキャストテーブルを参照し、そのマルチキャストメッセージをどのポートに転送すべきか否か判定する。受信したマルチキャストメッセージに対する転送対象となるポートは、そのポートのポート番号と共にマルチキャストアドレスがマルチキャストテーブル内のエントリとして格納されている。そのようにして、無駄なマルチキャストメッセージの転送が回避される結果、帯域の浪費が抑えられる。
【０００９】
スイッチは、普通、ケーブルの断線、或いは他の転送装置の故障、等によってネットワーク上に発生した障害を検出し、メッセージの経路、つまりメッセージを送信するポートを切り替えるようになっている。マルチパスのネットワークでは、多くの場合、そのポートの切り替えが可能である。発生した障害に伴う経路の切り替えは、マルチキャストメッセージが転送されるスイッチを変更させる。
【００１０】
マルチキャストメッセージは、ＩＧＭＰレポートの転送経路を逆向きに転送される。そのため、マルチキャストメッセージが転送されるスイッチが変更される場合、そのマルチキャストメッセージが新たに転送されるスイッチのマルチキャストテーブルには、そのマルチキャストメッセージに対応するエントリが存在しないことになる。マルチキャストテーブルに対応するエントリの存在しないマルチキャストメッセージは破棄される。この結果、グループノードのなかには、ネットワーク上の障害により、マルチキャストメッセージを受信できなくなるグループノードが発生する可能性がある。このようなことから、ネットワーク上に障害が発生した場合であっても、各グループノードにマルチキャストメッセージがより確実に届くようにすることが望ましいと云える。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−２４６２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
１側面では、本発明は、ネットワーク上に障害が発生した場合であっても、マルチキャストメッセージを転送すべきグループノードに対し、より確実にマルチキャストメッセージを転送できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明を適用した１システムでは、転送されたメッセージのスヌーピングが可能な転送装置を複数、用いてマルチパスが実現されているネットワークにノードとして接続されたコンピュータが、マルチキャストグループに参加する場合に、転送装置のなかから、スヌーピングを行い、且つマルチキャストグループに属するノード宛の第１のメッセージを受信する可能性のある第１のポートを複数、備えた転送装置である第１の転送装置を少なくとも１台、選択し、
マルチキャストグループに参加する旨を表す第２のメッセージを、選択した第１の転送装置が備える第１のポート別に作成し、該作成した第２のメッセージをそれぞれ送信して、該第２のメッセージを各第１のポートを介して転送させることにより、第１のメッセージの転送経路を複数、確保する。
【発明の効果】
【００１４】
本発明を適用した場合には、ネットワーク上に障害が発生した場合であっても、マルチキャストメッセージを転送すべきグループノードに対し、より確実にマルチキャストメッセージを転送することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態による情報処理装置が接続されたネットワークのトポロジ例を表す図である。
【図２】本実施形態による情報処理装置の機能構成例を説明する図である。
【図３】ＬＡＧ設定時のスイッチの動作を説明する図である。
【図４】ルータから送信されるＩＧＭＰクエリの各ホストへの転送経路の例を説明する図である。
【図５】マルチキャストグループに参加するホストに送信させるＩＧＭＰレポートを説明する図である。
【図６】ＩＧＭＰメッセージの構成例を説明する図である。
【図７Ａ】構成情報確認コマンドによってスイッチから得られる情報例を説明する図である。
【図７Ｂ】振り分け確認コマンドによってスイッチから得られる情報例を説明する図である。
【図８】ＩＧＭＰメッセージ管理テーブル作成処理のフローチャートである。
【図９】ＩＧＭＰメッセージ生成処理のフローチャートである。
【図１０】ホスト、及びそのホストが接続されたネットワークの動作例を表すシーケンス図である。
【図１１】本実施形態による情報処理装置の構成例を表す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態による情報処理装置が接続されたネットワークのトポロジ例を表す図である。図２は、本実施形態による情報処理装置の機能構成例を説明する図である。
【００１７】
図１に表すように、そのネットワーク１０は、ルータ１１、及び複数台のスイッチ１２を備えている。図１では、理解を容易とするために、ネットワーク１０を構成するスイッチ１２として、５台のスイッチ１２−１〜１２−５のみを表している。
【００１８】
図１の１（１−１、１−２）は、本実施形態による情報処理装置（コンピュータ）である。図１では「ｈｏｓｔ＃１」「ｈｏｓｔ＃２」と表記している。以降、本実施形態による情報処理装置１（１−１、１−２）はホストと表記する。ホスト１−１、１−２はそれぞれスイッチ１２−４、１２−５と接続されている。
【００１９】
ここでは、ネットワーク１０上を転送されるデータを「パケット」と呼ぶことにする。マルチキャストグループに属するホスト１を対象に、ルータ１１から転送されるパケットは「マルチキャストパケット」と呼ぶことにする。
【００２０】
図１中に表記の「Ｐ１」〜「Ｐ３」は、各スイッチ１２に複数、設けられたポートのうちの１つを表している。例えば「Ｐ１」は、ポート番号が１のポートを表している。「Ｐ１」〜「Ｐ３」は、そのように１つのポートのみを表す識別情報であることから、以降、「Ｐ１」〜「Ｐ３」は特定可能なポートの符号として用いることとする。
【００２１】
図１中に表記の「ＬＡＧ」は、Link Aggregationの略記である。このＬＡＧは、複数の物理ポートを仮想的に束ねて１つの論理ポートとして扱う技術である。図１に表す例では、スイッチ１２−１では、ポートＰ２及びＰ３がＬＡＧによって１つの論理ポートとなっており、スイッチ１２−４及び１２−５では共に、ポートＰ１及びＰ２が１つの論理ポートとなっている。
【００２２】
図１に表す例では、各スイッチ１２のポート数は全て３となっている。そのために、各スイッチ１２−１、１２−４、及び１２−５のＬＡＧを構成するポート数は２となっている。しかし、各スイッチ１２のポート数を全て同じにする必要はない。ＬＡＧを採用するスイッチ１２、及びその数も特に限定されない。
【００２３】
スイッチ１２間では、スイッチ１２−１のポートＰ１〜Ｐ３は、ルータ１１、スイッチ１２−２のポートＰ１、スイッチ１２−３のポートＰ１、とそれぞれ接続されている。スイッチ１２−２のポートＰ２及びＰ３は、スイッチ１２−４のポートＰ１、スイッチ１２−５のポートＰ１、とそれぞれ接続されている。スイッチ１２−３のポートＰ２及びＰ３は、スイッチ１２−４のポートＰ２、スイッチ１２−５のポートＰ２、とそれぞれ接続されている。スイッチ１２−４のポートＰ３は、ホスト１−１と接続されている。スイッチ１２−５のポートＰ３は、ホスト１−２と接続されている。そのような接続関係により、ネットワーク１０は、ルータ１１から各ホスト１の間は複数の転送経路でメッセージを転送可能なマルチパスとなっている。
【００２４】
図３は、ＬＡＧ設定時のスイッチの動作を説明する図である。ここで、図３を参照し、ＬＡＧが設定されたスイッチ１２がパケット３０を振り分けるための動作について具体的に説明する。
【００２５】
そのパケット３０は、ヘッダ部と、データ部とに大別される。ヘッダ部には、宛先アドレス（Destination Address：ＤＡ）、及び送信元アドレス（Source Address：ＳＡ）が格納される。宛先アドレス、及び送信元アドレスともに、ＩＰ（Internet Protocol）、及びＭＡＣ（Media Access Control）アドレスの２つのアドレスがある。ＩＧＭＰメッセージは、データ部に格納される。
【００２６】
図３に表すスイッチ１２は、ポートＰ１及びＰ２がＬＡＧによってまとめられている。それにより、ポートＰ３によって受信されたパケット３０は、ポートＰ１及びＰ２のうちの何れかを介して送信される。図３に表すＬＡＧテーブル３５は、そのようなパケット３０の振り分け先の選択に用いられる。
【００２７】
ＬＡＧテーブル３５には、少なくとも、ＬＡＧが設定されたポートの数のエントリが存在する。各エントリには、ハッシュ値と、パケット３０の送信に用いるポートを表す識別情報と、が格納される。図３では、「Ｐ１」及び「Ｐ２」はその識別情報を表している。
【００２８】
ポートＰ３でパケット３０を受信したスイッチ１２は、そのパケット３０のヘッダ部に格納されているアドレスを複数、抽出し、抽出した複数のアドレスを用いてハッシュ値を算出する。次にスイッチ１２は、算出したハッシュ値を用いてＬＡＧテーブル３５を参照し、そのハッシュ値が格納されているエントリを特定して、そのエントリに識別情報が格納されたポートをパケット３０の送信に用いるポートとして決定する。それにより、ＬＡＧにまとめられた複数のポートは、そのなかの１つがパケット３０の送信に用いられる。そのようなパケット３０の振り分けを実現させることから、ＬＡＧはマルチパスの制御に用いられる。
【００２９】
ネットワーク１０上の各スイッチ１２は、ＬＡＧが設定可能であると共に、スヌーピングを行うことが可能である。各スイッチ１２は、そのスヌーピングが有効となっていた場合に、スヌーピングを行う。
【００３０】
本実施形態による情報処理装置であるホスト１は、図２に表すように、メッセージ受信部２１、メッセージ送信部２２、記憶部２３、ＩＧＭＰメッセージ生成部２４、ＬＡＧポート情報検索部２５、及びフロー探索部２６を備えている。記憶部２３には、ＩＧＭＰメッセージ管理テーブル２３１、及びアドレス情報２３２が格納される。これらの詳細は、後述する。
【００３１】
図１１は、本実施形態による情報処理装置の構成例を表す図である。本実施形態による情報処理装置であるホスト１は、図１１に表すように、ＣＰＵ（Central Processing Unit）７１、ＲＯＭ（Read Only Memory）７２、メモリ（メモリモジュール）７３、ＮＩＣ（Network Interface Card）７４、ハードディスク装置（ＨＤ）７５、及びコントローラ７６を備えている。この構成は１例であり、ホスト１の構成として限定されるものではない。
【００３２】
ＲＯＭ７２は、ＢＩＯＳ（Basic Input/Output System）を格納したメモリである。このＢＩＯＳは、ＣＰＵ７１によってメモリ７３に読み出され実行される。ハードディスク装置７５には、ＯＳ（Operating System）、及び各種アプリケーション・プログラム（以降「アプリ」と略記）が格納されている。ＣＰＵ７１は、ＢＩＯＳの起動が完了した後、コントローラ７６を介してハードディスク装置７５からＯＳを読み出して実行することができる。ＮＩＣ７４を介した通信は、ＯＳの起動によって可能となる。
【００３３】
図２に表すメッセージ受信部２１、及びメッセージ送信部２２は、図１１に表すＮＩＣ７４に相当する。記憶部２３は、メモリ７３、或いはメモリ７３とハードディスク装置７５が相当する。ＩＧＭＰメッセージ生成部２４、ＬＡＧポート情報検索部２５、及びフロー探索部２６は共に、ＣＰＵ７１が、コントローラ７６を介してハードディスク装置７５からメモリ７３に読み出した対応するプログラムを実行することで実現される。
【００３４】
ＩＧＭＰメッセージ生成部２４、ＬＡＧポート情報検索部２５、及びフロー探索部２６を実現させるプログラムは、それぞれ異なるプログラムであっても良い。ＩＧＭＰメッセージ生成部２４、ＬＡＧポート情報検索部２５、及びフロー探索部２６をそれぞれ実現させるプログラムをサブプログラムとし、そのサブプログラムを１つのプログラムとしてまとめても良い。このようなことから、ＩＧＭＰメッセージ生成部２４、ＬＡＧポート情報検索部２５、及びフロー探索部２６を実現させるプログラムの実装方法は特に限定されない。ここでは便宜的に、それらのプログラムはＯＳに組み込まれていると想定する。
【００３５】
次に、図２に機能構成例を表すノード１の動作について、図４〜図７Ｂの説明図を参照して後述する。
図４は、ルータから送信されるＩＧＭＰクエリの各ホストへの転送経路の例を説明する図である。ここでのＩＧＭＰクエリ４０とは、特に断らない限り、ＩＧＭＰクエリをデータ部に格納したパケット３０を指す意味で用いている。本来のＩＧＭＰクエリを指す場合、「オリジナルＩＧＭＰクエリ」と表記する。図５に表すＩＧＭＰレポート５０も同様に、特に断らない限り、ＩＧＭＰレポートを格納したパケット３０を指す意味で用いる。本来のＩＧＭＰレポートを指す場合、「オリジナルＩＧＭＰレポート」と表記する。マルチキャストパケットには、他のパケット３０と区別するために、３０を符号として用いないこととする。
【００３６】
ルータ１１は、マルチキャストグループに属するホスト１の存在の確認、等のためにメッセージを送信する。ＩＧＭＰクエリ４０は、そのためのパケットである。図４に表すＩＧＭＰクエリ４０において、「Ａ」はルータ１１のＭＡＣアドレス（ＤＡ：送信元アドレス）、「２２４．０．１００．１」はマルチキャストアドレス、「Ｂ」は２２４．０．１００．１に対するＭＡＣアドレス、をそれぞれ表している。
【００３７】
図６は、ＩＧＭＰメッセージの構成例を説明する図である。図６に表すＩＧＭＰメッセージは、パケット３０のデータ部に格納されるオリジナルＩＧＭＰメッセージである。図６に表すように、オリジナルＩＧＭＰメッセージは、タイプ、最大応答時間、チェックサム、及びマルチキャストアドレスを含む。
【００３８】
タイプは、オリジナルＩＧＭＰメッセージの種類を表す。このタイプによって、ＩＧＭＰクエリ、ＩＧＭＰレポート、等のオリジナルＩＧＭＰメッセージの種類が特定される。
【００３９】
最大応答時間は、ＩＧＭＰクエリの場合に有効となるデータである。チェックサムは、オリジナルＩＧＭＰメッセージの完全性の確認のために用いられる。マルチキャストアドレスは、ＩＧＭＰレポートの場合に有効となるデータであり、ホスト１が参加を希望するマルチキャストグループのマルチキャストアドレスを表している。
【００４０】
スヌーピングが有効となっているスイッチ１２は、配下（ルータ１１からのパケット３０が転送される側）に存在するホスト１から送信されるＩＧＭＰレポートをスヌーピングし、そのスヌーピング結果に応じて、マルチキャストテーブル４２を更新する。マルチキャストテーブル４２を構成するエントリ（レコード）には、マルチキャストグループに割り当てられたマルチキャストアドレスと、そのマルチキャストアドレスを格納したマルチキャストパケットを送信するポートのポート番号とが格納される。それにより、スヌーピングが有効となっているスイッチ１２は、マルチキャストテーブルを参照し、転送すべきポートのみに転送する。図４では、説明上、便宜的に、各スイッチ１２が管理するマルチキャストテーブル４２には、マルチキャストアドレスとポート番号の組み合わせが格納されているエントリが存在しないとしている。
【００４１】
ルータ１１から送信されたＩＧＭＰクエリ４０は、図４中、破線の矢印で表す転送経路４５、４６で各ホスト１に転送される。それら転送経路４５、４６は、各ホスト１から送信されるＩＧＭＰレポート５０の転送経路と一致する。図４に表すネットワーク１０の構成では、スイッチ１２−１からスイッチ１２−２にパケット３０を転送するうえでの障害が発生した場合、パケット３０はスイッチ１２−１からスイッチ１２−３に転送される。その結果、スイッチ１２−１から各ホスト１１への転送経路は、それぞれ、スイッチ１２−１→スイッチ１２−３→スイッチ１２−４→ホスト１−１、スイッチ１２−１→スイッチ１２−３→スイッチ１２−５→ホスト１−２、に変更される。各ホスト１がマルチキャストグループに属している状況では、そのような転送経路の変更により、各ホスト１にマルチキャストパケットが届かなくなる。このことから、本実施形態では、マルチキャストグループに参加するホスト１に、複数の転送経路を確保させるようにしている。複数の転送経路を確保させることにより、マルチキャストパケットがホスト１に届かなくなる可能性を低減させることができる。
【００４２】
記憶部２３に格納されるＩＧＭＰメッセージ管理テーブル２３１は、複数の転送経路を確保するために作成されるテーブルである。そのＩＧＭＰメッセージ管理テーブル２３１の各エントリには、図２、及び図４に表すように、アドレス、及びポート番号が格納される。アドレスは、マルチキャストアドレスである。ポート番号は、ホスト１と直接、パケット３０を送受信するスイッチ１２に設けられたポートのポート番号である。それにより、例えばホスト１がホスト１−１であれば、スイッチ１２はスイッチ１２−１である。図４は、各ホスト１がＩＧＭＰメッセージ管理テーブル２３１を作成した後の状態を表している。
【００４３】
ＬＡＧポート情報検索部２５は、直接、接続されたスイッチ１２で振り分け先となりうるポートの確認を行う。ＩＧＭＰメッセージ管理テーブル２３１の各エントリに格納されたポート番号は、ＬＡＧポート情報検索部２５による確認結果である。
【００４４】
マルチパスのネットワークでは、ホストに直接、接続されたスイッチにはＬＡＧが設定されるのが普通である。そのため、ＬＡＧポート情報検索部２５によって確認されるポートは、ＬＡＧを構成するポートとなるのが普通である。しかし、ホスト１に直接、接続されたスイッチ１２にＬＡＧを設定しなくとも良い。
【００４５】
フロー探索部２６は、ＬＡＧポート情報検索部２５が確認したポート毎に、そのポートから送信されるマルチキャストアドレスを確認する。ＩＧＭＰメッセージ管理テーブル２３１の各エントリに格納されたアドレスは、フロー探索部２６による確認結果である。
【００４６】
上記ＬＡＧポート情報検索部２５、及びフロー探索部２６のそれぞれによる確認は、Ｔｅｌｎｅｔ、或いはＳＳＨ（Secure Shell）等のプロトコルを用いて必要なコマンドを送信することで可能である。ここでは、ＬＡＧポート情報検索部２５、及びフロー探索部２６がそれぞれ送信するコマンドを「構成情報確認コマンド」「振り分け確認コマンド」と呼ぶことにする。記憶部２３に格納されたアドレス情報２３２は、直接、接続されたスイッチ１２にアクセスするための情報である。
【００４７】
図７Ａは、構成情報確認コマンドによってスイッチから得られる情報例を説明する図であり、図７Ｂは、振り分け確認コマンドによってスイッチから得られる情報例を説明する図である。
【００４８】
図７Ａに表すように、構成情報確認コマンドを受信したスイッチ１２は、ホスト１から受信したパケット３０の振り分け先となりうる各ポートのポート番号を返信する。その返信によって得られたポート番号がＩＧＭＰメッセージ管理テーブル２３１のエントリに格納される。
【００４９】
一方、振り分け確認コマンドは、アドレスを指定し、指定したアドレスを格納したパケット３０が振り分けられるポートのポート番号を確認するためのコマンドである。そのため、図７Ｂに表すように、振り分け確認コマンドを受信したスイッチ１２は、振り分け先のポートのポート番号を返信する。
【００５０】
図７Ｂに表記の「２２４．０．１．１」は、指定されたマルチキャストアドレスである。図７Ｂには、指定されたマルチキャストアドレスのみ表記している。これは、本実施形態では、指定可能なアドレスのなかで変更対象をマルチキャストアドレスのみとし、指定するマルチキャストアドレスの内容を変更しながら、実際に指定したマルチキャストアドレスでの振り分け先を確認するようにしているからである。それにより、ＩＧＭＰメッセージ管理テーブル２３１の各エントリに格納するアドレスはマルチキャストアドレスのみとなっている。
【００５１】
図５は、マルチキャストグループに参加するホストに送信させるＩＧＭＰレポートを説明する図である。
【００５２】
上記のように、ＩＧＭＰメッセージ管理テーブル２３１には、直接、接続されたスイッチ１２で振り分け先となりうるポート毎にエントリが用意される。それにより、マルチキャストグループに参加するホスト１は、エントリ毎に、ＩＧＭＰレポート５０を作成し、作成したＩＧＭＰレポート５０を送信する。
【００５３】
図５に表す２つのＩＧＭＰレポート５０（５０−１、５０−２）は、同じマルチキャストグループへの参加を要請するためのものである。そのため、図５中に「ＩＧＭＰ」と表記したオリジナルＩＧＭＰレポート中のマルチキャストアドレスは、各ＩＧＭＰレポート５０で同じ「２２４．０．１００．１」となっている。しかし、宛先アドレス（ＤＡ）とするＩＰアドレスは異なり、そのＩＰアドレスの違いによって、宛先アドレスとするＭＡＣアドレスも異なっている。送信元アドレスとするＭＡＣアドレスの内容として表記の「Ｄ」は、ホスト１−１のＭＡＣアドレスを表している。
【００５４】
この２つのＩＧＭＰレポート５０は、それぞれ破線の矢印で表す転送経路５５、５６でルータ１１に転送される。各転送経路５５、５６上の各スイッチ１２は、受信したＩＧＭＰレポート５０のスヌーピングにより、自身が管理するマルチキャストテーブル４２を更新する。その結果、ホスト１−１は、それぞれ転送経路５５、５６の逆向きに転送される何れのマルチキャストパケット３０も受信することができる。
【００５５】
上記ＩＧＭＰメッセージ管理テーブル２３１の作成、及びＩＧＭＰレポート５０の生成は、ＣＰＵ７１がハードディスク装置７５に格納されたＯＳを実行することで実現される。次に図８、及び図９を参照し、ＩＧＭＰメッセージ管理テーブル２３１の作成、及びＩＧＭＰレポート５０の生成を行うためのＣＰＵ７１の動作について詳細に説明する。
【００５６】
図８は、ＩＧＭＰメッセージ管理テーブル作成処理のフローチャートである。始めに、図８を参照し、ＩＧＭＰメッセージ管理テーブル作成処理について詳細に説明する。このＩＧＭＰメッセージ管理テーブル作成処理は、ホスト１に対し、ＩＧＭＰの設定を有効とさせるか、或いはＩＧＭＰメッセージ管理テーブル２３１を作成する必要性が生じることを契機に実行される。
【００５７】
先ず、ＣＰＵ７１は、アドレス情報２３２を用いて、スイッチ１２にリモート接続を行う（ＳＰ１）。次にＣＰＵ７１は、接続したスイッチ１２に対し、構成情報確認コマンド（図８中「ＬＡＧ構成情報確認コマンド」と表記）を投入する（ＳＰ２）。その投入を行った後、ＣＰＵ７１は、スイッチ１２からコマンドの応答としての情報（図８中「ＬＡＧ構成情報」と表記）を受信するのを待って取得する（ＳＰ３）。ＣＰＵ７１は、取得した情報中のポート番号（図８中「ポート情報」と表記）をＩＧＭＰメッセージ管理テーブル２３１に格納する（ＳＰ４）。
【００５８】
ＳＰ４に続くＳＰ５〜ＳＰ１０では、ＩＧＭＰメッセージ管理テーブル２３１のエントリのなかでポート番号を格納した各エントリにマルチキャストアドレスを格納するための処理が行われる。
【００５９】
先ず、ＳＰ５では、ＣＰＵ７１は、振り分け確認コマンド（図８中「ＬＡＧ振り分けフロー確認コマンド」と表記）をスイッチ１２に投入する。最初に投入する振り分け確認コマンド中のマルチキャストアドレスは、予め初期値として定めたアドレスである。その投入を行った後、ＣＰＵ７１は、スイッチ１２からコマンドの応答としての情報（図８中「ＬＡＧ振り分けフロー情報」と表記）を受信するのを待って取得する（ＳＰ６）。情報を取得したＣＰＵ７１は、次に、取得した情報中のポート番号を格納したエントリにマルチキャストアドレスが存在しないか否か判定する（ＳＰ７）。そのポート番号を格納したエントリにマルチキャストアドレスが存在しない場合、ＳＰ７の判定はＹＥＳとなってＳＰ８に移行する。そのポート番号を格納したエントリにマルチキャストアドレスが存在している場合、ＳＰ７の判定はＮＯとなってＳＰ９に移行する。
【００６０】
ＳＰ８では、ＣＰＵ７１は、上記ポート番号を格納したエントリに、投入した振り分け確認コマンドで指定したマルチキャストアドレスを格納する。次にＣＰＵ７１は、ＩＧＭＰメッセージ管理テーブル２３１のポート番号が格納されているエントリの全てにマルチキャストアドレスが存在していないか否か判定する（ＳＰ９）。ポート番号が格納されているエントリの何れかにマルチキャストアドレスが存在しない場合、ＳＰ９の判定はＹＥＳとなってＳＰ１０に移行する。ポート番号が格納されているエントリの全てにマルチキャストアドレスが存在する場合、ＳＰ９の判定はＮＯとなり、ここでＩＧＭＰメッセージ管理テーブル作成処理が終了する。
【００６１】
ＳＰ１０では、ＣＰＵ７１は、直前に投入した振り分け確認コマンドで指定したマルチキャストアドレスを更新し、次に投入する振り分け確認コマンドで指定するマルチキャストアドレスを決定する。その後、上記ＳＰ５に戻る。それにより、新たに決定されたマルチキャストアドレスで振り分け確認コマンドがスイッチ１２に投入される。
【００６２】
図９は、ＩＧＭＰメッセージ生成処理のフローチャートである。次に、図９を参照し、ＩＧＭＰメッセージ生成処理について詳細に説明する。
このＩＧＭＰメッセージ生成処理は、ＩＧＭＰレポート５０の生成に係わる部分のみを抽出して表したものである。図９では、このＩＧＭＰメッセージ生成処理を実行する契機として、ＩＧＭＰクエリ（図９中「ＩＧＭＰクエリメッセージ」と表記）４０の受信を挙げている。
【００６３】
ホスト１からのＩＧＭＰレポート５０の送信は、マルチキャストグループに参加する場合の他に、ルータ１１に対し、マルチキャストグループに属するホスト１の存在を認識させる場合にも行われる。マルチキャストグループに参加しない場合、受信したＩＧＭＰクエリ４０の応答としてＩＧＭＰレポート５０を送信する必要はない。このことから、ＩＧＭＰクエリ４０の受信は、通常、ＩＧＭＰレポート５０を生成する契機の一つである。
【００６４】
先ず、ＣＰＵ７１は、ＩＧＭＰメッセージ管理テーブル２３１が作成されているか否か判定する（ＳＰ３１）。ＩＧＭＰメッセージ管理テーブル２３１が存在しない、或いは存在するＩＧＭＰメッセージ管理テーブル２３１が現在、接続されているスイッチ１２のものではない場合、ＳＰ３１の判定はＮＯとなり、ここでＩＧＭＰメッセージ生成処理が終了する。一方、現在、接続されているスイッチ１２のＩＧＭＰメッセージ管理テーブル２３１が存在する場合、ＳＰ３１の判定はＹＥＳとなってＳＰ３２に移行する。
【００６５】
ＳＰ３１の判定がＮＯとなってＩＧＭＰメッセージ生成処理が終了した場合、図８にフローチャートを表すＩＧＭＰメッセージ管理テーブル作成処理が実行される。それにより、ＩＧＭＰメッセージ管理テーブル２３１は、必要に応じて作成される。
【００６６】
図２に表す構成例では、メッセージ受信部２１によって受信されたＩＧＭＰクエリ４０はＩＧＭＰメッセージ生成部２４によって処理される。ＩＧＭＰメッセージ生成部２４は、ＩＧＭＰクエリ４０の受信時に必要なＩＧＭＰメッセージ管理テーブル２３１が存在しない場合、ＬＡＧポート情報検索部２５、及びフロー探索部２６を制御し、ＩＧＭＰメッセージ管理テーブル２３１を作成させる。ＩＧＭＰメッセージ生成部２４は、ＩＧＭＰの設定が有効となった場合にも、同様にＩＧＭＰメッセージ管理テーブル２３１を作成させる。
【００６７】
図９の説明に戻る。
ＳＰ３２では、ＣＰＵ７１は、生成すべきＩＧＭＰレポート５０を生成した数をカウントするためのＩＧＭＰメッセージ生成数カウンタをリセット、つまりその値として０を格納する。このＩＧＭＰメッセージ生成数カウンタは、実際には例えば変数である。
【００６８】
次にＣＰＵ７１は、ＩＧＭＰメッセージ管理テーブル２３１に格納されたエントリを抽出し（ＳＰ３３）、抽出したエントリのマルチキャストアドレスを読み出す（ＳＰ３４）。マルチキャストアドレスを読み出したＣＰＵ７１は、そのマルチキャストアドレスをＩＰアドレスの宛先アドレスに設定し（ＳＰ３５）、ＩＧＭＰレポート５０を生成する（ＳＰ３６）。
【００６９】
次にＣＰＵ７１は、ＩＧＭＰメッセージ生成数カウンタの値をインクリメントする（ＳＰ３７）。そのインクリメントを行ったＣＰＵ７１は、次に、ＩＧＭＰメッセージ管理テーブル２３１のポート番号が格納されたエントリ分のＩＧＭＰレポートが未生成か否か判定する（ＳＰ３８）。そのエントリ分のＩＧＭＰレポートを生成した場合、つまり、ポート番号が格納されたエントリの数と、ＩＧＭＰメッセージ生成数カウンタの値とが一致する場合、ＳＰ２８の判定はＮＯとなり、ここでＩＧＭＰメッセージ生成処理が終了する。上記エントリ分のＩＧＭＰレポート５０を生成していない場合、ＳＰ３８の判定はＹＥＳとなり、上記ＳＰ３３に戻る。それにより、ＩＧＭＰメッセージ管理テーブル２３１から別のエントリの抽出が行われる。
【００７０】
図１０は、ホスト、及びそのホストが接続されたネットワークの動作例を表すシーケンス図である。最後に図１０を参照し、ホスト１、及びネットワーク１０を構成するルータ１１、スイッチ１２の動作について具体的に説明する。
【００７１】
図１０に表記の「ＳＷ＃Ａ」〜「ＳＷ＃Ｃ」は、ここではスイッチ１２Ａ〜スイッチ１２Ｃと表記する。オペレータは、例えばネットワーク１０、及びそのネットワーク１０に接続された各ノード１を管理する作業者である。オペレータによる実際の作業は、通常、端末装置を用いて行われる。
【００７２】
オペレータは、期間ｔ１内で、ネットワーク１０上のルータ１１、各スイッチ１２Ａ〜１２Ｃ、及びホスト１に対してＩＧＭＰを有効にする設定を行い、各スイッチ１２Ａ〜１２Ｃには更にＩＧＭＰスヌーピングを有効にする設定を行う（Ｓ１〜Ｓ５）。これらは初期設定として行われる。
【００７３】
期間ｔ２では、ＩＧＭＰメッセージ管理テーブル２３１の作成が行われる。ルータ１１は、マルチキャストグループへの参加を促す、或いはマルチキャストグループに属するホスト１１を確認するために、ＩＧＭＰクエリ４０をスイッチ１２Ｂに送信する（Ｓ１１）。このＩＧＭＰクエリ４０は、スイッチ１２Ｂからスイッチ１２Ａに転送され（Ｓ１２）、更にスイッチ１２Ａからホスト１に転送される（ＳＳ１３）。
【００７４】
ここでは、ＩＧＭＰクエリ４０の受信時、ホスト１はＩＧＭＰメッセージ管理テーブル２３１を作成していないと想定している。その想定により、ホスト１は、スイッチ１２Ａとのリモート接続を行う（Ｓ１４）。その後、ホスト１は、スイッチ１２Ａに構成情報確認コマンドを投入し（Ｓ１５）、スイッチ１２Ａから振り分け先となりうるポートのポート番号を取得する（Ｓ１６）。更にホスト１は、指定するマルチキャストアドレスを格納した振り分け確認コマンドをスイッチ１２Ａに投入し（Ｓ１７）、指定したマルチキャストアドレスで振り分け先となるポートのポート番号を取得する（Ｓ１８）。この振り分け確認コマンドの投入、及びポート番号の取得は、スイッチ１２Ａからポート番号を取得した全てのポートでマルチキャストアドレスを特定するまで繰り返し行われる。その結果、ＩＧＭＰメッセージ管理テーブル２３１が作成される。
【００７５】
ルータ１１は、予め定められた時間間隔でＩＧＭＰクエリ４０を送信する。期間ｔ３では、新たに行われるＩＧＭＰクエリ４０の転送により、ＩＧＭＰレポート５０の生成、生成されたＩＧＭＰレポート５０の送信が行われる。ルータ１１が新たに送信したＩＧＭＰクエリ４０は、ルータ１１からスイッチ１２Ｂ、スイッチ１２Ｂからスイッチ１２Ａ、スイッチ１２Ａからホスト１に順次、転送される（Ｓ２１〜Ｓ２３）。
【００７６】
ＩＧＭＰクエリ４０の受信により、ホスト１はスイッチ１２Ａで振り分け先となりうるポート分のＩＧＭＰレポート５０を作成する。作成したＩＧＭＰレポート５０のうちの一つがスイッチ１２Ａに送信され（Ｓ３１）、そのＩＧＭＰレポート５０を受信したスイッチ１２Ａは、マルチキャストテーブル４２の１つのエントリに、マルチキャストアドレス、及びポート番号を格納する（ＳＳ１）。また、スイッチ１２Ａは、受信したＩＧＭＰレポート５０をスイッチ１２Ｂに転送する（Ｓ３２）。それにより、スイッチ１２Ｂは、スイッチ１２Ａと同様に、マルチキャストテーブル４２の１つのエントリに、マルチキャストアドレス、及びポート番号を格納し（ＳＳ２）、受信したＩＧＭＰレポート５０をルータ１１に転送する（Ｓ３３）。
【００７７】
作成したＩＧＭＰレポート５０のうちの別の一つも、ホスト１からスイッチ１２Ａに送信され（Ｓ３４）。そのＩＧＭＰレポート５０を受信したスイッチ１２Ａは、マルチキャストテーブル４２の別の１つのエントリに、マルチキャストアドレス、及びポート番号を格納する（ＳＳ３）。そのＩＧＭＰレポート５０は、スイッチ１２Ａの別のポートから送信されることで、スイッチ１２Ｃに転送される（Ｓ３５）。
【００７８】
スイッチ１２Ｃは、ＩＧＭＰレポート５０の受信により、マルチキャストテーブル４２の１つのエントリに、マルチキャストアドレス、及びポート番号を格納する（ＳＳ４）。そのＩＧＭＰレポート５０は、スイッチ１２Ｃからルータ１１に転送される（Ｓ３６）。
【００７９】
上記Ｓ３４〜Ｓ３６のようなＩＧＭＰレポートの転送、及びＳＳ４のようなエントリへのマルチキャストアドレス、及びポート番号の格納は、スイッチ１２Ａが備える他のポートでも同様に行われる。Ｓｎ１、Ｓｎ２のＩＧＭＰレポート５０の転送、及びＳＳ５の処理は、作成したＩＧＭＰレポート５０のなかで最後のＩＧＭＰレポート５０をホスト１が送信した場合に行われる。
【００８０】
なお、本実施形態では、記憶部２３に格納されたアドレス情報２３２を用いることにより、ホスト１は、直接、接続されたスイッチ１２を対象にして、そのスイッチ１２で振り分け先となりうる各ポートから送信されるＩＧＭＰレポート５０を生成するようにしている。これは、ネットワーク１０を構成するスイッチ１２は、取り換えられる、或いはそのアドレスが変更される可能性があるためである。それにより、本実施形態では、ホスト１が認識しているスイッチ１２のみを対象にさせて、ＩＧＭＰレポート５０を生成させている。
【００８１】
図１等に表すネットワーク１０の構成は説明のために、非常に簡単なものとしている。しかし、実際のネットワーク１０の構成は、より複雑であることも多い。複雑なネットワーク１０、つまりスイッチ１２、或いはルータ１１の数が多くなるほど、障害が発生する確率は高くなる。確保する転送経路の数を多くするほど、ホスト１がマルチキャストパケットを受信できる可能性を高くすることができる。このことから、想定すべきスイッチ１２のアドレス情報をホスト１に登録させるか、或いはホスト１が取得できるようにしても良い。そのようにした場合、ＬＡＧポート情報検索部２５、及びフロー探索部２６は省いても良い。
【００８２】
また、本実施形態では、対象とするスイッチ１２でＩＧＭＰレポート５０の振り分け先となりうる全てのポートから、ＩＧＭＰレポート５０を送信させるようにしている。しかし、振り分け先となりうる全てのポートからＩＧＭＰレポート５０を送信させなくとも良い。本来、１つのポートのみからＩＧＭＰレポート５０が送信されることから、２つ以上のポートからＩＧＭＰレポート５０を送信させることで、より多くの転送経路を確保することができる。
【符号の説明】
【００８３】
１、１−１、１−２    ホスト
１０    ネットワーク
１１    ルータ
１２、１２−１〜１２−５    スイッチ
２３    記憶部
２４    ＩＧＭＰメッセージ生成部
２５    ＬＡＧポート情報検索部
２６    フロー探索部
２３１    ＩＧＭＰメッセージ管理テーブル
【図２】
2014131186.tif 000003
【図８】
2014131186.tif 000004
【図９】
2014131186.tif 000005
【図１０】
2014131186.tif 000006
【図１１】
2014131186.tif 000007
【図１】
2014131186.tif 000008
【図３】
2014131186.tif 000009
【図４】
2014131186.tif 000010
【図５】
2014131186.tif 000011
【図６】
2014131186.tif 000012
【図７Ａ】
2014131186.tif 000013
【図７Ｂ】
2014131186.tif 000014