(57)【要約】【課題】確立された複数のコネクションにおいて一部の特定のコネクションの確認応答を遅延させ、他の特定のコネクションの通信の品質を高めることのできるネットワーク通信装置を提供する。【解決手段】送信パケット解析部７１３は、上位層から転送された送信パケットのヘッダを見て、予め設定されたポート番号、通信相手のＩＰアドレス、伝送レートの値等の送信フィルタ条件に従ってその送信パケットを遅延対象とすべきか否かを判定し、遅延対象とすべきであれば、その送信ＡＣＫパケットのヘッダに含まれるコネクション情報を送信テーブルに登録させる。送信パケット解析部７１３は、上位層から転送された送信パケットのヘッダに含まれるコネクション情報と送信テーブルに登録された有効なコネクション情報とを比較し、一致したならその送信パケットのうちＡＣＫパケットを遅延させてネットワークに送出させる。【選択図】図３
2010226455.tif 000002
【特許請求の範囲】
【請求項１】
予め決められた数の第１のセグメントの受信に対して上位層から転送された第１の確認応答を前記第１のセグメントの送信元にネットワークを通じて送信し、第２の確認応答の受信に対して前記上位層から転送された第２のセグメントを前記第２の確認応答の送信元に前記ネットワークを通じて送信するネットワーク通信装置であって、
前記第１の確認応答を遅延させるコネクションを特定するための第１の条件が設定された第１の条件設定部と、
前記第１の条件設定部に設定された第１の条件に従って、前記上位層より転送された前記第１の確認応答を遅延対象とすべきか否かを判定する第１の判定手段と、
前記遅延対象とすべきことが判定された前記第１の確認応答を遅延して前記第１のセグメントの送信元に送信する送信処理手段と、
前記第２の確認応答を遅延させるコネクションを特定するための第２の条件が設定された第２の条件設定部と、
前記第２の条件設定部に設定された第２の条件に従って、前記ネットワークを通じて受信した前記第２の確認応答を遅延対象とすべきか否かを判定する第２の判定手段と、
前記遅延対象とすべきことが判定された前記第２の確認応答を遅延して前記上位層に転送する受信処理手段と
を具備するネットワーク通信装置。
【請求項２】
請求項１に記載のネットワーク通信装置であって、
前記第１の条件および前記第２の条件は、ポート番号及び通信相手のＩＰアドレスであり、
前記第１の判定手段は、前記上位層より転送された前記第１の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第１の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致する場合にその第１の確認応答を遅延対象とすべきことを判定し、
前記第２の判定手段は、前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第２の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致する場合にその第２の確認応答を遅延対象とすべきことを判定する
ネットワーク通信装置。
【請求項３】
請求項２に記載のネットワーク通信装置であって、
前記第１の条件は、さらに前記第１の確認応答の第１の伝送レートの上限値を含み、
前記第１の判定手段は、前記上位層より転送された前記第１の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第１の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致し、かつ前記第１の確認応答の伝送レートの測定値が前記第１の条件に含まれる第１の伝送レートの上限値以上であれば、前記第１の確認応答を遅延対象とすべきことを判定し、
前記第２の条件は、さらに前記第２の確認応答の第２の伝送レートの上限値を含み、
前記第２の判定手段は、前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第２の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致し、かつ前記第２の確認応答の伝送レートの測定値が前記第２の条件に含まれる第２の伝送レートの上限値以上であれば、前記第２の確認応答を遅延対象とすべきことを判定する
ネットワーク通信装置。
【請求項４】
請求項３に記載のネットワーク通信装置であって、
前記送信処理手段は、
前記第１の判定手段により判定された前記遅延対象とすべき第１の確認応答のヘッダからコネクションを特定する第１のコネクション情報を抽出して第１のテーブルに登録する第１のテーブル登録手段と、
前記上位層より転送された前記第１の確認応答のヘッダに含まれる第２のコネクション情報と前記第１のテーブルの第１のコネクション情報とを比較し、一致する場合に前記第１の確認応答を遅延させる第１の遅延手段と、
前記第２の判定手段により判定された前記遅延対象とすべき第２の確認応答のヘッダからコネクションを特定する第３のコネクション情報を抽出して第２のテーブルに登録する第２のテーブル登録手段と、
前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれる第４のコネクション情報と前記第２のテーブルの前記第３のコネクション情報とを比較し、一致する場合に前記第２の確認応答を遅延させる第２の遅延手段とを具備し、
前記ネットワーク通信装置は、さらに
前記第１のテーブルに登録された第１のコネクション情報毎に前記第２のコネクション情報との比較で一致しない連続時間を計算し、この連続時間が予め設定された時間を超過した第１のコネクション情報を、前記第２のコネクション情報との比較対象として無効化するための情報を前記第１のテーブルに当該第１のコネクション情報と対応付けてセットする第１の無効化情報設定手段と、
前記第２のテーブルに登録された第３のコネクション情報毎に前記第４のコネクション情報との比較で一致しない連続時間を計算し、この連続時間が予め設定された時間を超過した第３のコネクション情報を、前記第４のコネクション情報との比較対象として無効化するための情報を前記第２のテーブルに当該第３のコネクション情報と対応付けてセットする第２の無効化情報設定手段と
を具備するネットワーク通信装置。
【請求項５】
請求項４に記載のネットワーク通信装置であって、
前記第１の遅延手段は、
前記第１の判定手段により判定された前記遅延対象とすべき第１の確認応答のパケットを先入れ先出し方式で複数保持することが可能な第１の確認応答パケット記憶部と、
前記遅延対象とすべき第１の確認応答以外のパケットを先入れ先出し方式で複数保持することが可能な第１のパケット記憶部と、
前記第１の確認応答パケット記憶部および前記第１のパケット記憶部から選択的にパケットを取り出す第１の選択手段と、
前記第１の確認応答パケット記憶部に前記第１の確認応答が入力されたことを契機に計時を開始し、予め設定された第１の時間の経過時に前記第１の確認応答パケット記憶部から第１の確認応答のパケットを前記第１の選択手段に選択させ、他の時間には前記第１のパケット記憶部から前記第１の確認応答以外のパケットを前記第１の選択手段に選択させる第１の計時手段とを具備し、
前記第２の遅延手段は、
前記第２の判定手段により判定された前記遅延対象とすべき第２の確認応答のパケットを先入れ先出し方式で複数保持することが可能な第２の確認応答パケット記憶部と、
前記遅延対象とすべき第２の確認応答以外のパケットを先入れ先出し方式で複数保持することが可能な第２のパケット記憶部と、
前記第２の確認応答パケット記憶部および前記第２のパケット記憶部から選択的にパケットを取り出す第２の選択手段と、
前記第２の確認応答パケット記憶部に前記第２の確認応答が入力されたことを契機に計時を開始し、予め設定された第２の時間の経過時に前記第２の確認応答パケット記憶部から第２の確認応答のパケットを前記第２の選択手段に選択させ、他の時間には前記第２のパケット記憶部から第２の確認応答以外のパケットを前記第２の選択手段に選択させる第２の計時手段とを具備する
ネットワーク通信装置。
【請求項６】
予め決められた数の第１のセグメントの受信に対して上位層から転送された第１の確認応答を前記第１のセグメントの送信元にネットワークを通じて送信するネットワーク通信装置であって、
前記第１の確認応答を遅延させるコネクションを特定するための第１の条件が設定された第１の条件設定部と、
前記第１の条件設定部に設定された第１の条件に従って、前記上位層より転送された前記第１の確認応答を遅延対象とすべきか否かを判定する第１の判定手段と、
前記遅延対象とすべきことが判定された前記第１の確認応答を遅延して前記第１のセグメントの送信元に送信する送信処理手段と
を具備するネットワーク通信装置。
【請求項７】
第２の確認応答の受信に対して上位層から転送された第２のセグメントを前記第２の確認応答の送信元に前記ネットワークを通じて送信するネットワーク通信装置であって、
前記第２の確認応答を遅延させるコネクションを特定するための第２の条件が設定された第２の条件設定部と、
前記第２の条件設定部に設定された第２の条件に従って、前記ネットワークを通じて受信した前記第２の確認応答を遅延対象とすべきか否かを判定する第２の判定手段と、
前記遅延対象とすべきことが判定された前記第２の確認応答を遅延して前記上位層に転送する受信処理手段と
を具備するネットワーク通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ／ＩＰ通信に用いられるネットワーク通信装置に関する。
【背景技術】
【０００２】
ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ）通信では、受信側ノードが送信側ノードからのデータを処理しきれずバッファが一杯になるバッファオーバーフローを防止するためにフロー制御が行われる。例えば、ＦＴＰ（Ｆｉｌｅ Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）通信等のベストエフォート型のバースト通信では、ノード間の伝送レートが伝送路状態や機器のＣＰＵの負荷状態に大きく左右される。故にバッファオーバーフローが比較的発生しやすく、フロー制御は不可欠である。一方、ストリーミングは、再生に必要な伝送レートを保証するように使用する帯域の制御が行われることによって、ベストエフォート型の通信に比較してバッファオーバーフローは発生しにくい。
【０００３】
次に従来のフロー制御について説明する。ネットワークのＯＳＩ参照モデルにおけるデータ・リンク層の下位副層にあたるＭＡＣ（Ｍｅｄｉａ Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌ）層では、ＩＥＥＥ８０２．３ｘで規定されたフロー制御機構が用意されている。このフロー制御機構では、受信バッファの残り容量が少なくなってきたら送信元に対してストップパケットを送信してデータ送信を停止させ、受信バッファの残り容量が増大してきたところでストップ解除パケットを送信してデータ送信を再開させる。これにより、バッファオーバーフローの発生を抑え、高いスループットでのデータ伝送が可能になる。
【０００４】
またＴＣＰでは、送信データ（所定数のセグメント）が受信側の機器に到達したとき、受信側の機器から送信元にデータの到達を通知する確認応答（ＡＣＫ）が行われる。この確認応答を遅延させることによっても同様の効果を期待できる（例えば、非特許文献１参照。）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「マスタリングＴＣＰ／ＩＰ 入門編 第４版」、竹下隆史、村山公保、荒井透、苅田幸雄［平成１９年２月２５日］ｐ２１７
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ストップパケットを送信して送信側ノードによるデータ送信を停止させるフロー制御方式や確認応答（ＡＣＫ）を単に遅延させる方式では、確立された全てのコネクションのデータ伝送を停止あるいは遅延させてしまう。例えば、動画等のストリーミングを受信しつつリアルタイムに再生しているときにＦＴＰ等のベストエフォート型のバースト通信が開始された場合、双方のコネクションともデータ伝送が停止あるいは遅延させてしまう。この結果、動画ストリーミングの再生が途切れ途切れになるなど、動画を良好に視聴できなくなるおそれがあった。
【０００７】
以上のような事情に鑑み、本発明の目的は、確立された複数のコネクションにおいて一部の特定のコネクションの確認応答を遅延させ、他の特定のコネクションの通信の品質を高めることのできるネットワーク通信装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明の第１の観点に係るネットワーク通信装置は、予め決められた数の第１のセグメントの受信に対して上位層から転送された第１の確認応答を前記第１のセグメントの送信元にネットワークを通じて送信し、第２の確認応答の受信に対して前記上位層から転送された第２のセグメントを前記第２の確認応答の送信元に前記ネットワークを通じて送信するネットワーク通信装置であって、前記第１の確認応答を遅延させるコネクションを特定するための第１の条件が設定された第１の条件設定部と、前記第１の条件設定部に設定された第１の条件に従って、前記上位層より転送された前記第１の確認応答を遅延対象とすべきか否かを判定する第１の判定手段と、前記遅延対象とすべきことが判定された前記第１の確認応答を遅延して前記第１のセグメントの送信元に送信する送信処理手段と、前記第２の確認応答を遅延させるコネクションを特定するための第２の条件が設定された第２の条件設定部と、前記第２の条件設定部に設定された第２の条件に従って、前記ネットワークを通じて受信した前記第２の確認応答を遅延対象とすべきか否かを判定する第２の判定手段と、前記遅延対象とすべきことが判定された前記第２の確認応答を遅延して前記上位層に転送する受信処理手段とを具備する。
【０００９】
本発明のネットワーク通信装置では、第１のセグメントを受信し第１の確認応答を送信する側として動作する場合、送信する第１の確認応答のうち第１の条件を満足するコネクションの第１の確認応答を遅延させる。これにより、他の特定のコネクションの通信に割り当て可能な帯域が増大し、その通信の品質を向上させることができる。また、第２のセグメントを送信し第２の確認応答を受信する側として動作する場合にも同様に、受信した第２の確認応答のうち、第２の条件を満足するコネクションの第２の確認応答の上位層への転送を遅延させる。これにより、他の特定のコネクションの通信に割り当て可能な帯域が増大し、その通信の品質を向上させることができる。
【００１０】
本発明において、前記第１の条件および前記第２の条件はポート番号及び通信相手のＩＰアドレスであり、前記第１の判定手段は、前記上位層より転送された前記第１の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第１の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致する場合にその第１の確認応答を遅延対象とすべきことを判定し、前記第２の判定手段は、前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第２の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致する場合にその第２の確認応答を遅延対象とすべきことを判定する。
【００１１】
これにより、特定のアプリケーションプロトコルによる特定の通信相手との通信を対象に確認応答を遅延させることができる。これにより、他の特定のアプリケーションプロトコルによる他の特定の通信相手との通信の品質を向上させることができる。
【００１２】
本発明において、前記第１の条件は、さらに前記第１の確認応答の第１の伝送レートの上限値を含み、前記第１の判定手段は、前記上位層より転送された前記第１の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第１の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致し、かつ前記第１の確認応答の伝送レートの測定値が前記第１の条件に含まれる第１の伝送レートの上限値以上であれば、前記第１の確認応答を遅延対象とすべきことを判定し、前記第２の条件は、さらに前記第２の確認応答の第２の伝送レートの上限値を含み、前記第２の判定手段は、前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれるポート番号及び通信相手のＩＰアドレスが前記第２の条件であるポート番号及び通信相手のＩＰアドレスとそれぞれ一致し、かつ前記第２の確認応答の伝送レートの測定値が前記第２の条件に含まれる第２の伝送レートの上限値以上であれば、前記第２の確認応答を遅延対象とすべきことを判定する。
【００１３】
この発明により、特定のアプリケーションプロトコルによる特定の通信相手との通信で、かつ確認応答の伝送レートが上限値以上の通信を対象に確認応答を遅延させることができる。これにより、確認応答を遅延させる必要のあるコネクションをより高い信頼性で判定することができる。アプリケーションプロトコルと通信相手の限定だけでは、その通信に使用される帯域を特定できない場合に、本発明は特に有効である。
【００１４】
本発明において、前記送信処理手段は、前記第１の判定手段により判定された前記遅延対象とすべき第１の確認応答のヘッダからコネクションを特定する第１のコネクション情報を抽出して第１のテーブルに登録する第１のテーブル登録手段と、前記上位層より転送された前記第１の確認応答のヘッダに含まれる第２のコネクション情報と前記第１のテーブルの第１のコネクション情報とを比較し、一致する場合に前記第１の確認応答を遅延させる第１の遅延手段と、前記第２の判定手段により判定された前記遅延対象とすべき第２の確認応答のヘッダからコネクションを特定する第３のコネクション情報を抽出して第２のテーブルに登録する第２のテーブル登録手段と、前記ネットワークを通じて受信した前記第２の確認応答のヘッダに含まれる第４のコネクション情報と前記第２のテーブルの前記第３のコネクション情報とを比較し、一致する場合に前記第２の確認応答を遅延させる第２の遅延手段とを具備し、前記ネットワーク通信装置は、さらに、前記第１のテーブルに登録された第１のコネクション情報毎に前記第２のコネクション情報との比較で一致しない連続時間を計算し、この連続時間が予め設定された時間を超過した第１のコネクション情報を、前記第２のコネクション情報との比較対象として無効化するための情報を前記第１のテーブルに当該第１のコネクション情報と対応付けてセットする第１の無効化情報設定手段と、前記第２のテーブルに登録された第３のコネクション情報毎に前記第４のコネクション情報との比較で一致しない連続時間を計算し、この連続時間が予め設定された時間を超過した第３のコネクション情報を、前記第４のコネクション情報との比較対象として無効化するための情報を前記第２のテーブルに当該第３のコネクション情報と対応付けてセットする第２の無効化情報設定手段とを具備する。
【００１５】
この発明では、第１のセグメントを受信し第１の確認応答を送信する側として動作する場合、第１のテーブルの第１のコネクション情報と第１の確認応答のヘッダに含まれる第２のコネクション情報とを比較し、一致したならその第１の確認応答を遅延させる。一方で、第１のテーブルの第１のコネクション情報のうち上記の比較で一致しない連続時間が予め設定された時間を超過したものには、比較対象として無効化するための情報が第１の無効化情報設定手段によって設定される。したがって、第１のテーブルが次第に肥大化することが防止され、第１のテーブルの第１のコネクション情報と第１の確認応答のヘッダに含まれる第２のコネクション情報との比較を効率良く行うことができる。本発明のネットワーク通信装置が第２のセグメントを送信する側として動作する場合も同様に、第２のテーブルが次第に肥大化することが防止され、第２のテーブルの第３のコネクション情報と第２の確認応答のヘッダに含まれる第４のコネクション情報との比較を効率良く行うことができる。このことにより、パケット伝送の高速化を図れる。
【００１６】
本発明において、前記第１の遅延手段は、前記第１の判定手段により判定された前記遅延対象とすべき第１の確認応答のパケットを先入れ先出し方式で複数保持することが可能な第１の確認応答パケット記憶部と、前記遅延対象とすべき第１の確認応答以外のパケットを先入れ先出し方式で複数保持することが可能な第１のパケット記憶部と、前記第１の確認応答パケット記憶部および前記第１のパケット記憶部から選択的にパケットを取り出す第１の選択手段と、前記第１の確認応答パケット記憶部に前記第１の確認応答が入力されたことを契機に計時を開始し、予め設定された第１の時間の経過時に前記第１の確認応答パケット記憶部から第１の確認応答のパケットを前記第１の選択手段に選択させ、他の時間には前記第１のパケット記憶部から前記第１の確認応答以外のパケットを前記第１の選択手段に選択させる第１の計時手段とを具備し、前記第２の遅延手段は、前記第２の判定手段により判定された前記遅延対象とすべき第２の確認応答のパケットを先入れ先出し方式で複数保持することが可能な第２の確認応答パケット記憶部と、前記遅延対象とすべき第２の確認応答以外のパケットを先入れ先出し方式で複数保持することが可能な第２のパケット記憶部と、前記第２の確認応答パケット記憶部および前記第２のパケット記憶部から選択的にパケットを取り出す第２の選択手段と、前記第２の確認応答パケット記憶部に前記第２の確認応答が入力されたことを契機に計時を開始し、予め設定された第２の時間の経過時に前記第２の確認応答パケット記憶部から第２の確認応答のパケットを前記第２の選択手段に選択させ、他の時間には前記第２のパケット記憶部から第２の確認応答以外のパケットを前記第２の選択手段に選択させる第２の計時手段とを具備するものであってもよい。
【００１７】
この発明のネットワーク通信装置では、第１のセグメントを受信し第１の確認応答を送信する側として動作する場合、遅延対象とすべき第１の確認応答のパケットに対して第１の時間分の遅延を付与することができる。第２のセグメントを送信し第２の確認応答を受信する側として動作する場合にも同様に、遅延対象とすべき第２の確認応答のパケットに対して第２の時間分の遅延を付与することができる。
【００１８】
本発明の第２の観点に係るネットワーク通信装置は、予め決められた数の第１のセグメントの受信に対して上位層から転送された第１の確認応答を前記第１のセグメントの送信元にネットワークを通じて送信するネットワーク通信装置であって、前記第１の確認応答を遅延させるコネクションを特定するための第１の条件が設定された第１の条件設定部と、前記第１の条件設定部に設定された第１の条件に従って、前記上位層より転送された前記第１の確認応答を遅延対象とすべきか否かを判定する第１の判定手段と、前記遅延対象とすべきことが判定された前記第１の確認応答を遅延して前記第１のセグメントの送信元に送信する送信処理手段とを具備する。
【００１９】
本発明の第３の観点に係るネットワーク通信装置は、第２の確認応答の受信に対して上位層から転送された第２のセグメントを前記第２の確認応答の送信元に前記ネットワークを通じて送信するネットワーク通信装置であって、前記第２の確認応答を遅延させるコネクションを特定するための第２の条件が設定された第２の条件設定部と、前記第２の条件設定部に設定された第２の条件に従って、前記ネットワークを通じて受信した前記第２の確認応答を遅延対象とすべきか否かを判定する第２の判定手段と、前記遅延対象とすべきことが判定された前記第２の確認応答を遅延して前記上位層に転送する受信処理手段とを具備する。
【発明の効果】
【００２０】
以上のように、本発明によれば、確立された複数のコネクションにおいて一部の特定のコネクションの確認応答を遅延させ、他の特定のコネクションの通信の品質を高めることができる。
【図面の簡単な説明】
【００２１】
【図１】典型的なネットワーク通信装置を含む情報処理装置の構成を示す図である。
【図２】フレームの構成を示す図である。
【図３】本発明の第１の実施形態に係るネットワーク通信装置の構成を示す図である。
【図４】図３における送信フィルタの構成を示すブロック図である。
【図５】図４における送信テーブルの構成を示す図である。
【図６】図３における受信フィルタの構成を示すブロック図である。
【図７】パケット送信処理のフローチャートである。
【図８】ＡＣＫ送信側の遅延対象パケットの情報登録処理の一例を示すフローチャートである。
【図９】送信ＡＣＫパケットの遅延処理の動作のフローチャートである。
【図１０】本実施形態のネットワーク通信装置による送信ＡＣＫパケットの遅延の様子を本制御を採用しない場合と比較した概念図である。
【図１１】ＡＣＫ送信側の遅延対象パケットの別の情報登録処理のフローチャートである。
【図１２】送信テーブルの登録情報を無効化する処理のフローチャートである。
【図１３】パケット受信処理のフローチャートである。
【図１４】ＡＣＫ受信側の遅延対象パケットの情報登録処理の流れの一例を示すフローチャートである。
【図１５】受信ＡＣＫパケットの遅延処理の動作のフローチャートである。
【図１６】ＡＣＫ受信側の遅延対象パケットの別の情報登録処理を示すフローチャートである。
【図１７】本発明の第２の実施形態としてのネットワーク中継装置の構成を示す図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態を図面を用いて説明する。
【００２３】
＜典型的なネットワーク通信装置＞
図１は典型的なネットワーク通信装置を含む情報処理装置の構成を示す図である。
情報処理装置２００は、ネットワーク１を通じて接続された通信相手の機器から、例えばＦＴＰ、ストリーミング等の様々なアプリケーションプロトコルを利用して、動画、音楽、プログラム等のコンテンツを受信し、利用することが可能な機器である。
【００２４】
情報処理装置２００は、システムバス２、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）３、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）４、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）５等を備えて構成される。ネットワーク通信装置１０１はシステムバス２に接続されている。ネットワーク通信装置１０１は、ＭＡＣ部１０、送信ＦＩＦＯ２０、受信ＦＩＦＯ３０、およびシステムバスインタフェース４０を有する。
【００２５】
ＭＡＣ（Ｍｅｄｉａ Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌ）部１０はＭＡＣ層の処理を行う。ＭＡＣ層はネットワークのＯＳＩ参照モデルにおけるデータ・リンク層の下位副層にあたり、データの送受信単位であるフレームの形式、送受信方法などを規定する。すなわち、ＭＡＣ部１０は、上位層から送信ＦＩＦＯ２０を通じて引き渡された所定の単位のデータ（パケット）に対して送信先のＭＡＣアドレス、送信元のＭＡＣアドレスなどの制御情報を付加してフレームとして組み立て、下位層である物理層にビット列として引き渡す。また、ＭＡＣ部１０は、下位層の物理層から自ＭＡＣアドレスが付加されたフレームを受け取り、そのフレームからＭＡＣヘッダを取り除いたデータをＩＰデータグラムとして受信ＦＩＦＯ３０を通じて上位層に引き渡す。
【００２６】
送信ＦＩＦＯ２０（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）は、システムバスインタフェース４０を通じて上位層より転送されたＩＰデータグラムをＭＡＣ部１０にて処理されるまで先入れ先出し方式で保持する。
【００２７】
受信ＦＩＦＯ３０（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）は、ネットワーク１より受信したフレームからＭＡＣ部１０により取り出された所定単位のデータを上位層に転送されるまで先入れ先出し方式で保持する。
【００２８】
システムバスインタフェース４０は、情報処理装置２００内のシステムバス２と送信ＦＩＦＯ２０および受信ＦＩＦＯ３０との間でのデータの転送を制御する。
【００２９】
＜フレームの構成＞
次に、典型的なフレームの構成について説明する。
図２は、この典型的なフレームの構成を示す図である。
【００３０】
同図に示すように、フレーム６０は、ＭＡＣヘッダ６１、ＩＰヘッダ６２、ＴＣＰヘッダ６３、ＴＣＰデータ６４などを含む。ＭＡＣヘッダ６１は、送信元ＭＡＣアドレス、送信先ＭＡＣアドレスなどをもつ。ＩＰヘッダ６２は、プロトコル番号６２１、送信元ＩＰアドレス６２２、送信先ＩＰアドレス６２３などをもつ。プロトコル番号６２１は、パケットに格納されたデータのプロトコルを示す番号である。本例ではＴＣＰを示す番号がここに格納される。ＴＣＰヘッダ６３は、送信元ポート番号６３１、送信先ポート番号６３２、ＡＣＫ番号６３３、ＡＣＫビット６３４などを有する。ＡＣＫ番号６３３は、受信が完了したデータ位置のシーケンス番号＋１の番号である。ＡＣＫビット６３４はＡＣＫ番号６３３の領域が有効であることを示すフラグである。ＡＣＫ番号６３３の領域が有効であるということは、フレームがＡＣＫ（確認応答）パケットを含むものであることを示す。なお、フレームがＡＣＫパケットを含むものである場合、ＴＣＰデータ６４は含まれない。
【００３１】
＜第１の本実施形態＞
図３は本発明の第１の実施形態に係るネットワーク通信装置１００の構成を示す図である。
【００３２】
なお、図示のブロック間で転送されるデータは、ネットワーク層では「パケット」、データ・リンク層（ＭＡＣ層を含む。）では「フレーム」と呼ばれることが一般であるが、以後の説明においてはそれらを「パケット」と総称することとする。
【００３３】
図３に示すように、本実施形態のネットワーク通信装置１００は、図１に示した典型的な構成に、送信フィルタ７１、送信ＡＣＫ＿ＦＩＦＯ７２、送信セレクタ７３、送信設定レジスタ７４、送信タイマ７５、受信フィルタ８１、受信ＡＣＫ＿ＦＩＦＯ８２、受信セレクタ８３、受信設定レジスタ８４、受信タイマ８５が付加されたものである。
【００３４】
ネットワーク通信装置１００の構成は送信系１００−Ｓと受信系１００−Ｒとに大別されるので、まず、ネットワーク通信装置１００の送信系１００−Ｓの構成から説明する。ネットワーク通信装置１００の送信系１００−Ｓは、送信フィルタ７１（第１の判定手段、送信処理手段）、送信ＡＣＫ＿ＦＩＦＯ７２（第１の確認応答パケット記憶部）、送信ＦＩＦＯ２０（第１のパケット記憶部）、送信セレクタ７３（第１の選択手段）、送信設定レジスタ７４（第１の条件設定部）、送信タイマ７５（第１の計時手段）を有する。
【００３５】
送信フィルタ７１は、システムバスインタフェース４０を通じて上位層から転送された送信用のパケット（以下「送信パケット」と記述）が、遅延対象とすべきＡＣＫパケットであるか否かを予め設定された条件（以下「送信フィルタ条件」と記述）に基づいて判定する。ここで「ＡＣＫパケット」とは、受信した所定数のセグメントに対する送信元への確認応答であり、構造的にはＡＣＫビット６３４がオンで、ヘッダの後ろにＴＣＰデータ６４が付加されていないＴＣＰパケットである。「データパケット」は、ＡＣＫビット６３４がオフで、ヘッダの後ろにＴＣＰデータ６４が付加されたＴＣＰパケットである。「セグメント」とはこのＴＣＰデータ６４である。送信フィルタ７１は、遅延対象とすべき送信ＡＣＫパケットを判定した場合、その送信ＡＣＫパケットのヘッダに含まれるコネクション情報を内部の送信テーブルに登録する。ここで「ヘッダに含まれるコネクション情報」とは、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号等、通信相手とのコネクションを特定するための情報群である。
【００３６】
また、送信フィルタ７１は、システムバスインタフェース４０を通じて上位層から転送された送信パケットのヘッダに含まれるコネクション情報（第２のコネクション情報）と送信テーブルに登録されたコネクション情報（第１のコネクション情報）とを比較する。送信フィルタ７１は、送信テーブルに登録されたものと同じコネクション情報をヘッダ内にもつ送信パケットを判定し、該当する送信パケットのうち、ＡＣＫパケットを送信ＡＣＫ＿ＦＩＦＯ７２に、その他のパケットを送信ＦＩＦＯ２０に振り分けて転送する。送信フィルタ７１は、ヘッダ内のコネクション情報が送信テーブルに登録されたどのコネクション情報とも一致しない送信パケットについては、ＡＣＫパケットを含む全てのパケットを送信ＦＩＦＯ２０に転送する。
【００３７】
送信ＡＣＫ＿ＦＩＦＯ７２は、送信フィルタ７１より転送された送信ＡＣＫパケットをＭＡＣ部１０にて処理されるまで先入れ先出し方式で保持する。
【００３８】
送信ＦＩＦＯ２０は、送信フィルタ７１より転送された送信パケットをＭＡＣ部１０にて処理されるまで先入れ先出し方式で保持する。
【００３９】
送信タイマ７５は、送信設定レジスタ７４に設定された遅延時間（第１の時間）の値を初期値として、送信ＡＣＫ＿ＦＩＦＯ７２に送信ＡＣＫパケットが入力されたことを契機にカウントダウンを開始するタイマである。送信タイマ７５は、カウントダウンによりカウント値が"０"になったときに送信セレクタ７３に送信ＡＣＫ＿ＦＩＦＯ選択信号を出力し、カウント値が"０"以外のとき送信セレクタ７３に送信ＦＩＦＯ選択信号を出力する。
【００４０】
送信セレクタ７３は、送信ＡＣＫ＿ＦＩＦＯ７２および送信ＦＩＦＯ２０から選択的に送信パケットを取り出してＭＡＣ部１０に転送する。すなわち、送信セレクタ７３は、送信タイマ７５から送信ＡＣＫ＿ＦＩＦＯ選択信号が入力されたとき送信ＡＣＫ＿ＦＩＦＯ７２の送信ＡＣＫパケットを選択し、送信ＦＩＦＯ選択信号が入力されたとき送信ＦＩＦＯ２０の送信パケットを選択してそれぞれＭＡＣ部１０に転送する。
【００４１】
送信設定レジスタ７４は、送信タイマ７５に設定される遅延時間、送信フィルタ条件などが保持されるレジスタである。この送信設定レジスタ７４への登録および登録内容の変更は、例えば、情報処理装置２００の側で、専用のアプリケーションプログラムなどによって自動であるいはマニュアルで行うことが可能である。
【００４２】
＜送信フィルタ７１の構成＞
次に、上記の送信フィルタ７１の構成を詳細に説明する。
【００４３】
図４は送信フィルタ７１の構成を示すブロック図である。同図に示すように、送信フィルタ７１は、送信テーブル７１１（第１のテーブル）、送信テーブル管理部７１２（第１のテーブル登録手段）、送信パケット解析部７１３（第１のテーブル登録手段）を有している。
【００４４】
送信パケット解析部７１３は、次の３つの処理を行う。
（第１の処理：遅延対象パケットの情報登録）
送信パケット解析部７１３は、システムバスインタフェース４０を通じて上位層から転送された送信パケットのヘッダを見て、送信設定レジスタ７４に設定された送信フィルタ条件に従って、その送信パケットが遅延対象とすべき送信ＡＣＫパケットであるか否かを判定する。送信パケット解析部７１３は、遅延対象とすべき送信ＡＣＫパケットであることを判定した場合、その送信ＡＣＫパケットから上記のコネクション情報を抽出し、送信テーブル管理部７１２に対して、当該コネクション情報の送信テーブル７１１への登録を依頼する。
【００４５】
（第２の処理：送信ＡＣＫパケットの振り分け）
送信パケット解析部７１３は、システムバスインタフェース４０を通じて上位層から転送された送信パケットのヘッダに含まれるコネクション情報と送信テーブル７１１に登録された有効なコネクション情報とを比較する。送信パケット解析部７１３は、送信テーブル７１１に登録された有効なコネクション情報のいずれかと同じコネクション情報をヘッダ内にもつ送信パケットを検出し、この送信パケットがＡＣＫパケットならば送信ＡＣＫ＿ＦＩＦＯ７２に、他のパケットならば送信ＦＩＦＯ２０に振り分けて転送する。また、送信パケット解析部７１３は、ヘッダ内のコネクション情報が送信テーブル７１１に登録された有効なコネクション情報のどれとも一致しない送信パケットについては、ＡＣＫパケットを含む全てのパケットを送信ＦＩＦＯ２０に転送する。また、送信パケット解析部７１３は、送信ＡＣＫパケットを送信ＡＣＫ＿ＦＩＦＯ７２に転送した際に送信タイマ７５にカウント起動信号を供給する。
【００４６】
（第３の処理：テーブル情報の無効化）
送信パケット解析部７１３は、上記のコネクション情報どうしの比較で、送信設定レジスタ７４に設定された無効化判定時間内に一度もヒットしなかった送信テーブル７１１のコネクション情報を無効化する処理を行う。
【００４７】
以上の送信パケット解析部７１３によって第１の処理と第２の処理が行われる順番としては、第２の処理を先に第１の処理を後とする。その理由は、第２の処理で送信ＡＣＫパケットのヘッダ内のコネクション情報が送信テーブル７１１に登録されたコネクション情報のいずれかと一致し、その送信ＡＣＫパケットが送信ＡＣＫ＿ＦＩＦＯ７２に転送された場合には第１の処理は不要であるからである。したがって、第１の処理は第２の処理の後でよく、第２の処理で一致が判定された場合には第１の処理はスキップされる。第３の処理は第２の処理に伴って行われる。
【００４８】
送信パケット解析部７１３は、上記の第１の処理で、送信フィルタ条件を満足した送信ＡＣＫパケットを遅延対象とすべき送信ＡＣＫパケットとして判定する。送信パケット解析部７１３は、その送信ＡＣＫパケットのヘッダに含まれるコネクション情報を送信テーブル７１１に登録し、かつ、登録したコルクション情報に対してこれが有効であることを示す有効フラグをセットするように送信テーブル管理部７１２に依頼する。
【００４９】
送信テーブル管理部７１２は、送信パケット解析部７１３からの依頼に応じて、当該送信ＡＣＫパケットのヘッダに含まれるコネクション情報を送信テーブル７１１に登録し、登録したコルクション情報に対してこれが有効であることを示す有効フラグをセットする。この際、その送信ＡＣＫパケットのコネクション情報と同じコネクション情報が有効フラグがオフの状態ながら送信テーブル７１１に既に登録されている場合がある。この場合には送信テーブル管理部７１２は、その有効フラグをオンにセットしなおすだけでよい。有効フラグについては後で説明する。
【００５０】
＜送信フィルタ条件＞
次に、送信フィルタ条件について説明する。送信設定レジスタ７４には送信フィルタ条件として以下を設定することが可能である。
【００５１】
送信フィルタ条件１．送信先ＩＰアドレス：特定の送信先ＩＰアドレスをヘッダに含む送信ＡＣＫパケットであること。ここで「送信先」とはＡＣＫパケットの送信先である。
送信フィルタ条件２．送信元ポート番号と送信先ポート番号との組み合わせ：特定のアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号との組み合わせをヘッダに含む送信ＡＣＫパケットであること。
送信フィルタ条件３．送信ＡＣＫパケットの送信レート：送信ＡＣＫパケットの送信レートが設定値以上であること。
【００５２】
各送信フィルタ条件はそれぞれ個別に、ユーザによる有効／無効の設定と詳細内容の設定がされることが可能である。例えば送信フィルタ条件１の送信先ＩＰアドレスには、個別の送信先ＩＰアドレス、あるいはその範囲などの設定が可能である。送信フィルタ条件２の送信元ポート番号と送信先ポート番号についても、個別のポート番号、あるいはその範囲などの設定が可能である。送信フィルタ条件３の設定値にはデフォルト値が設けられており、また、ユーザが具体的な数値を設定することが可能である。さらに、送信設定レジスタ７４に設定された各送信フィルタ条件はそれぞれ個別に有効／無効のステータスを、随時ユーザからの指示により切り替えられるようになっている。ここで、無効のステータスが設定された送信フィルタ条件は、送信設定レジスタ７４にその内容は保持されているものの判定処理では無為な送信フィルタ条件として扱われる。
【００５３】
＜送信テーブル７１１の構成＞
次に、送信テーブル７１１の構成を説明する。
図５は送信テーブル７１１の構成を示す図である。
【００５４】
同図に示すように、送信テーブル７１１には、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号等のコネクション情報とともに、有効フラグおよび最後のヒット時刻が登録される。
【００５５】
有効フラグは、受信テーブル８１１の対応するコネクション情報が、送信パケット解析部７１３による送信ＡＣＫパケットの振り分け処理において、送信パケットのコネクション情報と比較される有効な情報であるか否かを識別する情報である。例えば、有効フラグがオンである場合に有効であることを示す。送信パケット解析部７１３による第３の処理によって無効とするように判定されたコネクション情報の有効フラグは、送信パケット解析部７１３からの依頼のもと送信テーブル管理部７１２によってオンからオフに変更される。したがって、その無効化されたコネクション情報を以後再び有効にする場合には、対応する有効フラグをオンにリセットするだけでよいため、送信テーブル７１１の更新に要する負担が少なくて済み、通信の高速化を図れる。
【００５６】
最後のヒット時刻は、送信パケット解析部７１３による送信パケット解析部７１３による送信ＡＣＫパケットの振り分け処理において、送信ＡＣＫパケットのコネクション情報と最後にヒットした時刻である。「ヒット」とは、送信テーブル７１１に登録された有効なコネクション情報と送信ＡＣＫパケットのコネクション情報とが一致したことを言う。なお、送信テーブル７１１への最初の登録時から一度もヒットしたことのないコネクション情報の場合には、その最初の登録時刻が最後のヒット時刻となる。送信パケット解析部７１３は、この最後のヒット時刻からの経過時間を監視し、経過時間が送信設定レジスタ７４に設定された無効化判定時間以上になったとき、送信テーブル７１１上の対応するコネクション情報を無効にすることを判定する。
【００５７】
次に、図３に戻って、本実施形態のネットワーク通信装置１００の受信系の構成を説明する。ネットワーク通信装置１００の受信系は、受信フィルタ８１（第２の判定手段、受信処理手段）、受信ＡＣＫ＿ＦＩＦＯ８２（第２の確認応答パケット記憶部）、受信ＦＩＦＯ３０（第２のパケット記憶部）、受信セレクタ８３（第２の選択手段）、受信設定レジスタ８４（第２の条件設定部）、受信タイマ８５（第２の計時手段）を有する。
【００５８】
受信フィルタ８１は、ＭＡＣ部１０から転送された受信用のパケット（以下「受信パケット」と記述）が、遅延対象とすべきＡＣＫパケットであるか否かを予め設定された条件（以下「受信フィルタ条件」と記述）に基づいて判定する。受信フィルタ８１は、遅延対象とすべき受信ＡＣＫパケットを判定した場合、その受信ＡＣＫパケットのヘッダに含まれるコネクション情報を内部の受信テーブルに登録する。
【００５９】
また、受信フィルタ８１は、ＭＡＣ部１０から転送された受信パケットのヘッダ内の上記のコネクション情報（第４のコネクション情報）と受信テーブルに登録されたコネクション情報（第３のコネクション情報）とを比較する。受信フィルタ８１は、受信テーブルに登録されたものと同じコネクション情報をヘッダ内にもつ受信パケットを判定し、この受信パケットがＡＣＫパケットならば受信ＡＣＫ＿ＦＩＦＯ８２に、その他のパケットならば受信ＦＩＦＯ３０にそれぞれ振り分けて転送する。受信フィルタ８１は、ヘッダ内のコネクション情報が受信テーブルに登録されたどのコネクション情報とも一致しない受信パケットについては、ＡＣＫパケットを含む全てのパケットを受信ＦＩＦＯ３０に転送する。
【００６０】
受信ＡＣＫ＿ＦＩＦＯ８２は、受信フィルタ８１より転送されたＡＣＫパケットをシステムバスインタフェース４０を通じて上位層に転送されるまで先入れ先出し方式で保持する。
【００６１】
受信ＦＩＦＯ３０は、受信フィルタ８１より転送された全てのパケットをシステムバスインタフェース４０を通じて上位層に転送されるまで先入れ先出し方式で保持する。
【００６２】
受信タイマ８５は、受信設定レジスタ８４に設定された遅延時間（第２の時間）の値を初期値として、受信ＡＣＫ＿ＦＩＦＯ８２に受信ＡＣＫパケットが入力されたことを契機にカウントダウンを開始するタイマである。受信タイマ８５は、カウントダウンによりカウント値が"０"になったときに受信セレクタ８３に受信ＡＣＫ＿ＦＩＦＯ選択信号を出力し、カウント値が"０"以外のとき受信セレクタ８３に受信ＦＩＦＯ選択信号を出力する。
【００６３】
受信セレクタ８３は、受信ＡＣＫ＿ＦＩＦＯ８２および受信ＦＩＦＯ３０から選択的に送信パケットを取り出してシステムバスインタフェース４０を通じて上位層に転送する。すなわち、受信セレクタ８３は、受信タイマ８５から受信ＡＣＫ＿ＦＩＦＯ選択信号が入力されたとき受信ＡＣＫ＿ＦＩＦＯ８２の受信ＡＣＫパケットを選択し、受信ＦＩＦＯ選択信号が入力されたとき受信ＦＩＦＯ３０の受信パケットを選択し、それぞれシステムバスインタフェース４０を通じて上位層に転送する。
【００６４】
受信設定レジスタ８４は、受信タイマ８５に設定される遅延時間、受信フィルタ条件などが保持されるレジスタである。この受信設定レジスタ８４への登録および登録内容の変更は、例えば、情報処理装置２００の側で、専用のアプリケーションプログラムなどによって自動であるいはマニュアルで行うことが可能である。
【００６５】
＜受信フィルタ８１の構成＞
次に、上記の受信フィルタ８１の構成を詳細に説明する。
【００６６】
図６は受信フィルタ８１の構成を示すブロック図である。同図に示すように、受信フィルタ８１の構成は送信フィルタ７１と基本的には同じである。すなわち、受信フィルタ８１は、受信テーブル８１１（第２のテーブル）、受信テーブル管理部８１２（第２のテーブル登録手段）、受信パケット解析部８１３（第２のテーブル登録手段）を有している
【００６７】
受信パケット解析部８１３は、ＭＡＣ部１０から転送された受信パケットのヘッダを見て、上記の送信パケット解析部７１３による処理１−３と同様の処理を行うものである。
【００６８】
すなわち、受信パケット解析部８１３は、次の３つの処理を行う。
（第１´の処理：遅延対象パケットの情報登録）
受信パケット解析部８１３は、ＭＡＣ部１０から転送された受信パケットのヘッダを見て、受信設定レジスタ８４に設定された受信フィルタ条件に従って、その受信パケットが遅延対象とすべき受信ＡＣＫパケットであるか否かを判定する。受信パケット解析部８１３は、遅延対象の受信パケットであることを判定した場合、その受信パケットから、上記のコネクション情報を抽出し、受信テーブル管理部８１２に対して当該コネクション情報の受信テーブル８１１への登録を依頼する。
【００６９】
（第２´の処理：受信ＡＣＫパケットの振り分け）
受信パケット解析部８１３は、ＭＡＣ部１０から転送された受信パケットのヘッダに含まれるコネクション情報と送信テーブル７１１に登録された有効なコネクション情報とを比較する。受信パケット解析部８１３は、受信テーブル８１１に登録された有効なコネクション情報のいずれかと同じコネクション情報をヘッダ内にもつ受信パケットを検出し、この受信パケットがＡＣＫパケットならば受信ＡＣＫ＿ＦＩＦＯ８２に、その他のパケット（データパケット）ならば受信ＦＩＦＯ３０にそれぞれ振り分けて転送する。また、受信パケット解析部８１３は、ヘッダ内のコネクション情報が受信テーブル８１１に登録された有効なコネクション情報のどれとも一致しない受信パケットについては、ＡＣＫパケットを含む全ての受信パケットを受信ＦＩＦＯ３０に転送する。また、受信パケット解析部８１３は、受信ＡＣＫパケットを受信ＡＣＫ＿ＦＩＦＯ８２に転送した際に受信タイマ８５にカウント起動信号を供給する。
【００７０】
（第３´の処理：テーブル情報の無効化）
受信パケット解析部８１３は、上記のコネクション情報どうしの比較で、受信設定レジスタ８４に設定された無効化判定時間内に一度もヒットしなかった受信テーブル８１１のコネクション情報を無効化する処理を行う。
【００７１】
以上の受信パケット解析部８１３によって第１´の処理と第２´の処理が行われる順番としては、第２´の処理を先に第１´の処理を後とする。その理由は送信パケット解析部７１３の説明でした理由と同様である。第３´の処理は第２´の処理に伴って行われる。
【００７２】
受信パケット解析部８１３は、上記の第１´の処理で、受信フィルタ条件を満足した受信ＡＣＫパケットを遅延対象とすべき受信ＡＣＫパケットとして判定する。受信パケット解析部８１３は、その受信ＡＣＫパケットのヘッダに含まれるコネクション情報を受信テーブル８１１に登録し、かつ、登録したコルクション情報に対してこれが有効であることを示す有効フラグをセットするように受信テーブル管理部８１２に依頼する。
【００７３】
受信テーブル管理部８１２は、受信パケット解析部８１３からの依頼に応じて、当該受信ＡＣＫパケットのヘッダに含まれるコネクション情報を受信テーブル８１１に登録し、登録したコルクション情報に対してこれが有効であることを示す有効フラグをセットする。この際、その受信ＡＣＫパケットのコネクション情報と同じコネクション情報が有効フラグがオフの状態で受信テーブル８１１に既に登録されている場合がある。この場合には受信テーブル管理部８１２は、その有効フラグをオンにセットしなおすだけでよい。
【００７４】
＜受信フィルタ条件＞
次に、受信フィルタ条件について説明する。受信設定レジスタ８４には受信フィルタ条件として以下を設定することが可能である。
【００７５】
受信フィルタ条件１´．送信元ＩＰアドレス：特定の送信元ＩＰアドレスをヘッダに含む受信ＡＣＫパケットであること。「送信元」とはＡＣＫパケットの送信元である。
受信フィルタ条件２´．送信元ポート番号と送信先ポート番号との組み合わせ：特定のアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号との組み合わせをヘッダに含む受信ＡＣＫパケットであること。
受信フィルタ条件３´．受信ＡＣＫパケットの受信レート：受信ＡＣＫパケットの受信レートが設定値以上であること。
【００７６】
各受信フィルタ条件はそれぞれ個別にユーザによる有効／無効の設定と詳細内容の設定がされることが可能である。例えば受信フィルタ条件１´の送信元ＩＰアドレスには、個別の送信元ＩＰアドレス、あるいはその範囲などの設定が可能である。受信フィルタ条件２´の送信元ポート番号と送信先ポート番号についても、個別のポート番号、あるいはその範囲などの設定が可能である。受信フィルタ条件３の設定値にはデフォルト値が設けられており、また、ユーザが具体的な数値を設定することが可能である。さらに、受信設定レジスタ８４に設定された各受信フィルタ条件はそれぞれ個別に有効／無効のステータスを、随時ユーザからの指定により切り替えられるようになっている。ここで、無効のステータスが設定された受信フィルタ条件は、受信設定レジスタ８４にその内容は保持されているものの判定処理では無為な受信フィルタ条件として扱われる。
【００７７】
＜受信テーブル８１１の構成＞
受信テーブル８１１の構成は送信テーブル７１１の構成と同じであるため、説明を省略する。
【００７８】
＜本実施形態のネットワーク通信装置１００の動作＞
次に、本実施形態のネットワーク通信装置１００の動作を説明する。
【００７９】
＜パケット送信時の動作＞
まず、パケット送信時の動作から説明する。
図７はパケット送信処理のフローチャートである。
【００８０】
システムバスインタフェース４０を通じて上位層から送信フィルタ７１に送信パケットが転送される。送信フィルタ７１は、その送信パケットを受け取ると（ステップＳ１０１）、送信パケット解析部７１３にて、その送信パケットのヘッダに含まれるＡＣＫビット６３４（図２参照）を見て、その送信パケットがＡＣＫパケットであるかどうかを判定する（ステップＳ１０２）。ＡＣＫパケットでなければ（ステップＳ１０２のＮＯ）、送信パケット解析部７１３はその送信パケットを送信ＦＩＦＯ２０に転送する（ステップＳ１０３）。送信ＦＩＦＯ２０に保持された送信パケットは、送信セレクタ７３にて選択された際にＭＡＣ部１０に転送され、ＭＡＣ層の処理が施された後、ネットワーク１に送出される。送信セレクタ７３の動作については後で説明する。
【００８１】
ステップＳ１０２で、送信パケットがＡＣＫパケットであることが判定された場合（ステップＳ１０２のＹＥＳ）、送信パケット解析部７１３は、その送信ＡＣＫパケットのヘッドに含まれるコネクション情報と送信テーブル７１１に登録された有効なコネクション情報とを比較する（ステップＳ１０４）。
【００８２】
送信ＡＣＫパケットのコネクション情報が送信テーブル７１１の有効なコネクション情報のいずれかと一致した場合（ステップＳ１０５のＹＥＳ）、送信パケット解析部７１３は当該送信ＡＣＫパケットを遅延対象の送信ＡＣＫパケットとみなして送信ＡＣＫ＿ＦＩＦＯ７２に転送する（ステップＳ１１２）。送信ＡＣＫ＿ＦＩＦＯ７２に保持されたＡＣＫ送信パケットは、上記と同様に、送信セレクタ７３にて選択された際にＭＡＣ部１０に転送され、ＭＡＣ層の処理が施された後、ネットワーク１に送出される。
【００８３】
また、ステップＳ１０５の結果、ＡＣＫ送信パケットのコネクション情報が送信テーブル７１１に登録された有効なコネクション情報のどれとも一致しない場合（ステップＳ１０５のＮＯ）、送信パケット解析部７１３は、その送信ＡＣＫパケットを遅延対象外の送信ＡＣＫパケットとみなして送信ＦＩＦＯ２０に転送する（ステップＳ１０６）。この後、送信パケット解析部７１３は、送信設定レジスタ７４に設定されたフィルタ条件に従って、その送信ＡＣＫパケットを遅延対象とすべき送信ＡＣＫパケットであるかどうかを判定する（ステップＳ１０７）。この判定処理の詳細については後で説明する。
【００８４】
この判定でＮＯが判定された場合（ステップＳ１０８のＮＯ）、送信パケット解析部７１３は、当該送信ＡＣＫパケットを遅延対象外とすべきパケットと判定して処理を終了する。ＹＥＳが判定された場合（ステップＳ１０８のＹＥＳ）、送信パケット解析部７１３は、送信テーブル７１１に、有効フラグがオフで、当該送信ＡＣＫパケットに含まれるコネクション情報と同じコネクション情報が記録されたエントリが存在するかどうかを判定する（ステップＳ１０９）。
【００８５】
このステップＳ１０９でＹＥＳが判定された場合（ステップＳ１０９のＹＥＳ）、送信パケット解析部７１３は、該当するエントリのコネクション情報を有効にするために、そのエントリの有効フラグをオフからオンに変更する（ステップＳ１１０）。また、ステップＳ１０９でＮＯが判定された場合（ステップＳ１０９のＮＯ）、送信パケット解析部７１３は、その送信パケットのコネクション情報を送信テーブル７１１に新たに登録し、そのコネクション情報に対応する有効フラグをオンにセットする（ステップＳ１１１）。
【００８６】
以後、ステップＳ１１０またはステップＳ１１１で有効となったコネクション情報をヘッダにもつ送信ＡＣＫパケットを送信パケット解析部７１３が受け取った際に、ステップＳ１０４での比較により、当該送信ＡＣＫパケットは遅延対象の送信ＡＣＫパケットとみなされ、送信ＡＣＫ＿ＦＩＦＯ７２に転送される（ステップＳ１１２）。
【００８７】
＜ＡＣＫ送信側の遅延対象パケットの情報登録処理＞
次に、上記のステップＳ１０７の、遅延対象パケットの情報登録処理について説明する。
【００８８】
図８はこのＡＣＫ送信側の遅延対象パケットの情報登録処理の一例を示すフローチャートである。なお、実際の判定処理は送信設定レジスタ７４にユーザによって設定された送信フィルタ条件に拠る。図８のフローチャートはその一例として、送信フィルタ条件３を有効とし、送信ＡＣＫパケットの送信レートの設定値として"ｘ"が設定されている場合の判定処理を示すものである。
【００８９】
送信パケット解析部７１３は、送信ＦＩＦＯ２０に入力された同じコネクション情報をヘッダにもつ送信ＡＣＫパケットを監視して次の操作によって送信レートを得る。送信パケット解析部７１３は、監視を始めてから最初に送信ＦＩＦＯ２０に入力された送信ＡＣＫパケットのＡＣＫ番号１と入力時刻１を記憶する。送信パケット解析部７１３は、先の送信ＡＣＫパケットと同じコネクション情報をもった送信ＡＣＫパケットが送信ＦＩＦＯ２０に入力されると、この送信ＡＣＫパケットのＡＣＫ番号２と入力時刻２を記憶する（ステップＳ２０１）。そして送信パケット解析部７１３は、（ＡＣＫ番号２−ＡＣＫ番号１）／（入力時刻２−入力時刻１）の計算を行い、得られた値を送信ＡＣＫパケットの送信レートの測定値とする（ステップＳ２０２）。
【００９０】
次に、送信パケット解析部７１３は、求めた測定値を、送信設定レジスタ７４に設定された送信フィルタ条件３の伝送レートの設定値ｘと比較する（ステップＳ２０３）。この比較の結果、送信ＡＣＫパケットの送信レートの測定値が設定値ｘ以上である場合（ステップＳ２０３のＹＥＳ）、送信パケット解析部７１３は、当該送信ＡＣＫパケットを遅延対象とすべきパケットと判定する（ステップＳ２０４）。また、送信ＡＣＫパケットの送信レートの測定値が設定値ｘ未満である場合（ステップＳ２０３のＮＯ）、送信パケット解析部７１３は、当該送信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ２０５）。
【００９１】
以上は、送信フィルタ条件３を有効とした場合の遅延対象パケットの情報登録処理の説明であるが、送信フィルタ条件１がさらに有効とされた場合には、ステップ２０１の処理で対象となる送信ＡＣＫパケットは、フィルタ条件１として設定された送信先ＩＰアドレスをヘッダにもつ送信ＡＣＫパケットに絞り込まれる。同様に、送信フィルタ条件２がさらに有効とされた場合には、ステップ２０１の処理で対象となる送信ＡＣＫパケットは、送信フィルタ条件２として設定された送信元ポート番号と送信先ポート番号をヘッダにもつ送信ＡＣＫパケットにさらに絞り込まれる。
【００９２】
＜送信ＡＣＫパケットの遅延処理＞
次に、ステップＳ１１２およびステップＳ１０３において送信ＡＣＫパケットが送信ＡＣＫ＿ＦＩＦＯ７２と送信ＦＩＦＯ２０とに振り分けて転送されてから以後の、送信ＡＣＫパケットの遅延処理の動作を説明する。
【００９３】
送信ＡＣＫ＿ＦＩＦＯ７２および送信ＦＩＦＯ２０からパケットを取り出すタイミングは送信タイマ７５と送信セレクタ７３によって生成される。この際、送信ＡＣＫ＿ＦＩＦＯ７２からの送信ＡＣＫパケットを取り出すタイミングは、送信ＡＣＫ＿ＦＩＦＯ７２にその送信ＡＣＫパケットが入力されたタイミングから、送信設定レジスタ７４に設定された遅延時間分だけ遅延されたタイミングとなるように制御が行われる。以下に、この動作の詳細を説明する。
【００９４】
図９は送信ＡＣＫパケットの遅延処理の動作のフローチャートである。
送信タイマ７５は、送信設定レジスタ７４に設定された遅延時間の値で初期化される（ステップＳ３０１）。この初期化は、例えば、本ネットワーク通信装置１００の起動直後等に行われる。
【００９５】
送信タイマ７５は、送信パケット解析部７１３が送信ＡＣＫパケットを送信ＡＣＫ＿ＦＩＦＯ７２に１つ転送する毎に送信パケット解析部７１３から出力されるカウント起動信号が入力されることを契機に（ステップＳ３０２のＹＥＳ）、カウントダウンを開始する（ステップＳ３０３）。
【００９６】
送信タイマ７５は、カウントダウンの開始前と、カウントダウンを開始してからカウント値が"０"になる直前までの各期間には（ステップＳ３０２のＮＯ、ステップＳ３０４のＮＯ）、送信セレクタ７３に送信ＦＩＦＯ選択信号を出力する。送信セレクタ７３は、送信ＦＩＦＯ選択信号が入力される間、送信ＦＩＦＯ２０の送信パケット（データパケット）を選択して（ステップＳ３０５）、ＭＡＣ部１０に転送する。
【００９７】
一方、送信タイマ７５のカウント値が"０"になったとき（ステップＳ３０４のＹＥＳ）、送信タイマ７５は送信セレクタ７３に送信ＡＣＫ＿ＦＩＦＯ選択信号を出力する。送信セレクタ７３は、この送信ＡＣＫ＿ＦＩＦＯ選択信号の入力に応じて、送信ＡＣＫ＿ＦＩＦＯ７２の送信ＡＣＫパケットを選択して（ステップＳ３０６）、ＭＡＣ部１０に転送する。
【００９８】
送信タイマ７５は、送信セレクタ７３に送信ＡＣＫ＿ＦＩＦＯ選択信号を出力した後、送信設定レジスタ７４に設定された遅延時間の値でリセットされる（ステップＳ３０７）。以後、ステップＳ３０２から同様に制御が繰り返される。
【００９９】
この制御によって、特定の送信フィルタ条件を満足する送信ＡＣＫパケットをネットワーク１に送出するタイミングを遅延させることが可能になる。
【０１００】
図１０は、本実施形態のネットワーク通信装置１００による送信ＡＣＫパケットの遅延の様子を本制御を採用しない場合と比較した概念図である。ここで、（ａ）は本制御を採用しない場合、（ｂ）は本制御を採用した場合をそれぞれ示している。ここでは、２つのデータパケットの受信に対してＡＣＫパケットを返す場合を想定している。同図に示すように、本制御を採用した場合、２つ目のデータパケットの受信からＡＣＫパケットの送信までに遅延時間が発生することによって、次のデータパケットの受信タイミングも遅延し、結果的に、消費される通信帯域を低減できることが分かる。  
【０１０１】
＜ＡＣＫ送信側で特定アプリケーションプロトコルの通信帯域を制限する方法＞
次に、ＡＣＫ送信側で特定のアプリケーションプロトコルの通信帯域を制限する方法を説明する。
【０１０２】
送信フィルタ条件２の「送信元ポート番号と送信先ポート番号との組み合わせ」として、使用する通信帯域を制限したいアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号との組み合わせを送信設定レジスタ７４に設定しておく。この際、必要に応じて送信フィルタ条件１、送信フィルタ条件３を設定すればよい。すなわち、特定のＡＣＫ送信先との間での当該アプリケーションプロトコルによる通信帯域に制限を設けたい場合には送信フィルタ条件１を設定すればよい。また、送信ＡＣＫパケットの送信レート次第で特定アプリケーションプロトコルによる通信帯域に制限をさらに設けたい場合には送信フィルタ条件３の設定を加えればよい。
【０１０３】
次に、送信フィルタ条件２として特定のアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号が設定され、かつ送信フィルタ条件３の送信ＡＣＫパケットの送信レートの設定値が設定されている場合の遅延対象パケットの情報登録処理を説明する。
【０１０４】
図１１はこの遅延対象パケットの情報登録処理のフローチャートである。
送信パケット解析部７１３は、送信ＦＩＦＯ２０に転送された送信ＡＣＫパケットのヘッダに含まれる送信元ポート番号と送信先ポート番号との組み合わせを見る。送信パケット解析部７１３は、この組み合わせが、送信設定レジスタ７４に送信フィルタ条件２として設定された送信元ポート番号と送信先ポート番号との組み合わせのいずれかと一致するかどうかを判定する（ステップＳ４０１）。
【０１０５】
一致しない場合（ステップＳ４０１のＮＯ）、送信パケット解析部７１３は、その送信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ４０６）。一致する場合（ステップＳ４０１のＹＥＳ）、送信パケット解析部７１３は、送信ＦＩＦＯ２０に入力された同じコネクション情報をヘッダにもつ送信ＡＣＫパケットを監視して次の操作によって送信レートを得る。送信パケット解析部７１３は、監視を始めてから最初に送信ＦＩＦＯ２０に入力された送信ＡＣＫパケットのＡＣＫ番号１と入力時刻１を記憶する。送信パケット解析部７１３は、先の送信ＡＣＫパケットと同じコネクション情報をもった送信ＡＣＫパケットが送信ＦＩＦＯ２０に入力されると、この送信ＡＣＫパケットのＡＣＫ番号２と入力時刻２を記憶する（ステップＳ４０２）。そして送信パケット解析部７１３は、（ＡＣＫ番号２−ＡＣＫ番号１）／（入力時刻２−入力時刻１）の計算を行い、得られた値を送信ＡＣＫパケットの送信レートの測定値とする（ステップＳ４０３）。
【０１０６】
以降の動作は、図８のフローチャートと同じである。すなわち、送信パケット解析部７１３は、求めた送信レートの測定値を、送信設定レジスタ７４に設定されたフィルタ条件３の伝送レートの設定値ｘと比較する（ステップＳ４０４）。送信パケット解析部７１３は、送信ＡＣＫパケットの送信レートの測定値が設定値ｘ以上である場合（ステップＳ４０４のＹＥＳ）、当該送信ＡＣＫパケットを遅延対象とすべきパケットと判定する（ステップＳ４０５）。また、送信ＡＣＫパケットの送信レートの測定値が設定値ｘ未満である場合、送信パケット解析部７１３は、当該送信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ４０６）。
【０１０７】
以後、送信タイマ７５と送信セレクタ７３によって送信ＦＩＦＯ２０と送信ＡＣＫ＿ＦＩＦＯ７２から選択的にパケットを取り出し、ＭＡＣ部１０に転送する動作は上述した通りである。
【０１０８】
＜送信テーブル７１１の登録情報を無効化する処理＞
図１２は送信テーブル７１１の登録情報を無効化する処理のフローチャートである。
【０１０９】
送信パケット解析部７１３は、定期的、例えば遅延対象パケットの情報登録処理が完了する都度、あるいは一定の時間周期で、以下の無効化処理を開始する。まず、送信パケット解析部７１３は、送信テーブル７１１に未だ判定の終えていない有効なコネクション情報を含むエントリがあるかどうかを判定する（ステップＳ５０１）。ここで「判定」とは、送信テーブル７１１の登録情報を無効化するかどうかを判定する処理のことである。
【０１１０】
ステップＳ５０１でＮＯが判定された場合、送信パケット解析部７１３は、何もせずに無効化処理を終了する。ＹＥＳが判定された場合、送信パケット解析部７１３は、未判定の有効なコネクション情報が登録されたエントリの中の１つのエントリから最後のヒット時刻を取り出す（ステップＳ５０２）。次に、送信パケット解析部７１３は、最後のヒット時刻と現在の時刻とを比較して、最後のヒット時刻からの経過時間を計算する（ステップＳ５０３）。
【０１１１】
送信パケット解析部７１３は、求めた経過時間が送信設定レジスタ７４に設定された無効化判定時間以上になったかどうかを判定する（ステップＳ５０４）。経過時間が無効化判定時間以上である場合（ステップＳ５０４のＹＥＳ）、送信パケット解析部７１３は、当該エントリのコネクション情報を無効化対象として判定する（ステップＳ５０５）。経過時間が無効化判定時間未満である場合、送信パケット解析部７１３は、当該エントリのコネクション情報を有効のままとし、ステップＳ５０１に戻って、次の未判定の有効なコネクション情報を含むエントリについて同じ処理を繰り返す。
【０１１２】
このような送信テーブル７１１の登録情報を無効化する処理を採用することによって、送信テーブル７１１の肥大化による、遅延対象パケットの判定処理の効率低下を防止することができ、高速化を図ることができる。
【０１１３】
＜パケット受信時の動作＞
以上、送信するＡＣＫパケットを遅延させる方法について説明したが、本ネットワーク通信装置１００がデータを送信する側つまりＡＣＫパケットを受信する側として動作する場合にも同様の方法でＡＣＫパケットの受信を遅延させることが可能である。
【０１１４】
図１３はパケット受信処理のフローチャートである。
ＭＡＣ部１０から受信フィルタ８１に受信が供給される。受信フィルタ８１は、その受信パケットを受け取ると（ステップＳ６０１）、受信パケット解析部８１３にて、その受信パケットのヘッダに含まれるＡＣＫビット６３４（図２参照）を見て、その受信パケットがＡＣＫパケットであるかどうかを判定する（ステップＳ６０２）。ＡＣＫパケットでなければ（ステップＳ６０２のＮＯ）、受信パケット解析部８１３はその受信パケットを受信ＦＩＦＯ３０に転送する（ステップＳ６０３）。受信ＦＩＦＯ３０に保持された受信パケットは、受信セレクタ８３にて選択された際にシステムバスインタフェース４０を通じて上位層に転送される。受信セレクタ８３の動作については後で説明する。
【０１１５】
ステップＳ６０２で、受信パケットがＡＣＫパケットであることが判定された場合、受信パケット解析部８１３は、その受信ＡＣＫパケットのヘッドに含まれるコネクション情報と受信テーブル８１１に登録された有効なコネクション情報とを比較する（ステップＳ６０４）。
【０１１６】
受信ＡＣＫパケットのコネクション情報が受信テーブル８１１の有効なコネクション情報のいずれかと一致した場合（ステップＳ６０５のＹＥＳ）、受信パケット解析部８１３は当該受信ＡＣＫパケットを遅延対象の受信ＡＣＫパケットとみなして受信ＡＣＫ＿ＦＩＦＯ８２に転送する（ステップＳ６１２）。受信ＡＣＫ＿ＦＩＦＯ８２に保持された受信ＡＣＫパケットは、上記と同様に、受信セレクタ８３にて選択された際にシステムバスインタフェース４０を通じて上位層に転送される。
【０１１７】
また、ステップＳ６０５の結果、受信ＡＣＫパケットのコネクション情報が受信テーブル８１１に登録された有効なコネクション情報のどれとも一致しない場合（ステップＳ６０５のＮＯ）、受信パケット解析部８１３は、その受信ＡＣＫパケットを受信ＦＩＦＯ３０に転送する（ステップＳ６０６）。この後、受信パケット解析部８１３は、受信設定レジスタ８４に設定された受信フィルタ条件に従って、その受信ＡＣＫパケットが遅延対象とすべき受信ＡＣＫパケットであるかどうかを判定する（ステップＳ６０７）。この判定処理の詳細については後で説明する。
【０１１８】
こ判定でＮＯが判定された場合（ステップＳ６０８のＮＯ）、受信パケット解析部８１３は、当該受信ＡＣＫパケットを遅延対象外とすべきパケットと判定して処理を終了する。ＹＥＳが判定された場合（ステップＳ６０８のＹＥＳ）、受信パケット解析部８１３は、受信テーブル８１１に、有効フラグがオフで、当該受信ＡＣＫパケットに含まれるコネクション情報と同じコネクション情報が記録されたエントリが存在するかどうかを判定する（ステップＳ６０９）。
【０１１９】
このステップＳ６０９でＹＥＳが判定された場合（ステップＳ６０９のＹＥＳ）、受信パケット解析部８１３は、該当するエントリのコネクション情報を有効にするために、そのエントリの有効フラグをオフからオンに変更する（ステップＳ６１０）。また、ステップＳ６０９でＮＯが判定された場合（ステップＳ６０９のＮＯ）、受信パケット解析部８１３は、その受信ＡＣＫパケットのコネクション情報を受信テーブル８１１に新たに登録し、そのコネクション情報に対応する有効フラグをオンにセットする（ステップＳ６１１）。
【０１２０】
以後、ステップＳ６１０またはステップＳ６１１で有効となったコネクション情報をヘッダにもつ受信ＡＣＫパケットを受信パケット解析部８１３が受け取った際に、ステップＳ６０４での比較により、当該受信ＡＣＫパケットは遅延対象の受信ＡＣＫパケットとみなされ、受信ＡＣＫ＿ＦＩＦＯ８２に転送される（ステップＳ６１２）。
【０１２１】
＜ＡＣＫ受信側の遅延対象パケットの情報登録処理＞
次に、上記のステップＳ６０７の、遅延対象パケットの情報登録処理について説明する。なお、この処理は、前述した受信パケット解析部８１３による遅延対象パケットの情報登録処理と基本的には同じである。
【０１２２】
図１４はこのＡＣＫ受信側の遅延対象パケットの情報登録処理の流れの一例を示すフローチャートである。なお、実際の判定処理は受信設定レジスタ８４にユーザによって設定された受信フィルタ条件に拠る。図１４はその一例として、受信フィルタ条件３´を有効とし、送信ＡＣＫパケットの送信レートの設定値として"ｙ"が設定されている場合の判定処理を示すものである。
【０１２３】
受信パケット解析部８１３は、受信ＦＩＦＯ３０に入力された同じコネクション情報をヘッダにもつ受信ＡＣＫパケットを監視して次の操作によって受信レートを得る。受信パケット解析部８１３は、監視を始めてから最初に受信ＦＩＦＯ３０に入力された受信ＡＣＫパケットのＡＣＫ番号１と入力時刻１を記憶する。受信パケット解析部８１３は、先の受信ＡＣＫパケットと同じコネクション情報をもった受信ＡＣＫパケットが受信ＦＩＦＯ３０に入力されると、この受信ＡＣＫパケットのＡＣＫ番号２と入力時刻２を記憶する（ステップＳ７０１）。そして受信パケット解析部８１３は、（ＡＣＫ番号２−ＡＣＫ番号１）／（入力時刻２−入力時刻１）の計算を行い、得られた値を受信ＡＣＫパケットの受信レートの測定値とする（ステップＳ７０２）。
【０１２４】
次に、受信パケット解析部８１３は、求めた測定値を、受信設定レジスタ８４に設定された受信フィルタ条件３´の伝送レートの設定値ｙと比較する（ステップＳ７０３）。この比較の結果、受信ＡＣＫパケットの受信レートの測定値が設定値ｙ以上である場合（ステップＳ７０３のＹＥＳ）、受信パケット解析部８１３は、当該受信ＡＣＫパケットを遅延対象とすべきパケットと判定する（ステップＳ７０４）。また、受信ＡＣＫパケットの受信レートの測定値が設定値ｙ未満である場合、（ステップＳ７０３のＮＯ）、受信パケット解析部８１３は、当該受信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ７０５）。
【０１２５】
以上は、受信フィルタ条件３´を有効とした場合の遅延対象パケットの情報登録処理の説明であるが、受信フィルタ条件１´がさらに有効とされた場合には、ステップ７０１の処理で対象となる受信ＡＣＫパケットは、受信フィルタ条件１´として設定された送信元ＩＰアドレスをヘッダにもつ受信ＡＣＫパケットに絞り込まれる。同様に、受信フィルタ条件２´がさらに有効とされた場合には、ステップ７０１の処理で対象となる受信ＡＣＫパケットは、受信フィルタ条件２´として設定された送信元ポート番号と送信先ポート番号をヘッダにもつ受信ＡＣＫパケットにさらに絞り込まれる。
【０１２６】
＜受信ＡＣＫパケットの遅延処理＞
次に、ステップＳ６１２およびステップＳ６０３において受信ＡＣＫパケットが受信ＡＣＫ＿ＦＩＦＯ８２と受信ＦＩＦＯ３０とに振り分けて転送されてから以後の、受信ＡＣＫパケットの遅延処理の動作を説明する。なお、この動作は、前述した＜送信ＡＣＫパケットの遅延処理＞と基本的には同じである。
【０１２７】
受信ＡＣＫ＿ＦＩＦＯ８２および受信ＦＩＦＯ３０からパケットを取り出すタイミングは受信タイマ８５と受信セレクタ８３によって生成される。この際、受信ＡＣＫ＿ＦＩＦＯ８２から受信ＡＣＫパケットを取り出すタイミングは、受信ＡＣＫ＿ＦＩＦＯ８２にその受信ＡＣＫパケットが入力されたタイミングから、受信設定レジスタ８４に設定された遅延時間分だけ遅延されたタイミングとなるように制御が行われる。以下に、この動作の詳細を説明する。
【０１２８】
図１５は受信ＡＣＫパケットの遅延処理の動作のフローチャートである。
受信タイマ８５は、受信設定レジスタ８４に設定された遅延時間の値で初期化される（ステップＳ８０１）。この初期化は、例えば、本ネットワーク通信装置１００の起動直後等に行われる。
【０１２９】
受信タイマ８５は、受信パケット解析部８１３が受信ＡＣＫパケットを受信ＡＣＫ＿ＦＩＦＯ８２に１つ転送する毎に受信パケット解析部８１３から出力されるカウント起動信号が入力されたことを契機に（ステップＳ８０２のＹＥＳ）、カウントダウンを開始する（ステップＳ８０３）。
【０１３０】
受信タイマ８５は、カウントダウンの開始前と、カウントダウンを開始してからカウント値が"０"になる直前までの各期間においては（ステップＳ８０２のＮＯ、ステップＳ８０４のＮＯ）、受信セレクタ８３に受信ＦＩＦＯ選択信号を出力する。受信セレクタ８３は、受信ＦＩＦＯ選択信号が入力される間、受信ＦＩＦＯ３０の受信パケット（データパケット）を選択して、システムバスインタフェース４０を通じて上位層に転送する。
【０１３１】
一方、受信タイマ８５のカウント値が"０"になったとき（ステップＳ８０４のＹＥＳ）、受信タイマ８５は受信セレクタ８３に受信ＡＣＫ＿ＦＩＦＯ選択信号を出力する。受信セレクタ８３は、この受信ＡＣＫ＿ＦＩＦＯ選択信号の入力に応じて、受信ＡＣＫ＿ＦＩＦＯ８２の受信ＡＣＫパケットを選択して（ステップＳ８０６）、システムバスインタフェース４０を通じて上位層に転送する。
【０１３２】
受信タイマ８５は、受信セレクタ８３に受信ＡＣＫ＿ＦＩＦＯ選択信号を出力した後、受信設定レジスタ８４に設定された遅延時間の値でリセットされる（ステップＳ８０７）。以後、ステップＳ８０２から同様に制御が繰り返される。
【０１３３】
この制御によって、特定のフィルタ条件を満足する受信ＡＣＫパケットを上位層に転送するタイミングを遅延させることが可能になる。
【０１３４】
＜ＡＣＫ受信側で特定アプリケーションプロトコルの通信帯域を制限する方法＞
次に、ＡＣＫ受信側で特定のアプリケーションプロトコルの通信帯域を制限する方法を説明する。この場合も、基本的には、上記の＜ＡＣＫ送信側で特定アプリケーションプロトコルの通信帯域を制限する方法＞と同様である。
【０１３５】
すなわち、受信フィルタ条件２´の「送信元ポート番号と送信先ポート番号との組み合わせ」として、使用する通信帯域を制限したいアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号との組み合わせを受信設定レジスタ８４に設定しておく。この際、必要に応じて受信フィルタ条件１´、受信フィルタ条件３´を設定すればよい。すなわち、特定のＡＣＫ送信元との間での当該アプリケーションプロトコルによる通信帯域に制限を設けたい場合には受信フィルタ条件１´を設定すればよい。また、ＡＣＫパケットの受信レート次第で特定アプリケーションプロトコルによる通信帯域に制限を設けたい場合には受信フィルタ条件３´の設定を加えればよい。
【０１３６】
次に、受信フィルタ条件２´として特定のアプリケーションプロトコルに対応する送信元ポート番号と送信先ポート番号が設定され、かつ受信フィルタ条件３´のＡＣＫパケットの受信レートの設定値が設定されている場合の遅延対象パケットの情報登録処理を説明する。
【０１３７】
図１６はこの遅延対象パケットの情報登録処理を示すフローチャートである。
受信パケット解析部８１３は、受信ＦＩＦＯ３０に転送された受信ＡＣＫパケットのヘッダに含まれる送信元ポート番号と送信先ポート番号との組み合わせを見る。受信パケット解析部８１３は、この組み合わせが、受信設定レジスタ８４に受信フィルタ条件２´として設定された送信元ポート番号と送信先ポート番号との組み合わせのいずれかと一致するかどうかを判定する（ステップＳ９０１）。
【０１３８】
一致しない場合（ステップＳ９０１のＮＯ）、受信パケット解析部８１３は、その受信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ９０６）。一致する場合（ステップＳ９０１のＹＥＳ）、受信パケット解析部８１３は、受信ＦＩＦＯ３０に入力された同じコネクション情報をヘッダにもつ受信ＡＣＫパケットを監視して次の操作によって受信レートを得る。受信パケット解析部８１３は、監視を始めてから最初に受信ＦＩＦＯ３０に入力された受信ＡＣＫパケットのＡＣＫ番号１と入力時刻１を記憶する。受信パケット解析部８１３は、先の受信ＡＣＫパケットと同じコネクション情報をもった受信ＡＣＫパケットが受信ＦＩＦＯ３０に入力されると、この受信ＡＣＫパケットのＡＣＫ番号２と入力時刻２を記憶する（ステップＳ９０２）。そして受信パケット解析部８１３は、（ＡＣＫ番号２−ＡＣＫ番号１）／（入力時刻２−入力時刻１）の計算を行い、得られた値を受信ＡＣＫパケットの受信レートの測定値とする（ステップＳ９０３）。
【０１３９】
以降の動作は、図１４のフローチャートと同じである。すなわち、受信パケット解析部８１３は、求めた受信レートの測定値を、受信フィルタ条件３´の伝送レートの設定値ｙと比較する（ステップＳ９０４）。受信パケット解析部８１３は、受信ＡＣＫパケットの受信レートの測定値が設定値ｙ以上である場合（ステップＳ９０４のＹＥＳ）、当該受信ＡＣＫパケットを遅延対象とすべきパケットと判定する（ステップＳ９０５）。また、受信ＡＣＫパケットの受信レートの測定値が設定値ｙ未満である場合、受信パケット解析部８１３は当該受信ＡＣＫパケットを遅延対象外とすべきパケットと判定する（ステップＳ９０６）。
【０１４０】
以後、受信タイマ８５と受信セレクタ８３によって受信ＦＩＦＯ３０と受信ＡＣＫ＿ＦＩＦＯ８２から選択的にパケットを取り出し、システムバスインタフェース４０を通じて上位層に転送する動作は上述した通りである。
【０１４１】
受信テーブル８１１の登録情報を無効化する処理は、上記の送信テーブル７１１の登録情報を無効化する処理と同様に行われる。
【０１４２】
以上のように、本実施形態のネットワーク通信装置１００によれば、特定の通信相手との間での通信帯域の制限や、特定のアプリケーションプロトコルを用いた通信の帯域の制限を行うことが可能になる。例えば、ＦＴＰ等のベストエフォート型通信の通信帯域を制限し、動画のストリーミングの通信帯域を制限しないようにフィルタ条件を設定することによって、例えば、上記２つのアプリケーションプロトコルによる通信が同時に行われるときであっても、動画ストリーミングの伝送に十分な帯域を確保できる。これによって受信側の再生機器において、動画ストリーミングの再生を良好に行うことができる。
【０１４３】
また、本実施形態のネットワーク通信装置１００によれば、ＡＣＫ送信側（データ受信側）として動作する場合と、ＡＣＫ受信側（データ送信側）として動作する場合のどちらでも、特定の通信相手との間での通信帯域の制限や、特定のアプリケーションプロトコルを用いた通信の帯域の制限を行うことができる。これにより、他の特定のコネクションの通信に割り当て可能な帯域が増大し、その通信の品質を向上させることができる。
【０１４４】
さらに、送信設定レジスタ７４と受信設定レジスタ８４にフィルタ条件としてＡＣＫパケットの伝送レートの設定値を設定できるので、ＡＣＫパケットの伝送レートの測定値が過大となったときにだけ帯域制限を行うことができる。これにより、確認応答を遅延させる必要のあるコネクションをより高い信頼性で判定することができる。
【０１４５】
さらに、送信ＡＣＫパケットの遅延時間と受信ＡＣＫパケットの遅延時間をそれぞれ別々に設定できるので、送信用に使用可能な帯域と受信用に使用可能な帯域とが異なる状況にも良好に対応できるようになる。
【０１４６】
なお、送信設定レジスタ７４および受信設定レジスタ８４への設定は、システムバス２に接続されたＣＰＵ３によって実行されるアプリケーションプログラムによって行われる。このアプリケーションプログラムに基づいてＣＰＵ３はユーザに対して設定用のインタフェース画面を図示しないモニタに表示する。ＣＰＵ３は、そのインタフェース画面に対してユーザからキーボードやマウスなどの図示しない入力装置を操作して入力されたフィルタ条件を、システムバスインタフェース４０を通じて送信設定レジスタ７４および受信設定レジスタ８４に設定する。
【０１４７】
＜変形例１＞
上記の実施形態では、送信テーブル７１１の登録情報を無効化する処理において、最後のヒット時刻からの経過時間を無効化判定時間と比較したが、変形例として次のようなものがある。送信パケット解析部７１３は、送信テーブル７１１のコネクション情報毎に、送信ＡＣＫパケットのコネクション情報とヒットしなかった比較回数を管理する。送信パケット解析部７１３は、一定の時間周期で、比較回数が予め設定された回数以下であるコネクション情報を無効化対象として判定する。この方法によっても、上記の方法と同等の効果が得られる。この方法は、受信テーブル８１１の登録情報を無効化する処理に対して同様に利用できる。
【０１４８】
＜変形例２＞
上記の実施形態では、遅延対象とすべきＡＣＫパケットを判定するためのフィルタ条件をユーザが任意に設定できることとした。逆に遅延対象から除外すべきＡＣＫパケットを判定するためのアンフィルタ条件として、通信相手のＩＰアドレス、ポート番号、伝送レートの値などを設定できるようにしてもよい。送信パケット解析部７１３および受信パケット解析部８１３はそれぞれ、アンフィルタ条件に従って遅延対象とすべきＡＣＫパケットの判定を行う。遅延対象とすべきＡＣＫパケットの判定をフィルタ条件に従って行う方式では、未知の通信相手、未知のアプリケーションプロトコルによるＡＣＫパケットが遅延対象外と判定されるおそれがある。一方、遅延対象とすべきＡＣＫパケットの判定をアンフィルタ条件に従って行うことにより、未知の通信相手、未知のアプリケーションプロトコルによるＡＣＫパケットが遅延対象から除外されることが無くなる。これにより、既知の特定の通信相手や、既知の特定のポート番号を用いた通信の帯域を安定して確保することができ、通信の品質を向上させることができる。
【０１４９】
＜第２の実施形態＞
上記の第１の実施形態は、受信したデータを利用可能な情報処理装置２００に組み込まれたネットワーク通信装置１００であるが、本発明は、このような実施形態で利用されることに限らない。
【０１５０】
例えば、スイッチングハブ、ルータ等のネットワーク中継装置に採用することも可能である。ネットワーク中継装置は、情報処理装置等の機器を接続可能なポートを複数有し、あるポートを通じて受信したパケットのヘッダに記述された送信先のＭＡＣアドレスまたはＩＰアドレスを読み取って、送信先の機器が接続されている他のポートに対してパケットを転送する。
【０１５１】
図１７は、本発明の第２の実施形態としてのネットワーク中継装置の構成を示す図である。同図に示すように、このネットワーク中継装置３００は、個々の情報処理装置２００Ａ，２００Ｂ，・・・を接続可能な個々のポート３０１Ａ，３０１Ｂ，・・・に対応して、第１の実施形態の図３に示したネットワーク通信装置１００に相当するネットワーク通信処理部１００Ａ，１００Ｂ，・・・が組み込まれた装置である。このネットワーク中継装置３００には、ネットワーク通信処理部１００Ａ，１００Ｂ，・・・の他、システムバス３０２、ＣＰＵ３０３、ＲＯＭ３０４、ＲＡＭ３０５等を備えている。
【０１５２】
ここで、ネットワーク中継装置３００の第１のポート３０１Ａに接続された情報処理装置２００Ａから第２のポート３０１Ｂに接続された情報処理装置２００Ｂに宛ててパケットが送信される場合の動作の概要を説明する。
【０１５３】
情報処理装置２００Ａは、ネットワーク通信処理部１００Ａに情報処理装置２００Ｂに宛てて送信パケットを転送する。ネットワーク通信処理部１００Ａは、情報処理装置２００Ａから転送された送信パケットに対して、ＭＡＣ部１０ＡにてＭＡＣ層の処理を行った後、送信系１００Ａ−Ｓにて、図７のパケット送信処理、図８の遅延対象パケットの情報登録処理、図９の送信ＡＣＫパケットの遅延処理を行う。送信系１００Ａ−Ｓにて処理された送信パケットはシステムバスインタフェース４０Ａを通じてシステムバス３０２に送出される。
【０１５４】
ネットワーク中継装置３００内のＣＰＵ３０３は、ネットワーク通信処理部１００Ａの送信系１００Ａ−Ｓよりシステムバス３０２に送出された送信パケットのヘッダに記述されている送信先のＭＡＣアドレスまたはＩＰアドレスを確認する。ＣＰＵ３０２は、ＲＡＭ３０５に予め格納されたポート番号とＭＡＣアドレスまたはＩＰアドレスとの対応表とから、該当する送信先の情報処理装置２００Ｂが接続されている第２のポート３０１Ｂを調べる。ＣＰＵ３０２は、その第２のポート３０１Ｂに対応するネットワーク通信処理部１００Ｂに送信パケットをシステムバス３０２を通じて転送する。
【０１５５】
ネットワーク通信処理部１００Ｂは、システムバス３０２を通じて転送されたパケットを受信パケットとして受け取る。ネットワーク通信処理部１００Ｂは、受信パケットに対して、受信系１００Ｂ−Ｒにて、図１３のパケット受信処理、図１４の遅延対象パケットの情報登録処理、図１５の受信ＡＣＫパケットの遅延処理を行う。ネットワーク通信処理部１００Ｂの受信系１００Ｂ−Ｒで処理された受信パケットは、ＭＡＣ部１０ＢにてＭＡＣ層の処理が行われた後、情報処理装置２００Ｂに転送される。
【０１５６】
ネットワーク中継装置３００の第２のポート３０１Ｂに接続された情報処理装置２００Ｂから第１のポート３０１Ａに接続された情報処理装置２００Ａに宛ててパケットが送信される場合の動作も上記と同様である。
【０１５７】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【符号の説明】
【０１５８】
１…ネットワーク
１０…ＭＡＣ部
２０…送信ＦＩＦＯ
３０…受信ＦＩＦＯ
４０…システムバスインタフェース
７１…送信フィルタ
７２…送信ＡＣＫ＿ＦＩＦＯ
７３…送信セレクタ
７４…送信設定レジスタ
７５…送信タイマ
８１…受信フィルタ
８２…受信ＡＣＫ＿ＦＩＦＯ
８３…受信セレクタ
８４…受信設定レジスタ
８５…受信タイマ
１００…ネットワーク通信装置
７１１…送信テーブル
７１２…送信テーブル管理部
７１３…送信パケット解析部
８１１…受信テーブル
８１２…受信テーブル管理部
８１３…受信パケット解析部
【図１】
2010226455.tif 000003
【図２】
2010226455.tif 000004
【図３】
2010226455.tif 000005
【図４】
2010226455.tif 000006
【図５】
2010226455.tif 000007
【図６】
2010226455.tif 000008
【図７】
2010226455.tif 000009
【図８】
2010226455.tif 000010
【図９】
2010226455.tif 000011
【図１０】
2010226455.tif 000012
【図１１】
2010226455.tif 000013
【図１２】
2010226455.tif 000014
【図１３】
2010226455.tif 000015
【図１４】
2010226455.tif 000016
【図１５】
2010226455.tif 000017
【図１６】
2010226455.tif 000018
【図１７】
2010226455.tif 000019