(57)【要約】【課題】通信処理を効率化する。【解決手段】通信装置は、通信部、計算部、決定部を備える。通信部は、セッションの接続要求を受信する。計算部は、通信中のセッションの処理にかかる処理負荷を計算する。決定部は、処理負荷が閾値を超えたときに接続要求により接続が要求された要求セッションと通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られる第１のスループットを求める。決定部は、複数のセッションの一部に第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて複数のセッションを処理したときに得られる第２のスループットも求める。決定部は、第１のスループットと第２のスループットを比較した結果を用いて、複数のセッションの各々の処理に使用するプロトコルを決定する。通信部は、決定部が決定したプロトコルを用いて複数のセッションを処理する。【選択図】図１
2016208315.tif 000002
【特許請求の範囲】
【請求項１】
セッションの接続要求を受信する通信部と、
通信中のセッションの処理にかかる処理負荷を計算する計算部と、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定する決定部
を備え、
前記通信部は、前記決定部が決定したプロトコルを用いて前記複数のセッションを処理する
ことを特徴とする通信装置。
【請求項２】
前記通信部が前記接続要求を受信すると、前記決定部は、
前記接続要求により接続が要求された要求セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットである第１の予測値を求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記要求セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記決定部は、
前記要求セッションの処理に、前記第１のプロトコルよりも処理負荷が小さく、前記第２のプロトコルよりも処理負荷の大きい第３のプロトコルを用い、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットを第３の予測値として求め、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも大きい場合、前記要求セッションの処理に前記第２のプロトコルを使用し、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも小さく、前記第３の予測値が前記第２の予測値よりも大きい場合、前記要求セッションの処理に前記第３のプロトコルを使用する
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記決定部は、
前記複数のセッションの各々について、前記第１のプロトコルで処理したときと前記第２のプロトコルで処理したときの当該セッションのスループットの差分を計算し、
前記差分が相対的に小さいセッションである対象セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記対象セッション以外の処理に前記第１のプロトコルを使用する場合のスループットを第１の予測値として求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記対象セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする請求項１に記載の通信装置。
【請求項５】
セッションの接続要求を受信し、
通信中のセッションの処理にかかる処理負荷を計算し、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定し、
決定したプロトコルを用いて前記複数のセッションを処理する
処理を通信装置が行うことを特徴とする通信処理方法。
【請求項６】
セッションの接続要求を受信し、
通信中のセッションの処理にかかる処理負荷を計算し、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定し、
決定したプロトコルで前記複数のセッションを処理する
処理を通信装置に実行させることを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置を含むネットワークでの通信処理に関する。
【背景技術】
【０００２】
複数の装置の間での通信の際に、ＴＣＰ（Transmission Control Protocol）が使用されることが多いが、ＴＣＰを用いた通信では、一度、パケットの廃棄が発生すると、通信速度が大きく低下し、スループットが出にくくなる。このため、海外拠点間での通信のように往復遅延時間（Round Trip Time、ＲＴＴ）が長い場合や、無線網のようにパケットロス率が高いネットワークを経由する通信では、ＴＣＰを用いると、効率が悪くなりやすい。そこで、ＷＡＮ（Wide Area Network）高速化装置を用いてデータ転送が高速化されるケースが増えている。ＷＡＮ高速化装置は、ネットワークのクライアント側とサーバ側の両端に設置される。クライアント装置からＴＣＰパケットを受信したＷＡＮ高速化装置は、パケットで使用するプロトコルを高速通信プロトコルに変換した後、サーバ側のＷＡＮ高速化装置に転送する。サーバ側のＷＡＮ高速化装置は、クライアント側のＷＡＮ高速化装置から受信したパケットをＴＣＰパケットに変換したうえで、サーバに転送する。
【０００３】
ここで、高速通信プロトコルを用いた通信では、ＴＣＰから高速通信プロトコルへの変換が行われることや、高速通信プロトコルによる通信処理などにより、ＴＣＰによる通信よりも処理負荷が高いことが多い。そこで、ＷＡＮ高速化装置を販売するベンダは、ＷＡＮ高速化装置に含まれているプロセッサの性能に合わせて、そのＷＡＮ高速化装置で高速通信プロトコルを用いた処理が可能なフローの上限数を設定している。ＷＡＮ高速化装置は、その装置に設定された上限数に達するまでは、高速通信プロトコルを用いて処理対象のフローを送信するが、上限数に達してから通信が開始したフローはＴＣＰで処理する。
【０００４】
関連する技術として、仮想計算機でＷＡＮ高速化技術を提供する環境で、通信経路を制御する方法が提案されている。この方法では、仮想計算機の通信サービスのアプリケーションに障害が発生すると、障害が発生したアプリケーションに合わせて、仮想計算機の通信経路と通信方法が変更される（例えば特許文献１）。送達確認パケットに基づいて測定される通信状況に基づいて、送信対象のストリームデータの符号化速度の制御と、誤り耐性制御が行われる送信装置も提案されている（例えば特許文献２）。稼働中のネットワークでのコマンドフレームとそのレスポンスの受信時刻の差から生成された応答特性情報を、実稼動状態の伝送路の負荷データとして用いる性能予測方法も提案されている（例えば特許文献３）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３８４０７号公報
【特許文献２】特開２００６―１２９２７７号公報
【特許文献３】特開平７−５８７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＷＡＮ高速化装置が高速通信プロトコルで処理可能なフローの上限数が設定される場合、各フローで転送されるデータの種類や転送経路の状態によらずに、高速通信プロトコルで転送されるフローの最大数は固定化されている。高速通信プロトコルで処理可能なフローの上限値は、平均的なフローのスループットやＷＡＮ高速化装置での処理負荷の平均値の予測に基づいて決定されている。しかし、フローの転送の際のスループットは転送経路の状態によって変動する可能性がある上、ＷＡＮ高速化装置での処理負荷はフローによっても異なる可能性がある。このため、フローの上限値を画一的に決定しても、最適なプロトコルの割り当てを行うことは困難であり、通信処理が非効率的になることが多い。
【０００７】
本発明は、通信を効率化することを目的とする。
【課題を解決するための手段】
【０００８】
ある態様にかかる通信装置は、通信部、計算部、決定部を備える。通信部は、セッションの接続要求を受信する。計算部は、通信中のセッションの処理にかかる処理負荷を計算する。決定部は、前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られる第１のスループットを求める。決定部は、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られる第２のスループットも求める。決定部は、第１のスループットと第２のスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定する。前記通信部は、前記決定部が決定したプロトコルを用いて前記複数のセッションを処理する。
【発明の効果】
【０００９】
通信が効率化される。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる通信処理方法の例を説明する図である。
【図２】通信装置の構成の例を説明する図である。
【図３】通信装置のハードウェア構成の例を説明する図である。
【図４】転送先テーブルと経路状況テーブルの例を示す図である。
【図５】パケットのフォーマットの例を示す図である。
【図６】パケットのフォーマットの例を示す図である。
【図７】セッション管理テーブルの例を示す図である。
【図８】新たなフローが発生したときの処理の例を説明するシーケンス図である。
【図９】スループットの予測に使用するテーブルの例を示す図である。
【図１０】通信装置の処理の例を説明するフローチャートである。
【図１１】プロトコルによるスループットの差がセッションによって異なる例を説明する図である。
【図１２】第２の実施形態で行われる処理の例を説明するシーケンス図である。
【図１３】スループットの予測値の例を説明する図である。
【図１４】第２の実施形態で行われる処理の例を説明するフローチャートである。
【図１５】第３の実施形態で行われる処理の例を説明するシーケンス図である。
【図１６】スループットの予測方法の例を説明する図である。
【図１７】第４の実施形態で行われる処理の例を説明するシーケンス図である。
【図１８】スループットの予測値の例を説明する図である。
【発明を実施するための形態】
【００１１】
図１は、実施形態にかかる通信処理方法の例を説明する図である。ネットワークＮ１は、通信処理方法が適用されるネットワークの例を示す。ネットワークＮ１には、複数の端末５（５ａ〜５ｄ）、通信装置１０ａ、通信装置１０ｂが含まれており、複数の端末５は、通信装置１０ａと通信装置１０ｂを介して互いに通信する。なお、ネットワークＮ１では、図を見やすくするために端末５を端末５ａ〜５ｄの４台だけ示しているが、ネットワーク中の端末５の数は任意である。同様に、ネットワークには、２以上の通信装置１０が含まれ得るが、図１では、通信装置１０ａと通信装置１０ｂの２台がネットワークＮ１に含まれている場合を例として説明する。通信装置１０ａと通信装置１０ｂのいずれも、ＴＣＰと高速通信プロトコルの両方を用いて通信することができるものとする。また、通信装置１０ａと通信装置１０ｂは、いずれも、通信装置１０ａと通信装置１０ｂの間の回線を用いて通信が行われているセッションの数と、各セッションで得られるスループットの合計値をモニタしている。
【００１２】
図１のグラフＧ１は、通信装置１０ｂで処理しているセッションのスループットの合計値と通信中のセッション数の関係の例である。グラフＧ１中のＡは、通信装置１０ｂが全てのセッションを高速通信プロトコルで処理した場合に得られるスループットの上限値である。例えば、通信装置１０ａと通信装置１０ｂの間でｎ本のセッションが確立されているとする。また、通信中のセッションは、いずれも高速通信プロトコルで処理されているとする。この場合、合計スループットは、グラフＧ１に示すようにＢとなり、高速通信プロトコルを用いたときに得られるスループットの上限値Ａよりも低い値である。
【００１３】
次に、通信装置１０ｂでの処理負荷が所定の閾値を越えた後に、端末５ａが通信装置１０ａと通信装置１０ｂを介して端末５ｃと通信を開始したとする。ここで所定の閾値は、現在処理中のフローに加えて新たなフローを高速通信プロトコルで処理する場合に、現在処理中のフローと新たなフローのスループットの合計値が高速通信プロトコルを用いたスループットの上限値となることが見込まれる値である。
【００１４】
端末５ａは、端末５ｃとのセッションを確立するために、セッションの接続要求を端末５ｃに向けて送信する。通信装置１０ａは、セッションの接続要求を受信する。端末５ａと端末５ｃの通信は通信装置１０ｂを経由して行われるため、通信装置１０ａは、通信装置１０ｂに対して、端末５ａと端末５ｃの間のセッションの確立要求を送信する。
【００１５】
通信装置１０ｂは、セッションの確立要求を受信すると、通信装置１０ｂが高速通信プロトコルを用いるときに得られるスループットの上限値を求める。ここで、通信装置１０ｂの処理負荷は閾値を超えているため、上限値は、通信装置１０ｂが現在処理中のｎ本のセッションの他に端末５ａと端末５ｃの間の通信セッションを高速通信プロトコルで処理した場合のスループットの予測値（第２の予測値）でもある。従って、図１のグラフＧ１のＤに示すように、第２の予測値は、高速通信プロトコルを用いたときのスループットの上限値Ａと一致する。
【００１６】
通信装置１０ｂは、一部のセッションをＴＣＰで処理し、残りのセッションを高速通信プロトコルで処理した場合に得られるスループットの予測値（第１の予測値）も求める。ここで、通信装置１０ａと通信装置１０ｂとの間の通信経路の状況によって、新たに確立するセッションをＴＣＰで処理したときに得られるスループットは変動する。例えば、端末５ａと端末５ｃの間の往復遅延時間（ＲＴＴ、Round Trip Time）が長く、パケットロス率が高い場合、ＴＣＰを使用した際のスループットは低くなる。このため、第１の予測値はグラフＧ１中のＣに示すように、高速通信プロトコルで得られるスループットの上限（Ａ）よりも低くなる。一方、通信装置１０ａと通信装置１０ｂの間のＲＴＴが短く、パケットロス率が低い場合、ＴＣＰを使用した際のスループットは高くなる。この場合、第１の予測値は、グラフＧ１中のＥに示すように、端末５ａと端末５ｃの間の通信に使用されるセッションを高速通信プロトコルで処理する場合（Ｄ）よりも大きくなる。
【００１７】
通信装置１０ｂは、第１の予測値と第２の予測値の比較結果を用いて、新たに確立するセッションの処理に使用するプロトコルを決定する。例えば、グラフＧ１のＣに示すように、新たに確立するセッションをＴＣＰで処理すると、全てのセッションを高速通信プロトコルで処理する場合よりも低い合計スループットしか得られないとする。この場合、通信装置１０ｂは、新たに確立するセッションを高速通信プロトコルで処理することを決定する。
【００１８】
一方、グラフＧ１のＥに示すように、新たに確立するセッションをＴＣＰで処理した方が、全てのセッションを高速通信プロトコルで処理する場合よりも高い合計スループットが得られるとする。この場合、通信装置１０ｂは、新たに確立するセッションをＴＣＰで処理することを決定する。
【００１９】
通信装置１０ｂは、決定したプロトコルを通信装置１０ａに通知する。すると、通信装置１０ａは、端末５ａと端末５ｃの通信に使用されるセッションを、通信装置１０ｂから通知されたプロトコルを用いて処理する。
【００２０】
このように、実施形態にかかる通信処理方法では、通信装置１０にかかる処理負荷が所定値を超えると、通信中の各セッションと新たなセッションでの合計スループットが最大になるように、新たなセッションの処理に使用するプロトコルを決定する。このため、通信装置１０間の通信経路の状況なども考慮して、高速通信プロトコルで処理するセッション数を最適化できる。この結果、通信が効率化される。
【００２１】
また、ベンダにとっては、コンピュータなどの任意の情報処理装置を実施形態にかかる通信装置１０として動作させるプログラムを販売しても、ユーザの使用環境に合わせた最適なサービスの提供を保証することができるという利点もある。つまり、ユーザからプログラムをインストールされた装置自身が、その装置の処理負荷が所定値を超えると、処理対象のセッションについて得られるスループットの予測値を計算し、予測値を用いてプロトコルを決定するため、最適の環境での処理が保証される。
【００２２】
＜装置構成の例＞
以下の説明では、トランスポート層のプロトコルとして高速通信プロトコルとＴＣＰが使用される場合を例として説明するが、高速通信プロトコル以外に使用されるトランスポート層のプロトコルはＴＣＰ以外の任意のプロトコルであっても良い。
【００２３】
図２は、通信装置１０の構成の例を説明する図である。通信装置１０は、通信部１１、制御部２０、記憶部３０を備える。制御部２０は、ＴＣＰ処理部２１、高速通信プロトコル処理部２２、プロトコル変換部２３、宛先特定部２４、セッション監視部２５、計測部２６、負荷計算部２７、プロトコル決定部２８を有する。記憶部３０は、経路状況テーブル３１、セッション管理テーブル３２、転送先テーブル３３、スループットテーブル３４を記憶する。スループットテーブル３４は、パケットロス率やＲＴＴとＴＣＰを用いる場合のスループットの値が対応付けられた情報である。
【００２４】
通信部１１は、他の通信装置１０や端末５との間でのパケットの送受信を行う。ＴＣＰ処理部２１は、ＴＣＰが用いられるセッションを処理する。高速通信プロトコル処理部２２は、高速通信プロトコルが用いられるセッションを処理する。高速通信プロトコル処理部２２は、端末５からセッションの接続要求を取得して、他の通信装置１０への転送処理を行う場合、適宜、転送先テーブル３３（図４）を用いて、接続要求の宛先を決定する。プロトコル変換部２３は、適宜、ＴＣＰパケットを高速通信プロトコルに対応したパケットに変換すると共に、高速通信プロトコルに対応したパケットをＴＣＰパケットに変換する。宛先特定部２４は、プロトコル変換部２３で生成されたＴＣＰパケットについて、最終宛先の端末５を特定する。また、宛先特定部２４は、端末５から受信したＴＣＰパケットのうちプロトコルの変換の対象になるパケットをプロトコル変換部２３に出力し、プロトコルの変換の対象とならないＴＣＰパケットをＴＣＰ処理部２１に出力する。
【００２５】
セッション監視部２５は、確立したセッションの情報を、セッション管理テーブル３２（図７）を用いて管理する。セッション管理テーブル３２には、各セッションで使用されるプロトコルなどの情報が含まれる。計測部２６は、対向する通信装置１０との間で送受信するパケットを用いて、ＲＴＴ、パケットロス率、単位時間当たりに送受信可能なデータ量などの情報を取得し、経路状況テーブル３１（図４）に格納する。経路状況テーブル３１とセッション管理テーブル３２の例は後述する。負荷計算部２７は、通信装置１０の処理負荷を計算する。処理負荷として、例えば、通信装置１０が備えるプロセッサの利用率などが使用される。プロトコル決定部２８は、通信中のセッションや確立が要求されたセッションについて、高速通信プロトコルとＴＣＰのいずれを用いるかを決定する。プロトコル決定部２８の処理の詳細は後述する。
【００２６】
図３は、通信装置１０のハードウェア構成の例を説明する図である。通信装置１０は、プロセッサ１０１、メモリ１０２、ストレージ１０３、バス１０４、ネットワークインタフェース１０５を備える。プロセッサ１０１は、Central Processing Unit（ＣＰＵ）を含む任意の処理回路とすることができる。プロセッサ１０１は、ストレージ１０３に記憶されているプログラムを読み込んで実行することにより、制御部２０として動作する。メモリ１０２とストレージ１０３は、記憶部３０を実現する。なお、メモリ１０２は、プロセッサ１０１での処理に用いられるデータやプロセッサ１０１の処理で得られたデータ等も保持する。ネットワークインタフェース１０５は、通信部１１として動作する。バス１０４は、プロセッサ１０１、メモリ１０２、ストレージ１０３、ネットワークインタフェース１０５を、互いにデータの入出力が可能になるように接続する。
【００２７】
＜パケットのフォーマットの例とテーブルの例＞
以下、処理を行っている通信装置１０を明確にするために、符号の末尾に通信装置１０に割り当てられた識別子と同じアルファベットを付すことがある。例えば、制御部２０ａは、通信装置１０ａに含まれている制御部２０を指す。
【００２８】
図４は、転送先テーブル３３と経路状況テーブル３１の例を示す。図４では、ネットワークＮ２に含まれている通信装置１０ｂが備えるテーブルを例として示す。ネットワークＮ２では、通信装置１０ａ〜１０ｄが互いに接続されている。さらに、通信装置１０ａには端末５ａ、通信装置１０ｂには端末５ｂ、通信装置１０ｄには端末５ｅが接続している。また、通信装置１０ｃには、端末５ｃと端末５ｆが接続している。
【００２９】
転送先テーブル３３には、他の通信装置１０を介して通信可能な端末５のアドレスに対応付けて、その端末５宛のパケットの転送先となる通信装置１０の情報が記録されている。例えば、通信装置１０ｂが備える転送先テーブル３３ｂの１番目のエントリでは、ＩＰａというアドレスが割り当てられている端末５ａには、ＩＰ１が割り当てられている通信装置１０ａを介して通信できることが記録されている。転送先テーブル３３ｂには、他にも、通信装置１０ｂに接続している端末５ｂが通信装置１０ｂを介して高速通信プロトコルを用いた通信が可能な端末５と、その端末５との通信の際に接続先となる通信装置１０の情報が記録されている。
【００３０】
図４に示す経路状況テーブル３１ｂには、セッション番号、通信先の通信装置１０のアドレス、往復遅延時間、パケットロス率、バーストサイズ、スループット、空き帯域、使用ポート、プロトコルが含まれる。以下の説明では、「空き帯域」は、計測対象となっている通信装置１０間の区間において、現在通信中の送信レートに加えてさらに使用可能な送信レートである。計測対象の区間で通信セッションが確立されている場合、計測部２６は、通信セッションで送受信されているパケットを用いて、往復遅延時間、パケットロス率、スループットなどを求め、セッション番号に対応付けて経路状況テーブル３１に記録する。さらに、計測部２６は、通信セッションで送受信されるデータ量をモニタすることにより、バーストサイズもセッション番号に対応付けて記録する。また、使用ポート、プロトコルもセッション番号に対応付けて経路状況テーブル３１に記録される。なお、２台の通信装置１０で特定される区間に複数のセッションが確立されている場合は、セッションの数と同数の情報がその区間に対応付けて経路状況テーブル３１に記憶されうる。
【００３１】
例えば、通信装置１０ｂは、通信装置１０ａとの間にセッションＳｅ１を確立し、通信装置１０ｃとの間でセッションＳｅ２を確立しているが、通信装置１０ｄとの間でセッションを確立していないとする。この場合、通信装置１０ｂの計測部２６ｂは、セッションＳｅ１で送受信されるパケットを用いて、通信装置１０ｂと通信装置１０ａとの間のＲＴＴなどの情報を求め、経路状況テーブル３１ｂに記録する。また、計測部２６ｂは、セッションＳｅ２で送受信されるパケットを用いて、通信装置１０ｂと通信装置１０ｃとの間の経路の状況に関する情報を求め、経路状況テーブル３１ｂに記録する。
【００３２】
一方、通信装置１０ｂと通信装置１０ｄの間のように、いずれのセッションも確立されていない通信装置１０間の区間についての情報を取得するために、計測部２６は、計測パケットを対向する通信装置１０との間で送受信する。計測部２６は、計測パケットを解析することにより対向する通信装置１０との間の通信経路の情報を取得する。ここで、計測パケットは、これらの情報を取得するために使用できる任意のパケットである。なお、計測パケットを用いて得られた情報であることを分かりやすくするために、経路状況テーブル３１においては、セッションが生成されていない区間についてのセッション番号は、Ｓｅ０などの無効値が使用される。
【００３３】
図５は、通信装置１０間で高速通信プロトコルが用いられる場合のパケットのフォーマットの例を示す。高速通信プロトコルを用いた通信で送受信されるパケットには、ＩＰ（Internet protocol）ヘッダ、ＴＣＰヘッダ、高速通信プロトコルヘッダ、データが含まれる。高速通信プロトコルが用いられる場合、端末５から通信装置１０に送信されてきたパケットＰ１は、図５に示すように、高速通信プロトコルの制御ヘッダの後のデータに相当する。換言すると、高速通信プロトコルを用いて送信されるパケットＰ０は、転送対象のパケットＰ１のＩＰヘッダの外側に、通信装置１０間での送受信に使用されるＩＰヘッダ、ＴＣＰヘッダ、高速通信プロトコルの制御ヘッダなどを付加したパケットである。なお、ＩＰヘッダ、ＴＣＰヘッダ、高速通信プロトコルの制御ヘッダなどの付加は、プロトコル変換部２３によって行われる。以下、理解しやすくするために、プロトコル変換部２３によって付されたヘッダに「アウター」という文言を付し、データとして含まれているパケットのヘッダに「インナー」という文言を付す。例えば、プロトコル変換部２３によって付されたＩＰヘッダを「アウターＩＰヘッダ」、データとして含まれているパケットのＩＰヘッダを「インナーＩＰヘッダ」と記載することがある。
【００３４】
アウターＩＰヘッダには、バージョン情報、ヘッダ長、サービスタイプ、パケット長、パケット識別子、フラグ、フラグメントオフセット、ＴＴＬ（time to live）、プロトコル番号、ヘッダチェックサム、送信元ＩＰアドレス、送信先ＩＰアドレスが含まれる。ＩＰヘッダは、既知の通信処理で使用されるものと同様である。ＴＣＰヘッダには、送信元ポート番号、宛先ポート番号、シーケンス番号、受信者確認番号、ヘッダ長、予約ビット、コード、ウィンドウサイズ、チェックサム、ポインタ、オプションが含まれる。なお、高速通信プロトコルを使用する際のＴＣＰヘッダ（アウターＴＣＰヘッダ）では、予め、ウィンドウ制御やスロースタートが行われないように、ウィンドウサイズが設定されている。
【００３５】
高速プロトコルヘッダには、高速プロトコル種、送信元アプリケーションポート、送信先アプリケーションポート、セッション番号などが含まれる。アウターＩＰヘッダ、アウターＴＣＰヘッダ、高速プロトコルヘッダに含まれている情報は、セッション管理テーブル３２の生成の際に使用される。セッション管理テーブル３２の生成については図７を参照しながら説明する。
【００３６】
図６は、高速通信プロトコルが使用される場合のパケットのフォーマットの例である。図６では、トランスポート層のプロトコルとしてＵＤＰ（User Datagram Protocol）が使用される場合のフォーマットの例を示す。図６に示すパケットには、アウターＩＰヘッダ、ＵＤＰヘッダ（アウターＵＤＰヘッダ）、高速通信プロトコルヘッダ、データが含まれる。図５を参照しながら説明したように、端末５から通信装置１０に送信されてきたパケットＰ１は、プロトコル変換部２３によって、高速通信プロトコルの制御ヘッダの後のデータとして扱われる。アウターＩＰヘッダと高速通信プロトコルヘッダに含まれる情報要素は、図５で説明したとおりである。ＵＤＰヘッダには、送信元ポート番号、宛先ポート番号、データ長、チェックサムが含まれる。アウターＩＰヘッダとＵＤＰヘッダは、既知の通信処理で使用されるものと同様である。アウターＩＰヘッダ、ＵＤＰヘッダ、高速プロトコルヘッダに含まれている情報は、セッション管理テーブル３２の生成の際に使用される。
【００３７】
図７は、セッション管理テーブル３２の例を示す図である。セッション管理テーブル３２には、セッション番号に対応付けて、接続元アドレス、接続先アドレス、使用ポート、プロトコルが記録される。セッション管理テーブル３２は、通信装置１０がセッションの接続要求を受信するたびに、セッション監視部２５によって更新される。セッション監視部２５は、セッションの接続要求のＩＰヘッダの送信元ＩＰアドレスを接続元アドレスとして抽出する。なお、受信パケットが高速通信プロトコルを用いたパケットである場合は、アウターＩＰヘッダの送信元ＩＰアドレスが接続元アドレスとして使用される。接続先アドレスは、インナーＩＰヘッダの宛先アドレスから特定される。
【００３８】
一方、接続要求において高速通信プロトコルが使用されていない場合、セッション監視部２５は、ＩＰヘッダ中の宛先アドレスをキーとして転送先テーブル３３を検索する。セッション監視部２５は、転送先テーブル３３において、接続要求の宛先アドレスに対応付けられている通信装置１０のアドレスを、接続先アドレスとする。
【００３９】
さらに、セッション監視部２５は、最終宛先のポートを使用ポートとして取得する。受信パケットが高速通信プロトコルを用いたパケットである場合は、インナーＴＣＰヘッダの宛先ポートが使用ポートとして抽出される。一方、受信パケットがＴＣＰを用いたパケットである場合は、ＴＣＰヘッダの宛先ポートが使用ポートとして抽出される。
【００４０】
＜第１の実施形態＞
図８は、通信装置１０での処理負荷が閾値Ｔｈ以上のときに新たなフローが発生した場合の処理の例を説明するシーケンス図である。以下、図８を参照しながら、通信装置１０に備えられているＣＰＵの利用率を通信装置１０への負荷として使用する場合を例として、処理の詳細を説明する。閾値Ｔｈは、現在処理中のフローに加えて新たなフローを高速通信プロトコルで処理する場合に、現在処理中のフローと新たなフローのスループットの合計値が高速通信プロトコルを用いたスループットの上限値となることが見込まれる値である。
【００４１】
なお、図８の例では、図４のネットワークＮ２に示すように、端末５ａが通信装置１０ａに接続され、端末５ｂが通信装置１０ｂに接続されているものとする。また、端末５ａは、端末５ｂとの通信の際に通信装置１０ａを介して通信を行うことを予め記憶しているものとする。
【００４２】
負荷計算部２７ｂは、定期的にＣＰＵの利用率を計算する。ＣＰＵの利用率は、任意の方法で求められ得るが、例えば、通信中のセッションの数とそのセッションの処理にかかる負荷を表わす係数の積として求められる。負荷を表わす係数は、実装に応じて決定される。負荷計算部２７ｂは、得られた利用率を予め記憶している閾値Ｔｈと比較する。ここで、閾値Ｔｈは、新たなセッションの確立の際に高速通信プロトコルを用いると、得られるスループットが高速通信プロトコルを用いた場合の上限になることが予想される値であり、経験則や実装に応じて設定される。負荷計算部２７ｂは、ＣＰＵの利用率が閾値Ｔｈに到達したことを検知すると、セッション監視部２５ｂに対して、ＣＰＵの利用率が閾値Ｔｈに到達したことを通知する（ステップＳ１、Ｓ２）。
【００４３】
一方、端末５ａは、端末５ｂとの通信を開始するためのセッション接続要求を生成し、セッション接続要求を送信する（ステップＳ３）。通信装置１０ａの通信部１１ａは、セッション接続要求を受信すると、宛先特定部２４ａを介してセッション監視部２５ａにセッション接続要求を出力する。セッション監視部２５ａは、転送先テーブル３３ａを用いて、端末５ｂとの通信の転送先が通信装置１０ｂであることを特定する。そこで、セッション監視部２５ａは、セッション接続要求の転送先が通信装置１０ｂであることを示す情報と共に、セッション接続要求をプロトコル変換部２３ａに出力する。プロトコル変換部２３ａは、セッション接続要求を、通信装置１０ｂ宛ての高速通信プロトコルを用いたパケットに変換する。高速通信プロトコル処理部２２ａは、通信部１１ａを介して、プロトコル変換部２３ａで変換されたセッション接続要求を通信装置１０ｂに送信する（ステップＳ４）。
【００４４】
通信装置１０ｂの高速通信プロトコル処理部２２ｂは、通信部１１ｂを介して、セッション接続要求を取得する。高速通信プロトコル処理部２２ｂは、新たなセッションが確立されることをセッション監視部２５ｂに通知する（ステップＳ５）。このとき、高速通信プロトコル処理部２２ｂは、セッション接続要求に含まれているヘッダの情報とペイロードの情報もセッション監視部２５ｂに出力する。セッション監視部２５ｂは、高速通信プロトコル処理部２２ｂから入力された情報を用いて、セッション管理テーブル３２ｂに以下の情報を追加する。
セッション番号：Ｓｅ２
接続元アドレス：通信装置１０ａのアドレス
接続先アドレス：端末５ｂのアドレス
セッション監視部２５ｂはステップＳ２においてＣＰＵ利用率が閾値Ｔｈを超えていることが通知されているため、プロトコルの情報をセッション管理テーブル３２に記録せずに、プロトコルの判定をプロトコル決定部２８ｂに要求する（ステップＳ６）。
【００４５】
ステップＳ５、Ｓ６の処理と並行して、通信装置１０ｂは端末５ｂとの間のセッションの確立も行う。高速通信プロトコル処理部２２ｂは、プロトコル変換部２３ｂを介して、セッション接続要求を宛先特定部２４ｂに出力する（ステップＳ７）。なお、プロトコル変換部２３ｂでの処理により、セッション接続要求は端末５ｂ宛のＴＣＰパケットに変換されている。宛先特定部２４ｂは、通信部１１ｂを介して、セッション接続要求を端末５ｂに送信する（ステップＳ８）。
【００４６】
端末５ｂは、端末５ａから端末５ｂに向けたセッション接続要求を受信すると、端末５ｂから端末５ａに向かう方向の通信に備えて、セッション接続要求を端末５ａ宛に送信する。ここで、端末５ｂは、予め、通信装置１０ｂを介して他の端末５と送信することを記憶しているので、セッション接続要求を通信装置１０ｂに送信する（ステップＳ９）。宛先特定部２４ｂは、通信部１１ｂを介して、端末５ｂからの端末５ａ宛のセッション接続要求を取得する。
【００４７】
次に、ステップＳ１０〜Ｓ１６を参照しながら、ステップＳ６の処理に起因して行われるプロトコルの判定処理について説明する。プロトコル決定部２８ｂは、プロトコルの決定が要求されると、負荷計算部２７ｂからＣＰＵ利用率の最新の値を取得する（ステップＳ１０）。プロトコル決定部２８ｂは、残りのＣＰＵリソースを全て高速通信プロトコルの処理に使用した場合の上限スループットを予測する（ステップＳ１１）。例えば、ステップＳ１０で得られたＣＰＵ利用率が９０％である場合、高速通信プロトコルに関する現在の処理に加えて、現在使用されていない１０％分のＣＰＵリソースを用いたときに、高速通信プロトコルで得られるスループットの上限値を計算する。
【００４８】
ステップＳ１２において、プロトコル決定部２８ｂは、計測部２６ｂに対して、接続元が通信装置１０ａであることを通知して、通信装置１０ａとの間の回線の状態についての計測結果を要求する。計測部２６ｂは、通信装置１０ａのアドレスをキーとして、経路状況テーブル３１ｂを検索し、通信装置１０ｂと通信装置１０ａの間のＲＴＴ、パケットロス率などの情報をプロトコル決定部２８ｂに通知する。プロトコル決定部２８ｂは、計測部２６から取得した値と、スループットテーブル３４を用いて、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットを求める。さらに、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットを用いて、ＴＣＰと高速通信プロトコルを併用した場合のスループットの予測値を計算する（ステップＳ１３）。ここで、予測値は、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットと現在通信中のセッションで得られているスループットの合計値である。ＴＣＰを用いた時に得られるスループットの計算例は、図９を参照しながら後述する。
【００４９】
プロトコル決定部２８ｂは、高速通信プロトコルを用いた場合に得られるスループットの上限値と、ステップＳ１３で計算した予測値を比較した結果を用いて、新たに確立するセッションで使用するプロトコルを決定する（ステップＳ１４）。ここで、ステップＳ１４の処理が行われる場合は、ＣＰＵ負荷が所定の閾値Ｔｈを超えているため、新たなフローを高速通信プロトコルで処理すると、全スループットの合計値は高速通信プロトコルを用いたスループットの上限値となることが見込まれる。従って、ステップＳ１４では、全てのセッションを高速通信プロトコルで処理する場合と、高速通信プロトコルとＴＣＰを併用して処理を行う場合でスループットの合計を比較していることになる。ＴＣＰを用いた場合のスループットが低く、予測値が高速通信プロトコルを用いた場合のスループットの上限値以下となる場合、プロトコル決定部２８ｂは、通信装置１０ａと通信装置１０ｂの間の通信に高速通信プロトコルを使用することを決定する。一方、ＴＣＰを用いた場合のスループットが高く、予測値が高速通信プロトコルを用いた場合のスループットの上限値より大きくなる場合、プロトコル決定部２８ｂは、通信装置１０ａと通信装置１０ｂの間の通信にＴＣＰを使用することを決定する。プロトコル決定部２８ｂは、選択したプロトコルをセッション監視部２５ｂに通知する（ステップＳ１５）。セッション監視部２５ｂは、プロトコル決定部２８ｂから通知されたプロトコルをセッション管理テーブル３２ｂに記録する。
【００５０】
セッション監視部２５ｂは、通信装置１０ａと通信装置１０ｂの間の通信に高速通信プロトコルを使用することが通知されると、宛先特定部２４ｂへ、新たに接続する対象のセッションで送受信されるパケットの振り分け先を通知する（ステップＳ１６）。例えば、新たに接続する対象のセッションが高速通信プロトコルである場合、セッション監視部２５ｂは、新たに接続されるセッションがプロトコル変換部で終端されることを通知する。一方、新たに接続する対象のセッションがＴＣＰである場合、セッション監視部２５ｂは、新たに接続されるセッションがＴＣＰ処理部２１ｂで終端されることを通知する。
【００５１】
宛先特定部２４ｂは、新たに接続されるセッションが高速通信プロトコル処理部２２で終端されることが通知されると、セッションの確立に使用するパケットを高速通信プロトコル処理部２２ｂへ出力する（ステップＳ１７でＮｏ）。この場合、セッションの確立に使用するパケットの宛先は通信装置１０ａに指定されている。そこで、高速通信プロトコル処理部２２ｂは、通信装置１０ａに対して、高速通信プロトコルでパケットを送信することにより、通信装置１０ａとの間での高速通信プロトコルによるセッションを生成する（ステップＳ１８）。さらに、通信装置１０ａ中の高速通信プロトコル処理部２２ａは、セッション管理テーブル３２ａに以下のエントリを追加する。
セッション番号：Ｓｅ２
接続元アドレス：端末５ａのアドレス
接続先アドレス：通信装置１０ｂのアドレス
プロトコル    ：高速通信プロトコル
【００５２】
通信装置１０ａは、通信装置１０ｂとの間で高速通信プロトコルによるセッションが生成されると、端末５ａとの間でＴＣＰセッションを確立する（ステップＳ１９）。このため、端末５ａと端末５ｂの間の通信は、通信装置１０ａと通信装置１０ｂの間の高速通信プロトコルによるセッションを介して行われる。
【００５３】
一方、宛先特定部２４ｂは、新たに接続されるセッションがＴＣＰ処理部２１ｂで終端されることが通知されると、セッションの確立に使用するパケットをＴＣＰ処理部２１ｂへ出力する（ステップＳ１７でＹｅｓ、ステップＳ２０）。この場合、セッションの確立に使用するパケットの宛先は端末５ａに指定されている。ＴＣＰ処理部２１ｂは、端末５ａに対して、ＴＣＰでパケットを送信することにより、端末５ａとの間でのＴＣＰによるセッションを生成する（ステップＳ２１）。このため、端末５ａと端末５ｂの間の通信は、通信装置１０ａと通信装置１０ｂの間のＴＣＰセッションを介して行われる。また、宛先特定部２４ｂは、新たなセッションをＴＣＰによって処理することを高速通信プロトコル処理部２２ｂにも通知する（ステップＳ２２）。高速通信プロトコル処理部２２ｂは、新たなセッションがＴＣＰによって処理されることを、通信装置１０ａに通知する（ステップＳ２３）。この処理により通信装置１０ａは、端末５ａと端末５ｂとの間の通信セッションをＴＣＰで処理することを認識し、通信装置１０ａ中のセッション管理テーブル３２ａを更新できる。このため、通信装置１０ａ中のセッション管理テーブル３２ａには、以下の情報が格納される。
セッション番号：Ｓｅ２
接続元アドレス：端末５ａのアドレス
接続先アドレス：通信装置１０ｂのアドレス
プロトコル    ：ＴＣＰ
【００５４】
セッション確立後は、通信装置１０ａは、セッション管理テーブル３２ａに従って、通信装置１０ｂへの転送処理に使用するプロトコルを特定する。このため、ステップＳ１８を参照しながら説明したように高速通信プロトコルが選択された場合、通信装置１０ａは、端末５ａから受信した端末５ｂ宛てのパケットを高速通信プロトコルで処理して通信装置１０ｂに転送する。一方、ステップＳ２３を参照しながら説明したように、通信装置１０ａと通信装置１０ｂの間でＴＣＰが使用される場合、通信装置１０ａは、端末５ａから受信した端末５ｂ宛てのパケットをＴＣＰによって通信装置１０ｂに転送する。
【００５５】
図９は、スループットテーブル３４の例を示す図である。スループットテーブル３４には、パケットロス率とＲＴＴの関数として、ＴＣＰスループットの予測値が記録されている。スループットテーブル３４には、パケットロス率とＲＴＴのそれぞれの２種類以上の値について、スループットが記録されている。図９を参照しながら、図８のステップＳ１３において、通信装置１０ａと通信装置１０ｂの間の経路で得られるＴＣＰスループットの予測値が計算される場合の処理の例を説明する。
【００５６】
図９の例では、ＲＴＴが５０ｍｓの場合と１００ｍｓの場合のそれぞれについて、パケットロス率が０．０１％と０．１％でのスループットが得られている。ここで、通信装置１０ａと通信装置１０ｂの間において、ＲＴＴが８０ｍｓでパケットロス率が０．０５％であるとする。すると、プロトコル決定部２８は、パケットロス率０．０１％の場合と０．１％の場合について、それぞれ、ＲＴＴ８０ｍｓの場合のスループットを線形補間から求める。まず、パケットロス率０．０１％では、ＲＴＴ＝５０ｍｓでは５８Ｍｂｐｓであるのに対し、ＲＴＴ＝１００ｍｓでは４５Ｍｂｐｓであるので、ＲＴＴが５０ｍｓから１００ｍｓまで延びることにより、スループットが５８Ｍｂｐｓから４５Ｍｂｐｓまで悪化している。このため、プロトコル決定部２８ｂは、ＲＴＴが１ｍｓ延びることにより、スループットは（４５Ｍｂｐｓ−５８Ｍｂｐｓ）／（１００ｍｓ−５０ｍｓ）だけ変化すると計算する。従って、ＲＴＴ８０ｍｓの場合のスループットＸは次の式から求められる。
Ｘ＝５８Ｍｂｐｓ＋（８０ｍｓ−５０ｍｓ）／（１００ｍｓ−５０ｍｓ）×（４５Ｍｂｐｓ−５８Ｍｂｐｓ）＝５１．２Ｍｂｐｓ
同様に、パケットロス率０．１％でＲＴＴ８０ｍｓの場合のスループットＹは次の式から求められる。
Ｙ＝４０Ｍｂｐｓ＋（８０ｍｓ−５０ｍｓ）／（１００ｍｓ−５０ｍｓ）×（３８Ｍｂｐｓ−４０Ｍｂｐｓ）＝３８．８Ｍｂｐｓ
【００５７】
次に、プロトコル決定部２８ｂは、ＸとＹを用いて、パケットロス率についての線形補間を行う。すなわち、パケットロス率が０，０１％から０．１％に悪化することにより、スループットが５１．２Ｍｂｐｓから３８．８Ｍｂｐｓに低下している。そこで、プロトコル決定部２８ｂは、パケットロス率０．０５％でＲＴＴ８０ｍｓの場合のスループットＺを次の式から求める。
Ｚ＝５１．２Ｍｂｐｓ＋（５１．２Ｍｂｐｓ−３８．８Ｍｂｐｓ）／（０．１％−０．０１％）×（０．０５％−０．０１％）＝４５．６Ｍｂｐｓ
【００５８】
このような処理により得られたＴＣＰのスループットの予測値を用いて、プロトコル決定部２８は、新たなセッションをＴＣＰで生成した場合のスループットの合計値と高速プロトコルを用いたスループットの上限値との間の比較を行う。
【００５９】
図１０は、通信装置１０の処理の例を説明するフローチャートである。負荷計算部２７は、ＣＰＵ利用率を確認し、ＣＰＵ利用率が閾値Ｔｈ以上であるかを判定する（ステップＳ３０、Ｓ３１）。ＣＰＵ利用率が閾値Ｔｈ未満の場合、ステップＳ３０に戻る（ステップＳ３１でＮｏ）。ＣＰＵ利用率が閾値Ｔｈ以上の場合でも、新たなセッションの接続要求を受信するまで、プロトコル決定部２８は待機する（ステップＳ３２でＮｏ）。ＣＰＵ利用率が閾値Ｔｈ以上になり、さらに、新たなセッションの接続要求を受信すると、プロトコル決定部２８は、高速通信プロトコルでのスループットの上限値を予測する（ステップＳ３２でＹｅｓ、ステップＳ３３）。プロトコル決定部２８は、通信装置１０間での回線の特性パラメータから、新たに確立するセッションのＴＣＰでのスループットの予測値を求める（ステップＳ３４）。ここで、通信装置１０間の特性パラメータには、ＲＴＴやパケットロス率などが含まれる。プロトコル決定部２８は、高速通信プロトコルでのスループットの上限値を、現在処理中のセッションのスループットと新たに確立するセッションのＴＣＰスループットとの合計値と比較する（ステップＳ３５）。プロトコル決定部２８は、高速通信プロトコルでのスループットの上限値の方が小さい場合、新たに確立するセッションをＴＣＰで追加することを決定する（ステップＳ３５でＹｅｓ、ステップＳ３６）。プロトコル決定部２８は、合計値の方が高速通信プロトコルでのスループットの上限値より小さい場合、新たに確立するセッションを高速通信プロトコルで確立することを決定する（ステップＳ３５でＮｏ、ステップＳ３７）。
【００６０】
このように、通信装置１０でのＣＰＵ利用率が閾値Ｔｈを超えると、通信装置１０は、通信中の各セッションを高速通信プロトコルで処理する場合に、新たに確立するセッションを高速通信プロトコルとＴＣＰのいずれで処理するとスループットが高いかを判定する。また、判定結果に応じて、新たに確立するセッションで用いられるプロトコルが決定される。このため、通信装置１０にかかっている処理負荷や通信経路の状況なども考慮して、高速通信プロトコルで処理するセッション数を最適化でき、通信が効率化される。
【００６１】
第１の実施形態では、セッションの開始を要求する端末５ａから直接パケットを受信する通信装置１０ａではプロトコルの決定処理を行わずに、通信装置１０ａの対向装置となる通信装置１０ｂにおいて、プロトコルを決定するための処理が行われている。このため、第１の実施形態は、通信装置１０ａが端末５ａに組み込まれた装置としてユーザに販売された場合に、ユーザの操作対象の装置にかかる負荷が軽減されているという利点もある。ここで、端末５は、説明の都合上、端末と記載しているが、端末５には、クライアント装置として動作するユーザの端末やサーバも含まれる。セッションの開始は、クライアント端末からサーバに要求されるので、第１の実施形態では、ユーザの操作する端末の処理を軽減しつつ、通信を効率化できることになる。さらに、サーバ側から送信されるデータ量はクライアント側よりも多いことが想定されるので、サーバ側に近い通信装置１０においてプロトコルの種類を決定することにより、通信の効率化を容易にしている。
【００６２】
＜第２の実施形態＞
通信装置１０での処理負荷が閾値Ｔｈよりも大きな閾値Ｔｈ２も超えている場合、早急に処理負荷を低下させることが望ましい。そこで、第２の実施形態では、処理中のセッションのうちで高速通信プロトコルを用いてもスループットが改善しにくいセッションをＴＣＰで処理する場合について説明する。
【００６３】
第２の実施形態では、負荷計算部２７において、ＣＰＵ利用率が閾値Ｔｈ２を超えたことが検出されると、セッション監視部２５は、セッション管理テーブル３２（図７）を参照することにより、高速通信プロトコルで処理されているセッションを特定する。処理負荷が閾値Ｔｈ２を超えている状態で新たにセッションの確立が要求されると、プロトコル決定部２８は、新たに確立するセッションをＴＣＰで処理することを決定する。さらに、プロトコル決定部２８は、高速化プロトコルで処理中のセッションの各々について、ＴＣＰを用いたときのスループットを計算し、高速化プロトコルで得られているスループットと比較する。ここで、ＴＣＰを用いたときのスループットは、第１の実施形態で図９を参照しながら説明したように、適宜、スループットテーブル３４を用いて計算される。なお、スループットテーブル３４を用いた線形補間処理を行うためのＲＴＴ、パケットロス率などの値は、経路状況テーブル３１（図４）から取得される。なお、経路状況テーブル３１は、計測部２６によって定期的に更新されているものとする。また、高速化プロトコルで処理されているときの個々のセッションのスループットの値も経路状況テーブル３１から取得される。
【００６４】
例えば、通信装置１０ｂでのＣＰＵ利用率が閾値Ｔｈ２を超えた場合、セッション監視部２５ｂは、図７のセッション管理テーブル３２により、セッションＳｅ２が高速通信プロトコルで処理されていることを特定する。ここで、セッションＳｅ２は、通信装置１０ａと通信装置１０ｂの間で高速通信プロトコルにより処理されているとする。プロトコル決定部２８ｂは、新たなセッションの確立が要求されたときの通信装置１０ａと通信装置１０ｂとの間の経路の状況やセッションＳｅ２のスループットを経路状況テーブル３１ｂ（図４）から取得する。さらに、プロトコル決定部２８ｂは、通信装置１０ａと通信装置１０ｂとの間のＲＴＴやパケットロス率などの経路の状況を用いて、セッションＳｅ２をＴＣＰに変更した場合のスループットの予測値を計算する。
【００６５】
図１１は、通信装置１０で処理されているセッションごとに、そのセッションを高速通信プロトコルで処理した場合に得られるスループット（左のグラフ）と、ＴＣＰで処理した場合に得られるスループット（右のグラフ）を示している。左右の棒グラフの差分が、プロトコルをＴＣＰから高速通信プロトコルに変更した場合のスループットの改善分である。図１１に示すように、プロトコルをＴＣＰから高速通信プロトコルに変更した場合に得られるスループットの改善は、セッションによって異なる。プロトコル決定部２８ｂは、図１１に示すような情報を用いて、プロトコルの変更によるスループットの改善量の小さいセッションを優先的にプロトコルの変更対象に選択する。図１１の例では、ＣＰＵの処理負荷が閾値を超えている通信装置１０で処理しているｈ本のセッションのうち、プロトコルの変更によるスループットの改善量が、セッションＳｅ２で最小になっているのでセッションＳｅ２がプロトコルの変更対象に選択される。
【００６６】
図１２は、第２の実施形態で行われる処理の例を説明するシーケンス図である。図１２においても、図８と同様に、端末５ａと端末５ｂとの間の通信を通信装置１０ａと通信装置１０ｂが中継しているものとする。
【００６７】
負荷計算部２７ｂは、ＣＰＵの利用率が閾値Ｔｈ２に到達したことを検知すると、セッション監視部２５ｂとプロトコル決定部２８ｂに対して、ＣＰＵの利用率が閾値Ｔｈ２に到達したことを通知する（ステップＳ４１、Ｓ４２）。すると、セッション監視部２５ｂは、適宜、セッション管理テーブル３２ｂを用いて、高速通信プロトコルで処理しているセッションを特定する（ステップＳ４３）。
【００６８】
ステップＳ４４〜Ｓ５０の処理は、図８を参照しながら説明したステップＳ３〜Ｓ９と同様である。ステップＳ５１において、プロトコル決定部２８ｂは、高速通信プロトコルで処理中のセッションの情報をセッション監視部２５ｂから取得する。このとき、セッション監視部２５ｂは、適宜、セッション管理テーブル３２ｂや経路状況テーブル３１ｂを用いて、各セッションの最新のスループットなどの情報をプロトコル決定部２８ｂに通知する。次に、プロトコル決定部２８ｂは、高速通信プロトコルで処理している各セッションの接続元を通知して、接続元の通信装置１０との間の回線の状態についての計測結果を計測部２６ｂから取得する（ステップＳ５２）。このとき計測部２６ｂは、経路状況テーブル３１ｂを検索し、通知された通信装置１０と通信装置１０ｂの間のＲＴＴ、パケットロス率などの情報をプロトコル決定部２８ｂに通知する。
【００６９】
プロトコル決定部２８ｂは、計測部２６ｂから取得した値と、スループットテーブル３４ｂを用いて、現在、高速通信プロトコルで処理中の各セッションについて、ＴＣＰを用いて処理したときに得られるスループットを求める。プロトコル決定部２８ｂは、ＴＣＰを用いたときのスループットと、高速通信プロトコルでのスループットの差を用いて、図１１を参照しながら説明した手順により、処理に使用するプロトコルを変更する対象とするセッションを選択する（ステップＳ５３）。次に、プロトコル決定部２８ｂは、高速通信プロトコルで処理中のセッションを高速通信プロトコルで処理した場合に得られるスループットの合計値を計算する。さらに、プロトコルを変更する対象として選択したセッションをＴＣＰで処理し、現在確立しているその他のセッションを高速通信プロトコルで処理する場合のスループットの合計を、プロトコル変更を行った場合のスループットの予測値として計算する。さらに、プロトコル決定部２８ｂは、処理中のセッションを高速通信プロトコルで処理した場合のスループットの合計値と、プロトコル変更を行った場合のスループットの予測値を比較する（ステップＳ５４）。プロトコル決定部２８ｂは、比較の結果、高速通信プロトコルで処理した場合のスループットの合計値の方が大きい場合、通信中のセッションの処理に使用するプロトコルを変更しないことを決定する。一方、スループットの合計値よりもプロトコル変更を行った場合のスループットの予測値の方が大きい場合、プロトコル決定部２８ｂは、プロトコルを変更する対象として選択したセッションをＴＣＰで処理することを決定する。
【００７０】
プロトコル決定部２８ｂは、新たに設定するセッションをＴＣＰで処理することをセッション監視部２５ｂに通知する。さらに、プロトコルを変更することを決定した場合、プロトコル決定部２８ｂは、プロトコルの変更を決定したセッションの識別子と、そのセッションをＴＣＰで処理することをセッション監視部２５ｂに通知する（ステップＳ５５）。新たに設定するセッションについての処理は、図８のステップＳ２０〜Ｓ２３を参照しながら説明した処理と同様である。
【００７１】
プロトコルが変更されるセッションについて行われる処理を、ステップＳ５６以降を参照しながら説明する。以下の説明では、プロトコルが変更されるセッションの接続元は、通信装置１０ａであり、セッションの終点は端末５である。セッション監視部２５ｂは、宛先特定部２４ｂに、プロトコルが変更されるセッションをＴＣＰ処理部２１ｂで終端することを通知する（ステップＳ５６）。宛先特定部２４ｂは、高速通信プロトコル処理部２２ｂに対して、プロトコルが変更されるセッションの識別子とともに、通知した識別子で識別されるセッションがＴＣＰで処理されることを通知する（ステップＳ５７）。高速通信プロトコル処理部２２ｂは、指定されたセッションのプロトコルを変更するための処理を行う（ステップＳ５８）。なお、高速通信プロトコル処理部２２ｂは、通信中のセッションの切断を防ぐために、セッションを継続するために使用される情報を、適宜、ＴＣＰ処理部２１ｂに通知する。この処理により、ＴＣＰ処理部２１ｂは、プロトコルが変更されたセッションについての送信済シーケンスなどの情報を取得することができ、通信中のセッションの切断を防止しつつ、プロトコルを変更することができる。高速通信プロトコル処理部２２ｂは、プロトコルを変更するための処理が終了すると、処理の終了を宛先特定部２４ｂに通知する。すると、宛先特定部２４ｂは、プロトコルを変更するセッションについてのパケットの宛先を通信装置１０ａから端末５ａに切り替える処理を行う（ステップＳ５９）。宛先特定部２４ｂは、ＴＣＰ処理部２１ｂに対して、プロトコルを変更するセッションを継続するために、端末５ａとの間のＴＣＰ通信を開始することを要求する（ステップＳ６０）。ＴＣＰ処理部２１ｂは、端末５ａとの間でＴＣＰ通信を開始する（ステップＳ６１）。
【００７２】
図１２には図示していないが、高速通信プロトコル処理部２２ｂは、プロトコルを変更したセッションについての接続元の通信装置１０に対して、プロトコルを変更するセッションの識別子を通知する。このとき、高速通信プロトコル処理部２２ｂは、識別子と共に、その識別子で識別されるセッションがＴＣＰによって処理されることも、接続元の通信装置１０に通知する。この処理により接続元の通信装置１０は、プロトコルの変更が通知された通信セッションをＴＣＰで処理することを認識し、セッション管理テーブル３２を更新できる。
【００７３】
図１３は、スループットの予測値の例を説明する図である。現在、高速通信プロトコルで処理しているセッション数がｎ本であり、ＣＰＵ利用率が閾値Ｔｈ２を超えているとする。また、高速通信プロトコルで処理しているセッション数がｘ本の場合、ＣＰＵ利用率が閾値Ｔｈ２よりも小さくなるとする。また、高速通信プロトコルで処理しているセッション数がｎ本の場合のスループットはγに示すように、高速通信プロトコルを用いた場合に得られるスループットの最大値Ｘに一致している。
【００７４】
ＴＣＰを用いたときに得られるスループットが比較的大きい場合、新たに確立されるセッションと、プロトコルの変更対象に選択されたセッションとをＴＣＰで処理した場合に得られるスループットは、図１３のβに示すような直線になる。βに示すケースでは、ｎ本のセッションを高速通信プロトコルで処理する場合は、高速通信プロトコルとＴＣＰをｎ本のセッションの処理に併用するよりも大きなスループットが得られる。しかし、新たなセッションを含むｎ＋１本のセッションを処理する際には、ＴＣＰと高速通信プロトコルを用いた場合のスループットの方が高速通信プロトコルだけで処理する場合のスループットよりも大きい。このため、βで示すスループットの変化が得られるネットワークでは、図１２のステップＳ５４の処理において、プロトコルの変更対象に選択されたセッションはＴＣＰで処理され、新たなセッションもＴＣＰで処理される。
【００７５】
一方、ＴＣＰを用いたときに得られるスループットが比較的小さい場合、新たに確立されるセッションと、プロトコルの変更対象に選択されたセッションとをＴＣＰで処理した場合に得られるスループットは、図１３のαに示すような直線になる。αに示すケースでは、ｎ本のセッションを高速通信プロトコルで処理する場合は、高速通信プロトコルとＴＣＰをｎ本のセッションの処理に併用するよりも大きなスループットが得られる。さらに、新たなセッションを含むｎ＋１本のセッションを処理する際も、ＴＣＰと高速通信プロトコルを用いた場合のスループットよりも、高速通信プロトコルだけで処理する場合のスループットの方が大きい。このため、αで示すスループットの変化が得られるネットワークでは、図１２のステップＳ５４の処理において、プロトコルの変更対象に選択されたセッションは高速通信プロトコルで処理され、新たなセッションはＴＣＰで処理される。
【００７６】
図１３のαに示すようにスループットが推移するネットワークの場合、次にセッションが生成される場合にも、図１２のステップＳ５４で説明した処理が行われる。図１３のαでは、ｎ＋２本のセッションを高速通信プロトコルで処理する場合に得られるスループットが、最後に確立された２本のセッションとプロトコルの変更対象に選択されたセッションとをＴＣＰで処理した場合に得られるスループットより小さい。このため、図１３のαに示すようにスループットが変動するネットワークでは、ｎ＋２本のセッションが確立されるときに、プロトコルの変更処理が行われる。
【００７７】
図１４は、第２の実施形態で行われる処理の例を説明するフローチャートである。負荷計算部２７は、ＣＰＵ利用率を確認し、ＣＰＵ利用率が閾値Ｔｈ以上であるかを判定する（ステップＳ７０、Ｓ７１）。ＣＰＵ利用率が閾値Ｔｈ未満の場合、ステップＳ７１に戻る（ステップＳ７１でＮｏ）。ＣＰＵ利用率が閾値Ｔｈ以上の場合、負荷計算部２７は、ＣＰＵ利用率が閾値Ｔｈ２を超えたかを判定する（ステップＳ７２）。ＣＰＵ利用率が閾値Ｔｈ２を超えていない場合（ステップＳ７２でＮｏ）、ステップＳ７３〜Ｓ７８の処理が行われる。ここで、ステップＳ７３〜Ｓ７８の処理は、図１０を参照しながら説明したステップＳ３２〜Ｓ３７の処理と同様である。ＣＰＵ利用率が閾値Ｔｈ２を超えている場合でも、プロトコル決定部２８は、新たなセッションの接続要求を受信するまで待機する（ステップＳ７９でＮｏ）。ＣＰＵ利用率が閾値Ｔｈ２以上になり、さらに、新たなセッションの接続要求を受信すると、プロトコル決定部２８は、通信装置１０間の経路の特性パラメータと、各セッションの情報を取得する（ステップＳ７９でＹｅｓ、ステップＳ８０）。さらに、プロトコル決定部２８は、得られた情報を用いて、プロトコルの変更処理の対象となりうるセッションを選択する。プロトコル決定部２８は、プロトコルを変更する対象として選択したセッションをＴＣＰで処理した場合に得られるスループットの予測値を計算する（ステップＳ８１）。プロトコル決定部２８は、高速通信プロトコルで現在得られているスループットを、プロトコルの変更処理の対象となりうるセッションをＴＣＰで処理した場合に得られるスループットの予測値と比較する（ステップＳ８２）。プロトコル決定部２８は、高速通信プロトコルで現在得られているスループットの方が小さい場合、新たに確立するセッションと、プロトコルの変更対象として選択したセッションをＴＣＰで処理することを決定する（ステップＳ８２でＹｅｓ、ステップＳ８３）。プロトコル決定部２８は、合計値の方が高速通信プロトコルで現在得られているスループットより小さい場合、既存のセッションのプロトコルを変更せずに、新たなセッションをＴＣＰで処理する（ステップＳ８２でＮｏ、ステップＳ８４）。
【００７８】
第２の実施形態で説明したように、既存のセッションの一部で使用するプロトコルを変更することにより、既存のセッションのスループットの合計値を最適化しつつ、ＣＰＵの利用率を低下させることができる。
【００７９】
＜第３の実施形態＞
第３の実施形態では、セッションの開始を要求する端末５からパケットを直接受信した通信装置１０ａが、セッションの処理に使用するプロトコルを決定する場合について説明する。
【００８０】
図１５は、第３の実施形態で行われる処理の例を説明するシーケンス図である。ステップＳ９１〜Ｓ９３の処理は、図８を参照しながら説明したステップＳ１〜Ｓ３の処理と同様である。宛先特定部２４ａは、端末５ａからセッション接続要求を受信すると、新たなセッションの確立をセッション監視部２５ａに通知する（ステップＳ９４）。セッション監視部２５ａはプロトコル決定部２８ａに対して新たに確立するセッションの処理に使用するプロトコルの判定を要求する（ステップＳ９５）。ステップＳ９６〜Ｓ１０３で行われる処理は、図８を参照しながら説明したステップＳ１０〜Ｓ１７と同様の処理である。
【００８１】
宛先特定部２４ａは、新たに接続されるセッションに関するパケットの振り分け先がプロトコル変換部であることが通知されると、セッションの確立に使用するパケットを高速通信プロトコル処理部２２ｂへ出力する（ステップＳ１０３でＮｏ）。この場合、セッションの確立に使用するパケットの宛先は通信装置１０ｂに指定されている。そこで、高速通信プロトコル処理部２２ａは、通信装置１０ｂに対して、高速通信プロトコルでパケットを送信することにより、通信装置１０ｂとの間での高速通信プロトコルによるセッションを生成する（ステップＳ１０５）。また、通信装置１０ａ中の高速通信プロトコル処理部２２ａは、セッション管理テーブル３２ａに以下のエントリを追加する。
セッション番号：Ｓｅ２
接続元アドレス：端末５ａのアドレス
接続先アドレス：通信装置１０ｂのアドレス
プロトコル    ：高速通信プロトコル
【００８２】
通信装置１０ｂは、通信装置１０ａとの間で高速通信プロトコルによるセッションが生成されると、端末５ｂとの間でＴＣＰセッションを確立する（ステップＳ１０６）。さらに、高速通信プロトコル処理部２２ｂは、新たに生成されたセッションに関する情報を、以下のようにセッション管理テーブル３２ｂに追加する。
セッション番号：Ｓｅ２
接続元アドレス：通信装置１０ａのアドレス
接続先アドレス：端末５ｂのアドレス
プロトコル    ：高速通信プロトコル
このため、端末５ａと端末５ｂの間の通信は、通信装置１０ａと通信装置１０ｂの間の高速通信プロトコルによるセッションを介して行われる。
【００８３】
一方、宛先特定部２４ａは、新たに接続されるセッションがＴＣＰ処理部２１ａで処理されることが通知されると、セッションの確立に使用するパケットをＴＣＰ処理部２１ａへ出力する（ステップＳ１０３でＹｅｓ、ステップＳ１０４）。この場合、セッションの確立に使用するパケットの宛先は端末５ｂに指定されている。ＴＣＰ処理部２１ａは、端末５ｂに対して、ＴＣＰでパケットを送信することにより、端末５ｂとの間でのＴＣＰによるセッションを生成する（ステップＳ１０７）。通信装置１０ｂのＴＣＰ処理部２１ｂは、端末５ａから端末５ｂに至るＴＣＰセッションの転送処理を行うと、適宜、セッション管理テーブル３２ｂを更新する。このため、新たに生成されたセッションの情報がセッション管理テーブル３２ｂに記録される。
【００８４】
セッション確立後の処理は、第１の実施形態と同様である。すなわち、通信装置１０ａは、セッション管理テーブル３２ａに従って、通信装置１０ｂへの転送処理に使用するプロトコルを特定する。また、通信装置１０ｂもセッション管理テーブル３２ｂを用いてセッションの処理に使用するプロトコルを決定する。
【００８５】
第３の実施形態に示すように、端末５からセッション確立要求を受信した通信装置１０がプロトコルを決定する場合、図８を参照しながら説明した第１の実施形態での処理に比べて制御信号の数が少なくなる。このため、ネットワークにかかる負担を軽減することができる。
【００８６】
＜第４の実施形態＞
第４の実施形態では、通信装置１０が複数の高速通信プロトコルを使用することができる場合の処理を説明する。
【００８７】
図１６は、スループットの予測方法の例を説明する図である。通信装置１０が複数の高速通信プロトコルを使用することができる場合、スループットテーブル３４には、ＴＣＰの他に、通信装置１０が使用可能な高速通信プロトコルの各々についてのスループットの予測に使用可能な情報が含まれている。以下、図１６に例を示すように、プロトコルＸとプロトコルＹの両方が、通信装置１０で使用される高速通信プロトコルであるとする。この場合、スループットテーブル３４には、ＴＣＰ、プロトコルＸ、プロトコルＹの各々についてのスループットの計算用のデータが含まれている。
【００８８】
プロトコル決定部２８は、計測部２６から取得した回線の特性パラメータを用いて、各プロトコルでのスループットを線形補間処理によって求めることができる。例えば、スループットを予測する回線でのＲＴＴが８０ｍｓ、パケットロス率が０.０５％であるとする。プロトコル決定部２８は、各プロトコルについて、セッション管理テーブル３２の中から、処理対象の回線よりもＲＴＴが大きくパケットロス率も大きい場合と、処理対象の回線よりもＲＴＴが大きくパケットロス率が小さい場合のスループットを特定する。さらに、プロトコル決定部２８は、各プロトコルについて、処理対象の回線よりもＲＴＴが小さくパケットロス率も大きい場合と、処理対象の回線よりもＲＴＴが小さくパケットロス率が小さい場合のスループットも特定する。図１６の例では、各プロトコルについて、ＲＴＴ＝５０ｍｓでパケットロス率＝０．０１％の場合と、ＲＴＴ＝１００ｍｓでパケットロス率＝０．０１％の場合でのスループットが特定されている。さらに、各プロトコルについて、ＲＴＴ＝５０ｍｓでパケットロス率＝０．１％の場合と、ＲＴＴ＝１００ｍｓでパケットロス率＝０．１％の場合でのスループットも特定されている。これらの値を用いて、図９を参照しながら説明した計算と同様の計算処理により、各プロトコルを用いた時のスループットが推定される。プロトコル決定部２８は、推定したスループットを用いて、新たに確立されるセッションでのスループットを決定する。新たに確立されるセッションでのスループットを決定する手順を、図１７を参照しながら時系列に沿って説明する。
【００８９】
図１７は、第４の実施形態で行われる処理の例を説明するシーケンス図である。ステップＳ１１１〜Ｓ１２０で行われる処理は、図８のステップＳ１〜Ｓ１０を参照しながら説明した処理と同様である。プロトコル決定部２８ｂは、計測部２６ｂから通信装置１０ａとの間の回線の状態についての計測結果を取得する（ステップＳ１２１）。プロトコル決定部２８ｂは、残りのＣＰＵリソースを全て高速通信プロトコルの処理に使用した場合の上限スループットを、使用可能な高速通信プロトコルの各々について予測する（ステップＳ１２２）。図１６を参照しながら説明したように、通信装置１０がプロトコルＸとプロトコルＹを使用できるとする。この場合、プロトコル決定部２８ｂは、残りのＣＰＵリソースの全てがプロトコルＸの処理に使用されたときの上限スループットと、残りのＣＰＵリソースの全てがプロトコルＹの処理に使用されたときの上限スループットを求める。次に、プロトコル決定部２８ｂは、計測部２６ｂから取得した値と、スループットテーブル３４ｂを用いて、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットを求める。プロトコル決定部２８ｂは、さらに、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットを、ＴＣＰ、プロトコルＸ、および、プロトコルＹを併用した場合のスループットの予測値として計算する（ステップＳ１２３）。ここで、予測値は、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットと現在通信中のセッションで得られているスループットの合計値である。
【００９０】
プロトコル決定部２８ｂは、各高速通信プロトコルを用いた場合に得られるスループットの上限値と、ステップＳ１２３で計算した予測値を比較する（ステップＳ１２４）。ここで、新セッションにＴＣＰを用いた場合のスループットの予測値が、新セッションにいずれの高速通信プロトコルを用いた場合のスループットの上限値のいずれかよりも高いとする（ステップＳ１２５でＹｅｓ）。この場合、プロトコル決定部２８ｂは、新セッションの処理に使用するプロトコルを、ＴＣＰと各高速通信プロトコルの中で、合計スループットが最も高くなるように選択する。プロトコル決定部２８ｂは、選択したプロトコルをセッション監視部２５ｂに通知する（ステップＳ１２６）。
【００９１】
一方、ステップＳ１２５において、ＴＣＰを用いた場合のスループットが低く、予測値がいずれの高速通信プロトコルを用いた場合のスループットの上限値よりも低いとする（ステップＳ１２５でＮｏ）。この場合、プロトコル決定部２８ｂは、通信装置１０ａと通信装置１０ｂの間の通信にいずれかの高速通信プロトコルを使用することを決定する。プロトコル決定部２８ｂは、各高速通信プロトコルについて、新セッションの処理に使用した場合に得られるスループットを求める。各高速通信プロトコルを用いた場合に、新たに確立するセッションについて得られるスループットの計算方法は、図１６を参照しながら説明したとおりである。プロトコル決定部２８ｂは、新たなセッションについて得られるスループットが大きい方のプロトコルを新セッションに使用することを決定する（ステップＳ１２７）。プロトコル決定部２８ｂは、選択したプロトコルをセッション監視部２５ｂに通知する（ステップＳ１２８）。セッション監視部２５ｂは、プロトコル決定部２８ｂから通知されたプロトコルをセッション管理テーブル３２ｂに記録する。ステップＳ１２９以降で行われる処理は、図８のステップＳ１６以降で行われる処理と同様である。
【００９２】
図１８は、スループットの予測値の例を説明する図である。図１８を参照しながら、図１７のステップＳ１２５〜Ｓ１２８で行われる処理の詳細を説明する。図１８のＡは、残りのＣＰＵリソースをプロトコルＸの処理に使用した場合に得られるスループットの上限値であり、図１８のＢは、残りのＣＰＵリソースをプロトコルＹの処理に使用した場合に得られるスループットの上限値である。また、図１８のＣは、現在の処理で得られているスループットである。また、通信装置１０において、現在ｎ本のセッションが処理されているとする。
【００９３】
図１８のα〜γは、新たに確立するセッションの処理にＴＣＰを用いたときに得られるスループットの例である。通信装置１０ａと通信装置１０ｂの間の回線の通信状況が劣悪である場合、新セッションがＴＣＰで確立された場合のスループットは、αに示すように小さな値となる。この場合、現在通信中のｎ本のセッションでのスループットの合計値Ｃと新セッションをＴＣＰで処理した場合に得られるスループットとの和は、ＡとＢのいずれよりも小さな値である。従って、図１７のステップＳ１２７で説明したように、プロトコル決定部２８ｂは、通信装置１０ａと通信装置１０ｂの間の通信にいずれかの高速通信プロトコルを使用することを決定する。プロトコル決定部２８ｂは、各高速通信プロトコルについて、新セッションの処理に使用した場合に得られるスループットを求め、求めたスループットが大きい方のプロトコルを新セッションに使用する。
【００９４】
次に、図１８のβとγを参照しながら、図１７のステップＳ１２５において、新セッションにＴＣＰを用いたときのスループットは、いずれかの高速プロトコルで得られるスループットの上限よりも大きいと判定されるケースについて説明する。
【００９５】
図１８のβでは、新セッションにＴＣＰを用いたときのスループットは、残りのＣＰＵリソースでプロトコルＹを用いた処理をする場合に得られるスループットの上限（Ｂ）よりも大きい。また、新セッションにＴＣＰを用いたときのスループットは、残りのＣＰＵリソースでプロトコルＸを用いた処理をする場合に得られるスループットの上限（Ａ）よりは小さい。この場合、新セッションにプロトコルＸを用いると全セッションでのスループットの合計値が最大となるため、プロトコル決定部２８ｂは、新たなセッションをプロトコルＸで処理することを決定する。
【００９６】
図１８のγでは、新セッションにＴＣＰを用いたときのスループットは、残りのＣＰＵリソースでプロトコルＸを用いた処理をする場合に得られるスループットの上限（Ａ）よりも大きい。この場合、新セッションにＴＣＰを用いると全セッションでのスループットの合計値が最大となるため、プロトコル決定部２８ｂは、新たなセッションをプロトコルＸで処理することを決定する。
【００９７】
第４の実施形態で説明したように、通信装置１０が複数の高速通信プロトコルを使用することができる場合、プロトコル決定部２８は、通信中のセッションのスループットの合計値が最大になるように、新たなセッションの処理に使用するプロトコルを選択する。このため、複数の高速通信プロトコルが用いられる通信装置１０においても、高スループットが得られ、効率的に通信が行われる。
【００９８】
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００９９】
第２の実施形態において、ＣＰＵの利用率が閾値Ｔｈ２を超えたときにプロトコルを変更する対象として選択されるセッションの数は任意である。また、プロトコルを変更する対象として選択されるセッションの数が複数である場合、プロトコルの変更によって、ＣＰＵ利用率が閾値Ｔｈ２を大きく下回る可能性もある。この場合、プロトコルの変更により、新たに高速通信プロトコルによるセッションの処理が可能になるため、新たに確立されるセッションを、高速通信プロトコルによって処理しても良い。新たに確立されるセッションが高速通信プロトコルによって処理されうる場合、新たに確立されるセッションについても、高速通信プロトコルを用いた場合とＴＣＰを用いた場合のスループットの差が求められうる。この場合、ＴＣＰでのスループットと高速通信プロトコルに経関した場合のスループットの差分が、新たに確立されるセッションにおいて大きければ、新たなセッションが高速通信プロトコルで処理されうる。
【０１００】
以上の説明に使用したテーブルは一例であり、テーブルに含まれる情報要素は実装に応じて変更され得る。さらに、パケットフォーマットも一例であり、実装に応じて変更されることもある。
【０１０１】
上述の第１〜第４の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
セッションの接続要求を受信する通信部と、
通信中のセッションの処理にかかる処理負荷を計算する計算部と、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定する決定部
を備え、
前記通信部は、前記決定部が決定したプロトコルを用いて前記複数のセッションを処理する
ことを特徴とする通信装置。
（付記２）
前記通信部が前記接続要求を受信すると、前記決定部は、
前記接続要求により接続が要求された要求セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットである第１の予測値を求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記要求セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする付記１に記載の通信装置。
（付記３）
前記決定部は、
前記要求セッションの処理に、前記第１のプロトコルよりも処理負荷が小さく、前記第２のプロトコルよりも処理負荷の大きい第３のプロトコルを用い、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットを第３の予測値として求め、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも大きい場合、前記要求セッションの処理に前記第２のプロトコルを使用し、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも小さく、前記第３の予測値が前記第２の予測値よりも大きい場合、前記要求セッションの処理に前記第３のプロトコルを使用する
ことを特徴とする付記２に記載の通信装置。
（付記４）
前記決定部は、
前記複数のセッションの各々について、前記第１のプロトコルで処理したときと前記第２のプロトコルで処理したときの当該セッションのスループットの差分を計算し、
前記差分が相対的に小さいセッションである対象セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記対象セッション以外の処理に前記第１のプロトコルを使用する場合のスループットを第１の予測値として求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記対象セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする付記１に記載の通信装置。
（付記５）
前記要求セッションは、前記接続要求を生成した端末が他の通信装置と前記通信装置を介して、宛先と通信するために使用され、
前記通信部は、前記接続要求を前記他の通信装置から受信し、
前記開始要求により接続が要求された要求セッションについて前記決定部が決定したプロトコルを、前記要求セッションを識別する情報と共に、前記他の通信装置に通知する
ことを特徴とする付記１〜４のいずれか１項に記載の通信装置。
（付記６）
前記要求セッションは、前記接続要求を生成した端末が前記通信装置と他の通信装置を介して、宛先と通信するために使用され、
前記通信部は、前記開始要求を前記端末から受信し、
前記複数セッションの各々を、前記決定部が決定したプロトコルを用いて、前記他の通信装置に転送する
ことを特徴とする付記１〜４のいずれか１項に記載の通信装置。
（付記７）
セッションの接続要求を受信し、
通信中のセッションの処理にかかる処理負荷を計算し、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定し、
決定したプロトコルを用いて前記複数のセッションを処理する
処理を通信装置が行うことを特徴とする通信処理方法。
（付記８）
前記接続要求により接続が要求された要求セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットである第１の予測値を求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記要求セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする付記７に記載の通信処理方法。
（付記９）
前記要求セッションの処理に、前記第１のプロトコルよりも処理負荷が小さく、前記第２のプロトコルよりも処理負荷の大きい第３のプロトコルを用い、前記複数のセッションのうちの前記要求セッション以外を前記第１のプロトコルで処理する場合のスループットを第３の予測値として求め、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも大きい場合、前記要求セッションの処理に前記第２のプロトコルを使用し、
前記第１の予測値が前記第２の予測値と前記第３の予測値のいずれよりも小さく、前記第３の予測値が前記第２の予測値よりも大きい場合、前記要求セッションの処理に前記第３のプロトコルを使用する
ことを特徴とする付記８に記載の通信処理方法。
（付記１０）
前記複数のセッションの各々について、前記第１のプロトコルで処理したときと前記第２のプロトコルで処理したときの当該セッションのスループットの差分を計算し、
前記差分が相対的に小さいセッションである対象セッションの処理に前記第２のプロトコルを使用し、前記複数のセッションのうちの前記対象セッション以外の処理に前記第１のプロトコルを使用する場合のスループットを第１の予測値として求め、
前記第１の予測値が、前記複数のセッションを前記第１のプロトコルで処理する場合に得られるスループットである第２の予測値を超えると、前記対象セッションを前記第２のプロトコルで処理することを決定する
ことを特徴とする付記７に記載の通信処理方法。
（付記１１）
セッションの接続要求を受信し、
通信中のセッションの処理にかかる処理負荷を計算し、
前記処理負荷が閾値を超えたときに前記接続要求により接続が要求された要求セッションと前記通信中のセッションとを含む複数のセッションを、第１のプロトコルで処理する場合に得られるスループットと、前記複数のセッションの一部に前記第１のプロトコルよりも処理負荷の小さい第２のプロトコルを用いて前記複数のセッションを処理したときに得られるスループットを比較した結果を用いて、前記複数のセッションの各々の処理に使用するプロトコルを決定し、
決定したプロトコルで前記複数のセッションを処理する
処理を通信装置に実行させることを特徴とする通信プログラム。
【符号の説明】
【０１０２】
５  端末
１０  通信装置
１１  通信部
２０  制御部
２１  ＴＣＰ処理部
２２  高速通信プロトコル処理部
２３  プロトコル変換部
２４  宛先特定部
２５  セッション監視部
２６  計測部
２７  負荷計算部
２８  プロトコル決定部
３０  記憶部
３１  経路状況テーブル
３２  セッション管理テーブル
３３  転送先テーブル
３４  スループットテーブル
１０１  プロセッサ
１０２  メモリ
１０３  ストレージ
１０４  バス
１０５  ネットワークインタフェース
【図１】
2016208315.tif 000003
【図２】
2016208315.tif 000004
【図３】
2016208315.tif 000005
【図４】
2016208315.tif 000006
【図５】
2016208315.tif 000007
【図６】
2016208315.tif 000008
【図７】
2016208315.tif 000009
【図８】
2016208315.tif 000010
【図９】
2016208315.tif 000011
【図１０】
2016208315.tif 000012
【図１１】
2016208315.tif 000013
【図１２】
2016208315.tif 000014
【図１３】
2016208315.tif 000015
【図１４】
2016208315.tif 000016
【図１５】
2016208315.tif 000017
【図１６】
2016208315.tif 000018
【図１７】
2016208315.tif 000019
【図１８】
2016208315.tif 000020