(57)【要約】  本発明の実施形態は、データ処理方法、ネットワークインタフェースカード、及びサーバを提供する。当該方法は、ホストにより、ネットワークインタフェースカードにより送信された第1データパケットを受信し、第1データパケットに関連する少なくとも2つのフローエントリを取得し、少なくとも2つのフローエントリに従い処理情報を生成し、処理情報をネットワークインタフェースカードに送信するステップと、ネットワークインタフェースカードにより、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成し、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、を含む。1つのセッションエントリのアクションフィールドは、データパケットに関連する複数のフローエントリのアクションフィールドに従い結合され、データパケットを処理する機能は、実装のためにネットワークインタフェースカードにオフロードされる。その結果、サーバ上のハードウェアリソースが節約され、データパケット処理手順が簡略化される。
2020526122.tif 000002
【特許請求の範囲】
【請求項１】
サーバであって、前記サーバは、ホストとネットワークインタフェースカードを含み、前記ネットワークインタフェースカードは、ホストインタフェースを使用して前記ホストに接続され、
前記ホストは、前記ネットワークインタフェースカードにより送信された第1データパケットを受信し、前記第1データパケットに関連する少なくとも2つのフローエントリを取得し、前記少なくとも2つのフローエントリに従い処理情報を生成し、前記処理情報を前記ネットワークインタフェースカードに送信するように構成され、
前記ネットワークインタフェースカードは、前記処理情報に従い第1セッションエントリのアクションフィールドを生成するように構成され、
前記ネットワークインタフェースカードは、さらに、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、
前記第1セッションエントリは、前記第1セッションエントリと一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、サーバ。
【請求項２】
前記ネットワークインタフェースカードは、さらに、第2データパケットを受信し、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、前記マッチング情報に従い、前記第2データパケットと一致する前記第1セッションエントリをクエリーし、前記第1セッションエントリの前記アクションフィールドに従い、前記第2データパケットを処理するように構成される、請求項1に記載のサーバ。
【請求項３】
前記ホストが前記ネットワークインタフェースカードにより送信された前記第1データパケットを受信する前に、前記ネットワークインタフェースカードは、さらに、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットと一致するセッションエントリが見付からないとき、前記第1データパケットを前記ホストに送信するように構成される、請求項1又は2に記載のサーバ。
【請求項４】
前記ネットワークインタフェースカードは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項1〜3のいずれか一項に記載のサーバ。
【請求項５】
セキュリティグループ機能が、前記ホストに対して構成され、
前記ホストは、さらに、前記第1データパケットに一致する前記セキュリティグループルールをクエリし、前記第1データパケットに一致する前記セキュリティグループルールを前記ネットワークインタフェースカードに送信するように構成される、請求項4に記載のサーバ。
【請求項６】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記ネットワークインタフェースカードは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項4又は5に記載のサーバ。
【請求項７】
前記ホストは、さらに、前記少なくとも2つのフローエントリのうちの1つを変更した後に、前記ネットワークインタフェースカードに変更命令を送信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
前記ネットワークインタフェースカードは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、請求項1〜6のいずれか一項に記載のサーバ。
【請求項８】
前記ネットワークインタフェースカードは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するように構成される、請求項1〜7のいずれか一項に記載のサーバ。
【請求項９】
前記第1セッションエントリを削除した後、前記ネットワークインタフェースカードは、さらに、前記ホストに削除命令を送信するように構成され、
前記ホストは、さらに、前記削除命令に従い前記少なくとも2つのフローエントリを削除するように構成される、請求項8に記載のサーバ。
【請求項１０】
データ処理方法であって、サーバが、仮想スイッチの動作するホストと、ネットワークインタフェースカードと、を含み、前記方法は、
前記ホストにより、前記ネットワークインタフェースカードにより送信された第1データパケットを受信し、前記第1データパケットに関連する少なくとも2つのフローエントリを取得し、前記少なくとも2つのフローエントリに従い処理情報を生成し、前記処理情報を前記ネットワークインタフェースカードに送信するステップと、
前記ネットワークインタフェースカードにより、前記処理情報に従い、第1セッションエントリのアクションフィールドを生成するステップと、
前記ネットワークインタフェースカードにより、前記第1データパケットのマッチング情報に従い、前記第1セッションエントリのマッチングフィールドを生成するステップと、
を含み、
前記第1セッションエントリは、前記第1セッションエントリと一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、方法。
【請求項１１】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含む、ステップと、
前記ネットワークインタフェースカードにより、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するステップと、
を含む請求項10に記載の方法。
【請求項１２】
前記ホストにより、前記ネットワークインタフェースカードにより送信された第1データパケットを受信する前記ステップの前に、前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信するステップ、
を含む請求項10又は11に記載の方法。
【請求項１３】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記第1セッションエントリの前記アクションフィールドに前記セキュリティグループルールを書き込むステップ、
を含む請求項10〜12のいずれか一項に記載の方法。
【請求項１４】
セキュリティグループ機能が、前記ホストのために構成され、
前記方法は、さらに、
前記ホストにより、前記第1データパケットに一致する前記セキュリティグループルールをクエリし、前記ネットワークインタフェースカードに、前記第1データパケットに一致する前記セキュリティグループルールを送信するステップ、
を含む請求項13に記載の方法。
【請求項１５】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記方法は、さらに、
前記ネットワークインタフェースカードにより、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するステップであって、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、ステップ、
を含む請求項13又は14に記載の方法。
【請求項１６】
前記方法は、さらに、
前記ホストにより、前記少なくとも2つのフローエントリのうちの1つを変更した後に、前記ネットワークインタフェースカードに変更命令を送信するステップであって、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用される、ステップと、
前記ネットワークインタフェースカードにより、前記変更命令に従い、前記第1セッションエントリを変更するステップ、
を含む請求項10〜15のいずれか一項に記載の方法。
【請求項１７】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するステップ、
を含む請求項10〜16のいずれか一項に記載の方法。
【請求項１８】
前記ネットワークインタフェースカードにより、前記第1セッションエントリを削除する前記ステップの後に、前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記ホストへ削除命令を送信するステップと、
前記ホストにより、前記削除命令に従い、前記少なくとも2つのフローエントリを削除するステップと、
を含む請求項17に記載の方法。
【請求項１９】
データ処理方法であって、前記方法は、
ネットワークインタフェースカードにより、ホストに第1データパケットを送信するステップと、
前記ネットワークインタフェースカードにより、前記ホストから処理情報を受信するステップであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、ステップと、
前記ネットワークインタフェースカードにより、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い、前記第1セッションエントリのマッチングフィールドを生成するステップであって、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、
を含む方法。
【請求項２０】
前記方法が、さらに、
前記ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含む、ステップと、
前記ネットワークインタフェースカードにより、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い、前記第2データパケットを処理するステップ、
を含む請求項19に記載の方法。
【請求項２１】
ネットワークインタフェースカードにより、第1データパケットをホストに送信する前記ステップの前に、前記方法は、
前記ネットワークインタフェースカードにより、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信する、ステップ、
を含む請求項19又は20に記載の方法。
【請求項２２】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記第1セッションエントリの前記アクションフィールドに前記セキュリティグループルールを書き込むステップ、
を含む請求項19〜21のいずれか一項に記載の方法。
【請求項２３】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記方法は、さらに、
前記ネットワークインタフェースカードにより、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するステップであって、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、ステップ、
を含む請求項22に記載の方法。
【請求項２４】
前記方法は、さらに、
前記ネットワークインタフェースカードインタフェースカードにより、前記ホストから変更命令を受信するステップであって、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用される、ステップと、
前記ネットワークインタフェースカードにより、前記変更命令に従い前記第1セッションエントリを変更するステップと、
を含む請求項19〜23のいずれか一項に記載の方法。
【請求項２５】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するステップ、
を含む請求項19〜24のいずれか一項に記載の方法。
【請求項２６】
前記ネットワークインタフェースカードにより、前記第1セッションエントリを削除する前記ステップの後に、前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記ホストに削除命令を送信するステップであって、前記削除命令は、前記少なくとも2つのフローエントリを削除するように前記ホストに指示するために使用されるステップ、を含む請求項25に記載の方法。
【請求項２７】
ネットワークインタフェースカードであって、前記ネットワークインタフェースカードは、
ホストに第1データパケットを送信するように構成される送信ユニットと、
前記ホストから処理情報を受信するように構成される受信ユニットであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、受信ユニットと、
処理ユニットであって、前記処理情報に応じて第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、処理ユニットと、
を含むネットワークインタフェースカード。
【請求項２８】
前記受信ユニットは、さらに、第2データパケットを受信するように構成され、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、
前記処理ユニットは、さらに、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するように構成される、
請求項27に記載のネットワークインタフェースカード。
【請求項２９】
前記送信ユニットが前記ホストに前記第1データパケットを送信する前に、前記受信ユニットは、さらに、前記第1データパケットを受信するように構成され、前記処理ユニットは、さらに、前記マッチング情報に従い、記録されたセッションエントリをクエリするように構成され、前記送信ユニットは、さらに、前記処理ユニットが前記第1データパケットに一致するセッションエントリを見つけないとき、前記第1データパケットを前記ホストに送信するように構成される、請求項27又は28に記載のネットワークインタフェースカード。
【請求項３０】
前記処理ユニットは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項27〜29のいずれか一項に記載のネットワークインタフェースカード。
【請求項３１】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記処理ユニットは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項30に記載のネットワークインタフェースカード。
【請求項３２】
前記受信ユニットは、さらに、前記ホストから変更命令を受信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
前記処理ユニットは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、請求項27〜31のいずれか一項に記載のネットワークインタフェースカード。
【請求項３３】
前記処理ユニットは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合に、前記第1セッションエントリを削除するように構成される、請求項27〜32のいずれか一項に記載のネットワークインタフェースカード。
【請求項３４】
前記第1セッションエントリを削除した後、前記処理ユニットは、さらに、前記ホストに削除命令を送信するように構成され、前記削除命令は、前記ホストに前記少なくとも2つのフローエントリを削除するように指示するために使用される、請求項33に記載のネットワークインタフェースカード。
【請求項３５】
ホストインタフェース、プロセッサ、及びメモリを含むネットワークインタフェースカードであって、
前記ホストインタフェースは前記ホストに接続するように構成され、
前記プロセッサは前記ホストインタフェースを使用して前記ホストに第1データパケットを送信するように構成され、
前記ホストインタフェースは、さらに、前記ホストインタフェースを使用することにより前記ホストから処理情報を受信するように構成され、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用され、
前記プロセッサは、さらに、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用され、
前記メモリは前記第1セッションエントリを格納するように構成される、
ネットワークインタフェースカード。
【請求項３６】
前記ネットワークインタフェースカードは、さらに、ネットワークインタフェースを含み、前記ネットワークインタフェースは、外部ネットワークに接続するように構成され、
前記プロセッサは、さらに、前記ホストインタフェース又は前記ネットワークインタフェースを使用することにより第2データパケットを受信するように構成され、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、
前記プロセッサは、さらに、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するように構成される、
請求項35に記載のネットワークインタフェースカード。
【請求項３７】
前記ネットワークインタフェースカードは、さらに、前記ネットワークインタフェースを含み、前記ネットワークインタフェースは、前記外部ネットワークに接続するように構成され、
前記ホストインタフェースを使用して前記ホストに前記第1データパケットを送信する前に、前記プロセッサは、さらに、前記ホストインタフェース又は前記ネットワークインタフェースを使用して前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信するように構成される、
請求項35又は36に記載のネットワークインタフェースカード。
【請求項３８】
前記プロセッサは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項35〜37のいずれか一項に記載のネットワークインタフェースカード。
【請求項３９】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記プロセッサは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項38に記載のネットワークインタフェースカード。
【請求項４０】
前記プロセッサは、さらに、前記ホストインタフェースを使用することにより、前記ホストから変更命令を受信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
前記プロセッサは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、
請求項35〜39のいずれか一項に記載のネットワークインタフェースカード。
【請求項４１】
前記プロセッサは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するように構成される、請求項35〜40のいずれか一項に記載のネットワークインタフェースカード。
【請求項４２】
前記第1セッションエントリを削除した後、前記プロセッサは、さらに、前記ホストインタフェースを使用することにより、前記ホストに削除命令を送信するように構成され、前記削除命令は、前記少なくとも2つのフローエントリを削除するように前記ホストに指示するために使用される、請求項41に記載のネットワークインタフェースカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、コンピュータ分野に関し、特に、データ処理方法、ネットワークインタフェースカード(英語正式名：network  interface  card、略称：ネットワークインタフェースカード)、及びサーバに関する。
【背景技術】
【０００２】
クラウドコンピューティング環境では、比較的多数のユーザに対してサービスを提供する必要があり、通常、クラウドサービスを提供するために使用されるデータセンター内のサーバは比較的多数ある。各サーバ上で複数の仮想マシン(英語正式名：virtual  machine、略称：VM)が実行される。テナントが所有する仮想マシンは、外部との通信が可能である必要があり、他の仮想マシンから隔離されている。仮想マシンは、仮想スイッチ(英語正式名：virtual  switch、略称：VS)を使用して、同じサーバ上の仮想マシン又は別のサーバ上で実行している仮想マシンと通信する。現在、一般的な仮想スイッチは、オープンvSwitch(OVS)を含む。ソフトウェア定義ネットワーキング(英語正式名：software  defined  networking、略称：SDN)コントローラは、通常、OpenFlowプロトコルで定義されたフローテーブル(英語正式名：flow  table)を使用して、各仮想スイッチを制御する。
【０００３】
各サーバ上のハードウェアリソースは、少なくとも複数のVM、仮想スイッチ、及び仮想マシンモニタ(英語正式名：virtual  machine  monitor、略称：VMM)の実行をサポートする必要がある。仮想マシンモニタは、仮想マシンマネージャ(英語正式名：virtual  machine  manager、略称：VMM)又はハイパーバイザ(英語正式名：hypervisor)とも呼ばれる。各サーバのハードウェアリソースは限られている。データ交換タスクを実行する仮想スイッチが過剰なハードウェアリソースを占有している場合、サーバ上のVMの実行は容易に影響を受け、作業効率が低下する。
【発明の概要】
【０００４】
この観点から、本願は、データ処理方法、ネットワークインタフェースカード、及びサーバを開示する。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であり、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データパケットを送信するように構成される。受信ユニット902は、ホストから処理情報を受信するように構成され、処理情報は、第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により実現されてよい。
【０２２１】
前述の実施形態は、単に本発明の技術的ソリューションを説明することを意図したものであって、本発明を限定するものではない。本発明は、前述の実施形態を参照して詳細に説明されているが、当業者は、彼らが、特許請求の範囲の保護範囲から逸脱することなく、前述の実施形態に記録された技術的ソリューションを変更し、又はその幾つかの技術的特徴を置き換え得ることを理解すべきである。
【図１】
2020526122.tif 000003
【図２】
2020526122.tif 000004
【図３】
2020526122.tif 000005
【図４】
2020526122.tif 000006
【図５】
2020526122.tif 000007
【図６】
2020526122.tif 000008
【図７】
2020526122.tif 000009
【図８】
2020526122.tif 000010
【図９】
2020526122.tif 000011
【手続補正書】
【提出日】令和2年1月29日(2020.1.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理方法であって、前記方法は、
ネットワークインタフェースカードにより、ホストに第1データパケットを送信するステップと、
前記ネットワークインタフェースカードにより、前記ホストから処理情報を受信するステップであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、ステップと、
前記ネットワークインタフェースカードにより、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い、前記第1セッションエントリのマッチングフィールドを生成するステップであって、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、
を含む方法。
【請求項２】
前記方法が、さらに、
前記ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含む、ステップと、
前記ネットワークインタフェースカードにより、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い、前記第2データパケットを処理するステップ、
を含む請求項1に記載の方法。
【請求項３】
ネットワークインタフェースカードにより、第1データパケットをホストに送信する前記ステップの前に、前記方法は、
前記ネットワークインタフェースカードにより、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信する、ステップ、
を含む請求項1又は2に記載の方法。
【請求項４】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記第1セッションエントリの前記アクションフィールドに前記セキュリティグループルールを書き込むステップ、
を含む請求項1〜3のいずれか一項に記載の方法。
【請求項５】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含むとき、前記方法は、さらに、
前記ネットワークインタフェースカードにより、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するステップであって、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、ステップ、
を含む請求項4に記載の方法。
【請求項６】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記ホストから変更命令を受信するステップであって、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用される、ステップと、
前記ネットワークインタフェースカードにより、前記変更命令に従い前記第1セッションエントリを変更するステップと、
を含む請求項1〜5のいずれか一項に記載の方法。
【請求項７】
前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するステップ、
を含む請求項1〜6のいずれか一項に記載の方法。
【請求項８】
前記ネットワークインタフェースカードにより、前記第1セッションエントリを削除する前記ステップの後に、前記方法は、さらに、
前記ネットワークインタフェースカードにより、前記ホストに削除命令を送信するステップであって、前記削除命令は、前記少なくとも2つのフローエントリを削除するように前記ホストに指示するために使用されるステップ、を含む請求項7に記載の方法。
【請求項９】
前記ネットワークインタフェースカードにより、前記ホストから処理情報を受信する前記ステップの前に、前記方法は、さらに、
前記ホストにより、前記第1データパケットに関連する複数のフローエントリを取得するステップと、
前記ホストにより、前記複数のフローエントリに従い処理情報を生成するステップと、
を含む請求項1に記載の方法。
【請求項１０】
セキュリティグループ機能が前記ホストのために構成され、前記方法は、さらに、
前記ホストにより、前記第1データパケットに一致するセキュリティグループルールをクエリするステップと、
前記ホストにより、前記第1データパケットに一致する前記セキュリティグループルールを前記ネットワークインタフェースカードに送信するステップと、
前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリするステップと、
前記ネットワークインタフェースカードにより、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むステップと、
を含む請求項9に記載の方法。
【請求項１１】
ネットワークインタフェースカードであって、前記ネットワークインタフェースカードは、
ホストに第1データパケットを送信するように構成される送信ユニットと、
前記ホストから処理情報を受信するように構成される受信ユニットであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、受信ユニットと、
処理ユニットであって、前記処理情報に応じて第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、処理ユニットと、
を含むネットワークインタフェースカード。
【請求項１２】
前記受信ユニットは、さらに、第2データパケットを受信するように構成され、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、
前記処理ユニットは、さらに、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するように構成される、
請求項11に記載のネットワークインタフェースカード。
【請求項１３】
前記送信ユニットが前記ホストに前記第1データパケットを送信する前に、前記受信ユニットは、さらに、前記第1データパケットを受信するように構成され、前記処理ユニットは、さらに、前記マッチング情報に従い、記録されたセッションエントリをクエリするように構成され、前記送信ユニットは、さらに、前記処理ユニットが前記第1データパケットに一致するセッションエントリを見つけないとき、前記第1データパケットを前記ホストに送信するように構成される、請求項11又は12に記載のネットワークインタフェースカード。
【請求項１４】
前記処理ユニットは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項11〜13のいずれか一項に記載のネットワークインタフェースカード。
【請求項１５】
前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含むとき、前記処理ユニットは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項14に記載のネットワークインタフェースカード。
【請求項１６】
前記受信ユニットは、さらに、前記ホストから変更命令を受信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
前記処理ユニットは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、請求項11〜15のいずれか一項に記載のネットワークインタフェースカード。
【請求項１７】
前記処理ユニットは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合に、前記第1セッションエントリを削除し、前記ホストに削除命令を送信するように構成され、前記削除命令は、前記ホストに前記少なくとも2つのフローエントリを削除するように指示するために使用される、請求項11〜16のいずれか一項に記載のネットワークインタフェースカード。
【請求項１８】
サーバであって、前記サーバはホストとネットワークインタフェースカードとを含み、前記ネットワークインタフェースカードはホストインタフェースを用いて前記ホストに接続され、
前記ホストは、前記ネットワークインタフェースカードにより送信された第1データパケットを受信し、前記第1データパケットに関連する少なくとも2つのフローエントリを取得し、前記少なくとも2つのフローエントリに従い処理情報を生成し、前記処理情報を前記ネットワークインタフェースカードに送信するよう構成され、
前記ネットワークインタフェースカードは、請求項1〜8のいずれか一項に記載の方法を実行するよう構成される、サーバ。
【請求項１９】
セキュリティグループ機能が前記ホストのために構成され、前記ホストは、さらに、
前記第1データパケットに一致するセキュリティグループルールをクエリし、
前記第1データパケットに一致する前記セキュリティグループルールを前記ネットワークインタフェースカードに送信する、
よう構成される請求項18に記載のサーバ。
【請求項２０】
ホストインタフェース、プロセッサ、及びメモリを含むネットワークインタフェースカードであって、
前記ホストインタフェースはホストに接続するように構成され、
前記プロセッサは前記ホストインタフェースを使用して前記ホストに第1データパケットを送信するように構成され、
前記プロセッサは、さらに、前記ホストインタフェースを使用することにより前記ホストから処理情報を受信するように構成され、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用され、
前記プロセッサは、さらに、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用され、
前記メモリは前記第1セッションエントリを格納するように構成される、
ネットワークインタフェースカード。
【請求項２１】
記録されたプログラムを有するコンピュータ可読記憶媒体であって、前記プログラムはコンピュータに請求項1〜10のいずれかの方法を実行させる、コンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本願は、コンピュータ分野に関し、特に、データ処理方法、ネットワークインタフェースカード(英語正式名：network  interface  card、略称：NIC)、及びサーバに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
第3の態様又は第3の態様の前述の可能な実装のいずれか1つによれば、第3の態様の第5の可能な実装において、当該方法は、さらに、ネットワークインタフェースカードにより、ホストから変更命令を受信するステップであって、変更命令が、少なくとも2つのフローエントリのうちの1つに対してホストにより実行される変更動作を示すために使用される、ステップと、ネットワークインタフェースカードにより、変更命令に従い、第1セッションエントリを変更するステップと、を含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１５５
【補正方法】変更
【補正の内容】
【０１５５】
第2セッションエントリのアクションフィールドは、ホストにアップロードするよう設定され、又はヌルに設定されてよい。続いて、第2セッションテーブルのアクションフィールドは、逆方向データパケットに対して仮想スイッチにより実行される実際の処理に従い更新される。特定の解決手順は、前述の説明の第1セッションエントリのアクションフィールドを構成する手順と同様である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１８６
【補正方法】変更
【補正の内容】
【０１８６】
一例が、図6のアーキテクチャを参照して説明するために使用される。データパケットのマッチング情報はIP  5タプルであり、VM-1のIPアドレスは12.5.3.1であり、VM-1はVF1を用いてネットワークインタフェースカードに接続されると仮定する。VM-1が、IPアドレスが52.5.13.5の外部サーバにポート2351を使用してアクセスする場合、VM-1のアクセス手順は以下のとおりである。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０２１１
【補正方法】変更
【補正の内容】
【０２１１】
送信ユニット902は、ホストに第1データパケットを送信するように構成される。受信ユニット904は、ホストから処理情報を受信するように構成され、処理情報は、第1データパケットに一致する少なくとも2つのフローエントリに従い第1データパケットに対してホストにより実行される処理動作を示すために使用される。処理ユニット906は、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成するように構成され、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカード900により使用されるルールを記録するために使用される。
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2020526122.tif 000012
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2020526122.tif 000013
【国際調査報告】
2020526122.tif 000014
2020526122.tif 000015
2020526122.tif 000016
2020526122.tif 000017