(57)【要約】【課題】  複数の分岐装置を利用することにより、転送容量を向上させることができるマルチキャストデータ転送方法及びシステムを提供する。【解決手段】  クライアントからの受信要求を分散装置が受けて分岐装置へ送信し、受信要求を受けた分岐装置は受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求をサーバへ送信する。また、受信要求の要求元に対してデータ送信が不可能であれば、仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、その受信要求を受けた分岐装置も同様の処理を繰り返す。【選択図】  図１
2006340176.tif 000002
【特許請求の範囲】
【請求項１】
１台以上のサーバと、２台以上のクライアントと、１台以上の分散装置及び２台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、
前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、
前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信し、
前記受信要求を受けた分岐装置は前記受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信し、
前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、
その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送方法。
【請求項２】
自身の識別情報を含んだ受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、
分岐装置が前記自身の識別情報を含んだ受信要求を受信した場合には、該受信要求を破棄することを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項３】
前記仮想分岐装置を構成する分岐装置数を含む受信要求を、前記リング情報に基づいて定まる次の分岐装置へ転送し、
前記分岐装置数を含む受信要求を受信した分岐装置は、分岐装置数を１減算した受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、
前記分岐装置数が０である受信要求を受信した分岐装置は、その受信要求を破棄する
ことを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項４】
前記分岐装置は配送表に登録されているクライアントから停止要求を受信した場合に、
前記分岐装置が受信要求を送信している要求先である分岐装置又はクライアントを、前記リング情報に基づいて前の分岐装置へ通知し、
前記前の分岐装置は、前記要求先に対して受信要求を送信する
ことを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項５】
前記分岐装置は、受信要求を送信してきた要求元である分岐装置を配送表に登録した場合に、前記リング情報に基づいて次の分岐装置に対して、前記要求元を配送表から削除するように指示することを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項６】
前記分岐装置は、受信要求を受信した場合にデータを送信不可能であれば、配送表に受信要求を送信してきた分岐装置である要求元を仮登録し、データを送信可能である場合には前記配送表に本登録されている要求元にのみ送信し、
停止要求の送信可否を判断する場合には、前記仮登録されている要求元の数を含めて判断を行うことを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項７】
前記分岐装置は、前記リング情報の前の分岐装置から受信した受信要求により要求するデータについての情報が配送表に登録されていない場合、又は、前記前の分岐装置の配送表から前記要求元を削除するように指示する場合に、前記前の分岐装置が送信する受信要求又は停止要求を前記リング情報の次の分岐装置へ転送することを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項８】
前記分散装置又は分岐装置は、同一の仮想分岐装置を構成する分岐装置の状態を監視し、該分岐装置の台数に増減があった場合には新たなリング情報を作成し、分岐装置へ配布することを特徴とする請求項１に記載のマルチキャストデータ転送方法。
【請求項９】
１台以上のサーバと、２台以上のクライアントと、１台以上の分散装置及び２台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、
前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、
前記分散装置は、
前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信する送信手段を有し、
前記分岐装置は、
前記受信要求を受信し、該受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信する送信手段と、
前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送する転送手段とを有し、
その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバが送出したデータを、分岐装置が複製することで複数のクライアントに配信するマルチキャストサービスにおけるマルチキャストデータ転送方法及びシステムに関する。
【背景技術】
【０００２】
従来から、複数のクライアントに対してデータを同報するマルチキャスト通信を実現する方法として、クライアントからの受信要求を分岐装置が捕獲し、分岐点となることで、木状の配信経路を構築するマルチキャスト方式が知られている（特許文献１参照）。
この方式では、分岐装置は要求元をチャネル（番組）ごとに記録する表（配送表）を管理する。分岐装置がクライアント側から受信要求を受信すると、受信要求からチャネルを読み取り、要求元を配送表に記録する。分岐装置はサーバ宛に受信要求を送信する。分岐装置がサーバ側からデータを受信すると、配送表に記録されている要求元へと転送する。
【０００３】
また、本願の発明者により、受信要求を分散する装置と分岐装置を論理的に組み合わせることで、仮想的な分岐装置を構成する技術についての特許出願が行われている（特願２００４−１５９４７０）。この技術では、分岐装置のデータ転送性能や信頼性を向上させることが可能であり、次のように動作する。クライアント側から送信されてきた受信要求は、まず分散装置に捕獲される。分散装置は、要求されているチャネルごとに、そのチャネルを担当する分岐装置を決定する。そして、受信要求をその分岐装置へ転送する。分岐装置は、要求元を配送表に記録し、サーバ宛に受信要求を送信する。分岐装置がサーバ側からデータを受信すると、配送表に記録されている要求元へと転送する。このような処理を行うことにより、データ転送負荷を複数の分岐装置に分散させることができる。また、分散装置が分岐装置の状態を監視し、障害が発生した分岐装置を分散対象から外すことで、信頼性を向上させることができる。
【特許文献１】特開２００３−３２３００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来使用されていた技術では、チャネルあたりの要求元の数が分岐装置の転送容量を越えると、転送できなくなるという課題があった。つまり、ひとつのチャネルを複数の分岐装置に担当させることができなかった。このため、チャネルあたりの最大分岐数が、分岐装置１台あたりの転送容量によって制限されていた。
【０００５】
本発明は、上記事情に鑑みてなされたものであり、その目的は、複数の分岐装置を利用することにより、転送容量を向上させることができるマルチキャストデータ転送方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、上記課題を解決するためになされたもので、請求項１に記載の発明は、１台以上のサーバと、２台以上のクライアントと、１台以上の分散装置及び２台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信し、前記受信要求を受けた分岐装置は前記受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信し、前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送し、その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送方法である。
【０００７】
また、請求項２に記載の発明は、自身の識別情報を含んだ受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、分岐装置が前記自身の識別情報を含んだ受信要求を受信した場合には、該受信要求を破棄することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【０００８】
また、請求項３に記載の発明は、前記仮想分岐装置を構成する分岐装置数を含む受信要求を、前記リング情報に基づいて定まる次の分岐装置へ転送し、前記分岐装置数を含む受信要求を受信した分岐装置は、分岐装置数を１減算した受信要求を前記リング情報に基づいて定まる次の分岐装置へ転送し、前記分岐装置数が０である受信要求を受信した分岐装置は、その受信要求を破棄することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【０００９】
また、請求項４に記載の発明は、前記分岐装置は配送表に登録されているクライアントから停止要求を受信した場合に、前記分岐装置が受信要求を送信している要求先である分岐装置又はクライアントを、前記リング情報に基づいて前の分岐装置へ通知し、前記前の分岐装置は、前記要求先に対して受信要求を送信することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【００１０】
また、請求項５に記載の発明は、前記分岐装置は、受信要求を送信してきた要求元である分岐装置を配送表に登録した場合に、前記リング情報に基づいて次の分岐装置に対して、前記要求元を配送表から削除するように指示することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【００１１】
また、請求項６に記載の発明は、前記分岐装置は、受信要求を受信した場合にデータを送信不可能であれば、配送表に受信要求を送信してきた分岐装置である要求元を仮登録し、データを送信可能である場合には前記配送表に本登録されている要求元にのみ送信し、停止要求の送信可否を判断する場合には、前記仮登録されている要求元の数を含めて判断を行うことを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【００１２】
また、請求項７に記載の発明は、前記分岐装置は、前記リング情報の前の分岐装置から受信した受信要求により要求するデータについての情報が配送表に登録されていない場合、又は、前記前の分岐装置の配送表から前記要求元を削除するように指示する場合に、前記前の分岐装置が送信する受信要求又は停止要求を前記リング情報の次の分岐装置へ転送することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【００１３】
また、請求項８に記載の発明は、前記分散装置又は分岐装置は、同一の仮想分岐装置を構成する分岐装置の状態を監視し、該分岐装置の台数に増減があった場合には新たなリング情報を作成し、分岐装置へ配布することを特徴とする請求項１に記載のマルチキャストデータ転送方法である。
【００１４】
また、請求項９に記載の発明は、１台以上のサーバと、２台以上のクライアントと、１台以上の分散装置及び２台以上の分岐装置を組み合わせてなる仮想分岐装置と、それらを接続するネットワークとからなるマルチキャストデータ転送システムであって、前記クライアントからの受信要求を前記分散装置を介して前記分岐装置が受信し、該分岐装置が新たな受信要求を生成して前記サーバへ送信し、前記サーバがその受信要求を受けてデータを前記分岐装置へ送信し、前記分岐装置がそのデータを前記クライアントへ送信するマルチキャストデータ転送システムにおいて、前記分散装置は、前記クライアントからの受信要求を前記分散装置が受けて前記分岐装置へ送信する送信手段を有し、前記分岐装置は、前記受信要求を受信し、該受信要求の要求元に対してデータ送信可能であれば、配送表に登録した後、自身を要求元とする受信要求を前記サーバへ送信する送信手段と、前記受信要求の要求元に対してデータ送信が不可能であれば、前記仮想分岐装置を構成する各分岐装置に予め設定された順番を示すリング情報に基づいて次の分岐装置を検知し、検知した分岐装置へ受信要求を転送する転送手段とを有し、その受信要求を受けた分岐装置も同様の処理を繰り返すことを特徴とするマルチキャストデータ転送システムである。
【発明の効果】
【００１５】
本発明では、複数の分岐装置に対してリング状に順番付けたリング情報を設定し、クライアントに対してデータを送信できない場合には、そのリング情報に対して受信要求を転送するようにした。これにより、分岐装置１台あたりの転送容量が制限されることを防ぐことができ、ネットワークにかかる負荷を分散することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照し、本発明の実施形態について説明する。
図１は、本発明の実施形態による負荷分散システムの構成図である。本実施形態では、サーバＶ、クライアントＬ１〜Ｌ２１、分岐装置Ｓ１〜Ｓ３を、分散装置Ｂに接続している。なお、分散装置Ｂの位置にルータを置き、分散装置Ｂを分岐装置Ｓ１〜Ｓ３と同じ位置に接続しても良い。分散装置Ｂと分岐装置Ｓ１〜Ｓ３は、仮想的な１台の仮想分岐装置Ｓｖとして動作する。動作の詳細は後述する。
なお、ここでは、仮想分岐装置Ｓｖが１台しか存在しない場合について説明するが、実際にはネットワーク中に何台存在していても良い。例えば、分散装置ＢとクライアントＬ１〜Ｌ２１の間に仮想分岐装置Ｓｖが存在する場合には、分散装置Ｂからみると仮想分岐装置Ｓｖがクライアントのように見えることになる。
【００１７】
図２は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、分岐装置Ｓ１〜Ｓ３の情報を、分散装置Ｂの登録表１０に登録する処理と、それに関連する処理を示している。サーバＶと分岐装置Ｓ１〜Ｓ３は、それぞれ配送表と呼ばれる表を管理している。配送表には、配送を担当しているチャネルと、そのチャネルを要求しているクライアントや分岐装置の情報が記録される。配送表の詳細な構成は後述する。分散装置Ｂは、登録表１０を管理している。登録表１０には、仮想分岐装置Ｓｖを構成している分岐装置Ｓ１〜Ｓ３の情報が記録される。ここで、チャネルとは、番組名やマルチキャストアドレスのようにデータ流を識別するために用いられるＩＤのことをいう。
【００１８】
分岐装置Ｓ１〜Ｓ３は、キープアライブと呼ばれるパケットを定期的に分散装置Ｂに送信する（ステップｓ１０１ａ、ｓ１０２ａ、ｓ１０３ａ）。分散装置Ｂは、継続的にキープアライブを受信している分岐装置の情報を、登録表１０に記録する。また、分散装置Ｂは登録表１０に記録されている分岐装置Ｓ１〜Ｓ３に順番をつけ、論理的なリングを作成する。順番を決定する方法は任意であるが、ここでは、Ｓ１、Ｓ２、Ｓ３と順に並べ、最後にＳ１に戻るようなリング（Ｓ１→Ｓ２→Ｓ３→Ｓ１→・・・）を作成する場合について説明する。そして、このリング情報を分岐装置Ｓ１〜Ｓ３にそれぞれ送信する（ステップｓ１０４ａ、ｓ１０５ａ、ｓ１０６ａ）。なお、リング情報は更新されたときのみ送信すればよい。このリング情報は、ひとつのチャネルを複数の分岐装置Ｓ１〜Ｓ３に担当させるために用いる。詳細については後述する。ここで、リング情報とは、仮想分岐装置Ｓｖを構成する分岐装置に順番をつけて論理的なリングを構成するための情報をいう。
【００１９】
ここで、分岐装置Ｓ３に障害が発生したとする。すると、分岐装置Ｓ１及びＳ２からはキープアライブを受信することはできるものの（ステップｓ１０１ｂ、ｓ１０２ｂ）、分岐装置Ｓ３からのキープアライブは途絶える。分散装置Ｂは、一定時間キープアライブが途絶えると、登録表１０から分岐装置Ｓ３の情報を削除する。そして、登録表１０に登録されている分岐装置Ｓ１、Ｓ２を用いてリング情報を作成し直し（Ｓ１→Ｓ２→Ｓ１→・・・）、分岐装置Ｓ１、Ｓ２へ送信する（ステップｓ１０４ｂ、ｓ１０５ｂ）。しばらくして、分岐装置Ｓ３が復旧し、またキープアライブを分散装置Ｂに対して送信するようになると（ステップｓ１０３ｃ）、分散装置Ｂは分岐装置Ｓ３の情報を登録表１０に登録するとともに、リング情報を作成し直し（Ｓ１→Ｓ２→Ｓ３→Ｓ１→・・・）、分岐装置Ｓ１〜Ｓ３にそれぞれ送信する（ステップｓ１０４ｃ、ｓ１０５ｃ、ｓ１０６ｃ）。このようにすることで、分散装置Ｂは、利用可能な分岐装置を知ることができる。また、分岐装置Ｓ１〜Ｓ３は、リング情報を受け取ることによって、分岐装置間の順序付けを知ることができる。
【００２０】
図３は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、クライアントＬ１が、サーバＶから配信されるチャネルＣのデータを受信する処理について示している。分散装置Ｂの登録表１０には、分岐装置Ｓ１〜Ｓ３の情報が登録されている。分岐装置Ｓ１〜Ｓ３は、ひとつのチャネルも配信していない。なお、分岐装置Ｓ１〜Ｓ３は、それぞれ１０台までのクライアントを収容できるようになっている。
【００２１】
まず、クライアントＬ１は、受信要求Ｒ１を送信する（ステップｓ２０１）。受信要求Ｒ１には、要求元のクライアントＬ１とサーバＶ、チャネルＣの情報が含まれている。クライアントＬ１からサーバＶへの経路上に分散装置Ｂが置かれていると、分散装置Ｂは受信要求Ｒ１を横取りする。これは、例えば、クライアントＬ１が送信する受信要求Ｒ１の宛先ポート番号を特定番号に定めておき、分散装置Ｂが自身を通過するパケットの宛先ポート番号を監視することで実現することが可能である。クライアントＬ１は、受信を要求し続ける限り、受信要求Ｒ１を定期的に分散装置Ｂへ送信する。分散装置Ｂは、何らかのアルゴリズムを用いて、チャネルＣを最初に担当する分岐装置を決定する。このアルゴリズムとしては、分岐装置を順番に選択するアルゴリズムであるラウンドロビンや、乱数のように単純なアルゴリズムや、負荷の小さい分岐装置を選択するようなアルゴリズムなどを使用することができる。ここでは、ラウンドロビンを使用し、分岐装置Ｓ１が選択されたものとする。すると、分散装置Ｂは、登録表１０中のＳ１の行にチャネルＣを登録し、受信要求Ｒ１を分岐装置Ｓ１へ送信する（ステップｓ２０２）。
【００２２】
受信要求Ｒ１を受信した分岐装置Ｓ１は、チャネルＣの要求元であるクライアントＬ１が配送表１１ａに登録されているか否かについてチェックする。この時点では登録されていない。登録されていない場合には、要求元であるクライアントＬ１を収容したときに、収容数上限（ここでは、１０台のクライアント）を越えるか否かについてチェックする。この時点では収容上限未満である。すると、分岐装置Ｓ１は、配送表１１ａ中にチャネルＣの行を作り、要求元であるクライアントＬ１を登録する。ここで、チャネルＣの次に括弧で記されている初期担当（ここでは、分岐装置Ｓ１）と、矢印の右に記されている要求先（ここでは、サーバＶ）も登録しておく。初期担当とは、分散装置Ｂが選択した、チャネルＣを最初に担当する分岐装置のことである。
【００２３】
分岐装置Ｓ１は、受信要求Ｒ１を分散装置Ｂから受信したため、自身が初期担当であることが分かる。これは、初期担当以外の分岐装置は、リングの前にあたる分岐装置から受信要求Ｒ１を受信するからである。配送表１１ａへの登録を完了した分岐装置Ｓ１は、自身を要求元とする受信要求Ｒ２を作成し、サーバＶ宛に送信する（ステップｓ２０３）。分散装置Ｂは、クライアントＬ１から送信される受信要求Ｒ１は横取りしたが、分岐装置Ｓ１から送信される受信要求Ｒ２は横取りしない。これは、例えば、パケットの送信元アドレスをチェックすることで実現できる。
受信要求Ｒ２を受信したサーバＶは、チャネルＣの要求元である分岐装置Ｓ１が配送表１１ｄに登録されているか否かについてチェックする。この時点では登録されていない。すると、サーバＶは、配送表１１ｄにチャネルＣの行を作り、要求元である分岐装置Ｓ１を登録する。
【００２４】
その後、サーバＶはチャネルＣのデータＤ１を、配送表１１ｄのチャネルＣの行に登録されている要求元である分岐装置Ｓ１に送信する（ステップｓ２０４）。データＤ１を受信した分岐装置Ｓ１も同様に、データＤ１を配送表１１ａのチャネルＣの行に登録されている要求元であるクライアントＬ１へ送信する（ステップｓ２０５）。なお、詳しくは後述するが、仮想分岐装置Ｓｖを構成している分岐装置Ｓ１〜Ｓ３は、受信したデータＤ１をリングの前に当たる分岐装置へと転送する。ただし、初期担当の分岐装置だけは転送しない。よって、ここでは、分岐装置Ｓ１は、要求元のクライアントＬ１のみに送信することとなる。
【００２５】
図４は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。図３で説明したシーケンス図による処理の後、クライアントＬ２〜Ｌ１０も受信要求Ｒ１を送信し、分岐装置Ｓ１の配送表１１ａに登録されたとする。この時点で、分岐装置Ｓ１の配送表１１ａには１０台のクライアントが登録されており、収容上限に達している。
ここで、クライアントＬ１１は受信要求Ｒ３を分散装置Ｂに対して送信する（ステップｓ３０１）。分散装置Ｂが受信要求Ｒ３を受信すると、チャネルＣの初期担当である分岐装置Ｓ１に転送する（ステップｓ３０２）。分岐装置Ｓ１は収容上限に達しているため、次のようにして受信要求Ｒ３をリングの次にあたる分岐装置Ｓ２へ転送する。
【００２６】
まず、配送表１１ａの要求先を、サーバＶから分岐装置Ｓ２に変更する。受信要求Ｒ３に初期担当が分岐装置Ｓ１であることを追記し、それを受信要求Ｒ４として、分岐装置Ｓ２へ送信する（ステップｓ３０３）。初期担当を追加するのは、受信要求Ｒ４がリングを無限に周回することを避けるためである。あるいは、受信要求Ｒ４にカウンタを設けても良い。例えば、リング構成ノード数３を記載し、受信要求Ｒ４が分岐装置を転送されるたびに１ずつ減算し、０になったら廃棄するようにすれば、受信要求Ｒ４がリングを無限に周回することを回避できる。最後に、停止要求Ｐ１を作成し、サーバＶ宛に送信する（ステップｓ３０４）。
【００２７】
受信要求Ｒ４を受信した分岐装置Ｓ２は、図３において受信要求Ｒ１を受信した分岐装置Ｓ１とほぼ同様に動作する。まず、チャネルＣの要求元Ｌ１１が配送表に登録されているか否かについてチェックする。この時点では登録されていない。登録されていない場合には、要求元であるクライアントＬ１１を収容したときに、収容数上限を越えるか否かについてチェックする。この時点では収容上限未満である。すると、分岐装置Ｓ２は、配送表１１ｂにチャネルＣの行を作成し、要求元であるクライアントＬ１１を登録する。配送表１１ｂに登録する初期担当は、受信要求Ｒ４に記載された分岐装置Ｓ１とする。なお、無限周回を回避するためにカウンタを用いるときには、カウンタの値とリングの順序から、初期担当を推定する。また、要求先としてサーバＶを登録する。最後に、自身を要求元とする受信要求Ｒ５を作成し、サーバＶ宛に送信する（ステップｓ３０５）。
【００２８】
サーバＶは、分岐装置Ｓ１から停止要求Ｐ１を受信し、分岐装置Ｓ２から受信要求Ｒ５を受信する。その結果、サーバＶの配送表１１ｄには分岐装置Ｓ２が登録されることとなる。ただし、配送表１１ｄから分岐装置Ｓ１を削除してから分岐装置Ｓ２が登録されるまでの間は、サーバＶからのデータが停止することとなる。あるいは、分岐装置Ｓ２からの受信要求Ｒ５が先に届いた場合には、分岐装置Ｓ１が配送表１１ｄから削除されるまでの間、サーバＶからのデータＤ２が重複して配信されることとなる。この問題点の回避方法は後述する。
【００２９】
その後、サーバＶはチャネルＣのデータＤ２を、配送表１１ｄのチャネルＣの行に登録されている要求元である分岐装置Ｓ２へ送信する（ステップｓ３０６）。データＤ２を受信した分岐装置Ｓ２も同様に、データＤ２を配送表１１ｂのチャネルＣの行に登録されている要求元であるクライアントＬ１１に送信する（ステップｓ３０８）。分岐装置Ｓ２は、リングの前に当たる分岐装置Ｓ１にもデータＤ２を転送する（ステップｓ３０７）。分岐装置Ｓ１は、データＤ２を配送表１１ａのチャネルＣの行に登録されている要求元であるクライアントＬ１〜Ｌ１０へ送信する（ステップｓ３０９）。このような処理を行うことで、ひとつのチャネルを複数の分岐装置で担当することが可能となり、仮想分岐装置Ｓｖとしての転送容量を向上させることができる。
【００３０】
図５は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。このシーケンス図は、クライアントが受信を停止する場合の動作について示している。図４で説明したシーケンス図による処理の後、クライアントＬ１２〜Ｌ２０が受信要求を送信し、分岐装置Ｓ２の配送表１１ｂに登録されたとする。この時点で分岐装置Ｓ２が収容上限となったため、その次に受信要求を送信したクライアントＬ２１は、分岐装置Ｓ３の配送表１１ｃに登録されたとする。ここでは、クライアントＬ２１が受信を停止したことによって、分岐装置Ｓ３の配送表１１ｃから全てのクライアントが削除された状態について説明する。その他の場合については後述する。
【００３１】
クライアントＬ２１は停止要求Ｐ２を分散装置Ｂに対して送信する（ステップｓ４０１）。分散装置Ｂは、停止要求Ｐ２を初期担当である分岐装置Ｓ１へ転送する（ステップｓ４０２）。分岐装置Ｓ１は、配送表１１ａに要求元であるクライアントＬ２１が登録されていないため、停止要求Ｐ２を要求先である分岐装置Ｓ２へ転送する（ステップｓ４０３）。分岐装置Ｓ２も同様にして、停止要求Ｐ２を要求先である分岐装置Ｓ３へ転送する（ステップｓ４０４）。
分岐装置Ｓ３は、停止要求Ｐ２を受信すると、配送表１１ｃから要求元であるクライアントＬ２１の情報を削除する。ここで、チャネルＣを要求するクライアントがいなくなったため、要求元であるサーバＶ宛に停止要求Ｐ３を送信する（ステップｓ４０５）。また、リングの前にあたる分岐装置Ｓ２に、要求先をサーバＶに変更するよう指示する（ステップｓ４０６）。正確には、分岐装置Ｓ３の要求先に変更するように指示する。
分岐装置Ｓ２は、指示に従い、要求先をサーバＶに変更するとともに、受信要求Ｒ６をサーバＶへ送信する（ステップｓ４０７）。
【００３２】
サーバＶは、停止要求Ｐ３を受信すると要求元である分岐装置Ｓ３を削除し、受信要求Ｒ６を受信すると要求元である分岐装置Ｓ２を登録する。その結果、配送表１１ｄには分岐装置Ｓ２のみが登録されることとなる。ただし、配送表１１ｄから分岐装置Ｓ３を削除してから分岐装置Ｓ２が登録されるまでの間は、サーバＶからのデータが停止することになる。この問題点の回避方法は後述する。
なお、分岐装置Ｓ３が、分岐装置Ｓ２に要求先の変更を指示したのは、サーバＶからのデータが永久に止まってしまうことを避けるためである。もし、分岐装置Ｓ２が受信要求Ｒ６をサーバＶへ送信しなければ、サーバＶの配送表１１ｄは空になったままとなる。
【００３３】
図６は、本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。図６のシーケンス図の初期状態は、図５のシーケンス図の初期状態と同じである。ここでは、クライアントが受信を停止したことによって、分岐装置を要求先とする分岐装置の配送表からクライアントが削除されたときの動作について説明する。ここでは、分岐装置Ｓ２の配送表１１ｂからクライアントＬ２０が削除される場合について説明する。
クライアントＬ２０は停止要求Ｐ３を分散装置Ｂに対して送信する（ステップｓ５０１）。分散装置Ｂは、停止要求Ｐ３を初期担当である分岐装置Ｓ１へ転送する（ステップｓ５０２）。分岐装置Ｓ１は、配送表１１ａに要求元であるクライアントＬ２０が登録されていないため、停止要求Ｐ３を要求先である分岐装置Ｓ２に転送する（ステップｓ５０３）。分岐装置Ｓ２は、停止要求Ｐ３を受信すると、配送表１１ｂから要求元であるクライアントＬ２０を削除する。
【００３４】
しばらくすると、クライアントＬ２１が受信要求Ｒ７を分散装置Ｂに対して送信する（ステップｓ５０４）。これは、受信中は受信要求Ｒ７が繰り返し送信されるためである。分散装置Ｂは、受信要求Ｒ７を初期担当である分岐装置Ｓ１へ転送する（ステップｓ５０５）。分岐装置Ｓ１にとっては、要求元であるクライアントＬ２１は新規クライアントであるが、収容上限を超えるため、受信要求Ｒ７を分岐装置Ｓ２１へ転送する（ステップｓ５０６）。
分岐装置Ｓ２にとっては、要求元であるクライアントＬ２１は新規クライアントであり、さらに収容可能であるため、配送表１１ｂに登録する。しかし、クライアントＬ２１がリングの後続に登録されている可能性がある。
【００３５】
そこで、分岐装置Ｓ２は、要求元をクライアントＬ２１とした停止要求Ｐ４を作成し、リングの後続である分岐装置Ｓ３へ送信する（ステップｓ５０７）。分岐装置Ｓ３は要求元であるクライアントＬ２１を削除する。以後の動作は、図５において分岐装置Ｓ３が要求元であるクライアントＬ２１を削除した後の動作と同じである。
図６で説明した処理では、分岐装置Ｓ２が停止要求Ｐ４を送信することによって、２つの分岐装置Ｓ２、Ｓ３がクライアントＬ２１にデータを配信してしまうことを回避した。
なお、図６に示したように、分岐装置Ｓ２が配送表１１ｂにクライアントＬ２１を登録してから分岐装置Ｓ３がクライアントＬ２１を削除するまでの間は、クライアントＬ２１に重複してデータが配信されることとなる。
【００３６】
図７〜９は、本実施形態による負荷分散システムによる別の処理の流れを示すシーケンス図である。図７〜９では、図５、６で解決した課題を異なる方法で解決する。ここでは、図４と同じ状態から処理を開始する場合について説明する。分岐装置Ｓ１の配送表１１ａには１０台のクライアントが登録されており、収容上限に達している。
ここで、クライアントＬ１１は受信要求Ｒ３を分散装置Ｂに対して送信する（ステップｓ６０１）。分散装置Ｂが受信要求Ｒ８を受信すると、チャネルＣの初期担当である分岐装置Ｓ１へ転送する（ステップｓ６０２）。分岐装置Ｓ１は、要求元であるクライアントＬ１１を配送表１１ａに登録する。ただし、収容上限に達しているため、括弧を付けて記録しておく。括弧つきで記載されているクライアントは、リングの後方にそのクライアントが登録されていることを意味し、データの配信対象にはならない。
【００３７】
分岐装置Ｓ１は収容上限に達したため、配送表１１ａの要求先をサーバＶから分岐装置Ｓ２に変更する。受信要求Ｒ８に初期担当が分岐装置Ｓ１であることを追記し、それを受信要求Ｒ９として、分岐装置Ｓ２へ送信する（ステップｓ６０３）。そして、停止要求Ｐ１を作成し、それを受信要求Ｒ１０としてサーバＶ宛へ送信する（ステップｓ６０４）。
受信要求Ｒ１０を受信した分岐装置Ｓ２の動作は、図４と同じである。
図７に示したように、サーバＶが分岐装置Ｓ２からの受信要求Ｒ１０を受信してから、分岐装置Ｓ１からの停止要求Ｐ５を受信（ステップＳ６０５）するまでの間は、サーバＶからのデータが重複して配信されることとなる。受信要求Ｒ１０と停止要求Ｐ５の到着順序が逆になったときには、サーバＶからのデータが停止することになる。この問題点の回避方法は後述する。
【００３８】
図７で説明した処理の後、クライアントＬ１２〜Ｌ２０が受信要求を送信することにより、図８に示すように、分岐装置Ｓ２の配送表１１ｂに登録される。この時点で分岐装置Ｓ２が収容上限となったため、その次に受信要求を送信したクライアントＬ２１は、分岐装置Ｓ３の配送表１１ｃに登録される。このときの状態は図５の処理の開始時点とほぼ同じであるが、分岐装置Ｓ１の配送表１１ａに括弧つきでクライアントＬ１１〜Ｌ２１が登録されており、分岐装置Ｓ２の配送表１１ｂに括弧つきでクライアントＬ２１が登録されている点が異なる。
【００３９】
ここでは、クライアントが受信を停止したことによって、分岐装置Ｓ３の配送表１１ｃから全てのクライアントが削除された状態について説明する。クライアントＬ２１は停止要求Ｐ６を分散装置Ｂに対して送信する（ステップｓ７０１）。分散装置Ｂは、停止要求Ｐ６を初期担当である分岐装置Ｓ１へ転送する（ステップｓ７０２）。分岐装置Ｓ１は、配送表１１ａから要求元であるクライアントＬ２１を削除する。削除した要求元が配送表１１ａで括弧つきで記録されていた場合には、その停止要求Ｐ６を要求先である分岐装置Ｓ２へ転送する（ステップｓ７０３）。分岐装置Ｓ２も同様にして、要求元であるクライアントＬ２１を配送表から削除し、停止要求Ｐ６を要求先である分岐装置Ｓ３へ転送する（ステップｓ７０４）。これにより、分岐装置Ｓ２の配送表１１ｂから括弧つきの要求元がなくなった。これは、リングの後方に要求元がなくなったことを意味しており、分岐装置Ｓ２がサーバＶに受信要求を送らなければならないことを意味している。そこで、分岐装置Ｓ２は、要求先をサーバＶに変更し、受信要求Ｒ１１を送信する（ステップｓ７０６）。
【００４０】
分岐装置Ｓ３は、停止要求Ｐ６を受信すると、配送表１１ｃから要求元であるクライアントＬ２１を削除する。ここで、チャネルＣを要求するクライアントがいなくなったため、要求元であるサーバＶ宛に停止要求Ｐ７を送信する（ステップｓ７０５）。
サーバＶは、停止要求Ｐ７を受信すると要求元である分岐装置Ｓ３を削除し、受信要求Ｒ１１を受信すると要求元である分岐装置Ｓ２を登録する。その結果、配送表１１ｄには分岐装置Ｓ２のみが登録されることとなる。ただし、配送表１１ｄから分岐装置Ｓ３を削除してから分岐装置Ｓ２が登録されるまでの間は、サーバＶからのデータが停止することになる。この問題点の回避方法は後述する。
図５の説明で述べたように、図８に示した状況では、何らかの工夫を行わないとサーバＶからのデータが永久に止まってしまう。分岐装置がリングの後方に登録されている要求元を配送表に括弧つきで登録しておくことにより、この問題を回避することができる。
【００４１】
図９は、クライアントが受信を停止する場合の処理について説明する。ここでは、図６と同じ課題を、異なる方法で解決する。図９の初期状態は、図８の初期状態と同じである。ここでは、クライアントが受信を停止したことによって、分岐装置を要求先とする分岐装置の配送表からクライアントが削除された場合の処理について説明する。この例では、分岐装置Ｓ２の配送表１１ｂからクライアントＬ２０が削除される。
クライアントＬ２０は停止要求Ｐ８を分散装置Ｂに対して送信する（ステップＳ８０１）。分散装置Ｂは、停止要求Ｐ８を初期担当である分岐装置Ｓ１へ転送する（ステップＳ８０２）。分岐装置Ｓ１は、配送表１１ａから要求元であるクライアントＬ２０を削除する。削除した要求元が配送表上で括弧つきであるため、その停止要求Ｐ８を要求先である分岐装置Ｓ２へ転送する（ステップＳ８０３）。
【００４２】
分岐装置Ｓ２は停止要求Ｐ８を受信すると、配送表１１ｂから要求元Ｌ２０を削除する。しばらくすると、クライアントＬ２１が受信要求Ｒ１２を分散装置Ｂに対して送信する（ステップｓ８０４）。これは、受信中は受信要求Ｒ１２が繰り返し送信されるためである。分散装置Ｂは、受信要求Ｒ１２を初期担当である分岐装置Ｓ１に転送する（ステップｓ８０５）。分岐装置Ｓ１にとっては、要求元であるクライアントＬ２１は新規クライアントであるが、収容上限を超えるため、受信要求Ｒ１２を分岐装置Ｓ２へ転送する（ステップｓ８０６）。
クライアントＬ２０を削除したため、分岐装置Ｓ２は新たなクライアントを収容可能である。しかし、要求元であるクライアントＬ２１は括弧つきで登録してあり、このことはリングの後続ノードに登録されていることを意味する。そこで、分岐装置Ｓ２は要求元であるクライアントＬ２１を登録せずに、受信要求Ｒ１２を要求先である分岐装置Ｓ３へ転送する（ステップｓ８０７）。
【００４３】
図６の説明で述べたように、図９に示した状況では、何らかの工夫を行わないと、二つの分岐装置Ｓ２、Ｓ３がクライアントＬ２１にデータを配信してしまう。分岐装置がリングの後方に登録されている要求元を配送表に括弧つきで登録しておくことにより、この問題を回避することができた。さらに、図６ではデータの重復配信が見られたが、図９ではそのような問題も見られない。
【００４４】
次に、ある分岐装置が送信する受信要求あるいは停止要求を、異なる分岐装置が代理送信する方法について説明する。この方法は、例えば図４に見られたデータ重複を解決する。図４で、分岐装置Ｓ２がサーバＶに受信要求Ｒ５を送信するとき（ステップＳ３０５）、受信要求Ｒ５と停止要求Ｐ１をひとつのメッセージとして送信する。そして、分岐装置Ｓ１は停止要求Ｐ１の送信を止める。このようにすることで、受信要求Ｒ５と停止要求Ｐ１の到着時刻差が原因で発生するデータ重複を回避することができる。
同様にして、図５においては、分岐装置Ｓ３が停止要求Ｐ３と受信要求Ｒ６をひとつのメッセージとして送信するようにする。また、分岐装置Ｓ３は分岐装置Ｓ２への要求先変更指示を停止するようにする。このような処理を行うことで、受信要求Ｒ６と停止要求Ｐ３の到着時刻差が原因で発生するデータ欠落を回避できる。
【００４５】
同様にして、図７においては、分岐装置Ｓ２が受信要求Ｒ１０と停止要求Ｐ５をひとつのメッセージとして送信するようにする。また、分岐装置Ｓ１は停止要求Ｐ５の送信を止めるようにする。このような処理を行うことで、受信要求Ｒ１０と停止要求Ｐ５の到着時刻差が原因で発生するデータ重複を回避できる。
同様にして、図８においては、分岐装置Ｓ３が停止要求Ｐ７と受信要求Ｒ１１をひとつのメッセージとして送信するようにする。また、分岐装置Ｓ２は受信要求Ｒ１１の送信を止めるようにする。このようにすることで、受信要求Ｒ１１と停止要求Ｐ７の到着時刻差が原因で発生するデータ欠落を回避できる。
【００４６】
なお、以上説明した実施形態において、図１の仮想分岐装置Ｓｖを構成する分散装置Ｂ、分岐装置Ｓ１〜Ｓ３等の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより負荷分散システムの制御を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
【００４７】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時刻の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時刻プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００４８】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施形態による負荷分散システムの構成図である。
【図２】本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。
【図３】本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。
【図４】本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。
【図５】本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。
【図６】本実施形態による負荷分散システムによる処理の流れを示すシーケンス図である。
【図７】本実施形態による負荷分散システムによる別の処理の流れを示すシーケンス図である。
【図８】本実施形態による負荷分散システムによる別の処理の流れを示すシーケンス図である。
【図９】本実施形態による負荷分散システムによる別の処理の流れを示すシーケンス図である。
【符号の説明】
【００５０】
１０・・・登録表、１１ａ〜１１ｄ・・・配送表、Ｂ・・・分散装置、Ｌ１〜Ｌ２１・・・クライアント、Ｓ１〜Ｓ３・・・分岐装置、Ｓｖ・・・仮想分岐装置、Ｖ・・・サーバ
【図１】
2006340176.tif 000003
【図２】
2006340176.tif 000004
【図３】
2006340176.tif 000005
【図４】
2006340176.tif 000006
【図５】
2006340176.tif 000007
【図６】
2006340176.tif 000008
【図７】
2006340176.tif 000009
【図８】
2006340176.tif 000010
【図９】
2006340176.tif 000011