(57)【要約】【課題】ＳＹＮパケットの再送による、単位時間当たりのコネクション数の減少を抑制する。【解決手段】通信制御システムは、受信部と、パケット識別部と、送信部と、バッファ管理部と、を備える。通信制御システムは、ネットワーク上でＴＣＰ（Transmission  Control  Protocol）を用いてコネクションを確立する情報処理装置とサーバとの間の通信を制御する。受信部は、情報処理装置とサーバとの間で送受信されるパケットを受信する。パケット識別部は、受信するパケットのうち、情報処理装置からサーバへ送信されるＳＹＮ（Synchronization）パケットをバッファに振り分ける。送信部は、バッファに格納されるＳＹＮパケットを所定の送信レートでサーバに送信する。バッファ管理部は、受信したパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄する。【選択図】図２
2017034627.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上でＴＣＰ（Transmission  Control  Protocol）を用いてコネクションを確立する情報処理装置とサーバとの間で送受信されるパケットを受信する受信部と、
前記受信部が受信するパケットのうち、前記情報処理装置から前記サーバへ送信されるＳＹＮ（Synchronization）パケットをバッファに振り分けるパケット識別部と、
前記バッファに格納されるＳＹＮパケットを所定の送信レートで前記サーバに送信する送信部と、
前記受信部が受信したパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄するバッファ管理部と、
を備えることを特徴とする通信制御システム。
【請求項２】
前記バッファ管理部は、前記受信部が受信したパケットのうち、前記情報処理装置から前記サーバへ送信されるＳＹＮパケットのシーケンス番号が、前記バッファに格納されるＳＹＮパケットのシーケンス番号と同一である場合、前記受信部が受信したＳＹＮパケットを破棄することを特徴とする請求項１に記載の通信制御システム。
【請求項３】
前記バッファ管理部は、前記受信部が受信したパケットのうち、前記バッファに格納され次に前記バッファから前記サーバに送信されるＳＹＮパケットのシーケンス番号が、前記バッファに格納される他のＳＹＮパケットのシーケンス番号と同一である場合、バッファに格納される当該他のＳＹＮパケットを破棄することを特徴とする請求項１に記載の通信制御システム。
【請求項４】
前記バッファ管理部は、前記受信部が受信したパケットのうち、前記サーバから前記情報処理装置に送信されるＡＣＫ（Acknowledgement）パケットのシーケンス番号が、前記バッファに格納されるＳＹＮパケットのシーケンス番号と同一である場合、前記バッファに格納されるＳＹＮパケットを破棄することを特徴とする請求項１に記載の通信制御システム。
【請求項５】
前記受信部が受信するＳＹＮパケットの受信レートを検出する検出部をさらに備え、
前記バッファ管理部は、前記検出部が検出した受信レートが第１の閾値を超えた場合、第１の閾値を超えてから第１の時間後に、前記バッファに格納されるパケットを破棄することを特徴とする請求項１に記載の通信制御システム。
【請求項６】
前記受信部が受信するＳＹＮパケットの受信レートを検出する検出部をさらに備え、
前記バッファ管理部は、前記検出部が検出した受信レートが第１の閾値を超えた場合、次に受信レートが第２の閾値を超えると予測される第２の時間を算出し、前記検出部が当該第２の時間に検出した受信レートが前記第２の閾値を超えた場合、前記バッファに格納されるパケットを破棄することを特徴とする請求項１に記載の通信制御システム。
【請求項７】
前記バッファ管理部は、前記検出部が前記第２の時間に検出した受信レートが前記第２の閾値を超えた場合、前記バッファに格納されるパケットを破棄し、次に受信レートが第３の閾値を超えると予測される第３の時間を算出し、前記検出部が当該第３の時間に検出した受信レートが前記第３の閾値を超えた場合、前記バッファに格納されるパケットを再度破棄することを特徴とする請求項６に記載の通信制御システム。
【請求項８】
ネットワーク上でＴＣＰを用いてコネクションを確立する情報処理装置とサーバとの間の通信を制御する通信制御方法であって、
前記情報処理装置と前記サーバとの間で送受信されるパケットを受信する受信工程と、
前記受信工程において受信されたパケットのうち、前記情報処理装置から前記サーバへ送信されるＳＹＮパケットをバッファに振り分けるパケット識別工程と、
前記バッファに格納されるＳＹＮパケットを所定の送信レートで前記サーバに送信する送信工程と、
前記受信工程において受信されたパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄するバッファ管理工程と、
をコンピュータが実行することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御システムおよび通信制御方法に関する。
【背景技術】
【０００２】
ＴＣＰ（Transmission  Control  Protocol）を用いた情報通信が広く利用されている。ＴＣＰを利用して、ユーザ端末とアプリケーション（ＡＰＬ）サーバとの間で通信を実行する際には、通常、スリーウェイハンドシェイクと呼ばれる処理が実行される。スリーウェイハンドシェイクにおいては、まず、一方の情報処理装置が他方の情報処理装置に通信接続（コネクション）の確立を要求するＳＹＮ（Synchronization）パケットを送信する。他方の情報処理装置は、ＳＹＮパケットに応じて接続を許可するためＳＹＮ−ＡＣＫ（Acknowledgement）パケットを送信する。ＳＹＮ−ＡＣＫパケットを受信した一方の情報処理装置が接続開始を示すＡＣＫパケットを送信する。これで、ＴＣＰを用いた通信が開始する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】木村  明寛、西山  聡史、大坂  健、工藤  伊知郎、「IoTサービス提供のためのサーバ数を削減するNW機能の提案」、信学技報、pp.  379-384
【非特許文献２】V.  Paxson,  M.  Allman,  J.  Chu  &  M.  Sargent,  “Computing  TCP’s  Retransmission  Timer”,  Internet  Engineering  Task  Force  (IETF),  2011
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、コネクションの確立を要求するＳＹＮパケットの送信元は、所定期間にわたってＳＹＮパケットに応答するＳＹＮ−ＡＣＫパケットを受信しない場合、ＳＹＮパケットを再送する。送信元は、ＳＹＮ−ＡＣＫパケットを受信するまで、又は、所定の回数再送するまで、所定の間隔で繰り返しＳＹＮパケットを再送する。
【０００５】
複数のユーザ端末との間で通信を実行するＡＰＬサーバに対して、複数のユーザ端末から繰り返しＳＹＮパケットが再送されると、送信されるパケット中に占める再送パケットの割合が高くなる。このような場合、ＡＰＬサーバがユーザ端末との間で確立できる単位時間当たりのコネクション数が減少する場合がある。
【０００６】
開示の実施形態は、上記に鑑みてなされたものであり、ＳＹＮパケットの再送による、単位時間当たりのコネクション数の減少を抑制することができる通信制御システムおよび通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
開示する通信制御システムおよび通信制御方法は、ネットワーク上でＴＣＰを用いてコネクションを確立する情報処理装置とサーバとの間の通信を制御する。受信部は、情報処理装置とサーバとの間で送受信されるパケットを受信する。パケット識別部は、受信するパケットのうち、情報処理装置からサーバへ送信されるＳＹＮパケットをバッファに振り分ける。送信部は、バッファに格納されるＳＹＮパケットを所定の送信レートでサーバに送信する。バッファ管理部は、受信したパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄する。
【発明の効果】
【０００８】
開示する通信制御システムおよび通信制御方法は、ＳＹＮパケットの再送による、単位時間当たりのコネクション数の減少を抑制することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係る通信制御システムの構成の一例を示す図である。
【図２】図２は、第１の実施形態に係る通信制御装置の構成の一例を示す図である。
【図３】図３は、第１の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図４】図４は、第２の実施形態に係る通信制御装置の構成の一例を示す図である。
【図５】図５は、第２の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図６】図６は、第３の実施形態に係る通信制御装置の構成の一例を示す図である。
【図７】図７は、第３の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図８】図８は、第４の実施形態に係る通信制御装置の構成の一例を示す図である。
【図９】図９は、第４の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図１０】図１０は、第５の実施形態に係る通信制御処理の前提となるＳＹＮパケットの再送間隔について説明するための図である。
【図１１】図１１は、第５の実施形態に係る通信制御装置の構成の一例を示す図である。
【図１２】図１２は、第５の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図１３】図１３は、第６の実施形態に係る通信制御装置の構成の一例を示す図である。
【図１４】図１４は、第６の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。
【図１５】図１５は、第６の実施形態に係る通信制御処理において、受信レートが閾値を超えるタイミングを予測する手法について説明するための図である。
【図１６】図１６は、第６の実施形態に係る通信制御処理において、閾値を設定する手法について説明するための図である。
【図１７】図１７は、各実施形態に係る通信制御装置の機能を複数の装置上に実装する例を説明するための図である。
【図１８】図１８は、ユーザ端末からＡＰＬサーバにＳＹＮパケットが送信される場合の処理の例を説明するための図である。
【図１９】図１９は、ユーザ端末からＡＰＬサーバにＳＹＮパケットが再送される場合の処理の例を説明するための図である。
【図２０】図２０は、通信制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、開示するシステムおよび方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。また、各実施形態は適宜組み合わせることができる。
【００１１】
（既存の手法によるＳＹＮパケット再送処理の一例）
まず、図１８および図１９を参照し、実施形態に係る通信制御システム及び通信制御方法の前提として、従来のＴＣＰを用いたコネクションの確立処理について説明する。図１８は、ユーザ端末からＡＰＬサーバにＳＹＮパケットが送信される場合の処理の例を説明するための図である。また、図１９は、ユーザ端末からＡＰＬサーバにＳＹＮパケットが再送される場合の処理の例を説明するための図である。
【００１２】
図１８の例では、ネットワークＡを介してユーザ端末１〜４が、ＡＰＬサーバ５と接続される。また、ユーザ端末１〜４とＡＰＬサーバ５との間には、転送装置６、バッファ７および送信レート制御装置８が接続されている。
【００１３】
ユーザ端末１〜４は、それぞれネットワークＡを介してＡＰＬサーバ５と通信を開始するに当たり、まずコネクションを確立するためにＳＹＮパケットを送信する。ＡＰＬサーバ５は、ＳＹＮパケットに対する応答確認としてＡＣＫパケットを送り返す。ユーザ端末１〜４は、ＡＣＫパケットを受信すると、コネクションが確立したものとみなし、受信したＡＣＫパケットに対する応答としてＡＣＫパケットをＡＰＬサーバ５に送信する。また、ユーザ端末１〜４は、ＡＰＬサーバ５に対してＡＰＬ層パケットを送信する。図１８中、ユーザ端末ｎが送信するＳＹＮパケットはＳＹＮ（ｎ）と表示する。また、ユーザ端末ｎが送信するＡＣＫパケットはＡＣＫ（ｎ）と表示する。また、ユーザ端末ｎが送信するＡＰＬ層パケットはＡＰＬ（ｎ）と表示する。
【００１４】
送信されるＳＹＮパケットには各々、シーケンス番号が付与される。たとえば、ユーザ端末１が送信するＳＹＮパケットにはシーケンス番号「１」が付与される。シーケンス番号「１」のＳＹＮパケットに応答してＡＰＬサーバ５が送信する確認応答であるＡＣＫパケットのシーケンス番号も「１」となる。
【００１５】
転送装置６は、ユーザ端末１〜４が送信するパケットを受信し、ＳＹＮパケットを抽出してバッファ７に格納する。転送装置６は、ＳＹＮパケット以外のパケットたとえばＡＰＬ層パケットやＡＣＫパケットはバッファ７に格納せずにそのままＡＰＬサーバ５に送信する。
【００１６】
バッファ７は、ＦＩＦＯ（First  In  First  Out）メモリである。バッファ７に格納されたＳＹＮパケットは、送信レート制御装置８によって所定の送信レートでバッファ７からＡＰＬサーバ５に送信される。
【００１７】
ユーザ端末１〜４は、ＳＹＮパケットを送信した後、所定時間が経過してもＳＹＮパケットに応答するＡＣＫパケットを受信しない場合、ＳＹＮパケットを再送する。ＴＣＰにおいてＳＹＮパケットを再送する再送間隔の初期値は、各ユーザ端末の実装に依存して決定される。たとえば、Ｗｉｎｄｏｗｓ（登録商標）系のオペレーションシステム（ＯＳ）であれば３秒、Ｌｉｎｕｘ（登録商標）系のＯＳであれば１秒である。２回目以降の再送間隔はＲＦＣ（Request  for  Comments）に規定されるＴＣＰの再送アルゴリズムに従って設定される。２回目以降の再送間隔はたとえば、前の再送間隔の２倍に設定される。転送装置６は、初回のＳＹＮパケットと再送パケットとを区別せず、すべてバッファ７に振り分ける。
【００１８】
ＡＰＬサーバ５は、ＳＹＮパケットを受信すると、確立済みのコネクション数が予め定めた上限に達していない場合、ＡＰＬ層パケット処理用のリソースを確保して、ＡＣＫパケットを送信する。ＡＰＬサーバ５は、確立済みのコネクション数が予め定めた上限に達している場合、ＳＹＮパケットを破棄し、ＡＣＫパケットは送信しない。
【００１９】
図１９の例では、ユーザ端末２がＳＹＮパケット（ＳＹＮ（２））を送信しているが、ＡＰＬサーバ５には到達していない。ユーザ端末２はＳＹＮパケット（ＳＹＮ（２））に応答するＡＣＫパケットを未受信であるため、所定時間が経過すると、ＳＹＮパケットを再送する。再送されるＳＹＮパケットは、転送装置６によってバッファ７に振り分けられる。バッファ７に振り分けられたＳＹＮパケットは送信レート制御装置８の制御のもと、所定の送信レートでＡＰＬサーバ５に送信される。このため、ユーザ端末１〜４のそれぞれから同様のタイミングでＳＹＮパケットが送信されると、所定時間内にＡＰＬサーバ５から応答するＡＣＫパケットを受信しないユーザ端末がでてくる。バッファ７からの送信レートは一定であるため、ＡＣＫパケットを未受信のユーザ端末から再送されるＳＹＮパケットがバッファ７内のＳＹＮパケットに占める割合が増加していく。結果的に、単位時間当たりにＡＰＬサーバ５が受信する初回送信分のＳＹＮパケットの数が減少する。
【００２０】
ＡＰＬサーバ５は、受信したＳＹＮパケットのシーケンス番号をチェックする。そして、同一のシーケンス番号をもつＡＣＫパケットを送信済みである場合、ＡＰＬサーバ５は、受信したＳＹＮパケットを破棄する。ＡＰＬサーバ５が受信するＳＹＮパケットに占める再送パケットの割合が増加すると、単位時間当たりに確立されるユーザ端末１〜４とＡＰＬサーバ５間に確立されるコネクション数が減少する。
【００２１】
（第１の実施形態）
図１は、第１の実施形態に係る通信制御システムの構成の一例を示す図である。第１の実施形態に係る通信制御システム１Ａにおいては、通信制御装置１０は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄおよびゲートウェイ３０と、ネットワーク４０を介して接続される。情報処理装置２０Ｂ，２０Ｃ，２０Ｄは、ゲートウェイ３０およびネットワーク４０を介して通信制御装置１０と接続される。また、通信制御装置１０は、サーバ５０とネットワーク６０を介して接続される。なお、図１に示す構成は一例にすぎず、通信制御装置１０が、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄとサーバ５０とを接続するネットワーク上に配置されればよく、具体的な構成や各装置の数は特に限定されない。
【００２２】
情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄはネットワーク４０，６０を介してサーバ５０との間で情報の送受信を行う。情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄはたとえば、ＩｏＴ（Internet  of  Things）端末またはＭ２Ｍ（Machine  to  Machine）端末等である。
【００２３】
ゲートウェイ３０は、ネットワーク４０を他のネットワークに接続する。ゲートウェイ３０はたとえば、ＩｏＴゲートウェイ、Ｍ２Ｍゲートウェイ等である。
【００２４】
ネットワーク４０，６０はたとえば、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）等である。また、ネットワーク４０，６０は無線ネットワークであっても有線ネットワークであっても両者の組み合わせであってもよい。
【００２５】
サーバ５０は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄとの間でコネクションを確立し、情報の送受信を行う。サーバ５０はたとえばＡＰＬサーバである。
【００２６】
（通信制御装置の構成の一例）
図２は、第１の実施形態に係る通信制御装置の構成の一例を示す図である。通信制御装置１０は、図１に示すように、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄとサーバ５０との間の通信経路上に配置される。通信制御装置１０は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄとサーバ５０との間の通信を制御する。たとえば、通信制御装置１０は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄから送信されるＳＹＮパケットをサーバ５０に転送する。また、通信制御装置１０は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄから再送されるＳＹＮパケットによる、サーバ５０と情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ間の単位時間当たりのコネクション数の減少を抑制するよう通信を制御する。
【００２７】
図２に示すように通信制御装置１０は、通信部１１０と、制御部１２０と、記憶部１３０と、を備える。
【００２８】
通信部１１０は、ネットワーク４０，６０を介して送信される情報を送受信する。
【００２９】
制御部１２０は、通信制御装置１０の各部の処理を制御する。制御部１２０はたとえば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）等で構成することができる。制御部１２０は、パケット識別部１２１と、バッファ管理部１２２とを有する。
【００３０】
パケット識別部１２１は、通信部１１０を介して受信されるパケットの種類を識別する。パケット識別部１２１は、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄからサーバ５０宛に送信されるＳＹＮパケットを識別する。そして、パケット識別部１２１は識別したＳＹＮパケットを後述するバッファ１３１に格納する。また、パケット識別部１２１は、ＳＹＮパケット以外のパケットを、通信部１１０を介して宛先に送信する。パケット識別部１２１は、送信元ＩＰアドレス、送信先ＩＰアドレス等から情報処理装置２０Ａ〜２０Ｄおよびサーバ５０を識別する。また、パケット識別部１２１は、パケットのＴＣＰヘッダのＳＹＮフラグに基づきＳＹＮパケットを識別する。
【００３１】
バッファ管理部１２２は、通信部１１０を介して受信したパケットが所定の条件を満たす場合に、バッファ１３１に格納されるＳＹＮパケットの一部もしくは全部または受信したパケットを破棄する。
【００３２】
バッファ管理部１２２はまた、バッファ１３１に格納されたＳＹＮパケットを所定の送信レートで通信部１１０を介してサーバ５０に送信する。
【００３３】
記憶部１３０は、通信制御装置１０における各部の処理に使用する情報や処理の結果生成される情報を記憶する。記憶部１３０はたとえば、ハードディスク、光ディスク等の記憶装置でもよい。また、記憶部１３０は、ＲＡＭ（Random  Access  Memory）やフラッシュメモリ等の半導体メモリであってもよい。記憶部１３０はバッファ１３１を有する。
【００３４】
バッファ１３１は、パケット識別部１２１が識別したＳＹＮパケットを格納する。たとえばバッファ１３１は、ＦＩＦＯ（First  In  First  Out）メモリである。バッファ１３１は、パケット識別部１２１が識別したＳＹＮパケットを受信した順番に格納する。格納されたＳＹＮパケットは、先に格納されたパケットから順に所定の送信レートで通信部１１０を介してサーバ５０に送信される。
【００３５】
（第１の実施形態の通信制御処理の流れの一例）
図３は、第１の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。図３に示すように、通信制御装置１０の通信部１１０はパケットを受信する（ステップＳ３１）。パケット識別部１２１は、受信したパケットの中から、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄからサーバ５０宛のＳＹＮパケットを識別する。そして、パケット識別部１２１は識別したＳＹＮパケットをバッファ１３１に振り分ける（ステップＳ３２）。バッファ管理部１２２は、通信部１１０が受信したパケットが所定の条件を満たすか否かを判定する（ステップＳ３３）。バッファ管理部１２２は、受信したパケットが所定の条件を満たすと判定した場合（ステップＳ３３、Ｙｅｓ）、バッファ１３１内のＳＹＮパケットの一部もしくは全部または受信したパケットを破棄する（ステップＳ３４）。他方、受信したパケットが所定の条件を満たさないと判定した場合（ステップＳ３３、Ｎｏ）、バッファ管理部１２２は、次の処理に進む。そして、バッファ管理部１２２は、バッファ１３１内のＳＹＮパケットを所定の送信レートでサーバ５０に送信する（ステップＳ３５）。これで、第１の実施形態に係る通信制御処理が終了する。
【００３６】
（第１の実施形態の効果）
第１の実施形態に係る通信制御システムは、ネットワーク上でＴＣＰを用いてコネクションを確立する情報処理装置とサーバとの間の通信を制御する。受信部（通信部）は、情報処理装置とサーバとの間で送受信されるパケットを受信する。パケット識別部は、受信部が受信するパケットのうち、情報処理装置からサーバへ送信されるＳＹＮパケットをバッファに振り分ける。送信部（通信部）は、バッファに格納されるＳＹＮパケットを所定の送信レートでサーバに送信する。バッファ管理部は、受信部が受信したパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄する。このため、通信制御システムは所定の条件を満たすパケットを受信した場合には、情報処理装置から送信されるＳＹＮパケットを全てサーバに送信するのではなく、送信するＳＹＮパケットを削減する。したがって、再送パケットすべてがサーバに送信されず、単位時間当たりに確立できるコネクション数の減少を抑制することができる。
【００３７】
（第２の実施形態）
第１の実施形態においては、通信制御装置１０は、受信したパケットが所定の条件を満たす場合に、バッファに格納されるＳＹＮパケットまたは受信したパケットを破棄するものとした。第２の実施形態の通信制御システムは、受信したＳＹＮパケットのシーケンス番号と同じシーケンス番号のＳＹＮパケットがすでにバッファに格納されている場合に、受信したＳＹＮパケットを破棄する。
【００３８】
図４は、第２の実施形態に係る通信制御装置の構成の一例を示す図である。第２の実施形態に係る通信制御装置１０Ａは、通信部１１０Ａと、制御部１２０Ａと、記憶部１３０Ａと、を備える。通信部１１０Ａの機能および構成は、第１の実施形態と同様である。
【００３９】
制御部１２０Ａは、パケット識別部１２１Ａとバッファ管理部１２２Ａとを備える。
【００４０】
記憶部１３０Ａは、バッファ１３１Ａを有する。記憶部１３０Ａおよびバッファ１３１Ａの構成および機能は、第１の実施形態と同様である。ただし、バッファ１３１Ａに格納されるＳＹＮパケットは、バッファ管理部１２２Ａにより管理される。
【００４１】
パケット識別部１２１Ａは、通信部１１０Ａが受信したパケットの中から、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄからサーバ５０にあてたＳＹＮパケットを識別する。そして、パケット識別部１２１Ａは、識別したＳＹＮパケットをバッファ管理部１２２Ａに渡す。
【００４２】
バッファ管理部１２２Ａは、パケット識別部１２１Ａが識別したＳＹＮパケットをバッファ１３１Ａに格納する前に、当該ＳＹＮパケットのシーケンス番号を抽出する。そして、バッファ管理部１２２Ａは、同じシーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されているか否かを判定する。同じシーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されていると判定した場合、バッファ管理部１２２Ａは、受信したＳＹＮパケットをバッファ１３１Ａに格納せず破棄する。他方、同じシーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されていないと判定した場合、バッファ管理部１２２Ａは、当該ＳＹＮパケットをバッファ１３１Ａに格納する。そして、バッファ管理部１２２Ａはバッファ１３１Ａに格納されたＳＹＮパケットを所定の送信レートで順次サーバ５０に送信する。
【００４３】
（第２の実施形態に係る通信制御処理の流れの一例）
図５は、第２の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。まず、通信部１１０Ａは、パケットを受信する（ステップＳ５１）。そして、パケット識別部１２１Ａは、受信したパケットがＳＹＮパケットか否かを判定する（ステップＳ５２）。受信したパケットがＳＹＮパケットであると判定した場合（ステップＳ５２、Ｙｅｓ）、パケット識別部１２１Ａは、ＳＹＮパケットをバッファ管理部１２２Ａに渡す。バッファ管理部１２２Ａは、ＳＹＮパケットのシーケンス番号を抽出し、同一シーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されているか否かを判定する（ステップＳ５３）。同一シーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されていると判定した場合（ステップＳ５３、Ｙｅｓ）、バッファ管理部１２２Ａは、受信したＳＹＮパケットをバッファ１３１Ａに格納せず破棄する（ステップＳ５４）。他方、同一シーケンス番号のＳＹＮパケットがバッファ１３１Ａに格納されていないと判定した場合（ステップＳ５３、Ｎｏ）、バッファ管理部１２２Ａは、受信したＳＹＮパケットをバッファ１３１Ａに格納する（ステップＳ５５）。また、受信したパケットがＳＹＮパケットではないと判定した場合（ステップＳ５２、Ｎｏ）、パケット識別部１２１Ａは、受信したパケットをバッファ１３１Ａに格納せず、通信部１１０Ａを介して宛先に送信する（ステップＳ５６）。そして、バッファ管理部１２２Ａは、所定の送信レートでバッファ１３１Ａに格納されたＳＹＮパケットを順次サーバ５０に送信する（ステップＳ５７）。これで、第２の実施形態における通信制御処理が終了する。
【００４４】
（第２の実施形態の効果）
このように、第２の実施形態に係る通信制御システムにおいては、バッファ管理部は、受信部（通信部）が受信したパケットのうち、情報処理装置からサーバへ送信されるＳＹＮパケットのシーケンス番号が、バッファに格納されるＳＹＮパケットのシーケンス番号と同一である場合、受信部が受信したＳＹＮパケットを破棄する。このため、再送パケットがバッファ内に重複して格納されることがなく、サーバが同一のＳＹＮパケットを繰り返し処理することが防止される。このため、サーバと情報処理装置との間で単位時間当たりに確立されるコネクション数の減少が抑制される。
【００４５】
（第３の実施形態）
第２の実施形態においては、通信制御装置１０Ａは、パケットを受信した時点で、バッファ内のパケットとの重複をチェックし、重複する場合には受信したパケットを破棄した。第３の実施形態では、通信制御システムは、パケットをバッファから送信する時点で、当該パケットと重複するパケットがバッファ内にないかチェックし、バッファ内の重複するパケットを破棄する。
【００４６】
図６は、第３の実施形態に係る通信制御装置の構成の一例を示す図である。第３の実施形態に係る通信制御装置１０Ｂは、通信部１１０Ｂと、制御部１２０Ｂと、記憶部１３０Ｂと、を備える。通信部１１０Ｂの機能および構成は第１、第２の実施形態と同様である。
【００４７】
制御部１２０Ｂは、パケット識別部１２１Ｂとバッファ管理部１２２Ｂとを備える。
【００４８】
記憶部１３０Ｂは、バッファ１３１Ｂを有する。記憶部１３０Ｂおよびバッファ１３１Ｂの構成および機能は、第１、第２の実施形態と同様である。ただし、バッファ１３１Ｂに格納されるＳＹＮパケットは、バッファ管理部１２２Ｂにより管理される。
【００４９】
パケット識別部１２１Ｂは、通信部１１０Ｂが受信したパケットのうち、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄからサーバ５０にあてたＳＹＮパケットを識別する。そして、パケット識別部１２１Ｂは、識別したＳＹＮパケットをバッファ１３１Ｂに格納する。パケット識別部１２１Ｂは、識別したＳＹＮパケット以外のパケットは、通信部１１０Ｂを介して宛先に転送する。
【００５０】
バッファ管理部１２２Ｂは、所定の送信レートに基づき、バッファ１３１ＢからＳＹＮパケットを送信するタイミングで、送信するＳＹＮパケットのシーケンス番号を抽出する。そして、バッファ管理部１２２Ｂは、同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｂに格納されているか否かを判定する。同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｂに格納されている場合、バッファ管理部１２２Ｂは、バッファ１３１Ｂに格納されている同一のシーケンス番号のＳＹＮパケットを破棄する。そして、バッファ管理部１２２Ｂは、送信タイミングとなったＳＹＮパケットを通信部１１０Ｂを介してサーバ５０に送信する。
【００５１】
（第３の実施形態に係る通信制御処理の流れの一例）
図７は、第３の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。まず、通信部１１０Ｂがパケットを受信する（ステップＳ７１）。パケット識別部１２１Ｂは、受信したパケットから、情報処理装置２０Ａ，２０Ｂ，２０Ｃ，２０Ｄからサーバ５０にあてたＳＹＮパケットを識別する。そして、パケット識別部１２１Ｂは、識別したＳＹＮパケットをバッファ１３１Ｂに振り分ける（ステップＳ７２）。バッファ管理部１２２Ｂは、バッファ１３１ＢからＳＹＮパケットを送信する所定のタイミングとなったか否かを判定する（ステップＳ７３）。所定のタイミングではないと判定した場合（ステップＳ７３、Ｎｏ）、バッファ管理部１２２Ｂは再びステップＳ７３の判定を繰り返す。所定のタイミングになったと判定した場合（ステップＳ７３、Ｙｅｓ）、バッファ管理部１２２Ｂは、送信するＳＹＮパケットと同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｂに格納されているか否かを判定する（ステップＳ７４）。同一のシーケンス番号のＳＹＮパケットが格納されていると判定した場合（ステップＳ７４、Ｙｅｓ）、バッファ管理部１２２Ｂは、バッファ１３１Ｂに格納されている同一のシーケンス番号のＳＹＮパケットを破棄する（ステップＳ７５）。そして、バッファ管理部１２２Ｂは、送信タイミングとなったＳＹＮパケットを通信部１１０Ｂを介してサーバ５０に送信する（ステップＳ７６）。他方、同一のシーケンス番号のＳＹＮパケットが格納されていないと判定した場合（ステップＳ７４、Ｎｏ）、バッファ管理部１２２Ｂは、そのまま送信タイミングとなったＳＹＮパケットを通信部１１０Ｂを介してサーバ５０に送信する（ステップＳ７６）。これで処理が終了する。
【００５２】
（第３の実施形態の効果）
このように、第３の実施形態に係る通信制御システムにおいては、バッファ管理部は、受信部（通信部）が受信したパケットのうち、バッファに格納され次にバッファからサーバに送信されるＳＹＮパケットのシーケンス番号が、バッファに格納される他のＳＹＮパケットのシーケンス番号と同一である場合、バッファに格納される他のＳＹＮパケットを破棄する。このため、バッファ内には重複するＳＹＮパケットが一時的に格納されるものの、サーバには到達しないため、サーバが同一のＳＹＮパケットを繰り返し処理することで単位時間当たりに確立されるコネクション数が減少することが抑制される。
【００５３】
（第４の実施形態）
第２、第３の実施形態においては、通信制御システムは、受信したＳＹＮパケットをチェックして、受信したＳＹＮパケットまたはバッファ内のパケットを破棄するか否かを判定した。第４の実施形態に係る通信制御システムは、ＳＹＮパケットに応答してサーバから送信されるＡＣＫパケットをチェックして、バッファ内のパケットを破棄するか否かを判定する。
【００５４】
図８は、第４の実施形態に係る通信制御装置の構成の一例を示す図である。第４の実施形態に係る通信制御装置１０Ｃは、通信部１１０Ｃと、制御部１２０Ｃと、記憶部１３０Ｃと、を備える。通信部１１０Ｃの機能および構成は第１〜第３の実施形態と同様である。
【００５５】
制御部１２０Ｃは、パケット識別部１２１Ｃとバッファ管理部１２２Ｃとを備える。
【００５６】
記憶部１３０Ｃは、バッファ１３１Ｃを有する。記憶部１３０Ｃおよびバッファ１３１Ｃの構成および機能は、第１〜第３の実施形態と同様である。ただし、バッファ１３１Ｃに格納されるＳＹＮパケットはバッファ管理部１２２Ｃにより管理される。
【００５７】
第４の実施形態においては、パケット識別部１２１Ｃは、情報処理装置２０Ａ〜２０Ｄからサーバ５０宛に送信されるＳＹＮパケットに加えて、サーバ５０からＳＹＮパケットに応答して送信されるＡＣＫパケットを識別する。そして、パケット識別部１２１Ｃは、識別したＳＹＮパケットをバッファ１３１Ｃに格納するとともに、識別したＡＣＫパケットをミラーリングしてバッファ管理部１２２Ｃに渡す。
【００５８】
バッファ管理部１２２Ｃは、パケット識別部１２１ＣがミラーリングしたＡＣＫパケットのシーケンス番号を抽出する。バッファ管理部１２２Ｃは、ＡＣＫパケットと同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｃに格納されているか否かを判定する。同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｃに格納されている場合、バッファ管理部１２２Ｃは、バッファ１３１Ｃ内の同一シーケンス番号のＳＹＮパケットを破棄する。
【００５９】
このように、第４の実施形態においては、ＳＹＮパケットを監視するのではなく、ＳＹＮパケットに対応して送信されるＡＣＫパケットを監視する。ＡＣＫパケットがサーバ５０から送信される時点で、当該ＡＣＫパケットに基づいて通信が確立されると考えられるため、以後同一シーケンス番号のＳＹＮパケットをサーバ５０に送信する必要はなくなる。そこで、第４の実施形態の通信制御装置１０Ｃは、ＡＣＫパケットが送信されたことを確認した時点で、同一シーケンス番号のＳＹＮパケットをバッファ１３１Ｃから破棄するものとしている。
【００６０】
（第４の実施形態に係る通信制御処理の流れの一例）
図９は、第４の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。まず、通信部１１０Ｃはパケットを受信する（ステップＳ９１）。パケット識別部１２１Ｃは、受信したパケットが、情報処理装置２０Ａ〜２０Ｄからサーバ５０にあてたＳＹＮパケットであるか否かを判定する（ステップＳ９２）。ＳＹＮパケットと判定した場合（ステップＳ９２、Ｙｅｓ）、パケット識別部１２１Ｃは、当該ＳＹＮパケットをバッファ１３１Ｃに振り分ける（ステップＳ９３）。他方、ＳＹＮパケットではないと判定した場合（ステップＳ９２、Ｎｏ）、パケット識別部１２１Ｃは、受信したパケットがＡＣＫパケットであるか否かを判定する（ステップＳ９４）。受信したパケットがＡＣＫパケットではないと判定した場合（ステップＳ９４、Ｎｏ）、パケット識別部１２１Ｃは、当該パケットをそのまま通信部１１０Ｃを介して宛先に送信する（ステップＳ９５）。受信したパケットがＡＣＫパケットであると判定した場合（ステップＳ９４、Ｙｅｓ）、パケット識別部１２１Ｃは当該パケットをミラーリングしてバッファ管理部１２２Ｃに渡す。そして、バッファ管理部１２２Ｃは、ミラーリングされたＡＣＫパケットのシーケンス番号を抽出する。バッファ管理部１２２Ｃは、ＡＣＫパケットと同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｃに格納されているか判定する（ステップＳ９６）。同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｃに格納されていると判定した場合（ステップＳ９６、Ｙｅｓ）、バッファ管理部１２２Ｃは、当該同一シーケンス番号のＳＹＮパケットをバッファ１３１Ｃから破棄する（ステップＳ９７）。そして、バッファ管理部１２２Ｃは、バッファ１３１Ｃに格納されているＳＹＮパケットを所定の送信レートでサーバ５０に送信する（ステップＳ９８）。他方、同一のシーケンス番号のＳＹＮパケットがバッファ１３１Ｃに格納されていないと判定した場合（ステップＳ９６、Ｎｏ）、バッファ管理部１２２Ｃは、ミラーリングしたＡＣＫパケットを破棄する（ステップＳ９９）。そして、バッファ管理部１２２Ｃは、バッファ１３１Ｃに格納されているＳＹＮパケットを所定の送信レートでサーバ５０に送信する（ステップＳ９８）。これで処理が終了する。
【００６１】
（第４の実施形態の効果）
このように、第４の実施形態に係る通信制御システムにおいては、バッファ管理部は、受信部（通信部）が受信したパケットのうち、サーバから情報処理装置に送信されるＡＣＫパケットのシーケンス番号が、バッファに格納されるＳＹＮパケットのシーケンス番号と同一である場合、バッファに格納されるＳＹＮパケットを破棄する。このため、ＡＣＫパケットの送信を確認した上で、同一のコネクションの確立を目的として送信されているＳＹＮパケットを破棄することができる。このため、第４の実施形態に係る通信制御システムによれば、より確実にコネクションを確立できるとともに、不要なＳＹＮパケットの再送を減少させ、単位時間当たりに確立されるコネクション数の減少を抑制することができる。
【００６２】
（第５の実施形態）
第２〜第４の実施形態においては、通信制御装置が受信するＳＹＮパケットまたはＡＣＫパケットのシーケンス番号に基づき、受信したＳＹＮパケットまたはバッファに格納されるＳＹＮパケットを破棄するか否かの判定を行った。第５の実施形態においては、ＳＹＮパケットの再送間隔を考慮して、バッファに格納されるＳＹＮパケットを破棄する。
【００６３】
図１０は、第５の実施形態に係る通信制御処理の前提となるＳＹＮパケットの再送間隔について説明するための図である。図１０の例では、複数の情報処理装置からサーバ宛にほぼ同じタイミングで多数のＳＹＮパケットが送信されたとする。たとえば、時刻０秒の時点で１０００個のＳＹＮパケットがサーバ宛に送信されたとする。この場合に、サーバが同時に処理可能なＳＹＮパケットの数が８０個であるとする。とすると、サーバは、時刻０秒の時点で受信したＳＹＮパケットのうち、９２０個については処理できず破棄する。破棄されたＳＹＮパケットを送信した情報処理装置は、ＲＦＣに定められたアルゴリズムに従ってＳＹＮパケットを再送するため、サーバは再びほぼ同時に９２０個のＳＹＮパケットを受信することになる。たとえば、図１０の例では、サーバは時刻１秒の時点で９２０個の再送パケットを受信する。そして、ＳＹＮパケットの再送間隔は再送ごとに２倍に設定されるため、次の再送タイミングである時刻３秒の時点でサーバは８４０個の再送パケットを受信することになる。再送タイミングごとに同様の処理が繰り返される。
【００６４】
第５の実施形態に係る通信制御システムにおいては、このような前提に基づき、パケットの受信レートを監視する。そして、通信制御システムは、受信レートが所定の閾値を超えた場合、受信レートが所定の閾値を超えてから所定時間経過後にバッファ内のＳＹＮパケットをすべて破棄する。所定時間は、ＳＹＮパケットの再送間隔の初期値よりも短い時間に設定する。
【００６５】
（第５の実施形態に係る通信制御装置の構成の一例）
図１１は、第５の実施形態に係る通信制御装置の構成の一例を示す図である。第５の実施形態に係る通信制御装置１０Ｄは、通信部１１０Ｄと、制御部１２０Ｄと、記憶部１３０Ｄと、を備える。通信部１１０Ｄの構成および機能は、第１〜第４の実施形態と同様である。
【００６６】
制御部１２０Ｄは、パケット識別部１２１Ｄと、バッファ管理部１２２Ｄと、受信レート検出部１２３Ｄとを備える。
【００６７】
記憶部１３０Ｄは、バッファ１３１Ｄを有する。記憶部１３０Ｄおよびバッファ１３１Ｄの構成および機能は、第１〜第４の実施形態と同様である。ただし、バッファ１３１Ｄに格納されるＳＹＮパケットはバッファ管理部１２２Ｄにより管理される。
【００６８】
パケット識別部１２１Ｄは、通信部１１０Ｄが受信したパケットから、情報処理装置２０Ａ〜２０Ｄからサーバ５０あてのＳＹＮパケットを識別し、バッファ１３１Ｄに格納する。
【００６９】
バッファ管理部１２２Ｄは、受信レート検出部１２３ＤからＳＹＮパケットの受信レートが所定の閾値を超えた場合に通知を受け取る。そして、バッファ管理部１２２Ｄは、ＳＹＮパケットの受信レートが所定の閾値を超えてから所定時間が経過すると、バッファ１３１Ｄに格納されるＳＹＮパケットを全て破棄する。
【００７０】
受信レート検出部１２３Ｄは、通信制御装置１０Ｄが受信するＳＹＮパケットの受信レートを検出する。受信レート検出部１２３Ｄは、たとえば、パケット識別部１２１ＤによるＳＹＮパケットの識別を監視して、受信レートを検出してもよい。また、受信レート検出部１２３Ｄは、たとえば、バッファ１３１ＤへのＳＹＮパケットの格納を監視して、受信レートを検出してもよい。受信レート検出部１２３Ｄは、随時受信レートを検出し、受信レートと所定の閾値とを比較する。そして、受信レート検出部１２３Ｄは、検出した受信レートが所定の閾値を超えると、バッファ管理部１２２Ｄに通知する。
【００７１】
なお、ここでは、受信レートとは、所定の時刻に通信制御装置１０Ｄが受信した、情報処理装置２０Ａ〜２０Ｄからサーバ５０あてのＳＹＮパケットの単位時間当たりの数をいうものとする。また、受信レートと比較する所定の閾値はたとえば、通信制御装置１０ＤがＳＹＮパケットの再送間隔の初期値の間にバッファ１３１Ｄから送信するＳＹＮパケットの数とする。
【００７２】
（第５の実施形態に係る通信制御処理の流れの一例）
図１２は、第５の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。まず、受信レート検出部１２３ＤはＳＹＮパケットの受信レートを検出する（ステップＳ１０１）。そして、受信レート検出部１２３Ｄは、検出した受信レートと所定の閾値とを比較し、検出した受信レートが所定の閾値を超えているか否かを判定する（ステップＳ１０２）。検出した受信レートが所定の閾値を超えていないと判定した場合（ステップＳ１０２、Ｎｏ）、受信レート検出部１２３Ｄは処理を終了する。他方、受信レート検出部１２３Ｄは、検出した受信レートが所定の閾値を超えていると判定した場合（ステップＳ１０２、Ｙｅｓ）、その旨、バッファ管理部１２２Ｄに通知する。通知を受けたバッファ管理部１２２Ｄは、受信レートが所定の閾値を超えたことが検出されてから所定時間が経過したか否かを判定する（ステップＳ１０３）。所定時間経過していないと判定した場合（ステップＳ１０３、Ｎｏ）、バッファ管理部１２２ＤはステップＳ１０３に戻って判定を繰り返す。所定時間経過したと判定した場合（ステップＳ１０３、Ｙｅｓ）、バッファ管理部１２２Ｄは、バッファ１３１Ｄ内のＳＹＮパケットを全て破棄する（ステップＳ１０４）。これで処理が終了する。
【００７３】
（第５の実施形態の効果）
このように、第５の実施形態においては、通信制御システムは、受信部（通信部）が受信するＳＹＮパケットの受信レートを検出する検出部（受信レート検出部）をさらに備える。そして、バッファ管理部は、検出部が検出した受信レートが第１の閾値（所定の閾値）を超えた場合、第１の閾値を超えてから第１の時間（再送間隔よりも短い所定の時間）後に、バッファに格納されるパケットを破棄する。このため、多数のＳＹＮパケットがほぼ同時にサーバに送信される場合に、再び同じタイミングで多数の再送パケットが受信されてバッファに蓄積されることを防止できる。このため、サーバが同じコネクションのためのＳＹＮパケットおよび再送パケットを繰り返し処理することを防止することができ、単位時間当たりに確立されるコネクション数の減少を抑制できる。
【００７４】
また、第５の実施形態に係る通信制御システムは、バッファ内のＳＹＮパケットのシーケンス番号と、受信パケットのシーケンス番号との一致判定を行わず、ＳＹＮパケットの受信レートに基づいてバッファ内のＳＹＮパケットの破棄の要否を判定する。このため、シーケンス番号の一致判定を伴う手法と比較してより高いスケーラビリティを確保することができる。
【００７５】
（第６の実施形態）
第５の実施形態では、サーバに処理可能な数を超えるパケットが同時に送信された場合、処理可能な数を超えた分のパケットに対応する再送パケットが送信されることを前提として、バッファに格納されるＳＹＮパケットを所定のタイミングで破棄するものとした。これに対して、第６の実施形態に係る通信制御システムは、第１の閾値を超える受信レートが検出された場合、次に受信レートが第２の閾値を超えるタイミングを予測する。そして、予測したタイミングで第２の閾値を超える受信レートが検出された場合に、バッファに格納されるＳＹＮパケットを破棄する。
【００７６】
図１３は、第６の実施形態に係る通信制御装置の構成の一例を示す図である。第６の実施形態に係る通信制御装置１０Ｅは、通信部１１０Ｅと、制御部１２０Ｅと、記憶部１３０Ｅと、を備える。通信部１１０Ｅの構成および機能は、第１〜第５の実施形態と同様である。
【００７７】
制御部１２０Ｅは、パケット識別部１２１Ｅと、バッファ管理部１２２Ｅと、受信レート検出部１２３Ｅと、を備える。
【００７８】
記憶部１３０Ｅは、バッファ１３１Ｅを有する。記憶部１３０Ｅおよびバッファ１３１Ｅの構成および機能は、第１〜第５の実施形態と同様である。ただし、バッファ１３１Ｅに格納されるＳＹＮパケットはバッファ管理部１２２Ｅにより管理される。
【００７９】
パケット識別部１２１Ｅは、通信部１１０Ｅが受信したパケットのうち、情報処理装置２０Ａ〜２０Ｄからサーバ５０あてのＳＹＮパケットを識別し、バッファ１３１Ｅに格納する。
【００８０】
バッファ管理部１２２Ｅは、受信レート検出部１２３ＥからＳＹＮパケットの受信レートが第１の閾値を超えた場合に通知を受け取る。バッファ管理部１２２Ｅは、通知を受け取ると、次に受信レートが第２の閾値を超えるタイミングを予測する。そして、予測したタイミングで受信レートが第２の閾値を超えた旨の通知を受信レート検出部１２３Ｅから受け取ると、バッファ管理部１２２Ｅは、バッファ１３１Ｅに格納されるＳＹＮパケットを破棄する。予測したタイミングで通知を受け取らなかった場合は、バッファ管理部１２２Ｅは処理を終了する。また、予測したタイミングで通知を受け取った場合は、バッファ管理部１２２Ｅはさらに次に受信レートが第３の閾値を超えるタイミングを予測する。そして、予測したタイミングで受信レートが第３の閾値を超えた旨の通知を受信すれば、バッファ管理部１２２Ｅはバッファ１３１Ｅに格納されるＳＹＮパケットを破棄する。予測したタイミングで通知を受け取らなくなるまで、バッファ管理部１２２Ｅは処理を繰り返す。
【００８１】
受信レート検出部１２３Ｅは、通信制御装置１０Ｅが受信するＳＹＮパケットの受信レートを検出する。第５の実施形態の受信レート検出部１２３Ｄと同様、受信レート検出部１２３Ｅは、パケット識別部１２１ＥによるＳＹＮパケットの識別を監視して、受信レート検出してもよい。また、受信レート検出部１２３Ｅは，バッファ１３１ＥへのＳＹＮパケットの格納を監視して、受信レートを検出してもよい。受信レート検出部１２３Ｅは、随時受信レートを検出し、受信レートと第１の閾値とを比較する。そして、受信レート検出部１２３Ｅは、検出した受信レートが第１の閾値を超えると、バッファ管理部１２２Ｅに通知する。
【００８２】
（受信レートが閾値を超えるタイミングの予測手法の一例）
図１５は、第６の実施形態に係る通信制御処理において、受信レートが閾値を超えるタイミングを予測する手法について説明するための図である。先述したように、ＴＣＰを用いたＳＹＮパケットの送信については再送間隔がＲＦＣによって規定されている。そこで、第６の実施形態に係る通信制御装置１０Ｅは、ＲＦＣの規定に基づき、受信レートが閾値を超えるタイミングを予測する。たとえば、サーバ５０がＬｉｎｕｘ（登録商標）系ＯＳを使用する情報処理装置２０Ａ〜２０Ｄとの間で通信している場合、再送間隔の初期値は１秒である。そこで、バッファ管理部１２２Ｅは、再送間隔の初期値は１秒であり、再送が実行されるごとに２倍になると予測する。つまり、図１５の例では、バッファ管理部１２２Ｅは、時刻０秒のタイミングで受信レート検出部１２３Ｅから通知を受けた場合、次に受信レートが閾値を超えるタイミングを時刻１秒と予測する。そして、時刻１秒のタイミングで、受信レート検出部１２３Ｅから通知を受けた場合、バッファ管理部１２２Ｅは、次に受信レートが閾値を超えるタイミングを１秒の２倍が経過した時刻３秒と予測する。同様に、時刻３秒のタイミングで、受信レート検出部１２３Ｅから通知を受けた場合、バッファ管理部１２２Ｅは、次に受信レートが閾値を超えるタイミングを２秒の２倍である４秒が経過した時刻７秒と予測する。
【００８３】
バッファ管理部１２２Ｅが予測していなかったタイミングで受信レート検出部１２３Ｅから通知を受けた場合は、バッファ管理部１２２Ｅは、その通知の時点を初回ＳＹＮパケットの送信時点と仮定して、次に受信レートが閾値を超えるタイミングを予測する。
【００８４】
なお、ＳＹＮパケットの送受信処理やネットワーク上の通信遅延によってＳＹＮパケットが通信制御装置１０Ｅに到達する時間には多少のずれが生じることが予想される。このため、予測したタイミングの前後約１００ミリ秒（ｍｓ）程度の誤差を見込む。そして、予測したタイミングの前後約１００ミリ秒の期間中に受信レート検出部１２３Ｅから通知があれば、バッファ管理部１２２Ｅは検出された受信レートと予測回数に応じた閾値とを比較する。そして、バッファ管理部１２２Ｅは、受信レートが閾値を超えていれば、バッファ１３１Ｅに格納されるＳＹＮパケットを破棄するものとする。
【００８５】
（受信レートと比較する閾値の設定手法の一例）
図１６は、第６の実施形態に係る通信制御処理において、閾値を設定する手法について説明するための図である。たとえば、図１６において、ＳＹＮパケットの再送間隔の初期値が１秒であるとする。そして、再送ごとに再送間隔は２倍になるとする。ここで、図１６に示す時刻０秒の時点で通信制御装置１０Ｅが受信したＳＹＮパケットの数が、１秒の間にバッファ１３１Ｅから送信することができるパケットの数を超えているとする。すると、時刻１秒の時点でバッファ１３１Ｅには未送信のＳＹＮパケットが残留していることになる。そして、未送信のＳＹＮパケットはサーバ５０に到達しておらずＡＣＫパケットが送信されていないため、未送信のＳＹＮパケットの再送パケットが送信されることになる。
【００８６】
時刻０秒において通信制御装置１０Ｅが受信しているＳＹＮパケットの数が、１秒の間にバッファ１３１Ｅからサーバ５０へ送信されるＳＹＮパケットの数以下であれば、時刻１秒において、バッファ１３１Ｅに残留しているＳＹＮパケットはない。そこで、第６の実施形態では、第１の閾値を、再送間隔の初期値の間にバッファ１３１Ｅからサーバ５０へ送信されるＳＹＮパケットの数とする。また、第２の閾値を、再送間隔の初期値の２倍の期間中にバッファ１３１Ｅからサーバ５０へ送信されるＳＹＮパケットの数とする。さらに、第３の閾値を、再送間隔の初期値の４倍の期間中にバッファ１３１Ｅからサーバ５０へ送信されるＳＹＮパケットの数とする。以降の閾値も同様に設定する。
【００８７】
たとえば、図１６の例では、再送間隔の初期値をｔ（秒）、バッファ１３１Ｅの送信レートをＲ（個／秒）とする。そして、ｔ秒間にバッファ１３１Ｅから送信されるＳＹＮパケットの数をＳとする。このとき、受信レート検出部１２３Ｅが検出する受信レートと比較する第１の閾値は、Ｒ×ｔ＝Ｓとなる。次に受信レート検出部１２３Ｅが検出した受信レートと比較する第２の閾値は、Ｒ×ｔ×２＝２Ｓとなる。さらに、次に受信レート検出部１２３Ｅが受信レートと比較する第３の閾値は、Ｒ×ｔ×２×２＝４Ｓとなる。
【００８８】
第６の実施形態では、受信レート検出部１２３Ｅは、検出した受信レートと予め設定された第１の閾値とを比較し、バッファ管理部１２２Ｅに通知するものとする。そして、通知を受けたバッファ管理部１２２Ｅは、通知された時点が、予め受信レートが閾値を超えると予測したタイミングであれば、予測回数に応じて設定される閾値と通知された受信レートとを比較する。たとえば、バッファ管理部１２２Ｅは、通知された時点が、最初に受信レートが第１の閾値を超えてから１回目の予測時点である場合、受信レートが第２の閾値（ｔ×２×１×Ｒ）を超えるか否かを判定する。また、バッファ管理部１２２Ｅは、通知された時点が、最初に受信レートが第１の閾値を超えてから２回目の予測時点である場合、受信レートが第３の閾値（ｔ×２×２×Ｒ）を超えるか否かを判定する。また、バッファ管理部１２２Ｅは、通知された時点が、最初に受信レートが第１の閾値を超えてから３回目の予測時点である場合、受信レートが第４の閾値（ｔ×２×４×Ｒ）を超えるか否かを判定する。また、バッファ管理部１２２Ｅは、通知された時点が、予測時点ではない場合、当該時点をＳＹＮパケットの初回送信時点として、次に受信レートが第２の閾値を超える時点を予測する。
【００８９】
なお、予測時点と予測時点に対応する閾値は、ＲＦＣに規定される再送間隔の初期値に基づき予め算出して記憶部１３０Ｅに記憶しておいてもよい。
【００９０】
（第６の実施形態における通信制御処理の流れの一例）
図１４は、第６の実施形態に係る通信制御システムにおける処理の流れの一例を示すフローチャートである。受信レート検出部１２３Ｅは、ＳＹＮパケットの受信レートを検出する（ステップＳ１４０１）。そして、受信レート検出部１２３Ｅは、検出した受信レートが第１の閾値を超えるか否かを判定する（ステップＳ１４０２）。受信レート検出部１２３Ｅは、検出した受信レートが第１の閾値を超えないと判定した場合（ステップＳ１４０２、Ｎｏ）、ステップＳ１４０１に戻って検出を続ける。他方、受信レート検出部１２３Ｅは、検出した受信レートが第１の閾値を超えると判定した場合（ステップＳ１４０２、Ｙｅｓ）、バッファ管理部１２２Ｅにその旨通知する。バッファ管理部１２２Ｅは、通知を受けて次に受信レートが閾値を超える時間を予測する（ステップＳ１４０３）。バッファ管理部１２２Ｅは、予測した時間に受信レートが対応する閾値を超えたか否かを判定する（ステップＳ１４０４）。予測した時間に受信レートが対応する閾値を超えなかったと判定した場合（ステップＳ１４０４、Ｎｏ）、バッファ管理部１２２Ｅは、処理を終了する。他方、予測した時間に受信レートが閾値を超えたと判定した場合（ステップＳ１４０４、Ｙｅｓ）、バッファ管理部１２２Ｅは、バッファ１３１Ｅに格納されるＳＹＮパケットを破棄する（ステップＳ１４０５）。そして、バッファ管理部１２２Ｅは、再び次に受信レートが閾値を超える時間を予測して処理を繰り返す（ステップＳ１４０３）。バッファ管理部１２２Ｅが、予測した時間に受信レートは閾値を超えなかったと判定すれば（ステップＳ１４０４、Ｎｏ）処理は終了する。
【００９１】
（第６の実施形態の効果）
このように第６の実施形態に係る通信制御システムは、受信部（通信部）が受信するＳＹＮパケットの受信レートを検出する検出部（受信レート検出部）をさらに備える。バッファ管理部は、検出部が検出した受信レートが第１の閾値を超えた場合、次に受信レートが第２の閾値を超えると予測される第２の時間を算出し、検出部が当該第２の時間に検出した受信レートが第２の閾値を超えた場合、バッファに格納されるパケットを破棄する。このため、第６の実施形態の通信制御システムによれば、多数の再送パケットが送信されると予測されるタイミングになるまで、バッファ内のＳＹＮパケットを所定の送信レートでサーバに送信し続けることができる。このため、第６の実施形態によれば、受信レートが閾値を超えたときすぐにバッファをクリアする処理と比較して、バッファからＳＹＮパケットを送信しない期間を短縮することができる。また、再送されると予測されるＳＹＮパケットをバッファから破棄するため、同じ再送パケットがバッファに蓄積されていくのを防止することができる。このため、サーバが同じ再送パケットを繰り返し処理することを防止でき、単位時間当たりに確立されるコネクション数の減少を抑制することができる。
【００９２】
また、第６の実施形態に係る通信制御システムにおいて、バッファ管理部は、検出部が第２の時間に検出した受信レートが第２の閾値を超えた場合、バッファに格納されるパケットを破棄し、次に受信レートが第３の閾値を超えると予測される第３の時間を算出し、検出部が当該第３の時間に検出した受信レートが第３の閾値を超えた場合、バッファに格納されるパケットを再度破棄する。このように、第６の実施形態の通信制御システムは、ＳＹＮパケットの再送が収束するまで、継続的に受信レートを監視してバッファ内のＳＹＮパケットを管理する。このため、第６の実施形態の通信制御システムは、ＳＹＮパケットの再送間隔にあわせてバッファに格納されるＳＹＮパケットを制御することができる。このため、サーバが同じ再送パケットを繰り返し処理することを防止でき、単位時間当たりに確立されるコネクション数の減少を抑制することができる。
【００９３】
また、第６の実施形態に係る通信制御システムは、バッファ内のＳＹＮパケットのシーケンス番号と、受信パケットのシーケンス番号との一致判定を行わず、ＳＹＮパケットの受信レートに基づいてバッファ内のＳＹＮパケットの破棄の要否を判定する。このため、シーケンス番号の一致判定を伴う手法と比較してより高いスケーラビリティを確保することができる。
【００９４】
上記実施形態の通信制御方法は、ネットワーク管理者がＴＣＰを用いる通信にシェーピングをかける際に利用することができる。
【００９５】
（変形例）
上記実施形態においては、通信制御システムが備える通信制御装置内に、パケット識別部とバッファ管理部とを設けるものとした。しかし、これに限定されず、パケット識別部とバッファ管理部とをそれぞれ独立の装置としてネットワーク上に配置してもよい。また、パケット識別部とバッファ管理部とをサーバに組み入れてもよい。受信レート検出部も同様に、独立の装置としてもよく、また、パケット識別部およびバッファ管理部とともにサーバに組み入れてもよい。すなわち、通信制御システムにおいて、ＴＣＰを用いてコネクションを確立する情報処理装置とサーバとの通信経路上に通信制御装置が備える各機能部が配置されればよい。
【００９６】
たとえば、図１７は、各実施形態に係る通信制御装置の機能を複数の装置上に実装する例を説明するための図である。図１７に示す通信制御システム１Ｂは、図１に示す通信制御システム１Ａと、通信制御装置が備える機能部の配置が相違する。他の点では、図１７に示す通信制御システム１Ｂは、図１に示す通信制御システム１Ａと同様である。
【００９７】
第１〜第６の実施形態においては、パケット識別部、バッファ管理部、受信レート検出部をそれぞれ一つの通信制御装置内に配置するものとして説明した。しかし、これに限らず、図１７のように各機能部を別の装置上に配置することもできる。
【００９８】
図１７の例では、パケット識別装置１１がネットワーク４０，６０を介して情報処理装置２０Ａ〜２０Ｄとサーバ５０との間に接続される。そして、パケット識別装置１１は、バッファ１２を備えるバッファ管理装置１３と接続される。受信レート監視装置１４は、パケット識別装置１１およびバッファ管理装置１３と接続される。
【００９９】
パケット識別装置１１は、第１〜第６の実施形態に係るパケット識別部１２１〜１２１Ｅの機能を実行することができる装置である。パケット識別装置１１はたとえばルータ等で構成することができる。パケット識別装置１１は、ＳＹＮパケットを識別してバッファ管理装置１３に送信する。また、パケット識別装置１１は、ＡＣＫパケットを識別してミラーリングし、ミラーリングしたＡＣＫパケットをバッファ管理装置１３に送信する。
【０１００】
バッファ１２は、パケット識別装置１１から転送されるＳＹＮパケットを受信した順に格納する。そして、バッファ１２は、先に受信したＳＹＮパケットから先に所定の送信レートで順次送信する。
【０１０１】
バッファ管理装置１３は、第１〜第６の実施形態に係るバッファ管理部１２２〜１２２Ｅの機能を実行することができる装置である。バッファ管理装置１３はたとえば、サーバ５０に組み入れることもできるし、サーバと独立の装置としてもよい。
【０１０２】
受信レート監視装置１４は、第５、第６の実施形態に係る受信レート検出部１２３Ｄ，１２３Ｅの機能を実行することができる装置である。図１７の例では、受信レート監視装置１４は、パケット識別装置１１およびバッファ管理装置１３の双方に接続されているが、いずれか一方のみに接続される構成としてもよい。
【０１０３】
このように、通信制御装置１０〜１０Ｅの各機能は異なる装置上に実装して実現することができる。また、ＡＰＬサーバ等、既存の装置に通信制御装置１０〜１０Ｅの機能の一部を実装してもよい。また、図１７の例では、バッファ管理装置１３がバッファ１２を備えるものとしたが、バッファ１２をバッファ管理装置１３とは別の装置上に設けてバッファ管理装置１３と接続する構成とすることもできる。
【０１０４】
（プログラム）
また、上記実施形態において説明した通信制御システムが実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る通信制御装置が実行する処理をコンピュータが実行可能な言語で記述した通信制御プログラムを作成することもできる。この場合、コンピュータが通信制御プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる通信制御プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された通信制御プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【０１０５】
図２０は、通信制御プログラムを実行するコンピュータ１０００を示す図である。図２０に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【０１０６】
メモリ１０１０は、図２０に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図２０に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図２０に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、図２０に例示するように、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、図２０に例示するように、例えばディスプレイ１０６１に接続される。
【０１０７】
ここで、図２０に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の通信制御プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【０１０８】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【０１０９】
なお、通信制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、通信制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１１０】
なお、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１１１】
上記の実施形態やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１１２】
１Ａ，１Ｂ  通信制御システム
１０，１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ，１０Ｅ  通信制御装置
２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ  情報処理装置
３０  ゲートウェイ
４０  ネットワーク
５０  サーバ
６０  ネットワーク
１１０，１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄ，１１０Ｅ  通信部
１２０，１２０Ａ，１２０Ｂ，１２０Ｃ，１２０Ｄ，１２０Ｅ  制御部
１２１，１２１Ａ，１２１Ｂ，１２１Ｃ，１２１Ｄ，１２１Ｅ  パケット識別部
１２２，１２２Ａ，１２２Ｂ，１２２Ｃ，１２２Ｄ，１２２Ｅ  バッファ管理部
１２３Ｄ，１２３Ｅ  受信レート検出部
１３０，１３０Ａ，１３０Ｂ，１３０Ｃ，１３０Ｄ，１３０Ｅ  記憶部
１３１，１３１Ａ，１３１Ｂ，１３１Ｃ，１３１Ｄ，１３１Ｅ  バッファ
【図１】
2017034627.tif 000003
【図２】
2017034627.tif 000004
【図３】
2017034627.tif 000005
【図４】
2017034627.tif 000006
【図５】
2017034627.tif 000007
【図６】
2017034627.tif 000008
【図７】
2017034627.tif 000009
【図８】
2017034627.tif 000010
【図９】
2017034627.tif 000011
【図１０】
2017034627.tif 000012
【図１１】
2017034627.tif 000013
【図１２】
2017034627.tif 000014
【図１３】
2017034627.tif 000015
【図１４】
2017034627.tif 000016
【図１５】
2017034627.tif 000017
【図１６】
2017034627.tif 000018
【図１７】
2017034627.tif 000019
【図１８】
2017034627.tif 000020
【図１９】
2017034627.tif 000021
【図２０】
2017034627.tif 000022