(57)【要約】【課題】フロー特性に応じて負荷分散を実現する際に、フロー特性を効率良く正確に特定すること。【解決手段】パケットにより構成されるフローのアプリケーションのフロー特性を含むアプリ情報を該パケットのフローを識別するフロー識別子に対応付けた情報を記憶するアプリ情報記憶手段と、入力ポートがパケットを受信すると、該パケットにより構成されるフローのアプリ情報を前記アプリ情報記憶手段から取得する取得手段と、前記取得手段により取得されたアプリ情報に含まれるフロー特性に応じて、複数のパケット転送装置のうち、該フロー特性のフローによる負荷が少ないことを示す負荷状態のパケット転送装置に対して前記入力ポートが受信したパケットを出力する出力手段と、を有することを特徴とする。【選択図】図２
2020028048.tif 000002
【特許請求の範囲】
【請求項１】
パケットにより構成されるフローのアプリケーションのフロー特性を含むアプリ情報を該パケットのフローを識別するフロー識別子に対応付けた情報を記憶するアプリ情報記憶手段と、
入力ポートがパケットを受信すると、該パケットにより構成されるフローのアプリ情報を前記アプリ情報記憶手段から取得する取得手段と、
前記取得手段により取得されたアプリ情報に含まれるフロー特性に応じて、複数のパケット転送装置のうち、該フロー特性のフローによる負荷が少ないことを示す負荷状態のパケット転送装置に対して前記入力ポートが受信したパケットを出力する出力手段と、
を有することを特徴とする負荷分散システム。
【請求項２】
前記アプリ情報は、アプリケーションの種別を含み、
前記アプリ情報記憶手段が記憶する情報の一部が、エントリが置換される際に置換されにくさに基づいて複数の領域に分けてキャッシュされるキャッシュ記憶手段を有し、
前記取得手段は、前記キャッシュ記憶手段から前記アプリ情報を取得し、前記キャッシュ記憶手段から前記アプリ情報を取得できない場合に、前記アプリ情報記憶手段から前記アプリ情報を取得し、前記種別に基づいて前記複数の領域のうちのいずれかの領域に該アプリ情報を前記フロー識別子に対応付けて登録することを特徴とする請求項１に記載の負荷分散システム。
【請求項３】
前記複数の領域は、エントリが削除されることのない第１領域と、エントリが削除される第３領域と、前記第３領域よりもエントリが削除されにくい第２領域とを含み、
前記取得手段は、前記種別が優先的にキャッシュされるアプリケーションであることを示す場合に、前記第２領域に前記アプリ情報を登録し、優先的にキャッシュされるアプリケーションでないことを示す場合に、前記第３領域に該アプリ情報を登録することを特徴とする請求項２に記載の負荷分散システム。
【請求項４】
前記取得手段は、前記種別が優先的にキャッシュされるアプリケーションであることを示す場合には、前記キャッシュ記憶手段のエントリをＬＲＵに基づいて置換する際に、前記第２領域のエントリについては前記キャッシュ記憶手段に登録されてからの経過時間に１より小さい正数の重み係数を乗じた値を用いて、前記第２領域又は前記第３領域から、置換されるエントリを選択することを特徴とする請求項３に記載の負荷分散システム。
【請求項５】
パケットにより構成されるフローのアプリケーションのフロー特性を含むアプリ情報を該パケットのフローを識別するフロー識別子に対応付けた情報をアプリ情報記憶手段に記憶する記憶手順、
入力ポートがパケットを受信すると、該パケットにより構成されるフローのアプリ情報を前記アプリ情報記憶手段から取得する取得手順と、
前記取得手順により取得されたアプリ情報に含まれるフロー特性に応じて、複数のパケット転送装置のうち、該フロー特性のフローによる負荷が少ないことを示す負荷状態のパケット転送装置に対して前記入力ポートが受信したパケットを出力する出力手順と、
を負荷分散システムが実行することを特徴とする負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散システム及び負荷分散方法に関する。
【背景技術】
【０００２】
ルータ等のパケット転送装置の負荷を分散させる技術が従来から知られている。例えば、パケットの転送先として複数のパケット転送装置と複数の転送経路とを用意し、それぞれの転送経路にトラヒックを均等に印加することで、パケット転送装置の負荷を分散する技術が知られている。また、このような負荷分散技術として、ＥＣＭＰ（Equal  Cost  Multi  Path）又はＥＣＭＰルーティングと呼ばれる技術も知られている。ＥＣＭＰは、上述した複数の転送経路のうち、等コストとなる転送経路にトラヒックを均等に印加する負荷分散技術である。
【０００３】
ＥＣＭＰを用いた負荷分散システムにおいて、パケット転送装置の出力物理ポートの出力バッファを監視し、この出力バッファの使用量又はパケット流量が閾値を超えた場合、転送経路を切り替える技術が知られている（例えば、特許文献１）。
【０００４】
パケット転送装置における転送容量の指標として、ｂｐｓ（bits  per  second）で表されるデータ量の転送容量と、ｐｐｓ（packets  per  second）で表されるパケット数の転送容量とがある。また、これらの転送容量には、パケット転送装置に固有の上限値がある。例えば、パケット転送装置をネットワーク仮想化技術により実現した場合、ｂｐｓは物理ＮＩＣ（Network  Interface  Card）のラインレートに律速されることがあり、ｐｐｓはＯＳ（Operating  System）やアプリケーション等のソフトウェアのパケット処理速度に律速されることがある。
【０００５】
ＥＣＭＰでは、フロー特性、すなわちロングパケット中心のフローかショートパケット中心のフローかを考慮していないため、パケット転送装置が転送するパケット長に偏りがある場合に、パケット転送装置の転送容量を最大限に活用することができないことがある。ここで、フローとは、フローを識別するフロー識別子が同一のパケット（トラヒック）又はパケット群のことを言う。フロー識別子は、パケットに含まれるヘッダ情報により特定され、例えば、５−ｔｕｐｌｅ（送信元ＩＰ（Internet  Protocol）アドレス、宛先ＩＰアドレス、送信元ポート番号、宛先ポート番号、プロトコル番号）、あるいは、Ｌ７情報（例えば、Ｌ７のヘッダ情報等）のことを言う。
【０００６】
例えば、動画等のトラヒックはロングパケットが多いという性質がある。このため、動画等のトラヒックが集中した場合、データ量の転送容量は枯渇する一方で、パケット数の転送容量には余裕がある状態となる。他方で、例えば、ＶｏＩＰ（Voice  over  Internet  Protocol）やテレメトリング等のトラヒックはショートパケットが多いという性質がある。このため、ＶｏＩＰやテレメトリング等のトラヒックが集中した場合、データ量の転送容量には余裕がある一方で、パケット数の転送容量が枯渇する状態となる。
【０００７】
そこで、フロー特性を考慮して負荷を分散する技術がある。例えば、宅内装置（Customer  Premises  Equipment）の一部機能を仮想化するｖＣＰＥ（Virtualized  CPE）をホストするサーバの負荷分散を、サーバのｂｐｓ及びｐｐｓの観点での負荷状態とフローのパケット長に基づいて行う負荷分散方式がある（例えば、非特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−３５００７８号公報
【非特許文献】
【０００９】
【非特許文献１】木村  明寛、宮本  克真、河野  伸也、土屋  英雄、岡田  昭宏、「フロー特性に基づくｖＣＰＥサーバの負荷分散方式」、電子情報通信学会２０１８年総合大会講演論文集，Ｖｏｌ．２０１８年＿通信（２），ｐ．９０  ｂ−６−９０
【発明の概要】
【発明が解決しようとする課題】
【００１０】
フロー特性に基づいて負荷分散を行う場合、いかにフロー特性を効率良く正確に特定するかが課題となる。
【００１１】
本発明の実施の形態は、上記の点に鑑みてなされたもので、フロー特性を効率良く正確に特定することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の実施の形態は、パケットにより構成されるフローのアプリケーションのフロー特性を含むアプリ情報を該パケットのフローを識別するフロー識別子に対応付けた情報を記憶するアプリ情報記憶手段と、入力ポートがパケットを受信すると、該パケットにより構成されるフローのアプリ情報を前記アプリ情報記憶手段から取得する取得手段と、前記取得手段により取得されたアプリ情報に含まれるフロー特性に応じて、複数のパケット転送装置のうち、該フロー特性のフローによる負荷が少ないことを示す負荷状態のパケット転送装置に対して前記入力ポートが受信したパケットを出力する出力手段と、を有することを特徴とする。
【発明の効果】
【００１３】
フロー特性を効率良く正確に特定することを目的とする。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態における負荷分散システムの全体構成の一例を示す図である。
【図２】図２は、実施例における負荷分散システムの機能構成の一例を示す図である。
【図３】図３は、実施例におけるアプリ情報データベースのエントリの一例を示す図である。
【図４】図４は、実施例におけるアプリ情報キャッシュのエントリの一例を示す図である。
【図５】図５は、実施例におけるアプリ情報キャッシュの使用方法を説明するための図である。
【図６】図６は、実施例におけるＥＣＭＰ経路テーブルの一例を示す図である。
【図７】図７は、実施例における負荷分散システムの処理の流れの一例を示す図である。
【図８】図８は、実施例におけるＥＣＭＰ経路テーブルの変更処理の流れの一例を説明するための図である。
【図９】図９は、実施例におけるパケット転送処理の流れの一例を説明するための図である。
【図１０】図１０は、実施例におけるアプリ情報キャッシュへの登録処理の流れの一例を説明するための図である。
【図１１】図１１は、エントリ特定処理の流れの一例を説明するための図である。
【図１２】図１２は、コンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について説明する。本発明の実施の形態では、フロー特性を特定し、特定したフロー特性に基づいて、負荷分散を行う負荷分散システム１について説明する。また、以降では、フロー特性には、ロングパケットが多いフローであることを示す「高ｂｐｓフロー」と、ショートパケットが多いフローであることを示す「高ｐｐｓフロー」とがあるものとする。
【００１６】
＜全体構成＞
まず、本発明の実施の形態における負荷分散システム１の全体構成について、図１を参照しながら説明する。図１は、本発明の実施の形態における負荷分散システム１の全体構成の一例を示す図である。
【００１７】
図１に示すように、本発明の実施の形態における負荷分散システム１には、負荷監視装置１０と、第１のパケット転送装置２０と、第２のパケット転送装置３０と、アプリ情報データベース４０と、アプリ判定装置５０とが含まれる。
【００１８】
負荷監視装置１０は、例えばコンピュータ又はコンピュータシステム等であり、負荷分散対象である第２のパケット転送装置３０のトラヒック流量を監視する。そして、負荷監視装置１０は、第２のパケット転送装置３０のトラヒック流量が所定の閾値を超えた場合（又は、所定の閾値を下回った場合）に、負荷分散の実施（又は負荷分散の解除）を示す命令を第１のパケット転送装置２０に送信する。
【００１９】
第１のパケット転送装置２０は、例えばルータ等であり、ネットワークＮ１側からのパケットを第２のパケット転送装置３０に転送する。このとき、第１のパケット転送装置２０は、負荷分散に用いられる所定のテーブルを参照して、複数の第２のパケット転送装置３０のうち、フロー特性に応じた第２のパケット転送装置３０に当該パケットを転送する。
【００２０】
また、第１のパケット転送装置２０は、負荷監視装置１０からの命令に応じて、負荷分散に用いられる所定のテーブルを変更する。
【００２１】
第２のパケット転送装置３０は、例えばルータ等であり、第１のパケット転送装置２０から転送されたパケットをネットワークＮ２側に転送する。以降では、複数の第２のパケット転送装置３０の各々を区別する場合は、「第２のパケット転送装置３０−１」、「第２のパケット転送装置３０−２」等と表す。
【００２２】
アプリ情報データベース４０は、フロー毎にアプリ種別及びフロー特性をアプリ情報として記憶するデータベースである。ここで、アプリとはアプリケーションであり、アプリ種別はアプリケーションの種別であり、フロー特性はアプリケーションのフロー特性である。アプリ判定装置５０は、例えばコンピュータ又はコンピュータシステム等であり、アプリ情報データベース４０を用いてフローのアプリ情報を検索する。
【００２３】
なお、図１に示す負荷分散システム１の構成は一例であって、他の構成であっても良い。例えば、第１のパケット転送装置２０及び第２のパケット転送装置３０は、ネットワーク仮想化技術によってコンピュータ上等に構築された仮想的なルータ等であっても良い。
【００２４】
（実施例）
以降では、本発明の実施の形態における負荷分散システム１の実施例について説明する。
【００２５】
＜機能構成＞
まず、実施例における負荷分散システム１の機能構成について、図２を参照しながら説明する。図２は、実施例における負荷分散システム１の機能構成の一例を示す図である。
【００２６】
図２に示すように、実施例における負荷監視装置１０は、流量監視部１０１と、負荷分散決定部１０２と、命令送信部１０３とを有する。
【００２７】
流量監視部１０１は、第２のパケット転送装置３０の統計情報から、これらの第２のパケット転送装置３０のトラヒック流量をデータ量（ｂｐｓ）及びパケット数（ｐｐｓ）それぞれの観点で監視する。すなわち、流量監視部１０１は、各第２のパケット転送装置３０について、監視結果として、データ量（ｂｐｓ）及びパケット数（ｐｐｓ）を得る。以降では、監視結果とした得られたデータ量（ｂｐｓ）を「ｂｐｓ結果値」、監視結果として得られたパケット数（ｐｐｓ）を「ｐｐｓ結果値」と表す。
【００２８】
負荷分散決定部１０２は、負荷分散を実施又は解除するかを決定する。すなわち、負荷分散決定部１０２は、ｂｐｓ結果値が、予め設定されたｂｐｓ閾値を超えたか又は下回ったかを判定する。同様に、負荷分散決定部１０２は、ｐｐｓ結果値が、予め設定されたｐｐｓ閾値を超えたか又は下回ったかを判定する。
【００２９】
そして、負荷分散決定部１０２は、ｂｐｓ結果値がｂｐｓ閾値を超えたと判定した場合、負荷分散を実施すると決定する。一方で、負荷分散決定部１０２は、ｂｐｓ結果値がｂｐｓ閾値を下回ったと判定した場合、負荷分散を解除すると決定する。
【００３０】
同様に、負荷分散決定部１０２は、ｐｐｓ結果値がｐｐｓ閾値を超えたと判定した場合、負荷分散を実施すると決定する。一方で、負荷分散決定部１０２は、ｐｐｓ結果値がｐｐｓ閾値を下回ったと判定した場合、負荷分散を解除すると決定する。
【００３１】
命令送信部１０３は、負荷分散決定部１０２によって負荷分散を実施すると決定された場合又は負荷分散を解除すると判定された場合、所定の命令を第１のパケット転送装置２０に送信する。
【００３２】
ここで、命令には、「閾値種別」と、「命令種別」と、「対象装置の識別情報」とが含まれる。「閾値種別」は、監視結果が超えた閾値又は監視結果が下回った閾値の種別であり、ｂｐｓ閾値を示す情報又はｐｐｓ閾値を示す情報のいずれかが設定される。「命令種別」は、負荷分散の実施又は解除のいずれであるかを示す情報が設定される。「対象装置の識別情報」は、監視結果が閾値を超えた又は下回った第２のパケット転送装置３０の識別情報であり、例えば、当該第２のパケット転送装置３０のＩＰアドレスが設定される。ただし、「対象装置の識別情報」には、ＩＰアドレス以外にも、例えば、当該第２のパケット転送装置３０のＩＤ、ＭＡＣ（Media  Access  Control）アドレス、ホスト名等が設定されても良い。
【００３３】
アプリ情報データベース４０は、フロー識別子とアプリ種別及びフロー特性とを対応付けるデータベースである。図３は、実施例におけるアプリ情報データベース４０のエントリの一例を示す図である。図３は、フロー識別子が５−ｔｕｐｌｅである場合を示す。図３に示すように、アプリ情報データベース４０のエントリには、「送信元ＩＰアドレス」と、「送信元ポート番号」と、「宛先ＩＰアドレス」と、「宛先ポート番号」と、「プロトコル番号」と、「アプリ種別」と、「フロー特性」とが含まれる。
【００３４】
「送信元ＩＰアドレス」には、パケットの送信元のＩＰアドレスが設定される。「送信元ポート番号」には、パケットの送信元のポート番号が設定される。「宛先ＩＰアドレス」には、パケットの宛先のＩＰアドレスが設定される。「宛先ポート番号」には、パケットの宛先のポート番号が設定される。「プロトコル番号」には、プロトコルの種別を示す番号が設定される。「アプリ種別」には、フローのアプリケーションの種別が設定される。例えば、アプリケーションの種別には、「動画」、「ＶｏＩＰ」、「テレメトリング」がある。「フロー特性」には、フローが「高ｂｐｓフロー」であるか「高ｐｐｓフロー」であるかが設定される。
【００３５】
なお、アプリ情報データベース４０のエントリに「送信元ＩＰアドレス」と「送信元ポート番号」は含まれなくても良い。例えば、図３では、「宛先ＩＰアドレス」が「１０．０．０．１００」であり「宛先ポート番号」が「４４３」であり「プロトコル番号」が「６」であるフローの「アプリ種別」は「動画」であり、「フロー特性」は「高ｂｐｓフロー」である。ここで、「宛先ポート番号」の「４４３」はＨＴＴＰＳ（Hypertext  Transfer  Protocol  Secure）で使用されるポート番号であり、「プロトコル番号」の「６」はプロトコルがＴＣＰ（Transmission  Control  Protocol）であることを示す。
【００３６】
アプリ情報データベース４０は、例えば、ＲＡＭ（Random  Access  Memory）や補助記憶装置、専用のメモリ装置等により実現される。
【００３７】
アプリ判定装置５０は、アプリ情報検索部５１を有する。アプリ情報検索部５１は、第１のパケット転送装置２０からフロー識別子を受け取り、フロー識別子をキーとしてアプリ情報データベース４０を検索し、アプリ種別及びフロー特性を特定する。そして、アプリ情報検索部５１は、特定したアプリ種別及びフロー特性をフロー識別子と共に第１のパケット転送装置２０に送信する。
【００３８】
また、図２に示すように、実施例における第１のパケット転送装置２０は、命令受信部２０１と、経路テーブル変更部２０２と、入力ポート２０３と、フロー情報取得部２０４と、アプリ判定部２０５と、経路決定部２０６と、ルーティング部２０７と、出力ポート２０８と、入力バッファ２０９とを有する。これら各機能部は、例えば、第１のパケット転送装置２０にインストールされた１以上のプログラムがＣＰＵ等に実行させる処理により実現される。
【００３９】
命令受信部２０１は、負荷監視装置１０からの命令を受信する。経路テーブル変更部２０２は、命令受信部２０１が受信した命令に応じて、ＥＣＭＰ経路テーブル１０００を変更する。ＥＣＭＰ経路テーブル１０００は、エントリとして経路情報を格納しているテーブルである。なお、ＥＣＭＰ経路テーブル１０００は、例えば、補助記憶装置や専用のメモリ装置等に格納されている。実施例におけるＥＣＭＰ経路テーブル１０００の詳細については後述する。
【００４０】
入力ポート２０３は、ネットワークＮ１側からのパケットを受信する。そして、入力ポート２０３は、受信したパケットを入力バッファ２０９に格納する。なお、入力バッファ２０９は、受信したパケットを一時的に格納しておくための記憶領域であり、例えばＲＡＭや補助記憶装置、専用のメモリ装置等により実現される。
【００４１】
フロー情報取得部２０４は、入力バッファ２０９に格納されているパケットのフロー識別子（例えば、５−ｔｕｐｌｅ）からハッシュ値を生成する。また、フロー情報取得部２０４は、フローテーブル２０００を参照して、生成したハッシュ値と一致するハッシュ値が含まれるエントリが存在するか否かを判定する。フローテーブル２０００は、エントリとして、ハッシュ値と、出力ポート２０８を示す情報（出力ポート情報）とが対応付けられたフロー転送情報を格納しているテーブルである。出力ポート情報は、複数の出力ポート２０８のうちのいずれか１つの出力ポート２０８を特定するための情報である。なお、フローテーブル２０００は、例えば、ＲＡＭや補助記憶装置、専用のメモリ装置等に格納されている。
【００４２】
そして、フロー情報取得部２０４は、該当のエントリが存在すると判定した場合、当該エントリをルーティング部２０７に通知する。一方で、フロー情報取得部２０４は、該当のエントリが存在しないと判定した場合、当該パケットを新規フローのパケットと判断して、該当のエントリが存在しない旨をアプリ判定部２０５に通知する。このとき、フロー情報取得部２０４は、フロー識別子とハッシュ値とをアプリ判定部２０５に通知する。
【００４３】
なお、フローテーブル２０００に格納されているエントリ（フロー転送情報）は、例えば、経路決定部２０６等によって所定の時間毎に削除（クリア）されても良い。
【００４４】
アプリ判定部２０５は、フロー情報取得部２０４からの通知に応じて、アプリ情報キャッシュ３０００を検索し、受信パケットのフローに対応するアプリ種別及びフロー特性を特定する。アプリ判定部２０５は、フロー識別子をキーとしてアプリ情報キャッシュ３０００を検索する。
【００４５】
図４は、実施例におけるアプリ情報キャッシュ３０００のエントリの一例を示す図である。図４に示すように、アプリ情報キャッシュ３０００のエントリには、図３に示したアプリ情報データベース４０のエントリと同様に、「送信元ＩＰアドレス」と、「送信元ポート番号」と、「宛先ＩＰアドレス」と、「宛先ポート番号」と、「プロトコル番号」と、「アプリ種別」と、「フロー特性」とが含まれる。
【００４６】
また、アプリ情報キャッシュ３０００のエントリには、「タイムスタンプ」が含まれる。「タイムスタンプ」には、アプリ情報キャッシュ３０００に登録された年月日及び時分秒が設定される。
【００４７】
アプリ情報キャッシュ３０００を検索してアプリ種別及びフロー特性を特定することができなかった場合、すなわち受信パケットのフローに対応するエントリがアプリ情報キャッシュ３０００にない場合には、アプリ判定部２０５は、アプリ判定装置５０にフロー識別子を送信してアプリ種別及びフロー特性の特定を依頼する。
【００４８】
また、アプリ判定部２０５は、アプリ判定装置５から取得したアプリ種別及びフロー特性をフロー識別子と対応付けてアプリ情報キャッシュ３０００に登録する。アプリ情報キャッシュ３０００は、３つのエリアに分けて使用され、アプリ判定部２０５は、アプリ種別に基づいて３つのエリアの中の１つのエリアに登録する。
【００４９】
図５は、実施例におけるアプリ情報キャッシュ３０００の使用方法を説明するための図である。図５に示すように、アプリ情報キャッシュ３０００は、優先度が低いＬＲＵ（Least  Recently  Used）エリアと、優先度が中の自動登録エリアと、優先度が高い手動登録エリアに分けられる。
【００５０】
ここで、優先度は、アプリ情報キャッシュ３０００が一杯になってエントリの置換が行われる場合に、アプリ情報キャッシュ３０００から削除される順番を示す。優先度が低いほど優先的に削除される。
【００５１】
なお、図５では、各エリアは連続したエリアとして示されているが、各エリアは不連続のエリアであり、各エリアのエントリはリスト構造等により管理される。
【００５２】
ＬＲＵエリアには、通常のアプリのフローについてのエントリが登録される。エントリの置換が行われる場合に、ＬＲＵアルゴリズムにしたがって置換が行われる。
【００５３】
自動登録エリアには、優先してキャッシュする必要のあるアプリのフローについてのエントリが登録される。例えば、低遅延性が要求されるアプリのフローのエントリが自動登録エリアに登録される。エントリの置換が行われる場合に、ＬＲＵエリアと自動登録エリアの中から、ＬＲＵアルゴリズムにしたがって置換が行われる。ただし、自動登録エリアのエントリについては、「タイムスタンプ」から計算される経過時間に任意の重み係数ω（０＜ω＜１）を掛けた値が用いられる。自動登録エリアのエントリが削除された場合には、削除されたエントリは、ＬＲＵエリアのエントリに置換される。
【００５４】
手動登録エリアは、ユーザやオペレータ等により、明示的に登録されたエントリがキャッシュされるエリアである。エントリの置換が行われる場合に、ＬＲＵエリアと自動登録エリアの中から、ＬＲＵアルゴリズムにしたがって置換が行われる。ただし、自動登録エリアのエントリについては、経過時間に任意の重み係数ω（０＜ω＜１）を掛けた値が用いられる。アプリ情報キャッシュ３０００の全領域が手動登録エリアとなっている場合、アプリ判定部２０５は、エラーを通知する。手動登録エリアのエントリが削除された場合には、削除されたエントリは、ＬＲＵエリアのエントリに置換される。
【００５５】
また、アプリ判定部２０５は、特定したアプリ種別及びフロー特性を経路決定部２０６に通知する。このとき、アプリ判定部２０５は、例えば、５−ｔｕｐｌｅと、アプリ種別と、フロー特性と、ハッシュ値とを経路決定部２０６に通知する。
【００５６】
なお、アプリ情報データベース４０及びアプリ情報キャッシュ３０００のエントリから「フロー特性」を除き、アプリ情報検索部５１及びアプリ判定部２０５は、それぞれアプリ情報データベース４０及びアプリ情報キャッシュ３０００からアプリ種別を検索しても良い。この場合、アプリ判定部２０５は、アプリ種別とフロー特性の対応関係に基づいて、アプリ種別からフロー特性を特定する。
【００５７】
図２に戻って、経路決定部２０６は、ＥＣＭＰ経路テーブル１０００を参照して、アプリ判定部２０５が特定したフロー特性から出力ポート２０８を決定する。また、経路決定部２０６は、決定した出力ポート２０８を示す情報と、ハッシュ値とを対応付けたフロー転送情報をフローテーブル２０００に格納する。そして、経路決定部２０６は、フローテーブル２０００に格納したエントリ（フロー転送情報）をルーティング部２０７に通知する。
【００５８】
ルーティング部２０７は、フロー情報取得部２０４又は経路決定部２０６から通知されたエントリ（フロー転送情報）に含まれる出力ポート情報を取得する。そして、ルーティング部２０７は、取得した出力ポート情報が示す出力ポート２０８に当該パケットを送信する。
【００５９】
出力ポート２０８は、ルーティング部２０７から受け取ったパケットを出力する。ここで、出力ポート２０８は、例えば、第２のパケット転送装置３０毎に存在する。例えば、出力ポート２０８には、第２のパケット転送装置３０−１に対応する出力ポート２０８−１、第２のパケット転送装置３０−２に対応する出力ポート２０８−２等がある。なお、出力ポート２０８は、物理ポートであっても良いし、論理ポートであっても良い。
【００６０】
ここで、実施例におけるＥＣＭＰ経路テーブル１０００について、図６を参照しながら説明する。図６は、実施例におけるＥＣＭＰ経路テーブル１０００の一例を示す図である。
【００６１】
図６に示すように、実施例におけるＥＣＭＰ経路テーブル１０００には、エントリとして経路情報が格納されている。また、経路情報には、「宛先ネットワーク」と、「サブネットマスク」と、「ゲートウェイのリスト」と、「出力ポート情報」と、「データ量（ｂｐｓ）の負荷状態」と、「パケット数（ｐｐｓ）の負荷状態」とが含まれる。
【００６２】
「宛先ネットワーク」には、パケットの転送先のネットワークのＩＰアドレス又はｄｅｆａｕｌｔが設定される。「サブネットマスク」には、宛先ネットワークに対応するサブネットマスクが設定される。
【００６３】
「ゲートウェイのリスト」には、宛先ネットワークに対応するゲートウェイ（第２のパケット転送装置３０）のＩＰアドレスが設定される。なお、「ゲートウェイのリスト」には、１つの宛先ネットワークに対して、１つ以上のゲートウェイのＩＰアドレスが設定される。
【００６４】
「出力ポート情報」には、「ゲートウェイのリスト」に設定されている各ゲートウェイ（のＩＰアドレス）に対する出力ポート２０８を示す情報がそれぞれ設定される。
【００６５】
図６に示す例では、ゲートウェイ「１９２．１６８．１．０」に対して、出力ポート２０８−１を示す「ｅｔｈ０」が対応付けられている。これは、ゲートウェイ「１９２．１６８．１．０」からパケットを送信する場合、出力ポート２０８−１から送信されることを示している。
【００６６】
同様に、例えば、ゲートウェイ「１９２．１６８．１．１」に対して、出力ポート２０８−２を示す「ｅｔｈ１」が対応付けられている。これは、ゲートウェイ「１９２．１６８．１．１」からパケットを送信する場合、出力ポート２０８−２から送信されることを示している。他のゲートウェイについても同様である。
【００６７】
「データ量（ｂｐｓ）の負荷状態」には、「ゲートウェイのリスト」に設定されている各ゲートウェイ（のＩＰアドレス）に対して、当該ゲートウェイにおけるデータ量（ｂｐｓ）の負荷状態が設定される。ここで、図６に示す例では、「データ量（ｂｐｓ）の負荷状態」に「０」が設定されている場合、該当のゲートウェイにおけるデータ量（ｂｐｓ）の負荷状態が「低負荷」であることを示している。一方で、「データ量（ｂｐｓ）の負荷状態」に「１」が設定されている場合、該当のゲートウェイにおけるデータ量（ｂｐｓ）の負荷状態が「高負荷」であることを示している。
【００６８】
「パケット数（ｐｐｓ）の負荷状態」には、「ゲートウェイのリスト」に設定されている各ゲートウェイ（のＩＰアドレス）に対して、当該ゲートウェイにおけるパケット数（ｐｐｓ）の負荷状態が設定される。ここで、図６に示す例では、「パケット数（ｐｐｓ）の負荷状態」に「０」が設定されている場合、該当のゲートウェイにおけるパケット数（ｐｐｓ）の負荷状態が「低負荷」であることを示している。一方で、「パケット数（ｐｐｓ）の負荷状態」に「１」が設定されている場合、該当のゲートウェイにおけるパケット数（ｐｐｓ）の負荷状態が「高負荷」であることを示している。
【００６９】
このように、実施例におけるＥＣＭＰ経路テーブル１０００には、宛先ネットワーク毎に、当該宛先ネットワークに対する１以上のゲートウェイと、これらの各ゲートウェイの出力ポート情報及び負荷状態とが含まれる経路情報が格納されている。
【００７０】
後述するように、実施例では、各ゲートウェイ（第２のパケット転送装置３０）の負荷状態が閾値を超えた場合（又は下回った場合）に、当該ゲートウェイに対応する負荷状態を変更すると共に、パケットを転送する際に、フロー特性に応じて低負荷状態のゲートウェイからパケットを送信することで、負荷分散が行われる。
【００７１】
＜分散システムの処理＞
以降では、実施例における負荷分散システム１の処理について、図７を参照しながら説明する。図７は、実施例における負荷分散システム１の処理の流れの一例を示す図である。
【００７２】
まず、負荷監視装置１０の流量監視部１０１は、負荷分散対象の第２のパケット転送装置３０−１及び３０−２の統計情報からトラヒック流量をｂｐｓとｐｐｓの観点で監視する（１）。そして、流量監視部１０１は、監視結果を負荷分散決定部１０２に通知する（２）。
【００７３】
次に、負荷分散決定部１０２は、流量監視部１０１の監視結果が予め定めるｂｐｓ閾値、又はｐｐｓ閾値のいずれかを上回ると、負荷分散の実施を決定する。逆に、閾値を下回ると、負荷分散決定部１０２は、負荷分散の解除を決定する。また、負荷分散決定部１０２は、決定内容を命令送信部１０３に通知する（３）。
【００７４】
次に、命令送信部１０３は、負荷分散決定部１０２の決定に基づき命令を第１のパケット転送装置２０に送信する（４）。命令は（i）閾値種別（ｂｐｓ閾値かｐｐｓ閾値か）、（ii）命令種別（実施か解除か）、及び（iii）対象装置の識別情報からなる。対照装置の識別情報は、例えば装置のＩＤ、ＩＰアドレス、ＭＡＣアドレス、ホスト名がある。
【００７５】
次に、第１のパケット転送装置２０の命令受信部２０１は、負荷監視装置１０からの命令を受信し、受信した命令の内容（（i）閾値種別、（ii）命令種別、（iii）対象装置の識別情報）を経路テーブル変更部２０２へ通知する（５）。
【００７６】
次に、経路テーブル変更部２０２は、命令に基づきＥＣＭＰ経路テーブル１０００の内容を変更する（６）。ＥＣＭＰ経路テーブル１０００は、経路情報をエントリとして保持する。エントリは、宛先ネットワーク、サブネットマスク、ゲートウェイのリスト、ゲートウェイに対応する出力ポート２０８、及びゲートウェイの負荷状態情報からなる。
【００７７】
次に、入力ポート２０３は、受信したパケットを入力バッファ２０９に格納する（７）。
【００７８】
次に、入力バッファ２０９は、パケットを一時的にバッファし、パケットの５−ｔｕｐｌｅをフロー識別子とし、フローテーブル２０００への登録状況をフロー情報取得部２０４に問い合わせる（８）。
【００７９】
次に、フロー情報取得部２０４は、フロー識別子からハッシュ値を生成してハッシュ値をキーにフローテーブル２０００を参照し、フロー識別子で識別されるフローの登録状況を確認する（９）。フローテーブル２０００に当該フローが登録されている場合、負荷分散システム１は、以降（１０）−（１８）の手続きを省略する。
【００８０】
フローテーブル２０００に当該フローが登録されていない場合、フロー情報取得部２０４は、フロー識別子及びハッシュ値をアプリ判定部２０５に通知し、フローテーブル２０００への登録の通知（１８）を待つ（１０）。
【００８１】
次に、アプリ判定部２０５は、フロー識別子をキーにアプリ情報キャッシュ３０００を参照し、フロー識別子で識別されるフローのキャッシュ状況を確認する（１１）。当該フローがキャッシュされている場合、負荷分散システム１は、以降（１２）−（１４）の手続きを省略する。
【００８２】
当該フローがキャッシュされていない場合、アプリ判定部２０５は、フロー識別子をアプリ判定装置５０のアプリ情報検索部５１に通知する（１２）。
【００８３】
次に、アプリ情報検索部５１は、フロー識別子をキーに、アプリ情報データベース４０を参照する（１３）。
【００８４】
そして、アプリ情報検索部５１は、アプリ情報データベース４０の参照結果をアプリ判定部２０５に通知する（１４）。このとき、一致するエントリがある場合は、アプリ情報検索部５１は、フロー識別子、アプリ種別及びフロー特性を通知する。一致するエントリがない場合は、アプリ情報検索部５１は、一致するエントリがないことを通知する。
【００８５】
次に、アプリ判定部２０５は、フロー識別子、アプリ種別、フロー特性及びハッシュ値を経路決定部２０６に通知する（１５）。また、アプリ判定部２０５は、フロー識別子、アプリ種別及びフロー特性を対応付けてアプリ情報キャッシュ３０００に登録する。
【００８６】
次に、経路決定部２０６は、アプリ判定部２０５の通知内容とＥＣＭＰ経路テーブル１０００とを照らし合わせ、出力ポート２０８を決定する（１６）。
【００８７】
そして、経路決定部２０６は、決定した出力ポート情報をフローテーブル２０００に登録する（１７）。
【００８８】
そして、経路決定部２０６は、フロー情報取得部２０４にフローテーブル２０００への登録完了を通知する（１８）。
【００８９】
次に、フロー情報取得部２０４は、入力バッファ２０９にフローテーブル２０００への登録状況を通知する（１９）。
【００９０】
次に、入力バッファ２０９は、フロー情報取得部２０４からフローテーブル２０００への登録状況の通知を受信した場合か、あるいは、あらかじめ定める一定時間を経過すると、パケットをルーティング部２０７に送信する（２０）。
【００９１】
次に、ルーティング部２０７は、パケットの５−ｔｕｐｌｅをキーにフローテーブル２０００を参照し、フローエントリがある場合はフローエントリにしたがって出力ポート２０８を決定する。フローエントリが未登録の場合、ルーティング部２０７は、ラウンドロビンで出力ポート２０８を決定し、フローテーブル２０００にフローエントリを追加する（２１）。
【００９２】
そして、ルーティング部２０７は、決定した出力ポート２０８にパケットを転送する（２２）。
【００９３】
＜ＥＣＭＰ経路テーブルの変更処理＞
以降では、実施例におけるＥＣＭＰ経路テーブル１０００の変更処理について、図８を参照しながら説明する。図８は、実施例におけるＥＣＭＰ経路テーブル１０００の変更処理の流れの一例を説明するための図である。
【００９４】
まず、負荷監視装置１０の流量監視部１０１は、第２のパケット転送装置３０の統計情報から、これらの第２のパケット転送装置３０のｂｐｓ結果値及びｐｐｓ結果値を取得する（ステップＳ１０１）。ここで、流量監視部１０１は、例えば、所定の時間毎に、各第２のパケット転送装置３０のｂｐｓ結果値及びｐｐｓ結果値を取得する。なお、統計情報は、例えば、ｎｅｔｓｔａｔ等により取得することができる。
【００９５】
次に、負荷監視装置１０の負荷分散決定部１０２は、負荷分散を実施又は解除するかを決定する（ステップＳ１０２）。すなわち、負荷分散決定部１０２は、ｂｐｓ結果値がｂｐｓ閾値を超えたか又は下回ったかを判定する。同様に、負荷分散決定部１０２は、ｐｐｓ結果値がｐｐｓ閾値を超えたか又は下回ったかを判定する。なお、ｂｂｓ閾値及びｐｐｓ閾値は、全ての第２のパケット転送装置３０で同一の値が決められても良いし、第２のパケット転送装置３０毎に値が決められても良い。又は、例えば、１以上の第２のパケット転送装置３０を所定の基準でグループ化した上で、グループ毎に値が決められても良い。
【００９６】
そして、負荷分散決定部１０２は、ｂｐｓ結果値がｂｐｓ閾値を超えたと判定した場合、負荷分散を実施すると決定する。一方で、負荷分散決定部１０２は、ｂｐｓ結果値がｂｐｓ閾値を下回ったと判定した場合、負荷分散を解除すると決定する。
【００９７】
同様に、負荷分散決定部１０２は、ｐｐｓ結果値がｐｐｓ閾値を超えたと判定した場合、負荷分散を実施すると決定する。一方で、負荷分散決定部１０２は、ｐｐｓ結果値がｐｐｓ閾値を下回ったと判定した場合、負荷分散を解除すると決定する。
【００９８】
ステップＳ１０２において、負荷分散の実施及び負荷分散の解除のいずれも決定されなかった場合、負荷監視装置１０は、上記のステップＳ１０１に戻る。
【００９９】
一方で、ステップＳ１０２において、負荷分散の実施又は負荷分散の解除の少なくとも一方が決定された場合、負荷監視装置１０の命令送信部１０３は、所定の命令を第１のパケット転送装置２０に送信する（ステップＳ１０３）。
【０１００】
第１のパケット転送装置２０の命令受信部２０１は、負荷監視装置１０からの命令を受信する（ステップＳ１０４）。
【０１０１】
次に、第１のパケット転送装置２０の経路テーブル変更部２０２は、命令受信部２０１が受信した命令に応じて、ＥＣＭＰ経路テーブル１０００を変更する（ステップＳ１０５）。
【０１０２】
具体的には、例えば、「閾値種別」に「ｂｐｓ閾値」、「命令種別」に「負荷分散の実施」、「対象装置の識別情報」に「１９２．１６８．１．０」がそれぞれ設定されている通知を受信した場合、経路テーブル変更部２０２は、ＥＣＭＰ経路テーブル１０００の各エントリについて、ＩＰアドレスが「１９２．１６８．１．０」であるゲートウェイに対する「データ量（ｂｐｓ）の負荷状態」を「１」に変更する。
【０１０３】
同様に、例えば、「閾値種別」に「ｂｐｓ閾値」、「命令種別」に「負荷分散の解除」、「対象装置の識別情報」に「１９２．１６８．１．２」がそれぞれ設定されている通知を受信した場合、経路テーブル変更部２０２は、ＥＣＭＰ経路テーブル１０００の各エントリについて、ＩＰアドレスが「１９２．１６８．１．２」であるゲートウェイに対する「データ量（ｂｐｓ）の負荷状態」を「０」に変更する。
【０１０４】
同様に、例えば、「閾値種別」に「ｐｐｓ閾値」、「命令種別」に「負荷分散の実施」、「対象装置の識別情報」に「１９２．１６８．１．１」がそれぞれ設定されている通知を受信した場合、経路テーブル変更部２０２は、ＥＣＭＰ経路テーブル１０００の各エントリについて、ＩＰアドレスが「１９２．１６８．１．１」であるゲートウェイに対する「パケット数（ｐｐｓ）の負荷状態」を「１」に変更する。
【０１０５】
同様に、例えば、「閾値種別」に「ｐｐｓ閾値」、「命令種別」に「負荷分散の解除」、「対象装置の識別情報」に「１９２．１６８．１．０」がそれぞれ設定されている通知を受信した場合、経路テーブル変更部２０２は、ＥＣＭＰ経路テーブル１０００の各エントリについて、ＩＰアドレスが「１９２．１６８．１．０」であるゲートウェイに対する「パケット数（ｐｐｓ）の負荷状態」を「０」に変更する。
【０１０６】
以上のように、実施例における負荷分散システム１は、負荷分散対象である第２のパケット転送装置３０のｂｐｓ結果値又はｐｐｓ結果値が閾値を超えた場合又は下回った場合、ＥＣＭＰ経路テーブル１０００に格納されている各エントリにおいて、これらの第２のパケット転送装置３０の負荷状態を変更する。これにより、ＥＣＭＰ経路テーブル１０００に格納されている各エントリによって、各第２のパケット転送装置３０の負荷状態（データ量（ｂｐｓ）の負荷状態及びパケット数（ｐｐｓ）の負荷状態）が管理される。
【０１０７】
＜パケット転送処理＞
以降では、実施例におけるパケット転送処理について、図９を参照しながら説明する。図９は、実施例におけるパケット転送処理の流れの一例を説明するための図である。
【０１０８】
まず、第１のパケット転送装置２０の入力ポート２０３は、ネットワークＮ１側からのパケットを受信する（ステップＳ２０１）。
【０１０９】
次に、入力ポート２０３は、上記のステップＳ２０１で受信したパケットを入力バッファ２０９に格納する（ステップＳ２０２）。
【０１１０】
次に、第１のパケット転送装置２０のフロー情報取得部２０４は、入力バッファ２０９に格納されているパケットのフロー識別子（例えば、５−ｔｕｐｌｅ）からハッシュ値を生成する（ステップＳ２０３）。なお、ハッシュ値の生成に用いられるハッシュ関数は任意のものを用いることができる。
【０１１１】
次に、フロー情報取得部２０４は、上記のステップＳ２０３で生成したハッシュ値と一致するハッシュ値が含まれるエントリ（フロー転送情報）がフローテーブル２０００に格納されているか否かを判定する（ステップＳ２０４）。
【０１１２】
ステップＳ２０４において、当該エントリがフローテーブル２０００に格納されていると判定された場合、第１のパケット転送装置２０は、後述するステップＳ２１２の処理に進む。
【０１１３】
一方で、ステップＳ２０４において、当該エントリがフローテーブル２０００に格納されていないと判定された場合、フロー情報取得部２０４は、フロー識別子とハッシュ値を第１のパケット転送装置２０のアプリ判定部２０５に通知し、アプリ判定部２０５は、フロー識別子で識別されるフローのアプリ種別及びフロー特性がアプリ情報キャッシュ３０００に登録されているか否かを判定する（ステップＳ２０５）。
【０１１４】
ステップＳ２０５において、フロー識別子で識別されるフローのアプリ種別及びフロー特性がアプリ情報キャッシュ３０００に登録されていると判定された場合、第１のパケット転送装置２０は、後述するステップＳ２０９の処理に進む。
【０１１５】
一方で、ステップＳ２０５において、フロー識別子で識別されるフローのアプリ種別及びフロー特性がアプリ情報キャッシュ３０００に登録されていないと判定された場合、アプリ判定部２０５は、アプリ判定装置５０のアプリ情報検索部５１にアプリ種別及びフロー特性の特定を依頼する（ステップＳ２０６）。
【０１１６】
次に、アプリ情報検索部５１は、フロー識別子をキーとしてアプリ情報データベース４０を検索し、検索されたアプリ種別とフロー特性をフロー識別子と共にアプリ判定部２０５に送信する（ステップＳ２０７）。
【０１１７】
次に、アプリ判定部２０５は、フロー識別子、アプリ種別及びフロー特性を対応付けてアプリ情報キャッシュ３０００に登録する（ステップＳ２０８）。
【０１１８】
そして、アプリ判定部２０５は、フロー識別子、アプリ種別、フロー特性及びハッシュ値を第１のパケット転送装置２０の経路決定部２０６に通知する。この結果、経路決定部２０６は、フロー識別子で識別されるフローのフロー特性が「高ｂｐｓフロー」又は「高ｐｐｓフロー」のいずれであるかを特定する（ステップＳ２０９）。
【０１１９】
次に、経路決定部２０６は、ＥＣＭＰ経路テーブル１０００を参照して、上記のステップＳ２０９で特定したフロー特性から出力ポート２０８を決定する（ステップＳ２１０）。経路決定部２０６は、例えば、次のＳ１〜Ｓ３の手順により出力ポート２０８を決定する。
【０１２０】
Ｓ１）まず、経路決定部２０６は、アプリ判定部２０５から通知されたフロー識別子に含まれる宛先ＩＰアドレスのネットワークアドレスに対応するエントリをＥＣＭＰ経路テーブル１０００から検索する。このとき、経路決定部２０６は、例えば、ロンゲストマッチでエントリを検索する。当該ネットワークアドレスに対応するエントリが検索された場合、経路決定部２０６は、このエントリを参照する。一方で、当該ネットワークアドレスに対応するエントリが検索されなかった場合、経路決定部２０６は、宛先ネットワークに「ｄｅｆａｕｌｔ」が設定されているエントリを参照する。
【０１２１】
Ｓ２）次に、経路決定部２０６は、フロー特性に応じて、参照しているエントリに含まれる「ゲートウェイのリスト」の中から低負荷状態のゲートウェイを検索する。
【０１２２】
例えば、上記のステップＳ２０９で特定したフロー特性が「高ｂｐｓフロー」である場合、経路決定部２０６は、当該エントリに含まれる「ゲートウェイのリスト」のうち、「データ量（ｂｐｓ）の負荷状態」に「０」が設定されているゲートウェイを上から順番に検索する。
【０１２３】
一方で、例えば、上記のステップＳ２０９で特定したフロー特性が「高ｐｐｓフロー」である場合、経路決定部２０６は、当該エントリに含まれる「ゲートウェイのリスト」のうち、「パケット数（ｐｐｓ）の負荷状態」に「０」が設定されているゲートウェイを上から順番に検索する。
【０１２４】
Ｓ３）そして、経路決定部２０６は、上記のＳ２で検索されたゲートウェイに対応する出力ポート情報が示す出力ポート２０８を、当該パケットの出力ポート２０８に決定する。
【０１２５】
なお、上記のＳ２でゲートウェイが検索されなかった場合、経路決定部２０６は、高負荷状態のゲートウェイに対応する出力ポート情報が示す出力ポート２０８を、当該パケットの出力ポート２０８に決定する。例えば、上記のステップＳ２０９で特定したフロー特性が「高ｂｐｓフロー」で、「データ量（ｂｐｓ）の負荷状態」に「０」が設定されているゲートウェイが存在しない場合、経路決定部２０６は、「データ量（ｂｐｓ）の負荷状態」に「１」が設定されているゲートウェイに対応する出力ポート情報が示す出力ポート２０８を、当該パケットの出力ポート２０８に決定する。同様に、例えば、上記のステップＳ２０９で特定したフロー特性が「高ｐｐｓフロー」で、「パケット数（ｐｐｓ）の負荷状態」に「０」が設定されているゲートウェイが存在しない場合、経路決定部２０６は、「パケット数（ｐｐｓ）の負荷状態」に「１」が設定されているゲートウェイに対応する出力ポート情報が示す出力ポート２０８を、当該パケットの出力ポート２０８に決定する。
【０１２６】
ここで、同一の宛先ネットワークに対する出力ポート２０８をラウンドロビンで変更したい場合は、経路決定部２０６は、決定した出力ポート２０８に対応するゲートウェイを、「ゲートウェイのリスト」の最後尾に移動させても良い。例えば、図６に示すＥＣＭＰ経路テーブル１０００において、宛先ネットワーク「ｄｅｆａｕｌｔ」のゲートウェイ「１９２．１６８．１．０」の出力ポート情報「ｅｔｈ０」が出力ポート２０８に決定された場合、このゲートウェイ「１９２．１６８．１．０」をリストの最後尾（すなわち、ゲートウェイ「１９２．１６８．１．２」の後ろ）に移動させても良い。これにより、同一の宛先ネットワークに対する出力ポート２０８をラウンドロビンで変更することで、更なる負荷分散が期待できる。
【０１２７】
次に、経路決定部２０６は、アプリ判定部２０５から通知されたハッシュ値と、上記のステップＳ２１０で決定した出力ポート２０８を示す情報（出力ポート情報）とを対応付けたフロー転送情報をフローテーブル２０００に格納する（ステップＳ２１１）。
【０１２８】
次に、第１のパケット転送装置２０のルーティング部２０７は、該当のエントリ（上記のステップＳ２０４でハッシュ値が一致すると判定されたエントリ又は上記のステップＳ２１１で格納されたエントリ）から出力ポート情報を取得する（ステップＳ２１２）。そして、ルーティング部２０７は、取得した出力ポート情報が示す出力ポート２０８に当該パケットを送信する。
【０１２９】
次に、第１のパケット転送装置２０の出力ポート２０８は、ルーティング部２０７から受け取ったパケットを送信する（ステップＳ２１３）。
【０１３０】
以上のように、アプリ判定部２０５は、フロー識別子で識別されるフローのフロー特性をアプリ情報キャッシュ３０００を参照して特定する。このため、アプリ判定部２０５は、フロー特性を効率良く特定することができる。また、アプリ判定部２０５は、アプリ情報キャッシュ３０００にフロー識別子で識別されるフローの情報が登録されていない場合には、アプリ情報データベース４０に基づいてフロー特性を特定する。このため、アプリ判定部２０５は、フロー特性を正確に特定することができる。
【０１３１】
＜アプリ情報キャッシュへの登録処理＞
以降では、実施例におけるアプリ情報キャッシュ３０００への登録処理について、図１０を参照しながら説明する。図１０は、実施例におけるアプリ情報キャッシュ３０００への登録処理の流れの一例を説明するための図である。
【０１３２】
まず、第１のパケット転送装置２０のアプリ判定部２０５は、アプリ情報キャッシュ３０００にフローの情報を登録するエントリを特定するエントリ特定処理を行う（ステップＳ３０１）。そして、アプリ判定部２０５は、特定したエントリにフローの情報及びタイムスタンプを格納する（ステップＳ３０２）。
【０１３３】
そして、アプリ判定部２０５は、登録が手動登録であるか否かを判定する（ステップＳ３０３）。ここで、登録が手動登録である場合とは、ユーザやオペレータによりアプリ情報キャッシュ３０００への登録が行われる場合である。
【０１３４】
ステップＳ３０３において、登録が手動登録であると判定された場合、アプリ判定部２０５は、登録したエントリのエリアを手動登録エリアに置換する（ステップＳ３０４）。
【０１３５】
一方で、ステップＳ３０３において、登録が手動登録でないと判定された場合、アプリ判定部２０５は、登録したエントリが優先エントリであるか否かを判定する（ステップＳ３０５）。ここで、優先エントリとは、自動登録エリアに登録されるエントリである。
【０１３６】
ステップＳ３０５において、登録したエントリが優先エントリであると判定された場合、アプリ判定部２０５は、登録したエントリのエリアを自動登録エリアに置換する（ステップＳ３０６）。
【０１３７】
なお、エントリ特定処理において特定されたエントリのエリアはＬＲＵエリアであるので、ステップＳ３０５において、登録したエントリが優先エントリでないと判定された場合には、登録したエントリのエリアの置換は不要である。
【０１３８】
図１１は、エントリ特定処理の流れの一例を説明するための図である。図１１に示すように、アプリ判定部２０５は、アプリ情報キャッシュ３０００に空エントリがあるか否かを判定する（ステップＳ４０１）。
【０１３９】
ステップＳ４０１において、空エントリがあると判定された場合、アプリ判定部２０５は、空エントリの識別情報を返却する（ステップＳ４０２）。
【０１４０】
一方で、ステップＳ４０１において、空エントリがないと判定された場合、アプリ判定部２０５は、ＬＲＵエリアへの登録であるか否かを判定する（ステップＳ４０３）。
【０１４１】
ステップＳ４０３において、ＬＲＵエリアへの登録であると判定された場合には、アプリ判定部２０５は、ＬＲＵエリアからＬＲＵに基づいて、置換されるエントリを特定する（ステップＳ４０４）。
【０１４２】
一方で、ステップＳ４０３において、ＬＲＵエリアへの登録でないと判定された場合には、アプリ判定部２０５は、ＬＲＵエリアと自動登録エリアからＬＲＵに基づいて、置換されるエントリを特定する（ステップＳ４０５）。ただし、アプリ判定部２０５は、自動登録エリアのエントリについては、削除するエントリの特定に際して、経過時間に任意の重み係数ωを掛けた値を用いる。また、削除されるエントリが自動登録エリアのエントリである場合には、削除されるエントリのエリアはＬＲＵエリアに置換される。
【０１４３】
そして、アプリ判定部２０５は、特定したエントリの識別情報を返却する（ステップＳ４０６）。
【０１４４】
以上のように、実施例における負荷分散システム１は、第１のパケット転送装置２０から第２のパケット転送装置３０にパケットを転送する際に、当該パケットによるフローのフロー特性に応じて、低負荷状態の第２のパケット転送装置３０に当該パケットを転送する。これにより、実施例における負荷分散システム１では、第２のパケット転送装置３０の負荷分散を実現することができる。このため、例えば、或る第２のパケット転送装置３０に高ｂｐｓフローのパケットが集中する事態や高ｐｐｓフローのパケットが集中する事態を防止することができ、第２のパケット転送装置３０の転送容量を最大限に活かすことができるようになる。
【０１４５】
また、実施例における負荷分散システム１は、アプリ情報データベース４０にフロー識別子に対応付けてアプリケーションのフロー特性を含むアプリ情報を記憶する。そして、アプリ判定装置５０が、アプリ情報データベース４０をフロー識別子をキーとして検索してアプリ情報を取得し、第１のパケット転送装置２０に送信する。このため、第１のパケット転送装置２０は、フロー特性を正確に特定することができる。
【０１４６】
また、実施例における負荷分散システム１は、アプリ情報データベース４０の一部をアプリ情報キャッシュ３０００にキャッシュする。このため、第１のパケット転送装置２０は、フロー特性を効率良く特定することができる。
【０１４７】
また、実施例における負荷分散システム１は、アプリ情報キャッシュ３０００をＬＲＵエリアと、ＬＲＵエリアよりエントリが置換されにくい自動登録エリアと、エントリが置換されない手動登録エリアに分ける。そして、アプリ判定部２０５は、アプリ情報に含まれるアプリ種別に基づいてＬＲＵエリア又は自動登録エリアにキャッシュ情報を登録する。このため、第１のパケット転送装置２０は、アプリケーションの種別に応じてアプリ情報キャッシュ３０００からエントリを削除されにくくすることができ、特定のアプリケーションについてフロー特性をより効率良く特定することができる。
【０１４８】
また、実施例における負荷分散システム１では、アプリ判定部２０５は、自動登録エリアにエントリを登録する場合でＬＲＵに基づいてエントリを置換する場合に、自動登録エリア又はＬＲＵエリアから、置換されるエントリを特定する。このとき、アプリ判定部２０５は、自動登録エリアのエントリについては経過時間にωを掛けた値を用いて、置換されるエントリを特定する。したがって、アプリ判定部２０５は、自動登録エリアのエントリをＬＲＵエリアのエントリより削除されにくくすることができる。
【０１４９】
＜ハードウェア構成＞
最後に、本発明の実施の形態における負荷監視装置１０、第１のパケット転送装置２０、第２のパケット転送装置３０及びアプリ判定装置５０のハードウェア構成について説明する。本発明の実施の形態における負荷監視装置１０、第１のパケット転送装置２０、第２のパケット転送装置３０及びアプリ判定装置５０は、例えば図１２に示すコンピュータ５００を１台以上用いることにより実現される。図１２は、コンピュータ５００のハードウェア構成の一例を示す図である。
【０１５０】
図１２に示すコンピュータ５００は、ＣＰＵ（Central  Processing  Unit）５０１と、ＲＡＭ５０２と、ＲＯＭ（Read  Only  Memory）５０３と、外部Ｉ／Ｆ５０４と、通信Ｉ／Ｆ５０５と、補助記憶装置５０６とを有する。これら各ハードウェアは、それぞれがバスＢを介して通信可能に接続されている。
【０１５１】
ＣＰＵ５０１は、ＲＯＭ５０３や補助記憶装置５０６等からプログラムやデータをＲＡＭ５０２上に読み出して処理を実行する演算装置である。
【０１５２】
ＲＡＭ５０２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＲＯＭ５０３は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ５０３には、例えば、ＯＳ設定やネットワーク設定等が格納されている。
【０１５３】
外部Ｉ／Ｆ５０４は、外部装置とのインタフェースである。外部装置には、記録媒体５０４ａ等がある。コンピュータ５００は、外部Ｉ／Ｆ５０４を介して、記録媒体５０４ａ等の読み取りや書き込み等を行うことができる。
【０１５４】
記録媒体５０４ａには、例えば、フレキシブルディスク、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disk）、ＳＤメモリカード（Secure  Digital  memory  card）、ＵＳＢ（Universal  Serial  Bus）メモリカード等がある。
【０１５５】
通信Ｉ／Ｆ５０５は、他の装置と通信を行うためのインタフェースである。なお、第１のパケット転送装置２０及び第２のパケット転送装置３０は、複数の通信Ｉ／Ｆ５０５を有する。
【０１５６】
補助記憶装置５０６は、例えばＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置５０６に格納されているプログラムやデータには、例えば、ＯＳ、当該ＯＳ上において各種機能を実現するアプリケーションプログラム等がある。
【０１５７】
本発明の実施の形態における負荷監視装置１０、第１のパケット転送装置２０、第２のパケット転送装置３０及びアプリ判定装置５０は、図１２に示すコンピュータ５００を１台以上用いることにより、上述した各種処理を実行することができる。例えば、負荷監視装置１０が有する各機能部は、補助記憶装置５０６に格納された１以上のプログラムがＣＰＵ５０１等に実行させる処理により実現される。また、例えば、第１のパケット転送装置２０が有する各機能部は、補助記憶装置５０６に格納された１以上のプログラムがＣＰＵ５０１等に実行させる処理や通信Ｉ／Ｆ５０５等により実現される。
【０１５８】
なお、負荷監視装置１０は、例えばディスプレイ等の表示装置と、例えばキーボードやマウス等の入力装置とのうちの少なくとも一方を有していても良い。
【０１５９】
本発明は、具体的に開示された上記の実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば、上記の実施の形態では、負荷分散を行うパケット転送装置を第１のパケット転送装置２０、負荷分散の対象となるパケット転送装置を第２のパケット転送装置３０としたが、これは、或るパケット転送装置が常に第１のパケット転送装置２０又は第２のパケット転送装置３０のいずれかとして機能することを意味するものではない。例えば、同一のパケット転送装置が第１のパケット転送装置２０として機能し、かつ、第２のパケット転送装置３０としても機能しても良い。
【符号の説明】
【０１６０】
１          負荷分散システム
１０        負荷監視装置
２０        第１のパケット転送装置
３０        第２のパケット転送装置
４０        アプリ情報データベース
５０        アプリ判定装置
５１        アプリ情報検索部
１０１      流量監視部
１０２      負荷分散決定部
１０３      命令送信部
２０１      命令受信部
２０２      経路テーブル変更部
２０３      入力ポート
２０４      フロー情報取得部
２０５      アプリ判定部
２０６      経路決定部
２０７      ルーティング部
２０８      出力ポート
２０９      入力バッファ
Ｎ１、Ｎ２  ネットワーク
【図１】
2020028048.tif 000003
【図２】
2020028048.tif 000004
【図３】
2020028048.tif 000005
【図４】
2020028048.tif 000006
【図５】
2020028048.tif 000007
【図６】
2020028048.tif 000008
【図７】
2020028048.tif 000009
【図８】
2020028048.tif 000010
【図９】
2020028048.tif 000011
【図１０】
2020028048.tif 000012
【図１１】
2020028048.tif 000013
【図１２】
2020028048.tif 000014