この観点から、本願は、データ処理方法、ネットワークインタフェースカード、及びサーバを開示する。1つのセッションエントリのアクションフィールドは、データパケットに関連付けられた複数のフローエントリのアクションフィールドに従い生成され、データパケットを処理する機能は、実装のためにネットワークインタフェースカードにオフロードされる。
第1の態様によれば、本願は、サーバを提供し、サーバは、ホストとネットワークインタフェースカードとを含み、仮想マシン及び仮想スイッチがホスト上で動作する。ネットワークインタフェースカードは、ホストインタフェースを用いてホストに接続され、ネットワークインタフェースを用いて外部ネットワークに接続される。ホストは、ネットワークインタフェースカードにより送信された第1データパケットを受信し、第1データパケット内で搬送されたマッチング情報に従い、第1データパケットに関連付けられた少なくとも2つのフローエントリを取得するように構成される。さらに、ホストは、少なくとも2つのフローエントリに従い処理情報を生成し、処理情報をホストインタフェースを使用してネットワークインタフェースカードに送信するように構成され、処理情報は、少なくとも2つのフローエントリに従い、第1データパケットに対して仮想スイッチにより実行される処理動作を示すために使用される。ネットワークインタフェースカードは、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成するように構成され、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカードにより使用されるルールを記録するために使用される。
第1データパケットは、ホストインタフェースを使用することにより仮想マシンからネットワークインタフェースカードにより受信されるデータパケット、又はネットワークインタフェースを使用することにより外部ネットワークから受信されるデータパケットであってよい。
サーバは、データパケットに関連付けられた少なくとも2つのフローエントリのアクションフィールドに従い1つのセッションエントリのアクションフィールドを生成し、実装のためにデータパケットを処理する機能をネットワークインタフェースカードにオフロードする。その結果、ホスト上のハードウェアリソースが節約される。
第1の態様に従い、第1の態様の第1の可能な実装において、ネットワークインタフェースカードは、さらに、第2データパケットを受信し、マッチング情報に従い、第2データパケットに一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い第2データパケットを処理するように構成される。第2データパケットと第1データパケットは、同じデータフローに属し、同じマッチング情報を含む。
ネットワークインタフェースカードは、ネットワークインタフェースカードがデータパケットに一致する1つのセッションエントリをクエリすることを条件として、データパケットに対して処理手順を実施できる。その結果、データパケット処理手順が簡略化される。
第1の態様又は第1の態様の第1の可能な実装によれば、第1の態様の第2の可能な実装において、ホストがネットワークインタフェースカードにより送信された第1データパケットを受信する前に、ネットワークインタフェースカードは、さらに、第1データパケットを受信し、マッチング情報に従い、記録されたセッションエントリをクエリし、第1データパケットに一致するセッションエントリが見付からないとき、ホストに第1データパケットを送信するように構成される。
ネットワークインタフェースカードは、セッションテーブルを維持する。異なるデータフローは、異なるマッチング情報を有し、異なるデータフローは、異なる方法で処理され得る。各セッションエントリは、1つのデータフローに対応している。データパケットを受信した後、ネットワークインタフェースカードは、データパケット内で搬送されたマッチング情報に従いセッションテーブルをクエリする。データパケットに一致するセッションエントリが見付かった場合、データパケットはセッションエントリのアクションフィールドに記録された情報に従い処理される。データパケットに対応するセッションエントリが見付からない場合、第1データパケットは、第1データパケットの位置するデータフローの第1データパケットであるか、又は第1データパケットは、データフローの第1データパケットではなく、データフローに対応するセッションエントリが、セッションテーブルから削除され、データインタフェースカードは、処理のためにホスト上で動作している仮想スイッチに第1データパケットを報告する。
第1の態様又は第1の態様の前述の可能な実装のいずれか1つによれば、第1の態様の第3の可能な実装では、ネットワークインタフェースカードは、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むように構成される。
セキュリティグループルールは、セキュリティフィルタリングルールを実装するために使用される。セキュリティグループルールは、ネットワークインタフェースカードにもオフロードされる。ネットワークインタフェースカードは、第1セッションエントリに従い、一致したデータパケットに対して複数の処理動作を実行し得る。その結果、データパケット処理手順が簡略化される。
第1の態様の第3の可能な実装によれば、第1の態様の第4の可能な実装では、セキュリティグループ機能がホストのために構成され、ホストは、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、第1データパケットに一致するセキュリティグループルールをネットワークインタフェースカードに送信するように構成される。
ホスト内でセキュリティグループルールが構成されている場合、ホストは、第1データパケットのマッチング情報に従い、第1データパケットのセキュリティグループルールをクエリし、ホストインタフェースを使用して第1データパケットのセキュリティグループルールをネットワークインタフェースカードに送信してよい。
第1の態様の第3又は第4の可能な実装によれば、第1の態様の第5の可能な実装において、セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、ネットワークインタフェースカードは、さらに、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い第2セッションエントリのマッチングフィールドを生成するように構成され、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
第2セッションエントリのアクションフィールドは、ホストにアップロードするよう設定され、又はヌルに設定されてよい。続いて、第2セッションテーブルのアクションフィールドは、逆方向データパケットに対して仮想スイッチにより実行される実際の処理に従い更新される。代替として、第1セッションエントリと第2セッションエントリは1つのレコードに結合されてよい。アクションフィールドは、順方向フィールドと逆方向フィールドの2つのフィールドに分類される。例えば、VMがデータパケットを送信する方向が順方向に設定されてよく、データパケットがネットワーク側からである方向が逆方向に設定されてよい。送信元ノード情報と宛先ノード情報は、逆方向テーブルがクエリされるとき、交換される。
第1の態様又は第1の態様の前述の可能な実装のいずれか1つによれば、第1の態様の第6の可能な実装において、ホストは、さらに、少なくとも2つのフローエントリのうちの1つを変更した後に、ネットワークインタフェースカードに変更命令を送信するように構成され、変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用され、ネットワークインタフェースカードは、さらに、変更命令に従い第1セッションエントリを変更するように構成される。
サーバは、リンクリスト技術に従い、セッションエントリを仮想スイッチのフローエントリにリンクしてよい。仮想スイッチのエントリが削除又は変更されると、ホストは、セッションテーブルを同期的に削除又は変更するようにネットワークインタフェースカードに指示する。
第1の態様又は第1の態様の前述の可能な実装のいずれか1つによれば、第1の態様の第7の可能な実装では、ネットワークインタフェースカードは、さらに、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、第1セッションエントリを削除するように構成される。
ネットワークインタフェースカードの記憶空間が限られている、又はセッションテーブルに割り当てられている記憶空間が限られているため、セッションエントリが長時間アクセスされないとき、エージングメカニズムが有効にされ、すなわち、記憶空間を節約するために、期間の間にアクセスされないセッションエントリが削除される。
第1の態様の第7の可能な実装によれば、第1の態様の第8の可能な実装において、第1セッションエントリを削除した後、ネットワークインタフェースカードは、さらに、ホストに削除命令を送信するように構成され、ホストは、さらに、削除命令に従い少なくとも2つのフローエントリを削除するように構成される。
フローテーブルエージングメカニズムによれば、長時間アクセスされないフローエントリは自動的にエージングされる。フローエントリがエージングされた後、セッションエントリは削除される。この場合、セッションテーブルは継続的に再作成及び削除される必要がある。ホストは、フローテーブルのエージングを設定してよく、又はエージング時間を極端に長く設定し、又はエージングしなくてよい。セッションエントリがエージングされた(すなわち、削除された)後、ホストは、セッションエントリに対応するフローエントリをエージングするように指示されてよい。
第2の態様によれば、本願は、データ処理方法を提供する。サーバは、仮想スイッチが動作するホストとネットワークインタフェースカードとを含み、当該方法は、ホストにより、ネットワークインタフェースカードにより送信された第1データパケットを受信し、第1データパケットに関連する少なくとも2つのフローエントリを取得し、少なくとも2つのフローエントリに従い処理情報を生成し、処理情報をネットワークインタフェースカードに送信するステップと、ネットワークインタフェースカードにより、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成するステップであって、第1セッションエントリは、ネットワークインタフェースカードにより第1セッションエントリに一致するデータパケットを処理するために使用されるルールを記録するために使用される、ステップと、を含む。
第2の態様によれば、第2の態様の第1の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、第2データパケットは、第1データパケットと同じマッチング情報を含む、ステップと、マッチング情報に従い、ネットワークインタフェースカードにより、第2データパケットと一致する第1セッションエントリをクエリするステップと、第1セッションエントリのアクションフィールドに従い、第2データパケットを処理するステップと、を含む。
第2の態様又は第2の態様の第1の可能な実装によれば、第2の態様の第2の可能な実装において、ホストがネットワークインタフェースカードにより送信された第1データパケットを受信する前に、当該方法は、さらに、ネットワークインタフェースカードにより、第1データパケットを受信し、マッチング情報に従い、記録されたセッションエントリをクエリし、第1データパケットに一致するセッションエントリが見付からないとき、第1データパケットをホストに送信するステップ、を含む。
第2の態様又は第2の態様の前述の可能な実装のいずれか1つによれば、第2の態様の第3の可能な実装では、当該方法は、さらに、ネットワークインタフェースカードにより、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むステップ、を含む。
第2の態様の第3の可能な実装によれば、第2の態様の第4の可能な実装において、セキュリティグループ機能がホストに対して構成され、当該方法は、さらに、ホストにより、第1データパケットに一致するセキュリティグループルールをクエリし、第1データパケットに一致するセキュリティグループルールをネットワークインタフェースカードに送信するステップ、を含む。
第2の態様の第3又は第4の可能な実装によれば、第2の態様の第5の可能な実装において、セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、当該方法は、さらに、ネットワークインタフェースカードにより、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い、第2セッションエントリのマッチングフィールドを生成するステップ、を含み、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
第2の態様又は第2の態様の前述の可能な実装のいずれか1つによれば、第2の態様の第6の可能な実装において、当該方法は、さらに、少なくとも2つのフローエントリのうちの1つを変更した後に、ホストにより、変更命令をネットワークインタフェースカードに送信するステップであって、変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用される、ステップと、ネットワークインタフェースカードにより、変更命令に従い、第1セッションエントリを変更するステップと、を含む。
第2の態様又は第2の態様の前述の可能な実装のいずれか1つによれば、第2の態様の第7の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合に、第1セッションエントリを削除するステップ、を含む。
第2の態様の第7の可能な実装によれば、第2の態様の第8の可能な実装において、ネットワークインタフェースカードが第1セッションエントリを削除した後、当該方法は、さらに、ネットワークインタフェースカードにより、ホストに削除指示を送信するステップと、ホストにより、削除指示に従い、少なくとも2つのフローエントリを削除するステップと、を含む。
第2の態様又は第2の態様の可能な実装のいずれか1つは、第1の態様又は第1の態様の可能なサーバ実装のいずれか1つに対応する方法である。第1の態様又は第1の態様の可能な実装のいずれか1つにおける説明は、第2の態様又は第2の態様の可能な実装のいずれか1つに対応して適用可能である。詳細は、ここでは再度説明しない。
第3の態様によれば、本発明は、データ処理方法を提供し、当該方法は、ネットワークインタフェースカードにより第1データパケットをホストに送信するステップと、ネットワークインタフェースカードにより、ホストから処理情報を受信するステップであって、処理情報が、第1データパケットに一致する少なくとも2つのフローエントリに従い、第1データパケットに対してホストにより実行される処理動作を示すために使用される、ステップと、ネットワークインタフェースカードにより、処理情報に応じて、第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い、第1セッションエントリのマッチングフィールドを生成するステップであって、第1セッションエントリが、第1セッションエントリに一致するデータパケットを処理するために、ネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、を含む。
第3の態様によれば、第3の態様の第1の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、第2データパケットは、第1データパケットと同じマッチング情報を含む、ステップと、ネットワークインタフェースカードにより、マッチング情報に従い、第2データパケットと一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い、第2データパケットを処理するステップと、を含む。
第3の態様又は第3の態様の第1の可能な実装によれば、第3の態様の第2の可能な実装において、当該方法は、ネットワークインタフェースカードにより、第1データパケットを受信し、マッチング情報に従い、記録されたセッションエントリをクエリし、第1データパケットに一致するセッションエントリが見付からないとき、ホストに第1データパケットを送信するステップ、を含む。
第3の態様又は第3の態様の前述の可能な実装のいずれか1つによれば、第3の態様の第3の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むステップを含む。
第3の態様の第3の可能な実装によれば、第3の態様の第4の可能な実装において、セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、当該方法は、さらに、ネットワークインタフェースカードにより、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い、第2セッションエントリのマッチングフィールドを生成するステップであって、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである、ステップを含む。
第3の態様又は第3の態様の前述の可能な実装のいずれか1つによれば、第3の態様の第5の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、ホストから変更命令を受信するステップであって、変更命令が、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用される、ステップと、ネットワークインタフェースカードにより、変更命令に従い、第1セッションエントリを変更するステップと、を含む。
第3の態様又は第3の態様の前述の可能な実装のいずれか1つによれば、第3の態様の第6の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合に、第1セッションエントリを削除するステップ、を含む。
第3の態様の第6の可能な実装によれば、第3の態様の第7の可能な実装において、ネットワークインタフェースカードが第1セッションエントリを削除した後、当該方法は、さらに、ネットワークインタフェースカードにより、削除命令をホストに送信するステップを含み、削除命令は、少なくとも2つのフローエントリを削除するようにホストに指示するために使用される。
第3の態様又は第3の態様の可能な実装のいずれか1つは、第1の態様又は第1の態様の可能なサーバ実装のいずれか1つに対応するネットワークインタフェースカード側の方法である。第1の態様又は第1の態様の可能な実装のいずれか1つの説明は、第3の態様又は第3の態様の可能な実装のいずれか1つに対応して適用可能である。詳細は、ここでは再度説明しない。
第4の態様によれば、本発明は、ネットワークインタフェースカードを提供し、ネットワークインタフェースカードは、ホストに第1データパケットを送信するように構成された送信ユニットと、ホストから処理情報を受信するように構成された受信ユニットであって、処理情報が、第1データパケットに一致する少なくとも2つのフローエントリに従い、ホストにより第1データパケットに対して実行される処理動作を示すために使用される、受信ユニットと、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い、第1セッションエントリのマッチングフィールドを生成するよう構成される処理ユニットであって、第1セッションエントリが、第1セッションエントリに一致するデータパケットを処理するために、ネットワークインタフェースカードにより使用されるルールを記録するために使用される、処理ユニットと、を含む。
第4の態様によれば、第4の態様の第1の可能な実装において、受信ユニットは、さらに、第2データパケットを受信するように構成され、第2データパケットは、第1データパケットと同じマッチング情報を含み、処理ユニットは、さらに、マッチング情報に従い、第2データパケットと一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い第2データパケットを処理するように構成される。
第4の態様又は第4の態様の第1の可能な実装によれば、第4の態様の第2の可能な実装では、送信ユニットがホストに第1データパケットを送信する前に、受信ユニットは、さらに、第1データパケットを受信するように構成され、処理ユニットは、さらに、マッチング情報に従い、記録されたセッションエントリをクエリするように構成され、送信ユニットは、さらに、処理ユニットが第1データパケットに一致するセッションエントリを見付けない場合に、第1データパケットをホストに送信するように構成される。
第4の態様又は第4の態様の前述の可能な実装のいずれか1つによれば、第4の態様の第3の可能な実装では、処理ユニットは、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むように構成される。
第4の態様の第3の可能な実装によれば、第4の態様の第4の可能な実装では、セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、処理ユニットは、さらに、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い第2セッションエントリのマッチングフィールドを生成するように構成され、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
第4の態様又は第4の態様の前述の可能な実装のいずれか1つによれば、第4の態様の第5の可能な実装では、受信ユニットは、さらに、ホストから変更命令を受信するように構成され、変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用され、処理ユニットは、さらに、変更命令に従い第1セッションエントリを変更するように構成される。
第4の態様又は第4の態様の前述の可能な実装のいずれか1つによれば、第4の態様の第6の可能な実装では、処理ユニットは、さらに、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、第1セッションエントリを削除するように構成される。
第4の態様の第6の可能な実装によれば、第4の態様の第7の可能な実装では、第1セッションエントリを削除した後、処理ユニットは、さらに、ホストに削除命令を送信するように構成され、削除命令は、少なくとも2つのフローエントリを削除するようにホストに指示するために使用される。
第4の態様又は第4の態様の可能な実装のいずれか1つは、第1の態様又は第1の態様の可能なサーバ実装のいずれか1つに対応するネットワークインタフェースカードである。第1の態様又は第1の態様の可能な実装のいずれか1つの説明は、第4の態様又は第4の態様の可能な実装のいずれか1つに対応して適用可能である。詳細は、ここでは再度説明しない。
第5の態様によれば、本発明は、ホストインタフェース、プロセッサ、及びメモリを含むネットワークインタフェースカードを提供し、ホストインタフェースは、ホストに接続するように構成され、プロセッサは、ホストインタフェースを使用することにより、ホストに第1データパケットを送信するように構成され、ホストインタフェースは、さらに、ホストインタフェースを使用することにより、ホストから処理情報を受信するように構成され、処理情報は、第1データパケットに一致する少なくとも2つのフローエントリに従い、ホストにより第1データパケットに対して実行される処理動作を示すために使用され、プロセッサは、さらに、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成し、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカードにより使用されるルールを記録するために使用され、メモリは、第1セッションエントリを記憶するように構成される。
第5の態様によれば、第5の態様の第1の可能な実装において、ネットワークインタフェースカードは、さらに、ネットワークインタフェースを含み、ネットワークインタフェースは、外部ネットワークに接続するように構成され、プロセッサは、さらに、ホストインタフェース又はネットワークインタフェースを使用することにより、第2データパケットを受信するように構成され、第2データパケットは、第1データパケットと同じマッチング情報を含み、プロセッサは、さらに、マッチング情報に従い、第2データパケットと一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い第2データパケットを処理するように構成される。
第5の態様又は第5の態様の第1の可能な実装によれば、第5の態様の第2の可能な実装では、ネットワークインタフェースカードは、さらに、ネットワークインタフェースを含み、ネットワークインタフェースは、外部ネットワークに接続するように構成され、ホストインタフェースを使用して第1データパケットをホストに送信する前に、プロセッサは、さらに、ホストインタフェース又はネットワークインタフェースを使用して第1データパケットを受信し、マッチング情報に従い、記録されたセッションエントリをクエリし、第1データパケットに一致するセッションエントリが見付からない場合に、ホストに第1データパケットを送信するように構成される。
第5の態様又は第5の態様の前述の可能な実装のいずれか1つによれば、第5の態様の第3の可能な実装では、プロセッサは、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むように構成される。
第5の態様の第3の可能な実装によれば、第5の態様の第4の可能な実装において、セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、プロセッサは、さらに、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い第2セッションエントリのマッチングフィールドを生成するように構成され、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
第5の態様又は第5の態様の前述の可能な実装のいずれか1つによれば、第5の態様の第5の可能な実装では、プロセッサは、さらに、ホストインタフェースを使用することによりホストから変更命令を受信するように構成され、変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用され、プロセッサは、さらに、変更命令に従い第1セッションエントリを変更するように構成される。
第5の態様又は第5の態様の前述の可能な実装のいずれか1つによれば、第5の態様の第6の可能な実装では、プロセッサは、さらに、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、第1セッションエントリを削除するように構成される。
第5の態様の第6の可能な実装によれば、第5の態様の第7の可能な実装では第1セッションエントリを削除した後、プロセッサは、さらに、ホストインタフェースを使用することによりホストに削除命令を送信するように構成され、削除命令は、少なくとも2つのフローエントリを削除するようにホストに指示するために使用される。
第5の態様又は第5の態様の可能な実装のいずれか1つは、第1の態様又は第1の態様の可能なサーバ実装のいずれか1つに対応するネットワークインタフェースカードである。第1の態様又は第1の態様の可能な実装のいずれか1つの説明は、第5の態様又は第5の態様の可能な実装のいずれか1つに対応して適用可能である。詳細は、ここでは再度説明しない。
本願に開示された技術的ソリューションによれば、データパケット処理中の実行圧力の一部がネットワークインタフェースカードに転送され、ハードウェアデバイスとして、ネットワークインタフェースカードは、高い処理効率を有するだけでなく、動作中にハードウェア層において他のリソースを占有する必要もない。さらに、本願では、複数のフローエントリに従い仮想スイッチにより実行されるデータ処理の処理情報が1つのセッションエントリに記録される。その結果、ネットワークインタフェースカードが1つのセッションエントリのみを用いて一致するデータパケットを処理することができ、処理手順を簡略化することができる。
以下は、添付の図面を参照して、本発明の実施形態を説明する。
本発明の実施形態では、「第1」及び「第2」のような用語は、第1データパケット及び第2データパケットのようなオブジェクト間を区別するために使用されるが、「第1」及び「第2」の間には論理的又は時系列の依存関係はない。
本発明の実施形態では、データパケットは、マッチング情報及びペイロード(英語正式名:payload)を含む。マッチング情報は、フローテーブルのマッチングフィールド又はセッションテーブルのマッチングフィールドを照合するために使用される。
本発明の実施形態では、ネットワークインタフェースカード、プロセッサ、入力/出力装置、及び記憶装置は、サーバ上のハードウェア層に配置される。サーバ上のネットワークインタフェースカード以外の部分はホストと呼ばれる。
本発明の実施形態では、仮想スイッチは、サーバのホスト上で動作し、ソフトウェアを使用して実装されるスイッチングデバイスであり、通常、SDNで使用される。一般的な仮想スイッチは、OVSを含む。
本発明の実施形態では、フローテーブルは、SDN内のデータフローを制御するために使用され、SDNフローテーブルとも呼ばれてよい。具体的には、OpenFlowプロトコルに準拠したフローテーブル又は別のプロトコルに準拠したフローテーブルが使用されてよい。フローテーブルのフローエントリは、マッチングフィールドとアクションフィールドを含む。マッチングフィールドは、データパケットを照合するために使用される。アクションフィールドは、仮想スイッチに対して、照合結果に従いデータパケットを処理するように指示するために使用される。アクションフィールドは、一致したデータパケットの処理情報、例えば、一致したデータパケットの転送、一致したデータパケットの破棄、又は一致したデータパケットのSDNコントローラへの送信を含んでよく、さらに、データパケットのルーティング情報、例えば、データパケットの宛先ポート識別子を含んでよい。本発明の実施形態では、フローテーブルのアクションフィールドは、OpenFlowプロトコルでサポートされる任意のアクションを含んでよい。これは本発明において限定されない。
本発明の実施形態では、仮想スイッチによりアクセス可能なフローテーブルセットは、少なくとも2つのフローテーブルを含み、仮想スイッチは、フローテーブルセット内のフローテーブルを使用することによりデータパケットを処理する。具体的には、1つのデータパケットは、複数のフローテーブル内の複数のフローエントリに関連付けられてよい。仮想スイッチは、ネットワークインタフェースカードにより送信されたデータパケットを受信した後、該データパケットに関連する複数のフローエントリをクエリし、該複数のフローエントリに従い該データパケットを順次処理してよい。
本発明の実施形態では、セッションテーブルは、データフローを制御するために、ネットワークインタフェースカード(英語正式名:network interface card、略称:NIC)により使用される。セッションテーブルのセッションエントリは、マッチングフィールドとアクションフィールドを含む。マッチングフィールドは、データパケットを照合するために使用される。アクションフィールドは、一致したデータパケットを処理するようにネットワークインタフェースカードに指示するために使用される。セッションエントリのアクションフィールドは、データパケットに関連付けられた複数のフローエントリのアクションフィールドに従い生成される。
本発明の実施形態では、フローテーブルセットは、通常、サーバ上の記憶装置に記憶され、セッションテーブルは、サーバ上の記憶装置に記憶されてよく、又はネットワークインタフェースカード内の記憶装置に記憶されてよい。フローテーブルセットとセッションテーブルの両方がサーバ上の記憶装置に記憶されている場合、サーバは、フローテーブルセットとセッションテーブルのそれぞれのためにサーバ上の記憶装置内に記憶空間を空ける。本発明の実施形態では、セッションテーブルがネットワークインタフェースカードに記憶される例が説明のために使用される。当業者は、セッションテーブルがサーバ上の記憶装置に記憶される場合を直接導き出し得る。
本発明の実施形態では、データフロー(英語正式名:data flow)は、同じマッチング情報を搬送する一連のデータパケットを示す。具体的には、同じデータフロー内のデータパケットの全てのマッチング情報は、データフローに対応するフローエントリのマッチングフィールド又はデータフローに対応するセッションエントリのマッチングフィールドと一致し得る。
本発明の実施形態では、例えば、ネットワークインタフェースカードとVMを直接接続するためのSR-IOV(英語正式名:single-root I/O virtualization)技術が使用される。代替として、実際の使用においては、ネットワークインタフェースカードとVMの直接接続をサポートする別の技術が使用されてよい。
本発明の実施形態では、データパケットに関連するフローエントリは、仮想スイッチがデータパケットを処理する手順で使用する必要のあるフローエントリである。フローエントリは、特にOVSの順方向フローエントリであってよい。例えば、仮想スイッチは、まず、データパケット1のマッチング情報に従い、データパケット1と一致するフローエントリ1のフローテーブル1をクエリし、フローエントリ1のアクションフィールドに記録された情報に従い、データパケット1に対して処理動作を行ってデータパケット2を取得し、次に、データパケット2のマッチング情報に従い、データパケット2と一致するフローエントリ2のフローテーブル2をクエリし、フローエントリ2のアクションフィールドに記録された情報に従い、データパケット2に対して処理動作を行う。この場合、フローエントリ1とフローエントリ2の両方は、データパケット1に関連付けられたデータパケットである。仮想スイッチが、フローエントリ1のアクションフィールドに記録された情報に従い、データパケット1に対して変更動作を行う場合、データパケット2はデータパケット1とは異なる。仮想スイッチが、フローエントリ1に従いデータパケット1に対して変更動作を行わない場合、データパケット2は、データパケット1と同じである。
データセンター内の各サーバ上のハードウェアリソースは、複数の仮想マシン、仮想スイッチ、及び仮想マシンモニタの実行をサポートする必要がある。各サーバのハードウェアリソースは限られている。データ交換タスクを実行する仮想スイッチが過剰なハードウェアリソースを占有している場合、サーバ上の仮想マシンの実行は容易に影響を受け、作業効率が低下する。サーバ上のハードウェアの負荷を軽減するために、仮想スイッチ上のサービスは、実装のためにネットワークインタフェースカードにオフロードされてよい。
OpenFlowプロトコルでは、仮想スイッチは非常に柔軟な機能を持っている。データパケットに対する異なる処理動作は、異なるフローエントリに記録される。仮想スイッチは、データパケットに関連付けられた複数のフローエントリを維持する。マスクマッチングをサポートする大規模なフローテーブルをハードウェアが実装することは困難であり、複数のフローテーブルの検索は性能に影響する。従って、仮想スイッチ上のサービスがネットワークインタフェースカードに直接オフロードされる、例えば、仮想スイッチのフローテーブルがネットワークインタフェースカードに直接コピーされる場合、大量のフローテーブルがネットワークインタフェースカードの過剰な負荷を引き起こし得る。その結果、最適化は達成できない。
本発明の実施形態では、データパケットに関連する複数のフローエントリのアクションフィールドは、1つのセッションエントリのアクションフィールドに結合され、データパケットを処理する機能は、実装のためにネットワークインタフェースカードにオフロードされる。ネットワークインタフェースカードは、ネットワークインタフェースカードがデータパケットに一致する1つのセッションエントリをクエリするならば、データパケットに対する処理動作を実行することができる。その結果、サーバ上のハードウェアリソースが節約され、データパケット処理手順が簡略化される。
図1は、本発明の一実施形態によるSDNアーキテクチャの概略図である。例えば、集中型SDNコントローラが図1で使用される。実際には、代替として、SDNコントローラは、分散方式で各サーバに配置されてよい。
各ホストが動作すると、ホストのハードウェア層は、ソフトウェア層における仮想スイッチ及び複数の仮想マシンの実行をサポートする。各サーバにおいて、ホストはネットワークインタフェースカードへの通信接続を確立する。ホストは、ネットワークインタフェースカードを使用して外部ネットワークと通信する。例えば、ネットワークインタフェースカードは、まず外部ネットワークからデータパケットを取得し、次にホスト上で動作しているVMにデータパケットを送信する。ホスト上で動作するVMにより外部ネットワークに送信されたデータパケットは、ネットワークインタフェースカードに送信され、ネットワークインタフェースカードを使用して外部ネットワークに送信される。
以下は、仮想スイッチの機能がネットワークインタフェースカードにオフロードされるとき、及び仮想スイッチの機能がネットワークインタフェースにオフロードされないときの、データ処理手順への影響を示すための例として、サーバ200及びサーバ300を使用する。
図2に示すように、仮想スイッチの機能がネットワークインタフェースカードにオフロードされない場合、外部ネットワークからデータパケットを受信した後、サーバ200に所属するデータパケットの宛先が決定された場合、サーバ200内のネットワークインタフェースカードは、仮想スイッチにデータパケットを送信する。この場合、仮想スイッチは、フローテーブルセット内のフローテーブルとデータパケットを照合し、一致したフローエントリの指示に従いデータを処理し、次に、処理されたデータを仮想スイッチに接続された宛先VMに送信する。
前述のデータパケット処理手順から、データ処理プロセスにおける主な実行圧力が仮想スイッチに集中していることが分かる。仮想スイッチの実行は、サーバ上のハードウェア層のリソースに依存する。仮想スイッチにより占有されるプロセッサ及び記憶装置リソースが多いほど、VMが実行に使用できるサーバ上のリソースが少なくなる。しかし、仮想スイッチにより占有可能なハードウェア層のリソースの上限が指定された場合、データパケットトラフィックが増加するにつれて、仮想スイッチの性能を保証することは困難になる。
図3に示すように、本発明の実施形態で提供されるデータ処理手順では、外部ネットワークからデータパケットを受信した後、サーバ300上でデータパケットの宛先VMが実行すると決定された場合、サーバ300内のネットワークインタフェースカードは、データパケットと一致するセッションエントリをセッションテーブルから検索し、データパケットと一致するセッションエントリの指示に従いデータを処理し、次に処理されたデータをネットワークインタフェースカードに接続された宛先VMに送信する。
セッションエントリのアクションフィールドは、データパケットに一致する複数のフローエントリのアクションフィールドの組み合わせから得られる。ネットワークインタフェースカードが、受信したデータパケットに一致するセッションエントリを見付けない場合、ネットワークインタフェースカードは、仮想スイッチにデータパケットを送信する。仮想スイッチは、データパケットに一致する複数のフローエントリをクエリし、複数の見付かったフローエントリに従いデータパケットを処理し、ネットワークインタフェースカードに、データパケットに一致するフローエントリに従い生成された処理情報を送信する。
仮想スイッチが、データパケットに一致するフローエントリを見付けない場合、仮想スイッチは、SDNコントローラに対して、当該データパケットに対応するフローエントリを取得する要求を送信し、SDNコントローラから取得した複数のフローエントリに対応するデータパケットを処理し、取得したフローエントリに従い生成された処理情報をネットワークインタフェースカードに送信する。
ネットワークインタフェースカードは、後で使用するために、処理情報に従い、データパケットのマッチング情報に一致するセッションエントリのアクションフィールドを生成する。
上記のデータパケット処理手順から、本願で提供されるデータ処理手順において、データパケット処理中の実行圧力の一部がネットワークインタフェースカードに転送されることが分かる。ハードウェアデバイスとして、ネットワークインタフェースカードは、高い処理効率を有するだけでなく、実行中にハードウェア層で他のリソースを占有する必要もない。さらに、本願では、複数のフローエントリに従い仮想スイッチにより実行されるデータの処理情報は、1つのセッションエントリに記録される。その結果、処理手順が簡略化され、ネットワークインタフェースカードは、1つのセッションエントリのみで一致するデータパケットを処理することができる。
例えば、図3のサーバ300上の全てのVMは、ネットワークインタフェースカードに接続されてよいことに留意されたい。実際には、代替として、一部のVMのみがネットワークインタフェースカードに接続されてよく、他のVMは仮想スイッチに接続される。具体的には、VM構成方法は、全てのVMがネットワークインタフェースカードに接続される必要がある方法に限定されない。
図4は、本発明の一実施形態によるサーバ300のハードウェアの概略構造図である。仮想マシン及び仮想スイッチは、サーバ300上で実行する。
図4に示すように、サーバ300は、プロセッサ301を含み、プロセッサ301は、システムメモリ302に接続される。プロセッサ301は、中央処理装置(CPU)、グラフィックス処理装置(英語正式名:graphics processing unit、略称:GPU)、デジタル信号プロセッサ(英語正式名:digital signal processor、略称:DSP)、又は別の形態の集積回路であってよい。
サーバ300はさらに、ネットワークインタフェースカード303を含む。ネットワークインタフェースカード303は、サーバ300上の仮想マシンと外部ネットワークとの間の通信を実装するように構成される。
バス307は、サーバ300の構成要素間で情報を送信するように構成される。バス307は、有線接続方式又は無線通信方式を使用してよい。これは、本願において限定されない。バス307は、さらに、入力/出力インタフェース304、セカンダリメモリ(英語:secondary storage)305、及び通信インタフェース306に接続されてよい。
入力/出力インタフェース304は、入力情報を受信し、動作結果を出力するように構成された入力/出力装置に接続される。入力/出力装置は、マウス、キーボード、ディスプレイ、CD-ROMドライブなどであってよい。
セカンダリメモリ305の記憶媒体は、(フロッピーディスク、ハードディスク、磁気テープのような)磁気媒体、(光ディスクのような)光媒体、(固体ディスク(英語正式名:solid state disk、略称:SSD)のような)半導体媒体、などであってよい。
通信インタフェース306は、例えば、限定ではないが、トランシーバのようなトランシーバ機器を使用して、他の装置又は通信ネットワークと通信する。通信インタフェース306及び通信ネットワークは、有線又は無線方式で相互接続されてよい。通信ネットワークは、インターネット、イントラネット(英語:intranet)、ローカルエリアネットワーク(英語正式名:local area network、略称:LAN)、ワイドエリアネットワーク(英語正式名:wide area network、略称:WAN)、ストレージエリアネットワーク(英語正式名:storage area network、略称:SAN)など、又はこれらのネットワークの任意の組み合わせであり得る。
本発明の本実施形態のいくつかの特徴は、システムメモリ302内のソフトウェアコードを実行することにより、プロセッサ301により実施/サポートされてよい。システムメモリ302は、いくつかのソフトウェア、例えば、(Darwin、RTXC、Linux、UNIX、OS X、Windows、又は(VxWorksのような)組み込みオペレーティングシステムのような)オペレーティングシステム、アプリケーションプログラム、及びデータ処理モジュールを含み得る。
動作状態では、サーバは少なくとも1つのVMと仮想スイッチを実行する。本発明の実施形態で提供されるデータ処理方法においてホスト側で方法を実装するために使用されるプログラムコードは、システムメモリ302に格納され、プロセッサ301により実行される。動作状態では、ネットワークインタフェースカードは、本発明の実施形態で提供されるデータ処理方法において、ネットワークインタフェースカード側で方法を実行する。
本願は、さらに、データ処理方法を提供する。前述のSDNアーキテクチャのサーバは、実行時間において方法を実行する。本方法の概略フローチャートは図5に示される。
図5は、本発明の一実施形態によるデータ処理方法500のフローチャートである。サーバ300は、実行時間において方法500を実行する。図5に示すように、方法500は、以下のステップを含む。
S502。ネットワークインタフェースカードは、第1データパケットを受信する。
第1データパケットは、マッチング情報と第1データパケットのペイロードを搬送する。第1データパケットは、サーバ上で実行している仮想マシンにより外部ネットワークに送信されるデータパケット、又は外部ネットワークによりサーバ上で実行している仮想マシンに送信されたデータパケットであってよい。
任意で、ステップS502の前に、方法500は、さらに、仮想マシンとネットワークインタフェースカードを相互接続するためのポートを構成するステップを含む。本発明の本実施形態では、ネットワークインタフェースカードと仮想マシンは、ネットワークインタフェースカードポートを使用して相互接続される。ネットワークインタフェースカードポートは、SR-I/OV技術を使用して、ホスト上で動作しているVMに接続されてよい。ネットワークインタフェースカードポートは、SR-I/OV技術で定義された仮想機能(英語正式名:virtual function、略称:VF)ポートであってよい。本発明の本実施形態では、代替として、ネットワークインタフェースカード及び仮想マシンは、別の技術を使用することにより相互接続されてよい。ネットワークインタフェースカードと仮想マシンを相互接続する技術は、本発明の本実施形態では限定されない。あるいは、ネットワークインタフェースカードは、仮想マシン装置キュー(英語正式名:Virtual Machine Device Queues、略称:VMDq)機能をサポートするネットワークインタフェースカードであってよい。サーバにより、仮想マシンとネットワークインタフェースカードを相互接続するためのポートを構成するステップは、以下を含み得る。
S5001。サーバのホストは、仮想スイッチポートの構成情報に従い、仮想スイッチ上に少なくとも1つの仮想スイッチポートを確立する。ここで、各仮想スイッチポートは、ホスト上で動作している1つのVMに対応する。
S5002。ホストは、ネットワークインタフェースカードポートの構成情報を生成し、サーバのネットワークインタフェースカードにネットワークインタフェースカードポートの構成情報を送信する。
具体的には、ホストが仮想スイッチポートの構成情報を取得し、仮想スイッチポートの構成情報をホスト上で動作するネットワークインタフェースカードドライバに送信する。ネットワークインタフェースカードドライバは、仮想スイッチポートの構成情報に従いネットワークインタフェースカードポートの構成情報を生成し、ネットワークインタフェースカードポートの構成情報をネットワークインタフェースカードに送信する。仮想スイッチポートの構成情報の機能は、ネットワークインタフェースカードポートの構成情報の機能と同様である。ネットワークインタフェースカードドライバは、ネットワークインタフェースカードドライバがネットワークインタフェースカードと通信する仕様に主に準拠するために、仮想スイッチポートの構成情報をネットワークインタフェースカードポートの構成情報に変換する。
S5003。ネットワークインタフェースカードは、ネットワークインタフェースカードポートの構成情報に従い、ネットワークインタフェースカード上の少なくとも1つのネットワークインタフェースカードポートを設定する。ここで、各ネットワークインタフェースカードポートは、ホスト上で動作する1つのVMに接続される。
ネットワークインタフェースカードポートは、具体的に、SR-I/OV技術で定義された仮想機能(英語正式名:virtual function、略称:VF)ポートであってよい。
特定のアーキテクチャ図が図6に示されている。仮想スイッチの各ポートは、ネットワークインタフェースカードの1つのVFに対応し、ネットワークインタフェースカードと仮想マシンは、VFを使用して相互接続される。
ステップS5001~S5003は任意的ステップであり、ステップS5001~S5003は仮想スイッチ及びネットワークインタフェースカードの構成プロセスである。ステップS5001~S5003は、ステップS5001~S5003の後続のステップが実行される前に、毎回実行される必要はない。構成プロセスを通じて、ホスト上で動作するVMは、ネットワークインタフェースカードポートを使用してネットワークインタフェースカードに接続される。
VSポートは、VMと1対1の対応にあり、VMは、ネットワークインタフェースカードポートと1対1の対応にあるため、VSポートは、ネットワークインタフェースカードポートと1対1の対応にある。ステップS5001~S5003を実行するプロセスにおいて、VSポートとネットワークインタフェースカードポートとの間の対応は、仮想スイッチに記憶され、及び/又はVSポートとネットワークインタフェースカードポートとの間の対応は、ネットワークインタフェースカードに記憶される。
任意に、方法500は、さらに、仮想スイッチによりネットワークインタフェースカードと通信するために使用される少なくとも1つのキューを構成するステップを含む。ここで、キューは、仮想スイッチにより、ネットワークインタフェースカードから受信したデータパケットをネットワークインタフェースカードに返すために使用される。キュー構成は、複数の形態である。例えば、仮想スイッチは、1つのキューを使用してネットワークインタフェースカードと通信し、仮想スイッチは、ネットワークインタフェースカードに送信する必要がある全てのデータパケットをキューに送信する。別の例では、仮想スイッチは、n個のキューを使用することによりネットワークインタフェースカードと通信する。ここで、nは、ホスト上で動作するVMの数であり、各キューは、1つのVMに対応する。キュー構成の形態は、本発明の本実施形態では限定されない。
S504。ネットワークインタフェースカードは、第1データパケットのマッチング情報に従い、セッションテーブルを検索し、第1データパケットに一致するセッションエントリがあるかどうかを決定する。第1データパケットに一致するセッションエントリが存在する場合には、ステップS506が実行され、又は第1データパケットに一致するセッションエントリが存在しない場合には、ステップS508が実行される。
セッションエントリは、マッチングフィールドとアクションフィールドを含む。マッチングフィールドは、データパケットのマッチング情報を照合するために使用される。アクションフィールドに記録された情報は、セッションエントリに一致するデータパケットを処理するようにネットワークインタフェースカードに指示するために使用される。データパケットのマッチング情報は、データパケットの送信元情報及び/又はデータパケットの宛先情報を含んでよい。送信元情報及び宛先情報は、インターネットプロトコル(英語正式名:Internet Protocol、略称:IP)アドレス、媒体アクセス制御(英語正式名:Media Access Control、略称:MAC)アドレス、ポート番号(例えば、伝送制御プロトコル(英語正式名:Transmission Control Protocol、略称:TCP)ポート又はユーザデータグラムプロトコル(英語正式名:User Datagram Protocol、略称:UDP)ポート)、又はデータの送信元及び宛先を識別するために使用される他の同様の情報を含んでよい。
一般に、データパケットのマッチング情報を識別するために、IP 5タプル(送信元IP+送信元ポート+プロトコルタイプ+宛先IP+宛先ポート)又はIPトリプレット(送信元IP+宛先IP+プロトコルタイプ)が使用されてよい。マッチング情報は、例えば、イングレスインタフェース、仮想ローカルエリアネットワーク(英語正式名:Virtual Local Area Network、略称:VLAN)、テナントID、又はMACアドレスなど、IPパケットが属する他の特徴アイテムも含んでよい。
本発明の一実施形態では、システム内に複数のプロトコルが同時に存在する場合、異なるタイプのプロトコルに従い構成されるアドレスは同一であってよい。例えば、VM1はIPV4プロトコルに属し、VM2はIPV6プロトコルに属する。この場合、2つのVMは同じIPアドレスを有してよい。この場合、IPアドレスがVM1又はVM2に属するか、つまり、データパケットを送信するために使用されるべき特定のプロトコルを決定するために、プロトコルタイプ情報が追加される必要がある。例えば、セッションは、IPプロトコル(IPV4又はIPV6)、TCPプロトコルなどを追加することにより識別され得る。
本発明の本実施形態の実装プロセスにおいて、ネットワークインタフェースカードがスイッチング機能のみを実行するように構成されている場合、MAC情報は、セッションテーブルが構成されるときに使用されてよい。ネットワークインタフェースカードがルーティング機能を実行するように構成されているとき、MAC情報、IP情報、及びレイヤ3プロトコルタイプがセッションテーブルが構築されるときに使用されてよい。ネットワークインタフェースカードが上位レイヤのネットワーク機能(ファイアウォール、ネットワークアドレス変換(英語正式名:Network Address Translation、略称:NAT)など)を実行するように構成されているとき、MAC、IP、ポート、及びレイヤ3又は4のプロトコルタイプが、セッションテーブルが構築されるときに使用されてよい。
本発明の本実施形態では、セッションエントリのマッチングフィールドに記録された情報は、セッションエントリに一致するデータパケット内で搬送されたマッチング情報の一部又は全部のフィールドであってよい。あるいは、セッションエントリのマッチングフィールドに記録された情報は、データパケット内で搬送されるマッチング情報の一部又は全部のフィールドに従い処理が実行された後に得られる情報であってよい。例えば、セッションエントリのマッチングフィールドに記録された情報は、セッションエントリに一致するデータパケット内で搬送されたマッチング情報のハッシュ演算結果であってよい。セッションエントリのマッチングフィールドとデータパケット内で搬送されるマッチング情報との間の対応は、本発明の本実施形態では限定されない。
データパケットを受信した後、ネットワークインタフェースカードは、データパケット内で搬送されたマッチング情報に従いセッションテーブルをクエリする。具体的には、ネットワークインタフェースカードは、マッチング情報内で搬送されるフィールドに従いセッションエントリをクエリするか、又はマッチング情報内で搬送されるフィールドに従い処理を行った後に得られる結果(例えば、ハッシュ演算)に従いセッションエントリをクエリしてよい。
第1データパケットのマッチング情報がセッションテーブルのセッションエントリと一致しない場合、第1データパケットは、第1データパケットが位置するデータフローの第1データパケットであるか、又は第1データパケットは、データフローの第1データパケットではなく、データフローに対応するセッションエントリがセッションテーブルから削除される。
S506。ネットワークインタフェースカードは、第1データパケットに一致するセッションエントリに従い、第1データパケットを処理する。
より具体的には、ネットワークインタフェースカードは、第1データパケットに一致するセッションエントリのアクションフィールドに記録された情報に従い、第1データパケットを処理する。
第1データパケットに一致するセッションエントリがセッションテーブルに存在する場合、ネットワークインタフェースカードは、データパケットを受信した後に、セッションエントリのアクションフィールドに従いデータパケットを直接処理してよく、データパケットを処理のために仮想スイッチに報告する必要がない。その結果、データ処理手順が簡略化され、仮想スイッチがサーバ上のより少ないハードウェアリソースしか占有しない。
S508。ネットワークインタフェースカードは、セキュリティグループルールが第1データパケットを通過させるかどうかをクエリする。セキュリティグループルールが第1データパケットを通過させる場合、ステップS512が実行されるか、又はセキュリティグループルールが第1データパケットを通過させない場合、ステップS510が実行される。
S508の前に、方法500は、さらに、ネットワークインタフェースカードにより、第1データパケットに一致する第1セッションエントリを作成し、第1データパケットのマッチング情報に従い、第1データパケットに一致する第1セッションエントリのマッチングフィールドを作成するステップを含んでよい。ネットワークインタフェースカードは、第1セッションエントリのマッチングフィールドに、第1データパケットのマッチング情報の一部又は全部のフィールドを書き込んでよく、又は、ネットワークインタフェースカードは、第1データパケットのマッチング情報の一部又は全部のフィールドの処理結果を第1セッションエントリのマッチングフィールドに書き込んでよい。第1セッションエントリのマッチングフィールドの形式は、本発明の本実施形態では限定されない。第1セッションエントリのアクションフィールドに関する情報は、最初にヌルであってよく、又は第1データパケットを仮想スイッチに報告していてよい。
特定の実装プロセスにおいて、セキュリティグループルールは、ネットワークインタフェースカードチップ内又はサーバのホスト上で確立され得る。ホスト上でセキュリティグループルールが確立された場合、第1データパケットに一致するセキュリティグループルールを検索した後、ホストは、第1データパケットに一致するセキュリティグループルールをネットワークインタフェースカードに送信する。セキュリティグループルールは、ホスト又はVM間のアクセス独立を実装するために、セキュリティフィルタリングルールを実装するために使用される。
S510。ネットワークインタフェースカードは、第1データパケットを破棄する。
セキュリティグループルールが第1データパケットを通過させない場合、ネットワークインタフェースカードは第1データパケットを破棄する。方法500は、さらに、作成された第1セッションエントリを削除するステップ、又は第1セッションテーブルのエージング時間を比較的短い時間に設定して、第1セッションテーブルを迅速にエージングするステップを含んでよい。
S512。ネットワークインタフェースカードは、ホストに第1データパケットを送信する。
具体的には、ネットワークインタフェースカードは、ホスト上で動作する仮想スイッチに第1データパケットを送信する。セッションテーブルに第1データパケットに一致するセッションエントリが存在せず、セキュリティグループルールが第1データパケットを通過させる場合、ネットワークインタフェースカードは、第1データパケットを、処理のためにホスト上で動作している仮想スイッチに送信する。
S514。ホストは、第1データパケットに関連する少なくとも2つのフローエントリを取得する。
具体的には、ホスト上で動作する仮想スイッチは、第1データパケットに関連する少なくとも2つのフローエントリを取得してよい。
OpenFlowプロトコルでは、仮想スイッチは非常に柔軟な機能を持っている。データパケットに対する異なる処理動作は、異なるフローエントリに記録される。一般に、仮想スイッチは、1つのデータパケットに関連付けられた複数のフローエントリを維持する。本発明の本実施形態では、データパケットに関連するフローエントリは、仮想スイッチがデータを処理するプロセスにおいて使用される必要があるフローエントリである。本発明の本実施形態では、送信元から宛先へデータパケットを送信するプロセスにおいて、データパケットは変化してよい。しかしながら、説明を容易にするために、本発明の本実施形態では、第1データパケット又は第2データパケットのような用語が、データパケットの全ライフサイクルを記述するために使用される。例えば、仮想スイッチは、データパケット2を取得するために、フローエントリ1のアクションフィールドに従い、データパケット1に対して変更動作を行う。この場合、データパケット2はデータパケット1とは異なる。本発明の本実施形態の説明では、データパケット1及びデータパケット2の両方は、依然として第1データパケット又は第2データパケットと呼ばれる。
第1データパケットに一致するフローエントリが存在しない場合、第1データパケットは、第1データパケットが位置するデータフローの第1データパケットであるか、又は第1データパケットは、データフローの第1データパケットではなく、データフローに対応するフローエントリが削除される。この場合、第1データパケットを取得した後、仮想スイッチは、第1データパケット又は第1データパケットのマッチング情報をSDNコントローラに送信し、第1データパケットに従いSDNコントローラにより生成される、データフローに対応するフローエントリを受信してよい。
S516。ホストは、第1データパケットに関連する少なくとも2つの取得されたフローエントリに従い第1データパケットを処理する。
より具体的には、ホスト上で動作する仮想スイッチは、第1データパケットに関連する少なくとも2つの取得されたフローエントリに従い第1データパケットを処理してよい。第1データパケットに関連付けられた少なくとも2つのフローエントリに従い第1データパケットを処理した後、仮想スイッチは、処理されたデータパケット及び処理結果をネットワークインタフェースカードに転送し、ネットワークインタフェースカードは、処理されたデータパケット及び処理結果を転送する。
S518。ホストは処理情報をネットワークインタフェースカードに送信する。
より具体的には、ホスト上で動作する仮想スイッチは、処理情報をネットワークインタフェースカードに送信してよい。
ホストは、第1データパケットに関連する少なくとも2つのフローエントリを取得した後、少なくとも2つのフローエントリに従い処理情報を生成する。処理情報は、少なくとも2つのフローエントリに従い、第1データパケットに対して仮想スイッチにより実行される処理動作を示すために使用される。本発明の本実施形態では、少なくとも2つのフローエントリのアクションフィールドに記録された情報が、第1データパケットに対する処理動作を実行することである場合、処理情報は、少なくとも2つのフローエントリのアクションフィールドに記録された情報であってよい。少なくとも2つのフローエントリのうち第1フローエントリのアクションフィールドに記録された情報が第1データパケットを処理しないことである場合、例えば、第1フローエントリのアクションフィールドに記録された情報が次のレベルのフローテーブルを検索することである場合、処理情報は第1フローエントリのアクションフィールドに記録された情報を搬送しなくてよい。特定の実装において、処理情報は、少なくとも2つのフローエントリのアクションフィールドに記録された情報を含んでよく、又は少なくとも2つのフローエントリのアクションフィールドに記録された情報が結合された後に得られた情報であってよい。
S520。ネットワークインタフェースカードは、ホストにより送信された処理情報に従い、第1セッションエントリのアクションフィールドを生成する。
第1セッションエントリは、マッチングフィールドとアクションフィールドを含み、マッチングフィールドは、第1データパケットのマッチング情報と照合するために用いられる。第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するようにネットワークインタフェースカードに指示するために使用され、すなわち、第1データパケットが位置するデータフローの別のデータパケットを処理するようにネットワークインタフェースカードに指示するために使用される。
ステップS520の後、ネットワークインタフェースカードが、第2データパケットを受信し、第2データパケットと第1データパケットが同じデータフローに属する場合、すなわち、第2データパケットが第1データパケットと同じマッチング情報を搬送する場合、ネットワークインタフェースカードは、第2データパケット内で搬送されるマッチング情報に従い、第2データパケットに一致する第1セッションエントリをクエリし、第1セッションエントリに従い第2データパケットを処理する。より具体的には、ネットワークインタフェースカードは、第1セッションエントリのアクションフィールドに従い第2データパケットを処理する。
任意で、方法500は、さらに、ネットワークインタフェースカードにより、第1セッションエントリのアクションフィールドに、第1データパケットに一致するセキュリティグループルールを書き込むステップを含む。ネットワークインタフェースカードは、第1セッションエントリに従い、一致したデータパケットに対して複数の処理動作を実行してよい。その結果、データパケット処理手順が簡略化される。セキュリティグループモジュールが、第1データパケットのセキュリティグループルールを変更する場合、セキュリティグループモジュールは、さらに、ネットワークインタフェースカードに変更命令を送信してよい。ここで、命令は、第1データパケットのセキュリティグループルールに対してセキュリティグループモジュールにより実行される変更を示すために使用される。ネットワークインタフェースカードは、変更命令に従い、第1セッションエントリのアクションフィールドのセキュリティグループルールのレコードを変更する。
方法500は、さらに、セキュリティグループルールがステートフルファイアウォール機能を実装するために使用され、ファイアウォール機能の処理結果が、第1データパケットの送信元と宛先との間の順方向データパケット及び逆方向データパケットの両方を通過させることである場合、ネットワークインタフェースカードは、第1データパケットのマッチング情報に従い第2セッションエントリを作成し、第1データパケットのマッチング情報に従い第2セッションエントリのマッチングフィールドを生成する。第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリであり、第1データパケットの宛先アドレスから第1データパケットの送信元アドレスへ開始されたパケットのセキュリティ動作も通過していることを示す。
ネットワークインタフェースカードは、第1データパケットのマッチング情報に従い、第1データパケットの宛先から第1データパケットのソースへの逆方向データパケットのマッチング情報を取得してよい。第1データパケットの逆方向データフローの送信元情報及び宛先情報は、それぞれ第1データパケットの宛先情報及び送信元情報である。第2セッションエントリのマッチングフィールドは、第1セッションエントリを構成するために使用されるものと同様の方法に従い構成されてよい。詳細は、ここでは再度説明しない。
第2セッションエントリのアクションフィールドは、ホストにアップロードするよう設定され、又はヌルに設定されてよい。続いて、第2セッションテーブルのアクションフィールドは、逆方向データパケットに対して仮想スイッチにより実行される実際の処理に従い更新される。特定の解決手順は、前述の説明の第1セッションエントリのアクションフィールドを構成する手順と同様である。
代替として、第1セッションエントリと第2セッションエントリは1つのレコードに結合されてよい。アクションフィールドは、順方向フィールドと逆方向フィールドの2つのフィールドに分類される。例えば、VMがデータパケットを送信する方向が順方向に設定されてよく、データパケットがネットワーク側からである方向が逆方向に設定されてよい。送信元ノード情報と宛先ノード情報は、逆方向テーブルがクエリされるときに交換される。
任意に、方法500は、さらに、仮想マシン仮想スイッチが、第1データパケットのマッチング情報に一致する少なくとも2つのフローエントリのうちの任意の1つを変更した後に、仮想スイッチにより、変更命令をネットワークインタフェースカードに送信するステップであって、変更命令は、フローエントリに対して仮想スイッチにより実行される変更動作を示すために使用される、ステップと、ネットワークインタフェースカードにより、変更命令に従い第1セッションエントリを変更するステップと、を含む。
サーバは、リンクリスト技術に従い、セッションエントリを仮想スイッチのフローエントリにリンクしてよい。仮想スイッチのエントリが削除又は変更されると、ホストは、セッションテーブルを同期的に削除又は変更するようにネットワークインタフェースカードに指示する。
別の実装では、フローエントリとセッションエントリはそれぞれインデックスIDを持っている。ホストは、フローエントリインデックスIDとセッションエントリインデックスIDの間のマッピング関係を確立する。ホストは、仮想スイッチのフローテーブルの更新状態を監視し、フローエントリが更新されていることが分かると、ネットワークインタフェースカードに通知する。ネットワークインタフェースカードは、フローエントリの更新動作に従いセッションエントリを更新する。
セキュリティグループルールを更新する方法は、フローエントリ情報を更新及び管理する方法と同様である。詳細は、ここでは再度説明しない。
任意で、方法500は、さらに、プリセット時間閾値を超える期間内に第1セッションエントリがアクセスされないとき、ネットワークインタフェースカードにより、第1セッションエントリを削除し、仮想スイッチに削除命令を送信するステップと、仮想スイッチにより、削除命令に従い、第1データパケットのマッチング情報に一致する少なくとも2つのフローエントリを削除するステップと、を含む。
OVSフローテーブルはエージングメカニズムを有するので、長期間アクセスされないフローエントリは自動的にエージングされる。フローエントリがエージングされた後に、セッションエントリは削除される。この場合、セッションテーブルは継続的に再作成及び削除される必要がある。本発明の本実施形態では、ホストは、OVSフローテーブルのエージングを設定してよく、極端に長いエージング時間を設定し、又はOVSフローテーブルがエージングされないように設定してよい。エージングメカニズムがセッションエントリについて設定されてよい。セッションエントリがエージングされた後、OVSはセッションエントリに対応するフローエントリをエージングするように指示されてよい。
本発明の本実施形態では、TCP SYN(英語正式名:synchronous)攻撃(リンク確立要求ができるだけ多く送信される攻撃)を防止するために、ネットワークインタフェースカードは、TCPリンク確立要求に対して、TCP要求から、TCPリンク確立要求がリンク確立要求であることを認識し、そのような要求に対して、最初に、極めて短いエージング時間(例えば、5秒未満)を設定してよい。エントリが短時間でアクセスされない場合、そのエントリはエージングされ、削除される。このレコードは、セッションテーブルが攻撃されるのを防ぐために、できるだけ早く削除される。SYN攻撃はTCPプロトコルの欠陥を利用し、大量のハーフオープン接続要求がCPU資源とメモリ資源を消費するために送られる。新しいパケットがあると、新しいセッションレコードがセッションテーブルに作成される。古いレコードが削除されていない場合は、全ての領域が占有され、従って新しいレコードが作成できない。
SYNは、接続がTCP/IPで確立されるときに使用されるハンドシェイク信号である。クライアントとサーバの間に通常のTCPネットワーク接続が確立されると、クライアントは最初にSYNメッセージを送信し、サーバはメッセージが受信されたことを示すためにSYN+ACK確認応答を使用し、最後にクライアントはACKメッセージで応答する。このようにして初めて、クライアントとサーバの間に信頼できるTCPコネクションが確立でき、クライアントとサーバの間でデータを送信できる。TCPコネクションで3方向ハンドシェイクが完了し、コネクション確立状態が定常状態になった後、エージング時間は長いエージング時間(例えば、30分)に設定されてよい。
UDPアプリケーションでは、一方向パケットのためにセッションテーブルが確立されると、短いエージング時間が設定され、応答パケットが受信されると長いエージング時間に変更される。
また、TCPリンク削除要求では、ネットワークインタフェースカードは、要求が削除要求であることが分かると、空間占有を回避するために、ネットワークインタフェースカードはセッションエントリを削除してよい。
図7は、本発明の一実施形態によるデータ処理方法700のフローチャートである。サーバ300は、実行時間において方法700を実行する。方法700では、ネットワークインタフェースカードは、仮想スイッチからの処理情報に従い、第1データパケットのセキュリティグループルールをクエリする必要がある。図7に示すように、方法700は、以下のステップを含む。
S702。ネットワークインタフェースカードは、第1データパケットを受信する。
S704。ネットワークインタフェースカードは、第1データパケットのマッチング情報に従い、セッションテーブルを検索し、第1データパケットに一致するセッションエントリがあるかどうかを決定する。第1データパケットに一致するセッションエントリが存在する場合は、ステップS706を実行し、又は、第1データパケットに一致するセッションエントリが存在しない場合は、ステップS708を実行する。
S706。ネットワークインタフェースカードは、第1データパケットに一致するセッションエントリに従い、第1データパケットを処理する。
ステップS702~S706の詳細な説明については、ステップS502~S506を参照のこと。詳細は、ここでは再度説明しない。
S708。ネットワークインタフェースカードは、ホストに第1データパケットを送信する。
S708の前に、方法700は、さらに、ネットワークインタフェースカードにより、第1データパケットに一致する第1セッションエントリを作成し、第1データパケットのマッチング情報に従い、第1データパケットに一致する第1セッションエントリのマッチングフィールドを作成するステップを含んでよい。ネットワークインタフェースカードは、第1データパケットのマッチング情報の一部又は全部のフィールドを第1セッションエントリのマッチングフィールドに書き込んでよい。代替として、ネットワークインタフェースカードは、第1データパケットのマッチング情報の一部又は全部のフィールドの処理結果を、第1セッションエントリのマッチングフィールドに書き込んでよい。第1セッションエントリのマッチングフィールドの形式は、本発明の本実施形態では限定されない。第1セッションエントリのアクションフィールドは、最初にヌルであるか、仮想スイッチに報告していてよい。
S710。ホストは、第1データパケットに関連する少なくとも2つのフローエントリを取得する。
S712。ホストは、第1データパケットに関連する少なくとも2つの取得されたフローエントリに従い第1データパケットを処理する。
S714。ホストは処理情報をネットワークインタフェースカードに送信する。
ステップS708~S714の詳細な説明については、ステップS512~S518を参照のこと。詳細は、ここでは再度説明しない。
S716。ネットワークインタフェースカードは、セキュリティグループルールが第1データパケットを通過させるかどうかをクエリする。セキュリティグループルールが、第1データパケットが通過させる場合、ステップS718を実行し、又はセキュリティグループルールが、第1データパケットが通過させない場合、ステップS720を実行する。
ネットワークインタフェースカードは、仮想スイッチにより送信された処理情報に従い、第1データパケットのセキュリティグループルールをクエリする。特定の実装プロセスにおいて、セキュリティグループルールは、ネットワークインタフェースカードチップ内又はサーバのホスト上で確立され得る。
S718。ネットワークインタフェースカードは、ホストにより送信された処理情報に従い、第1セッションエントリのアクションフィールドを生成する。
ステップS718の詳細な説明については、ステップS520を参照のこと。詳細は、ここでは再度説明しない。
S720。ネットワークインタフェースカードは、第1データパケットを破棄する。
セキュリティグループルールが第1データパケットを通過させない場合、ネットワークインタフェースカードは第1データパケットを破棄する。
セキュリティグループルールが第1データパケットを通過させない場合、方法700は、さらに、作成された第1セッションエントリを削除するステップを含んでよい。
方法700では、ネットワークインタフェースカードは、仮想スイッチにより送信される処理情報に従い、第1データパケットの処理情報をクエリする必要がある。方法700の詳細な説明の一部については、方法500を参照のこと。
一例が、図6のアーキテクチャを参照して説明するために使用される。データパケットのマッチング情報はIP 5タプルであり、VM-1のIPアドレスは12.5.3.1であり、VM-1はVF1を用いてネットワークインタフェースカードに接続されると仮定する。VM-1が、IPアドレスが52.5.13.5の外部サーバにポート2351を使用してアクセスする場合、VM-1のアクセス手順は以下のとおりである。
VMは最初にTCP SYNパケットを開始し、パケットはネットワークインタフェースカードのVF1を使用してネットワークインタフェースカードに直接送信される。
ネットワークインタフェースカードは、IP 5タプル12.5.3.1:2351+TCP+52.5.13.5:80に従いセッションエントリを検索する。データフローの第1データパケットについては、ネットワークインタフェースカードはセッションエントリを見付けない。
ネットワークインタフェースカードは、セキュリティグループテーブルをクエリする。セキュリティグループ構成ルールは、12.5.3.1が52.5.13.5にアクセスできることを前提としている。
ネットワークインタフェースカードは、ホストにデータパケットを送信する。仮想スイッチは、データパケットに一致する少なくとも2つのフローエントリをクエリする。少なくとも2つのフローエントリに従う処理結果は、データパケットを外部ポートNET1に転送することである。
ホストは処理情報をネットワークインタフェースカードに送信する。ネットワークインタフェースカードは、マッチングフィールドが12.5.3.1:2351+TCP+52.5.13.5:80である順方向セッションエントリを作成する。順方向セッションエントリのアクションフィールドは、データパケットを外部ポートNET1に転送することである。
セキュリティグループルールが順方向データパケットと逆方向データパケットの両方を通過させる場合、ネットワークインタフェースカードはさらに、マッチングフィールドが52.5.13.5:80+TCP+12.5.3.1:2351である逆方向セッションエントリを作成してよい。逆方向セッションエントリのアクションフィールドがヌルである(又はホストにアップロードされている)。代替として、順方向セッションエントリと逆方向セッションエントリは、1つのエントリであってよい。アクションフィールドは順方向アクションフィールドと逆方向アクションフィールドに分類される。順方向アクションフィールドは、データパケットを外部ネットワークインタフェースに転送するものである。逆方向アクションフィールドはヌルである。逆方向検索が実行されると、送信元のIPアドレスとポート番号、宛先のIPアドレスとポート番号が交換される。
セキュリティと攻撃防止をさらに改善するために、TCP状態がトレースされ、セッションテーブルがSYN状態とシーケンス番号を記録し(各TCP要求はシーケンス番号を有する)、エージング時間は短いエージング時間、例えば3秒である。さらに、セッションエントリは、OVSによりヒットしたフローエントリ、及びセキュリティグループによりヒットしたセキュリティグループエントリにリンクされ、OVSのフローエントリのエージングは制限される(OVSのフローエントリをエージングされないように設定するか、又は比較的長いエージング時間を設定する)。具体的には、セッションエントリとフローエントリとの間のマッピング関係がOVSで確立されてよく、セッションエントリとセキュリティグループエントリとの間のマッピング関係がセキュリティグループで確立されてよい。
ホストはデータパケットをネットワークインタフェースカードに再送信し、ネットワークインタフェースカードはネットワークポートNET1を使用してデータパケットを送出する。
外部サーバはSYN+ACKパケットで応答する。データパケットがネットワークインタフェースカードに入った後、ネットワークインタフェースカードはセッションテーブルをクエリし、逆方向セッションエントリにヒットするが、アクションフィールドはヌルである。ネットワークインタフェースカードは、転送処理のためにデータパケットをOVSに送信する。OVSは、データパケットがポート1に転送される必要があるかどうかを決定するためにフローエントリをクエリする。次に、ネットワークインタフェースカードドライバは、ポート1がVF1に対応していることを知るために、ポートとVFの間のマッピング関係をクエリする。この場合、転送結果はデータパケットをVF1に転送することであり、ホストは処理情報をネットワークインタフェースカードに送信する。処理情報は、転送結果がVF1にデータパケットを転送することを示し、ネットワークインタフェースカードは、処理情報に従い逆方向セッションエントリのアクションフィールドを更新し、VF1を使用してVM-1にパケットを送信する。
パケットを受信した後、VM-1はTCPシーケンス番号を有するACKパケットを返す。次に、ネットワークインタフェースカードは、セッションエントリのSYN状態とシーケンス番号を決定し、シーケンス番号が一致した場合、確立状態に入り、セッションエントリのエージング時間を、長いエージング時間、例えば30分に変更する。後続のTCPデータパケットについては、転送結果は、セッションテーブルをクエリすることにより直接取得でき、後続のTCPデータパケットはもはやOVSによる転送のためにホストに送信する必要がない。セッションエントリに対応するフローエントリ又はセキュリティグループルールが変更又は削除された場合、セッションエントリは、関連するインデックス関係に従い変更又は削除される。VM-1又は外部サーバがTCP終了動作を開始した場合、TCP終了状態処理が完了した後、ネットワークインタフェースカードはセッションテーブル12.5.3.1:2351+TCP+52.5.13.5:80の順方向及び逆方向エントリを削除し、セッションエントリとフローエントリ間のマッピング関係及びセッションエントリとセキュリティグループエントリ間のマッピング関係を別々に削除するようにOVS及びセキュリティグループに指示し、OVSのフローエントリをエージングするように再度許可する。
代替として、実装プロセスにおいて、データパケットを受信した後、ネットワークインタフェースカードが対応するセッションエントリを見付けない場合、ネットワークインタフェースカードは、まずOVSにデータパケットを報告し、次に、OVSにより送信された処理情報に従いセキュリティテーブルルールを検索してよい。例えば、処理結果がデータパケットをVF1に転送することである場合、ネットワークインタフェースカードは、VF1のために構成されたセキュリティグループルールをクエリし、ネットワークインタフェースカードが、データパケットが通過することを禁止されていると分かった場合、パケットを破棄し、作成されたセッションエントリを削除する。セキュリティグループチェックがVMインタフェースに対して実行される必要がない場合、セキュリティグループテーブルが先ずクエリされてよい。データパケットが通過を禁止されている場合、そのデータパケットは直接破棄され、もはや、OVSによる転送のためにホストに送信されない。
図8は、本発明の一実施形態によるネットワークインタフェースカード800のハードウェアの概略構造図である。図8に示すように、ネットワークインタフェースカード800は、プロセッサ802、メモリ804、ネットワークインタフェース806、ホストインタフェース808、及びバス8100を含む。
ホストインタフェース808は、ホストに接続するように構成される。
プロセッサ802は、ホストインタフェース808を使用してホストに第1データパケットを送信し、ホストインタフェース808を使用してホストから処理情報を受信し、処理情報は、第1データパケットに一致する少なくとも2つのフローエントリに従い、ホストにより第1データパケットに対して実行される処理動作を示すために使用され、処理情報に従い、第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い、第1セッションエントリのマッチングフィールドを生成し、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカードにより使用されるルールを記録するために使用される、ように構成される。
本発明の本実施形態におけるプロセッサ802は、任意の形態の処理ロジックであってよい。例えば、プロセッサ802は、中央処理装置、グラフィックス処理装置、デジタル信号プロセッサ(英語正式名:digital signal processor、略称:DSP)、又は別の形態の集積回路であってよい。
プロセッサ802の機能は、ハードウェア集積回路により実現されてよく、又はメモリ804に記憶されたコードを実行することにより、プロセッサにより実現されてよい。これは本発明において限定されない。
メモリ804は、第1セッションエントリを格納するように構成される。
ネットワークインタフェースカードは、さらに、ネットワークインタフェース806を含む。ネットワークインタフェース806は、外部ネットワークに接続するように構成される。プロセッサ802は、ホストインタフェース808又はネットワークインタフェース806を使用して、第2データパケットを受信するようにさらに構成される。第2データパケットは、第1データパケットと同じマッチング情報を含む。プロセッサ802は、さらに、マッチング情報に従い、第2データパケットに一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い第2データパケットを処理するように構成される。
ホストインタフェース808を使用してホストに第1データパケットを送信する前に、プロセッサ802は、さらに、ホストインタフェース808又はネットワークインタフェース806を使用して第1データパケットを受信し、マッチング情報に従い、記録されたセッションエントリをクエリし、第1データパケットに一致するセッションエントリが見付からないとき、ホストに第1データパケットを送信するように構成される。
任意で、プロセッサ802は、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むように構成される。セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、プロセッサ802は、さらに、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い、第2セッションエントリのマッチングフィールドを生成するように構成される。第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
任意で、プロセッサ802は、さらに、ホストインタフェース808を使用することによりホストから変更命令を受信し、変更命令に従い第1セッションエントリを変更するように構成される。変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用される。
任意で、プロセッサ802は、さらに、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、第1セッションエントリを削除するように構成される。第1セッションエントリを削除した後、プロセッサ802は、さらに、ホストインタフェース808を使用することによりホストに削除命令を送信するように構成され、削除命令は、少なくとも2つのフローエントリを削除するようにホストに指示するために使用される。
本発明の本実施形態は、ネットワークインタフェースカードの機器の実施形態であり、本発明の他の実施形態の特徴の記述は、本発明の本実施形態に適用可能である。詳細は、ここでは再度説明しない。
図9は、本発明の一実施形態によるネットワークインタフェースカード900の論理構造の概略図である。図9に示すように、ネットワークインタフェースカード900は、送信ユニット902、受信ユニット904、及び処理ユニット906を含む。
送信ユニット902は、ホストに第1データパケットを送信するように構成される。受信ユニット904は、ホストから処理情報を受信するように構成され、処理情報は、第1データパケットに一致する少なくとも2つのフローエントリに従い第1データパケットに対してホストにより実行される処理動作を示すために使用される。処理ユニット906は、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成するように構成され、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカード900により使用されるルールを記録するために使用される。
受信ユニット904は、さらに、第2データパケットを受信するように構成され、第2データパケットは、第1データパケットと同じマッチング情報を含む。処理ユニット906は、さらに、マッチング情報に応じて、第2データパケットに一致する第1セッションエントリをクエリし、第1セッションエントリのアクションフィールドに従い、第2データパケットを処理するように構成される。
送信ユニット902が第1データパケットをホストに送信する前に、受信ユニット904はさらに、第1データパケットを受信するように構成される。処理ユニット906は、さらに、マッチング情報に応じて、記録されたセッションエントリをクエリするように構成される。送信ユニット902は、さらに、処理ユニット906が、第1データパケットと一致するセッションエントリを見付けなかった場合に、ホストに第1データパケットを送信するように構成される。
任意に、処理ユニット906は、さらに、第1データパケットに一致するセキュリティグループルールをクエリし、セキュリティグループルールを第1セッションエントリのアクションフィールドに書き込むように構成される。セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、処理ユニット906は、さらに、第2セッションエントリを作成し、第1データパケットのマッチング情報に従い、第2セッションエントリのマッチングフィールドを生成するように構成され、第2セッションエントリは、第1データパケットの逆方向データフローに一致するセッションエントリである。
任意に、受信ユニット904は、さらに、ホストから変更命令を受信するように構成され、変更命令は、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用される。処理ユニット906は、さらに、変更命令に従い、第1セッションエントリを変更するように構成される。
任意に、処理ユニット906は、さらに、第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、第1セッションエントリを削除するように構成される。処理ユニット906は、さらに、第1セッションエントリを削除した後、ホストに削除指示を送信するように構成される。削除命令は、少なくとも2つのフローエントリを削除するようホストに指示するために使用される。
本発明の本実施形態は、ネットワークインタフェースカードの機器の実施形態であり、本発明の他の実施形態の特徴の記述は、本発明の本実施形態に適用可能である。詳細は、ここでは再度説明しない。
本発明の本実施形態における送信ユニット902の機能及び受信ユニット904の機能は、図8の実施形態におけるプロセッサ802及びホストインタフェース808により実現されてよく、又はプロセッサ802、メモリ804、及びホストインタフェース808により実現されてよい。
代替として、本発明の本実施形態における送信ユニット902の機能の一部は、図8の実施形態におけるプロセッサ802及びネットワークインタフェース806により実現されてよく、又はプロセッサ802、メモリ804、及びネットワークインタフェース806により実現されてよい。
本発明の本実施形態における処理ユニット906の機能は、図8の実施形態におけるプロセッサ802により実現され、又はメモリ804内のコードを実行することによりプロセッサ802により実現されてよい。
前述の実施形態は、単に本発明の技術的ソリューションを説明することを意図したものであって、本発明を限定するものではない。本発明は、前述の実施形態を参照して詳細に説明されているが、当業者は、彼らが、特許請求の範囲の保護範囲から逸脱することなく、前述の実施形態に記録された技術的ソリューションを変更し、又はその幾つかの技術的特徴を置き換え得ることを理解すべきである。