(57)【要約】      （修正有）【課題】ラウンドトリップ時間の短期的変動の把握や時間計測の精度向上。【解決手段】通信装置が複数の送信データのそれぞれを特定するためのデータと、複数の送信データのそれぞれの送信時刻を示すデータとをメモリに記憶する。通信装置は、確認応答に対応する送信データを特定するためのデータを、確認応答に含まれる情報に基づいてメモリから検索する。そして、通信装置は、検索されたデータで特定される送信データの送信時刻と確認応答を受信した受信時刻とに基づいてラウンドトリップ時間を求める。【選択図】図１９
2010035147.tif 000002
【特許請求の範囲】
【請求項１】
データを送信先に送信し、該送信先からデータを受け取ったことを示す確認応答を受信する通信装置であって、
複数の送信データのそれぞれを特定するためのデータと、複数の送信データのそれぞれの送信時刻を示すデータとを記憶する記憶手段と、
確認応答に対応する送信データを特定するためのデータを、該確認応答に含まれる情報を元に前記記憶手段から検索する検索手段と、
前記検索手段により検索されたデータで特定される送信データの送信時刻と、前記確認応答を受信した受信時刻とに基づいてラウンドトリップ時間を求める手段と、
を有することを特徴とする通信装置。
【請求項２】
前記送信データを特定するためのデータは、送信データの先頭と最後尾を示すデータを含み、前記検索手段は、前記確認応答に含まれる情報に基づいて前記送信データの先頭と最後尾を対象とした範囲内検索を行うことを特徴とする請求項１記載の通信装置。
【請求項３】
前記記憶手段は、データを送信する毎に、送信したデータを特定するためのデータと、送信時刻を示すデータとを記憶することを特徴とする請求項１記載の通信装置。
【請求項４】
データを送信先に送信し、該送信先からデータを受け取ったことを示す確認応答を受信する通信装置におけるラウンドトリップ時間を求める方法であって、
記憶手段が、複数の送信データのそれぞれを特定するためのデータと、複数の送信データのそれぞれの送信時刻を示すデータとをメモリに記憶する記憶工程と、
検索手段が、確認応答に対応する送信データを特定するためのデータを、該確認応答に含まれる情報を元に前記メモリから検索する検索工程と、
求める手段が、前記検索されたデータで特定される送信データの送信時刻と、前記確認応答を受信した受信時刻とに基づいてラウンドトリップ時間を求める工程と、
を有することを特徴とする方法。
【請求項５】
前記送信データを特定するためのデータは、送信データの先頭と最後尾を示すデータを含み、前記確認応答に含まれる情報に基づいて前記送信データの先頭と最後尾を対象とした範囲内検索を行うことを特徴とする請求項４記載の方法。
【請求項６】
データを送信する毎に、送信したデータを特定するためのデータと、送信時刻を示すデータとをメモリに記憶することを特徴とする請求項４記載の方法。
【請求項７】
請求項４乃至６の何れか１項記載のラウンドトリップ時間を求める方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びラウンドトリップ時間を求める方法に関する。
【背景技術】
【０００２】
コネクション型のプロトコルであるＴＣＰでは数種類のタイマを用いて通信途絶を回避している。これらのタイマに設定されるタイムアウト時間は次のようにして決定される。任意のシーケンス番号を保有するセグメントを他方のエンドに送信し、そのシーケンス番号が確認応答されるまでのラウンドトリップ時間を計測し、直前の伝送路の状況や他方のエンドの状況を反映させて決定する。特許文献１には、計測したラウンドトリップ時間に合わせて転送サイズを調整することが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許３４７６９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来では、ラウンドトリップ時間計測は、一回の計測が終了すると、次の計測を行う。したがって、従来は計測間隔が広く、結果として輻輳の発生や、他方のエンドの負荷変動などの急激な状況変化に追随できないという問題を抱える。
【０００５】
また、近年の１０ギガビットのネットワークに代表されるように、通信メディアの広帯域化やネットワーク機器へのＴＯＥ（TCP/IP Offload Engine）組み込みなどが行われている。これにより、通信性能が向上し、ラウンドトリップ時間計測の精度向上が望まれている。
【０００６】
また、動画ストリームの配信やＴＶ会議システムのようなコンテンツをリアルタイムで伝送するなどの応用例ではＱｏＳの向上が望まれる。このＱｏＳの向上の鍵はラウンドトリップ時間の短期的変動の把握や時間計測の精度向上にある。
【０００７】
本発明は、ラウンドトリップ時間計測の精度を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、データを送信先に送信し、該送信先からデータを受け取ったことを示す確認応答を受信する通信装置であって、
複数の送信データのそれぞれを特定するためのデータと、複数の送信データのそれぞれの送信時刻を示すデータとを記憶する記憶手段と、
確認応答に対応する送信データを特定するためのデータを、該確認応答に含まれる情報を元に前記記憶手段から検索する検索手段と、
前記検索手段により検索されたデータで特定される送信データの送信時刻と、前記確認応答を受信した受信時刻とに基づいてラウンドトリップ時間を求める手段と、
を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ラウンドトリップ時間計測の精度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態における通信装置の構成の一例を示すブロック図。
【図２】図１に示すＴＯＥサブシステム１０５の内部構成の一例を示す図。
【図３】ＴＯＥサブシステムにおける複数のサブプロセッサの役割を説明する図。
【図４】本実施形態における通信タイマの構成の一例を示す図。
【図５】本実施形態におけるＲＴＴ計測処理部の構成の一例を示す図。
【図６】ＲＴＴ計測処理部における検索テーブルの構成の一例と、ＲＴＴ計測処理部におけるメモリの構成の一例とを示す図。
【図７】ＲＴＴ計測処理部のメモリに保存される各種情報を示す図。
【図８】本実施形態における検索部を詳しく説明する図。
【図９】本実施形態におけるディスクリプタのデータ構造と、登録／参照データ・バッファの構造と、検索データとを示す図。
【図１０】本実施形態におけるインターフェース部に内蔵するレジスタ・セットの構成を示す図。
【図１１】本実施形態における検索ブロックを詳しく説明する図。
【図１２】本実施形態における検索テーブルの構成と、１１５２ビット・ワードの内訳とを示す図。
【図１３】本実施形態における比較器を詳しく説明する図。
【図１４】本実施形態における比較器コア部を詳しく説明する図。
【図１５】本実施形態における４bit全比較器１の真理値表を示す図。
【図１６】本実施形態における４bit全比較器２の真理値表を示す図。
【図１７】本実施形態の一致検索モードにおけるセレクタの真理値表を示す図。
【図１８】本実施形態の範囲内検索モードにおけるセレクタの真理値表を示す図。
【図１９】本実施形態におけるラウンドトリップ時間の計測方法を説明するためのタイムラインを示す図。
【図２０】本実施形態におけるラウンドトリップ時間計測の終了時の処理を示すフローチャート。
【図２１】本実施形態におけるタイムアウト時間の計算と設定を行う処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。まず、ＴＯＥサブシステムを含む通信装置の構成を、図１及び図２を用いて説明する。尚、ＴＯＥは、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）オフロードエンジンの略である。
【００１２】
図１は、本実施形態における通信装置の構成の一例を示すブロック図である。通信装置には、図１に示すように、各ユニット１０１、１０３、１０５〜１０８、１１０、１１２〜１１４、１１６、１１７が含まれ、それぞれがシステムバス１０２を介して接続されている。尚、システムバス１０２はクロスバースイッチ構造のオンチップバスであり、通信装置で求められる送受信データの並列転送動作が可能である。また、このオンチップバスは、AXI（Advanced eXtensible Interface）プロトコルを追加したオンチップバス規格であるAMBA3.0に準拠している。
【００１３】
主プロセッサ１０１は、電源投入時にフラッシュメモリ１１８内のブートプログラムを実行する。更に、各ハードウェアやサブシステムを初期化後に、ＨＤ（ハードディスク）装置１１１に格納されているソフトウェアを主メモリ１０４上にロードし、ソフトウェアに含まれるＯＳ（オペレーティングシステム）を起動する。主メモリ制御部１０３は、主メモリ１０４へのアクセスを制御する。
【００１４】
ＴＯＥサブシステム１０５は、イーサネット（登録商標）１２０を介して外部のネットワークとの間で行われるデータ通信を制御する。このＴＯＥサブシステム１０５の詳細な構成及び動作については、更に後述する。
【００１５】
割り込み制御部１０６は、各ハードウェアやＴＯＥサブシステム１０５及び無線ＬＡＮサブシステム１１３で割り込みイベントが発生すると、発生した割り込みイベントを予め決められた優先順位に従って主プロセッサ１０１に伝達する。タイマ１０７は、ソフトウェアなどにより起動され、時間計測やタイムアウトイベントを発生させる。表示制御部１０８は、アプリケーションの状態や設定内容などを表示する表示装置１０９を制御する。
【００１６】
二次記憶制御部１１０は、ＨＤ装置１１１へのアクセスを制御する。ＨＤ装置１１１には、通信装置の機能を実現するソフトウェアや関連データ、各サブシステム内のサブプロセッサやシーケンサで動作するマイクロコードと関連データなどが格納されている。更に、通信データや通信装置の動作履歴や通信履歴などの履歴情報も格納される。
【００１７】
主ＤＭＡ制御部１１２は、主プロセッサ１０１と主メモリ１０４との間のデータ転送やメモリ間のデータ転送を制御する。
【００１８】
無線ＬＡＮサブシステム１１３は、IEEE802.11a/b/g/n規格に準拠した無線ＬＡＮ機能を提供する。汎用ＩＯインタフェース１１４は、通信装置の動作モードの設定やＩＰアドレスに代表される各通信パラメータを入力するための入力キー１１５とのインターフェースである。汎用バスインタフェース１１６は、ＰＣＩ（Peripheral Component Interconnect）に代表される汎用バスのインターフェースである。尚、ＰＣＩはPCI Special Interest Groupにより策定され、業界標準の汎用バスである。
【００１９】
メモリ制御部１１７は、書き換え可能な不揮発性メモリであるフラッシュメモリ１１８や高速な一次メモリ（キャッシュ）であるＳＲＡＭ１１９へのアクセスを制御する。尚、このフラッシュメモリ１１８には、起動時に動作するブートプログラムや初期状態設定に必要なパラメータが格納される。更に、起動時に各ハードウェアを制御するためのデバイスドライバや各ハードウェア起動時の設定パラメータなどが保存される。
【００２０】
図２は、図１に示すＴＯＥサブシステム１０５の内部構成の一例を示す図である。サブプロセッサＡ２０１〜Ｅ２０５、バスブリッジ２０６、ＰＣＢ制御部２１０、通信タイマ２１２、共有メモリ２１３、鍵管理部２１４、乱数発生器２１５、暗号器２１６、データパス制御部２１７がサブシステムバス２２０に接続されている。サブシステムバス２２０はクロスバースイッチ接続である。
【００２１】
まず、サブプロセッサＡ２０１〜Ｅ２０５は、メイン側からオフロードされたＴＣＰ／ＩＰプロトコル処理を実行する。サブプロセッサＡ２０１〜Ｅ２０５が実行するファームウェアはＴＯＥサブシステム１０５の初期化時に主メモリ１０４上に展開され、ファームウェアを内蔵するそれぞれの命令キャッシュメモリにロードされて実行される。バスブリッジ２０６は、メイン側のシステムバス１０２とサブシステムバス２２０とを接続するものである。
【００２２】
ＰＣＢ制御部２１０は、各ネットワークプロトコルを処理する場合に必要なコンテキスト情報やその集合体の名称であるＰＣＢの生成と抹消、アクセス制御、保持管理を行う。ＰＣＢはプロトコル制御ブロック（Protocol Control Block）の略である。また、ＰＣＢ制御部２１０には、サブプロセッサＡ２０１〜Ｅ２０５から短時間に参照又は書き換え可能とするためにＰＣＢを一時的に保持するＰＣＢキャッシュメモリ２１１が接続されている。
【００２３】
更に、ＰＣＢ制御部２１０には、複数のＣＡＭ（Content Addressable Memory）２０７、２０８が接続されている。ここで、ＣＡＭ２０７は受信フレームから取り出した情報を検索キーとしてＰＣＢを特定するための検索に用いるメモリである。また、ＣＡＭ２０８は所望のＰＣＢがＰＣＢキャッシュメモリ２１１上にあるか否かを判定するために使用するメモリである。即ち、ＣＡＭは、検索キーであるデータとＣＡＭに登録されたデータが一致した場合に、そのデータが格納されているアドレス情報を検索結果として報告するメモリである。
【００２４】
尚、ＣＡＭの中に複数の同一データがある場合、その全てが報告されるが、本実施形態では同一データが複数あることはない。
【００２５】
通信タイマ２１２は、ＴＣＰ／ＩＰプロトコル処理に必要な時間計測及びタイムアウトイベントを発生させる。共有メモリ２１３は、サブプロセッサＡ２０１〜Ｅ２０５の間の通信と情報を共有するためのメモリである。
【００２６】
鍵管理部２１４は、暗号通信プロトコル処理のために生成した暗号鍵や乱数及び素数を機密保持する。乱数発生器２１５は、ＴＣＰ／ＩＰプロトコル処理及び暗号通信プロトコル処理のための乱数を発生する。暗号器２１６は、IPsecやSSL/TLSなどの暗号通信プロトコル処理を行う。また、AES（Advanced Encryption Standard）暗号器を含む。更に、SHA-1（Secure Hash Algorithm 1）ハッシュ関数器、MD5（Message Digest 5）ハッシュ関数器などを含む。
【００２７】
ＭＡＣ（Media Access Control）２１８は、ＯＳＩ参照モデルのデータリンク層（第２層）に相当するＭＡＣ層のプロトコル処理を扱うハードウェアである。ＰＨＹ（PhysicalLayer Chip）２１９は、ＯＳＩ参照モデルの第１層に相当するＰＨＹ（物理）層のプロトコル処理及び電気信号を扱うハードウェアである。
【００２８】
データパス制御部２１７は、送受信されるデータを一時的に保持するバッファメモリ、バッファメモリを制御するコントローラ、データ転送を行うＤＭＡ制御ユニット、ＤＭＡ処理の最中にチェックサムを演算するチェックサム演算器を含む。
【００２９】
具体的には、データパス制御部２１７は、ＭＡＣ２１８で処理された受信フレームを一時的に保持する受信バッファメモリを含む。更に、受信フレーム中の各階層のプロトコルヘッダをサブプロセッサＡ２０１〜Ｅ２０５が参照可能とする受信バッファメモリコントローラとを含む。また、データパス制御部２１７は、送信データを一時的に保持する送信バッファメモリと、サブプロセッサＡ２０１〜Ｅ２０５が各階層のプロトコルヘッダを保持された送信データに形成可能とするための送信バッファメモリコントローラを含む。データパス制御部２１７のＤＭＡ制御ユニットは、送受信バッファメモリと主メモリ１０４との間のデータ転送や送受信バッファメモリとＭＡＣ２１８との間のデータ転送を行う。
【００３０】
ここで、ＴＯＥサブシステム１０５におけるサブプロセッサＡ２０１〜Ｅ２０５の役割を、図３を用いて説明する。図３は、ＴＯＥサブシステムにおける複数のサブプロセッサの役割を説明するための図である。ＴＯＥサブシステム１０５の処理機能は、主にプロトコルを選択し、データの受け渡しと情報の伝達を中継する、図３に示す３１０の範囲をカバーする。即ち、ＭＡＣ層３０６との間で通信データと通信情報を交換するＭＡＣドライバ３０５、ＩＰプロトコルを処理するインターネット層（ＩＰ層）３０４、ＴＣＰ及びＵＤＰプロトコルを処理するトランスポート層（ＴＣＰ／ＵＤＰ層）３０３の機能をカバーする。また、ソケットＡＰＩ３０２の一部の機能もカバーする。
【００３１】
図３に示すように、これらの機能はサブプロセッサＡ２０１〜Ｅ２０５にそれぞれ分割され処理される。例えば、ソケットＡＰＩ３０２部分の処理をサブプロセッサＡ２０１に割り当てる。また、ＴＣＰ及びＵＤＰプロトコル処理の内、受信動作に関わる処理をサブプロセッサＢ２０２に割り当て、送信動作に関わる処理をサブプロセッサＣ２０３に割り当てる。そして、ＭＡＣドライバ３０５及びＩＰプロトコル処理の内、受信動作に関わる処理をサブプロセッサＤ２０４に割り当て、送信動作に関わる処理をサブプロセッサＥ２０５に割り当てる。
【００３２】
尚、分割の意図は、これら一連のネットワークプロトコル処理を３つのパイプラインステージ３１１〜３１３に分割し、パイプライン動作を行わせることにある。また、送信動作と受信動作を分割することで、それぞれの機能を担当するサブプロセッサ同士が並列的に動作可能となる。
【００３３】
ＴＣＰでは論理チャネル形成の始まりをコネクション確立と称し、終了をコネクション解放と称す。コネクション確立及び解放の間は、エスタブリッシュ状態又はコネクション状態、或いは単にコネクションと称す。２つのネットワークデバイスの間で複数のコネクションを形成することが可能であり、他の複数のネットワークデバイスとの間でも複数のコネクションを形成することが可能である。ここで、コネクションは２つのネットワークデバイス双方のＩＰアドレスとＴＣＰポート番号の４つの情報の組み合わせで表される。これらの情報の組み合わせをソケットペア情報又はソケット情報と称す。コネクション確立後に送受信される各ＴＣＰパケットのＴＣＰヘッダにはソケット情報が含まれる。
【００３４】
ＴＣＰは転送データの到達保証を行う観点から、コネクション間でデータの受信側から送信側に対して確認応答と称する到達確認情報を伝達する。この確認応答処理を行うには、サブプロセッサＢ２０２とサブプロセッサＣ２０３との間で到達確認情報の伝達３１４が必要となる。
【００３５】
この情報伝達と情報共有、パイプラインステージ間の情報伝達と情報共有、パイプラインステージを構成するサブプロセッサＡ２０１〜Ｅ２０５と主プロセッサ１０１との間の情報伝達と情報共有は共有メモリ２１３を介して行われる。もちろん、これらの情報伝達と情報共有を、主メモリ１０４を使って行っても良い。
【００３６】
また、ＴＣＰでは上述した各タイマの他に数種類のタイマがコネクション（ソケット）毎にそれぞれ独立して稼動している。以下、これらのタイマを纏めた本実施形態における通信タイマ２１２の構成を、図４及び図５を用いて説明する。
【００３７】
図４は、本実施形態における通信タイマ２１２の構成の一例を示す図である。図４に示すように、通信タイマ２１２は、通信タイマ２１２全体を制御し、外部とのインターフェース（Ｉ／Ｆ）として機能するタイマ制御部４０１を備える。更に、タイマ及びコネクション毎に持つタイマの初期値を保持する初期値メモリ４０６と、その書き込み及び読み出しを行う初期値メモリ制御部４０２とを備える。
【００３８】
また、タイマ起動中の途中経過を保持する計数値メモリ４０７と、その書き込み及び読み出しを行う計数値メモリ制御部４０４を備える。更に、タイマ制御部４０１の指令で指定されたタイマとコネクションの初期値を初期値メモリ４０６から計数値メモリ４０７へ転送するローダ４０３を備える。また、一定周期で計数値メモリ４０７に格納されているタイマ計数値を読み出しては判定を行い、更新結果を書き戻す処理を行う計時処理部４０５を備える。更に、タイムアウトした際に、タイマの初期値を倍増させて更新する指数バックオフ処理部４０８を備える。
【００３９】
また、コネクション毎の往復時間計測を行い、その計測結果からタイマの初期値を更新するＲＴＴ計測処理部４０９を備える。ここで、タイマの初期値とは、タイマ起動時に、タイマに与えるタイムアウト時間値を指す。また、計時処理部４０５は、判定結果をイベント情報として内蔵するイベントＦＩＦＯに保持し、タイマ制御部４０１に伝達する。
【００４０】
ここで、図４に示すＲＴＴ計測処理部４０９の構成を、図５〜図７を用いて説明する。図５は、本実施形態におけるＲＴＴ計測処理部４０９の構成の一例を示す図である。図５に示すように、ＲＴＴ計測処理部４０９はＲＴＴ計測制御シーケンサ５０３によって制御される。ＴＣＰセグメント送信時に、ラウンドトリップ時間計測を開始する。サブプロセッサＡ２０１〜Ｅ２０５からセグメント送信に関する情報がデータパス制御部２１７を介してＲＴＴ計測制御シーケンサ５０３に伝達される。そして、ＲＴＴ計測制御シーケンサ５０３が伝達された情報の一部を図６に示す（ａ）の形式で検索テーブル５０１に登録し、図６に示す（ｂ）の形式でメモリ５０４に登録する。
【００４１】
図６に示す（ａ）は、ＲＴＴ計測処理部４０９における検索テーブル５０１の構成の一例を示す図である。６０１は開始情報であり、６０２〜６０５に示す情報で構成される。ここで、６０２は開始情報を識別するための識別子である。６０３はコネクション情報であるソケット番号である。６０４はデータ情報である送信セグメントの先頭シーケンス番号を示すシーケンス番号Ａである。６０５はセグメントの最後尾のシーケンス番号を示すシーケンス番号Ｂである。このように、検索テーブル５０１には、ラウンドトリップ時間計測を開始する際に、伝達された情報に含まれる情報の一部が開始情報として登録される。
【００４２】
図６に示す（ｂ）は、ＲＴＴ計測処理部４０９におけるメモリ５０４の構成の一例を示す図である。図６に示す（ｂ）のように、メモリ５０４には識別子６０２、ソケット番号６０３、タイムスタンプ７０２、サイズ７０３で構成される情報７０１が登録される。
【００４３】
その後、ＲＴＴ計測制御シーケンサ５０３は、ＴＣＰ確認応答受信時に一つのラウンドトリップ時間計測を終了するが、その時、図７に示す形式で計測値や計測値から導かれた各種の値を保存する。図７は、本実施形態におけるＲＴＴ計測処理部４０９のメモリ５０４に保存される各種情報を示す図である。ラウンドトリップ時間計測の終了時には、図６に示す（ｂ）の識別子６０２、ソケット番号６０３、タイムスタンプ７０２、サイズ７０３以外の値が追記される。図７において、RTTpre_u_A, RTTpre_u_Bは単位サイズ当たりのラウンドトリップ時間、DEVpre_u_A, DEVpre_u_Bは単位サイズ当たりの偏差値である。これらの値の詳細は、更に後述する。
【００４４】
また、検索部５０２は、ＲＴＴ計測制御シーケンサ５０３から与えられた確認応答のソケット番号と確認応答番号（シーケンス番号）から１を引いた値をそれぞれ検索キーとして、検索テーブル５０１の各開始情報６０１を以下の条件式（１）で検索する。ここで、確認応答番号から１を引くのは、確認応答シーケンス番号は、送信セグメントの最後尾シーケンス番号に１が加えられているからである。
【００４５】
ソケット番号は完全一致、且つ、シーケンス番号Ａ≦検索キーとして与えたシーケンス番号−１≦シーケンス番号Ｂ  …（１）
を満たす。
【００４６】
ここで、検索部５０２の詳細について図８乃至図１８を用いて説明する。図８は、検索テーブル５０１を検索部５０２が含むように構成した例を詳しく説明する図である。検索部５０２は、主要機能である検索、登録、参照、削除などのコマンド処理を、図９に示すディスクリプタ１８０１と付属する各種データ（１９０１、２００１）を読み出して実行する。この読み出しはインターフェース部１３０２に内蔵されたＤＭＡＣ（ダイレクト・メモリ・アクセス・コントローラ）１３０９によって行われる。
【００４７】
インターフェース部１３０２はレジスタ・セット１３０８を含む。レジスタ・セット１３０８の詳細を図１０に示す。レジスタ・セット１３０８はディスクリプタ・アドレス・レジスタ１７０１、ビットマップ・アドレス・レジスタ１７０２及び検索結果アドレス・レジスタ１７０３から構成されている。検索部５０２に対するコマンドの伝達は、外部メモリ１３０７に置いたディスクリプタ１８０１の先頭アドレスをディスクリプタ・アドレス・レジスタ１７０１に書き込むことで行われる。外部メモリ１３０７は、ＴＯＥサブシステム１０５における共有メモリ２１３である。外部メモリ１３０７には、サブプロセッサＡ２０１〜Ｅ２０５、主プロセッサ１０１から情報が書き込まれる。書き込まれたディスクリプタ１８０１の先頭アドレスはインターフェース部１３０２に内蔵されたＦＩＦＯ（ファースト・イン・ファースト・アウト・メモリ）１３１０に一時的に格納される。
【００４８】
検索部５０２は、このＦＩＦＯ１３１０からディスクリプタ１８０１の先頭アドレスを取り出し、この先頭アドレスを手掛かりにディスクリプタ１８０１と付属する各種データ（１９０１、２００１）をＤＭＡＣ１３０９によって読み出し、コマンドを実行する。
【００４９】
レジスタ・セット１３０８内のレジスタの選択はＲＥＧ＿ＡＤＤＲ信号によって行う。このレジスタへの書き込みデータはＷＲＩＴＥ＿ＤＡＴＡ信号で伝達され、ＷＲＩＴＥ＿ＲＥＧ信号でレジスタに書き込まれる。また、このレジスタからの読み出しデータはＲＥＧ＿ＡＤＤＲ信号とＲＥＡＤ＿ＲＥＧ信号で選択され、ＲＥＡＤ＿ＤＡＴＡ信号で検索部５０２の外部に伝達される。
【００５０】
ＤＭＡＣ１３０９は、外部メモリ１３０７のアドレスを選択するＤＭＡ＿ＡＤＤＲ信号のほか、ＤＭＡ＿ＲＥＱ信号とＤＭＡ＿ＲＤＹ信号を使ってＤＭＡ動作を制御する。ＤＭＡ動作中、読み書きされるデータは、ＤＭＡ＿ＷＲＩＴＥ＿ＤＡＴＡ信号やＤＭＡ＿ＲＥＡＤ＿ＤＡＴＡ信号によって伝達される。
【００５１】
本実施形態において検索部５０２は、検索を行う３２個の検索ブロック１乃至３２（１３０３乃至１３０５）を内蔵する。検索ブロック１乃至３２（１３０３乃至１３０５）の内部は共通で、その概略を図１１に示す。各検索ブロックが内蔵するメモリ１４０１は複数個のメモリから構成されているが、トータルビット幅は１１５２ビットである。よって、各検索ブロックが内蔵するメモリ１４０１を全てあわせると１１５２ビット・ワード×１０２４アドレスのメモリとみなせる。本実施形態では、このメモリが検索テーブル５０１であり、そのイメージを図１２の（ａ）に示す。
【００５２】
また、１１５２ビット・ワードの内訳を図１２の（ｂ）に示す。本実施形態では、任意エントリ・アドレスの１１５２ビット・ワードは４ビットごとの９６個の領域から構成されている。ここで１１５２ビット・ワードのデータ２２０１をエントリ登録データと呼称する。
【００５３】
本実施形態において検索モードとは、ビット単位の比較で一致・不一致を判定する一致検索（検索モード＝００）と不一致検索（検索モード＝０１）がある。更に、１個の領域又は隣接した複数の領域を結合した連結領域ごとに、予め設定した上限値と下限値の範囲内にあるか、範囲外にあるかを判定する範囲内検索（検索モード＝１０）と範囲外検索（検索モード＝１１）が用意されている。つまり、領域又は連結領域ごとにＭＯＤＥ［０：１９１］データ２２０４によって検索モードが設定される。また、隣接する領域どうしの結合はＬＩＮＫ［０：９５］データ２２０５によって設定される。ここで、ＬＩＮＫ［０：９５］データ２２０５で９６個の領域の連結状態を指定し、その値が１の場合は後段の領域との分離を、値が０の場合は後段の領域との連結を意味する。更に、ＤＩＳＡＢＬＥ［０：９５］データ２２０６によって未使用領域を設定する。
【００５４】
ＣＯＮＴＡ２２０２及びＣＯＮＴＢ２２０３は検索モードによって働きが異なる。一致検索は標準的なターナリＣＡＭと同様な動作で、ＣＯＮＴＡ２２０２に比較対象のデータを格納し、ＣＯＮＴＢ２２０３にターナリＣＡＭで使用されるドントケアビットを格納する。不一致検索では、ＣＯＮＴＡ２２０２に比較対象のデータを格納し、ＣＯＮＴＢ２２０３にドントケアビットを格納する。範囲内検索と範囲外検索においては、ＣＯＮＴＡ２２０２に範囲の上限値、ＣＯＮＴＢ２２０３に範囲の下限値をそれぞれ格納する。
【００５５】
本実施形態においては確認応答のソケット番号が一致検索によって、また確認応答番号（シーケンス番号）が範囲内検索の対象になる。また、本実施形態では送信セグメント毎に、送信セグメントのソケット番号と先頭シーケンス番号及びセグメントの最後尾のシーケンス番号を検索テーブル５０１に登録する。前述のソケット番号と最後尾のシーケンス番号（シーケンス番号Ｂ）はＣＯＮＴＡ２２０２に、先頭シーケンス番号（シーケンス番号Ａ）はＣＯＮＴＢ２２０３に登録される。そして、ＬＩＮＫデータ２２０５によって、ＣＯＮＴＡ２２０２のソケット番号が連結され、ＣＯＮＴＡのシーケンス番号Ｂが連結され、ＣＯＮＴＢのシーケンス番号Ａが連結される。また、モードデータ２２０４によって、ＣＯＮＴＡ２２０２のソケット番号が一致検索の比較対象であることが指定され、ＣＯＮＴＡ２２０２のシーケンス番号Ｂ、ＣＯＮＴＢのシーケンス番号Ａが範囲内検索の下限値、上限値であることが指定される。
【００５６】
登録時の検索部５０２の内部動作を説明する。登録に際しては、検索テーブル５０１に登録するデータとコマンドなどから構成されるディスクリプタ１８０１を外部メモリ１３０７（共有メモリ２１３）に用意する。登録はディスクリプタ１８０１の先頭アドレスをＦＩＦＯ１３１０に書き込むことで行われる。ＦＩＦＯ１３１０からディスクリプタ１８０１の先頭アドレスを読み出したインターフェース部１３０２は内蔵するＤＭＡＣ１３０９を起動して外部メモリ１３０７に記されたディスクリプタ１８０１をインターフェース部１３０２内部のバッファに取り込む。コマンドを解析し、登録コマンドであると認識したインターフェース部１３０２は再度ＤＭＡＣ１３０９を起動して登録データを外部メモリ１３０７から取り込む。
【００５７】
取り込み先はエントリ・アドレス・フィールド１８０３に記載された値をＣＯＮＴＥＮＴＳ＿ＡＤＤＲ［０：１０２３］信号として各検索ブロックのメモリ１４０１に出力する。該当する検索ブロックのメモリ１４０１が選択され、ＤＭＡＣ１３０９によって取り込まれた登録データはＷＲＩＴＥ＿ＣＯＮＴＥＮＴＳ信号によって伝達され、ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号によってメモリ１４０１に書き込まれる。
【００５８】
一方、インターフェース部１３０２は受領したディスクリプタが検索コマンドと判断すると、ＤＭＡＣ１３０９を起動して外部メモリ１３０７に置かれた検索データ２００１を読み出す。ＤＭＡＣ１３０９は、この検索データ２００１を、ＫＥＹ［０：３８３］信号とＧＭＡＳＫ［０：３８３］信号を介して各検索ブロック１３０３乃至１３０５の比較器１４０２に伝達する。その後、インターフェース部１３０２はＳＴＡＲＴ信号によって制御部１３０６に検索開始を指示する。検索開始により、制御部１３０６は各検索ブロック１３０３乃至１３０５のメモリ１４０１へＳ＿ＡＤＤＲ信号によってアドレスを出力する。このアドレスは、検索ブロック１３０３乃至１３０５のそれぞれに設けられた３２エントリ・アドレスを有するメモリ１４０１の０番地から３１番地まで、動作クロック毎に１づつ増分し出力される。このメモリ・アクセスにより検索テーブル５０１に登録された全データが動作クロック毎に逐次読み出され、比較器１４０２に伝達される。
【００５９】
図１３に比較器１４０２の詳細を示す。比較器１４０２は９６個の比較器コア部１５０１乃至１５０４から構成されている。各比較器コア部にはそれぞれ４ビットのＣＯＮＴＡ、ＣＯＮＴＢ、ＫＥＹ、ＧＭＡＳＫの各信号と、２ビットのＭＯＤＥ信号と、１ビットのＬＩＮＫ信号と入力される。更に、各比較器コア部には前段の比較器コア部からキャリー信号であるＬＧ１Ｏｎ、ＥＱ１Ｏｎ、ＳＭ１Ｏｎ、ＬＧ２Ｏｎ、ＥＱ２Ｏｎ、ＳＭ２Ｏｎ、ＡＦＯｎの各信号が入力される。ｎは０から９４までの整数である。但し、初段の比較器コア部１５０１のキャリー入力については初期値としてＬＧ１Ｉ０、ＳＭ１Ｉ０、ＬＧ２Ｉ０及びＳＭ２Ｉ０は値０、ＥＱ１Ｉ０、ＥＱ２Ｉ０及びＡＦＩ０は値１を与える。図１３の信号表記でＬＧ１Ｉ０のＩは入力を表し、ＬＧ１Ｏ０のＯは出力を表す。また、ＬＧ１Ｉ０の０は９６個ある比較器コア部の０番目という意味である。
【００６０】
次に、ｍ番目の比較器コア部１５０３を例にその内部構成を図１４に示す。ここでｍは０から９５までの整数であり、以降の本文中においても同様とする。比較器コア部１５０３は、４bit全比較器１（１６０１）、４bit全比較器２（１６０２）、セレクタ１６０３及びいくつかのロジック・ゲートから構成されている。図１５に４bit全比較器１（１６０１）の入出力信号に関する真理値表を示す。また、図１６に４bit全比較器２（１６０２）の入出力信号に関する真理値表を示す。これらの４bit全比較器は一般的に知られている４bitマグニチュード・コンパレータと同等な機能を有する。
【００６１】
セレクタ１６０３にはＣＯＮＴＢ、ＭＯＤＥ、ＧＭＡＳＫ、ＬＩＮＫ、ＡＦの各信号が入力される。更に、セレクタ１６０３には４bit全比較器１（１６０１）及び４bit全比較器２（１６０２）からそれぞれ出力されるキャリー信号であるＬＧ１、ＥＱ１、ＳＭ１、ＬＧ２、ＥＱ２、ＳＭ２が入力される。
【００６２】
セレクタ１６０３はＭＯＤＥ［２ｍ＋０：２ｍ＋１］信号（検索モード）によって動作を変える。検索モードは前述したように一致検索（検索モード＝００）、不一致検索（検索モード＝０１）、範囲内検索（検索モード＝１０）及び範囲外検索（検索モード＝１１）の４種類である。一致検索と範囲内検索を行うので、一致検索と範囲内検索におけるセレクタ１６０３の動作を説明する。
【００６３】
一致検索（検索モード＝００）では４bit全比較器２（１６０２）の出力ＬＧ２、ＥＱ２、ＳＭ２は使用されない。一致検索ではＣＯＮＴＢ信号で伝達されるデータはターナリＣＡＭで使用されるドントケアビットと同じ意味を持たせている。したがって、セレクタ１６０３からＤＣ信号を値１で出力し、ＣＯＮＴＢ信号が４bit全比較器１（１６０１）の入力信号ＣＡ［０］〜ＣＡ［３］及び入力信号Ｋ［０］〜Ｋ［３］のマスク信号となるように構成している。このＤＣ信号の扱いは不一致検索（検索モード＝０１）でも同様である。
【００６４】
以上述べた、一致検索（検索モード＝００）におけるセレクタ１６０３の入出力の真理値表を図１７に示す。ここで、ＧＭＡＳＫ信号はＫＥＹ信号とペアで入力されるがＧＭＡＳＫ信号の意味はＫＥＹ信号のビット毎のマスク機能である。つまり、ＧＭＡＳＫ信号が値１であると、対応するＫＥＹ信号の値によらずに常に４bit全比較器１（１６０１）の入力信号であるＫ信号は１となる。同時にもう一方のＣＡ信号も１となり、当該ビットはドントケアとなる。判定結果はＨｍ信号に出力されて値１は検索条件に適合していることを表し、値０は検索条件との不一致を表す。尚、本文中、検索条件に適合していることをヒットしているあるいはヒットと表現する場合もある。
【００６５】
範囲内検索（検索モード＝１０）及び範囲外検索（検索モード＝１１）ではＣＯＮＴＢ信号に範囲の下限値の意味を持たせる。そのため、セレクタ１６０３はＤＣ信号に値０を出力し、一致検索（検索モード＝００）などでビット毎のマスクの意味を持たせていたＣＯＮＴＢ信号とＧＭＡＳＫ信号の機能を停止する。範囲内検索（検索モード＝１０）及び範囲外検索（検索モード＝１１）では４bit全比較器１（１６０１）において範囲の上限値と検索キーＫ［０：３］が比較され、４bit全比較器２（１６０２）において範囲の下限値と検索キーＫ［０：３］が比較される。これらの比較結果であるキャリー信号ＬＧ１、ＥＱ１、ＳＭ１、ＬＧ２、ＥＱ２、ＳＭ２がセレクタ１６０３に入力される。
【００６６】
ここで範囲内検索（検索モード＝１０）におけるセレクタ１６０３の入出力信号の真理値表を図１８に示す。真理値表に示すように、範囲内検索（検索モード＝１０）では判定結果であるＨｍ信号は、比較器コア部に入力するＬＩＮＫ信号が値１、つまり当該比較器コア部が連結領域の境界である場合に出力される。更に、比較器コア部に入力されるＬＩＮＫ信号が値１で、且つＧＭＡＳＫ信号が０ｘＦ値の場合、検索キーＫ［０：３］によらずセレクタ１６０３はＨｍ信号に値１を出力し、検索条件に適合していることを示す。つまり連結領域単位でマスクし、ドントケアとすることができる。
【００６７】
本実施形態では、何れの検索モードの場合も、ＳＴＡＲＴ信号によって検索が開始されてから３２クロックで検索が終了する。開始から終了までの間に、各比較器コア部１５０１乃至１５０４から出力された検索結果Ｈ０乃至Ｈ９５は対応するＬＩＮＫ信号とＤＩＳＡＢＬＥ信号によってマスクされてＨＩＴ［ｉ］信号に集約されて制御部１３０６に入力される。つまり、クロック毎に検索ブロック１〜３２（１３０３〜１３０５）から出力されたＨＩＴ［０：３１］信号の値は各エントリ・アドレス２２０２に対応した１０２４ビット（ＨＩＴ［０：３１］×３２）の検索結果となる。この検索結果を検索結果アドレス・ビットマップと呼称する。検索結果アドレス・ビットマップはＤＭＡＣ１３０９によって外部メモリ１３０７に転送され、その先頭アドレスがビットマップ・アドレス・レジスタ１７０２に表示される。
【００６８】
本実施形態では、検索キーとして、確認応答のソケット番号と（シーケンス番号−１）が読み込まれる。そして、検索キーのソケット番号が一致し、かつ、検索キーの（シーケンス番号−１）が、範囲内検索の下限値、上限値の範囲内に入ると、検索条件に適合していることを示す判定結果が出力される。
【００６９】
制御部１３０６では検索結果アドレス・ビットマップから検索条件に適合していることを示す値１の数をカウントし、検索終了を示すＤＯＮＥ信号と共に、その総和をＨＩＴ＿ＣＯＵＮＴ［０：９］信号でインターフェース部１３０２に伝達する。更に、検索結果アドレス・ビットマップからヒットしている最も若いエントリ・アドレスが検索結果アドレス・レジスタ１７０３に記録される。
【００７０】
本実施形態のように、シングルヒットの場合は検索結果アドレス（本実施例では識別子６０２に同じ）が検索結果アドレス・レジスタ１７０３に表示される。検索結果アドレス・レジスタ１７０３に表示された識別子６０２に基づきメモリ５０４を参照し登録済みのタイムスタンプ情報を得る。
【００７１】
次に、ＲＴＴ計測処理部４０９におけるＲＴＴ計測処理を、図１９〜図２１を用いて説明する。ここでは、エンドＡ（通信装置）が相手エンドＢ（送信先）へＴＣＰセグメントを送信し、確認応答セグメントを受信するまでのラウンドトリップ時間を計測する場合を例に挙げて説明する。
【００７２】
図１９は、本実施形態におけるラウンドトリップ時間の計測方法を説明するためのタイムラインを示す図である。図１９において、左側のエンドＡがＴＣＰセグメントを送信し、右側の相手エンドＢがＴＣＰセグメントを受信する。そして、左側のエンドＡがＴＣＰセグメントを送信後、右側の相手エンドＢから対応する確認応答セグメントを受信するまでのラウンドトリップ時間を計測する。尚、図１９に示す下方に時間が推移していくものとする。
【００７３】
また、この例では、多くの機器で採用されて遅延確認応答が実装されており、相手エンドＢが２つのＴＣＰセグメントを受信して１回の確認応答を返すように構成されている。つまり、相手エンドＢが２つのＴＣＰセグメントを受信し、これらをまとめて確認応答の処理を行い、確認応答セグメントを応答する。
【００７４】
ここで、左側のエンドＡではセグメントを送信する毎に計測を開始する。図１９では、図が煩雑になるので計測ポイント（送信時刻）をＴＳ１１〜ＴＳ１４としているが、他のセグメントの送信時点でも計測を開始しても良い。そして、エンドＡが相手エンドＢから対応する確認応答セグメントを受信すると、ラウンドトリップ時間計測を終了する。つまり、計測ポイントのＴＳ１１で計測を開始した場合、受信時刻のＴＳ１６で相手エンドＢからの確認応セグメントを受信すると、ラウンドトリップ時間計測を終了する。
【００７５】
これにより、エンドＡでセグメント送信にかかる処理時間Ｔ１と、相手エンドＢで確認応答処理にかかる処理時間Ｔ２と、伝送路で消費される時間Ｔ（＝Ｔ３−Ｔ１−Ｔ２）を詳細に計測することができる。また、他の計測ポイントのＴＳ１３で計測を開始した場合も、上述したＴＳ１１と同様に、詳細に計測することができる。
【００７６】
ここで、上述したラウンドトリップ時間計測開始時の処理を説明する。尚、この処理はセグメント送信時点で開始される。また、本実施形態では、計測の指示はサブプロセッサＣ２０３〜Ｅ２０５によって行われる。しかし、計測の開始は、データパス制御部２１７が、そのセグメントの送信を開始した時点でタイマ制御部４０１に通知し、タイマ制御部４０１の指示を受けてＲＴＴ計測処理部４０９が計測を開始する。
【００７７】
まず、ＲＴＴ計測制御シーケンサ５０３が、検索テーブル５０１にコネクション情報とデータ情報とを登録する。ここで、コネクション情報は、開始情報６０１のソケット番号６０３である。また、データ情報は、シーケンス番号Ａ６０４とシーケンス番号Ｂ６０５である。そして、このコネクション情報とデータ情報とは、検索テーブル５０１で識別子６０２によって識別される。次に、ＲＴＴ計測制御シーケンサ５０３は、メモリ５０４に検索テーブル５０１へ登録した開始情報６０１に関連付けるための識別子６０２とソケット番号６０３の他に、送信時点のタイムスタンプ７０２と送信サイズ７０３を登録する。
【００７８】
ここで、上述したラウンドトリップ時間計測を終了した時点の処理を、図２０を用いて説明する。この時点は、図１９に示すＴＳ１６のタイミング（相手エンドＢからの確認応セグメントを受信してラウンドトリップ時間計測を終了したタイミング）に相当する。
【００７９】
図２０は、本実施形態におけるラウンドトリップ時間計測の終了時の処理を示すフローチャートである。まずステップＳ１００１において、ＲＴＴ計測制御シーケンサ５０３が確認応答セグメントの受信時のタイムスタンプ情報と、シーケンス番号とソケット番号をサブプロセッサＢ２０２から受け取る。
【００８０】
次に、ステップＳ１００２において、ＲＴＴ計測制御シーケンサ５０３は受信した確認応答セグメントのシーケンス番号から１を引いた値とソケット番号を検索キーとして検索部５０２に与え、上述した検索条件で検索テーブル５０１を検索するように指示する。ここで、確認応答番号から１を引くのは、確認応答シーケンス番号は、送信セグメントの最後尾シーケンス番号に１が加えられているからである。そして、ステップＳ１００３で、ＲＴＴ計測制御シーケンサ５０３は検索結果の識別子６０２を手掛かりにメモリ５０４からラウンドトリップ時間計測開始時に登録したタイムスタンプ７０２を取り出す。
【００８１】
図１９に示す例では、ＴＳ１６の時点で返答される確認応答シーケンス番号は、ＴＳ１２で送信した送信セグメントの最後尾シーケンス番号に１を加えたものが返される。よって、検索結果はＴＳ１２の時点で登録された識別子となる。ただし、受信側の受信状況によっては、ＴＳ１６で返答される確認応答シーケンス番号は、ＴＳ１２で送信した送信セグメントの最後尾シーケンス番号に１を加えたものとは、異なる場合がある。これが、本例で、範囲内検索を行う理由である。
【００８２】
尚、ＴＳ１２より古いＴＳ１１の登録情報が残っているが、ＴＳ１２が検索されるのは遅延確認応答の影響である。このように、検索結果より有効な古い情報がある場合には遅延確認応答の影響と考え、これらのサイズの総和やセグメントの数を遡ってカウントすることで相手エンドＢが行っている遅延確認応答の実態を予測することができる。
【００８３】
次に、ステップＳ１００４において、上述のタイムスタンプ情報から各推定値と偏差値を計算する。本実施形態では、以下に示す式（２）により、これらの推定値と偏差値とを求める。
【００８４】
DIF_A = RTTovs_A - RTTpre_A
DIF_B = RTTovs_B - RTTpre_B
DIF_C = RTTovs_C - RTTpre_C
RTT_A = RTTpre_A + g1×DIF_A
RTT_B = RTTpre_B + g2×DIF_B
RTT_C = RTTpre_C + g3×DIF_C
DEV_A = RTTpre_A + h1(|DIF_A| - DEVpre_A)
DEV_B = RTTpre_B + h2(|DIF_B| - DEVpre_B)
DEV_C = RTTpre_C + h3(|DIF_C| - DEVpre_C) …（２）
ここで、RTTovsは測定されたラウンドトリップ時間、RTTpreはそれまでのラウンドトリップ時間の推定値である。DIFはそれまでのラウンドトリップ時間の推定値と測定されたラウンドトリップ時間の差分である。DEVpre はそれまでのラウンドトリップ時間の推定値の偏差である。
【００８５】
また、各ラベルの最後尾の_A〜_Cは、それぞれ、エンドの送信処理時間、相手エンドの確認応答処理時間、伝送路上の経過時間に係わることを表している。更に、各処理に係わったデータサイズから単位サイズ当たりのラウンドトリップ時間RTTpre_uと単位サイズ当たりの偏差値DEVpre_uを計算する。
【００８６】
但し、g1は（０≦g1≦１）、g2は（０≦g2≦１）、g3は（０≦g3≦１）である。また、h1は（０≦h1≦１）、h2は（０≦h2≦１）、h3は（０≦h3≦１）である。
【００８７】
次に、ステップＳ１００５において、上述の各計算値を図７に示す形式でメモリ５０４に保存する。また、後の処理で利用する計算途中の結果もメモリ５０４のワークエリアに記録する。次に、ステップＳ１００６において、検索結果を含むそれ以前の識別子６０２と関連情報を検索テーブル５０１とメモリ５０４から削除する。尚、登録や削除の方法は、各情報に有効／無効を示すフラグを設けてこれをオン／オフする形式でも良い。
【００８８】
ここで、タイムアウト時間を計算する処理と設定する処理を、図２１を用いて説明する。尚、この処理はセグメントの送信時点、例えば図１９に示すＴＳ１１〜ＴＳ１４の４つの時点での処理である。図２１は、本実施形態におけるタイムアウト時間の計算と設定を行う処理を示すフローチャートである。
【００８９】
まずステップＳ１１０１において、ＲＴＴ計測制御シーケンサ５０３がサブプロセッサＣ２０３から送信のタイミングと送信サイズを受け取る。次に、ステップＳ１１０２において、送信サイズ及び確認応答シーケンス番号の差分を得る。そして、単位サイズ当たりのラウンドトリップ時間と単位サイズ当たりの偏差値にそれぞれのサイズを掛けて推定値と偏差値を求める。このとき使用する各値はステップＳ１００５でメモリ５０４（図７）に保存した最新の値を用いる。
【００９０】
推定値RTTpreと偏差値DEVpreは、単位サイズ当たりのラウンドトリップ時間をRTTpre_u、この期間で処理したサイズをS、単位サイズ当たりの偏差値をDEVpre_uとすると式（３）で求められる。
【００９１】
RTTpre = RTTpre_u×S
DEVpre = DEVpre_u×S  …（３）
次に、ステップＳ１１０３において、タイムアウト時間RTOを以下の式（４）を使って求める。
【００９２】
RTO = (RTT_A + RTT_B + RTT_C) + 4(DEV_A + DEV_B + DEV_C)
= RTTpre_A + RTTpre_B + RTTpre_C
+g1(RTTovs_A - RTTpre_A)
+g2(RTTovs_B - RTTpre_B)
+g3(RTTovs_C - RTTpre_C)
+4(RTTpre_A + RTTpre_B + RTTpre_C)
+4×h1|RTTovs_A - RTTpre_A|
+4×h2|RTTovs_B - RTTpre_B|
+4×h3|RTTovs_C - RTTpre_C|
-(4×h1×DEVpre_A +4×h2×DEVpre_B +4×h3×DEVpre_C)  …（４）
但し、g1は（０≦g1≦１）、g2は（０≦g2≦１）、g3は（０≦g3≦１）である。また、h1は（０≦h1≦１）、h2は（０≦h2≦１）、h3は（０≦h3≦１）である。尚、上記式（４）のいくつかの項はステップＳ１００４で計算済みであり、ステップＳ１００５でメモリ５０４のワークエリアに記録された値を利用できる。
【００９３】
そして、ステップＳ１１０４において、計算されたタイムアウト時間RTOをＲＴＴ計測制御シーケンサ５０３により初期値メモリ４０６に登録する。
【００９４】
上述した処理は、コネクション毎に独立に行われる。そこで、コネクションを識別するソケット番号は重要な働きする。例えば、ステップＳ１００２の検索で、ソケット番号を検索キーとする。初期値メモリ４０６に登録されるタイムアウト時間RTOはソケット番号と関連付けられる。
【００９５】
図１９では、説明を簡略化するために、同一コネクションのセグメント送受信しか示していないが、上述した処理がコネクション毎に独立に行われるため、複数のコネクションでセグメント送受信が行われている状態であっても、同様に論ずることができる。
【００９６】
よって、複数のコネクションでセグメントの送受信が行われている状態の場合も、検索テーブル５０１やメモリ５０４に登録される開始情報６０１や情報７０１はコネクション毎に複数個が登録される。例えば、図１９に示すＴＳ１１〜ＴＳ１４の計測開始ポイントで登録されていく。しかし、確認応答を受信してラウンドトリップ時間を計測した後の計算結果はコネクションに一組で良い。
【００９７】
本実施形態によれば、登録された複数の開始情報からコネクション毎に効率良く、所望の情報を取り出すことができる。
【００９８】
また、セグメント送信にかかるエンドの処理時間（図１９に示すＴ１）、確認応答処理にかかる相手エンドの処理時間（図１９に示すＴ２）、伝送路で消費される時間（図１９に示すＴ３からＴ１及びＴ２を差し引いた時間）を詳細に計測することができる。これらの詳細にわたるラウンドトリップ時間により、伝送路の状況のみならず、対向となるエンドの負荷状況も的確に把握でき、この計測結果を活用することで、ＴＣＰが保有する各種のフロー制御を効率良く運用することが可能となる。また、ＱｏＳを運用する各種プロトコルに有用な情報を提供することも可能となる。
【００９９】
以上説明した本実施形態によれば、ラウンドトリップ時間計測を多重化して行うことにより、リソース管理の負荷やオーバーヘッドを最小限に抑えることが可能となる。また、多重化により、全体の計測間隔も大幅に短縮され、高精度の計測が可能となる。従って、適切なタイムアウト時間の運用による効率化と正確な情報に基づくプロトコルレベルでのＱｏＳ実装により、システムの性能を向上させることができる。
【０１００】
尚、本実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成される。
【０１０１】
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現し、そのプログラムコードを記憶した記録媒体は本発明を構成する。
【図１】
2010035147.tif 000003
【図２】
2010035147.tif 000004
【図３】
2010035147.tif 000005
【図４】
2010035147.tif 000006
【図５】
2010035147.tif 000007
【図６】
2010035147.tif 000008
【図７】
2010035147.tif 000009
【図８】
2010035147.tif 000010
【図９】
2010035147.tif 000011
【図１０】
2010035147.tif 000012
【図１１】
2010035147.tif 000013
【図１２】
2010035147.tif 000014
【図１３】
2010035147.tif 000015
【図１４】
2010035147.tif 000016
【図１５】
2010035147.tif 000017
【図１６】
2010035147.tif 000018
【図１７】
2010035147.tif 000019
【図１８】
2010035147.tif 000020
【図１９】
2010035147.tif 000021
【図２０】
2010035147.tif 000022
【図２１】
2010035147.tif 000023