(57)【要約】【課題】複数の回線を含む論理的な通信路の確立時に特定の回線で輻輳等が発生してもデータの送受信ができる通信装置を提供する。【解決手段】複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、複数の第１のアドレス情報のそれぞれに対して、対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、第１の受信ウィンドウ情報に基づいて対向装置への第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、第１の受信ウィンドウ情報に基づいて複数の第１のアドレス情報のいずれかを使用して、対向装置へ第１の送信データを送信し、対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段とを備える。【選択図】      図１
2015029235.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、
前記複数の第１のアドレス情報のそれぞれに対して、前記対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、前記第１の受信ウィンドウ情報に基づいて前記対向装置への第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、
前記第１の受信ウィンドウ情報に基づいて前記複数の第１のアドレス情報のいずれかを使用して、前記対向装置へ前記第１の送信データを送信し、前記対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記第１の回線制御手段は、前記第１の受信ウィンドウ情報に基づいて、前記複数の回線からの送信の開始及び停止を制御する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１の回線制御手段は、前記対向装置への死活確認に対する応答に基づいて、前記複数の回線からの送信の開始及び停止を制御する
ことを特徴とする請求項１に記載の通信装置。
【請求項４】
ＳＣＴＰを使用して前記対向装置と通信を行う
ことを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
複数の第１のアドレス情報を使用して通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、前記複数の第１のアドレス情報のそれぞれに対して、第１の受信ウィンドウ情報を管理し、前記第１の受信ウィンドウ情報に基づいて第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、前記第１の受信ウィンドウ情報に基づいて前記複数の第１のアドレス情報のいずれかを使用して、前記第１の送信データを送信し、第２の受信ウィンドウ情報を受信する第１の通信手段と、を備えた第１の通信装置に、複数の第２のアドレス情報を使用して、前記複数の回線を含む論理的な通信路によりに接続され、
前記複数の第２のアドレス情報のそれぞれについて、前記第１の通信装置から受信可能なデータサイズである第２の受信ウィンドウ情報を管理する第２のウィンドウサイズ管理手段と、
前記複数の第２のアドレス情報のいずれかを使用して、前記第１の通信装置から前記第１の送信データを受信し、前記第１の通信装置へ前記第２の受信ウィンドウ情報を送信する第２の通信手段と、
を備えることを特徴とする通信装置。
【請求項６】
ＳＣＴＰを使用して前記第１の通信装置と通信を行う
ことを特徴とする請求項５に記載の通信装置。
【請求項７】
複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、
前記複数の第１のアドレス情報のそれぞれに対して、第１の受信ウィンドウ情報を管理し、前記第１の受信ウィンドウ情報に基づいて第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、
前記第１の受信ウィンドウ情報に基づいて前記複数の第１のアドレス情報のいずれかを使用して、前記第１の送信データを送信し、第２の受信ウィンドウ情報を受信する第１の通信手段と、
を含む第１の通信装置と、
複数の第２のアドレス情報を使用して、前記複数の回線を含む論理的な通信路により前記対向装置として前記第１の通信装置に接続され、
前記複数の第２のアドレス情報のそれぞれについて、前記第１の通信装置から受信可能なデータサイズである前記第２の受信ウィンドウ情報を管理する第２のウィンドウサイズ管理手段と、
前記複数の第２のアドレス情報のいずれかを使用して、前記第１の通信装置から前記第１の送信データを受信し、前記第１の通信装置へ前記第２の受信ウィンドウ情報を送信する第２の通信手段と、
を含む第２の通信装置と、
を備えることを特徴とする通信システム。
【請求項８】
複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御し、
前記複数の第１のアドレス情報のそれぞれに対して、前記対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、前記第１の受信ウィンドウ情報に基づいて前記対向装置への第１の送信データを保持するメモリ領域を動的に割り当て、
前記第１の受信ウィンドウ情報に基づいて前記複数の第１のアドレス情報のいずれかを使用して、前記対向装置へ前記第１の送信データを送信し、前記対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する
ことを特徴とする通信方法。
【請求項９】
通信装置の備えるコンピュータを、
複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、
前記複数の第１のアドレス情報のそれぞれに対して、前記対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、前記第１の受信ウィンドウ情報に基づいて前記対向装置への第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、
前記第１の受信ウィンドウ情報に基づいて前記複数の第１のアドレス情報のいずれかを使用して、前記対向装置へ前記第１の送信データを送信し、前記対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段と、
して機能させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信システム、通信方法、及び通信プログラムに関し、特に、ウィンドウ制御を行う、通信装置、通信システム、通信方法、及び通信プログラムに関する。
【背景技術】
【０００２】
フロー制御とは、通信ネットワークにおいて、受信側ノードが処理可能なデータ量を超えて、送信側ノードがデータを送信することを防ぐように、データの送信量を制御することである。
【０００３】
ＴＣＰ（Transmission Control Protocol）やＳＣＴＰ（Stream Control Transmission Protocol）等のフロー制御では、「スライディングウィンドウ」という方式が使われる。「スライディングウィンドウ」方式では、受信バッファの空き領域は「ウィンドウ」と呼ばれる。送信側は、受信側のウィンドウのサイズ以下のデータであれば、受信側からの応答を待たずに送信する。そのため、「スライディングウィンドウ」方式では、単に送信の停止及び再開が制御されるフロー制御方式と比べて、より速い通信速度の下で、フロー制御が実現される。
【０００４】
ＴＣＰにおけるフロー制御技術の一例が、特許文献１に開示されている。特許文献１のデータ配信管理装置は、宛先の受信バッファの空き容量が十分でない場合、送信元からの転送データをデータ配信管理装置の受信バッファに一時保存する。データ配信管理装置は、宛先のウィンドウ情報に基づいて、宛先の受信バッファが十分に回復したと判断されるまでデータ転送を中断する。データ配信管理装置は、宛先からのデータセグメントのＴＣＰヘッダのウィンドウフィールドを参照し、ウィンドウサイズ情報を得る。データ配信管理装置は、ウィンドウサイズ情報に基づいて、宛先における受信バッファの空き容量が十分に回復したと判断された時点で、宛先へのデータ転送を再開する。
【０００５】
上記の動作の結果、特許文献１のデータ配信管理装置は、宛先における受信バッファのオーバーフローを防ぐ。
【０００６】
ＳＣＴＰでは、受信側のデータ処理の状況に応じてチャンク（ＳＣＴＰにおけるノード間で送受信されるデータの単位）の送信を制御するために、受信ウィンドウ変数を用いて、受信ウィンドウサイズの制御、すなわち、フロー制御を行う。
【０００７】
受信ウィンドウ変数には、「受信ウィンドウ量」（ｒｗｎｄ、Receiver Window）、及び「受信ウィンドウ保証量広告」（ａ＿ｒｗｎｄ、Advertised Receiver Window Credit）が含まれる。ｒｗｎｄは、対向装置が受信可能なデータサイズ（対向装置の受信バッファの空きサイズ）を示す変数（情報）である。ａ＿ｒｗｎｄは、自装置が受信可能なデータサイズ（自装置の受信バッファの空きサイズ）を示す変数（情報）である。
【０００８】
ＳＣＴＰは、更に、回線の冗長化を目的として「マルチホーミング機能」を有する。マルチホーミング機能とは、複数のＩＰ（Internet Protocol）アドレスを含めたアソシエーション（ＳＣＴＰにおけるセッションの呼称）を確立することを可能とする機能である。マルチホーミング機能を用いることにより、アソシエーションは、代替の回線を持つことができ、回線の障害に対する冗長化を実現することができる。
【０００９】
図６は、ＳＣＴＰを用いて接続されたノードを含むシステムの構成の一例を示すブロック図である。
【００１０】
ＳＣＴＰノード４１０と対向ＳＣＴＰノード５１０は、マルチホーミングのアソシエーション２１５により接続される。アソシエーション２１５は、通信回線２２０、及び通信回線２３０を含む。
【００１１】
ＳＣＴＰノード４１０は、アソシエーション２１５に対する、それぞれ、受信ウィンドウ変数ｒｗｎｄ及びａ＿ｒｗｎｄであるｒｗｎｄ＿ｘ及びａ＿ｒｗｎｄ＿ｘを保持する。ＳＣＴＰノード４１０の送信用バッファ４５０及び受信用バッファ４６０において、それぞれ、ｒｗｎｄ＿ｘ及びａ＿ｒｗｎｄ＿ｘを用いて、受信ウィンドウサイズの制御が行われる。
【００１２】
対向ＳＣＴＰノード５１０は、アソシエーション２１５に対する、それぞれ、受信ウィンドウ変数ｒｗｎｄ及びａ＿ｒｗｎｄであるｒｗｎｄ＿Ｘ及びａ＿ｒｗｎｄ＿Ｘを保持する。対向ＳＣＴＰノード５１０の送信用バッファ５５０及び受信用バッファ５６０において、それぞれ、ｒｗｎｄ＿Ｘ及びａ＿ｒｗｎｄ＿Ｘを用いて、受信ウィンドウサイズの制御が行われる。
【００１３】
対向ＳＣＴＰノード５１０は、受信用バッファ５６０の空き領域のサイズをａ＿ｒｗｎｄ＿Ｘに設定し、ａ＿ｒｗｎｄ＿ＸをＳＣＴＰノード４１０へ通知する。
【００１４】
ＳＣＴＰノード４１０は、対向ＳＣＴＰノード５１０からのａ＿ｒｗｎｄ＿Ｘの通知に基づいてｒｗｎｄ＿ｘを更新し、ｒｗｎｄ＿ｘに基づいて対向ＳＣＴＰノード５１０へ送信用バッファ４５０中のデータを送信する。
【００１５】
ＳＣＴＰノード４１０は、受信用バッファ４６０の空き領域のサイズをａ＿ｒｗｎｄ＿ｘに設定し、ａ＿ｒｗｎｄ＿ｘを対向ＳＣＴＰノード５１０へ通知する。
【００１６】
対向ＳＣＴＰノード５１０は、ＳＣＴＰノード４１０からのａ＿ｒｗｎｄ＿ｘの通知に基づいてｒｗｎｄ＿Ｘを更新し、ｒｗｎｄ＿Ｘに基づいてＳＣＴＰノード４１０へ送信用バッファ５５０中のデータを送信する。
【００１７】
上述のように、ＳＣＴＰノード４１０は、アソシエーション単位でｒｗｎｄ及びａ＿ｒｗｎｄを保持する。つまり、マルチホーミングの場合であっても、ＳＣＴＰノード４１０は、単一のｒｗｎｄ及びａ＿ｒｗｎｄを用いて受信ウィンドウサイズの制御を行う。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２００２−２４７１３２号公報（第６−１２ページ、図１―３）
【発明の概要】
【発明が解決しようとする課題】
【００１９】
上述のＳＣＴＰにおけるフロー制御の例では、複数の回線を用いる場合であっても、単一のｒｗｎｄ及びａ＿ｒｗｎｄにより受信ウィンドウサイズが制御される。そのため、特定の回線（例えば、通信回線Ａ）における、受信処理の輻輳、回線の通信品質の低下、回線の故障等（以下、「輻輳等」という。）の発生によりｒｗｎｄ又はａ＿ｒｗｎｄが０に近づくと、輻輳等が発生した特定の回線及び輻輳等が発生していない他の回線（例えば、通信回線Ｂ）において送受信可能なデータ量が共に０に近づく。従って、輻輳等が発生していない他の回線においてもチャンクの送受信ができなくなるという現象が発生する。
【００２０】
つまり、上述のＳＣＴＰにおけるフロー制御の例では、ＳＣＴＰにおけるマルチホーミングのアソシエーションのような、複数の回線を含む論理的な通信路（集約パス）確立時に、特定の回線で輻輳等が発生すると、輻輳等が発生していない他の回線でもデータチャンク等のデータの送受信ができないという問題がある。
（発明の目的）
本発明の目的は、複数の回線を含む論理的な通信路の確立時に特定の回線で輻輳等が発生しても、データの送受信ができる、通信装置、通信システム、通信方法、及び通信プログラムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明の通信装置は、複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、複数の第１のアドレス情報のそれぞれに対して、対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、第１の受信ウィンドウ情報に基づいて対向装置への第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、第１の受信ウィンドウ情報に基づいて複数の第１のアドレス情報のいずれかを使用して、対向装置へ第１の送信データを送信し、対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段と、を備えることを特徴とする。
【００２２】
本発明の通信システムは、複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、複数の第１のアドレス情報のそれぞれに対して、第１の受信ウィンドウ情報を管理し、第１の受信ウィンドウ情報に基づいて第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、第１の受信ウィンドウ情報に基づいて複数の第１のアドレス情報のいずれかを使用して、第１の送信データを送信し、対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段と、を含む第１の通信装置と、複数の第２のアドレス情報を使用して通信するための複数の回線を含む論理的な通信路により前記対向装置として第１の通信装置に接続され、複数の第２のアドレス情報のそれぞれについて、第１の通信装置から受信可能なデータサイズである第２の受信ウィンドウ情報を管理する第２のウィンドウサイズ管理手段と、複数の第２のアドレス情報のいずれかを使用して、第１の通信装置から第１の送信データを受信し、第１の通信装置へ第２の受信ウィンドウ情報を送信する第２の通信手段と、を含む第２の通信装置と、を備えることを特徴とする。
【００２３】
本発明の通信方法は、複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御し、複数の第１のアドレス情報のそれぞれに対して、対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、第１の受信ウィンドウ情報に基づいて対向装置への第１の送信データを保持するメモリ領域を動的に割り当て、第１の受信ウィンドウ情報に基づいて複数の第１のアドレス情報のいずれかを使用して、対向装置へ第１の送信データを送信し、対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信することを特徴とする。
【００２４】
本発明の通信プログラムは、通信装置の備えるコンピュータを、複数の第１のアドレス情報を使用して対向装置と通信するための、複数の回線からの送信の開始及び停止を制御する第１の回線制御手段と、複数の第１のアドレス情報のそれぞれに対して、対向装置が受信可能なデータサイズである第１の受信ウィンドウ情報を管理し、第１の受信ウィンドウ情報に基づいて対向装置への第１の送信データを保持するメモリ領域を動的に割り当てる第１のウィンドウサイズ管理手段と、第１の受信ウィンドウ情報に基づいて複数の第１のアドレス情報のいずれかを使用して、対向装置へ第１の送信データを送信し、対向装置が受信可能なデータサイズである第２の受信ウィンドウ情報を受信する第１の通信手段として機能させることを特徴とする。
【発明の効果】
【００２５】
本発明によれば、複数の回線を含む論理的な通信路の確立時に特定の回線で輻輳等が発生しても、データの送受信ができるという効果がある。
【図面の簡単な説明】
【００２６】
【図１】本発明の第１の実施形態における通信装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態における通信装置のハードウェア構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態における通信装置の動作を示すフローチャートである。
【図４】本発明の第１の実施形態における通信装置の処理手順の具体例を説明するための図である。
【図５】本発明の第２の実施形態における通信装置の構成の一例を示すブロック図である。
【図６】ＳＣＴＰを用いて接続されたノードを含むシステムの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２７】
以下、本発明の実施形態について図面を参照して詳細に説明する。尚、すべての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
（第１の実施形態）
図１は、本実施形態における通信装置の構成の一例を示すブロック図である。
【００２８】
まず、本実施形態における通信装置１１０を含む通信システムについて説明する。通信システムは、送信側の通信装置１１０と、受信側の対向装置３１０とを含む。通信装置１１０と対向装置３１０の間は、集約パス２１０により接続される。集約パス２１０は、通信回線２２０（通信回線Ａ）、及び通信回線２３０（通信回線Ｂ）を含む。
【００２９】
通信装置１１０、対向装置３１０は、例えば、コンピュータ、又は通信機器である。
【００３０】
通信装置１１０は、送信用メモリ領域１５０（送信用メモリ領域ａ）と、送信用メモリ領域１７０（送信用メモリ領域ｂ）と、回線制御手段１２０と、ウィンドウサイズ管理手段１３０と、通信手段１４０とを含む。
【００３１】
送信用メモリ領域ａは、通信装置１１０が通信回線Ａから送信するデータを一時的に保持する。送信用メモリ領域ｂは、通信装置１１０が通信回線Ｂから送信するデータを一時的に保持する。
【００３２】
尚、通信回線Ａ及び通信回線Ｂを同時に通信に利用するためには、通信装置１１０において、通信回線Ａ及び通信回線Ｂに異なるアドレスが割り当てられる必要がある。例えば、対向装置１１０には、予め、通信回線Ａで使用されるＩＰアドレス、及び通信回線Ｂで使用されるＩＰアドレスが設定される。
【００３３】
以下では、ＳＣＴＰにおける「ｒｗｎｄ」及び「ａ＿ｒｗｎｄ」の語を、ＳＣＴＰに限られない一般的な用語として使用する。すなわち、「ｒｗｎｄ」は、対向装置が受信可能なデータサイズ（対向装置の受信バッファの空きサイズ）を示す変数で、「ａ＿ｒｗｎｄ」は、自装置が受信可能なデータサイズ（自装置の受信バッファの空きサイズ）を示す変数である。
【００３４】
ｒｗｎｄ＿ａ及びｒｗｎｄ＿ｂは、それぞれ、通信装置１１０により保持される、通信回線Ａ及び通信回線Ｂに対する受信ウィンドウ変数ｒｗｎｄである。通信装置１１０の送信用メモリ領域ａ及び送信用メモリ領域ｂにおいて、それぞれ、ｒｗｎｄ＿ａ及びｒｗｎｄ＿ｂを用いて、受信ウィンドウサイズの制御が行われる。尚、送信用メモリ領域１７０は、必要に応じて、動的に割り当てられる。
【００３５】
対向装置３１０は、受信用メモリ領域３６０（受信用メモリ領域Ａ）と、受信用メモリ領域３８０（受信用メモリ領域Ｂ）と、ウィンドウサイズ管理手段３３０と、通信手段３４０とを含む。
【００３６】
受信用メモリ領域Ａは、対向装置３１０が通信回線Ａから受信するデータを一時的に保持する。受信用メモリ領域Ｂは、対向装置３１０が通信回線Ｂから受信するデータを一時的に保持する。
【００３７】
尚、通信回線Ａ及び通信回線Ｂを同時に通信に利用するためには、対向装置３１０において、通信回線Ａ及び通信回線Ｂに異なるアドレスが割り当てられる必要がある。例えば、対向装置３１０には、予め、通信回線Ａで使用されるＩＰアドレス、及び通信回線Ｂで使用されるＩＰアドレスが設定される。
【００３８】
ａ＿ｒｗｎｄ＿Ａ及びａ＿ｒｗｎｄ＿Ｂは、それぞれ、対向装置３１０により保持される、通信回線Ａ及び通信回線Ｂに対する受信ウィンドウ変数ａ＿ｒｗｎｄである。対向装置３１０の受信用メモリ領域Ａ及び受信用メモリ領域Ｂにおいて、それぞれ、ａ＿ｒｗｎｄ＿Ａ及びａ＿ｒｗｎｄ＿Ｂを用いて、受信ウィンドウサイズの制御が行われる。
【００３９】
対向装置３１０は、受信用メモリ領域Ａ及び受信用メモリ領域Ｂの空き領域のサイズを、それぞれ、ａ＿ｒｗｎｄ＿Ａ及びａ＿ｒｗｎｄ＿Ｂに設定し、ａ＿ｒｗｎｄ＿Ａ及びａ＿ｒｗｎｄ＿Ｂを通信装置１１０へ通知する。
【００４０】
通信装置１１０は、対向装置３１０からのａ＿ｒｗｎｄ＿Ａ及びａ＿ｒｗｎｄ＿Ｂの通知に基づいて、それぞれ、ｒｗｎｄ＿ａ及びｒｗｎｄ＿ｂを更新し、ｒｗｎｄ＿ａ及びｒｗｎｄ＿ｂに基づいて、それぞれ、対向装置３１０へ送信用メモリ領域ａ及び送信用メモリ領域ｂ中のデータを送信する。
【００４１】
図２は、本実施形態における通信装置のハードウェア構成の一例を示すブロック図である。
【００４２】
通信装置１０１は、記憶装置１０２と、ＣＰＵ（Central Processing Unit）１０３と、キーボード１０４と、モニタ１０５と、Ｉ／Ｏ（Input/Output）１０８とを備え、これらが内部バス１０６で接続されている。記憶装置１０２は、ウィンドウサイズ管理手段１３０等のＣＰＵ１０３の動作プログラムを格納する。ＣＰＵ１０３は、通信装置１０１全体を制御し、記憶装置１０２に格納された動作プログラムを実行し、Ｉ／Ｏ１０８を介してウィンドウサイズ管理手段１３０等のプログラムの実行やデータの送受信を行なう。なお、上記の通信装置１０１の内部構成は一例である。通信装置１０１は、ＣＰＵ１０３、記憶装置１０２、及びＩ／Ｏ１０８のみを備え、外部に備えられた、キーボード１０４、及びモニタ１０５を用いて動作してもよい。
【００４３】
次に、本実施形態の動作を説明する。
【００４４】
図３は、本実施形態における通信装置の動作を示すフローチャートである。
【００４５】
通信装置１１０の通信手段１４０は、通信回線Ａからパケットを受信する（ステップＳ１１）。通信回線Ａからのパケットには、ａ＿ｒｗｎｄ＿Ａが含まれる場合がある。
【００４６】
通信装置１１０のウィンドウサイズ管理手段１３０は、通信回線Ａから受信したパケットにａ＿ｒｗｎｄ＿Ａが含まれるか否かを判別する（ステップＳ１２）。
【００４７】
ウィンドウサイズ管理手段１３０は、ａ＿ｒｗｎｄ＿Ａを受信した場合（ステップＳ１２：Ｙｅｓ）、ｒｗｎｄ＿ａを更新する（ステップＳ１３）。ウィンドウサイズ管理手段１３０は、例えば、ｒｗｎｄ＿ａにａ＿ｒｗｎｄ＿Ａの値を設定する。ウィンドウサイズ管理手段１３０は、ａ＿ｒｗｎｄ＿Ａを受信しない場合（ステップＳ１２：Ｎｏ）、ステップＳ１４の処理へ進む。
【００４８】
ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａと通信回線Ｂ用の送信用メモリ領域ｂについての判定を行う（ステップＳ１４）。
【００４９】
ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａが所定の第１の閾値より小さく、かつ通信回線Ｂ用の送信用メモリ領域ｂが未割当の場合（ステップＳ１４：Ｙｅｓ）、通信回線Ｂ用の送信用メモリ領域ｂを割り当てる（ステップＳ１５）。ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａが所定の第１の閾値以上、又は通信回線Ｂ用の送信用メモリ領域ｂが割り当て済みの場合（ステップＳ１４：Ｎｏ）、ステップＳ１６の処理へ進む。
【００５０】
ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａについての判定を行う（ステップＳ１６）。
【００５１】
通信装置１１０の通信手段１４０は、ｒｗｎｄ＿ａが“０”でない場合（ステップＳ１６：Ｎｏ）、ｒｗｎｄ＿ａの値に基づき通信回線Ａからパケットを送信し（ステップＳ１７）、ステップＳ１１の処理へ戻る。ステップＳ１７において、通信手段１４０が通信回線Ａから送信するデータのサイズは、ｒｗｎｄ＿ａ以下である。通信手段１４０は、通信手段１４０が通信回線Ａから送信したデータのサイズをｒｗｎｄ＿ａから減算してｒｗｎｄ＿ａを更新する。通信手段１４０は、ｒｗｎｄ＿ａが“０”である場合（ステップＳ１６：Ｙｅｓ）、ステップＳ２０の処理に進む。
【００５２】
尚、ステップＳ１６におけるｒｗｎｄ＿ａの値の判定は、対向装置３１０が通信回線Ａを経由したデータの受信が不可能又は困難であるか否かを判断するために行われる。したがって、ステップＳ１６における判定条件は、ｒｗｎｄ＿ａが“０”に等しい場合に加えて、ｒｗｎｄ＿ａが“０”に十分近い（ｒｗｎｄ＿ａが所定の値以下）場合を含んでもよい。あるいは、ステップＳ１６における判定は、通信装置１１０から対向装置３１０への通信回線Ａを経由する死活確認（ＳＣＴＰにおけるＨＥＡＲＴＢＥＡＴチャンク等）に対する、対向装置３１０からの応答の有無等に基づくものでもよい。
【００５３】
通信装置１１０の回線制御手段１２０は、通信回線Ａからのデータ送信を停止し、通信回線Ｂを用いた通信を許可する（ステップＳ２０）。
【００５４】
通信装置１１０の通信手段１４０は、通信回線Ａ及びＢからパケットを受信する（ステップＳ２１）。通信回線Ａ及びＢからのパケットには、ａ＿ｒｗｎｄ＿Ａ又はａ＿ｒｗｎｄ＿Ｂが含まれる場合がある。
【００５５】
通信装置１１０のウィンドウサイズ管理手段１３０は、通信回線Ａ及びＢから受信したパケットにａ＿ｒｗｎｄ＿Ａ又はａ＿ｒｗｎｄ＿Ｂが含まれるか否かを判別する（ステップＳ２２）。
【００５６】
ウィンドウサイズ管理手段１３０は、ａ＿ｒｗｎｄ＿Ａ又はａ＿ｒｗｎｄ＿Ｂを受信した場合（ステップＳ２２：Ｙｅｓ）、それぞれ、ｒｗｎｄ＿ａ又はｒｗｎｄ＿ｂを更新する（ステップＳ２３）。ウィンドウサイズ管理手段１３０は、例えば、ｒｗｎｄ＿ａにａ＿ｒｗｎｄ＿Ａの値を設定するか、又はｒｗｎｄ＿ｂにａ＿ｒｗｎｄ＿Ｂの値を設定する。ウィンドウサイズ管理手段１３０は、ａ＿ｒｗｎｄ＿Ａ又はａ＿ｒｗｎｄ＿Ｂを受信しない場合（ステップＳ２２：Ｎｏ）、ステップＳ２４の処理へ進む。
【００５７】
ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａについての判定を行う（ステップＳ２４）。
【００５８】
ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａが所定の第２の閾値より大きい場合（ステップＳ２４：Ｙｅｓ）、通信回線Ｂ用の送信用メモリ領域ｂを解放し（ステップＳ２５）、ステップＳ２６の処理へ進む。ウィンドウサイズ管理手段１３０は、ｒｗｎｄ＿ａが所定の第２の閾値以下である場合（ステップＳ２４：Ｎｏ）、ステップＳ２７の処理に進む。
【００５９】
通信装置１１０の通信手段１４０は、通信回線Ｂ又はＡからパケットを送信し（ステップＳ２７）、ステップＳ２１の処理へ進む。
【００６０】
ステップＳ２７において、通信手段１４０が通信回線Ｂから送信するデータのサイズはｒｗｎｄ＿ｂ以下であり、通信手段１４０が通信回線Ａから送信するデータのサイズはｒｗｎｄ＿ａ以下である。通信手段１４０は、通信手段１４０が通信回線Ｂから送信したデータのサイズをｒｗｎｄ＿ｂから減算してｒｗｎｄ＿ｂを更新し、又は通信手段１４０が通信回線Ａから送信したデータのサイズをｒｗｎｄ＿ａから減算してｒｗｎｄ＿ａを更新する。
【００６１】
尚、ステップＳ２４におけるｒｗｎｄ＿ａの値の判定は、対向装置３１０が通信回線Ａを経由してデータの受信が不可能又は困難であるか否かを判断するために行われる。したがって、ステップＳ２４における判定は、通信装置１１０から対向装置３１０への通信回線Ａを経由する死活確認（ＳＣＴＰにおけるＨＥＡＲＴＢＥＡＴチャンク等）に対する、対向装置３１０からの応答の有無等に基づくものでもよい。
【００６２】
通信装置１１０の回線制御手段１２０は、通信回線Ａからのデータ送信を許可し（ステップＳ２６）、ステップＳ１１の処理へ進む。
【００６３】
図４は、本実施形態における通信装置の処理手順の具体例を説明するための図である。
【００６４】
図４（ａ）は、通信回線Ｂ用のメモリ領域割当（ステップＳ１５）前のヒープ領域の一例を示す。図示された領域はヒープ領域の一部で、アドレス順に、図示された領域の前後に図示されない領域が続いている。“ｐｒｅｖ＿ｓｉｚｅ”（例えば、領域６０６）は、一連の領域（例えば、領域６０６−６０８）の直前の一連の領域（例えば、領域６０１−６０５）のサイズを示す。“ｓｉｚｅ”（例えば、領域６０７）は、一連の領域（例えば、領域６０６−６０８）のサイズを示す。一連の領域（例えば、領域６０６−６０８）が割当済みならば、データが格納される領域（使用領域。例えば、領域６０８）を“ｕｓｅｄ”で示す。一連の領域（例えば、領域６０１−６０５）が未割当ならば、データが格納されていない領域（空き領域。例えば、領域６０５）を“ｕｎｕｓｅｄ”で示す。一連の領域（例えば、領域６０１−６０５）が未割当ならば、一連の領域には、一連の領域（例えば、領域６０１−６０５）の次の空き領域（図示されない）のアドレスを格納する“ｆｗｄ＿ｐｔｒ”（例えば、領域６０３）と、一連の領域の直前の空き領域（図示されない）のアドレスを格納する“ｂｗｄ＿ｐｔｒ”（例えば、領域６０４）を更に含む。“ｆｗｄ＿ｐｔｒ”及び“ｂｗｄ＿ｐｔｒ”は、メモリの割当又は解放を高速に実行するためのリスト（フリーリスト）を構成するために使われる。
【００６５】
図４（ｂ）は、通信回線Ｂ用のメモリ領域割当（ステップＳ１５）後のヒープ領域の一例を示す。具体的には、図４（ａ）において空き領域であった領域６０５、及び前後の空き領域のアドレスを格納する領域６０３、６０４は、使用領域６０９に変化する。
【００６６】
通信回線Ｂ用のメモリ領域解放（ステップＳ２５）後、ヒープ領域は、通信回線Ｂ用のメモリ領域割当（ステップＳ１５）前と同様な状態に戻る（図４（ａ））。具体的には、図４（ｂ）において使用領域であった領域６０９は、空き領域６０５、及び前後の空き領域のアドレスを格納する領域６０３、６０４に変化する。
【００６７】
以上説明したように、本実施形態における通信装置１１０では、通信回線Ａを経由する通信、及び通信回線Ｂを経由する通信は、それぞれ、受信ウィンドウ変数ｒｗｎｄ＿ａ及びｒｗｎｄ＿ｂを利用して、フロー制御される。
【００６８】
従って、本実施形態における通信装置１１０は、複数の回線を含む論理的な通信路の確立時に特定の回線で輻輳等が発生しても、データの送受信ができる。
【００６９】
尚、本実施形態における通信装置１１０では、通信回線Ｂを経由する通信を行う場合に、送信用メモリ領域ｂが動的に割り当てられ、通信回線Ｂを経由する通信を行わない場合に、送信用メモリ領域ｂが解放される。
【００７０】
従って、本実施形態における通信装置１１０は、輻輳等が発生していないときに、送信用メモリ領域ｂが静的に割り当てられる場合に比べて、より多くのメモリ領域を節約できる。
（第２の実施形態）
本実施形態では、通信装置と対向装置が相互にデータを送受信する場合の構成について説明する。
【００７１】
本実施形態の説明においては、第１の実施形態と本実施形態とで共通する説明は省略し、第１の実施形態に対する本実施形態の相違点のみについて説明する。
【００７２】
図５は、本実施形態における通信装置の構成の一例を示すブロック図である。
【００７３】
本実施形態における通信装置１１５は、第１の実施形態における通信装置１１０が有する機能に加え、第１の実施形態における対向装置３１０が有するものと同じ機能を有する。
【００７４】
同様に、本実施形態における対向装置３１５は、第１の実施形態における対向装置３１０が有する機能に加え、第１の実施形態における通信装置１１０が有するものと同じ機能を有する。
【００７５】
つまり、本実施形態における通信装置１１５及び対向装置３１５は、双方向に第１の実施形態と同様のフロー制御を行う。
【００７６】
本実施形態における対向装置３１５は、第１の実施形態における対向装置３１０の構成に加えて、送信用メモリ領域３５０（送信用メモリ領域Ａ）と、送信用メモリ領域３７０（送信用メモリ領域Ｂ）と、回線制御手段３２５とを更に含む。
【００７７】
送信用メモリ領域３５０は、通信回線Ａから送信するデータを一時的に保持する。送信用メモリ領域３７０は、通信回線Ｂから送信するデータを一時的に保持する。
【００７８】
ｒｗｎｄ＿Ａ及びｒｗｎｄ＿Ｂは、それぞれ、対向装置３１０により保持される、通信回線Ａ及び通信回線Ｂに対する受信ウィンドウ変数ｒｗｎｄである。対向装置３１５の送信用メモリ領域Ａ及び送信用メモリ領域Ｂにおいて、それぞれ、ｒｗｎｄ＿Ａ及びｒｗｎｄ＿Ｂを用いて、受信ウィンドウサイズの制御が行われる。
【００７９】
本実施形態における通信装置１１５は、第１の実施形態における通信装置１１０の構成に加えて、受信用メモリ領域１６０（受信用メモリ領域ａ）と、受信用メモリ領域１８０（受信用メモリ領域ｂ）とを更に含む。
【００８０】
受信用メモリ領域ａは、通信回線Ａから受信するデータを一時的に保持する。受信用メモリ領域ｂは、通信回線Ｂから受信するデータを一時的に保持する。
【００８１】
ａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂは、それぞれ、通信装置１１５により保持される、通信回線Ａ及び通信回線Ｂに対する受信ウィンドウ変数ａ＿ｒｗｎｄである。通信装置１１５の受信用メモリ領域ａ及び受信用メモリ領域ｂにおいて、それぞれ、ａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂを用いて、受信ウィンドウサイズの制御が行われる。尚、受信用メモリ領域ｂは、必要に応じて、動的に割り当てられる。
【００８２】
通信装置１１５は、受信用メモリ領域ａ及び受信用メモリ領域ｂの空き領域のサイズを、それぞれ、ａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂに設定し、ａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂを対向装置３１５へ通知する。具体的には、例えば、通信装置１１５のウィンドウサイズ管理手段１３５は、通信回線Ａ及び通信回線Ｂから受信したデータについて、それぞれ、受信したデータ長分をａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂから減算し、上位層に渡したデータ長分をａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂに加算する。
【００８３】
対向装置３１５は、通信装置１１５からのａ＿ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ｂの通知に基づいて、それぞれ、ｒｗｎｄ＿Ａ及びｒｗｎｄ＿Ｂを更新し、ｒｗｎｄ＿Ａ及びｒｗｎｄ＿Ｂに基づいて、それぞれ、通信装置１１５へ送信用メモリ領域Ａ及び送信用メモリ領域Ｂ中のデータを送信する。
【００８４】
以上説明したように、本実施形態における通信装置１１５では、通信回線Ａを経由する通信、及び通信回線Ｂを経由する通信は、それぞれ、受信ウィンドウ変数ｒｗｎｄ＿ａ及びａ＿ｒｗｎｄ＿ａ、並びにｒｗｎｄ＿ｂ及びａ＿ｒｗｎｄ＿ｂを利用して、双方向にフロー制御される。
【００８５】
従って、本実施形態における通信装置１１０は、複数の回線を含む論理的な通信路の確立時に特定の回線で輻輳等が発生しても、双方向にデータの送受信ができる。
【００８６】
第１及び第２の実施形態では、通信装置と対向装置間が２本の通信回線で接続される場合について説明したが、本発明の通信装置間の通信回線は３本以上であってもよい。すなわち、通信回線を、使われる優先度が最も低い１本の回線と、その他の回線を含む仮想的な１本の回線とに分ければ、優先度が最も低い１本の回線を第１の実施形態における通信回線Ｂと、仮想的な１本の回線を第１の実施形態における通信回線Ａとみなすことができる。
【００８７】
第１及び第２の実施形態では、通信装置がヒープ領域から送受信用メモリ領域を確保する場合について説明したが、本発明の通信装置はスタック領域から送受信用メモリ領域を確保してもよい。
【００８８】
第１及び第２の実施形態では、通信装置がＳＣＴＰにおけるアソシエーションに類似のアソシエーションにより通信を行う場合について説明したが、本発明の通信装置はその他のプロトコルで複数のアドレスを使用して通信を行ってもよい。例えば、ＴＣＰをマルチホーミングのセッション確立可能とするように変更した際に、本発明と同様のｒｗｎｄ及びａ＿ｒｗｎｄを使用することにより、輻輳等の発生時の運用性が高まる効果が期待できる。
【００８９】
第１及び第２の実施形態では、通信装置が回線単位にｒｗｎｄ及びａ＿ｒｗｎｄに保持する場合について説明したが、本発明の通信装置は、更に、アソシエーション単位にｒｗｎｄ及びａ＿ｒｗｎｄを保持してもよい。これにより、通信装置は、アソシエーション毎の送信の可否を一度に判定できる。
【００９０】
第１及び第２の実施形態では、通信装置が回線単位にｒｗｎｄ及びａ＿ｒｗｎｄに保持する場合について説明したが、本発明の通信装置は、更に、アソシエーション内で、複数のＩＰアドレスを含むグループ単位にｒｗｎｄ及びａ＿ｒｗｎｄを保持してもよい。例えば、通信装置は、複数の有線回線のＩＰアドレスを含むグループと、複数の無線回線のＩＰアドレスを含むグループとに対して、ｒｗｎｄ及びａ＿ｒｗｎｄを保持してもよい。これにより、通信装置は、障害が関連して発生するグループ毎にｒｗｎｄ及びａ＿ｒｗｎｄを保持することで、受信ウィンドウサイズを効率よく管理することができる。
【００９１】
尚、図３の通信装置の各処理は、ソフトウェアによって実行されてもよい。すなわち、各処理を行うためのコンピュータプログラムが、通信装置が備えるＣＰＵ（図２：９０３）によって読み込まれ、実行されてもよい。プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。そして、上記のプログラムは、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【００９２】
あるいは、各処理は、個別の回路等の構成要素によって実行されてもよい。
【００９３】
尚、本願発明は、上述の実施形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することができる。
【図１】
2015029235.tif 000003
【図２】
2015029235.tif 000004
【図３】
2015029235.tif 000005
【図４】
2015029235.tif 000006
【図５】
2015029235.tif 000007
【図６】
2015029235.tif 000008