(57)【特許請求の範囲】
【請求項１】
データパケットが送信ステーションプロトコルスタックを変更することなく送信ステーション伝送単位サイズにサイズ合わせされるようになったデータパケットを、ホストステーションから送信ステーションへ送信するための装置であって、
前記ホストステーションから前記送信ステーションへ送られるデータパケットを傍受するための手段と、
前記傍受したデータパケットに規定されている実際のデータパケットの値をオプションポインタの設定により見かけ上の値に変更するための手段とから成り、
送信ステーション伝送単位サイズが実際のホストステーションデータパケット値よりも大きい場合、前記送信ステーションプロトコルスタックには、前記ホストステーションがその実際のデータパケットサイズとは異なるデータパケットサイズを有すると見えるように、前記送信ステーションスタックがスプーフされ、
更に前記送信ステーションプロトコルスタックは、それ自身の伝送単位サイズから引き出されたデータパケットサイズだけを使用することを特徴とする装置。
【請求項２】
前記プロトコルスタックが、ＴＣＰ／ＩＰプロトコルを実行することを特徴とする、上記請求項１に記載の装置。
【請求項３】
前記データパケットを前記プロトコルスタックに渡す前に、受信ＭＳＳ値を少なくともローカルＭＴＵと同じ程の大きさの値まで変えるＭＳＳスプーフィングインターフェースを更に含み、
前記プロトコルスタックは、そうでなければ使用することになる値よりも大きなＭＳＳ値を強制的に使用させられ、
しかも前記プロトコルスタックは、ローカルインターフェースのＭＴＵに基づくＴＣＰセグメントサイズを使用することを特徴とする、
上記請求項２に記載の装置。
【請求項４】
前記傍受するための手段及び前記変更するための手段が、前記ホストステーションと前記送信ステーションとの間の中間点に実装されることを特徴とする、上記請求項１に記載の装置。
【請求項５】
前記傍受するための手段及び前記変更するための手段が、デバイスドライバとネットワークインターフェースカード（ＮＩＣ）の間であるなら何れの中間点にも実装されることを特徴とする、上記請求項４に記載の装置。
【請求項６】
前記傍受するための手段及び前記変更するための手段が、中間ルーティングエンティティとスイッチングエンティティの間であるなら何れの中間点にも実装されることを特徴とする、上記請求項４に記載の装置。
【請求項７】
ＴＣＰトランスポートプロトコルを使用してデータパケットを送信するための装置において、
第１ＭＴＵ値を有する第１ステーションと、
第２ＭＴＵ値を有する第２ステーションと、
前記第２ステーションのプロトコルスタックを変更することなく、オプションポインタの設定により前記第１ステーションから前記第２ステーションへ送信されるデータパケットの見かけ上のサイズを前記第２ステーションのＭＴＵ値のサイズにサイズ合わせするための、前記第２ステーションと通信がつながっているＭＳＳスプーファと、
を有することを特徴とする装置。
【請求項８】
前記ＭＳＳスプーファが、受信ＭＳＳ値を前記第２ステーションのＭＳＳ値と同じ程に大きい値に変え、しかも前記第２ステーションが、さもなければ第２ステーションに対するより効率の悪いＭＳＳ値を有することになるステーションとより効率の高いＭＳＳ値で通信を行うようにスプーフされることを特徴とする、上記請求項７に記載の装置。
【請求項９】
前記第１ステーションが、小ＭＴＵネットワークインターフェースを更に含み、前記第２ステーションが大ＭＴＵネットワークインターフェースを更に含むことを特徴とする、上記請求項７に記載の装置。
【請求項１０】
前記ＭＳＳスプーファが、前記第２ステーション付近に配置されることを特徴とする、上記請求項７に記載の装置。
【請求項１１】
前記ＭＳＳスプーファが、前記第１ステーションから受信される小ＭＳＳパケットを傍受し、前記第２ステーションにとっては当該パケットがその実際のＭＳＳ値よりも大きなＭＳＳ値を有すると見えるように当該パケットを変えることを特徴とする、上記請求項７に記載の装置。
【請求項１２】
前記第１ステーションが小ＭＴＵを有するネットワーク上にあり、前記第２ステーションが大ＭＴＵを有するネットワーク上にあり、且つ、前記小ＭＴＵネットワークと前記大ＭＴＵネットワークの間で通信を行うための手段を更に含み、前記第１ステーションから送信されるＭＳＳパケットは前記ＭＳＳスプーファ経由で前記通信手段を介して送信され、前記ＭＳＳスプーファは、前記大ＭＴＵネットワーク上の前記第２ステーションが、その実際の値よりも大きな値を持つように見えるＭＳＳパケットを受信するように、ＭＳＳパケットの値を変えることを特徴とする、上記請求項７に記載の装置。
【請求項１３】
データパケットが送信ステーションプロトコルスタックを変更することなく送信ステーション伝送単位サイズにサイズ合わせされるようになったデータパケットを、ホストステーションから送信ステーションへ送信するための方法であって、
前記ホストステーションから前記送信ステーションへ送られるデータパケットを傍受する段階と、
前記傍受されたデータパケットに規定されている実際のデータパケットの値をオプションポインタの設定により見かけ上の値に変更する段階とから成り、
送信ステーション伝送単位サイズが実際のホストステーションデータパケット値よりも大きい場合、前記送信ステーションプロトコルスタックには、前記ホストステーションがその実際のデータパケットサイズとは異なるデータパケットサイズを有すると見えるように、前記送信ステーションプロトコルスタックがスプーフされ、
更に前記送信ステーションプロトコルスタックは、それ自身の伝送単位サイズから引き出されたデータパケットサイズだけを使用することを特徴とする方法。
【請求項１４】
前記プロトコルスタックが、ＴＣＰ／ＩＰプロトコルを実行することを特徴とする、上記請求項１３に記載の方法。
【請求項１５】
前記データパケットを前記プロトコルスタックに渡す前に、受信ＭＳＳ値を少なくともローカルＭＴＵと同じ程の大きさの値まで変えるＭＳＳスプーフィングインターフェースを提供する段階を更に含み、
前記プロトコルスタックは、そうでなければ使用することになる値よりも大きなＭＳＳ値を強制的に使用させられ、
しかも前記プロトコルスタックは、ローカルインターフェースのＭＴＵに基づくＴＣＰセグメントサイズを使用することを特徴とする、上記請求項１４に記載の方法。
【請求項１６】
前記傍受するための手段及び前記変更するための手段が、前記ホストステーションと前記送信ステーションとの間の中間点に実装されることを特徴とする、上記請求項１３に記載の方法。
【請求項１７】
前記傍受するための手段及び前記変更するための手段が、デバイスドライバとネットワークインターフェースカード（ＮＩＣ）の間であるなら何れの中間点にも実装されることを特徴とする、上記請求項１６に記載の方法。
【請求項１８】
前記傍受するための手段及び前記変更するための手段が、中間ルーティングエンティティとスイッチングエンティティの間であるなら何れの中間点にも実装されることを特徴とする、上記請求項１６に記載の方法。
【請求項１９】
ＴＣＰトランスポートプロトコルを使用してデータパケットを送信するための方法において、
第１ＭＴＵ値を有する第１ステーションを提供する段階と、
第２ＭＴＵ値を有する第２ステーションを提供する段階と、
前記第２ステーションのプロトコルスタックを変更することなく、オプションポインタの設定により前記第１ステーションから前記第２ステーションへ送信されるデータパケットの見かけ上のサイズを前記第２ステーションのＭＴＵ値のサイズにサイズ合わせするための、前記第２ステーションと通信がつながっているＭＳＳスプーファを提供する段階と、を有することを特徴とする方法。
【請求項２０】
前記ＭＳＳスプーファが、受信ＭＳＳ値を前記第２ステーションのＭＳＳ値と同じ程に大きい値に変え、且つ、前記第２ステーションが、そうでなければ第２ステーションに対するより効率の悪いＭＳＳ値を有することになるステーションとより効率の高いＭＳＳ値で通信を行うようにスプーフされることを特徴とする、上記請求項１９に記載の方法。
【請求項２１】
前記第１ステーションが、小ＭＴＵネットワークインターフェースを更に含み、前記第２ステーションが大ＭＴＵネットワークインターフェースを更に含むことを特徴とする、上記請求項１９に記載の方法。
【請求項２２】
前記ＭＳＳスプーファが、前記第２ステーション付近に配置されることを特徴とする、上記請求項１９に記載の方法。
【請求項２３】
前記ＭＳＳスプーファが、前記第１ステーションから受信される小ＭＳＳパケットを傍受し、前記第２ステーションには当該パケットがその実際のＭＳＳ値よりも大きなＭＳＳ値を有すると見えるように当該パケットを変えることを特徴とする、上記請求項１９に記載の方法。
【請求項２４】
前記第１ステーションが小ＭＴＵを有するネットワーク上に配置され、前記第２ステーションが大ＭＴＵを有するネットワーク上に配置され、更に前記小ＭＴＵネットワークと前記大ＭＴＵネットワークの間で通信を行う段階を含み、前記第１ステーションから送り出されるＭＳＳパケットは前記ＭＳＳスプーファ経由で前記通信手段を介して送信され、前記ＭＳＳスプーファが、前記大ＭＴＵネットワーク上の前記第２ステーションがその実際の値よりも大きな値を持つように見えるＭＳＳパケットを受信するようにＭＳＳパケットの値を変えることを特徴とする上記請求項１９に記載の方法。
【請求項２５】
ＭＳＳスプーフィングができる限り第２ステーションに接近して実装されることを特徴とする、上記請求項１９に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータネットワークに関する。より厳密には、本発明はコンピュータネットワークプロトコルに関する。
【０００２】
【従来の技術】
ＴＣＰ／ＩＰはよく知られた情報交換プロトコルである。例えば、Ｊ．ポステルの「インターネットプロトコル」ＲＦＣ７９１（１９８１年９月）、Ｊ．ポステルの「インターネット制御メッセージプロトコル」ＲＦＣ７９２（１９８１年９月）、Ｊ．ポステルの「伝送制御プロトコル」ＲＦＣ７９３（１９８１年９月）Ｒ．ブレーデン「インターネットホスト通信レーヤー要件」ＲＦＣ１１２２（１９８９年１０月）、Ｖ．ヤコブセン、Ｒ．ブレーデンの「長遅延経路のためのＴＣＰ拡張」ＲＦＣ１０７２（１９８８年１０月）、Ｊ．ポステルの「ＴＣＰ最大セグメントサイズ及び関連項目」ＲＦＣ８７９（１９８３年１１月）、及びＪ．モーグル、Ｓ．ディーリングによる「経路ＭＴＵ発見」ＲＦＣ１１９１（１９９０年１１月）を参照されたい。
【０００３】
ＴＣＰ接続がセグメントを送信するとき、当該セグメントのサイズは、最大セグメントサイズ（ＭＳＳ）と経路最大伝送単位（ＭＴＵ）により制限される。ＴＣＰプロトコルスタックにより使用されるＭＳＳは、各ＴＣＰ接続の確立中に設定される。各ステーションが使用するＭＳＳは、以下のアルゴリズム、即ち、
−各エンドステーションは所要ＭＳＳをＳＹＮパケットで遠隔のエンドポイントに送信する。この所要ＭＳＳは、ＩＰとＴＣＰフレームオーバーヘッド（普通４０バイト）を使用中のインターフェースのＭＴＵから差し引いたものである。
【０００４】
−各エンドステーションは、次に使用されるべきＭＳＳ値を引き出すが、それはＳＹＮパケットで受信されるＭＳＳの最小値であり、ＩＰとＴＣＰフレームオーバーヘッドをローカルインターフェースのＭＴＵから差し引いたものである。を用いて個別に確定される。
【０００５】
異なるＭＴＵを有する２つのネットワークを接続すると、その結果として各エンドステーションが用いるＭＳＳは、この２つのＭＳＳよりも小さくなる。その上、ＭＳＳが経験により決められている経路ＭＴＵよりも大きい場合には、当該経路ＭＴＵに一致するセグメントのみが送信されることになる。このように、ＩＰのフラグメンテーションの必要なしに通信が成り立つようになっているが、より大きなＭＴＵを有するインターフェースによりもたらされる効率と性能上の利点を排除した格好になっている。
【０００６】
ＴＣＰトランスポートプロトコルを使用しているホストが、２つのステーションの間の接続を確立する際に、ＭＳＳ折衝中に受信する２つの異なるＭＳＳ値の内のより大きい値を選択することができるようになることが望ましいであろう。
【０００７】
【課題を解決するための手段】
本発明は、ＭＳＳスプーフィングと称する、ＴＣＰ  ＭＳＳオプションを含むＴＣＰ  ＳＹＮパケットにおいて規定されるＭＳＳ値を傍受し修正する機構を提供する。その結果、ローカルスタックには遠隔ステーションがその実際のＭＳＳ値とは異なるＭＳＳ値を有していると見えるように、ローカルＴＣＰプロトコルスタックは「スプーフされる」（即ち、信じ込まされる）ことになる。このようにＭＳＳスプーフィンフにより、ローカルＴＣＰプロトコルスタックは、それ自身のＭＴＵから引き出されるＭＳＳ値だけを使用すればよいようになる。
【０００８】
ＭＳＳスプーフィングインターフェースは、パケットをプロトコルスタックに渡す前に、受信ＭＳＳ値を、少なくともローカルＭＴＵ程に大きい値に変える。これにより、ＴＣＰプロトコルスタックは、そうでなければ使用するはずの値より大きなＭＳＳを強制的に使用させられることになる。このように、ＴＣＰプロトコルスタックは常にローカルインタフェースのＭＴＵに基づいたＴＣＰセグメントサイズを使用することになる。
【０００９】
ＭＳＳスプーフィングは、２つのＴＣＰプロトコルエンティティ、例えばデバイスドライバ又はネットワークインターフェースカード（ＮＩＣ）等の間であるなら何れの中間点に実装してもよい。ＭＳＳスプーフィングは、中間のルーテイングやスイッチングエンティティに実装することもできる。
【００１０】
ここに説明する機構により、ＴＣＰトランスポートプロトコルを使用するホストは、２つのステーションの間の接続を確立する際に、ＭＳＳ折衝中に受信される２通りの異なるＭＳＳ値の内のより大きい値を選択することができるようになる。その結果、ＴＣＰ／ＩＰプロトコルスタックにより使用されるローカルＭＳＳ値を確定する機構は、ホストのＴＣＰ／ＩＰプロトコルスタックを変更することなく、提供される２つの異なるＭＳＳ値の内のより小さな方ではなく、より大きな方になるよう変えられる。従って、伝送中のホストは、ステーションごとにＴＣＰプロトコルスタックを変更することなく、送信先ステーションＭＴＵのサイズに合わせたＴＣＰセグメントを送信することができる。
【００１１】
【発明の実施の形態】
本発明は、ＭＳＳスプーフィングと称する、ＴＣＰ  ＭＳＳオプションを含むＴＣＰ  ＳＹＮパケットにおいて規定されるＭＳＳ値を傍受し修正する機構を提供する。その結果、ローカルスタックには遠隔ステーションがその実際のＭＳＳ値とは異なるＭＳＳ値を有していると見えるように、ローカルＴＣＰプロトコルスタックは「スプーフされる」（即ち、信じ込まされる）ことになる。このようにＭＳＳスプーフィンフにより、ローカルＴＣＰプロトコルスタックは、それ自身のＭＴＵから引き出されるＭＳＳ値だけを使用すればよいようになる。
【００１２】
ＭＳＳスプーフィングインターフェースは、パケットをプロトコルスタックに渡す前に、受信ＭＳＳ値を、少なくともローカルＭＴＵ程に大きい値に変える。これにより、ＴＣＰプロトコルスタックは、そうでなければ使用するはずの値より大きなＭＳＳを強制的に使用させられることになる。このように、ＴＣＰプロトコルスタックは常にローカルインタフェースのＭＴＵに基づいたＴＣＰセグメントサイズを使用することになる。
【００１３】
ＭＳＳスプーフィングは、２つのＴＣＰプロトコルエンティティ、例えばデバイスドライバ又はネットワークインターフェースカード（ＮＩＣ）等の間であるなら何れの中間点に実装してもよい。ＭＳＳスプーフィングは、中間のルーテイングやスイッチングエンティティに実装することもできる。
【００１４】
ここに説明する機構により、ＴＣＰトランスポートプロトコルを使用するホストは、２つのステーションの間の接続を確立する際に、ＭＳＳ折衝中に受信される２通りの異なるＭＳＳ値の内のより大きい値を選択することができるようになる。その結果、ＴＣＰ／ＩＰプロトコルスタックにより使用されるローカルＭＳＳ値を確定する機構は、ホストのＴＣＰ／ＩＰプロトコルスタックを変更することなく、提供される２つの異なるＭＳＳ値の内のより小さな方ではなく、より大きな方になるよう変えられる。従って、伝送中のホストは、ステーションごとにＴＣＰプロトコルスタックを変更することなく、送信先ステーションＭＴＵのサイズに合わせたＴＣＰセグメントを送信することができる。
【００１５】
図１は、ホストプロトコルスタックを含む、システムのブロック概略線図である。システム１０内では、種々のアプリケーション１１をオペレーティングシステム１２上で実行させることができる。このようなアプリケーションは、ユーザーがネットワーク上で情報を送受信できる通信プログラムを含んでいてもよい。
【００１６】
例えばインターネット等のネットワークを通してシステム間で情報の交換を可能にするために、オペレーティングシステム内には通信機構が設けられている。図１に示すオペレーティングシステムにはＴＣＰ／ＩＰ機能が設けられており、従って、伝送制御プログラム（ＴＣＰ）レーヤー１３とインターネットプロトコル（ＩＰ）レーヤー１５が含まれている。ユーザーデータグラムプログラム（ＵＤＰ）レーヤー１４も設けられている。ＩＰレーヤーは別々のデバイスドライバ１６、１７、１８を経由して、ネットワーク相手に情報を交換する。
【００１７】
図２は、本発明によるＭＳＳスプーフィングを示すブロック概略線図である。図２では、第１ステーション２０が、１５００というＭＴＵ値を有するアクティブなＴＣＰ接続を提供している。ここでの値は例としての用途のみに提供されるものであって、本発明は、いかなる所要値が使用されるアプリケーションに対しても応用できるものであるということは、当業者には理解頂けるであろう。
【００１８】
本例では、１４６０というＭＳＳ値を有するＴＣＰ  ＳＹＮパケットがＭＳＳスプーファ２２に送られる（１００）。ＭＳＳスプーファは、９０００というＭＴＵ値を有するパッシブなＴＣＰ接続を行う第２ステーション２４と通信がつながっている。ＭＳＳスプーファは、８９６０というＭＳＳ値を有するＴＣＰ  ＳＹＮパケットを送る（１１０）。即ち、ＭＳＳスプーファは、受信ＭＳＳ値（即ち１４６０）を、第２ステーションのＭＳＳ値（即ち８９６０）と同じ大きさの値に変えたわけである。このようにして、（第２ステーションのような）８９６０というローカルＭＳＳ値を有するステーションは、８９６０という値を有するＭＳＳパケットを受信する。第２ステーション２４から第１ステーション２０への通信は、第２ステーションにより送信されるＴＣＰ  ＳＹＮパケットが８９６０のＭＳＳ値を有しており（１２０）、第１ステーションのローカルＭＳＳ値よりも大きいので処理されることになる。このようにして、第２ステーションは、他のやり方では第２ステーションに対してより効率の悪いＭＳＳ値を有するステーションと、効率の高いＭＳＳ値で通信を行えるようにスプーフされる。
【００１９】
図３は、本発明による、ホストにおけるＭＳＳスプーフィングを示すブロック概略線図である。図３では、ネットワーク３０には、小ＭＴＵネットワークインターフェース３２を有する第１ステーション３６と大ＭＴＵネットワークインターフェース３４を有する第２ステーション３８とが含まれている。本発明では、ＭＳＳスプーファ３５を第２ステーションに加える。ＭＳＳスプーファは、第１ステーションから受信される小さなＭＳＳパケットを傍受し、第２ステーションにとっては実際のパケット値よりも大きな値を有していると見受えるように、ＭＳＳパケットを変えてしまう。
【００２０】
図４は、本発明による、ネットワークにおけるＭＳＳスプーフィンフを示すブロック概略線図である。本図面では、小ＭＴＵ値４０を有するネットワークが、大ＭＴＵ値４５を有するネットワークとルータ４１を経由して通信している。受信中のホスト４４から送信されるＭＳＳパケットは、ＭＳＳスプーファ４２経由でルータを介して送信される。ＭＳＳスプーファは、大ＭＴＵネットワーク上で送信中のホスト４３が、実際の値よりも大きな値を有するように見えるＭＳＳパケットを受信するように、ＭＳＳパケットの値を変える。
好適なＭＳＳスプーファは以下の表１に示すアルゴリズムに従い作動する。
【００２１】
0003564011.tif 000002
0003564011.tif 000003
【００２２】
本発明につき、以下の事項、即ち、
−ＭＳＳスプーフィングの結果として、大きなセグメントを受信することにより、いくつかの遅延ＡＣＫアルゴリズムの作動に影響が出る場合もある。本発明の好適実施例は、ＲＦＣ１１２２に記述されているバン・ヤコブセン・アルゴリズム及びナーグル輻輳回避アルゴリズムの双方に適合する。
−ＭＳＳスプーフィングはできるかぎりスプーフされるホストに接近して実装されるべきである。本発明の好適実施例では、この位置は（図３に示すように）ＮＩＣ又はドライバ内となっているが、本発明は（図４に示すように）ルーティング或はスイッチングエンティティにも容易に実装できる。
−ＭＳＳスプーフィングアルゴリズムの実行者は、ＴＣＰウインドウサイズを計算するときには、ＴＣＰウインドウスケールに注意すべきである。
−ＲＦＣ８７９は明示的には無視される。
ことに注意されたい。
【００２３】
本発明について、ここでは好適実施例に関連させて説明してきたが、本発明の精神と範囲から逸脱することなく、他のアプリケーションをここに述べたものに替えうることは、当業者には容易に理解されるであろう。従って、本発明は以下に述べる請求の範囲によってのみ限定されるものである。
【図面の簡単な説明】
【図１】ホストプロトコルスタックを含む、システムのブロック概略線図である。
【図２】本発明によるＭＳＳスプーフィングを示すブロック概略線図である。
【図３】本発明による、ホストにおけるＭＳＳスプーフィングを示すブロック概略線図である。
【図４】本発明による、ネットワークにおけるＭＳＳスプーフィングを示すブロック概略線図である。
【符号の説明】
３２  小ＭＴＵネットワークインターフェース
３４  大ＭＴＵネットワークインターフェース
３５  ＭＳＳスプーファ
３６  第１ステーション
３８  第２ステーション
４０  小ＭＴＵ値
４１  ルータ
４２  ＭＳＳスプーファ
４３  ホスト
４４  ホスト
４５  大ＭＴＵ値
【図１】
0003564011.tif 000004
【図２】
0003564011.tif 000005
【図３】
0003564011.tif 000006
【図４】
0003564011.tif 000007