(57)【要約】  単一装置、および、ネットワーク負荷をさらに低減でき、かつ、処理ごとの負荷分散可能な負荷分散システムを提供する。本発明の負荷分散システムは、フロー制御装置から通知された転送規則を用いてパケットを転送するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備える１つ以上のパケット転送装置と、前記フロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置と、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、を備えたフロー制御装置と、を含む。
2011074630.tif 000002
【特許請求の範囲】
【請求項１】
フロー制御装置から通知された転送規則を用いてパケットを転送するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備える１つ以上のパケット転送装置と、
前記フロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置と、
前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、を備えたフロー制御装置と、
を含むことを特徴とする負荷分散システム。
【請求項２】
前記フロー制御装置は、
前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を記憶する転送経路記憶部を備え、
前記パケット転送装置にて検知されたフローの終端情報に基づいて、前記転送経路記憶部から、前記終了したフローの経路情報を削除するとともに、前記削除対象の経路上に位置するパケット転送装置に対して前記終了したフローの転送規則の削除を指示する、
請求項１の負荷分散システム。
【請求項３】
前記フロー制御装置は、更に、
前記パケット転送装置にて検知されたフローの終端情報を記憶するフロー終端情報記憶部を備え、
前記転送経路記憶部からの前記終了したフローの経路情報の削除と、前記削除対象の経路上に位置するパケット転送装置に対する前記終了したフローの転送規則の削除の指示が完了した段階で、前記フロー終端情報記憶部から前記フローの終端情報を削除する請求項１または２の負荷分散システム。
【請求項４】
前記フロー経路設定部は、フローの転送経路の決定時に、前記決定したフローの転送経路上で前記フローの終了を判定するパケット転送装置を示した終端チェック情報を作成し、前記フロー終端判定部へ通達し、
前記フロー終端判定部は、前記終端チェック情報を用いて、フローの終了を判定する請求項１から３いずれか一の負荷分散システム。
【請求項５】
前記負荷分散装置は、
前記負荷分散先として決定したサービス提供先サーバを記憶する負荷分散先記憶部と、
前記パケット転送装置または前記サービス提供先サーバとなる計算機の負荷を監視する負荷監視部と、を備え、
前記フロー制御装置からのフローの終了通知に基づいて、前記負荷分散先記憶部から、前記終了したフローのサービス提供先サーバを削除することにより、サービス提供先サーバの割り当て状況を管理し、
前記負荷分散先決定部は、前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況および前記負荷監視部が監視する各装置の負荷状況に基づいて前記複数のサービス提供先サーバの中から負荷分散先を決定する請求項１から４いずれか一の負荷分散システム。
【請求項６】
前記負荷分散装置は、前記複数のサービス提供先サーバの中から複数の負荷分散先を選択し、
前記フロー経路設定部は、所定の経路決定規則を用いて、前記複数の負荷分散先の中から、いずれかのサービス提供先サーバを選択する請求項５の負荷分散システム。
【請求項７】
前記フロー経路設定部は、前記複数の負荷分散先の中から選択したサービス提供先サーバを前記負荷分散装置に通知し、
前記負荷分散装置は、前記通知に基づいて、前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況を更新する請求項６の負荷分散システム。
【請求項８】
フロー制御装置からのフローの終了通知を参照して、負荷分散装置が複数のサービス提供先サーバの中から負荷分散先を決定するステップと、
前記フロー制御装置が、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するステップと、
前記パケット転送装置が、前記フロー制御装置から通知された転送規則を用いてパケットを転送するとともに、転送したパケットがフローの終端パケットであるか否かを検査して、前記フロー制御装置に報告するステップと、
前記フロー制御装置が前記パケット転送装置からフローの終端パケットを転送したとの報告に基づいてフローの終了を前記負荷分散装置に通知するステップと、
を含む負荷分散方法。
【請求項９】
所定のフロー制御装置から通知されたフローの転送規則に従って入力パケットを転送し、また、前記フロー制御装置に対し前記転送規則に適合しないパケットについての転送経路の決定を要求するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備えるパケット転送装置。
【請求項１０】
所定の負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、
前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、
を備えたフロー制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２００９−２８６８１１号（２００９年１２月１７日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、負荷分散システム、負荷分散方法、負荷分散システムを構成する装置およびプログラムに関し、特に、クライアント・サーバ間のパケット転送経路を決定するフロー制御装置を有する負荷分散システム、負荷分散方法、および、負荷分散用プログラムに関する。
【背景技術】
【０００２】
非特許文献１にウェブサーバの負荷分散を行う負荷分散システムの一例が記載されている。負荷分散システムの構成の形態は大きく３つに分類されることができる。２つはシングルＩＰ（アドレス）を利用する形態であり、１つはマルチＩＰ（アドレス）を利用する形態となる。【０００３】
シングルＩＰを利用する第１の形態は、代表ノードを設定する方式（以下、「代表ノード型方式」と呼ぶ。）となる。図２１、及び、図２２に構成例を示す。負荷分散手段が搭載されたＷｅｂ  Ｓｗｉｔｃｈと、サービスを処理し、結果を応答するサーバ群とから構成される。図２１は２ｗａｙ方式と呼ばれる基本となる方式である。負荷分散手段が搭載されたＷｅｂ  Ｓｗｉｔｃｈは、クライアントからサービスの提供を要求されたなら、各サーバの負荷等を考慮しながらサービス提供先のサーバを決定する。このとき、内部ＩＰや内部仮想ＩＰ（以下、仮想ＩＰを「ＶＩＰ」（Ｖｉｒｔｕａｌ  ＩＰ）と略す。）へアドレス情報を置き換えたり、サーバへセッションを新たに張った後にサーバに処理できるようにカプセル化して転送したりすることで、負荷分散先となるサーバが要求を理解できるように変換する。負荷分散先サーバは、負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈに結果を応答する。負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈは、クライアントへあたかも自分が結果を出したかのように応答するため、送信元ＩＰを自分のＩＰへ置き換えたり、結果を再カプセル化して転送したりする。アドレス変換する方法はＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）技術と言われ、要求や結果を異なる通信方法で被せる方法はカプセル化技術と呼ばれる。これにより、クライアントは正しい応答を受けられる。【０００４】
図２１に対し、応答結果を負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈで再変換させないようにした方式が、図２２の１ｗａｙ方式である。２ｗａｙ方式との相違点は負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈを通らずともクライアントへ送信できる経路を用意する点である。そして、サーバが、送信先が負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈのパケットを受け取れる機能や、応答時に送信元を負荷分散手段搭載のＷｅｂ  ＳｗｉｔｃｈのＩＰとして送信する機能などを搭載して、外部からはあたかもＷｅｂ  Ｓｗｉｔｃｈが応答しているように見せるＤＳＲ（Ｄｉｒｅｃｔ  Ｓｅｒｖｅｒ  Ｒｅｔｕｒｎ）といった転送方式を実現する。これにより、結果応答を直接クライアントに送信できることで、応答結果送信における負荷分散手段搭載のＷｅｂ  Ｓｗｉｔｃｈの作業負荷を軽減することができる。【０００５】
これら代表ノード型方式は、代表ノードへ要求などの全パケットが集約されるため、様々な情報を用いて負荷分散できるというメリットを持つが、全パケットが集約されるために代表ノードによる性能ボトルネックになりやすいというデメリットを持つ。また、ＮＡＴ方式では表面上のＩＰ変換しか行わないため、プロトコル深部にＩＰが埋め込まれている場合の処理などに対応できないというデメリットを持つ。また、ＤＳＲ方式では各サーバに負荷分散手段搭載のＷｅｂ  ＳｗｉｔｃｈのＩＰ／ＶＩＰを扱えるための仕組みとして、Ｗｅｂ  Ｓｗｉｔｃｈ自体でなくサーバ個々にＮＡＴ相当の機能を保有させる必要があり、サーバの負荷量を高めると同時に、全サーバにＮＡＴ相当の設定などの作業を強いるというデメリットも持つ。【０００６】
シングルＩＰを利用する別の形態は、各サーバが同一ＩＰで設定され、適切なサーバが応答する方式である（以下、「分散型方式」と呼ぶ）。図２３に構成例を示す。分散型方式は、複数の同一ＩＰを扱うことが可能なネットワークに接続された負荷分散手段を搭載されたサーバ群から構成される。負荷分散手段として、専用のプロトコルを搭載し、要求の転送や処理の引き継ぎを可能する方法や、クライアントのＩＰなどを元に事前に処理選択方法を決定しておき、自分の対応する領域の処理にのみ応答させるという方法がある。分散型方式は、ＩＰ設定などが同じで良く、代表ノード型のように単一装置への負荷集中を避けることができるというメリットがある。しかし、専用プロトコル処理や応答選択処理の負荷の増大や全サーバに一度はパケットを届けないといけないため、ルータのマルチキャスト／ブロードキャスト処理負荷やそれらによるネットワーク内のパケット負荷が増大することによるネットワーク自体のボトルネックを生み出すというデメリットを持つ。【０００７】
前２者に対してマルチＩＰを利用する形態としては、ＤＮＳバランシングを行う方式である。図２４に構成例を示す。この方式は、サーバごとに異なるグローバルなＩＰを用意しておき、ＤＮＳ応答時に負荷分散手段により応答するサーバを選択する方式である。これにより、ＤＮＳ問い合わせ時のみ単一点ができるため、単一点への負荷が減少した負荷分散システムを提供できるというメリットを持つ。しかしながら、グローバルなＩＰを多く必要とする点や、クライアントや中継サーバのＤＮＳキャッシュによりＤＮＳサーバ側の想定している負荷分散ができないなどのデメリットを持つ。さらに、グローバルＩＰをＶＩＰ化し負荷バランスしようという方式もあるが、より多くのグローバルＩＰを必要としたり、仮想ＩＰを柔軟に引き継げるための複雑な処理が必要となったりし、根本的な解決にならない。【０００８】
このように既存の負荷分散方式は、それぞれ一長一短があり、計算機環境や使われ方を見ながら、適切な方式を選択するか、ハイブリッド方式で互いに補いながら実現するしかなかった。すなわち、シングルＩＰアドレスで対応でき、スケール性を持ち、単一負荷集中点をなくす、もしくは、極力低負荷にすることが実現できなかった。【０００９】
非特許文献２には、上記シングルＩＰやマルチＩＰを用いる方式とは別に、スマートに負荷分散を実現し、サーバ・クライアント間応答時間も短縮させる「Ｐｌｕｇ−ｎ−Ｓｅｒｖｅ」という方式が記載されている。図２５に概念図を示す。図２５の負荷分散システムＰｌｕｇ−ｎ−Ｓｅｒｖｅは、外部からスイッチの制御を可能にしたＯｐｅｎＦｌｏｗと呼ばれる概念を利用している。ＯｐｅｎＦｌｏｗは、任意のタイミングで外部コントローラからスイッチの転送規則などを設定でき、スイッチは転送規則に従ってパケット転送をする。さらに、スイッチはパケットに対応する転送規則が存在しない場合、外部コントローラに明示的に転送規則を問合せる機能を持つ。Ｐｌｕｇ−ｎ−Ｓｅｒｖｅは、ＯｐｅｎＦｌｏｗに対応したＯｐｅｎＦｌｏｗ  ｓｗｉｔｃｈｅｓ上に構築され、ネットワークの状態モニタを行うＮｅｔ  Ｍａｎａｇｅｒとサーバの状態モニタを行うＨｏｓｔ  Ｍａｎａｇｅｒと負荷分散アルゴリズムに従い、ネットワークフローの経路を決定するＦｌｏｗ  ＭａｎａｇｅｒをもつＯｐｅｎＦｌｏｗコントローラから構成される。【００１０】
このような構成を有するＰｌｕｇ−ｎ−Ｓｅｒｖｅは次のように動作する。サーバには同一ＩＰエイリアスを設定しておく。クライアントからサーバＩＰへ新たな要求を感知した１つ以上のＯｐｅｎＦｌｏｗ  ｓｗｉｔｃｈｅｓは、ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒにネットワークフローのパスの設定を依頼する。Ｆｌｏｗ  Ｍａｎａｇｅｒは、Ｎｅｔ  Ｍａｎａｇｅｒからネットワークの状態、Ｈｏｓｔ  Ｍａｎａｇｅｒからサーバの状態を取得し、負荷分散アルゴリズムに従ってサービスさせるサーバとサーバへのパスを決定し、ＯｐｅｎＦｌｏｗ  ｓｗｉｔｃｈｅｓへ設定する。これにより、ネットワークフローのパスが設定されるので、サービス中の間は特定のサーバへとトラフィックコントロールが行われる。また、Ｎｅｔ  Ｍａｎａｇｅｒは定期的な間隔でスイッチをモニタリングすることで、ネットワークトポロジーやネットワークの利用状態、リンクの状態などを監視し、ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒに通知することができる。これにより、サービス要求時にのみ負荷分散手段に負荷分散先決定処理が行われ、その後の処理はパスを設定されたスイッチとサービス処理を行うサーバのみでクライアントへの応答が実現できるため、単一装置への負荷集中を避けると同時に、最適な経路での通信が可能になるために応答時間が最適化される。更には、同一ＩＰを利用するためにＩＰ枯渇なども防ぐことができるというメリットを持つことができる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】ＶＡＬＥＲＩＡ  ＣＡＲＤＥＬＬＩＮＩ  ａｎｄ  ＥＭＩＬＩＡＮＯ  ＣＡＳＡＬＩＣＣＨＩＯ著  「Ｔｈｅ  Ｓｔａｔｅ  ｏｆ  ｔｈｅ  Ａｒｔ  ｉｎ  Ｌｏｃａｌｌｙ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｗｅｂ−Ｓｅｒｖｅｒ  Ｓｙｓｔｅｍｓ」、ＡＣＭ  Ｃｏｍｐｕｔｉｎｇ  Ｓｕｒｖｅｙｓ，  Ｖｏｌ．  ３４，  Ｎｏ．  ２、２００２年６月、ｐｐ．２６３−３１１
【非特許文献２】Ｎｉｋｈｉｌ  Ｈａｎｄｉｇｏｌ，  ｅｔ  ａｌ．著、「Ｐｌｕｇ−ｎ−Ｓｅｒｖｅ：  Ｌｏａｄ−Ｂａｌａｎｃｉｎｇ  Ｗｅｂ  Ｔｒａｆｆｉｃ  ｕｓｉｎｇ  ＯｐｅｎＦｌｏｗ」、ＳＩＧＣＯＭＭ  ２００９  ＤＥＭＯＳ、［online］、［平成21年12月10日検索］、インターネット〈URL：http://conferences.sigcomm.org/sigcomm/2009/demos/sigcomm-pd-2009-final26.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上記非特許文献１及び２の全開示内容はその引用をもって本書に繰込み記載する。以下に本発明による分析を与える。
上記負荷分散システムＰｌｕｇ−ｎ−Ｓｅｒｖｅの第１の問題点は、ネットワークで通信される監視統計情報、および、死活情報に関する負荷が高く、さらに監視装置が高負荷になる点である。その理由は、Ｎｅｔ  Ｍａｎａｇｅｒが定期的にモニタリングすることで監視を行っているためである。そのため、負荷分散中のフロー全部に対して、常にリンクが張られているかをチェックするための全スイッチ装置に対するモニタリングが必要となり、モニタリング情報を収集するための負荷がネットワークにかかることになる。さらに、モニタリングするＮｅｔ  Ｍａｎａｇｅｒ自体にモニタしているサンプリング間隔ごとのネットワークの利用状態、リンクの状態などを判断するための監視処理負荷が集中することになる。【００１３】
また上記負荷分散システムＰｌｕｇ−ｎ−Ｓｅｒｖｅには、処理（フロー）の終了判定を明確にオンタイムで判定できないという問題点もある。その理由は、上記した第１の問題点と同様に、Ｎｅｔ  Ｍａｎａｇｅｒが定期的に監視を行っているため、通信の状態、すなわちリンク状態の判定などは、タイマーによるタイムアウトなどしか判定できないためである。これでは、通信の一時中断や一時的な滞りによる判定などが難しくなる。また、一時的な滞り対応のためのタイマーのタイムアウト時間を調整する必要がある。このタイムアウト時間が短すぎては誤判定になりやすくなる。逆に、タイムアウト時間が長すぎては、処理継続判定が遅れ、そのため、処理の負荷分散先が同一サーバに固定しやすくなり、均等な負荷分散が実現されにくい。【００１４】
本発明は、上記した事情に鑑みてなされたものであって、単一装置、および、ネットワーク負荷をさらに低減でき、かつ、処理ごとに均等な負荷分散可能な負荷分散システムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第１の視点によれば、フロー制御装置から通知された転送規則を用いてパケットを転送するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備える１つ以上のパケット転送装置と、前記フロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置と、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、を備えたフロー制御装置と、を含む負荷分散システムが提供される。【００１６】
本発明の第２の視点によれば、上記した負荷分散システムを構成する装置、即ち、１つ以上のパケット転送装置、負荷分散装置およびフロー制御装置が提供される。【００１７】
本発明の第３の視点によれば、フロー制御装置からのフローの終了通知を参照して、負荷分散装置が複数のサービス提供先サーバの中から負荷分散先を決定するステップと、前記フロー制御装置が、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するステップと、前記パケット転送装置が、前記フロー制御装置から通知された転送規則を用いてパケットを転送するとともに、転送したパケットがフローの終端パケットであるか否かを検査して、前記フロー制御装置に報告するステップと、前記フロー制御装置が前記パケット転送装置からフローの終端パケットを転送したとの報告に基づいてフローの終了を前記負荷分散装置に通知するステップと、を含む負荷分散方法が提供される。本方法は、パケット転送装置、負荷分散装置およびフロー制御装置という、特定の機械に結びつけられている。【００１８】
本発明の第４の視点によれば、上記した負荷分散システムを構成する装置、即ち、１つ以上のパケット転送装置、負荷分散装置およびフロー制御装置に実行させ、上記した負荷分散方法を実施させるプログラムが提供される。なお、このプログラムは、個々の装置を構成するコンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１９】
本発明によれば、単一装置、および、ネットワーク負荷を低減できることになる。その理由は、処理（フロー）の終了を確認する機能を追加し、ＯｐｅｎＦｌｏｗの特長を損なうことなく、負荷分散状況を把握できるように構成しためである。また該構成を採用したことにより、負荷分散先判定における負荷分散装置への集中化が回避でき、かつ、負荷分散中のサービスの終了判定のためのネットワークフローの定期的な状態監視処理が必要でなくなる。また該構成を採用したことにより、サービスごとの負荷分散を安定して提供することが可能となっている。従って、サービス中断時における終了という誤判定や、タイムアウト時間中におけるサービス連続時の負荷分散先の固定や負荷分散先決定の未処理等といったタイムアウト時間の設定に伴う諸問題も解消される。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態の構成を表したブロック図である。
【図２】本発明の第１の実施形態の動作を説明するためのフローチャートである。
【図３】本発明の第２の実施形態の構成を表したブロック図である。
【図４】本発明の第２の実施形態の動作を説明するためのフローチャートである。
【図５】本発明の第３の実施形態の構成を表したブロック図である。
【図６】本発明の第４の実施形態の構成を表したブロック図である。
【図７】本発明の第４の実施形態の動作を説明するためのフローチャートである。
【図８】本発明の具体的動作を説明するための構成を表した図である。
【図９】本発明の具体的動作の説明において使用するメッセージの一覧である。
【図１０】図８のクライアント装置から新規パケットを受信したパケット転送装置の動作を説明するための図である。
【図１１】図１０の続図であり、コントローラ装置の動作を説明するための図である。
【図１２】図１１の続図であり、コントローラ装置とパケット転送装置の動作を説明するための図である。
【図１３】図８のクライアント装置から後続パケットを受信したパケット転送装置の動作を説明するための図である。
【図１４】図１３の続図であり、図８のクライアント装置から後続パケットを受信したサーバ装置およびパケット転送装置の動作を説明するための図である。
【図１５】図８の構成にフロー制御による負荷分散状況を追記した図である。
【図１６】パケット転送装置がフロー終端を確認するまでの動作を説明するための図である。
【図１７】パケット転送装置がフロー終端を確認するまでの動作を説明するための図である。
【図１８】パケット転送装置がフロー終端を確認するまでの動作を説明するための図である。
【図１９】パケット転送装置からフロー終端通知を受けたコントローラ装置の動作を説明するための図である。
【図２０】フロー制御装置と、負荷分散装置が分離されている構成の例である。
【図２１】背景技術に挙げた２ｗａｙ方式を説明するための図である。
【図２２】背景技術に挙げた１ｗａｙ方式を説明するための図である。
【図２３】背景技術に挙げた分散型方式を説明するための図である。
【図２４】背景技術に挙げたＤＮＳバランシングを行う方式を説明するための図である。
【図２５】非特許文献２のＰｌｕｇ−ｎ−Ｓｅｒｖｅを説明するための図である。
【発明を実施するための形態】
【００２１】
はじめに、本発明の概要について図２０を参照して説明する。本発明の負荷分散システムは、１つ以上のパケット転送装置２００１〜２００３と、負荷分散装置１２００と、フロー制御装置１１００と、を含み、クライアント３００１、３００２から要求された処理（フロー）を、サーバ装置４００１〜４００４に分散する。なお、この概要に付記した図面参照符号は、専ら理解を助けるための例示であり、図示の態様に限定することを意図するものではない。
本発明において以下の形態が可能である。
［形態１］
前記第１の視点に記載の負荷分散システムのとおり。
［形態２］
前記フロー制御装置は、
前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を記憶する転送経路記憶部を備え、
前記パケット転送装置にて検知されたフローの終端情報に基づいて、前記転送経路記憶部から、前記終了したフローの経路情報を削除するとともに、前記削除対象の経路上に位置するパケット転送装置に対して前記終了したフローの転送規則の削除を指示することが好ましい。
［形態３］
前記フロー制御装置は、更に、
前記パケット転送装置にて検知されたフローの終端情報を記憶するフロー終端情報記憶部を備え、
前記転送経路記憶部からの前記終了したフローの経路情報の削除と、前記削除対象の経路上に位置するパケット転送装置に対する前記終了したフローの転送規則の削除の指示が完了した段階で、前記フロー終端情報記憶部から前記フローの終端情報を削除することが好ましい。
［形態４］
前記フロー経路設定部は、フローの転送経路の決定時に、前記決定したフローの転送経路上で前記フローの終了を判定するパケット転送装置を示した終端チェック情報を作成し、前記フロー終端判定部へ通達し、
前記フロー終端判定部は、前記終端チェック情報を用いて、フローの終了を判定することが好ましい。
［形態５］
前記負荷分散装置は、
前記負荷分散先として決定したサービス提供先サーバを記憶する負荷分散先記憶部と、
前記パケット転送装置または前記サービス提供先サーバとなる計算機の負荷を監視する負荷監視部と、を備え、
前記フロー制御装置からのフローの終了通知に基づいて、前記負荷分散先記憶部から、前記終了したフローのサービス提供先サーバを削除することにより、サービス提供先サーバの割り当て状況を管理し、
前記負荷分散先決定部は、前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況および前記負荷監視部が監視する各装置の負荷状況に基づいて前記複数のサービス提供先サーバの中から負荷分散先を決定することが好ましい。
［形態６］
前記負荷分散装置は、前記複数のサービス提供先サーバの中から複数の負荷分散先を選択し、
前記フロー経路設定部は、所定の経路決定規則を用いて、前記複数の負荷分散先の中から、いずれかのサービス提供先サーバを選択することが好ましい。
［形態７］
前記フロー経路設定部は、前記複数の負荷分散先の中から選択したサービス提供先サーバを前記負荷分散装置に通知し、
前記負荷分散装置は、前記通知に基づいて、前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況を更新することが好ましい。
［形態８］
前記第２の視点に記載のパケット転送装置のとおり。
［形態９］
前記第２の視点に記載のフロー制御装置のとおり。
［形態１０］
前記第３の視点に記載の負荷分散方法のとおり。
なお、パケット転送装置、フロー制御装置および負荷分散方法は、形態１の負荷分散システムと同様に、それぞれの構成要素ないしステップについて、形態２〜形態７の内容に展開することが可能である。
【００２２】
フロー制御装置１１００は、例えば、クライアント３００１、３００２から新規パケットを受信したパケット転送装置（例えば、パケット転送装置２００１）からの転送経路の決定要求に応じて、負荷分散装置１２００に対し負荷分散先の決定を依頼し、決定されたサービス提供先サーバ（例えば、サーバ装置４００１）を利用するフローの転送経路（例えば、２００１、２００２、４００１）を決定し、前記転送経路上のパケット転送装置（例えば、パケット転送装置２００１、２００２）に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、その後、パケット転送装置（例えば、パケット転送装置２００１、２００２）にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置１２００に通知（報告）するフロー終端判定部と、を備える。
【００２３】
負荷分散装置１２００は、フロー制御装置１１００から通知されるフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する。
【００２４】
パケット転送装置２００１〜２００３は、フロー制御装置１１００から通知されたフローの転送規則に従って入力パケットを転送し、また、前述のようにフロー制御装置１１００に対し前記転送規則に適合しないパケットについての転送経路の決定を要求するパケット転送部と、送信パケットがフローの終端のパケットであるか否かを検査してフロー制御装置１１００に通知（報告）するフロー終端確認部と、を備える。
【００２５】
このような構成を採用することにより、ネットワークの定期的モニタリングを必要とせず、フロー（処理）の終了通知によるフロー（処理）単位での負荷分散制御が実現される。
【００２６】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態の構成を表したブロック図である。図１を参照すると、本発明の本発明の第１の実施形態に係る負荷分散システムは、フロー制御装置１０と、パケット転送装置２０−１〜２０−ｋと、負荷分散装置３０とから構成されている。
【００２７】
フロー制御装置１０は、フローの転送経路を決定し、各パケット転送装置２０−１、２０−２へ転送規則を設定するフロー経路設定部１００と、フローの転送経路を記憶する転送経路記憶部１１０と、各パケット転送装置２０−１〜２０−ｋからの通知に基づいてフローの終了判定を行うフロー終端判定部１２０と、フローの終了判定に使用するフロー終端状況を記憶するフロー終端情報記憶部１３０と、を備えている。
【００２８】
パケット転送装置２０−１〜２０−ｋは、それぞれ、パケットの転送先を求める際に参照する転送規則を記憶する転送規則記憶部２１０−１〜２１０−ｋと、転送規則を参照してパケット転送のための処理を行うパケット転送部２００−１〜２００−ｋと、パケットの情報からフロー終端用のパケットであることを判別するフロー終端判定部２２０−１〜２２０−ｋと、を備えている。
【００２９】
負荷分散装置３０は、負荷分散を実現するサービス提供先を決定する負荷分散先決定部３００と、決定したサービス提供先を記憶する負荷分散先記憶部３１０とを備えている。
【００３０】
クライアント装置４０は、上記パケット転送装置２０−１、２０−２のいずれかに、サービスの提供を要求するサービス要求部４００を備えている。
【００３１】
サーバ装置５０−１〜５０−ｍは、パケット転送装置２０−１、２０−２を介して、クライアント装置４０からのサービスの要求に対応する処理を実行し、結果を応答することでサービスの提供を行うサービス提供部５００を含む。ｍ台のサーバ装置５０−１〜５０−ｍは、同一のネットワーク識別子を持つものとし、フロー制御装置１０および負荷分散装置３０により通信経路とサーバ装置が確定され、フローが発生することでクライアント装置４０に対し、ｍ台のサーバ装置５０−１〜５０−ｍのうちいずれかのサーバ装置がサービスを提供する。
【００３２】
以下、本明細書において、明示的に装置、または、部を区別するときは、「ｘｘｘ−１、ｘｘｘ−２、・・・」というハイフン（−）のあとに装置番号、または、部番号を記載して表現し、装置、または、部を明示的に区別しない場合はハイフン（−）以下を省略する。部番号は、同じ装置番号を持つ装置に含まれる部とする。更に、パケット転送装置２０のおよびサーバ装置の台数を表すｋ、ｍは１以上の任意の整数とする。
【００３３】
これらの部はそれぞれ次のように動作する。フロー経路設定部１００は、フロー毎にパケットの転送経路を決定し、各パケット転送装置へ設定するフローを管理する。
【００３４】
より具体的には、フロー経路設定部１００は、パケット転送部２００から未設定フローに対する経路設定依頼メッセージを受信する。経路設定依頼メッセージは、少なくとも経路設定依頼メッセージを表わす命令コードとフロー識別子、もしくは、フロー識別子を作成するに必要な情報を含んでいる。フロー識別子は、識別可能な任意の順序番号、もしくは、パケット送入口識別子と各プロトコルの送信元、中継先、送信先の任意の組み合わせ、もしくは、パケット送入口識別子と各プロトコルの送信元、送信先、宛先のうちの任意の情報ビットの組み合わせで表現することができる。また、フロー識別子を作成するに必要な情報で通知されている場合は、この段階でフロー識別子を作成するに必要な情報からフロー識別子を作成する。例えば、フロー識別子として任意の順序番号を用いる場合は、フロー識別子を作成するに必要な情報として、パケット送入口識別子と各プロトコルの送信元、中継先、送信先の任意の組み合わせ、もしくは、パケット送入口識別子と各プロトコルの送信元、送信先、宛先のうちの任意の情報ビットの組み合わせとなり、前記フロー識別子を作成するに必要な情報を任意の順序番号に照らし合わせる。以後、照らし合わせた情報とフロー識別子を等価変換しながら扱うことになる。本件では、この作業は省略化し、フロー識別子として説明していく。
【００３５】
フロー経路設定部１００は、パケット転送部２００から未設定フローに対する経路設定依頼メッセージを受信した場合、転送経路記憶部１１０を介して、フローの転送経路情報が存在しないかチェックする。フローの転送経路情報が存在する場合に、転送経路上の各パケット転送装置２０に対する転送規則を計算し、転送規則設定メッセージを各パケット転送部２００へ送信する。転送規則設定メッセージは、少なくとも転送規則設定メッセージを表わす命令コードと転送規則を含んで作成される。転送規則は、フロー識別子とフロー識別子に対応するフローに対するパケット転送部２００が処理する動作（アクション）を表わした記号列で表現される。パケット転送部２００が処理する動作（アクション）の一例としては、スイッチの特定のポートへ転送（送出）するといったことや、パケットを廃棄するといったことが挙げられる。
【００３６】
また、フロー経路設定部１００は、経路決定した際に、フローの転送経路情報を転送経路記憶部１１０へ記憶する。フローの経路記憶には２つの目的がある。１つは、フロー終端判定部１２０にてフローの終了を判定するためである。もう１つは、パケット転送装置２０の性能により、転送規則を忘れてしまった（転送規則に設定された有効期限が切れてしまった）場合の再設定に使用するためである。
【００３７】
フロー経路設定部１００は、フローの転送経路情報が存在しない場合に、フロー識別子に含まれている情報から、特定の指標を元に、ネットワークの接続情報（トポロジ情報）を元に転送経路を決定する。指標の例としては、ネットワーク負荷が少ない経路で辿りつける送信先や、転送時間が最も短くなる送信先に決定するなどが挙げられる。こういった指標を元に転送経路決定する例として、ダイクストラのアルゴリズムがある。これは、今まで計算した途中経路のうち、指標負荷が最も小さいものから１ホップ分辿った場合を計算して新たな途中経路とし、これを目的の送信先になるまで繰り返すことで、指標負荷が最小となる送信先を一意に決定する方法である。
【００３８】
フロー経路設定部１００は、送信先が負荷分散対象のサーバ５０である転送経路を決定する際、負荷分散先決定部３００に対し、送信先サーバの決定を依頼する送信先決定依頼メッセージを送信する。送信先決定依頼メッセージは、少なくとも送信先決定依頼メッセージを表わす命令コードと負荷分散対象サーバを示す識別子とフロー識別子を含む。部識別子は、少なくとも任意に付随する順序番号、もしくは、フロー識別子を用いて表現することができる。また、部識別子に負荷分散対象サーバを示す識別子が記載されている場合は、負荷分散対象サーバを示す識別子を省略することができる。負荷分散対象かどうかは、システム構築時、改変時にフロー経路設定部１００に記憶させておくことができる。
【００３９】
フロー経路設定部１００は、負荷分散先決定部３００から応答として、負荷分散先通知メッセージを受信し、通知された負荷分散先を元に、前記転送経路を決定する。負荷分散先通知メッセージは、少なくとも負荷分散先通知メッセージを表わす命令コードと送信先サーバ識別子を含む。送信先サーバ識別子は、サービス提供先を示す識別子となり、任意のプロトコルで用いられている識別子の集合やトポロジ情報から抜き出せる情報（スイッチの接続ポート情報）などで表現できる。
【００４０】
また、フロー経路設定部１００は、転送経路決定の際に、逆方向フロー（応答の際の送信元、送信先を逆にした経路）についても転送経路の決定を行い、同時に設定することもできる。
【００４１】
フロー経路設定部１００は、フロー終端判定部１２０からフロー終端通知メッセージを受信した場合、対応するフローの終了処理をする。フロー終端通知メッセージは、少なくともフロー終端通知メッセージを表わす命令コードとフロー識別子を含んでいる。より具体的には、フロー経路設定部１００は、転送経路上のパケット転送装置２０のパケット転送部２００に転送規則削除メッセージを送信するとともに、転送経路記憶部１１０から対応するフローの転送経路を削除する。転送規則削除メッセージは、少なくとも処理終端通知メッセージを表わす命令コードと、フロー識別子、または、転送規則を含めて作成される。
【００４２】
転送経路記憶部１１０は、フロー経路設定部１００、フロー終端判定部１２０からアクセスされ、フローの転送経路情報の参照、記憶、削除を行う。フローの転送経路情報の表現の一例として、転送経路の装置を識別する識別子を特定の連結子で組み合わせた文字列で表現できる。また、装置のみでなく、装置のポートを含めて、詳細に表現することもできる。
【００４３】
フロー終端判定部１２０は、フロー終端確認部２２０からフロー終端通知メッセージを受信した場合、フローの終了判定を行う。また、フロー終端判定部１２０は、終了判定に必要なフロー終端情報をフロー終端情報記憶部１３０へ記憶する。また、フロー判定のために必要な転送経路情報は、転送経路記憶部１１０を参照して取得する。本実施形態では、フローが終了したことをもって、サービスが終了したものと判定するものとする。
【００４４】
フローの終了判定の一例として、転送経路上の全パケット転送装置２０からのフロー終端通知メッセージを受信した場合に終了と判定することができる。また、フローの終了判定の別の一例として、転送経路上の両端となるパケット転送装置２０からのフロー終端通知メッセージを受信した場合に終了と判定することができる。フロー終了判定方法に合わせて、終了判定に必要なフロー終端情報は、上記判定方法に応じて決定され、フロー識別子と対応するフローのフロー終端通知メッセージを送信してきたパケット転送装置２０の識別子、または、前記パケット転送装置２０の識別子のうち、判定に必要となる識別子、または、パケット転送装置２０の識別子とフロー終端通知の授受状態の組などが考えられる。
【００４５】
フロー終端判定部１２０は、フロー終了だと判定した場合、フローの転送経路を削除するため、フロー経路設定部１００へフロー終端通知メッセージを送信する。また、フロー終端判定部１２０は、サービス提供先サーバ情報を削除するため、負荷分散先決定部３００へ処理終端通知メッセージを送信する。処理終端通知メッセージは、少なくとも処理終端通知メッセージを表わす命令コードとフロー識別子を含めて作成される。最後に、フロー終端判定部１２０は、対応するフローのフロー終端情報をフロー終端情報記憶部１３０から削除する。
【００４６】
フロー終端情報記憶部１３０は、フロー終端判定部１２０からアクセスされ、フローに対応するフロー終端情報の参照、記憶、削除を行う。
【００４７】
パケット転送部２００は、パケット転送のための処理を行う。パケット転送部２００は、任意のパケット転送装置２０のパケット転送部２００、クライアント装置４０のサービス要求部４００、任意のサーバ装置５０のサービス提供部５００のいずれかからパケットが到着したときに、転送規則記憶部２１０から対応するフローの転送規則が存在するかどうかをチェックする。転送規則が存在する場合は、転送規則に従って次の転送先へパケットを送信する。
【００４８】
パケット転送部２００は、対応するフローの転送規則が存在しない場合に、フロー経路設定部１００に対して経路設定の依頼するための経路設定依頼メッセージを送信する。このとき、到着したパケットが属するフローに対して、経路設定依頼中の場合は、新たに経路設定依頼を行う必要はなく、経路決定まで装置内で到着パケットを一時記憶しておいてもよい。
【００４９】
パケット転送部２００は、フロー経路設定部１００から転送規則設定メッセージを受信したなら、転送規則を転送規則記憶部２１０へ記憶し、転送規則に従って次の転送先へパケットの送信を開始する。
【００５０】
転送規則記憶部２１０は、パケット転送部２２０からアクセスされ、フローに対する転送規則の参照、記憶、削除を行う。このような転送規則記憶部２１０は、ＯｐｅｎＦｌｏｗにおけるフローテーブルと同等の仕組みにて実現できる。
【００５１】
フロー終端確認部２２０は、すべての、あるいは、特定のパケット転送装置内に設置され、フローの終端を確認、報告する。より具体的には、フロー終端確認部２２０は、パケット転送部２００が転送しているパケットを検査し、対応するフローが終了したかどうかを監視する。フローの終了を検知した際に、フロー終端確認部２２０は、パケット転送部２００へフロー終端通知メッセージの転送を依頼する。
【００５２】
フロー終了の検知の方法としては、次のような種々の方法が挙げられる。例えば、プロトコルの終了メッセージをチェックする方法が挙げられる。例えば、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）では、ＦＩＮフラグのチェックにより、通信の終了、すなわち、通信を利用したフローの終了を検知することができる。実際には、ＦＩＮフラグ後のフローの逆方向（送信元、送信先が逆のフロー）でＡＣＫパケットの通信が発生するため、ＦＩＮパケット後の逆方向フローのＡＣＫフラグを検知するとフローの終了と、判断することができる。更には、ＴＣＰは双方向通信のため、逆方向フローとセットにして、フローの終了を判断することもできる。
【００５３】
フロー終了の検知の方法のもう一例として、ＳＣＴＰ（Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｒｏｔｏｃｏｌ）のＤＡＴＡチャンクにおけるＥ−ｂｉｔで判断する方法が挙げられる。
【００５４】
更に、フロー終了の検知の方法のもう一例として、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）での例が挙げられる。ＨＴＴＰヘッダのＣｏｎｎｅｃｔｉｏｎ属性がＣｌｏｓｅを検知し、対応するＨＴＴＰのメッセージ分が送信確認できたときの一連フローの終了と判断できる。
【００５５】
更に、フロー終了の検知の方法のもう一例として、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）での例が挙げられる。パケット列ごとに１フローと前提がつけられている環境下では、ＩＰのＭＦ（Ｍｏｒｅ  Ｆｒａｇｍｅｎｔｓ）フラグにより、パケットの終端が判断できるので、フローの終了と判断することができる。
【００５６】
フロー終了の検知方法として、上記のように任意のプロトコル階層でのチェック方法を示したが、ＴＣＰ、ＳＣＴＰ、ＩＰのような特定の終了判定ビット、もしくは、終了判定ビットからの決まった手順とそれを知るための特定のビットで監視できることが、処理の速度的な面から好ましく、その方が本発明の効果がより増大する。
【００５７】
また、本実施形態では、フロー終端確認部２２０は、全パケット転送装置２０に含まれているとして図示ししているが、任意のパケット転送装置に設置されていて構わない。これは、フロー終端判定部１２０におけるフローの終了判定方法に依存し、フロー終了判定のためにフロー終端通知が必要となるパケット転送装置２０に、フロー終端確認部２２０が含まれていればよい。
【００５８】
負荷分散先決定部３００は、負荷分散のためのサービス提供先を決定する。負荷分散先決定部３００は、フロー経路設定部１００から送信先決定依頼メッセージを受信した場合、負荷分散先記憶部３１０をチェックし、事前に決定された負荷分散先がないかをチェックする。負荷分散先記憶部３１０に負荷分散先が存在する場合は、フロー経路設定部１００へ送信先として負荷分散先通知メッセージを送信する。
【００５９】
負荷分散先記憶部３１０に負荷分散先が存在しない場合は、負荷分散アルゴリズムに従って単一のサービス提供先サーバを決定する。負荷分散アルゴリズムは、本分野で用いられている各種のアルゴリズムを使用することができる。例えば、ラウンドロビンとして一定の順番でサーバを選択することができる。負荷分散先決定部３００は、負荷分散アルゴリズムに従って決定したサービス提供先サーバを、当該フローに対する負荷分散先として負荷分散先記憶部３１０へ記憶させる。このとき、記憶する情報は、フロー識別子と送信先サーバ識別子になる。負荷分散先の記憶には、２つの目的がある。１つは、フロー制御装置がトポロジ情報変更などの外乱により経路情報を消去したときに、処理継続中のサーバを応答するためである。もう１つは、パケット転送装置２０の性能により、転送規則を忘れた（転送規則に設定された有効期限が切れてしまった）場合の再設定に使用するためである。負荷分散先決定部３００は、負荷分散アルゴリズムに従って決定したサービス提供先サーバを、フロー経路設定部１００へ送信先として負荷分散先通知メッセージを送信する。
【００６０】
負荷分散先決定部３００は、フロー終端判定部１２０から処理終端通知メッセージを受信した場合、対応するフローの負荷分散先を負荷分散先記憶部３１０から削除する。
【００６１】
負荷分散先記憶部３１０は、負荷分散先決定部３００からアクセスされ、フローに対する負荷分散先（サービス提供先サーバの割り当て状況）を管理（参照、記憶、削除）する。
【００６２】
サービス要求部４００は、いずれかのパケット転送部２００を利用して通信して、望んだサービスをサービス提供部５００に要求し、サービスの提供を受けることができる。
【００６３】
サービス提供部５００は、サービス要求部４００からの要求に応答するための処理をし、複数のパケット転送部２００を利用して通信してサービスを提供する。
【００６４】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図２は、本発明の第１の実施形態の動作を説明するためのフローチャートである。図２を参照すると、まず、パケット転送部２００にパケットが到着することで負荷分散処理が開始される（図２の「負荷分散処理」）。
【００６５】
パケット転送部２００は、転送規則記憶部２１０を参照して、到着したパケットに相当するフローの転送規則が存在するかどうかをチェックする（ステップＡ１）。フローの転送規則が存在した場合（ステップＡ１のＹｅｓ）、負荷分散対象外のパケットであるか既に負荷分散のための転送先が決定されているパケットであるため、パケット転送部２００は、転送規則に従ってパケットを対応するポートへ送出する（ステップＡ１０）。
【００６６】
一方、転送規則が存在しない場合（ステップＡ１のＮｏ）、パケット転送部２００は、フロー経路設定部１００へ、未設定フローに対する経路設定依頼メッセージを送信する（ステップＡ２）。
【００６７】
フロー経路設定部１００は、受信した経路設定依頼メッセージの情報からフローを特定し、転送経路記憶部１１０を参照して、転送経路が決定されているかどうかをチェックする（ステップＡ３）。
【００６８】
ここで、転送経路記憶部１１０に転送経路が記録されている場合、すなわち、すでに該当するフローの転送経路が決定済みである場合（ステップＡ３のＹｅｓ）、フロー経路設定部１００は、経路設定依頼メッセージを発信したパケット転送装置、または、経路情報に記載されている経路上の全中継パケット転送装置に設定すべき転送規則を作成し、各パケット転送部２００へ転送規則設定メッセージを送信して転送経路を設定させる。経路設定依頼メッセージを受け取ったが、転送経路記憶部１１０に転送経路が記録されている場合というのは、負荷分散対象外のパケットであるか既に負荷分散のための転送先が決定されているパケットであるが、パケット転送装置の記憶要件の影響などで情報が削除された場合であると想定されるからである。なお、転送規則の送信先を、経路設定依頼メッセージを発信したパケット転送装置とするか、経路情報に記載されている経路上の全中継パケット転送装置とするかは、ネットワークの仕様によって決定される。送信先を経路設定依頼メッセージを発信したパケット転送装置とした場合、当該転送経路上において当該パケットを受信したパケット転送装置において、同様に、転送規則が存在する否かのチェックが行われ、必要な場合には、経路設定依頼メッセージが送出されることになる。
【００６９】
転送規則設定メッセージを受信した各パケット転送部２００は、転送規則記憶部２１０に転送規則を記憶する（ステップＡ９）。
【００７０】
一方、転送経路が記録されていない場合（ステップＡ３のＮｏ）、フロー経路設定部１００は、パケットの最終送信先が負荷分散対象サーバかどうかを判定する（ステップＡ４）。負荷分散対象サーバではない場合（ステップＡ４のＮｏ）、一意に宛先が決まるので、経路決定処理に移る（ステップＡ８へ）。
【００７１】
上記ステップＡ４において、パケットの最終送信先が負荷分散対象サーバである場合（ステップＡ４のＹｅｓ）、フロー経路設定部１００は、負荷分散先決定部３００に対し、負荷分散先の決定を依頼する送信先決定依頼メッセージを作成し送信する（ステップＡ５）。
【００７２】
負荷分散先決定部３００は、宛先決定命令メッセージを受信した場合、負荷分散先記憶部３１０を参照して、負荷分散先がすでに決定されていないかどうかをチェックする（ステップＡ６）。もし、負荷分散先が決定されていた場合、すでに負荷分散先が決定されており、フローが開始されているにも関わらず、何らかの理由で転送経路情報が欠落したと想定されるため、フローを継続させるために事前に決定した負荷分散先を結果として返す。すなわち、負荷分散先決定部３００は、負荷分散先記憶部３１０に登録されている負荷分散先を決定した送信先として負荷分散先候補通知メッセージを作成し、フロー経路設定部１００へ送信し、フロー経路設定部１００の経路決定処理を開始させる（ステップＡ６のＹｅｓ）。
【００７３】
一方、負荷分散先が決定されていない場合（ステップＡ６のＮｏ）、負荷分散先決定部３００は、負荷分散先記憶部３１０に登録されている負荷分散先を参照して、負荷分散アルゴリズムに従い、負荷分散の送信先候補（負荷分散先候補）を決定する。決定した負荷分散先候補は、負荷分散先記憶部３１０へ記憶する。また、負荷分散先決定部３００は、決定した負荷分散先候補を指定した負荷分散先候補通知メッセージを作成し、フロー経路設定部１００へ送信し、フロー経路設定部１００の経路決定処理を開始させる（ステップＡ７）。
【００７４】
次に、フロー経路設定部１００は、負荷分散対象サーバであろうと、負荷分散対象サーバでなかろうと、サービス提供先サーバが決定されたので、経路設定アルゴリズムに従い、転送経路を決定する（ステップＡ８）。
【００７５】
次に、フローの転送経路が決定したので、フロー経路設定部１００は、経路設定依頼メッセージを発信したパケット転送装置、または、経路情報に記載されている経路上のパケット転送装置に対して、転送規則を作成し、各パケット転送部２００へ転送規則設定メッセージを送信して転送経路を設定させる（ステップＡ９）。なお、転送規則の送信先を、経路設定依頼メッセージを発信したパケット転送装置とするか、経路情報に記載されている経路上の全中継パケット転送装置とするかは、ネットワークの仕様によって決定される。送信先を経路設定依頼メッセージを発信したパケット転送装置とした場合、当該転送経路上において当該パケットを受信したパケット転送装置において、同様に、転送規則が存在する否かのチェックが行われ、必要な場合には、経路設定依頼メッセージが送出されることになる。
【００７６】
ステップＡ１で転送規則が存在せず、パケットの転送を停止していたパケット転送部２００は、ステップＡ９までで転送経路が設定されるので、パケット転送が可能になり、転送規則に従ってパケットの送出を開始する（ステップＡ１０）。
【００７７】
パケット転送部２００がパケットを転送したときに、フロー終端確認部２２０は、転送パケットを監視し、フローの終了を監視する（ステップＡ１１）。フローの終了でない場合は、フロー継続中であるため、そのままの設定で、負荷分散のためのパケット転送処理を継続させる（ステップＡ１１のＮｏ）。
【００７８】
一方、フローの終了である場合（ステップＡ１１のＹｅｓ）、フロー終端確認部２２０は、フロー終端判定部１２０へフロー終端通知メッセージを通知する。フロー終端判定部１２０は、フロー終端通知メッセージを参照し、フロー終端情報記憶部１３０を更新する（ステップＡ１２）。
【００７９】
フロー終端判定部１２０は、更新したフロー終端情報から、フローの終了かどうかを判定する（ステップＡ１３）。フローの終了と判定した場合（ステップＡ１３のＹｅｓ）、各種情報を削除する処理に入る。フロー終端判定部１２０は、フロー経路設定部１００へフローに対する経路情報を削除するためにフロー終端通知メッセージを送信し、負荷分散先決定部３００へ負荷分散先情報の削除を依頼するためにフロー終端通知メッセージを送信し、さらに、フロー終端情報記憶部１３０から対応するフローのフロー終端情報を削除する。
【００８０】
フロー経路設定部１００は、経路上のパケット転送部２００へ経路情報の削除を依頼するため転送規則削除メッセージを送信し、対応するフローの経路情報を転送経路記憶部１１０から削除する。
【００８１】
各メッセージを受信したパケット転送部２００、負荷分散先決定部３００は対応する転送規則、負荷分散先情報をそれぞれ転送規則記憶部２１０、負荷分散先記憶部３１０から削除する（ステップＡ１４）。
【００８２】
上記の一連の処理をパケットごとに随時行うことで、負荷分散処理が実現される。本実施形態では、初期パケットで分散先を決定し、分散先決定結果を転送経路として反映するための仕組みを制御装置、パケット転送装置、負荷分散装置に保持させると同時に、処理の終了を明確に確認する処理終了確認部を設け、負荷分散先決定部へ明示的に処理の終了を通知するように構成するため、以下の２つの効果が挙げられる。
【００８３】
第１の効果は、単一装置、および、ネットワーク負荷を低減できることである。その理由は、初期パケット時に負荷分散先を決定し、サービス中のパケット転送はパケット転送装置のみで実現され、かつ、処理の終了を明確に確認する処理終了確認部を設け、負荷分散先決定部へ明示的に処理の終了を通知するためである。これによる、負荷分散先判定における負荷分散装置への集中化が回避でき、かつ、負荷分散中のサービスの終了判定のためのネットワークフローの定期的な状態監視処理が必要でなくなるためである。
【００８４】
第２の効果は、サービスごとの負荷分散を安定して提供できることである。その理由は、パケット転送装置によるフロー終端監視により、サービス提供の明確な終了が判定できるため、タイムアウトによるサービス終了判定の誤認識をなくすことができる。これにより、サービス中断時における終了と判定してしまう誤判定や、タイムアウト時間中におけるサービス連続時の負荷分散先決定の未処理を防ぐことが可能になる。
【００８５】
［第２の実施形態］
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。図３は、本発明の第２の実施形態の構成を表したブロック図である。図３を参照すると、本発明の本発明の第２の実施形態に係る負荷分散システムは、フロー制御装置１０と、パケット転送装置２０−１〜２０−ｋと、負荷分散装置３０とから構成されている点で、第１の実施形態と同一である。各装置の構成も略同一であり、構成上の違いは、フロー制御装置１０におけるフロー終端判定部１２１が転送経路記憶部１１１と接続されていないだけである。
【００８６】
これは、サービス終了の判定において、事前に判定に必要となる情報を作成し、フロー終端情報記憶部１３０に記憶させる方法を採るための構成である。以下、本発明の第１の実施形態との相違点を中心に、本実施形態の構成を説明する。
【００８７】
フロー経路設定部１０１は、本発明の第１の実施形態のフロー経路設定部１００が保有する機能に加えて、フローの転送経路決定時にフロー終端判定部１２１へ、終端チェック情報設定メッセージを送信する。終端チェック情報設定メッセージは、少なくとも終端チェック情報設定メッセージを表わす命令コードとフロー識別子と、終端チェック装置識別子の集合、または、転送経路情報を含めて作成される。終端チェック装置は、サービスの終了判定方法に依存し、終了判定に必要となるフロー終端通知すべきパケット転送装置のことである。例えば、フロー終了判定をフローの転送経路の両端で判定する場合は、終端チェック装置は、転送経路の両端に位置するパケット転送装置となる。
【００８８】
転送経路記憶部１１１は、フロー経路設定部１０１からアクセスされ、フローの転送経路の参照、記憶、削除を行う。
【００８９】
フロー終端判定部１２１は、本発明の第１の実施形態のフロー終端判定部１２０とは、サービスの終了判定処理の動作が相違する。
【００９０】
フロー終端判定部１２１は、フロー経路設定部１０１から終端チェック装置の集合を含んだ終端チェック情報設定メッセージを受信した場合、フロー終端情報記憶部１３０に、フロー識別子と対応付けて、終端チェック装置の集合をチェック項目として記憶する。終端チェック情報設定メッセージに転送経路情報が含まれている場合、フロー終端判定部１２１は、転送経路情報から終端チェック装置を求め、チェック項目として記憶する。
【００９１】
フロー終端判定部１２１は、フロー終端確認部２２０からフロー終端通知メッセージを受信した場合、フローの終了判定を行う。フロー終端判定部１２１は、フロー終端通知メッセージを受信したなら、対応するフローに対して、フロー終端情報記憶部１３０に記憶しているチェック項目のうち、フロー終端通知メッセージを送信してきたパケット転送装置のチェック項目にフロー終端通知の受信マークを付ける。対応するフローのチェック項目に対して、フロー終端がすべてにチェックされた場合、全終端チェック装置においてフローの終端が検知されたことになるので、フローの終了であると判定する。
【００９２】
なお、上記のような判定手順に合わせてフロー終端情報記憶部１３０の記憶方法を、マーク方式で記憶しやすい方法に変更することも好ましい。
【００９３】
フロー終端判定部１２１は、サービス終了だと判定した場合、フローの転送経路を削除するため、フロー経路設定部１０１へフロー終端通知メッセージを送信する。また、フロー終端判定部１２１は、サービスの提供先サーバ情報を削除するため、負荷分散先決定部３００へ処理終端通知メッセージを送信する。処理終端通知メッセージは、少なくとも処理終端通知メッセージを表わす命令コードとフロー識別子を含めて作成される。最後に、フロー終端判定部１２１は、対応するフローのフロー終端情報をフロー終端情報記憶部１３０から削除する。
【００９４】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図４は、本発明の第２の実施形態の動作を説明するためのフローチャートである。全体の動作も上記第１の実施形態と共通し、第１の実施形態の図２のステップＡ１〜Ａ８、Ａ９〜Ａ１１およびＡ１４は、図４のステップＢ１〜Ｂ８、Ｂ１０〜Ｂ１２およびＢ１５と同様の動作である。以下、相違点である、ステップＢ９、ステップＢ１３、および、ステップＢ１４を中心に説明する。
【００９５】
まずは、サービス終了の判定のための終端チェック情報を作成し、登録するフェーズが加わる。転送経路を決定した（ステップＢ８）後、フロー経路設定部１０１は、終端チェック情報設定メッセージを作成し、フロー終端判定部１２１へ送信する。フロー終端判定部１２１は、チェック項目を抽出、または、計算し、フロー終端情報記憶部１３０に記憶する（ステップＢ９）。
【００９６】
更に、本実施形態では、サービス終了の判定がマーク方式に変更されているので、フロー終端判定部１２１は、フロー終端通知メッセージを参照し、フロー終端情報記憶部１３０における対応するフローの送信してきたパケット転送装置２０の終端チェック項目に終端情報の受信マークを付ける（ステップＢ１３）。フロー終端判定部１２１は、終端チェック項目に終端情報の受信マークを検査し、フローの終端チェック項目すべてにマークされているかどうかで、サービスの終了を判定する（ステップＢ１４）。
【００９７】
上記の処理により、負荷分散処理が実現され、第１の実施形態と同等の効果が奏出される。
【００９８】
［第３の実施形態］
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。図５は、本発明の第３の実施形態の構成を表したブロック図である。図５を参照すると、本発明の本発明の第３の実施形態に係る負荷分散システムは、フロー制御装置１０と、パケット転送装置２０−１〜２０−ｋと、負荷分散装置３３とから構成されている点で、第１の実施形態と同一であり、負荷分散装置３３の構成が異なる点を除いて、各装置の構成は略同一である。
【００９９】
本実施形態では、負荷分散装置３３内に負荷監視部３２２が追加されている。これは、負荷分散先の決定において、負荷監視を行い、現実の負荷情報を反映するための構成である。以下、本発明の第１の実施形態との相違点を中心に、本実施形態の構成を説明する。
【０１００】
負荷監視部３２２は、サービス提供先を決定するための指標として、各計算機リソース、パケット転送装置のリソース、計算機、もしくは、パケット転送装置の負荷の中から予め選択された指標（以下、「負荷情報」という。）を監視する。なお、本実施形態では、図５に示すように、負荷監視部３２２は。ｎ個（ｎは１以上の任意の整数）あるものとする。
【０１０１】
負荷分散先決定部３０２は、第１の実施形態と同様、フロー経路設定部１００から送信先決定依頼メッセージを受信した場合、負荷分散先記憶部３１３をチェックし、事前に決定された負荷分散先がないかをチェックする。負荷分散先記憶部３１３に負荷分散先が存在する場合は、フロー経路設定部１００へ送信先として負荷分散先通知メッセージを送信する。
【０１０２】
負荷分散先記憶部３１３に負荷分散先が存在しない場合、負荷分散先決定部３０２は、負荷監視部３２２からサービス提供先決定時に必要となる負荷情報を取得し、負荷分散アルゴリズムに従って単一のサービス提供先サーバを決定する。負荷分散アルゴリズムは、計算機リソースなどの負荷情報を用いる既存のアルゴリズムを使用することができる。例えば、サーバのＣＰＵ使用率が低いサーバを選択する、張られているセッション数の少ないサーバを選択する等の方法が挙げられる。負荷分散先決定部３０２は、上記アルゴリズムに従って決定したサービス提供先サーバを、負荷分散先として負荷分散先記憶部３１３へ記憶させる。このとき、記憶する情報は、フロー識別子と送信先サーバ識別子になる。負荷分散先決定部３０２は、負荷分散アルゴリズムに従って決定したサービス提供先サーバを、フロー経路設定部１００へ送信先として負荷分散先通知メッセージを送信する。また、負荷分散先決定部３０２は、負荷監視部３２２の負荷情報を更新することもできる。負荷情報の更新については、負荷監視部３２２の項で後述する。
【０１０３】
負荷分散先決定部３０２は、フロー終端判定部１２０から処理終端通知メッセージを受信した場合、対応するフローの負荷分散先を負荷分散先記憶部３１３から削除する。また、このときに負荷分散先決定部３０２に、負荷監視部３２２の負荷情報を更新させることもできる。
【０１０４】
負荷監視部３２２は、サービス提供先を決定するための指標として、各計算機リソース、パケット転送装置のリソース、計算機、もしくは、パケット転送装置の負荷の中から予め選択された指標（以下、「負荷情報」という。）を監視する。その他負荷情報としては、例えば、ＣＰＵ利用率、セッション数、対応可能セッション数に対するセッション数の比率などを用いることもできる。また、負荷情報は、監視期間として一定周期ごとに取得したものを用いるほか、取得した情報からの定数個の平均値などの統計値を利用するものとしてもよい。
【０１０５】
また、負荷監視部３２２は、負荷分散先決定部３０２と協調し、セッション数やサービス割当て数を保持するものとしてもよい。このような負荷情報を用いる場合、負荷分散先決定部３０２からの負荷情報の更新依頼で負荷情報を計算でき、特定の装置を監視する必要はなくなる。すなわち、負荷分散先決定部３０２が負荷分散先を決定したときは対応するサーバ等のサービス割当て数を増加し、負荷分散先決定部３０２が負荷分散先を削除したときは、対応するサーバ等のサービス割当て数を減少させれば１つの負荷情報となる。
【０１０６】
負荷監視部３２２は、負荷分散先決定部３０２から負荷情報の提供を依頼されたなら、負荷情報を通知する。
【０１０７】
第３の実施形態の動作は、第１の実施形態の動作を表した図２のフローチャートを用いて説明することができる。即ち、図２のステップＡ７の負荷分散先決定処理において、負荷分散先決定部３０２が負荷情報を用いる負荷分散アルゴリズムを用いるだけで、その他の処理は第１の実施形態と同様である。
【０１０８】
以上説明したような本発明の第３の実施形態によれば、第１の実施形態の効果に加えて、各計算機リソース、転送装置リソース、計算機、もしくは、転送装置の負荷情報を用いて負荷分散可能になるため、より実際の計算機環境に適した負荷分散が可能になる。その理由は、負荷監視部３２２から得られる負荷情報を考慮して、負荷分散先を決定するよう構成したためである。
【０１０９】
［第４の実施形態］
次に、本発明の第４の実施形態について図面を参照して詳細に説明する。図６は、本発明の第４の実施形態の構成を表したブロック図である。図５を参照すると、本発明の本発明の第４の実施形態に係る負荷分散システムは、フロー制御装置１０と、パケット転送装置２０−１〜２０−ｋと、負荷分散装置３３とから構成されている点で、第３の実施形態と同一である。その他各装置の構成は略同一であり、相違点は、フロー経路設定部１０３と負荷分散先決定部３０３の機能に変更が加えられた点である。
【０１１０】
これは、負荷分散先の決定において、負荷分散先決定の際に、負荷分散装置が把握する負荷情報だけの判断だけでなく、フロー制御装置での経路決定時の指針を加えて、負荷分散先を決定するための構成である。以下、本発明の第３の実施形態との相違点を中心に、本実施形態の構成を説明する。
【０１１１】
フロー経路設定部１０３は、上記した第１の実施形態のフロー経路設定部１００が有する機能に加えて、以下の機能を持つ。
【０１１２】
フロー経路設定部１０３は、負荷分散先決定部３０３から受信する負荷分散先通知メッセージに複数の負荷分散先を含むことを許す。すなわち、負荷分散先として複数の候補サーバを示されることを許す。フロー経路設定部１０３は、複数の候補サーバを元に、転送経路を決定する。経路決定には、第１の実施形態のフロー経路設定部１００と同様にダイクストラのアルゴリズムなどの最適経路を決定するアルゴリズムを使用できる。この転送経路の決定により、候補サーバの中から単一なサービス提供先サーバが決定される。
【０１１３】
フロー経路設定部１０３は、負荷分散先決定部３０３から受信する負荷分散先通知メッセージが複数の負荷分散先を含んでいた場合、前記転送経路の決定を経て決定した負荷分散先サーバを負荷分散先として登録するために、負荷分散先決定部３０３に対し、転送先決定メッセージを送信する。転送先決定メッセージは、少なくとも転送先決定メッセージを表わす命令コードとフロー識別子、転送先識別子を含めて作成する。
【０１１４】
負荷分散先決定部３０３は、負荷分散のためのサービス提供先サーバを決定する。より具体的には、負荷分散先決定部３０３は、フロー経路設定部１０３から送信先決定依頼メッセージを受信した場合、負荷分散先記憶部３１３をチェックし、事前に決定された負荷分散先がないかをチェックする。負荷分散先記憶部３１３に負荷分散先が存在する場合は、フロー経路設定部１０３へ送信先として負荷分散先通知メッセージを送信する。
【０１１５】
負荷分散先記憶部３１３に負荷分散先が存在しない場合、負荷分散先決定部３０３は、負荷分散アルゴリズムに従ってサービス提供先サーバを決定する。負荷分散アルゴリズムとしては、第３の実施形態で例示した各種計算機リソースなどの負荷情報を用いる既存のアルゴリズムを使用することができる。例えば、サーバのＣＰＵ使用率が低いサーバを選択する、張られているセッション数の少ないサーバを選択するなどの方法が挙げられる。またこのとき、本実施形態の負荷分散先決定部３０３は、負荷分散先サーバを単一に決定する必要はなく、条件に見合うようであれば複数選択することができる。負荷分散先決定部３０３は、負荷分散アルゴリズムに従って決定したサービス提供先サーバを、フローに対する負荷分散先として負荷分散先記憶部３１０へ記憶させる。負荷分散先決定部３０３は、フロー経路設定部１０３に対し、負荷分散アルゴリズムに従って決定したサービス提供先サーバを含んだ負荷分散先通知メッセージを送信する。
【０１１６】
さらに、負荷分散先決定部３０３は、フロー経路設定部１０３から転送先決定メッセージを受信した場合、負荷分散先記憶部３１３に記憶している自身が選択したサービス提供先サーバの情報を、転送先決定メッセージに含まれている一意に決定したサービス提供先サーバに置き換える。
【０１１７】
さらに、負荷分散先決定部３０３は、フロー終端判定部１２０から処理終端通知メッセージを受信した場合、対応するフローの負荷分散先を負荷分散先記憶部３１３から削除する。
【０１１８】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図７は、本発明の第４の実施形態の動作を説明するためのフローチャートである。全体の動作も上記第１の実施形態と共通し、第１の実施形態の図２のステップＡ１〜Ａ６およびＡ９〜Ａ１４は、図７のステップＣ１〜Ｃ６、Ｃ１１〜Ｃ１６と同様の動作である。以下、相違点である、ステップＣ７〜Ｃ１０を中心に説明する。
【０１１９】
ステップＣ６で負荷分散先が決定されていないと判定された場合、負荷分散先決定部３０３は、負荷分散アルゴリズムに従い、負荷監視部３２２から負荷情報の取得などを経て、負荷分散の送信先候補を決定する。決定した送信先候補は、負荷分散先記憶部３１３へ記憶する。また、負荷分散先決定部３０３は、決定した送信先候補で負荷分散先候補通知メッセージを作成し、フロー経路設定部１０３へ送信し、フロー経路設定部１０３の経路決定処理を開始させる（ステップＣ７）。
【０１２０】
次に、フロー経路設定部１０３は、負荷分散対象サーバであろうと、負荷分散対象サーバでなかろうと、サービス提供先サーバの候補が決定されたので、経路設定アルゴリズムに従い、転送経路を決定する（ステップＣ８）。
【０１２１】
次に、フロー経路設定部１０３は、負荷分散先候補通知メッセージにて通知されたサービス提供先サーバの候補が単一であったかどうかを判定する（ステップＣ９）。
【０１２２】
単一でなかった場合（ステップＣ９のＮｏ）、フロー経路設定部１０３は、経路設定処理において決定された単一のサービス提供先サーバで情報を更新する必要があるため、負荷分散先決定部３０３に対し、転送経路決定処理を経て決定した負荷分散先サーバを負荷分散先とした転送先決定メッセージを送信する。受信した負荷分散先決定部３０３は、転送先決定メッセージに基づいて、負荷分散先記憶部３１３に記憶された負荷分散先サーバを更新する（ステップＣ１０）。
【０１２３】
以上のような本発明の第４の実施形態によれば、上記第１、第３の実施形態の効果に加えて、ネットワーク構成やネットワーク負荷、転送経路割当指針などを考慮した負荷分散が可能になるという効果が奏出される。その理由は、負荷分散アルゴリズムでサービス提供先サーバを決定する際に、サービス提供の条件に合うサーバの中から単一に決定するのではなく、候補として挙げてもらった後に、経路設定アルゴリズムによりネットワーク構成などを反映させて最終的な負荷分散先を決定するためである。
【０１２４】
また、第４の実施形態には、機器の機能分離をより明確にでき、実装しやすくなるという利点がある。例えば、負荷分散装置は、サーバ装置やスイッチ装置のような機器単体の負荷のみを考慮して決定させ、ネットワーク関係はフロー制御装置にすべて任せるという機能分離ができる。その理由は、ネットワークとしての最適化は経路設定アルゴリズムのみに任せて設計できるためである。
【０１２５】
［具体例１］
次に、本発明の具体例を用いて、本発明を構成する各装置のより詳細な動作を説明する。以下、上記した第４の実施形態の構成をベースに説明する。
【０１２６】
図８は、本発明の具体的動作を説明するための構成を表した図である。図８の計算機（以下、「コントローラ装置」という。）１０００は、コントローラとなる計算機であり、第４の実施形態のフロー制御装置１０と負荷分散装置３３とが実装されている。このとき、各装置はプログラムとして実装することができる。
【０１２７】
ＨＵＢ２００１、２００２、２００３は、上記各実施形態のパケット転送装置２０が実装されたＨＵＢであり、各計算機や各スイッチを接続する。ここでは、３つのＨＵＢ２００１、２００２、２００３が、上記各実施形態のパケット転送装置２０−１〜２０−ｋに対応するものとする。
【０１２８】
クライアント装置３００１は、パーソナルコンピュータ等であり、第４の実施形態のクライアント装置４０に対応する。図８の例では、効果を分かりやすく説明するために、２つのクライアント装置３００１、３００２が存在するものとしている。
【０１２９】
サーバ装置４００１、４００２、４００３、４００４は、Ｗｅｂサーバやアプリケーションサーバ等であり、第４の実施形態のサーバ装置５０に対応する。図８の例では、４つのサーバ装置４００１、４００２、４００３、４００４があり、それぞれを負荷分散先として利用できるものとしている。
【０１３０】
続いて、図８の各装置内の各部の実装例を説明する。
【０１３１】
コントローラ装置１０００のフロー経路設定部１０３は、経路を決定するときは、ダイクストラのアルゴリズムを用いる。このときの評価指標として、ホップ数（転送数）を用いる。また、経路設定の効果を分かりやすくするために、ＨＵＢ、サーバ装置、クライアント装置でかつ、装置番号の若い順で探索キューに入れることとする。
【０１３２】
コントローラ装置１０００の負荷分散先決定部３０３は、分散先決定の方法として、割り当てられたフロー数の少ないサーバ装置を選択することとする。同じフロー数のサーバ装置が存在する場合は、それらサーバ群を分散先として決定する。
【０１３３】
コントローラ装置１０００の負荷監視部３２２は、ここでは、各サーバ装置のサーバフロー数を監視することとする。このサーバフロー数は、実際のサーバ端末４００１、４００２、４００３、４００４に問合せなくとも、分散先を決定した回数と終端フローの回数で求めることができるが、以下の説明では、ＣＰＵ利用率などを監視するのと同様に、各サーバ装置に問合せて監視しているものとする。
【０１３４】
また、上記した第４の実施形態では、負荷監視部３２２は各サーバ装置５０へ直接接続されているものとして説明したが、図８の例のようにＨＵＢ装置を介して監視情報を受け取る実装とすることができる。図８の例では、そのためのパケット転送情報（転送規則）は事前に、各ＨＵＢに設定されることとする。また、監視は定期的にバックグラウンド処理として行っているのが一般的である。
【０１３５】
ＨＵＢ２００１、２００２、２００３のフロー終端確認部２２０は、終端確認方法としては、ＴＣＰのＦＩＮフラグによる４ハンドシェークが確認できたときに終了と判定することとする。実際には４ハンドシェークであるが、途中のＡＣＫ返答と続くサーバからのＦＩＮ要求は同一パケットでも実装可能であるため、後記する説明中では、ＳＹＮパケットのときと同様に３ハンドシェークのように図示、説明する。
【０１３６】
コントローラ装置１０００のフロー終端判定部１２０は、経路の両端となるＨＵＢがフロー終端を検知したときに、サービス終了であると判定するものとする。
【０１３７】
続いて、以下の説明で用いる識別子やメッセージの具体的な表記方法を説明する。以下の説明で負荷分散の対象とするサービスは、ＴＣＰを用いたＷｅｂページの提供とする。そのための、ＨＴＴＰの受口は８０番ポートとなる。
【０１３８】
このとき、フロー識別子として、ＩＰの送信元、送信先の組み合わせを用い、『＜  送信元  ，  送信先  ＞』として表現する。すなわち、１９２．１６８．１．１から１９２．１６８．４．１へのパケットは『＜  １９２．１６８．１．１  ，  １９２．１６８．４．１  ＞』として表現する。また、サービスごと、すなわち、一連のＷｅｂページ取得ごとに区別することとし、各サービスの提供単位を表わすために、送信元のＴＣＰのポート番号を利用して、『１９２．１６８．４．１：８０』として表現することもある。また以下の説明でも、フローが終了したことをもって、サービスが終了したものと判定するものとするため、フロー識別子は、サービスの識別子と同義である。
【０１３９】
図９は、以下の説明で使用するメッセージの一覧である。各種メッセージは、『［命令コード，データ］』の組合せで表現する。
【０１４０】
転送経路は、装置名をハイフン（−）で区切って表示し、クライアント装置、サーバ装置はそれぞれ『Ｃｌｉ』、『Ｓｅｒｖ』として表現する。転送規則は、『［フロー識別子，  動作］』で表現し、動作は装置への転送を『Ｆｏｒｗａｒｄ  装置名』として表現する。すなわち、クライアント装置３００１への転送をさせる動作は、『Ｆｏｒｗａｒｄ  Ｃｌｉ３００１』となる。
【０１４１】
図１０は、クライアント装置３００１から新規パケットを受信したＨＵＮ２００１（パケット転送装置）の動作を説明するための図である。図１０に示すように、クライアント装置３００１が、サービス要求のためのパケットをサーバ装置へ通知しようとする。このとき、ＴＣＰにおいて、ＳＹＮパケットがＨＵＢ２００１に到着する。フロー識別子は、要求クライアントが１０００番ポートから出力されたものとし、＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞となる。
【０１４２】
ＨＵＢ２００１内のパケット転送部２００−１は、フロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞に対する転送規則記憶部２１０−１と照会するが、記憶されていないため（図７のステップＣ１のＮｏに相当）、コントローラ装置１０００のフロー経路設定部１０３へ経路設定依頼メッセージ  ［ＩｓＰａｔｈ，  ＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞］を送信する（図７ステップのＣ２に相当）。
【０１４３】
図１１は、上記経路設定依頼メッセージを受信したコントローラ装置１０００の動作を説明するための図である。図１１に示すように、フロー経路設定部１０３は、転送経路記憶部１１０を参照するが、フロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞に対応する転送経路情報は存在しないため（図７のステップＣ３のＮｏに相当）、宛先情報１９２．１６８．４．１をチェックし、負荷分散対象サーバであることを認識する（図７のステップＣ４のＹｅｓに相当）。そして、フロー経路設定部１０３は、負荷分散先決定部３０３へ送信先決定依頼メッセージ［ＩｓＤｅｓｔ，  ＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞］を送信する（図１１の左上吹き出し；図７のステップＣ５に相当）。
【０１４４】
負荷分散先決定部３０３は、フロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞に対応するフローがないか、負荷分散先記憶部３１０と照合するが、フローがないため（図７のステップＣ６のＮｏに相当）、負荷分散決定処理に入る。まず、送信先の識別子となる１９２．１６８．４．１に対応可能なサーバ装置４００１、４００２、４００３、４００４の負荷情報を負荷監視部３２２から取得する。今回は、まだ最初であるため、すべてのサーバ装置においてフロー数は０となる。そのため、全サーバ装置が負荷分散先候補として選出される。負荷分散先決定部３０３は、すべてのサーバ装置の集合情報｛Ｓｅｒｖ４００１，  Ｓｅｒｖ４００２，  Ｓｅｒｖ４００３，  Ｓｅｒｖ４００４｝を負荷分散先記憶部３１３にフロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞をキーとして記憶させる。次に、負荷分散先決定部３０３は、負荷分散先通知メッセージ［Ｄｅｓｔ，  ｛Ｓｅｒｖ４００１，  Ｓｅｒｖ４００２，  Ｓｅｒｖ４００３，  Ｓｅｒｖ４００４｝］をフロー経路設定部１０３へ送信する（図１１の左下吹き出し；図７のステップＣ７に相当）。
【０１４５】
フロー経路設定部１０３は、受信した負荷分散先通知メッセージを元に、ダイクストラのアルゴリズムに従って、経路探索を行う。まず、クライアント装置３００１から開始し、｛Ｃｌｉ３００１：０｝  →  ｛ＨＵＢ２００１：１  ｜  Ｃｌｉ３００１：０｝  →  ｛ＨＵＢ２００２：２，  ＨＵＢ２００３：２  ｜  Ｃｌｉ３００１：０，  ＨＵＢ２００１：１｝  →  ｛ＨＵＢ２００３：２，  Ｓｅｒｖ４００１：３，  Ｓｅｒｖ４００２：３  ｜  Ｃｌｉ３００１：０，  ＨＵＢ２００１：１，  ＨＵＢ２００２：２｝  →  ｛Ｓｅｒｖ４００１：３，  Ｓｅｒｖ４００２：３，  Ｓｅｒｖ４００１：３，  Ｓｅｒｖ４００２：３  ｜  Ｃｌｉ３００１：０，  ＨＵＢ２００１：１，  ＨＵＢ２００２：２，  ＨＵＢ２００３：２｝となり、Ｓｅｒｖ４００１に最初に辿りつき、そのための転送経路が展開された経路である  Ｃｌｉ３００１  −  ＨＵＢ２００１  −  ＨＵＢ２００２  −  Ｓｅｒｖ４００１であることが求められる（図１１の下段吹き出し）。また、逆向きのフロー、すなわち、１９２．１６８．４．１から１９２．１６８．１．１：１０００への経路は、Ｓｅｒｖ４００１  −  ＨＵＢ２００２  −  ＨＵＢ２００１  −  Ｃｌｉ３００１となることも求められる（図１１の下段吹き出し）。
【０１４６】
フロー経路設定部１０３は、これらの転送経路を、転送経路記憶部１１０にそれぞれのフロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞、＜  １９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞をキーとして記憶する（図７のステップＣ８に相当）。
【０１４７】
フロー経路設定部１０３は、負荷分散先候補が単一でなかったため（図７のステップＣ９のＮｏに相当）、負荷分散先決定部３０３へ、転送先決定メッセージ［Ｕｎｉｆｙ，  Ｓｅｒｖ４００１］を送信する（図１１の右側中央吹き出し）。負荷分散先決定部３０３は、転送先決定メッセージ［Ｕｎｉｆｙ，  Ｓｅｒｖ４００１］を受信したので、負荷分散先記憶部３１３にフロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞をキーとしての値、すなわち、負荷分散先を｛Ｓｅｒｖ４００１｝に更新する（図７のステップＣ１０に相当）。
【０１４８】
図１２は、コントローラ装置１０００が上記決定した転送経路を各ＨＵＢに設定する動作を説明するための図である。図１２に示すように、フロー経路設定部１０３は、決定した転送経路を転送規則に直して、中継する各パケット転送部２００に伝達する。まず、フロー識別子＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞に対するフローに関して、転送経路は、Ｃｌｉ３００１  −  ＨＵＢ２００１  −  ＨＵＢ２００２  −  Ｓｅｒｖ４００１のため、中継ＨＵＢは、ＨＵＢ２００１，  ＨＵＢ２００２となる。そのため、転送規則は、ＨＵＢ２００１に対しては［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］、ＨＵＢ２００２に対しては、［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  Ｓｅｒｖ４００１］となる。
【０１４９】
同様に逆向きのフローに対応する転送規則は、ＨＵＢ２００１に対しては［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞  ，  Ｆｏｒｗａｒｄ  Ｃｌｉ３００１］、ＨＵＢ２００２に対しては、［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００１］となる。
【０１５０】
フロー経路設定部１０３は、これらの転送規則を設定するために、パケット転送部２００１−１へ転送規則設定メッセージ  ［ＳｅｔＲｏｕｔｅ，  ［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］］と［ＳｅｔＲｏｕｔｅ，  ［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞  ，  Ｆｏｒｗａｒｄ  Ｃｌｉ３００１］］、パケット転送部２００−２へ転送規則設定メッセージ  ［ＳｅｔＲｏｕｔｅ，  ［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  Ｓｅｒｖ４００１］］と［ＳｅｔＲｏｕｔｅ，  ［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００１］］をそれぞれ送信する。
【０１５１】
パケット転送部２００−１は、受信した転送規則設定メッセージから、転送規則［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］、［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］を転送規則記憶部２１０−１に記憶する。パケット転送部２００−２も、受信した転送規則設定メッセージから、転送規則［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］、［＜  １９２．１６８．１．１：１０００  ，  １９２．１６８．４．１  ＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］を転送規則記憶部２１０−２に記憶する（図７のステップＣ１１に相当）。
【０１５２】
図１３は、上記転送経路が設定されたＨＵＢ２００１、２００２の動作を説明するための図である。図１３に示すように、パケット転送部２００−１は、転送規則が設定されたので、転送規則に従って、保有していたＳＹＮパケットをＨＵＢ２００２へ転送する。パケット転送部２００−２も、パケット転送部２００−１からＳＹＮパケットを受信するが、転送規則が設定されているのでサーバ装置４００１へと転送する（図７のステップＣ１２に相当）。また、ＨＵＢ２００１、および、ＨＵＢ２００２内のフロー終端確認部２２０−１、および、２２０−２は、ＳＹＮパケットであったために、処理の終了ではないと判断し、処理終端を判断したとのメッセージの送信は行われない（図７のステップＣ１３のＮｏに相当）。
【０１５３】
以上の処理で、サーバ装置４００１のサービス提供部５００−１にＳＹＮパケットが到着する。サービス提供部５００−１はＳＹＮパケットが到着したため、サービスの提供のためのコネクション確立を開始する。すなわち、ＳＹＮ−ＡＣＫパケットを返答しようとする。これは、フロー識別子として＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞となる。
【０１５４】
図１４は、図１３の続図であり、サーバ装置からの応答パケットを受信したＨＵＢの動作を説明するための図である。図１４に示すように、＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００  ＞に関する転送経路は既に設定されているため、ＨＵＢ２００２、ＨＵＢ２００１においてはパケットの転送処理だけが行われることになる。
【０１５５】
以降、クライアント装置３００１の１９２．１６８．１．１：１０００とサーバ装置４００１との間のフローは、設定された転送経路に従って処理が継続される。
【０１５６】
次に、クライアント装置３００２が、サービス要求のためのパケットをサーバ装置へ通知しようとしたときには、次のように負荷分散が行われる。まず、ＴＣＰにおいて、クライアント装置３００２からＳＹＮパケットがＨＵＢ２００３に到着する。フロー識別子は、要求クライアントが１０００番ポートから出力されたものとし、＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞となる。
【０１５７】
次に、ＨＵＢ２００３から転送経路設定の処理が開始される。ＨＵＢ２００３内のパケット転送部２００−３は、フロー識別子＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞に対する転送規則記憶部２１０−３と照会するが、記憶されていないため（図７のステップＣ１のＮｏに相当）、コントローラ装置１０００のフロー経路設定部１０３へ経路設定依頼メッセージ［ＩｓＰａｔｈ，  ＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞］を送信する（図７のステップＣ２に相当）。
【０１５８】
フロー経路設定部１０３は、転送経路記憶部１１０を参照するが、フロー識別子＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞に対応する転送経路情報は存在しないため（図７のステップＣ３のＮｏに相当）、宛先情報１９２．１６８．４．１をチェックし、負荷分散対象サーバであることを認識する（図７ステップＣ４のＹｅｓ）。そして、フロー経路設定部１０３は、負荷分散先決定部３０３へ宛先決定依頼メッセージ［ＩｓＤｅｓｔ，  ＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞］を送信する（図７ステップＣ５）。
【０１５９】
負荷分散先決定部３０３は、フロー識別子＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞に対応するフローがないか、負荷分散先記憶部３１３と照合するが、対応するフローがないため（図７ステップＣ６のＮｏ）、負荷分散決定処理に入る。
【０１６０】
まず、送信先の識別子となる１９２．１６８．４．１に対応可能なサーバ装置４００１、４００２、４００３、４００４の負荷情報を負荷監視部３２０から取得する。サーバ装置４００１は、既にフロー数が１となり、他のサーバ装置より負荷が高いため、サーバ装置４００２、４００３、４００４が負荷分散先候補として選出される。次に、負荷分散先決定部３０３は、負荷分散先候補となるすべてのサーバ装置の集合情報｛Ｓｅｒｖ４００２，  Ｓｅｒｖ４００３，  Ｓｅｒｖ４００４｝を負荷分散先記憶部３１０に、フロー識別子＜  １９２．１６８．１．２：１０００  ，  １９２．１６８．４．１  ＞をキーとして記憶させる。次に、負荷分散先決定部３０３は、負荷分散先候補メッセージ［Ｄｅｓｔ，  ｛Ｓｅｒｖ４００２，  Ｓｅｒｖ４００３，  Ｓｅｒｖ４００４｝］をフロー経路設定部１０３へ送信する（図７のステップＣ７に相当）。
【０１６１】
フロー経路設定部１０３は、ダイクストラのアルゴリズムに従って、経路探索を行う。まず、クライアント装置３００２から開始し、｛Ｃｌｉ３００２：０｝  →  ｛ＨＵＢ２００３：１  ｜  Ｃｌｉ３００２：０｝  →  ｛ＨＵＢ２００１：２，  ＨＵＢ２００２：２，  Ｓｅｒｖ４００３：２，  Ｓｅｒｖ４００４：２  ｜  Ｃｌｉ３００２：０，  ＨＵＢ２００３：１｝  →  ｛ＨＵＢ２００２：２，  Ｓｅｒｖ４００３：２，  Ｓｅｒｖ４００４：２  ｜  Ｃｌｉ３００２：０，  ＨＵＢ２００３：１，  ＨＵＢ２００１：２｝  →  ｛Ｓｅｒｖ４００３：２，  Ｓｅｒｖ４００４：２，  Ｓｅｒｖ４００１：３，  Ｓｅｒｖ４００２：３  ｜  Ｃｌｉ３００２：０，  ＨＵＢ２００３：１，  ＨＵＢ２００１：２，  ＨＵＢ２００２：２｝となり、Ｓｅｒｖ４００３に最初に辿りつき、そのための転送経路が展開された経路である  Ｃｌｉ３００２  −  ＨＵＢ２００３  −  Ｓｅｒｖ４００３であることが求められる（図７のステップＣ８に相当）。
【０１６２】
以降、上記のクライアント装置３００１の１９２．１６８．１．１：１０００とサーバ端末４００１との処理と同様に、負荷分散先が単一であるかのチェックや、負荷分散先の登録処理や、転送規則の設定などが行なわれ（図７のステップＣ９〜Ｃ１１に相当）、クライアント装置３００２の１９２．１６８．１．２：１０００とサーバ端末４００３との間に転送経路が確立し、サービスの提供が開始される。
【０１６３】
同様に、再びクライアント装置３００１が１００１番ポートから、その後、クライアント装置３００２が１００１番ポートからサービスの提供を要求したときは、それぞれ、サーバ端末４００２、４００４との間で転送経路が確立し、サービスの提供が開始される。図１５は、図８の構成に上記それぞれ設定された転送経路による負荷分散状況を示す図である。
【０１６４】
その後、サービスの最後として、クライアント装置３００１が必要なフローが終了したときは、コネクション解放のために、クライアント装置からＦＩＮパケットが送信される。
【０１６５】
図１６は、上記ＦＩＮパケットを受信したＨＵＢがフロー終端を確認するまでの動作を説明するための図である。ＨＵＢ２００１のパケット転送部２００−１がＦＩＮパケットを転送したとき、フロー終端確認部２２０−１は、フローの終了を検出し、終了のハンドシェークの監視を開始する。
【０１６６】
クライアント装置３００１からのＦＩＮパケットが到着したとき、ＨＵＢ２００１のパケット転送部２００−１が、ＦＩＮパケットを転送規則に従ってＨＵＢ２００２へ送出すると同時に、ＨＵＢ２００１のフロー終端確認部２２０−１は、処理終端判定の第１段階に来たことを判断する（図１６のＳｔａｔｅ１）。
【０１６７】
図１７は、図１６の続図である。次に、フロー終端確認部２２０−１は、ＦＩＮに対する応答とサーバ装置４００１側からのＦＩＮ要求であるＦＩＮ−ＡＣＫパケットを監視する。ＨＵＢ２００１はサーバ端末４００１からＨＵＢ２００２を経由してＦＩＮ−ＡＣＫパケットを受信することになる。ＦＩＮ−ＡＣＫパケットを受信したなら、パケット転送部２００−１は転送規則に従ってＣｌｉ２００１に送出すると同時に、フロー終端確認部２２０−１は、処理終端判定の第２段階に来たことを判断する（図１７のＳｔａｔｅ２）
【０１６８】
図１８は、図１７の続図である。最後に、ＨＵＢ２００１はクライアント装置３００１から、最後のＡＣＫパケットを受信することになる。最後のＡＣＫパケットを受信したなら、パケット転送部２００−１は転送規則に従ってＨＵＢ２００２に送出すると同時に、フロー終端確認部２２０−１は、処理終端であると判定する（図１８のＳｔａｔｅ３）。そのため、フロー終端確認部２２０−１は、フロー終端判定部１２０へフロー終端通知メッセージ［Ｆｉｎ：  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞］を送信する（図７のステップＣ１３に相当）。
【０１６９】
同様の処理が、ＨＵＢ２００２でも繰り返され、パケット転送部２００−２を介して、フロー経路設定部１０３へフロー終端通知メッセージ［Ｆｉｎ：  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞］が送信される。
【０１７０】
コントローラ装置１０００のフロー終端判定部１２０は、フロー識別子＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞に関して、ＨＵＢ２００１，ＨＵＢ２００２からフロー終端通知メッセージ［Ｆｉｎ：  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞］をそれぞれ受信し、処理終端情報記憶部１３０の情報を更新する（図７のステップＣ１４に相当）。これにより、両端となるＨＵＢ２００１、ＨＵＢ２００２でフロー終端情報がチェックされ、サービス終了の判定がなされる（図７のステップＣ１５に相当）。
【０１７１】
図１９は、図１８の続図である。フロー終端判定部１２０はサービスが終了と判断したので、フロー経路設定部１０３へ［Ｆｉｎ：  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞］を送信する。フロー経路設定部１０３は、フローの終了を通知されたので、フロー識別子＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞、および、逆方向＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００＞のフローの転送規則を削除するため、ＨＵＢ２００１へ転送規則削除メッセージ［ＤｅｌＲｏｕｔｅ，  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００２］］，［ＤｅｌＲｏｕｔｅ，  ［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００＞  ，  Ｆｏｒｗａｒｄ  Ｃｌｉ３００１］］、ＨＵＢ２００２へＤｅｌＲｏｕｔｅ，  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞  ，  Ｆｏｒｗａｒｄ  Ｓｅｒｖ４００１］］、［ＤｅｌＲｏｕｔｅ，  ［＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００＞  ，  Ｆｏｒｗａｒｄ  ＨＵＢ２００１］］をそれぞれ送信する。
【０１７２】
ＨＵＢ２００１のパケット転送部２００−１は、転送規則削除メッセージに従い、転送規則記憶部２１０−１から対応する転送規則を削除する。同様に、ＨＵＢ２００２のパケット転送部２００−２は、転送規則削除メッセージに従い、転送規則記憶部２１０−２から対応する転送規則を削除する。また、フロー経路設定部１０３は、転送経路記憶部１１０から、フロー識別子＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞、および、逆方向＜１９２．１６８．４．１  ，  １９２．１６８．１．１：１０００＞のフローの転送経路情報を削除する。更に、フロー終端判定部１２０は、負荷分散先決定部３０３へフロー識別子＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞に関する負荷分散先情報の削除を依頼するために、処理終端通知メッセージ  ［Ｆｉｎ：  ［＜１９２．１６８．１．１：１０００  ，  １９２．１６８．４．１＞］を送信する。
【０１７３】
さらに、負荷分散先決定部３０３は、処理終了メッセージに対応するフロー識別子の負荷分散先情報を負荷分散先記憶部から削除する。（図７のステップＣ１６に対応）。
【０１７４】
上記のフローにより、負荷分散された１フローの終了処理が完成する。上記のパケットの転送における負荷分散先の決定処理、削除処理を繰り返すことで、セッションを契機とした負荷分散処理が実現される。
【０１７５】
以上、本発明の好適な実施形態及びその具体例を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
【０１７６】
例えば、上記した具体例は、本発明の第４の実施形態をベースとしたが、第１〜第３の実施形態においても同様の実装例を適用できる。また、各実施形態における相違点を組み合わせて、更なる別の実施形態とすることができる。例えば、第２の実施形態の負荷分散装置に負荷監視部を追加した第５の実施形態を得ることができる。
【０１７７】
図２０は、図８におけるコントローラ装置内の負荷分散装置を専用装置として分離した構成の例である。図２０の構成は、第１〜第４の実施形態の説明に用いた図１、図３、図５、図６の構成とも一致する。上記した具体例との相違は、フロー経路設定部と負荷分散先決定部との通信がパケット転送部２００を介して行われる点だけある。このために、事前にパケット転送部に、フロー経路設定部と負荷分散先決定部間でやり取りするメッセージのための転送経路を作成する処理は必要になるものの、基本的な作用・効果は一切変わらない。
【産業上の利用可能性】
【０１７８】
本発明によれば、大規模データセンターを仮想的な単一計算機として提供するための負荷分散システムといった用途に適用できる。また、通信経路最適化による応答速度最適化される負荷分散システムといった用途にも適用可能である。さらには、通信帯域保証機能付き負荷分散システムといった用途にも適用可能である。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。【０１７９】
最後に、本発明の特許請求の範囲に繰り込み可能な発明の例を付記する。【０１８０】
［付記１］
フロー制御装置に接続され、前記フロー制御装置から通知されたフローの転送規則に従って入力パケットを転送し、また、前記フロー制御装置に対し前記転送規則に適合しないパケットについての転送経路の決定を要求するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備える１つ以上のパケット転送装置と、
前記フロー制御装置に接続され、前記フロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置と、
前記パケット転送装置からの転送経路の決定要求に応じて、前記負荷分散装置に対し負荷分散先の決定を依頼し、決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、を備えたフロー制御装置と、
を含む負荷分散システム。【０１８１】
［付記２］
前記フロー制御装置と前記負荷分散装置が同一装置として実現されている負荷分散システム。【０１８２】
［付記３］
前記負荷分散装置は、前記フロー制御装置からのフローの終了通知に基づいて、前記負荷分散先として決定したサービス提供先サーバを記憶する負荷分散先記憶部から、前記終了したフローのサービス提供先サーバを削除し、
前記フロー制御装置は、
パケット転送装置にて検知されたフローの終端情報に基づいて、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を記憶する転送経路記憶部から、前記終了したフローの経路情報を削除するとともに、前記削除対象の経路上に位置するパケット転送装置に対して前記終了したフローの転送規則の削除を指示する負荷分散方法。【０１８３】
［付記４］
本発明のフロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置。【０１８４】
［付記５］
本発明のフロー制御装置から通知されたフローの転送規則に従って入力パケットを転送する処理と、
前記フロー制御装置に対し前記転送規則に適合しないパケットについての転送経路の決定を要求する処理と、
フローの終端を検知する処理と、をパケット転送装置を構成するコンピュータに実行させるプログラム。【０１８５】
［付記６］
本発明のフロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する処理を、負荷分散装置を構成するコンピュータに実行させるプログラム。【０１８６】
［付記７］
パケット転送装置からの転送経路の決定要求に応じて、所定の負荷分散装置に対し負荷分散先の決定を依頼し、決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知する処理と、
前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知する処理と、
をフロー制御装置を構成するコンピュータに実行させるプログラム。
【符号の説明】
【０１８７】
１０、１１、１３    フロー制御装置
１００、１０１、１０３    フロー経路設定部
１１０    転送経路記憶部
１２０、１２１    フロー終端判定部
１３０    フロー終端情報記憶部
２０    パケット転送装置
２００    パケット転送部
２１０    転送規則記憶部
２２０    フロー終端確認部
３０、３３、１２００    負荷分散装置
３００、３０２、３０３    負荷分散先決定部
３１０、３１３    負荷分散先記憶部
３２２    負荷監視部
１０００、１１００    コントローラ装置（フロー制御装置）（専用制御端末、計算機、コンピュータ）
２０００    ＨＵＢ、スイッチ、ルータ
４０、３００１、３００２    クライアント装置（計算機、コンピュータ）
４００    サービス要求部
５０、４００１、４００２、４００３、４００４    サーバ装置（計算機、コンピュータ）
５００    サービス提供部
【図１】
2011074630.tif 000003
【図２】
2011074630.tif 000004
【図３】
2011074630.tif 000005
【図４】
2011074630.tif 000006
【図５】
2011074630.tif 000007
【図６】
2011074630.tif 000008
【図７】
2011074630.tif 000009
【図８】
2011074630.tif 000010
【図９】
2011074630.tif 000011
【図１０】
2011074630.tif 000012
【図１１】
2011074630.tif 000013
【図１２】
2011074630.tif 000014
【図１３】
2011074630.tif 000015
【図１４】
2011074630.tif 000016
【図１５】
2011074630.tif 000017
【図１６】
2011074630.tif 000018
【図１７】
2011074630.tif 000019
【図１８】
2011074630.tif 000020
【図１９】
2011074630.tif 000021
【図２０】
2011074630.tif 000022
【図２１】
2011074630.tif 000023
【図２２】
2011074630.tif 000024
【図２３】
2011074630.tif 000025
【図２４】
2011074630.tif 000026
【図２５】
2011074630.tif 000027
【手続補正書】
【提出日】平成23年4月12日(2011.4.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フロー制御装置から通知された転送規則を用いてパケットを転送するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備える１つ以上のパケット転送装置と、
前記フロー制御装置からのフローの終了通知を参照して、複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散装置と、
前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、を備えたフロー制御装置と、
を含むことを特徴とする負荷分散システム。
【請求項２】
前記フロー制御装置は、
前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を記憶する転送経路記憶部を備え、
前記パケット転送装置にて検知されたフローの終端情報に基づいて、前記転送経路記憶部から、前記終了したフローの経路情報を削除するとともに、前記削除対象の経路上に位置するパケット転送装置に対して前記終了したフローの転送規則の削除を指示する、
請求項１の負荷分散システム。
【請求項３】
前記フロー制御装置は、更に、
前記パケット転送装置にて検知されたフローの終端情報を記憶するフロー終端情報記憶部を備え、
前記転送経路記憶部からの前記終了したフローの経路情報の削除と、前記削除対象の経路上に位置するパケット転送装置に対する前記終了したフローの転送規則の削除の指示が完了した段階で、前記フロー終端情報記憶部から前記フローの終端情報を削除する請求項２の負荷分散システム。
【請求項４】
前記フロー経路設定部は、フローの転送経路の決定時に、前記決定したフローの転送経路上で前記フローの終了を判定するパケット転送装置を示した終端チェック情報を作成し、前記フロー終端判定部へ通達し、
前記フロー終端判定部は、前記終端チェック情報を用いて、フローの終了を判定する請求項１から３いずれか一の負荷分散システム。
【請求項５】
前記負荷分散装置は、
前記負荷分散先として決定したサービス提供先サーバを記憶する負荷分散先記憶部と、
前記パケット転送装置または前記サービス提供先サーバとなる計算機の負荷を監視する負荷監視部と、
前記フロー制御装置からのフローの終了通知に基づいて、前記負荷分散先記憶部から、前記終了したフローのサービス提供先サーバを削除することにより、サービス提供先サーバの割り当て状況を管理し、
前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況および前記負荷監視部が監視する前記パケット転送装置または前記サービス提供先サーバとなる計算機の負荷状況に基づいて前記複数のサービス提供先サーバの中から負荷分散先を決定する負荷分散先決定部と、を備える請求項１から４いずれか一の負荷分散システム。
【請求項６】
前記負荷分散装置は、前記複数のサービス提供先サーバの中から複数の負荷分散先を選択し、
前記フロー経路設定部は、所定の経路決定規則を用いて、前記複数の負荷分散先の中から、いずれかのサービス提供先サーバを選択する請求項５の負荷分散システム。
【請求項７】
前記フロー経路設定部は、前記複数の負荷分散先の中から選択したサービス提供先サーバを前記負荷分散装置に通知し、
前記負荷分散装置は、前記通知に基づいて、前記負荷分散先記憶部に管理された各サービス提供先サーバの割り当て状況を更新する請求項６の負荷分散システム。
【請求項８】
フロー制御装置からのフローの終了通知を参照して、負荷分散装置が複数のサービス提供先サーバの中から負荷分散先を決定するステップと、
前記フロー制御装置が、前記負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するステップと、
前記パケット転送装置が、前記フロー制御装置から通知された転送規則を用いてパケットを転送するとともに、転送したパケットがフローの終端パケットであるか否かを検査して、前記フロー制御装置に報告するステップと、
前記フロー制御装置が前記パケット転送装置からフローの終端パケットを転送したとの報告に基づいてフローの終了を前記負荷分散装置に通知するステップと、
を含む負荷分散方法。
【請求項９】
所定のフロー制御装置から通知されたフローの転送規則に従って入力パケットを転送し、また、前記フロー制御装置に対し前記転送規則に適合しないパケットについての転送経路の決定を要求するパケット転送部と、フローの終端を検知するフロー終端確認部と、を備えるパケット転送装置。
【請求項１０】
所定の負荷分散装置にて決定されたサービス提供先サーバを利用するフローの転送経路を決定し、前記転送経路上のパケット転送装置に対し前記転送経路を実現する転送規則を通知するフロー経路設定部と、
前記パケット転送装置にて検知されたフローの終端情報に基づいてフローの終了を前記負荷分散装置に通知するフロー終端判定部と、
を備えたフロー制御装置。
【国際調査報告】
2011074630.tif 000028
2011074630.tif 000029
2011074630.tif 000030
2011074630.tif 000031