【手続補正書】
【提出日】令和1年10月16日(2019.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークデバイスであって、
ネットワークカードと、
少なくとも１つのプロセッサと、
メモリと、
前記少なくとも１つのプロセッサ上で実行されるネットワークインターフェイスドライバとを含み、
前記ネットワークインターフェイスドライバは、
ソフトウェアアプリケーションによって生成され発送された第１の組のデータパケットを、前記ネットワークカードによる送信のために受信し、
受信された前記第１の組のデータパケットに関連付けられた記述子を第１の順序で一次送信キューに格納し、
受信された前記第１の組のデータパケットに関連付けられた前記記述子を、前記ネットワークカードおよび前記少なくとも１つのプロセッサのうちの一方上で実行されるデータトラフィックシェーピングモジュールに転送し、
受信された前記第１の組のパケットのうちの１つのパケットが前記ネットワークカードによって順調に送信されたという判断に応答して、パケット送信完了メッセージを前記ソフトウェアアプリケーションに通信するように構成され、前記ソフトウェアアプリケーションは、前記ネットワークインターフェイスドライバからのパケット送信完了メッセージの受信を待ってから、追加のデータパケットを前記ネットワークインターフェイスドライバに発送し、
前記データトラフィックシェーピングモジュールは、
複数のトラフィックシェーピングキューを維持するように構成され、各トラフィックシェーピングキューは少なくとも１つの関連付けられた送信速度規則を有し、前記データトラフィックシェーピングモジュールはさらに、
前記一次送信キューから、前記ネットワークインターフェイスドライバによって転送されたデータパケットの前記記述子を受信し、
受信された前記記述子に関連付けられた前記データパケットを分類し、
受信された第１の記述子に関連付けられた第１のデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のデータパケットに関連付けられた前記第１の記述子を前記一次送信キューから除去し、分類の結果に基づいて前記第１の記述子を対応するトラフィックシェーピングキューに格納し、
前記ネットワークカードに、前記トラフィックシェーピングキューに格納された記述子に関連付けられたデータパケットを、それぞれの前記トラフィックシェーピングキューに関連付けられた前記送信速度規則に従って送信させ、
前記ネットワークインターフェイスドライバに、前記第１の順序とは異なる第２の順序でのデータパケットの順調な送信を通知するように構成される、ネットワークデバイス。
【請求項２】
前記データトラフィックシェーピングモジュールは、前記ネットワークカード、および前記少なくとも１つのプロセッサ上で実行される実オペレーティングシステムのうちの一方の一部として含まれる、請求項１に記載のネットワークデバイス。
【請求項３】
前記ネットワークインターフェイスドライバは、前記少なくとも１つのプロセッサ上で実行される実オペレーティングシステム内に含まれており、ゲストオペレーティングシステムを介して前記ソフトウェアアプリケーションと通信するように構成される、請求項１に記載のネットワークデバイス。
【請求項４】
前記ネットワークインターフェイスドライバは、前記少なくとも１つのプロセッサ上で実行されるオペレーティングシステムの伝送制御プロトコル（ＴＣＰ）スタックの第１の層内に含まれており、前記ＴＣＰスタックの上位層に含まれるソフトウェアアプリケーションと通信するように構成される、請求項１に記載のネットワークデバイス。
【請求項５】
前記ネットワークカードは、
第１のリソースを使用することによって前記第１のデータパケットを送信し、
前記第１のデータパケットの送信に応答して、前記第１のリソースが前記ソフトウェアアプリケーションによってアクセス可能となるように前記第１のリソースを解放するように構成される、請求項１に記載のネットワークデバイス。
【請求項６】
前記第１のリソースは、メモリバッファの一部である、請求項５に記載のネットワークデバイス。
【請求項７】
前記データトラフィックシェーピングモジュールはさらに、
前記第１の記述子を受信した後で、第２のデータパケットに関連付けられた第２の記述子を受信し、
受信された前記第２の記述子に関連付けられた第２のデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のデータパケットを送信する前に、前記ネットワークカードに、前記一次送信キューに格納された前記第２の記述子に関連付けられた前記第２のデータパケットを送信させるように構成される、請求項１に記載のネットワークデバイス。
【請求項８】
前記ネットワークカードは、複数のパケットを、前記複数のパケットを前記一次送信キューに格納する順序とはバラバラの順序で送信するように構成される、請求項１に記載のネットワークデバイス。
【請求項９】
前記データトラフィックシェーピングモジュールはさらに、
第１のストリームにおけるデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のストリームにおける前記データパケットに関連付けられた記述子を、前記トラフィックシェーピングキューのうちの第１のトラフィックシェーピングキューに格納し、
前記第１のストリームとは異なる第２のストリームにおけるデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第２のストリームにおける前記データパケットに関連付けられた記述子を、前記トラフィックシェーピングキューのうちの第２のトラフィックシェーピングキューに格納するように構成される、請求項１に記載のネットワークデバイス。
【請求項１０】
前記ネットワークカードは、
前記第１のトラフィックシェーピングキューに格納された複数のパケットを、前記複数のパケットを前記第１のトラフィックシェーピングキューに格納した順序で送信し、
前記第２のトラフィックシェーピングキューに格納された複数のパケットを、前記複数のパケットを前記第２のトラフィックシェーピングキューに格納した順序で送信するように構成される、請求項９に記載のネットワークデバイス。
【請求項１１】
方法であって、
ソフトウェアアプリケーションによって生成され発送された第１の組のデータパケットを、ネットワークカードによる送信のために、少なくとも１つのプロセッサ上で実行されるネットワークインターフェイスドライバによって受信することと、
受信された前記第１の組のデータパケットに関連付けられた記述子を、前記ネットワークインターフェイスドライバによって、第１の順序で一次送信キューに格納することと、
受信された前記第１の組のデータパケットに関連付けられた前記記述子を、前記ネットワークインターフェイスドライバによって、前記ネットワークカードおよび前記少なくとも１つのプロセッサのうちの一方上で実行されるデータトラフィックシェーピングモジュールに転送することと、
受信された前記第１の組のパケットのうちの１つのパケットが前記ネットワークカードによって順調に送信されたという判断に応答して、前記ネットワークインターフェイスドライバによって、パケット送信完了メッセージを前記ソフトウェアアプリケーションに通信することとを含み、前記ソフトウェアアプリケーションは、前記ネットワークインターフェイスドライバからのパケット送信完了メッセージの受信を待ってから、追加のデータパケットを前記ネットワークインターフェイスドライバに発送し、前記方法はさらに、
前記データトラフィックシェーピングモジュールによって、複数のトラフィックシェーピングキューを維持することを含み、各トラフィックシェーピングキューは少なくとも１つの関連付けられた送信速度規則を有し、前記方法はさらに、
前記一次送信キューから、前記ネットワークインターフェイスドライバによって転送されたデータパケットの前記記述子を、前記データトラフィックシェーピングモジュールによって受信することと、
受信された前記記述子に関連付けられた前記データパケットを、前記データトラフィックシェーピングモジュールによって分類することと、
前記データトラフィックシェーピングモジュールによって、受信された第１の記述子に関連付けられた第１のデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のデータパケットに関連付けられた前記第１の記述子を前記一次送信キューから除去し、分類の結果に基づいて前記第１の記述子を対応するトラフィックシェーピングキューに格納することと、
前記データトラフィックシェーピングモジュールによって、前記ネットワークカードに、前記トラフィックシェーピングキューに格納された記述子に関連付けられたデータパケットを、それぞれの前記トラフィックシェーピングキューに関連付けられた前記送信速度規則に従って送信させることと、
前記データトラフィックシェーピングモジュールによって、前記ネットワークインターフェイスドライバに、前記第１の順序とは異なる第２の順序でのデータパケットの順調な送信を通知することとを含む、方法。
【請求項１２】
前記データトラフィックシェーピングモジュールは、前記ネットワークカード、および前記少なくとも１つのプロセッサ上で実行される実オペレーティングシステムのうちの一方の一部として含まれる、請求項１１に記載の方法。
【請求項１３】
前記ネットワークインターフェイスドライバは、前記少なくとも１つのプロセッサ上で実行される実オペレーティングシステム内に含まれており、ゲストオペレーティングシステムを介して前記ソフトウェアアプリケーションと通信するように構成される、請求項１１に記載の方法。
【請求項１４】
前記ネットワークインターフェイスドライバは、前記少なくとも１つのプロセッサ上で実行されるオペレーティングシステムの伝送制御プロトコル（ＴＣＰ）スタックの第１の層内に含まれており、前記ＴＣＰスタックの上位層に含まれるソフトウェアアプリケーションと通信するように構成される、請求項１１に記載の方法。
【請求項１５】
第１のリソースを使用することによって、前記第１のデータパケットを前記ネットワークカードによって送信することと、
前記第１のデータパケットの送信に応答して、前記第１のリソースが前記ソフトウェアアプリケーションによってアクセス可能となるように、前記第１のリソースを前記ネットワークカードによって解放することとをさらに含む、請求項１１に記載の方法。
【請求項１６】
前記第１のリソースは、メモリバッファの一部である、請求項１５に記載の方法。
【請求項１７】
前記第１の記述子を受信した後で、第２のデータパケットに関連付けられた第２の記述子を、前記データトラフィックシェーピングモジュールによって受信することと、
前記データトラフィックシェーピングモジュールによって、受信された前記第２の記述子に関連付けられた第２のデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のデータパケットを送信する前に、前記ネットワークカードに、前記一次送信キューに格納された前記第２の記述子に関連付けられた前記第２のデータパケットを送信させることとをさらに含む、請求項１１に記載の方法。
【請求項１８】
前記ネットワークカードによって、複数のパケットを、前記複数のパケットを前記一次送信キューに格納する順序とはバラバラの順序で送信することをさらに含む、請求項１１に記載の方法。
【請求項１９】
前記データトラフィックシェーピングモジュールによって、第１のストリームにおけるデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第１のストリームにおける前記データパケットに関連付けられた記述子を、前記トラフィックシェーピングキューのうちの第１のトラフィックシェーピングキューに格納することと、
前記データトラフィックシェーピングモジュールによって、前記第１のストリームとは異なる第２のストリームにおけるデータパケットの、前記ネットワークカードによる送信が遅延されるべきであると判断し、そのような判断に応答して、前記第２のストリームにおける前記データパケットに関連付けられた記述子を、前記トラフィックシェーピングキューのうちの第２のトラフィックシェーピングキューに格納することとをさらに含む、請求項１１に記載の方法。
【請求項２０】
前記ネットワークカードによって、前記第１のトラフィックシェーピングキューに格納された複数のパケットを、前記複数のパケットを前記第１のトラフィックシェーピングキューに格納した順序で送信することと、
前記ネットワークカードによって、前記第２のトラフィックシェーピングキューに格納された複数のパケットを、前記複数のパケットを前記第２のトラフィックシェーピングキューに格納した順序で送信することとをさらに含む、請求項１９に記載の方法。