(57)【要約】【課題】通信装置のコストの増大とデータ送信のスループット低下を解決すること。【解決手段】本発明における通信装置１０１は、セッションが確立された対向装置２０１との間におけるデータ送受信制御を行う送受信制御部１１１と、対向装置に対して送信する送信データを一時的に記憶する送信バッファ１２１及び二次記憶装置１２２と、を備える。そして、送信バッファ１２１は、当該送信バッファに対する送信データの記録再生速度が二次記憶装置１２２よりも高速である。さらに、送受信制御部１１１は、送信バッファ全体の使用量が予め設定された閾値以上である場合に、対向装置とのセッションに割当てられた送信バッファの割当領域に、送信データを優先的に記憶すると共に、送信データの一部を二次記憶装置に記憶する、という構成を取る。【選択図】図５
2012151559.tif 000002
【特許請求の範囲】
【請求項１】
セッションが確立された対向装置との間におけるデータ送受信制御を行う送受信制御部と、前記対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置と、を備えると共に、
前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速であり、
前記送受信制御部は、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記送受信制御部は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記送受信制御部は、前記対向装置から受信した受信ウィンドウサイズの値を記憶すると共に、前回受信した受信ウィンドウサイズの値に対する今回受信した受信ウィンドウサイズの値の増減値と、前記前回受信した受信ウィンドウサイズの値と、に基づいて前記対向装置における受信ウィンドウサイズの空き具合を表す値である空き具合情報を算出し、
前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値と、前記送信バッファの予め割当てられた割当領域の値と、を比較して、前記送信バッファの予め割当てられた割当領域の値の方が小さい場合に、当該予め割当てられた割当領域の他に前記新たな割当領域を前記送信バッファに設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信装置。
【請求項４】
請求項３に記載の通信装置であって、
前記送受信制御部は、前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値から前記送信バッファの予め設定された割当領域の値を減算した値の領域を、前記新たな割当領域として前記送信バッファに設定する、
通信装置。
【請求項５】
請求項３又は４に記載の通信装置であって、
前記送受信制御部は、前記送信バッファに記憶されている前記送信データの前記対向装置への送信が完了したときに、前記送信バッファ全体の使用量が予め設定された閾値より小さい場合に、前記二次記憶装置に記憶されている前記送信データの一部を前記送信バッファに移動して記憶し、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値に対応するデータ量分だけ、前記二次記憶装置に記憶されている前記送信データの一部を前記送信バッファに移動して記憶する、
通信装置。
【請求項６】
請求項３乃至５のいずれかに記載の通信装置であって、
前記送受信制御部は、前記対向装置から受信ウィンドウサイズを受信したときに、前記空き具合情報を、以下の式にて算出する。
空き具合情報＝ａ×（前回受信した受信ウィンドウサイズの値に対する今回受信した受信ウィンドウサイズの値の増減値）＋（１−ａ）×前回の空き具合情報
（但し、０＜ａ＜１）
【請求項７】
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置に、
前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する送受信制御部、
を実現させるためのプログラム。
【請求項８】
請求項７に記載のプログラムであって、
前記送受信制御部は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
プログラム。
【請求項９】
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置による通信方法であって、
前記通信装置は、前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信方法。
【請求項１０】
請求項９に記載の通信方法であって、
前記通信装置は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置にかかり、特に、TCP（Transmission Control Protocol）プロトコルを用いる通信装置に関する。
【背景技術】
【０００２】
TCPプロトコルを用いた通信システムの一例が、特許文献１，２に開示されている。TCPプロトコルを用いる通信装置では、輻輳制御を行うため、アプリケーションプログラムが送信しようとしたデータを一度バッファに保存し、対向装置からのACK信号を確認しながら、適切なタイミングでデータを編集したTCPセグメントをIPパケットとして送信する。そして、多数のセッションを扱う必要のある通信装置では、大容量のメインメモリを搭載し、セッション数に応じた送信バッファをメインメモリ上に確保する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２０８９８１号公報
【特許文献２】特開２００５−１２２２３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、送信データを保存するバッファは、送信データのスループットを向上させるべく、データのアクセス速度が高速なメインメモリ上に配置される。しかしながら、メインメモリは記憶装置としては比較的高価であるため、大容量のメインメモリを搭載した場合には、装置コストが増大する、という問題が生じる。一方で、メインメモリに替えて低価格なハードディスクなどの二次記憶装置をバッファとして用いた場合には、一般に二次記憶はアクセス速度が遅いという欠点があるため、かかるアクセス速度の低下により通信装置のスループットが低下する、という問題が生じる。
【０００５】
このため、本発明の目的は、上述した課題である、コストの増大と、通信装置のデータ送信のスループット低下、を解決することができる通信装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一形態である通信装置は、
セッションが確立された対向装置との間におけるデータ送受信制御を行う送受信制御部と、前記対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置と、を備えると共に、
前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速であり、
前記送受信制御部は、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
という構成を取る。
【０００７】
また、本発明の他の形態である通信装置は、
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置に、
前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する送受信制御部、
を実現させるためのプログラムである。
【０００８】
また、本発明の他の形態である通信方法は、
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置による通信方法であって、
前記通信装置は、前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
という構成を取る。
【発明の効果】
【０００９】
本発明は、上記構成により、コストの増大を抑制しつつ、通信装置のデータ送信のスループットの低下を抑制することができる通信装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明における通信装置の構成を示すブロック図である。
【図２】図１に開示した通信装置の動作を示すフローチャートである。
【図３Ａ】図１に開示した通信装置の動作を示すフローチャートである。
【図３Ｂ】図１に開示した通信装置の動作を示すフローチャートである。
【図４】図１に開示した通信装置の動作を示すフローチャートである。
【図５】本発明の付記１における通信装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図４を参照して説明する。図１は、本実施形態における通信装置の構成を示すブロック図であり、図２乃至図４は、通信装置の動作を示すフローチャートである。
【００１２】
［構成］
本実施形態における通信装置１００は、ネットワークを介して接続された対向装置２００である他の通信装置とセッションを確立し、TCPプロトコルにてＴＣＰ／ＩＰ通信を行う装置である。具体的に、通信装置１００は、図１に示すように、当該通信装置が備えた演算装置にプログラムが組み込まれることによって構築された、複数のアプリケーション（ＡＰＬ＿１，２，ｎ等）１１，１２，１３等と、ソケット層２０と、セッション管理部３１及び送信量計算部３２を有するＴＣＰ層３０（送受信制御部）と、ＩＰ層６０と、を備えている。また、通信装置１０は、フラッシュメモリといったメインメモリに形成された送信バッファ４０と、ハードディスクなどの補助記憶装置に形成された二次記憶部５０と、を備えている。なお、上記送信バッファ４０は、当該送信バッファに対するデータの記録再生速度つまりアクセス速度が、上記二次記憶部５０よりも高速なものである。
【００１３】
ここで、図１では、通信装置１００の構成を、ＴＣＰプロトコルでデータ送信を行う構成に絞って記載しているが、本発明における通信装置１００はかかる構成であることに限定されない。通信装置１００は、ＴＣＰ層以外のプロトコルスタック、例えば、ＵＤＰ層なども実装していてもよい。また、図１における白抜きの矢印は、データのやり取りを示しているが、受信の場合を考慮すると、データの流れは双方向である。また、ソケット層２０やＩＰ層６０には受信バッファが存在する。
【００１４】
そして、通信装置１００と対向装置２００とがＴＣＰ通信を行う場合、始めにセッションの確立を行う。セッションの確立は、「ＲＦＣ７９３」に従い実施される。例えば、通信装置１００の中の符号１１に示すアプリケーション１１がセッション確立を行ったとすると、確立要求は、アプリケーション１１→ソケット層２０→ＴＣＰ層３０→ＩＰ層６０へと順次処理が流れる。この時に、ＴＣＰ層３０の中のセッション管理部３１によって、セッション管理が開始される。なお、セッション管理部３１は、一般的なＴＣＰの管理情報の他に、送信バッファ４０および二次記憶部５０中における各セッションに対応して予め割当てられた割当領域の使用量を保持している。
【００１５】
ここで、セッション確立後における、通信装置１００から対向装置２００へのデータ送信処理を考える。例えば、符号１１に示すアプリケーション１１がソケット層２０へデータ送信要求を出したとすると、ソケット層２０はプロトコル種別を判断し、種別がＴＣＰであれば、各アプリケーション１１等からの送信要求と送信データをＴＣＰ層３０へ送る。
【００１６】
ＴＣＰ層３０は、受け取った送信データのサイズを調べ、送信バッファ４０に送信データを格納するバッファの割り当てを要求する。このとき、送信バッファ４０は、当該送信バッファ全体の使用量Ｕを把握しており、また、初期化時に割当てられた閾値Ｂを保持している。そして、要求された時点での使用量Ｕと閾値Ｂとの大小関係に応じて、異なった応答を返す。
【００１７】
使用量Ｕが閾値Ｂより小さい場合、送信バッファ４０は、送信データの要求サイズ通りにバッファを割り当て、ＴＣＰ層３０に割り当て領域を通知する。ＴＣＰ層３０は、割当てられた領域に送信データを配置し、ＴＣＰ層３０の処理を行う。ここで、ＴＣＰでの応答待ち処理や輻輳制御等を行うため、一般にソケット層２０からの要求タイミングでは、送信データは一時的に送信バッファ４０に蓄えられ、その後、ＴＣＰ層３０がデータの送信タイミングを決定する。ＴＣＰ層３０は送信データに加工を行い、送信バッファ４０の領域の情報とともに送信要求をＩＰ層６０に指示する。ＩＰ層６０では、ＩＰパケットとして送信データを送信し、送信が終わったデータに対応する送信バッファは、送信バッファ４０に返却される。
【００１８】
次に、使用量Ｕが閾値Ｂ以上であった場合について説明する。この場合、送信バッファ４０は、当該送信バッファが不足しつつあることを、一旦ＴＣＰ層３０に通知する。送信バッファが枯渇しつつある場合、ＴＣＰ層３０は、セッション管理部３１と送信計算部３２に問合せを行う。ＴＣＰ層３０は、セッション管理部３１に対して、送信バッファ４０中のこのセッションに対応して予め設定された「送信バッファの割当領域」と、「輻輳ウィンドウのサイズ」を問い合わせ、送信量計算部３２に対しては、「最近のウィンドウの空き具合情報」を問い合わせる。ここで、上記「輻輳ウィンドウサイズ」は、「ＲＦＣ  ５６８１」やその前のバージョンの「ＲＦＣ  ２５８１」で定義されており、一般にＴＣＰセッションでは計算されている情報である。上記「最近のウィンドウの空き具合情報」は、本願で新たに導入する概念であり、その計算方法の詳細は、後の動作説明時に詳述する。
【００１９】
そして、ＴＣＰ層３０は、「輻輳ウィンドウサイズ」と「最近のウィンドウの空き具合情報」の小さい方の値を計算し、送信バッファ４０中のこのセッションに対応する「送信バッファの割当領域」を比較する。このとき、ＴＣＰ層３０は、送信バッファ４０中のこのセッションに対応する「送信バッファの割当領域」の方が小さければ、その差分に相当する「新たな割当領域」を送信バッファ４０中に確保するよう、再度送信バッファ４０に要求する。そして、ＴＣＰ層３０は、上記「割当領域」と「新たな割当領域」を合わせても足りない送信データのサイズ分は、二次記憶部５０中に確保する。
【００２０】
なお、通信装置が対向装置２００からＴＣＰパケットを受信した時には、ＴＣＰ層３０は、送信量計算部３２に指示を出し、ＴＣＰヘッダ内のＷｉｎｄｏｗフィールドつまり受信ウィンドウサイズを参照し、上記「最近のウィンドウの空き具合情報」を更新する。この更新処理については、後述する。
【００２１】
［動作］
次に、上述した通信装置１００の動作を、図２乃至図４のフローチャートを参照して説明する。まず、図２を参照して、「最近のウィンドウサイズの空き具合情報opw」の算出方法について説明する。
【００２２】
「最近のウィンドウサイズの空き具合情報opw」は、送信量計算部３２にて、TCPのセッション毎に動的に算出される値で、受信TCPパケットのTCPヘッダのWindowフィールドによって更新する。具体的に、送信量計算部３２は、受信したTCPヘッダのWindowフィールド（受信ウィンドウサイズ）の値を記憶しており、Windowフィールドが前回の受信値から変化した場合に、「opw」の更新処理を行う（ステップＳ１でＹｅｓ）。
【００２３】
そして、送信量計算部３２は、今回受信したWindowフィールドから前回のWindowフィールドを引き、これらの間の増減値を計算する（ステップＳ２）。そして、予め設定された平滑化係数ａ（０＜ａ＜１）を使用し、
「ａ×Windowフィールドの増減値＋（１−ａ）×opw」
を新しい「opw」として保持する（ステップＳ３）。
【００２４】
その後、送信量計算部３２が、受信したWindowフィールドの値を、前回のWindowフィールドの値として保持する（ステップＳ４）。
【００２５】
このように、「最近のウィンドウサイズの空き具合情報opw」は、前回のWindowフィールドの値と前回から今回にかけてのWindowフィールドの増減値とを含んでいるため、送信データの受信側となる対向装置２００における受信ウィンドウサイズの急な変化によって、送信バッファ４０の使用量が急激に変化することを抑制することができる。従って、後述するように、送信バッファ４０の使用量を抑制しつつ、スループットの低下を抑制できる。
【００２６】
次に、通信装置１００が対向装置２００に送信データを送信する場合、つまり、ＴＣＰ層３０がソケット層２０から送信データを受信した場合の動作を、図３Ａ及び図３Ｂを参照して説明する。
【００２７】
ここで、送信バッファ４０が管理するメモリ領域は、ＴＣＰ層３０がデフォルト値として持つMSS（Maximum Segment Size）のバイト数単位のブロックとして管理される。すると、送信バッファ４０はMSSの大きさの単位で割当てられるため、送信データがMSSの倍数でない場合、送信バッファ４０には空き領域がある。
【００２８】
ＴＣＰ層３０は、ソケット層２０から送信データを受信すると、セッション管理部３１に問合せ、通信装置１００と対向装置２００とのセッションに対応して送信バッファ４０中に「予め割当てられた割当領域」のサイズを取得し、送信データのサイズと比較する（ステップＳ１１）。そして、送信バッファ４０の「予め割当てられた割当領域」のサイズが送信データのサイズ以上であった場合（ステップＳ１１でＹｅｓ）、ＴＣＰ層３０は、この「割当領域」に送信データを配置して終了する（ステップＳ１２）。
【００２９】
一方、送信バッファ４０の「予め割当てられた割当領域」のサイズが、送信データのサイズ未満であった場合には（ステップＳ１１でＮｏ）、送信データに対して新たに送信バッファ４０を割当てる必要がある。但し、送信バッファ４０が枯渇しつつあるかを判定するために、ＴＣＰ層３０は、送信バッファ４０に問合せて送信バッファ全体の使用量Ｕを取得し、予め設定されている閾値Ｂとの比較を行う（ステップＳ２１）。そして、使用量Ｕが閾値Ｂ未満である場合には（ステップＳ２１でＮｏ）、送信データを格納する領域は全て送信バッファ４０から取得する（ステップＳ２２）。つまり、送信バッファ４０にはまだ余裕があるため、当該送信バッファ４０内に、上述した「予め割当てられた割当領域」の他に、さらに「新たな割当領域」を割り当てる。そして、ＴＣＰ層３０は、送信データを「予め割当てられた割当領域」に可能な限り配置し（ステップＳ２３）、当該「予め割当てられた割当領域」に格納できなかった送信データのうちの残りは、「新たな割当領域」に配置する（ステップＳ２４）。これにより、全ての送信データが、送信バッファ４０に配置される。
【００３０】
送信バッファ４０の「予め割当てられた割当領域」のサイズが、送信データのサイズ未満であり（ステップＳ１１でＮｏ）、送信バッファ４０全体の使用量Ｕが閾値Ｂ以上である場合には（ステップＳ２１でＹｅｓ）、送信バッファ４０の領域に余裕がないため、当該送信バッファ４０に対する新たな領域の割当てが制限される。このため、「新たな割当領域」の許容値を計算するために、ＴＣＰ層３０は、対向装置２００とのセッションに対応する送信バッファ４０の「予め設定された割当領域の値sbuf」と、「最近のウィンドウ空き具合情報opw」と、「輻輳ウィンドウサイズcwnd」とを取得する（ステップＳ３１）。そして、「sbuf」と、「opw」と「cwnd」の最小値と、を比較する（ステップＳ３２）。このとき、「sbuf」の方が小さい場合には（ステップＳ３２でＹｅｓ）、送信バッファ４０内にさらに送信データを格納する領域を割り当てることが可能であるため、「min(opw, cwnd)−sbuf」分の領域を、送信バッファ４０から取得して、送信データを格納する「新たな割当領域」として割当てる（ステップＳ３３）。
【００３１】
そして、送信バッファ４０の「予め設定された割当領域」と「新たな割当領域」を合わせて送信データを保持しきれない場合には、不足分の領域を二次記憶部５０上に確保する（ステップＳ３４）。そして、送信バッファ４０上の領域つまり「予め設定された割当領域」と「新たな割当領域」を優先しつつ、送信データを送信バッファ４０に配置し、送信データの一部である残りは二次記憶部に配置する（ステップＳ３５）。
【００３２】
以上のようにすることで、「opw」と「cwnd」のうちの最小値を上限として、可能な限り送信データを送信バッファ４０に配置することができる。その結果、装置コストを抑制しつつ、スループットの高めることができる。
【００３３】
なお、「sbuf」が「min(opw, cwnd)」以上であった場合には（ステップＳ３２でＮｏ）、送信データを保持するためにさらに必要な領域は、二次記憶部５０から取得する（ステップＳ４１）。そして、送信バッファ４０上の領域つまり「予め設定された割当領域」を優先しつつ、送信データを送信バッファ４０に配置し、送信データの一部である残りは二次記憶部に配置する（ステップＳ４２）。
【００３４】
続いて、ＴＣＰ層３０が、データの送信タイミングと判断し、ＩＰ層６０に要求を出すときの処理について説明する。ＴＣＰ層３０は、送信バッファ４０に配置した送信データのうち、ＴＣＰのアルゴリズムに従った送信データサイズ分だけをＩＰ層６０に送信要求を行う。そして、ＴＣＰ層３０は、ＩＰ層６０が送信バッファ４０に配置された送信データの送信を完了した時点で、送信バッファ４０の割り当てを見直す。ここで、割当ての見直し処理を、図４のフローチャートを参照して説明する。
【００３５】
まず、送信バッファ４０の全体の使用量Ｕが閾値Ｂ以上か否かを判定する（ステップＳ５１）。使用量Ｕの方が小さい場合には（ステップＳ５１でＮｏ）、送信データのうち上述したように送信が完了したもの以外の残りの送信データは、全て送信バッファ４０上に配置されるべきである（ステップＳ５２）。従って、不足の送信バッファがあれば新たに割当て、残りの送信データで二次記憶部５０上に保持されているものがあれば、送信バッファ４０上に移動させる（ステップＳ５３）。
【００３６】
また、使用量Ｕが閾値Ｂ以上である場合には（ステップＳ５１でＹｅｓ）、ＴＣＰ層３０は、送信バッファ４０上において割当てが許容されるサイズを計算するため、「最近のウィンドウ空き具合情報opw」、「輻輳ウィンドウサイズcwnd」を取得する（ステップＳ６１）。この場合は、「min(opw, cwnd)」分だけ残りの送信データを送信バッファ４０に配置し、さらに残りの送信データは、二次記憶部５０に配置すべきである（ステップＳ６２）。従って、送信バッファ４０、二次記憶部５０に配置されている残り送信データの容量が、「min(opw, cwnd)」以下か否かを判断し（ステップＳ６３）、「min(opw, cwnd)」以下であれば（ステップＳ６３でＹｅｓ）、ステップＳ５３と同じ処理を行えばよい。一方、残り送信データの容量が「min(opw, cwnd)」より大きければ（ステップＳ６３でＮｏ）、残りの送信データのうちの「min(opw, cwnd)」以下のサイズ分を送信バッファ４０に割当てて配置し、さらに残りの送信データを二次記憶部５０に割り当てて配置する。なお、いずれの場合も、余分な送信バッファ４０や二次記憶部５０の割当は返却する。
【００３７】
以上のように、本発明によると、ソケット層２０からＴＣＰ層３０へのデータ送信要求時に、「最近のウィンドウの空き具合情報opw」を考慮して、送信データに対して送信バッファ４０を割当てているため、当該送信バッファ４０であるメインメモリの使用量を削減することができる。従って、低コストにてスループットが高く、信頼性の高い通信装置を提供することができる。また、ＴＣＰ層３０からＩＰ層６０へのデータ送信要求時に、「opw」を考慮した送信バッファ見直し処理を行っているため、送信スループットの低下の低減を図ることができる。
【００３８】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における通信装置の構成の概略を、図５を参照して説明する。但し、本発明は、以下の構成に限定されない。
【００３９】
（付記１）
セッションが確立された対向装置２０１との間におけるデータ送受信制御を行う送受信制御部１１１と、前記対向装置２０１に対して送信する送信データを一時的に記憶する送信バッファ１２１及び二次記憶装置１２２と、を備えると共に、
前記送信バッファ１２１は、当該送信バッファ１２１に対する前記送信データの記録再生速度が前記二次記憶装置１２２よりも高速であり、
前記送受信制御部１１１は、前記送信バッファ１２１全体の使用量が予め設定された閾値以上である場合に、前記対向装置２０１とのセッションに割当てられた前記送信バッファ１２１の割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置１２２に記憶する、
通信装置１０１。
【００４０】
（付記２）
付記１に記載の通信装置であって、
前記送受信制御部は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信装置。
【００４１】
（付記３）
付記２に記載の通信装置であって、
前記送受信制御部は、前記対向装置から受信した受信ウィンドウサイズの値を記憶すると共に、前回受信した受信ウィンドウサイズの値に対する今回受信した受信ウィンドウサイズの値の増減値と、前記前回受信した受信ウィンドウサイズの値と、に基づいて前記対向装置における受信ウィンドウサイズの空き具合を表す値である空き具合情報を算出し、
前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値と、前記送信バッファの予め割当てられた割当領域の値と、を比較して、前記送信バッファの予め割当てられた割当領域の値の方が小さい場合に、当該予め割当てられた割当領域の他に前記新たな割当領域を前記送信バッファに設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信装置。
【００４２】
（付記４）
付記３に記載の通信装置であって、
前記送受信制御部は、前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値から前記送信バッファの予め設定された割当領域の値を減算した値の領域を、前記新たな割当領域として前記送信バッファに設定する、
通信装置。
【００４３】
（付記５）
付記３又は４に記載の通信装置であって、
前記送受信制御部は、前記送信バッファに記憶されている前記送信データの前記対向装置への送信が完了したときに、前記送信バッファ全体の使用量が予め設定された閾値より小さい場合に、前記二次記憶装置に記憶されている前記送信データの一部を前記送信バッファに移動して記憶し、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記空き具合情報の値と前記輻輳ウィンドウサイズの値とのうちの最小値に対応するデータ量分だけ、前記二次記憶装置に記憶されている前記送信データの一部を前記送信バッファに移動して記憶する、
通信装置。
【００４４】
（付記６）
付記３乃至５のいずれかに記載の通信装置であって、
前記送受信制御部は、前記対向装置から受信ウィンドウサイズを受信したときに、前記空き具合情報を、以下の式にて算出する。
空き具合情報＝ａ×（前回受信した受信ウィンドウサイズの値に対する今回受信した受信ウィンドウサイズの値の増減値）＋（１−ａ）×前回の空き具合情報
（但し、０＜ａ＜１）
【００４５】
（付記７）
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置に、
前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する送受信制御部、
を実現させるためのプログラム。
【００４６】
（付記８）
付記７に記載のプログラムであって、
前記送受信制御部は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
プログラム。
【００４７】
（付記９）
セッションが確立された対向装置に対して送信する送信データを一時的に記憶する送信バッファ及び二次記憶装置を備えると共に、前記送信バッファは、当該送信バッファに対する前記送信データの記録再生速度が前記二次記憶装置よりも高速である、通信装置による通信方法であって、
前記通信装置は、前記対向装置との間におけるデータ送受信制御を行うと共に、前記送信バッファ全体の使用量が予め設定された閾値以上である場合に、前記対向装置とのセッションに割当てられた前記送信バッファの割当領域に、前記送信データを優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信方法。
【００４８】
（付記１０）
付記９に記載の通信方法であって、
前記通信装置は、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の値と、前記対向装置とのセッションにおいて設定された輻輳ウィンドウサイズの値と、前記対向装置から受信したTCPパケットに含まれる受信ウィンドウサイズの値と、に基づいて、前記対向装置とのセッションに予め割当てられた前記送信バッファの割当領域の他に当該送信バッファにさらに前記送信データを記憶する新たな割当領域を設定し、前記送信データを前記送信バッファの前記割当領域及び前記新たな割当領域に優先的に記憶すると共に、前記送信データの一部を前記二次記憶装置に記憶する、
通信方法。
【符号の説明】
【００４９】
１００  通信装置
１１，１２，１３  アプリケーション
３０  ＴＣＰ層
３１  セッション管理部
３２  送信量計算部
４０  送信バッファ
５０  二次記憶部
６０  ＩＰ層
２００  対向装置
１０１  通信装置
１１１  送受信制御部
１２１  送信バッファ
１２２  二次記憶装置
２０１  対向装置
【図１】
2012151559.tif 000003
【図２】
2012151559.tif 000004
【図３Ａ】
2012151559.tif 000005
【図３Ｂ】
2012151559.tif 000006
【図４】
2012151559.tif 000007
【図５】
2012151559.tif 000008