(57)【特許請求の範囲】
【請求項１】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部と、
Ｃｏｎｖｅｒｓａｔｉｏｎ毎の送信ポリシーを保持する送信ポリシー保持部と、前記送信ポリシー保持部に保持されている送信ポリシーに従って、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際の複数の送信フレームの各々について出力リンクの切り換えを行なう送信フレーム・コントロール部と、ネットワークを介して受信した同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめて前記上位レイヤー処理部に渡すＤｕｐｌｉｃａｔｅ  ＡＣＫ処理部を備える下位レイヤー処理部と、
を具備する通信装置。
【請求項２】
前記下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめる、
請求項１に記載の通信装置。
【請求項３】
前記下位レイヤー処理部は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信するとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記上位レイヤー処理部に渡す、
請求項１に記載の通信装置。
【請求項４】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって、
Ｃｏｎｖｅｒｓａｔｉｏｎ毎の送信ポリシーを送信ポリシー保持部に保持する送信ポリシー保持ステップと、
前記送信ポリシー保持部に保持されている送信ポリシーに従って、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際の複数の送信フレームの各々について出力リンクの切り換えを行なう送信フレーム・コントロール・ステップと、
前記下位レイヤー処理部においてネットワークを介してＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信するステップと、
前記下位レイヤー処理部において受信した同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを保持するステップと、
前記下位レイヤー処理部において保持する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記上位レイヤー処理部に渡すステップと、
を有する通信方法。
【請求項５】
データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部、
Ｃｏｎｖｅｒｓａｔｉｏｎ毎の送信ポリシーを保持する送信ポリシー保持部と、前記送信ポリシー保持部に保持されている送信ポリシーに従って、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際の複数の送信フレームの各々について出力リンクの切り換えを行なう送信フレーム・コントロール部と、ネットワークを介して受信した同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめて前記上位レイヤー処理部に渡すＤｕｐｌｉｃａｔｅ  ＡＣＫ処理部を備える下位レイヤー処理部、
として機能させるコンピューター・プログラム。
【請求項６】
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、
前記上位レイヤー処理部から受け取った同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信する下位レイヤー処理部と、
を具備する通信装置。
【請求項７】
前記下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめる、
請求項６に記載の通信装置。
【請求項８】
前記下位レイヤー処理部は、前記上位レイヤー処理部からＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受け取るとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記ネットワークに送信する、
請求項６に記載の通信装置。
【請求項９】
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって、
前記下位レイヤー処理部において前記上位レイヤー処理部からＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受け取るステップと、
前記下位レイヤー処理部において受け取った同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを保持するステップと、
前記下位レイヤー処理部において保持する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信するステップと、
を有する通信方法。
【請求項１０】
データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部、
前記上位レイヤー処理部から受け取った同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信する下位レイヤー処理部、
として機能させるコンピューター・プログラム。
【請求項１１】
同一のＣｏｎｖｅｒｓａｔｉｏｎが分割されたパケットを違う順番で受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、
ネットワークを介して受信したパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡す下位レイヤー処理部と、
を具備する通信装置。
【請求項１２】
前記下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割した複数のパケットを受信する順番が違うときに、正しい順番に並べ替える、
請求項１１に記載の通信装置。
【請求項１３】
前記下位レイヤー処理部は、順番の違うパケットを受信するとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に正しい順番に並べ替えることができなかった受信パケットを前記上位レイヤー処理部に渡す、
請求項１１に記載の通信装置。
【請求項１４】
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって、
前記下位レイヤー処理部においてネットワークを介してパケットを受信するステップと、
前記下位レイヤー処理部において正しい順番で受信できなかったパケットを保持するステップと、
同一のＣｏｎｖｅｒｓａｔｉｏｎが分割されたパケットを違う順番で受信したことに応じて前記上位レイヤー処理部においてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動するステップと、
前記下位レイヤー処理部において受信したパケットと保持しているパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡すステップと、
を有する通信方法。
【請求項１５】
データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
同一のＣｏｎｖｅｒｓａｔｉｏｎが分割されたパケットを違う順番で受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部、
ネットワークを介して受信したパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡す下位レイヤー処理部、
として機能させるコンピューター・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルの第２層プロトコルに従ってデータ転送を行なう通信装置及び通信方法、並びにコンピューター・プログラムに係り、特に、パケットが喪失することは稀であるのに到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境において、データ転送速度の低下を防ぐ通信装置及び通信方法、並びにコンピューター・プログラムに関する。
【背景技術】
【０００２】
国際標準化機構（ＩＳＯ）によって制定されたネットワーク構造の設計方針であるＯＳＩ参照モデルによれば、通信機能は７階層に分割され、このうち第２層のデータリンク層は、直接又は隣接的に接続されている通信装置間の信号の受け渡しを規定するプロトコルに相当し、ＴＣＰ／ＩＰなどの上位層からのサービス要求に応え、直下の物理層に対してサービスを要求する。イーサネット（登録商標）やトークンリングが第２層プロトコルの代表例である。
【０００３】
また、第２層は、論理リンク制御（ＬＬＣ：Ｌｏｇｉｃａｌ  Ｌｉｎｋ  Ｃｏｎｔｒｏｌ）副層と、さらにその下位のメディア・アクセス制御（ＭＡＣ：Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）副層に分割される。第２層に経路制御機能はなく、第２層ネットワークは、同じネットワーク・アドレス内であり、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）コマンドを通じてＭＡＣアドレスを取得可能な範囲、あるいは、ブロードキャスト・ドメイン内のネットワークと言い換えることもできる。
【０００４】
ＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔ）７９３には、ＴＣＰ通信の技術仕様が示されている。ＴＣＰ通信は、転送時のパケット喪失や順番の入れ替えなどに対して、再送要求などの適切なフロー制御を行うことにより、信頼性のあるデータ転送を保証する。したがって、到着パケットの順番入れ替えが頻繁に発生することが予想されるような第２層ネットワーク環境においても、ＴＣＰプロトコルに従って適正な処理が行なわれ、正しい順番のデータをアプリケーションに提供する。
【０００５】
また、ＴＣＰには、ＲＦＣ２８５１「ＴＣＰ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ」に記述されている以下の２つの再送機能がある。
【０００６】
（１）Ａ  ＴＣＰ  ｒｅｃｅｉｖｅｒ  ＳＨＯＵＬＤ  ｓｅｎｄ  ａｎ  ｉｍｍｅｄｉａｔｅ  ｄｕｐｌｉｃａｔｅ  ＡＣＫ  ｗｈｅｎ  ｂａｎ  ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｓｅｇｍｅｎｔ  ａｒｒｉｖｅｓ．（ＴＣＰ受信機は、順番の違うパケットが到着したら、直ちにＤｕｐｌｉｃａｔｅ  ＡＣＫを送信するべきである。）
（２）Ｔｈｅ  ＴＣＰ  ｓｅｎｄｅｒ  ＳＨＯＵＬＤ  ｕｓｅ  ｔｈｅ  “ｆａｓｔ  ｒｅｔｒａｎｓｍｉｔ”  ａｌｇｏｒｉｔｈｍ  ｔｏ  ｄｅｔｅｃｔ  ａｎｄ  ｒｅｐａｉｒ  ｌｏｓｓ，  ｂａｓｅｄ  ｏｎ  ｉｎｃｏｍｉｎｇ  ｄｕｐｌｉｃａｔｅ  ＡＣＫｓ．  Ｔｈｅ  ｆａｓｒ  ｒｅｔｒａｎｓｍｉｔ  ａｌｇｏｒｉｔｈｍ  ｕｓｅｓ  ｔｈｅ  ａｒｒｒｉｖａｌ  ｏｆ  ３  ｄｕｐｌｉｃａｔｅ  ＡＣＫｓ（４  ｉｄｅｎｔｉｃａｌ  ＡＣＫｓ  ｗｉｔｈｏｕｔ  ｔｈｅ  ａｒｒｉｖａｌ  ｏｆ  ａｎｙ  ｏｆ  ｏｔｈｅｒ  ｉｎｔｅｅｖｅｎｉｎｇ  ｐａｃｋｅｔｓ）  ａｓ  ａｎ  ｉｎｄｉｃａｔｉｏｎ  ｔｈａｔ  ａ  ｓｅｇｍｅｎｔ  ｈａｓ  ｂｅｅｎ  ｌｏｓｔ．  （ＴＣＰ送信機は、受信したＤｕｐｌｉｃａｔｅ  ＡＣＫを基に、“高速再転送”アルゴリズムを使用するべきである。高速再転送アルゴリズムは、３回Ｄｕｐｌｉｃａｔｅ  ＡＣＫを受信すると、セグメントを喪失したものとみなし、再送するアルゴリズムである。）
【０００７】
この高速再転送機能は、パケット喪失による再送を行なう際に非常に有効な手段である。第２層ネットワークすなわち同じネットワーク・アドレス内での通信では、パケットが喪失することは稀である。しかしながら、第２層ネットワーク内で、パケットは喪失しないのに、パケットの順番入れ替わりが頻繁に発生するような運用を行なうと、ＴＣＰ受信機側では不要なＤｕｐｌｉｃａｔｅ  ＡＣＫを送信し、ＴＣＰ送信機はこれに応答して不要な再送処理を行なうことになる。その結果として、ネットワーク性能の大幅な低下を招来することになる。
【０００８】
例えば、幾つかのＡＣＫをバッファーに溜めてから送ることでＡＣＫ処理回数を減らす応答返却方法について提案がなされている（例えば、特許文献１を参照のこと）。しかしながら、この方法は、ＴＣＰ内部で行なうことを想定しており、実現するにはＴＣＰ／ＩＰプロトコル・スタックに変更を加える必要がある。ＴＣＰ／ＩＰプロトコル・スタックは、ＯＳベンダーによってはソースが公開されていないものもあり、修正が困難なことが多い。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−２５９５２５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、パケットが喪失することは稀であるのに到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境において、ＴＣＰ／ＩＰプロトコル・スタックを変更することなしに、データ転送速度の低下を防ぐことができる、優れた通信装置及び通信方法、並びにコンピューター・プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本願は、上記課題を参酌してなされたものであり、請求項１に記載の発明は、
Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部と、
ネットワークを介して受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめて前記上位レイヤーに渡す下位レイヤー処理部と、
を具備する通信装置である。
【００１２】
本願の請求項２に記載の発明によれば、請求項１に記載の通信装置の下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるように構成されている。
【００１３】
本願の請求項３に記載の発明によれば、請求項１に記載の通信装置の下位レイヤー処理部は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信するとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記上位レイヤー処理部に渡すように構成されている。
【００１４】
また、本願の請求項４に記載の発明は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって、
前記下位レイヤー処理部においてネットワークを介してＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信するステップと、
前記下位レイヤー処理部において受信したＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを保持するステップと、
前記下位レイヤー処理部において保持する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記上位レイヤー処理部に渡すステップと、
を有する通信方法である。
【００１５】
また、本願の請求項５に記載の発明は、データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを受信したことに応じて該当するパケットの再送処理を起動する上位レイヤー処理部、
ネットワークを介して受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめて前記上位レイヤーに渡す下位レイヤー処理部、
として機能させるコンピューター・プログラムである。
【００１６】
本願の請求項５に係るコンピューター・プログラムは、コンピューター上で所定の処理を実現するようにコンピューター可読形式で記述されたコンピューター・プログラムを定義したものである。換言すれば、本願の請求項５に係るコンピューター・プログラムをコンピューターにインストールすることによって、コンピューター上では協働的作用が発揮され、本願の請求項１に係る通信装置と同様の作用効果を得ることができる。
【００１７】
また、本願の請求項６に記載の発明は、
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、
前記上位レイヤー処理部から受け取った複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信する下位レイヤー処理部と、
を具備する通信装置である。
【００１８】
本願の請求項７に記載の発明によれば、請求項６に記載の通信装置の下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるように構成されている。
【００１９】
本願の請求項８に記載の発明によれば、請求項６に記載の通信装置の下位レイヤー処理部は、前記上位レイヤー処理部からＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受け取るとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめて前記ネットワークに送信するように構成されている。
【００２０】
また、本願の請求項９に記載の発明は、順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって
前記下位レイヤー処理部において前記上位レイヤー処理部からＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを受け取るステップと、
前記下位レイヤー処理部において受け取ったＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを保持するステップと、
前記下位レイヤー処理部において保持する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信するステップと、
を有する通信方法である。
【００２１】
また、本願の請求項１０に記載の発明は、データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部、
前記上位レイヤー処理部から受け取った複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめてネットワークに送信する下位レイヤー処理部、
として機能させるコンピューター・プログラムである。
【００２２】
本願の請求項１０に係るコンピューター・プログラムは、コンピューター上で所定の処理を実現するようにコンピューター可読形式で記述されたコンピューター・プログラムを定義したものである。換言すれば、本願の請求項１０に係るコンピューター・プログラムをコンピューターにインストールすることによって、コンピューター上では協働的作用が発揮され、本願の請求項６に係る通信装置と同様の作用効果を得ることができる。
【００２３】
また、本願の請求項１１に記載の発明は、
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、
ネットワークを介して受信したパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡す下位レイヤー処理部と、
を具備する通信装置である。
【００２４】
本願の請求項１２に記載の発明によれば、請求項１１に記載の通信装置の下位レイヤー処理部は、本来のＩＰアドレス及びポート番号が同じとなる同一のＣｏｎｖｅｒｓａｔｉｏｎを分割した複数のパケットを受信する順番が違うときに、正しい順番に並べ替えるように構成されている。
【００２５】
本願の請求項１３に記載の発明によれば、請求項１１に記載の通信装置の下位レイヤー処理部は、順番の違うパケットを受信するとタイマーを起動するとともに保持し、前記タイマーがタイムアウトするまでの間に正しい順番に並べ替えることができなかった受信パケットを前記上位レイヤー処理部に渡すように構成されている。
【００２６】
また、本願の請求項１４に記載の発明は、順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部と、前記上位レイヤーよりも下位の通信プロトコル処理を行なう下位レイヤー処理部を備えた通信装置における通信方法であって、
前記下位レイヤー処理部においてネットワークを介してパケットを受信するステップと、
前記下位レイヤー処理部において正しい順番で受信できなかったパケットを保持するステップと、
前記下位レイヤー処理部において受信したパケットと保持しているパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡すステップと、
を有する通信方法である。
【００２７】
また、本願の請求項１５に記載の発明は、データ通信を行なうための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
順番の違うパケットを受信したことに応じてＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを生成して再送処理を起動する上位レイヤー処理部、
ネットワークを介して受信したパケットを正しい順番に並べ替えて前記上位レイヤー処理部に渡す下位レイヤー処理部、
として機能させるコンピューター・プログラムである。
【００２８】
本願の請求項１５に係るコンピューター・プログラムは、コンピューター上で所定の処理を実現するようにコンピューター可読形式で記述されたコンピューター・プログラムを定義したものである。換言すれば、本願の請求項１５に係るコンピューター・プログラムをコンピューターにインストールすることによって、コンピューター上では協働的作用が発揮され、本願の請求項１１に係る通信装置と同様の作用効果を得ることができる。
【発明の効果】
【００２９】
本発明によれば、ＴＣＰ／ＩＰプロトコル・スタックを変更することなしに、第２層ネットワーク環境における無駄な再送処理の起動を抑え、データ転送速度の低下を防ぐことができる。
【００３０】
本発明によれば、パケットが喪失することは稀な第２層ネットワーク環境において、到着パケットの順番入れ替えによる無駄な再送処理の起動を抑え、データ転送速度の低下を防ぐことができる。
【００３１】
本願の請求項１乃至５に係る発明によれば、データ送信側（ＡＣＫ受信側）のＴＣＰ／ＩＰより下のレイヤーにおいて、受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理を行なうので、ＴＣＰ／ＩＰプロトコル・スタックを変更することなしに、ＴＣＰ／ＩＰフロー制御によるデータ転送速度の低下を最小限に抑えることができる。
【００３２】
本願の請求項６乃至１０に係る発明によれば、データ受信側（ＡＣＫ送信側）のＴＣＰ／ＩＰより下のレイヤーにおいて、送信する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理を行なうので、ＴＣＰ／ＩＰプロトコル・スタックを変更することなしに、ＴＣＰ／ＩＰフロー制御によるデータ転送速度の低下を最小限に抑えることができる。
【００３３】
本願の請求項１１乃至１５に係る発明によれば、データ受信側のＴＣＰ／ＩＰより下のレイヤーにおいて、受信したパケットの順番を正しい順に並べ替えるパケット・ソート処理を行なうので、ＴＣＰ／ＩＰプロトコル・スタックを変更することなしに、ＴＣＰ／ＩＰフロー制御によるデータ転送速度の低下を最小限に抑えることができる。
【００３４】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【００３５】
【図１】図１は、サーバー１０とクライアント６０間が２つの第２層スイッチを介して接続されたネットワーク・システムの構成例を示した図である。
【図２】図２は、転送フレーム・コントロール部２１０の構成を模式的に示したブロック図である。
【図３Ａ】図３Ａは、図２に示した転送フレーム・コントロール機能をドライバーの形態で実装したネットワーク・システムの構成例を示した図である。
【図３Ｂ】図３Ｂは、図３Ａに示したように、図２に示した転送フレーム・コントロール機能をドライバーの形態で実装した場合のＷｉｎｄｏｗｓ（登録商標）  ＯＳ上でのプロトコル・スタック構造を例示した図である。
【図４Ａ】図４Ａは、図２に示した転送フレーム・コントロール機能をネットワーク・インターフェース・カードの形態で実装したネットワーク・システムの構成例を示した図である。
【図４Ｂ】図４Ｂは、図４Ａに示したように、図２に示した転送フレーム・コントロール機能をネットワーク・インターフェース・カードの形態で実装した場合のＷｉｎｄｏｗｓ（登録商標）  ＯＳ上でのプロトコル・スタック構造を例示した図である。
【図５】図５は、ＶＢＰ機能を適用した第２層ネットワークにおいて、到着パケットの順番入れ替えが発生する様子を示した図である。
【図６】図６は、送信側（サーバー１０）のＶＢＰドライバーにＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示した図である。
【図７】図７は、送信側（サーバー１０）のＶＢＰ  ＮＩＣにＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示した図である。
【図８】図８は、データ送信側（ＡＣＫ受信側）でＡＣＫパケットを受信したときに行なうＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理の手順を示したフローチャートである。
【図９】図９は、タイマー部６０３でタイマーがタイムアウトしたときに行なう処理手順を示したフローチャートである。
【図１０】図１０は、受信側（クライアント６０）のＶＢＰドライバーにＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示した図である。
【図１１】図１１は、受信側（クライアント６０）のＶＢＰ  ＮＩＣにＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示した図である。
【図１２】図１２は、データ受信側（ＡＣＫ送信側）でＡＣＫパケットを送信するときに行なうＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理の手順を示したフローチャートである。
【図１３】図１３は、タイマー部１１０２でタイマーがタイムアウトしたときに行なう処理手順を示したフローチャートである。
【図１４】図１４は、受信側（クライアント６０）のＶＢＰドライバーにパケット・ソート機能を追加した機能構成を示した図である。
【図１５】図１５は、受信側（クライアント６０）のＶＢＰ  ＮＩＣにパケット・ソート機能を追加した機能構成を示した図である。
【図１６】図１６は、データ受信側（ＡＣＫ送信側）で行なうパケット・ソート処理の手順を示したフローチャートである。
【図１７】図１７は、タイマー部１４０３でタイマーがタイムアウトしたときに行なう処理手順を示したフローチャートである。
【発明を実施するための形態】
【００３６】
以下、図面を参照しながら本発明の実施形態について詳細に説明する。
【００３７】
ネットワーク・マルチリンク技術に関する標準的な規格書「ＩＥＥＥ８０２．１  ＡＸ−２００８  Ｌｉｎｋ  Ａｇｇｒｅｇａｔｔｉｏｎ」では、リンク・アグリゲーションが規定されている。リンク・アグリゲーション・グループの形で複数のリンクを統合し、ＭＡＣクライアントが、リンク・アグリゲーション・グループを、あたかも単一のリンクのように扱えるようにする。しかしながら、上記規格書では、セグメンテーション技術や送信フレーム修正に対して制限を行なっており、同一Ｃｏｎｖｅｒｓａｔｉｏｎのマルチリンク転送を行なうことはできない。このような場合、Ｃｏｎｖｅｒｓａｔｉｏｎを分割して複数のリンクに分配することはないから、到着パケットの順番入れ替えが問題になることはない。
【００３８】
ここで言うＣｏｎｖｅｒｓａｔｉｏｎとは、ＴＣＰにおけるセッションに相当し、アプリケーションが１つの目的を持った１本のストリームである。Ｃｏｎｖｅｒｓａｔｉｏｎは、例えば、送信元ＩＰアドレスと送信元ポート番号、及び、宛先ＩＰアドレスと宛先ポート番号の組み合わせで定義することができる。従来、リンクとクライアントは１対１にのみ対応し、クライアントが複数のリンクを使用することを想定していない。セグメンテーション技術に制限がかけられていることから、１本のストリームを分割して複数のリンクに分配すること、すなわち、マルチリンクすることはできない。
【００３９】
これに対し、本出願人に既に譲渡されている特願２０１０−３１９８５号明細書では、サーバー・クライアント型のネットワーク・システムに転送フレーム・コントロール機能を追加して、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のリンク・アグリゲーション若しくはマルチリンクを実現する方法について開示されている。本明細書中では、転送フレーム・コントロール機能のことを「Ｖｉｒｔｕａｌ  Ｂｉｇ  Ｐｉｐｅ（仮想大容量導管）：ＶＢＰ」とも呼ぶ。第２層ネットワークにＶＢＰを適用すると、Ｃｏｎｖｅｒｓａｔｉｏｎを分割したパケットを複数のリンクに分配することから、第２層ネットワーク環境において、パケットが喪失することは稀であるにも拘らず到着パケットの順番入れ替えが頻繁に発生することが予想される。
【００４０】
ここで、ＶＢＰ機能について、図１に示すサーバー・クライアント型のネットワーク・システムを例にとって説明しておく。
【００４１】
図１に示すネットワーク・システムでは、サーバー１０とクライアント６０間が２つの第２層スイッチ３０、４０を介して接続されている。サーバー１０並びにクライアント６０は、例えばオペレーティング・システム（ＯＳ）として米マイクロソフト社の“Ｗｉｎｄｏｗｓ（登録商標）”を搭載したコンピューターで構成される場合、その通信プロトコルは、上位から順番に、アプリケーション、ＴＣＰ／ＩＰ、ドライバー（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ：ＮＤＩＳ）がスタックされた階層構造になっている。
【００４２】
サーバー１０は、Ｎ1個のネットワーク・インターフェース・カード（ＮＩＣ）２０−１、２０−２、…を装備し、第２層スイッチ３０との間はＮ1個の１０Ｇｂｐｓのイーサネット（登録商標）リンクで接続されている。サーバー１０と第２層スイッチ３０間を接続する個々の独立リンクの帯域は１０Ｇｂｐｓであるが、リンク・アグリゲーションを実現できれば、最大でＮ1個のリンクの総帯域として１０×Ｎ1Ｇｂｐｓのより高い帯域を得ることができる。
【００４３】
また、第２層スイッチ３０、４０間は、Ｎ2個の１０Ｇｂｐｓのイーサネット（登録商標）リンクで接続されている。第２層スイッチ３０、４０間を接続する個々の独立リンクの帯域は１０Ｇｂｐｓであるが、リンク・アグリゲーションを実現できれば、最大でＮ2個のリンクの総帯域として１０×Ｎ2Ｇｂｐｓのより高い帯域を得ることができる。
【００４４】
一方、クライアント６０は、Ｎ3個の１０Ｇｂｐｓネットワーク・インターフェース・カード（ＮＩＣ）５０−１、５０−２、…を装備し、第２層スイッチ４０との間はＮ3個の１０Ｇｂｐｓのイーサネット（登録商標）リンクで接続されている。クライアント６０と第２層スイッチ４０間を接続する個々の独立リンクの帯域は１０Ｇｂｐｓであるが、リンク・アグリゲーションを実現できれば、最大でＮ3個のリンクの総帯域として１０×Ｎ3Ｇｂｐｓのより高い帯域を得ることができる。
【００４５】
図１に示したネットワーク・システムにおいて、サーバー１０並びにクライアント２０の各々において、ＴＣＰ／ＩＰ層２２０とＭＡＣ／ＰＨＹ層２３０の間に図２に示す転送フレーム・コントロール部２１０を配置することで、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のリンク・アグリゲーション若しくはマルチリンクを実現することができる。なお、ＴＣＰ／ＩＰ層２２０とＭＡＣ／ＰＨＹ層２３０の間とは、通常はＭＡＣサービス・インターフェース２２１に相当する。転送フレーム・コントロール部２１０は、ドライバー、あるいは、ネットワーク・インターフェース・カードに実装することができる。
【００４６】
転送フレーム・コントロール部２１０は、ＶＢＰポリシー保持部２１１と、送信フレーム・コントローラー２１２を備え、第２層プロトコルにおいてフレーム転送のコントロール機能を提供する。ＶＢＰポリシー保持部２１１は、各Ｃｏｎｖｅｒｓａｔｉｏｎに設定されたＶＢＰポリシーを保持している。送信フレーム・コントローラー２１２は、ＶＢＰポリシー保持部２１１に設定されているＶＢＰポリシーに従って、各Ｃｏｎｖｅｒｓａｔｉｏｎの送信フレームの変更を行なう。後述するように、変更後の送信フレームは、第２層ネットワーク環境において、ネットワーク経路間でマルチリンクによりデータ転送される。
【００４７】
ＶＢＰポリシー保持部２１１は、ＶＢＰポリシーを動的若しくは静的に保持する。また、各ＶＢＰポリシーは、手動若しくは自動的にＶＢＰポリシー保持部２１１に設定される。例えば、データ・フローのモニター結果からの解析などに基づいて、ＶＢＰポリシーを自動的に設定するようにすることもできる。
【００４８】
ここで言うＶＢＰポリシーは、送信フレームの送信元や宛先の情報などからなる入力条件と、入力条件に応じて送信フレームに変更を行なう制御ポリシーの組み合わせからなる。送信フレームに行なう変更は、例えばＶＬＡＮ（Ｖｉｒｔｕａｌ  ＬＡＮ）タグの付加、送信元ＭＡＣアドレスの変更、宛先ＭＡＣアドレスの変更などである。
【００４９】
以下の表１には、ＶＢＰポリシー保持部２１１に保持されている設定項目の一例を示している。
【００５０】
【表１】
0005601029.tif 000002
【００５１】
上表において、入力条件は、該当するＣｏｎｖｅｒｓａｔｉｏｎについて設定されている、送信元のＭＡＣアドレス及びポート番号からなるＳｏｕｒｃｅ項と、送信フレームの宛て先のＭＡＣアドレスとＩＰアドレス、ポート番号からなるＤｅｓｔｉｎａｔｉｏｎ項を含んでいる。
【００５２】
また、制御ポリシーは、入力条件に合致した送信フレームに対して変更を行なうべき（割り当てるべき）送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、ＶＬＡＮ  ＩＤの各項、並びに、該当する送信フレームに対して送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、ＶＬＡＮ  ＩＤを割り当てる際の割り当てルールを指定するＣｏｎｔｒｏｌ  Ｒｕｌｅｓ項からなる。後述する実施例では、Ｃｏｎｔｒｏｌ  Ｒｕｌｅｓとして、順割り当て（Ｓｅｑｕｅｎｔｉａｌ  Ａｓｓｉｇｎｍｅｎｔ：ＳＡ）のみを挙げているが、「不良検出時の割当」や、「プライオリティーや帯域要求に応じた割当」などのルールを記述することができる。
【００５３】
送信フレーム・コントローラー２１２は、ＭＡＣサービス・インターフェース２２１を介して、上位層のＴＣＰ／ＩＰ層２２０から送信フレームを受け取ると、そのヘッダー情報の内容などを解析するとともに、ＶＢＰポリシー保持部２１１に保持されている設定項目を参照する。そして、送信フレームのヘッダー情報と合致する入力条件を持つ設定項目が見つかったときには、送信フレーム・コントローラー２１２は、その設定項目の制御ポリシーとして記載されている割り当てルールに従って、送信フレームの送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、ＶＬＡＮ  ＩＤを変更してから、下位層のＭＡＣ／ＰＨＹ層２３０に渡す。この結果、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際、複数の送信フレームを複数のリンクに割り当てて、リンク・アグリゲーションを実現することができる。リンク毎の帯域は１０Ｇｂｐｓであるが、送信フレームを割り当てた複数のリンクの総帯域としては、例えば４０〜１００Ｇｂｐｓ程度のより高い帯域を得ることができる。
【００５４】
ＶＢＰ機能によれば、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のマルチリンクを実現して、より低い帯域のリンクを複数束ねてより高い帯域でネットワークを運用することができる。
【００５５】
図３Ａには、図２に示した転送フレーム・コントロール機能を、ドライバーというソフトウェアの形態で実装したネットワーク・システムの構成例を示している。同図中のサーバー１０並びにクライアント６０がそれぞれ備えるＶＢＰドライバーは、転送フレーム・コントロール（ＶＢＰ）機能、すなわち、上述したＶＢＰポリシー保持部２１１と、転送フレーム・コントローラー２１２として機能する。
【００５６】
図３Ｂには、図３Ａに示したように、転送フレーム・コントロール機能をＶＢＰドライバーというソフトウェアの形態で実装した場合の、Ｗｉｎｄｏｗｓ（登録商標）  ＯＳにおけるプロトコル・スタック構造を例示している。同図では、既存のソフトウェアで構成可能な機能モジュール、新規のソフトウェアで構成される機能モジュール、並びに、ハードウェアで構成される機能モジュールを分けて示している。ＶＢＰ仮想アダプター（Ｖｉｒｔｕａｌ  Ａｄａｐｔｏｒ）、ＶＢＰマルチプレクサ／デマルチプレクサ、ＶＢＰフィルター、及び、ＮＩＣアダプターからなるプロトコル・スタックはＶＢＰドライバーを構成するが、米マイクロソフト社が定めたネットワーク・ドライバーの標準規格「ＮＤＩＳ」に準拠するものとする。例えば、１０Ｇｂｐｓのネットワーク・インターフェース・カードを４個使用する場合、マルチリンクの総帯域として４０Ｇｂｐｓのスループットを実現することができる。
【００５７】
図４Ａには、図２に示した転送フレーム・コントロール機能を、ネットワーク・インターフェース・カードというハードウェアの形態で実装したネットワーク・システムの構成例を示している。同図中のサーバー１０並びにクライアント６０がそれぞれ備えるＶＢＰネットワーク・インターフェース・カードは、転送フレーム・コントロール（ＶＢＰ）機能、すなわち、上述したＶＢＰポリシー保持部２１１と、転送フレーム・コントローラー２１２として機能する。
【００５８】
図４Ｂには、図４Ａに示したように、転送フレーム・コントロール機能をＶＢＰネットワーク・インターフェース・カードというハードウェアの形態で実装した場合の、Ｗｉｎｄｏｗｓ（登録商標）  ＯＳにおけるプロトコル・スタック構造を例示している。同図では、既存のソフトウェアで構成可能な機能モジュール、新規のソフトウェアで構成される機能モジュール、並びに、ハードウェアで構成される機能モジュールを分けて示している。ＶＢＰ仮想アダプター、ＶＢＰマルチプレクサ／デマルチプレクサ、及び、ＶＢＰ  ＮＩＣアダプターからなるプロトコル・スタックはＶＢＰドライバーを構成するが、ＮＤＩＳに準拠するものとする（同上）。例えば、各ＶＢＰネットワーク・インターフェース・カードが１Ｇｂｐｓの仮想的なリンクを５本又は１０本持ち、且つ、ＶＢＰネットワーク・インターフェース・カードを４個又は８個使用する場合、マルチリンクの総帯域として４０Ｇｂｐｓのスループットを実現することができる。
【００５９】
第２層ネットワークに図２〜図４に示したようなＶＢＰを適用すると、Ｃｏｎｖｅｒｓａｔｉｏｎを分割して複数のリンクに分配することから、第２層ネットワーク環境において、パケットが喪失することは稀であるにも拘らず到着パケットの順番入れ替えが頻繁に発生することが予想される。図５には、ＶＢＰ機能を適用した第２層ネットワークにおいて、到着パケットの順番入れ替えが発生する様子を示している。
【００６０】
送信側であるサーバー１０のコンピューターがマルチＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で構成され、マルチリンクを実現する転送フレーム・コントロール部がマルチスレッドで実装される場合、上位層のＴＣＰ／ＩＰから渡されたパケット（Ｃｏｎｖｅｒｓａｔｉｏｎを分割したパケット）を、各ＮＩＣに振り分けるが、その際にパケットの順番が入れ替わってしまう可能性がある。また、ネットワーク経路上の第２層スイッチにおいても、各ポートは独立して動作しているために、ネットワーク負荷によってはパケットの順番が入れ替わってしまう可能性がある。結果として、受信側であるクライアント６０のコンピューターのＴＣＰ／ＩＰは、順番の入れ替わったパケットを受信することになる。
【００６１】
第２層ネットワークでは、パケットが喪失することは稀である。しかしながら、図５に示したように、パケットの順番入れ替わりが頻繁に発生すると、受信側であるクライアント６０からは不要なＤｕｐｌｉｃａｔｅ  ＡＣＫが送信される。そして、送信側であるサーバー１０は、不要なＤｕｐｌｉｃａｔｅ  ＡＣＫに応答して不要な再送処理を行なうことになる。その結果として、ネットワーク性能の大幅な低下を招来することになる。
【００６２】
そこで、本発明者らは、以下に挙げるいずれか１つ、若しくは複数を組み合わせた機能を第２層ネットワークに追加することで、ＴＣＰ／ＩＰフロー制御によるデータ転送速度の低下を最小限に抑えることができることを見いだした。
【００６３】
（１）データ送信側（ＡＣＫ受信側）のＴＣＰ／ＩＰより下のレイヤーにおいて、受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能。
【００６４】
（２）データ受信側（ＡＣＫ送信側）のＴＣＰ／ＩＰより下のレイヤーにおいて、送信する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能。
【００６５】
（３）データ受信側のＴＣＰ／ＩＰより下のレイヤーにおいて、受信したパケットの順番を正しい順に並べ替えるパケット・ソート機能。
【００６６】
まず、データ送信側（ＡＣＫ受信側）にＤｕｐｌｉｃａｔｅ  ＡＣＫ機能を追加する実施例について説明する。
【００６７】
図６には、図３Ａに示したように転送フレーム・コントロール機能をドライバーの形態で実装した場合に、受信した複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を送信側（サーバー１０）のＶＢＰドライバーに追加した機能構成を示している。また、図７には、図４Ａに示したように転送フレーム・コントロール機能をネットワーク・インターフェース・カードの形態で実装した場合に、送信側（サーバー１０）のＶＢＰ  ＮＩＣに同様のＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示している。
【００６８】
図６に示すＶＢＰドライバー、又は、図７に示すＶＢＰ  ＮＩＣは、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１と、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部６０２と、タイマー部６０３と、ＶＢＰポリシー保持部６０４と、ＶＢＰパケット判定部６０５と、マルチリンク処理部６０６を備えている。図６と図７で、参照番号６０１〜６０６で示した各機能モジュールは基本的に同一の動作をし、その相違はソフトウェア又はハードウェアのいずれの形態で実現したかという点である。
【００６９】
図８には、データ送信側（ＡＣＫ受信側）でＡＣＫパケットを受信したときに、ＴＣＰ／ＩＰより下のレイヤーにおいて、図６又は図７に示した機能構成を用いて、複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理の手順をフローチャートの形式で示している。
【００７０】
マルチリンク処理部６０６は、複数のリンクに分配された同じＣｏｎｖｅｒｓａｔｉｏｎから分割された複数のパケットを、ＶＢＰポリシー保持部６０４に保持されているＶＢＰポリシーに従って受信処理する。ＶＢＰパケット判定部６０５は、マルチリンク処理部６０６から受信したＡＣＫパケットを受け取ると（ステップＳ８０１）、ＶＢＰポリシー保持部６０４に保持してある情報すなわちＶＢＰポリシーを基に、そのパケットがＶＢＰ処理を行なっているパケット（以下、「ＶＢＰパケット」とも呼ぶ）かどうかを判定する（ステップＳ８０２）。
【００７１】
ここで、ＶＢＰパケットかどうかとは、同じＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットの１つかどうかということと同じ意味である。Ｃｏｎｖｅｒｓａｔｉｏｎは、ＩＰアドレスとポート番号の組み合わせで定義される。但し、「ＩＥＥＥ８０２．１  ＡＸ−２００８  Ｌｉｎｋ  Ａｇｇｒｅｇａｔｔｉｏｎ」で規定されている制限を順守しながらマルチリンク転送を行なうために、ＶＢＰパケットには上記の表１に示したようなＶＢＰポリシーに従って送信フレームに対して変更が行なわれている。したがって、ＶＢＰパケット判定部６０５が行なう判定処理は、ＶＢＰポリシーを参照して、本来のＩＰアドレスとポート番号を求め、受信した複数のＡＣＫパケットが同じＣｏｎｖｅｒｓａｔｉｏｎを分割したパケットに対するＶＢＰ  ＡＣＫパケットであるかどうかを判定することと同じである。
【００７２】
受信したＡＣＫパケットがＶＢＰ  ＡＣＫパケットでない場合には（ステップＳ８０２のＮｏ）、ＶＢＰパケット判定部６０５は、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーに当該ＡＣＫパケットを渡して（ステップＳ８０８）、本処理ルーチンを終了する。
【００７３】
また、受信したＡＣＫパケットがＶＢＰ  ＡＣＫパケットである場合には（ステップＳ８０２のＹｅｓ）、ＶＢＰパケット判定部６０５は、当該ＡＣＫパケットをＤｕｐｌｉｃａｔｅ  ＡＣＫ判定部６０２に渡す（ステップＳ８０３）。
【００７４】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部６０２は、ＡＣＫパケット内のＡＣＫ番号及びパケット・サイズを基に、当該ＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットかどうかを判定する（ステップＳ８０４）。
【００７５】
受信したＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットである場合（ステップＳ８０４のＹｅｓ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１は当該ＡＣＫパケットを保持する（ステップＳ８０５）。また、このときタイマー部６０３がタイマーを起動していなければ、タイマーをセットする（ステップＳ８０６）。
【００７６】
一方、受信したＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットでない場合には（ステップＳ８０４のＮｏ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１は、保持してあるＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを破棄し（ステップＳ８０７）、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーにＡＣＫパケットを渡して（ステップＳ８０８）、本処理ルーチンを終了する。
【００７７】
図９には、タイマー部６０３でタイマーがタイムアウトしたときに行なう処理手順をフローチャートの形式で示している。
【００７８】
タイマー部６０３は、タイマーがセットされた時間に到達すると（ステップＳ９０１）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１に、タイムアウトしたことを通知する（ステップＳ９０２）。
【００７９】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１は、通知を受け取ると、保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫパケットがあるかどうかを確認する（ステップＳ９０３）。
【００８０】
保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫパケットがある場合には（ステップＳ９０３のＹｅｓ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーにＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを渡す（ステップＳ９０４）。そして、タイマー部６０３はタイマーを解除する（ステップＳ９０５）。
【００８１】
また、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部６０１が保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫパケットがない場合には（ステップＳ９０３のＮｏ）、タイマー部６０３がタイマーを解除して（ステップＳ９０５）、本処理ルーチンを終了する。
【００８２】
図６〜図９に示した実施例によれば、到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境において、データ送信側（ＡＣＫ受信側）でＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理を行なうことにより、不要な再送パケットを転送することに伴うネットワーク帯域負荷を低減することができ、また、ＴＣＰ／ＩＰなどの上位レイヤーにおいて不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットの処理を行なうことに伴うＣＰＵの負荷を低減することができ、これらによりデータ転送性能の低下を防ぐという効果を得ることができる。特に、図１〜図４に示したＶＢＰ環境においては、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のマルチリンクを実現するという効果を享受しながら、不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットによるデータ転送速度の低下を防ぐことができる。
【００８３】
続いて、データ受信側（ＡＣＫ送信側）にＤｕｐｌｉｃａｔｅ  ＡＣＫ機能を追加する実施例について説明する。
【００８４】
図１０には、図３Ａに示したように転送フレーム・コントロール機能をドライバーの形態で実装した場合に、送信する複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を受信側（クライアント６０）のＶＢＰドライバーに追加した機能構成を示している。また、図１１には、図４Ａに示したように転送フレーム・コントロール機能をネットワーク・インターフェース・カードの形態で実装した場合に、受信側（クライアント２０）のＶＢＰ  ＮＩＣに同様のＤｕｐｌｉｃａｔｅ  ＡＣＫ統合機能を追加した機能構成を示している。
【００８５】
図１０に示すＶＢＰドライバー、又は、図１１に示すＶＢＰ  ＮＩＣは、ＶＢＰパケット判定部１００１と、タイマー部１００２と、ＶＢＰポリシー保持部１００３と、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４と、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部１００５と、マルチリンク処理部１００６を備えている。図１０と図１１で、参照番号１００１〜１００６で示した各機能モジュールは基本的に同一の動作をし、その相違はソフトウェア又はハードウェアのいずれの形態で実現したかという点である。
【００８６】
図１２には、データ受信側（ＡＣＫ送信側）でＡＣＫパケットを送信するときに、ＴＣＰ／ＩＰより下のレイヤーにおいて、図１０又は図１１に示した機能構成を用いて、複数のＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理の手順をフローチャートの形式で示している。
【００８７】
ＶＢＰパケット判定部１００１は、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーからＡＣＫパケットを受け取ると（ステップＳ１２０１）、ＶＢＰポリシー保持部１００３に保持してある情報すなわちＶＢＰポリシーを基に、そのパケットがＶＢＰ処理を行なっているパケット（以下、「ＶＢＰパケット」とも呼ぶ）かどうかを判定する（ステップＳ１２０２）。
【００８８】
送信するＡＣＫパケットがＶＢＰパケットでない場合には（ステップＳ１２０２のＮｏ）、ＶＢＰパケット判定部１００１は、マルチリンク処理部１００６に当該ＡＣＫパケットを渡して（ステップＳ１２０８）、本処理ルーチンを終了する。
【００８９】
また、送信するＡＣＫパケットがＶＢＰパケットである場合には（ステップＳ１２０２のＹｅｓ）、ＶＢＰパケット判定部１００１は、当該ＡＣＫパケットをＤｕｐｌｉｃａｔｅ  ＡＣＫ判定部１００５に渡す（ステップＳ１２０３）。
【００９０】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部１００５は、ＡＣＫパケット内のＡＣＫ番号及びパケット・サイズを基に、当該ＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットかどうかを判定する（ステップＳ１２０４）。
【００９１】
受信したＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットである場合（ステップＳ１２０４のＹｅｓ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４は当該ＡＣＫパケットを保持する（ステップＳ１２０５）。また、このときタイマー部１００２がタイマーを起動していなければ、タイマーをセットする（ステップＳ１２０６）。
【００９２】
一方、受信したＡＣＫパケットがＤｕｐｌｉｃａｔｅ  ＡＣＫパケットでない場合には（ステップＳ１２０４のＮｏ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４は保持してあるＤｕｐｌｉｃａｔｅ  ＡＣＫパケットを破棄し（ステップＳ１２０７）、マルチリンク処理部１００６にＡＣＫパケットを渡して（ステップＳ１２０８）、本処理ルーチンを終了する。
【００９３】
図１３には、タイマー部１００２でタイマーがタイムアウトしたときに行なう処理手順をフローチャートの形式で示している。
【００９４】
タイマー部１００２は、タイマーがセットされた時間に到達すると（ステップＳ１３０１）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４に、タイムアウトしたことを通知する（ステップＳ１３０２）。
【００９５】
Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４は、通知を受け取ると、保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫパケットがあるかどうかを確認する（ステップＳ１３０３）。
【００９６】
保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫがある場合には（ステップＳ１３０３のＹｅｓ）、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００４は、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットをマルチリンク処理部１００６にＡＣＫパケットを渡す（ステップＳ１３０４）。そして、タイマー部１００２はタイマーを解除する（ステップＳ１３０５）。
【００９７】
また、Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部１００５が保持しているＤｕｐｌｉｃａｔｅ  ＡＣＫパケットがない場合には（ステップＳ１３０３のＮｏ）、タイマー部１００２がタイマーを解除して（ステップＳ１３０５）、本処理ルーチンを終了する。
【００９８】
図１０〜図１３に示した実施例によれば、到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境において、データ受信側（ＡＣＫ送信側）でＤｕｐｌｉｃａｔｅ  ＡＣＫを１つにまとめるＤｕｐｌｉｃａｔｅ  ＡＣＫ統合処理を行なうことにより、不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを転送することに伴うネットワーク帯域負荷を低減することができ、また、ＴＣＰ／ＩＰなどの上位レイヤーにおいて不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットの処理を行なうことに伴うＣＰＵの負荷を低減することができ、これらによりデータ転送性能の低下を防ぐという効果を得ることができる。特に、図１〜図４に示したＶＢＰ環境においては、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のマルチリンクを実現するという効果を享受しながら、不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットによるデータ転送速度の低下を防ぐことができる。
【００９９】
続いて、データ受信側（ＡＣＫ送信側）にパケット・ソート機能を追加する実施例について説明する。
【０１００】
図１４には、図３Ａに示したように転送フレーム・コントロール機能をドライバーの形態で実装した場合に、受信したパケットの順番を正しい順に並べ替えるパケット・ソート機能を受信側（クライアント６０）のＶＢＰドライバーに追加した機能構成を示している。また、図１５には、図４Ａに示したように転送フレーム・コントロール機能をネットワーク・インターフェース・カードの形態で実装した場合に、受信側（クライアント６０）のＶＢＰ  ＮＩＣに同様のパケット・ソート機能を追加した機能構成を示している。
【０１０１】
図１４に示すＶＢＰドライバー、又は、図１５に示すＶＢＰ  ＮＩＣは、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１と、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット判定部１４０２と、タイマー部１４０３と、ＶＢＰポリシー保持部１４０４と、ＶＢＰパケット判定部１４０５と、マルチリンク処理部１４０６を備えている。図１４と図１５で、参照番号１４０１〜１６０６で示した各機能モジュールは基本的に同一の動作をし、その相違はソフトウェア又はハードウェアのいずれの形態で実現したかという点である。
【０１０２】
図１６には、データ受信側（ＡＣＫ送信側）で、ＴＣＰ／ＩＰより下のレイヤーにおいて、図１４又は図１５に示した機能構成を用いて行なう、受信したパケットの順番を正しい順に並べ替えるパケット・ソート処理の手順をフローチャートの形式で示している。
【０１０３】
マルチリンク処理部６０６は、複数のリンクに分配された同じＣｏｎｖｅｒｓａｔｉｏｎから分割された複数のパケットを、ＶＢＰポリシー保持部６０４に保持されているＶＢＰポリシーに従って受信処理する。ＶＢＰパケット判定部１４０５は、マルチリンク処理部１４０６から受信パケットを受け取ると（ステップＳ１６０１）、ＶＢＰポリシー保持部１４０４に保持してある情報すなわちＶＢＰポリシーを基に、そのパケットがＶＢＰ処理を行なっているパケット（以下、「ＶＢＰパケット」とも呼ぶ）かどうかを判定する（ステップＳ１６０２）。
【０１０４】
受信したパケットがＶＢＰパケットでない場合には（ステップＳ１６０２のＮｏ）、ＶＢＰパケット判定部１４０５は、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーに当該受信パケットを渡して（ステップＳ１６０９）、本処理ルーチンを終了する。
【０１０５】
また、受信パケットがＶＢＰパケットである場合には（ステップＳ１６０２のＹｅｓ）、ＶＢＰパケット判定部１４０５は、当該受信パケットをＯｕｔ−ｏｆ−ｏｒｄｅｒパケット判定部１４０２に渡す（ステップＳ１６０３）。
【０１０６】
Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット判定部１４０２は、受信パケット内のシーケンス番号及びパケット・サイズを基に、当該受信パケットがＯｕｔ−ｏｆ−ｏｒｄｅｒパケット（到着した順が順番通りでないパケット）かどうかを判定する（ステップＳ１６０４）。
【０１０７】
受信パケットがＯｕｔ−ｏｆ−ｏｒｄｅｒパケットである場合には（ステップＳ１６０４のＹｅｓ）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１７０１は当該受信パケットを保持する（ステップＳ１６０５）。また、このときタイマー部１７０３がタイマーを起動していなければ、タイマーをセットする（ステップＳ１６０６）。
【０１０８】
また、受信パケットがＯｕｔ−ｏｆ−ｏｒｄｅｒパケットでない場合には（ステップＳ１６０４のＮｏ）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１７０１は、当該受信パケットとシーケンス番号が連続するパケットを保持しているかどうかを確認する（ステップＳ１６０７）。
【０１０９】
受信パケットとシーケンス番号が連続するパケットをＯｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１で保持していなければ（ステップＳ１６０７のＮｏ）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット判定部１４０２は、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーに当該受信パケットを渡して（ステップＳ１６０９）、本処理ルーチンを終了する。
【０１１０】
一方、受信パケットとシーケンス番号が連続するパケットを保持しているときには（ステップＳ１６０７のＹｅｓ）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１は、シーケンス番号が連続する受信パケットを結合して（ステップＳ１６０８、）ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーに渡す（ステップＳ１６０９）。
【０１１１】
図１７には、タイマー部１４０３でタイマーがタイムアウトしたときに行なう処理手順をフローチャートの形式で示している。
【０１１２】
タイマー部１４０３は、タイマーがセットされた時間に到達すると（ステップＳ１７０１）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１に、タイムアウトしたことを通知する（ステップＳ１７０２）。
【０１１３】
Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１は、通知を受け取ると、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット（到着した順が順番通りでないパケット）を保持しているかどうかを確認する（ステップＳ１７０３）。
【０１１４】
Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケットを保持している場合には（ステップＳ１７０３のＹｅｓ）、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部１４０１は、Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケットを、ＴＣＰ／ＩＰ又はＶＢＰ  ＮＩＣドライバーなどの上位レイヤーに渡す（ステップＳ１７０４）。
【０１１５】
そして、タイマー部１４０３がタイマーを解除して（ステップＳ１７０５）、本処理ルーチンを終了する。
【０１１６】
図１４〜図１７に示した実施例によれば、到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境において、データ受信側（ＡＣＫ送信側）でパケット・ソート処理を行なうことにより、不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットを転送することに伴うネットワーク帯域負荷を低減することができ、また、ＴＣＰ／ＩＰなどの上位レイヤーにおいて不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットの処理を行なうことに伴うＣＰＵの負荷を低減することができ、これらによりデータ転送性能の低下を防ぐという効果を得ることができる。特に、図１〜図４に示したＶＢＰ環境においては、単一のＣｏｎｖｅｒｓａｔｉｏｎを転送する際のマルチリンクを実現するという効果を享受しながら、不要な再送パケット、Ｄｕｐｌｉｃａｔｅ  ＡＣＫパケットによるデータ転送速度の低下を防ぐことができる。
【産業上の利用可能性】
【０１１７】
以上、特定の実施形態を参照しながら、本発明について詳細に説明してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【０１１８】
本明細書では、到着パケットの順番入れ替えが頻繁に発生することが予想される第２層ネットワーク環境の一例として、ＶＢＰによるマルチリンクを行なうネットワーク環境を挙げたが、本発明の要旨はこれに限定されるものではない。また、本発明の適用範囲は第２層ネットワークに限定されるものではなく、パケットが喪失することは稀であるのに到着パケットの順番入れ替えが頻繁に発生することが予想される、他のネットワーク環境においても、本発明を好適に適用することができる。
【０１１９】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【符号の説明】
【０１２０】
１０…サーバー
２０、５０…ネットワーク・インターフェース・カード
３０、４０…第２層スイッチ
６０…クライアント
２１０…転送フレーム・コントロール部
２１１…ＶＢＰポリシー保持部
２１２…送信フレーム・コントローラー
２２０…ＴＣＰ／ＩＰ層
２２１…ＭＡＣサービス・インターフェース
２３０…ＭＡＣ／ＰＨＹ層
６０１…Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部
６０２…Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部
６０３…タイマー部
６０４…ＶＢＰポリシー保持部
６０５…ＶＢＰパケット判定部
６０６…マルチリンク処理部
１００１…ＶＢＰパケット判定部
１００２…タイマー部
１００３…ＶＢＰポリシー保持部
１００４…Ｄｕｐｌｉｃａｔｅ  ＡＣＫ保持部
１００５…Ｄｕｐｌｉｃａｔｅ  ＡＣＫ判定部
１００６…マルチリンク処理部
１４０１…Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット保持部
１４０２…Ｏｕｔ−ｏｆ−ｏｒｄｅｒパケット判定部
１４０３…タイマー部
１４０４…ＶＢＰポリシー保持部
１４０５…ＶＢＰパケット判定部
１４０６…マルチリンク処理部
【図１】
0005601029.tif 000003
【図２】
0005601029.tif 000004
【図３Ｂ】
0005601029.tif 000005
【図４Ｂ】
0005601029.tif 000006
【図５】
0005601029.tif 000007
【図６】
0005601029.tif 000008
【図７】
0005601029.tif 000009
【図８】
0005601029.tif 000010
【図９】
0005601029.tif 000011
【図１０】
0005601029.tif 000012
【図１１】
0005601029.tif 000013
【図１２】
0005601029.tif 000014
【図１３】
0005601029.tif 000015
【図１４】
0005601029.tif 000016
【図１５】
0005601029.tif 000017
【図１６】
0005601029.tif 000018
【図１７】
0005601029.tif 000019
【図３Ａ】
0005601029.tif 000020
【図４Ａ】
0005601029.tif 000021