(57)【要約】【課題】ＴＣＰ通信の送信スループットを向上させる。【解決手段】送信データのサイズと、送信ウィンドウサイズと、アグリゲーション送信可能なデータサイズと、最大セグメントサイズとに基づいて、送信データのうち連続的に送信するデータセグメントのセグメント数を決定する決定部と、送信データを、セグメント数だけデータセグメントに分割して、当該データセグメントごとにＴＣＰパケットを作成し、それぞれが各ＴＣＰパケットを含む複数の送信フレームを有する送信フレーム列を生成する生成部と、を備える。【選択図】  図２
2013251737.tif 000002
【特許請求の範囲】
【請求項１】
送信データのサイズと、送信ウィンドウサイズと、アグリゲーション送信可能なデータサイズと、最大セグメントサイズとに基づいて、前記送信データのうち連続的に送信するデータセグメントのセグメント数を決定する決定手段と、
前記送信データを、前記セグメント数だけデータセグメントに分割して、当該データセグメントごとにＴＣＰパケットを作成し、それぞれが各ＴＣＰパケットを含む複数の送信フレームを有する送信フレーム列を生成する生成手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記決定手段は、前記送信データのサイズと、前記送信ウィンドウサイズと、前記アグリゲーション送信可能なデータサイズとのうち最も小さいサイズを、前記最大セグメントサイズで除して前記セグメント数を決定することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信フレーム列を、ＴＣＰコネクションごとに個別のＴＣＰ送信フレームキューにキューイングして管理する管理手段と、
前記管理手段によりキューイングされている前記送信フレーム列を１つのアグリゲーションフレームとして送信する送信手段と、
をさらに備えることを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記管理手段は、前記ＴＣＰ送信フレームキューにキューイングされている送信フレーム列よりも優先して送信すべき送信フレームをキューイングする、優先送信フレームキューをさらに管理し、
前記送信手段は、前記優先送信フレームキューに送信フレームがキューイングされている場合、当該送信フレームを優先的に送信することを特徴とする請求項３に記載の通信装置。
【請求項５】
決定手段と、生成手段とを備える通信装置の制御方法であって、
前記決定手段が、送信データのサイズと、送信ウィンドウサイズと、アグリゲーション送信可能なデータサイズと、最大セグメントサイズとに基づいて、前記送信データのうち連続的に送信するデータセグメントのセグメント数を決定する決定工程と、
前記生成手段が、前記送信データを、前記セグメント数だけデータセグメントに分割して、当該データセグメントごとにＴＣＰパケットを作成し、それぞれが各ＴＣＰパケットを含む複数の送信フレームを有する送信フレーム列を生成する生成工程と、
を有することを特徴とする通信装置の制御方法。
【請求項６】
請求項５に記載の通信装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＥＥＥ８０２．１１規格の通信装置、通信装置の制御方法、およびプログラムに関し、特にＩＥＥＥ８０２．１１ｎ規格のフレーム・アグリゲーションを行う通信装置、通信装置の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
ＩＥＥＥ８０２．１１ｎには、無線ＬＡＮのＳＴＡ（Ｓｔａｔｉｏｎ；無線端末）が、複数のデータフレームを集約して送信するフレーム・アグリゲーション（以降、「アグリゲーション」とも称する）が規格化されている。ＩＥＥＥ８０２．１１ｎ規格のアグリゲーションは、ＭＡＣレイヤが上位レイヤに対してデータ転送のサービスを提供するときに扱うデータ単位であるＭＳＤＵ（ＭＡＣ  Ｓｅｒｖｉｃｅ  Ｄａｔａ  Ｕｎｉｔ）を集約するＡ−ＭＳＤＵ（Ａｇｇｒｅｇａｔｅ  ＭＳＤＵ）と、ＭＡＣレイヤが下位の物理レイヤに対してデータ転送を依頼するときに扱うデータ単位であるＭＰＤＵ（ＭＡＣ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）を集約するＡ−ＭＰＤＵ（Ａｇｇｒｅｇａｔｅ  ＭＰＤＵ）との２種類が提案されている。
【０００３】
どちらのアグリゲーションにおいても、基本的には、ＭＡＣレイヤ（ＭＡＣ副層）で上位レイヤの複数の送信データフレーム（以降、「送信フレーム」とも称する）を集約し、下位の物理レイヤに渡すアグリゲーションフレームを構成する。そして、上位レイヤからの複数の送信フレームを纏めたアグリゲーションフレームは、１回のアクセス制御で物理レイヤへ送信する。このため、アグリゲーションは、１個ずつ送信フレームを転送する場合に比べ、無線区間におけるアクセス制御や応答受信の時間的なオーバーヘッドを削減することができ、伝送効率の向上を図ることができる。
【０００４】
しかしながら、下位のＭＡＣレイヤでアグリゲーション機能が有効である場合、上位レイヤであるＴＣＰ／ＩＰの送信フレームを順番に結合してアグリゲーションフレームを作成するため、特に最初に結合される送信フレームは、送出まで待たされることとなる。よって、特にＴＣＰのＡＣＫパケットについては送出が遅延させられることがあり、上位レイヤであるＴＣＰのスループットが低下することがある。
【０００５】
また、ＴＣＰは送信ウィンドウサイズまでのデータを連続的に送信することができるが、送信ウィンドウサイズは受信側から届く受信ウィンドウサイズに応じて、動的に変更される。このこともまた、ＭＡＣレイヤのアグリゲーションが、上位レイヤのＴＣＰのスループットを低下させる要因となりうる。
【０００６】
これに対して、特許文献１では、無線伝送チャネルの状態の良否に応じて、アグリゲーションフレーム長を適応的に変動させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３２４７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１のようにアグリゲーションフレーム長を適応的に変動させると、アグリゲーションフレーム長がＴＣＰの送信ウィンドウよりも著しく小さくなる場合が発生する。アグリゲーションフレーム長がＴＣＰ送信ウィンドウサイズよりも小さい場合、ＴＣＰの送信ウィンドウサイズ以内で連続的に送信可能なセグメントの全てのＴＣＰパケットを、１度のアグリゲーションで送出することができず、溢れた送信フレームで運ぶＴＣＰパケットについては、受信相手への到着が遅延してしまう。
【０００９】
このように、ＩＥＥＥ８０２．１１ｎ規格のフレーム・アグリゲーションは、上位レイヤ通信処理に関係なく、下位レイヤで実施されるため、フィードバック型のプロトコル（ＴＣＰ）の場合、転送効率が低下することがある。
【００１０】
上記の課題に鑑み、本発明は、ＴＣＰ通信の送信スループットを向上させることを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成する本発明に係る通信装置は、
送信データのサイズと、送信ウィンドウサイズと、アグリゲーション送信可能なデータサイズと、最大セグメントサイズとに基づいて、前記送信データのうち連続的に送信するデータセグメントのセグメント数を決定する決定手段と、
前記送信データを、前記セグメント数だけデータセグメントに分割して、当該データセグメントごとにＴＣＰパケットを作成し、それぞれが各ＴＣＰパケットを含む複数の送信フレームを有する送信フレーム列を生成する生成手段と、
を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ＴＣＰ通信の送信スループットを向上させることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係る通信装置の構成例を示す図。
【図２】本発明の一実施形態に係るフレーム・アグリゲーション制御を行うプロトコル処理部の構成例を示す図。
【図３】本発明の一実施形態に係るＴＣＰセグメント分割のケース１を示す図。
【図４】本発明の一実施形態に係るＴＣＰセグメント分割のケース２を示す図。
【図５】本発明の一実施形態に係るＴＣＰセグメント分割のケース３を示す図。
【図６】本発明の一実施形態に係るＴＣＰセグメント分割処理の手順を示すフローチャート。
【図７】本発明の一実施形態に係る送信フレームキュー管理部の送信フレームキュー管理情報の一例を示す図。
【図８】本発明の一実施形態に係る送信フレーム列選択転送部における処理の手順を示すフローチャート。
【図９】本発明の一実施形態に係る通常送信フレームキューと優先送信フレームキューから送信フレーム列を転送する処理の手順を示すフローチャート。
【図１０】本発明の一実施形態に係るＴＣＰ送信フレームキューから送信フレーム列を転送する処理の手順を示すフローチャート。
【図１１】本発明の一実施形態に係るペイロード無しＡＣＫパケットの送信処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、添付の図面を参照して、本発明の一実施形態について説明する。
【００１５】
図１は、本発明の一実施形態に係る通信装置１０の構成例を示す。通信装置１０は、ＣＰＵ１０２と、ＲＯＭ１０３と、ＲＡＭ１０４と、通信処理部１０５と、ＰＨＹ１１７とを備えており、システムバス１０１を介して、ＣＰＵ１０２、ＲＯＭ１０３、およびＲＡＭ１０４と、通信処理部１０５とが接続されている。
【００１６】
ＣＰＵ１０２は、ＲＯＭ１０３からＲＡＭ１０４へシステムプログラムを読み込んで、当該システムプログラムを実行する。ＲＯＭ１０３は、システムプログラムを格納している。ＲＡＭ１０４は、システムプログラム実行時に使用される主記憶装置である。
【００１７】
通信処理部１０５は、ＣＰＵ１０２が実行するアプリケーション通信の下位レイヤの通信処理を実行する。すなわち、ＴＣＰ／ＩＰプロトコル処理、暗号通信プロトコル処理、および無線ＬＡＮの伝送制御処理・フレームデータの送受信処理を実行する。
【００１８】
通信処理部１０５は、バスブリッジ回路１０７と、制御プロセッサ１０８と、ローカルＲＯＭ１０９と、ローカルＲＡＭ１１０と、ＤＭＡコントローラ１１１と、暗号処理部１１２と、通信タイマー１１３と、ＴＣＢコントローラ１１４と、プロトコル処理部１１５と、ＭＡＣ１１６とを備えており、各構成要素はローカルバス１０６を介して接続されている。またローカルバス１０６は、バスブリッジ回路１０７を介してシステムバス１０１と接続されており、ローカルバス１０６とシステムバス１０１との間でデータ転送が可能である。すなわち通信処理部１０５と、ＣＰＵ１０２やＲＯＭ１０３やＲＡＭ１０４で構成されるシステムとは、それぞれのバス回路が相互に接続されており、通信データや制御データの入出力を行える仕組みになっている。
【００１９】
制御プロセッサ１０８は、ローカルＲＯＭ１０９に記憶された制御プログラムをローカルＲＡＭ１１０に読み込んで、当該制御プログラムを実行し、主に通信処理部１０５内部の各処理部の動作を制御する。ローカルＲＯＭ１０９は、制御プロセッサ１０８が実行する制御プログラムを記憶している。ローカルＲＡＭ１１０は、通信処理部１０５内の主記憶装置である。
【００２０】
ＤＭＡコントローラ１１１は、ＲＡＭ１０４と、通信処理部１０５の内部あるいは外部のメモリデバイスやハードウェアモジュールとの間で、送受信データ、制御データの転送処理を行う。
【００２１】
暗号処理部１１２は、通信データの暗号・復号の演算を行う。暗号処理部１１２は、プロトコル処理部１１５において、ＩＰＳｅｃやＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）／ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）などの暗号通信プロトコル処理を実行する際、処理負荷が大きい暗号化・復号の演算処理を実行する。
【００２２】
通信タイマー１１３は、各種プロトコル処理におけるタイマー処理に使用され、ＩＰリアセンブルにおけるタイムアウト時間の計測や、ＴＣＰプロトコル通信における再送処理や確認応答送信などの各種タイマーで必要な時間計測のように、ＩＰプロトコル処理における様々なタイムアウト処理に利用される。
【００２３】
ＴＣＢコントローラ１１４は、ＴＣＰ通信において各ＴＣＰコネクションの制御情報（ＴＣＢ：ＴＣＰ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）を一時的に記憶し、参照および書き換え処理を行う。ＴＣＢとは、ＴＣＰプロトコル処理に必要な複数の内部変数の集合体データである。ローカルＲＡＭ１１０は、現存するＴＣＰコネクションの個別のＴＣＢを保持している。そして、或るＴＣＰコネクションについてのＴＣＰプロトコル処理開始時に、ＴＣＢコントローラ１１４が、該ＴＣＰコネクションのＴＣＢをローカルＲＡＭ１１０から読み出して一時的に記憶する。そして、プロトコル処理部１１５が実行する処理に関して、ＴＣＢコントローラ１１４に一時的に記憶されているＴＣＢの参照あるいは書き換えが行われる。
【００２４】
プロトコル処理部１１５は、主にＴＣＰ／ＩＰプロトコル処理を実行する。プロトコル処理部１１５は、ＴＣＰ、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）、ＩＰｖ４（ＩＰ  ｖｅｒｓｉｏｎ４）、ＩＰｖ６（ＩＰ  ｖｅｒｓｉｏｎ６）などのネットワーク層のプロトコル処理を行う。また、ＩＰｓｅｃや、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）／ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）に代表される暗号通信プロトコル処理も実行する。
【００２５】
ＭＡＣ１１６はＰＨＹ１１７と接続しており、ＭＡＣ１１６およびＰＨＹ１１７は、無線ＩＥＥＥ８０２．１１規格の無線伝送メディア制御処理やフレームデータの送受信処理を行う機能を実装している。
【００２６】
図２を参照して、通信装置１０が実行するフレーム・アグリゲーション制御について説明する。
【００２７】
プロトコル処理部１１５は、アグリゲーションフレーム長伝達部１１５１と、ＴＣＰ／ＩＰプロトコル処理部１１５２と、送信フレームキュー管理部１１５３と、送信フレーム列選択転送部１１５４とを備えており、フレーム・アグリゲーション制御を実現する。
【００２８】
ＭＡＣ１１６は、Ａ−ＭＰＤＵの場合は、フレーム・アグリゲーション送信制御部１１６１を実装している。プロトコル処理部１１５から、各送信フレームがＭＡＣ１１６に転送され、ＭＡＣ１１６内でＡ−ＭＰＤＵのフレーム・アグリゲーションが実行される。フレーム・アグリゲーション送信制御部１１６１は、アグリゲーションフレーム最大長、現在のアグリゲーション可能な残りデータサイズをアグリゲーションフレーム長伝達部１１５１へ通知する。また、送信フレーム列選択転送部１１５４から送信フレームあるいは送信フレーム列を取得し（矢印２１９）、ＰＨＹ１１７へ送信フレーム列を１つのアグリゲーションフレームとして出力する（矢印２１０）。
【００２９】
一方、フレーム・アグリゲーション処理は、Ａ−ＭＳＤＵの場合は、プロトコル処理部１１５によって実行される。この場合、フレーム・アグリゲーション送信制御部１１６１は、プロトコル処理部１１５に含まれるように構成されており、Ａ−ＭＳＤＵのアグリゲーションフレームを作成し、ＭＡＣ１１６に送信フレームを転送して送信することとなる。
【００３０】
以下、プロトコル処理部１１５が有する、アグリゲーションフレーム長伝達部１１５１と、ＴＣＰ／ＩＰプロトコル処理部１１５２と、送信フレームキュー管理部１１５３と、送信フレーム列選択転送部１１５４との機能をそれぞれ説明していく。
【００３１】
＜アグリゲーションフレーム長伝達部１１５１＞
アグリゲーションフレーム長伝達部１１５１は、フレーム・アグリゲーション送信制御部１１６１から、現在のアグリゲーションフレームの最大長と、結合途中のアグリゲーション処理において結合可能な残りサイズとを取得する（矢印２１１）。この２つのサイズ情報は常に最新値を取得する。そして、アグリゲーションフレーム長伝達部１１５１は、ＴＣＰ／ＩＰプロトコル処理部１１５２へアグリゲーションフレームの最大長を通知し（矢印２１２）、送信フレーム列選択転送部１１５４へ現在のアグリゲーション処理の結合可能な残りサイズを通知する（矢印２１８）。
【００３２】
＜ＴＣＰ／ＩＰプロトコル処理部１１５２＞
ＴＣＰ／ＩＰプロトコル処理部１１５２は、主にＴＣＰプロトコル／ＩＰプロトコルのプロトコル処理を実行する。ＴＣＰプロトコル処理においては、アグリゲーションフレーム長伝達部１１５１から、現在のアグリゲーションフレームの最大長を取得し（矢印２１２）、当該最大長に基づいて各ＴＣＰコネクションで一度に送信するデータセグメント数を決定する。そして、決定したセグメント数分のＴＣＰパケットを作成し、送信フレームキュー管理部１１５３へＴＣＰパケットを出力する処理を行う（矢印２１５）。また、上位レイヤの送信データを取得する（矢印２０９）。
【００３３】
ここで、図３乃至図５を参照して、各ＴＣＰコネクションで一度に送信するデータセグメント数の決定方法について説明する。
【００３４】
通常、ＴＣＰプロトコルでは、各ＴＣＰコネクションでバッファリングして送信を待機するデータを、現在の送信ウィンドウサイズまで一度に送信することが可能である。もし、送信待機中のデータサイズよりも、送信ウィンドウサイズが小さいならば、送信ウィンドウ分のデータを最大セグメントサイズＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）で分割することによりＴＣＰデータセグメント数が決定される。なおＭＳＳは、ＴＣＰコネクション確立時に通信相手と折衝して決定するパラメータであり、１個のＴＣＰパケットが運ぶペイロード長の最大値である。
【００３５】
本実施形態では、現在のアグリゲーションフレーム最大長（アグリゲーション送信可能な最大データサイズ）を使用して、ＴＣＰデータセグメントに分割するセグメント数を決定する。図３乃至図５は、ＴＣＰで一度に送信するデータセグメント数がどのように決まるかを説明するための模式図である。
【００３６】
図３は、現在のアグリゲーションフレーム最大長から算出される送信可能サイズ３０３が、現在の送信ウィンドウサイズ３０２や、送信待ちデータサイズ３０１よりも小さい場合の例である。このとき、ＴＣＰ／ＩＰプロトコル処理部１１５２は、現在のアグリゲーションフレーム最大長から算出される送信可能サイズ３０３を、ＭＳＳで分割する。図３ではデータセグメント３０４からデータセグメント３０８までの５つのデータセグメントに分割するようにセグメント数を決定し、５つの送信ＴＣＰパケット３０９を作成する。
【００３７】
また図４は、現在の送信ウィンドウサイズ４０２が、送信待ちデータサイズ４０１や、現在のアグリゲーションフレーム最大長から算出される送信可能サイズ４０３よりも、小さい場合の例である。このとき、ＴＣＰ／ＩＰプロトコル処理部１１５２は、現在の送信ウィンドウサイズ４０２だけを、ＭＳＳで分割する。この結果、データセグメント４０４からデータセグメント４０７までの４つのデータセグメントに分割するようにセグメント数を決定し、４つの送信ＴＣＰパケット４０８を作成する。
【００３８】
また図５は、送信待ちデータサイズ５０１が、現在の送信ウィンドウサイズ５０２や、現在のアグリゲーションフレーム最大長から算出される送信可能サイズ５０３よりも、小さい場合の例である。このとき、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータサイズ５０１だけを、ＭＳＳで分割する。この結果、データセグメント５０４からデータセグメント５０８までの５つのデータセグメントに分割するようにセグメント数を決定し、５つの送信ＴＣＰパケット５０９を作成する。
【００３９】
次に、図６のフローチャートを参照して、図３乃至図５に係る各ＴＣＰコネクションのＴＣＰセグメント分割処理について説明する。
【００４０】
Ｓ６０１において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータが存在するか否かを判定する。送信待ちデータが存在すると判定された場合（Ｓ６０１；ＹＥＳ）、Ｓ６０２へ進む。一方、送信待ちデータが存在しないと判定された場合（Ｓ６０１；ＮＯ）、処理を終了する。
【００４１】
Ｓ６０２において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータサイズ、送信ウィンドウサイズ、現在のアグリゲーションフレーム最大長から算出されるアグリゲーション送信可能なデータサイズの中から、最も小さいサイズを選択する。
【００４２】
Ｓ６０３において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、Ｓ６０２で選択されたサイズがどの種類のサイズであるかを判定する。送信待ちデータサイズが選択されたと判定された場合、Ｓ６０４へ進む。送信ウィンドウサイズが選択されたと判定された場合、Ｓ６０５へ進む。アグリゲーション送信可能なデータサイズが選択されたと判定された場合、Ｓ６０６へ進む。
【００４３】
Ｓ６０４において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータをＭＳＳで分割し、Ｓ６０７へ進む。
【００４４】
Ｓ６０５において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータのうち送信ウィンドウサイズ分だけをＭＳＳで分割し、Ｓ６０７へと進む。
【００４５】
Ｓ６０６において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信待ちデータのうちアグリゲーション可能なデータサイズ分だけをＭＳＳで分割し、Ｓ６０７へと進む。
【００４６】
Ｓ６０７において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、分割した各データセグメントをペイロードに持つＴＣＰパケットを作成し、さらにその各ＴＣＰパケットを内包する送信フレームからなる送信フレーム列を生成する。送信フレームとは、ＩＰヘッダ、ＭＡＣヘッダを付加したＭＳＤＵである。なお、ＭＡＣヘッダは、例えばイーサネットフレームヘッダとなる。
【００４７】
Ｓ６０８において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、Ｓ６０７で作成された１以上の送信フレーム列を、送信フレームキュー管理部１１５３にキューイングして、処理を終了する。
【００４８】
なお、Ｓ６０８において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信フレーム列とともに、送信フレームキュー管理部１１５３におけるキュー番号、最新ＡＣＫ番号、タイムスタンプを送信フレームキュー管理部１１５３へ渡す（図２の矢印２１４）。これらのパラメータについての説明を含め、送信フレームキュー管理部１１５３については、後述する。
【００４９】
また、ＴＣＰ／ＩＰプロトコル処理部１１５２は、ＴＣＰ以外のプロトコル処理も実行する。例えば、ＵＤＰ／ＩＰである。また、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）のようなＩＰ以外のフレーム送受信処理も実行する。これらのＴＣＰ以外のプロトコルの送信においては、送信フレームキュー管理部１１５３に対して１つずつ送信フレームを渡す。もし、これらＴＣＰ以外の送信フレームを、フレーム・アグリゲーションで優先的に結合して送信する必要があれば、優先送信フレームとして送信フレームキュー管理部１１５３に渡す。そうでなければ、通常送信フレームとして渡す。  ＜送信フレームキュー管理部１１５３＞
送信フレームキュー管理部１１５３は、ＴＣＰ／ＩＰプロトコル処理部１１５２が作成した各ＴＣＰコネクションの送信フレーム列を個別にキューイングする。また、ＴＣＰ以外の送信フレームについては、通常送信フレームキューと優先送信フレームキューとの２つの送信フレームキューを管理する。これらのキューは、ＴＣＰコネクションの送信フレーム列のキューとは異なり、それぞれ単独のフレーム列を順番にキューイングする。キューイングする送信フレームは、ＩＰパケットを含むものでなくてもよいし、宛先がフレーム毎に異なっていてもよい。なお、本実施形態においては、ローカルＲＡＭ１１０上に各キューの管理情報と、送信フレーム列のキューとを記憶するものとして実装される。
【００５０】
また、送信フレームキュー管理部１１５３は、図７に示すような送信フレームキュー管理情報を扱う。図７の例では、キュー番号７０１、送信Ｒｅａｄｙフラグ７０２、コネクション識別子７０３、送信フレーム数７０４、送信フレーム合計サイズ７０５、最新ＡＣＫ番号７０６、送信Ｒｅａｄｙ・タイムスタンプ７０７、の各パラメータに関して管理情報が整理されている。これらの各パラメータは、ＴＣＰ／ＩＰプロトコル処理部１１５２から通知される（図２の矢印２１４）。
【００５１】
キュー番号０（キュー７０８）は、通常送信フレームキューであり、キュー番号１（キュー７０９）は、優先送信フレームキューである。キュー番号２（キュー７１０）からキュー番号５（キュー７１３）の４つは、ＴＣＰ送信フレームキューである。図７では４つのＴＣＰ送信フレームキューを図示しているが、管理するＴＣＰ送信フレームキューは４つに限定されるものではない。そして、各キューについて、キュー番号７０１の他に、送信Ｒｅａｄｙフラグ７０２、コネクション識別子７０３、送信フレーム数７０４、送信フレーム合計サイズ７０５、最新ＡＣＫ番号７０６、送信Ｒｅａｄｙ・タイムスタンプ７０７といった属性パラメータを管理している。
【００５２】
ただし、キュー番号０の通常送信フレームキューと、キュー番号１の優先送信フレームキューについては、送信Ｒｅａｄｙフラグ７０２および送信フレーム数７０４の２つの属性パラメータだけを管理する。送信Ｒｅａｄｙフラグ７０２は、キューに少なくとも１個以上の送信フレームがキューイングされているときに送信可能であること示す（図７ではＹＥＳと表示されている）。またキューイングしているフレーム数が、送信フレーム数７０４である。その他の属性パラメータは、ＴＣＰ送信フレームキューにだけ適用される。
【００５３】
前述したように、ＴＣＰ／ＩＰプロトコル処理部１１５２は、各ＴＣＰコネクションにおいて、１度に送信するＴＣＰ送信フレーム列を作成し、まとめて送信フレームキュー管理部１１５３に渡す。このとき、ＴＣＰコネクションのキューイングで使用するキュー番号を指定する。また、ＴＣＰ送信フレーム列と共に、ＴＣＰコネクションで相手に送信すべき最新ＡＣＫ番号およびタイムスタンプを渡す（図２の矢印２１４）。
【００５４】
送信フレームキュー管理部１１５３は、指定されたキュー番号の送信フレームキューに、送信フレーム列をキューイングするとともに、渡された最新ＡＣＫ番号およびタイムスタンプを、属性パラメータの最新ＡＣＫ番号７０６と送信Ｒｅａｄｙ・タイムスタンプ７０７として記録する。さらに、当該指定されたキュー番号の送信フレームキューにキューイングされた合計フレームサイズを、属性パラメータの送信フレーム合計サイズ７０５に設定し、送信Ｒｅａｄｙフラグ７０２を“ＹＥＳ”に変更する。また、ＴＣＰ／ＩＰプロトコル処理部１１５２から、ＴＣＰ送信フレーム列ではなく、通常送信あるいは優先送信の送信フレームが渡された場合は、それぞれの送信フレームキューにキューイングすることを記録しておく。また、送信フレームキュー管理部１１５３は、ＴＣＰ／ＩＰプロトコル処理部１１５２へ新規ＴＣＰ送信フレームキューのキュー番号を通知する機能も有する（図２の矢印２１３）。
【００５５】
＜送信フレーム列選択転送部１１５４＞送信フレーム列選択転送部１１５４は、送信フレームキュー管理部１１５３でキューイングしているＴＣＰコネクション毎の送信フレーム列、もしくは、通常送信あるいは優先送信の各送信フレームキューにキューイング中の送信フレーム列から、送信するフレーム列を選択して取得し（図２の矢印２１７）、送信フレームキュー番号を取得し（矢印２１６）、フレーム・アグリゲーション送信制御部１１６１へ転送する処理を実行する（矢印２１９）。このとき、同一のＴＣＰコネクションの送信フレーム列は、１つのアグリゲーションフレームに結合されるような制御を行う。
【００５６】
以下図８、図９、図１０のフローチャートを参照して、送信フレーム列選択転送部１１５４の処理を説明する。図８は、送信フレーム列選択転送部１１５４による送信フレーム列を選択する処理の手順を示すフローチャートである。
【００５７】
Ｓ８０１において、送信フレーム列選択転送部１１５４は、現在のアグリゲーション処理の結合可能な残りサイズを取得する。前述の通り、この残りサイズは、アグリゲーションフレーム長伝達部１１５１から通知されるものである。
【００５８】
Ｓ８０２において、送信フレーム列選択転送部１１５４は、Ｓ８０１で取得した残りサイズが閾値以上であるか否かを判定する。残りサイズが閾値以上であると判定された場合（Ｓ８０２；ＹＥＳ）、Ｓ８０３へ進む。一方、残りサイズが閾値未満であると判定された場合（Ｓ８０２；ＮＯ）、Ｓ８１１へ進む。
【００５９】
Ｓ８０３において、送信フレーム列選択転送部１１５４は、送信フレームキュー管理部１１５３が管理する優先送信フレームキューが空であるか（キューイングしている送信フレームがないか）否かを判定する。優先送信フレームキューが空であると判定された場合（Ｓ８０３；ＹＥＳ）、Ｓ８０４へ進む。一方、優先送信フレームキューが空でないと判定された場合（Ｓ８０３；ＮＯ）、Ｓ８０７へ進む。
【００６０】
Ｓ８０４において、送信フレーム列選択転送部１１５４は、送信フレームキュー管理部１１５３が管理するＴＣＰ送信フレームキューの中に、送信可能なＴＣＰフレーム送信キューがあるか否かを判定する。送信可能なＴＣＰフレーム送信キューがあると判定された場合（Ｓ８０４；ＹＥＳ）、Ｓ８０５へ進む。一方、送信可能なＴＣＰフレーム送信キューがないと判定された場合（Ｓ８０４；ＮＯ）、Ｓ８０９へ進む。
【００６１】
Ｓ８０５において、送信フレーム列選択転送部１１５４は、送信可能なＴＣＰ送信フレームキューの中で、送信Ｒｅａｄｙ・タイムスタンプ値が最も古いＴＣＰキューを選択する。
【００６２】
Ｓ８０６において、送信フレーム列選択転送部１１５４は、Ｓ８０５で選択されたＴＣＰ送信フレームキューの合計フレームサイズが、現在のアグリゲーション処理の結合可能な残りサイズ以下であるか否かを判定することにより、送信フレームキューにキューイングされた送信フレーム列をまとめてアグリゲーション送信可能であるか否かを判定する。選択されたＴＣＰ送信フレームキューの合計フレームサイズが、現在のアグリゲーション処理の結合可能な残りサイズ以下であるなら、送信フレームキューにキューイングされた送信フレーム列をまとめてアグリゲーション送信可能であると判定できる。Ｓ８０５で選択されたＴＣＰ送信フレームキューの合計フレームサイズでアグリゲーション送信可能であると判定された場合（Ｓ８０６；ＹＥＳ）、Ｓ８０８へ進む。一方、当該合計フレームサイズでアグリゲーション送信不可能であると判定された場合（Ｓ８０６；ＮＯ）、Ｓ８０９へ進む。
【００６３】
Ｓ８０７において、送信フレーム列選択転送部１１５４は、優先送信フレームキューにキューイングしている送信フレームの転送処理を実行する。Ｓ８０７の処理については後述する。
【００６４】
Ｓ８０８において、送信フレーム列選択転送部１１５４は、選択されたＴＣＰ送信フレームキューのフレーム列の転送処理を実行する。Ｓ８０８の処理については後述する。
【００６５】
Ｓ８０９において、送信フレーム列選択転送部１１５４は、送信フレームキュー管理部１１５３が管理する通常送信フレームキューが空であるか（キューイングしている送信フレームがないか）否かを判定する。通常送信フレームキューが空であると判定された場合（Ｓ８０９；ＹＥＳ）、Ｓ８１１へ進む。一方、通常送信フレームキューが空でないと判定された場合（Ｓ８０９；ＮＯ）、Ｓ８１０へ進む。
【００６６】
Ｓ８１０において、送信フレーム列選択転送部１１５４は、通常送信フレームキューにキューイングしている送信フレームの送信処理を実行する。Ｓ８１０の処理については後述する。
【００６７】
Ｓ８１１において、送信フレーム列選択転送部１１５４は、処理を終了するか否かを判定する。処理を終了すると判定された場合（Ｓ８１１；ＹＥＳ）、処理を終了する。一方、処理を終了しないと判定された場合（Ｓ８１１；ＮＯ）、Ｓ８０１へ戻る。
【００６８】
次に、図９のフローチャートを参照して、図８のＳ８０７の優先送信フレームキューからのフレーム転送処理、および、Ｓ８１０の通常送信フレームキューからのフレーム転送処理について説明する。なお、図９に示す処理手順は両転送処理において共通である。
【００６９】
Ｓ９０１において、送信フレーム列選択転送部１１５４は、先頭にキューイングされたフレームサイズが、現在のアグリゲーション処理の結合可能な残りサイズ以下であるか否かを判定する。先頭フレームサイズが残りサイズ以下であると判定された場合（Ｓ９０１；ＹＥＳ）、Ｓ９０２へ進む。一方、先頭フレームサイズが残りサイズより大きいと判定された場合（Ｓ９０１；ＮＯ）、フレーム・アグリゲーション送信制御部１１６１が、現在処理中のフレーム・アグリゲーション処理において先頭フレームが送信できないことを意味するため、処理を終了する。
【００７０】
Ｓ９０２において、送信フレーム列選択転送部１１５４は、キューイング中の先頭フレームを取り出して、フレーム・アグリゲーション送信制御部１１６１へ転送する。
【００７１】
Ｓ９０３において、送信フレーム列選択転送部１１５４は、送信フレームキュー管理部１１５３が管理する通常送信フレームキュー情報（図７のキュー７０８）または優先送信フレームキュー情報（図７のキュー７０９）の情報を更新する。例えば、キューイング中の送信フレームが無くなった場合には、送信Ｒｅａｄｙフラグ７０２が“ＮＯ”と変更する。その後、処理を終了する。
【００７２】
このような送信フレーム列選択転送部１１５４の処理により、ＴＣＰ送信フレームキューに繋がれたＴＣＰ送信フレーム列は、同一のアグリゲーションフレームで送信されることになる。図１０のフローチャートを参照して、図８のＳ８０８のＴＣＰ送信フレームキューから送信フレーム列を転送する処理の手順を説明する。
【００７３】
Ｓ１００１において、送信フレーム列選択転送部１１５４は、ＴＣＰ送信フレームキューから送信フレーム列を取り出して転送する。
【００７４】
Ｓ１００２において、送信フレーム列選択転送部１１５４は、転送後、キュー情報をクリアして、処理を終了する。
【００７５】
以上、本発明の一実施形態に係るフレーム・アグリゲーション制御について説明した。本実施形態によれば、現在のアグリゲーションフレーム長と、個々のＴＣＰにおける送信ウィンドウサイズとに応じて、一度に送信するデータサイズが決定される。そのため、当該データサイズを複数のＴＣＰセグメントに分割して生成する一連のＴＣＰパケットは、同一のアグリゲーションフレームに結合して送出することが可能である。また、各ＴＣＰコネクションの一連の送信フレーム列は、同一アグリゲーションフレームに結合されるように、フレーム・アグリゲーション処理へ渡す動作となる。
【００７６】
次に、ペイロードを含まないＴＣＰのＡＣＫパケットの送信について説明する。ＴＣＰでは、通信相手からのデータ受信に対するＡＣＫパケットが、送信データをペイロードに含まないＴＣＰパケットとして送信されることが多い。
【００７７】
図１１のフローチャートを参照して、ＴＣＰ／ＩＰプロトコル処理部１１５２でペイロード無しＡＣＫパケットを作成したときの送信処理について説明する。
【００７８】
Ｓ１１０１において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信フレームキュー管理部１１５３におけるＴＣＰ送信フレームキューのキューイング状態を確認する。
【００７９】
Ｓ１１０２において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、確認の結果、送信フレームキュー管理部１１５３において、ＡＣＫパケットに係るＴＣＰコネクションの送信フレームキューが、送信フレーム列をキューイングしているか否かを判定する。送信フレーム列がキューイングされていると判定された場合（Ｓ１１０２；ＹＥＳ）、Ｓ１１０３へ進む。送信フレーム列がキューイングされていないと判定された場合（Ｓ１１０２；ＮＯ）、Ｓ１１０４へ進む。
【００８０】
Ｓ１１０３において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、送信フレームキュー管理部１１５３に対して、送信キュー番号と最新ＡＣＫ番号とを通知する。送信フレームキュー管理部１１５３は、Ｓ１１０３において送信キュー番号と最新ＡＣＫ番号とがＴＣＰ／ＩＰプロトコル処理部１１５２から通知されると、指定されたＴＣＰ送信キューにキューイングされている全ての送信フレームについて、フレーム内に格納されたＴＣＰパケットのヘッダのＡＣＫ番号を書き換える。また、書き換え前のＡＣＫ番号と書き換えたＡＣＫ番号とから、ＴＣＰチェックサムを差分計算し、ＴＣＰヘッダのチェックサムフィールド値も書き換える。
【００８１】
Ｓ１１０４において、ＴＣＰ／ＩＰプロトコル処理部１１５２は、ＡＣＫパケットを運ぶ送信フレームを作成し、優先送信キューにキューイングするように、送信フレームキュー管理部１１５３に渡す。
【００８２】
このようにして、ペイロードを含まないＴＣＰのＡＣＫパケットの送信処理が実行される。ＴＣＰ送信フレームキューに、送信フレーム列がキューイングされている場合には、最新のＡＣＫ情報で、キューイングされているＴＣＰパケットについて書き換えることで、キューイング中の送信フレームの合計サイズは増加しない。よって、ＴＣＰ送信フレームキューにキューイング中の送信フレーム列は、そのまま同一のアグリゲーションフレームに結合させることが可能である。一方、ＴＣＰ送信フレームキューに、送信フレーム列がキューイングされていない場合は、ＡＣＫパケットを含む送信フレームが作成される。
【００８３】
なお、優先送信キューにキューイングされたパケットは、図８で説明したように、ＴＣＰ送信フレームキューにキューイングされるフレーム列よりも先に送信される。従って、ＡＣＫパケットは、係るＴＣＰコネクションにおける送信パケットの順序を保ったまま、遅延なくフレーム・アグリゲーション処理に渡されることになる。
【００８４】
以上説明したように、本実施形態によれば、各ＴＣＰコネクションで連続的に送信する一連のＴＣＰパケットを、同一のアグリゲーションフレームに結合して送出することが可能となる。また、そのＴＣＰパケットの送信フレーム列は、同一アグリゲーションフレームに結合されて送信されることとなる。したがって、同一ＴＣＰコネクションの一連のデータパケットがフレーム・アグリゲーションにより連続的に送信されるので、ＴＣＰ通信の送信スループットを向上させることが可能となる。
【００８５】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013251737.tif 000003
【図２】
2013251737.tif 000004
【図３】
2013251737.tif 000005
【図４】
2013251737.tif 000006
【図５】
2013251737.tif 000007
【図６】
2013251737.tif 000008
【図７】
2013251737.tif 000009
【図８】
2013251737.tif 000010
【図９】
2013251737.tif 000011
【図１０】
2013251737.tif 000012
【図１１】
2013251737.tif 000013