(57)【要約】【課題】従来技術では、パケットの送信において、送信パケットのすべてをキューイングするために、大容量のメモリを備える必要があった。【解決手段】制御装置は、通信装置の通信を制御する制御装置であって、パケットを送信する際に用いるヘッダの一部をキューイングして一時的に記憶し、キューに応じて第一の記憶手段から出力されるヘッダの一部に対応させて、送信するペイロードを第二の記憶手段から取得し、パケットを送信する際に、当該パケットに対応するヘッダの一部を用いてヘッダを生成し、生成されたヘッダと、当該ヘッダに対応する第二の記憶手段から取得されたペイロードとを合成して送信する。【選択図】図１
2013046173.tif 000002
【特許請求の範囲】
【請求項１】
通信装置の通信を制御する制御装置であって、
パケットを送信する際に用いるヘッダの一部をキューイングして一時的に記憶する第一の記憶手段と、
キューに応じて前記第一の記憶手段から出力される前記ヘッダの一部に対応させて、送信するペイロードを第二の記憶手段から取得する取得手段と、
前記パケットを送信する際に、当該パケットに対応する前記ヘッダの一部を用いてヘッダを生成する生成手段と、
前記生成手段により生成されたヘッダと、当該ヘッダに対応する前記第二の記憶手段から取得された前記ペイロードとを合成して送信する送信手段と、
を有する制御装置。
【請求項２】
前記通信装置が前記第二の記憶手段を備えることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第一の記憶手段に記憶される前記ヘッダの一部は、送信する前記パケットの内容が定まる前に確定する情報であることを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記生成手段は、前記ペイロードのチェックサムを算出し、算出した値を前記ヘッダに含めることを特徴とする請求項１から３のいずれか１項に記載の制御装置。
【請求項５】
通信の相手装置から信号を受信する受信手段をさらに有し、
前記生成手段は、前記パケットを送信する際に、当該パケットと、当該パケットに対応する前記ヘッダの一部と、受信した前記信号とを用いてヘッダを生成する、
ことを特徴とする請求項１から４のいずれか１項に記載の制御装置。
【請求項６】
前記生成手段は、前記パケットを送信する際に、受信した前記信号に基づいて、Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒの値を定め、その値を前記ヘッダに含めることを特徴とする請求項５に記載の制御装置。
【請求項７】
前記生成手段は、前記パケットを送信する際に、受信した前記信号に基づいて、Ｗｉｎｄｏｗ  Ｓｉｚｅの値を定め、その値を前記ヘッダに含めることを特徴とする請求項５または６に記載の制御装置。
【請求項８】
前記第一の記憶手段に記憶されている前記キューの出力のスケジューリングを実行する実行手段をさらに備え、
前記第一の記憶手段は、ソケット通信において、ソケットごとに前記ヘッダの一部をキューとして一時的に記憶し、
前記実行手段は、ソケットごとに送信の優先度およびスケジューリングを決定する、
ことを特徴とする請求項１から７のいずれか１項に記載の制御装置。
【請求項９】
パケットを送信する際に用いるヘッダの一部をキューイングして一時的に記憶する第一の記憶手段を備え、通信装置の通信を制御する制御装置における制御方法であって、
キューに応じて前記第一の記憶手段から出力される前記ヘッダの一部に対応させて、送信するペイロードを第二の記憶手段から取得する取得工程と、
前記パケットを送信する際に、当該パケットに対応する前記ヘッダの一部を用いてヘッダを生成する生成工程と、
前記生成工程において生成されたヘッダと、当該ヘッダに対応する前記第二の記憶手段から取得された前記ペイロードとを合成して送信する送信工程と、
を有する制御方法。
【請求項１０】
コンピュータを請求項１から８のいずれか１項に記載の制御装置が備える各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ（ＵＤＰ）／ＩＰ処理に係り、特に、パケット生成に必要なヘッダ要素やペイロードをキューに蓄積し、パケット送出の際にこれらを組み合わせることでパケットを合成し、パケットを送信する装置および方法に関するものである。
【背景技術】
【０００２】
インターネットの普及に伴い、ネットワーク層からトランスポート層までの処理を専用のハードウェアやプロセッサによって行うネットワークプロセッサやＴＯＥ（ＴＣＰ／ＩＰオフロードエンジン）などのデバイスが使用される機会が増えている。これらのデバイスでは、ヘッダの生成やパケットの組み立てを専用のプロセッサやハードウェアを用いて行うことを特徴とする。そして、この特徴により、通信装置全体のメインプロセッサの負荷を高めることなく短時間でパケットの送受信処理を行うことができる。パケットの送信処理においては、一台の通信端末でソケットと呼ばれる複数の通信チャネルを持つ。送信端末では、生成したパケットをまず送信キューに蓄積する。そして、送信端末は、一般的に、通信チャネルにおいて割り当てられる帯域や遅延量において公平性を担保するようにスケジューリングを行い、そのスケジュールにしたがって各キューを送信する。
【０００３】
例えば、特許文献１では、データ通信に用いる汎用アダプタが複数のバッファに分割されているパケットメモリを有する構成が記載されている。そして、特許文献１の技術では、１つのデータパケットを構成する複数のバッファのグループに対して待ち行列を構成してパケットの送信を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−３３６７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、パケットの送信において、送信パケットのすべてをキューイングするために、大容量のメモリを備える必要があった。また、パケットがキューに滞留することで、パケットの送信が決定してから実際に送出するまでのＡＣＫポインタの遅延が増大することがあり、さらなる大容量のメモリを備える必要が生じることがあった。
【０００６】
本発明は上記課題に鑑みなされたものであり、パケットの送信においてキューイングに必要なメモリの量を削減することが可能な制御装置、制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明による制御装置は、通信装置の通信を制御する制御装置であって、パケットを送信する際に用いるヘッダの一部をキューイングして一時的に記憶する第一の記憶手段と、キューに応じて前記第一の記憶手段から出力される前記ヘッダの一部に対応させて送信するペイロードを、第二の記憶手段から取得する取得手段と、前記パケットを送信する際に、当該ペイロードと、当該パケットに対応する前記ヘッダの一部とを用いてヘッダを生成する生成手段と、前記生成手段により生成されたヘッダと、当該ヘッダに対応する前記ペイロードとを合成して送信する送信手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、パケットの送信において必要なメモリ量を削減してパケット送信を行う技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】通信制御装置を含む通信装置のブロック図。
【図２】ＴＣＰ状態遷移表を示す図。
【図３】プロトコルコントロールブロックの構造体定義の一例を示す図。
【図４】メモリバッファ(ｍｂｕｆ)の説明図。
【図５】ＴＣＰ／ＩＰヘッダの説明図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１１】
図１は本発明の実施形態に係る通信制御装置を含む通信装置の構成例である。図１において、通信装置は、プロセッサ１０１、メモリ１０２、入出力部１０３、システムバス１０４、及び通信制御装置２００を有する。すなわち、通信装置は通信制御装置２００を含む。また、通信制御装置２００は、ペイロード転送部１０５、送信ヘッダキュー１０６、送信ヘッダレジスタ１０７、セレクタ１０８を有する。通信制御装置２００は、さらに、チェックサム算出部１０９、ヘッダ生成部１１０、パケット合成部１１１、フレーム送信部１１２、受信管理部１１３、信号受信部１１４を有する。なお、１１５は通信メディアである。一般的な通信端末は受信に用いる構成を有するが、説明の簡単のため、図１では直接言及しない受信系の図示を省略し、主として送信側の構成を示している。なお、本実施形態では、通信制御装置２００におけるペイロード転送部１０５は、通信装置からデータを取得するが、これに限られず、外部の装置からデータを取得する構成をとってもよい。なお、本実施形態では、送信ヘッダキュー１０６は送信ヘッダの一部をキューイングして記憶する第一の記憶部として動作する。また、通信装置のメモリ１０２は送信するデータであるペイロードを記憶する第二の記憶部として動作するものとする。
【００１２】
図１では、システムバス１０４上にプロセッサ１０１、メモリ１０２、入出力部１０３、及び通信制御装置２００が接続されている。プロセッサ１０１は、メモリ１０２に格納されているＯＳやアプリケーションなどのプログラムを実行し、メモリ１０２のデータ領域にアクセスして結果を書き込む。また、入出力部１０３によってプロセッサ１０１にプログラムの実行指示や結果の表示などを行うこともできる。通信制御装置２００はプロセッサ１０１のプログラムの指示によって、メモリ１０２内のデータや、プロセッサ１０１が直接指定するデータをパケットとして送信することができる。
【００１３】
図３は、プロトコルコントロールブロック（ＰＣＢ）の構造体定義の一例を示した図である。これは、ネットワークで使用されるプロトコルを扱う際にＵＤＰやＴＣＰソケットに必要な様々な情報を保持するために各プロトコル層で使用される。この構造体の要素において、宛先のＩＰアドレス−Ｐｏｒｔ番号、及びローカル（送信元）のＩＰアドレス−Ｐｏｒｔ番号が格納される。この２組のＩＰアドレスとＰｏｒｔ番号はソケットペアと呼ばれ、ソケットを確定する情報となる。ＴＣＰの場合はＰＣＢのｉｎｐ＿ｉｎｐｃｂからＴＣＰＣＢというＴＣＰ用の構造体が呼び出され、シーケンス番号などが参照される。
【００１４】
送信されるパケットは、メモリーバッファ（ｍｂｕｆ）に用意される。図４は一般的なｍｂｕｆの説明図である。ｍｂｕｆはチェーン構造になっており、パケットの先頭からペイロードの最後まで連結されてパケットとして宛先に送られる。
【００１５】
図５は、イーサネット（登録商標）に送信される、ＴＣＰ／ＩＰパケットのヘッダ、ペイロードの構造を示している。パケットの先頭に１４オクテットのＭＡＣヘッダがあり、続いて２０オクテットのＩＰヘッダ、さらにＴＣＰヘッダが付加され、これらのヘッダとペイロードが一つのパケットとされる。なお、パケットの最後に、パケット全体に対する巡回冗長検査（ＣＲＣ３２）の結果であるＦＣＳ（フレームチェックシーケンス）が付与される。生成されたパケットは通信メディアへと送出され、通信の相手装置へと送信される。
【００１６】
以下では、図１に示される構成例におけるパケット送信処理の動作について詳細に説明する。なお、システムが動作するオペレーティングシステムとしてＵＮＩＸ（登録商標）ライクのＯＳを想定して本実施形態を説明する。
【００１７】
図１における通信装置において、ＴＣＰ／ＩＰを使用して送信を開始するにあたり、ソケットを確立して用意する必要がある。これについて、図２を参照して説明する。図２はＴＣＰの状態遷移表である。接続が確立した状態（ＥＳＴＡＢＬＩＳＨＥＤ、Ｓ５）とすることにより、ソケット通信が可能となる。
【００１８】
まず、ＴＣＰの状態はＣＬＯＳＥＤ（Ｓ１）からコネクションの待ち受け状態であるＬＩＳＴＥＮ（Ｓ２）に遷移する。このとき、メモリ１０２に、図３に示すようなプロトコルコントロールブロックが用意される。ＬＩＳＴＥＮ状態（Ｓ２）においては、図５の網掛け部分の情報が確定される。この確定されたヘッダ情報は送信ヘッダキュー１０６に事前情報として一時的に記憶される。このソケットを使用したパケットのデータ送信においては、この送信ヘッダキュー１０６の情報からヘッダが生成される。
【００１９】
続いて通信制御装置２００は、ソケットの確立先の相手装置に接続開始を示すＳＹＮパケットを送出し、ＳＹＮ＿ＳＥＮＴ状態（Ｓ４）に遷移する。なお、ＳＹＮパケットとは、ＴＣＰヘッダにおいてＳＹＮフラグを「１」に設定しているパケットであり、ＳＹＮフラグは、図５における「Ｆｌａｇｓ」の１要素として定義されるフラグである。ＳＹＮ＿ＳＥＮＴ状態（Ｓ４）において、相手装置からＳＹＮパケットに対する応答確認と、対応するコネクション要求であるＳＹＮ／ＡＣＫパケットを受信すると、受信パケットに対する応答確認であるＡＣＫパケットを送出する。これにより、ソケットのコネクションが確立したＥＳＴＡＢＬＩＳＨＥＤ状態（Ｓ５）になる。このような、通信制御装置２００がＳＹＮパケットを送信することにより接続を開始する手法をアクティブオープンという。
【００２０】
一方、通信制御装置２００は、ＳＹＮパケットを送らずに、相手装置からのＳＹＮパケットを待ち受けてもよい。この場合、ＳＹＮパケットを受信すると、ＳＹＮ／ＡＣＫパケットを相手装置へ返信し、ＳＹＮ＿ＲＣＶＤ状態（Ｓ３）へ遷移する。ＳＹＮ＿ＲＣＶＤ状態（Ｓ３）で相手装置からＡＣＫパケットを受信すると、接続が確立したＥＳＴＡＢＬＩＳＨＥＤ状態（Ｓ５）となる。このような手法を、パッシブオープンという。本実施形態では、アクティブオープンとパッシブオープンのどちらを用いてもよい。
【００２１】
接続を閉鎖する場合、ＥＳＴＡＢＬＩＳＨＥＤ（Ｓ５）から、ＦＩＮ＿ＷＡＩＴ１（Ｓ６）またはＣＬＯＳＥ＿ＷＡＩＴ（Ｓ１０）へ進む。通信制御装置２００がＦＩＮフラグを含むパケット（ＦＩＮパケット）を送信すると、ＦＩＮ＿ＷＡＩＴ１（Ｓ６）状態となり、ＦＩＮパケットに対するＡＣＫを待ち受ける。ＡＣＫを受信すると、ＦＩＮ＿ＷＡＩＴ２状態（Ｓ８）となり、この状態で相手装置からＦＩＮパケットを受信すると、ＡＣＫを返して所定の時間の経過を待ち（Ｓ９）、ＣＬＯＳＥＤ状態（Ｓ１）へ遷移する。また、ＦＩＮ＿ＷＡＩＴ１状態（Ｓ６）において相手装置からＦＩＮパケットを受信すると、ＡＣＫを相手装置へ返して、閉鎖処理を実行する（Ｓ７）。そして、所定の時間の経過を待ち（Ｓ９）、ＣＬＯＳＥＤ状態（Ｓ１）に遷移する。
【００２２】
一方、ＥＳＴＡＢＬＩＳＨＥＤ状態（Ｓ５）において、相手装置からＦＩＮパケットを受信すると、ＡＣＫを返してＣＬＯＳＥ＿ＷＡＩＴ状態（Ｓ１０）へ遷移する。そしてＦＩＮパケットを相手装置へ送信すると、ＬＡＳＴ＿ＡＣＫ状態（Ｓ１１）へ遷移し、相手装置からのＦＩＮパケットへのＡＣＫを受信して、ＣＬＯＳＥＤ状態（Ｓ１）へ遷移する。以上の動作によりＴＣＰの状態遷移が定義される。
【００２３】
ＴＣＰの状態がＥＳＴＡＢＬＩＳＨＥＤ（Ｓ５）となるまでに、図５における白抜き部分で示されるヘッダ情報であったＡｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒ、Ｗｉｎｄｏｗ  Ｓｉｚｅが確定する。これらのソケット情報は、ソケット毎に図３に示すようなｉｎｐｃｂ構造体とｔｃｐｃｂ構造体により管理される。これらのソケット情報のうち、パケットヘッダの生成に直接関与する一部の構造体の要素は送信ヘッダキュー１０６に転送される。送信ヘッダキュー１０６に転送される要素は、例えば、構造体ｉｎｐｃｂにおけるＩＰアドレスやＰｏｒｔ番号、フラグ情報、構造体ｔｃｐｃｂにおけるＳｅｑｕｅｎｃｅ番号、ｗｉｎｄｏｗサイズなどである。転送されない要素は、例えば、ＩＰ  Ｈｅａｄｅｒにおける、ＩＰパケットの全長を示すＴｏｔａｌ  ＬｅｎｇｔｈやＨｅａｄｅｒ  Ｃｈｅｃｋｓｕｍである。また、例えば、ＴＣＰ  Ｈｅａｄｅｒにおける、相手装置が次に受け取るセグメントのシーケンス番号を示すＡｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒや、Ｃｈｅｃｋｓｕｍ、Ｗｉｎｄｏｗフィールドも転送されない。すわなち、送信ヘッダキュー１０６は、ペイロードの内容の確定前に確定する要素について一時的に記憶し、ペイロードが確定されるまで、またはパケットが送出されるまで値が決定されない要素については記憶しない。
【００２４】
送信されるパケットはｍｂｕｆと呼ばれるメモリバッファに関連づけられる。ｍｂｕｆはメモリ１０２に格納される。ｍｂｕｆの構造を図４に示す。それぞれのｍｂｕｆにある要素ｍｈ＿ｎｅｘｔにより、複数のｍｂｕｆがチェーン状に連結される。先頭のｍｂｕｆ＿ｐｋｔｈｄｒはパケットのヘッダを示し、続くｍｂｕｆ＿ｄａｔａはペイロード部分、すなわち送信するデータを示す。
【００２５】
パケットのヘッダの一部の構成要素についてはコネクション生成時に送信ヘッダキュー１０６に送られ、一時的に記憶されている。そして、送信ヘッダキュー１０６は、パケット送信時に、送信が選択されたキューについて、対応するヘッダの構成要素をヘッダ生成部１１０に出力する。
【００２６】
ペイロード転送部１０５は、ｍｂｕｆ＿ｄａｔａにペイロードが用意されると、メモリ１０２上に配置されたｍｂｕｆ＿ｄａｔａのＭ＿ｄａｔａｂｕｆを取得し、パケット合成部１１１に転送する。転送時にペイロードのチェックサムをチェックサム算出部１０９によって算出し、算出結果をヘッダ生成部１１０へ出力する。この算出結果によって未確定であったＴＣＰヘッダのＣｈｅｃｋｓｕｍフィールドが確定される。送信パケットに指定されるＡｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒは、相手装置から受信したパケットから抽出された受信側のＳｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒに基づいて、送信ヘッダレジスタ１０７を更新して得られる。
【００２７】
パケット送信時には、最新のＡｃｋｎｏｗｌｅｄｇｅｍｅｎｔ  Ｎｕｍｂｅｒがヘッダ生成部１１０に送出され、ヘッダ生成部１１０は当該情報を含む送信ヘッダを生成してパケット合成部１１１に出力する。パケット合成部１１１は、ヘッダとペイロードが揃った時点で、パケットをフレーム送信部１１２へ出力し、当該送信フレームは通信メディア１１５に送出される。
【００２８】
以上のように、本実施形態では、パケットのヘッダ情報をキューに蓄積し、ペイロードの転送時にヘッダを完成させて、パケットが送出される。このため、ペイロードをバッファリングしておくための送信キューが不要となり、通信制御装置におけるメモリの量を削減することができる。また、送信時にヘッダを完成させることに伴い、常に最新のＡｃｋｎｏｗｌｅｄｇｅ  Ｎｕｍｂｅｒを送信することができる。
【００２９】
また、上述の構成に加えて、受信したＡＣＫを解析して、送信済みの送信ヘッダキューやｍｂｕｆを解放し、新たにＷｉｎｄｏｗ  Ｓｉｚｅを割り当て、送信するＴＣＰパケットに反映させてもよい。これにより、Ｗｉｎｄｏｗ  Ｓｉｚｅを適宜変更することができる。これにより、送信に係る遅延を極力低く抑えることが可能となり、特にＴＣＰ／ＩＰ処理において、ＲＴＴ（ラウンド・トリップ・タイム）を抑制し、良好な通信品質を確保することが可能となる。
【００３０】
また、送信ヘッダキュー１０６、送信ヘッダレジスタ１０７において、キューをソケットごとに分類して記憶するようにしてもよい。これにより、均等にキューを送出するＦａｉｒＱｕｅｕｅ、ソケット別に重み付けを考慮してキューを送出するＷｅｉｇｈｔｅｄ  Ｆａｉｒ  Ｑｕｅｕｅなどのフローコントロールを、セレクタ１０８において容易に実行することが可能となる。また、これにより、ソケットごとにスケジューリングや優先度に基づく送信制御が可能となる。
【００３１】
＜＜その他の実施形態＞＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013046173.tif 000003
【図２】
2013046173.tif 000004
【図３】
2013046173.tif 000005
【図４】
2013046173.tif 000006
【図５】
2013046173.tif 000007