JP2020526122A - データ処理方法、ネットワークインタフェースカード、及びサーバ - Google Patents

データ処理方法、ネットワークインタフェースカード、及びサーバ Download PDF

Info

Publication number
JP2020526122A
JP2020526122A JP2019572365A JP2019572365A JP2020526122A JP 2020526122 A JP2020526122 A JP 2020526122A JP 2019572365 A JP2019572365 A JP 2019572365A JP 2019572365 A JP2019572365 A JP 2019572365A JP 2020526122 A JP2020526122 A JP 2020526122A
Authority
JP
Japan
Prior art keywords
data packet
network interface
interface card
session entry
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019572365A
Other languages
English (en)
Other versions
JP7034187B2 (ja
Inventor
ルゥ,シェンウェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2020526122A publication Critical patent/JP2020526122A/ja
Application granted granted Critical
Publication of JP7034187B2 publication Critical patent/JP7034187B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/355Application aware switches, e.g. for HTTP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本発明の実施形態は、データ処理方法、ネットワークインタフェースカード、及びサーバを提供する。当該方法は、ホストにより、ネットワークインタフェースカードにより送信された第1データパケットを受信し、第1データパケットに関連する少なくとも2つのフローエントリを取得し、少なくとも2つのフローエントリに従い処理情報を生成し、処理情報をネットワークインタフェースカードに送信するステップと、ネットワークインタフェースカードにより、処理情報に従い第1セッションエントリのアクションフィールドを生成し、第1データパケットのマッチング情報に従い第1セッションエントリのマッチングフィールドを生成し、第1セッションエントリは、第1セッションエントリに一致するデータパケットを処理するためにネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、を含む。1つのセッションエントリのアクションフィールドは、データパケットに関連する複数のフローエントリのアクションフィールドに従い結合され、データパケットを処理する機能は、実装のためにネットワークインタフェースカードにオフロードされる。その結果、サーバ上のハードウェアリソースが節約され、データパケット処理手順が簡略化される。

Description

本願は、コンピュータ分野に関し、特に、データ処理方法、ネットワークインタフェースカード(英語正式名: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により実現されてよい。
前述の実施形態は、単に本発明の技術的ソリューションを説明することを意図したものであって、本発明を限定するものではない。本発明は、前述の実施形態を参照して詳細に説明されているが、当業者は、彼らが、特許請求の範囲の保護範囲から逸脱することなく、前述の実施形態に記録された技術的ソリューションを変更し、又はその幾つかの技術的特徴を置き換え得ることを理解すべきである。
本願は、コンピュータ分野に関し、特に、データ処理方法、ネットワークインタフェースカード(英語正式名: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により使用されるルールを記録するために使用される。

Claims (42)

  1. サーバであって、前記サーバは、ホストとネットワークインタフェースカードを含み、前記ネットワークインタフェースカードは、ホストインタフェースを使用して前記ホストに接続され、
    前記ホストは、前記ネットワークインタフェースカードにより送信された第1データパケットを受信し、前記第1データパケットに関連する少なくとも2つのフローエントリを取得し、前記少なくとも2つのフローエントリに従い処理情報を生成し、前記処理情報を前記ネットワークインタフェースカードに送信するように構成され、
    前記ネットワークインタフェースカードは、前記処理情報に従い第1セッションエントリのアクションフィールドを生成するように構成され、
    前記ネットワークインタフェースカードは、さらに、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、
    前記第1セッションエントリは、前記第1セッションエントリと一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、サーバ。
  2. 前記ネットワークインタフェースカードは、さらに、第2データパケットを受信し、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、前記マッチング情報に従い、前記第2データパケットと一致する前記第1セッションエントリをクエリーし、前記第1セッションエントリの前記アクションフィールドに従い、前記第2データパケットを処理するように構成される、請求項1に記載のサーバ。
  3. 前記ホストが前記ネットワークインタフェースカードにより送信された前記第1データパケットを受信する前に、前記ネットワークインタフェースカードは、さらに、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットと一致するセッションエントリが見付からないとき、前記第1データパケットを前記ホストに送信するように構成される、請求項1又は2に記載のサーバ。
  4. 前記ネットワークインタフェースカードは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項1〜3のいずれか一項に記載のサーバ。
  5. セキュリティグループ機能が、前記ホストに対して構成され、
    前記ホストは、さらに、前記第1データパケットに一致する前記セキュリティグループルールをクエリし、前記第1データパケットに一致する前記セキュリティグループルールを前記ネットワークインタフェースカードに送信するように構成される、請求項4に記載のサーバ。
  6. 前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記ネットワークインタフェースカードは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項4又は5に記載のサーバ。
  7. 前記ホストは、さらに、前記少なくとも2つのフローエントリのうちの1つを変更した後に、前記ネットワークインタフェースカードに変更命令を送信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
    前記ネットワークインタフェースカードは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、請求項1〜6のいずれか一項に記載のサーバ。
  8. 前記ネットワークインタフェースカードは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するように構成される、請求項1〜7のいずれか一項に記載のサーバ。
  9. 前記第1セッションエントリを削除した後、前記ネットワークインタフェースカードは、さらに、前記ホストに削除命令を送信するように構成され、
    前記ホストは、さらに、前記削除命令に従い前記少なくとも2つのフローエントリを削除するように構成される、請求項8に記載のサーバ。
  10. データ処理方法であって、サーバが、仮想スイッチの動作するホストと、ネットワークインタフェースカードと、を含み、前記方法は、
    前記ホストにより、前記ネットワークインタフェースカードにより送信された第1データパケットを受信し、前記第1データパケットに関連する少なくとも2つのフローエントリを取得し、前記少なくとも2つのフローエントリに従い処理情報を生成し、前記処理情報を前記ネットワークインタフェースカードに送信するステップと、
    前記ネットワークインタフェースカードにより、前記処理情報に従い、第1セッションエントリのアクションフィールドを生成するステップと、
    前記ネットワークインタフェースカードにより、前記第1データパケットのマッチング情報に従い、前記第1セッションエントリのマッチングフィールドを生成するステップと、
    を含み、
    前記第1セッションエントリは、前記第1セッションエントリと一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、方法。
  11. 前記方法は、さらに、
    前記ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含む、ステップと、
    前記ネットワークインタフェースカードにより、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するステップと、
    を含む請求項10に記載の方法。
  12. 前記ホストにより、前記ネットワークインタフェースカードにより送信された第1データパケットを受信する前記ステップの前に、前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信するステップ、
    を含む請求項10又は11に記載の方法。
  13. 前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記第1セッションエントリの前記アクションフィールドに前記セキュリティグループルールを書き込むステップ、
    を含む請求項10〜12のいずれか一項に記載の方法。
  14. セキュリティグループ機能が、前記ホストのために構成され、
    前記方法は、さらに、
    前記ホストにより、前記第1データパケットに一致する前記セキュリティグループルールをクエリし、前記ネットワークインタフェースカードに、前記第1データパケットに一致する前記セキュリティグループルールを送信するステップ、
    を含む請求項13に記載の方法。
  15. 前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記方法は、さらに、
    前記ネットワークインタフェースカードにより、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するステップであって、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、ステップ、
    を含む請求項13又は14に記載の方法。
  16. 前記方法は、さらに、
    前記ホストにより、前記少なくとも2つのフローエントリのうちの1つを変更した後に、前記ネットワークインタフェースカードに変更命令を送信するステップであって、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用される、ステップと、
    前記ネットワークインタフェースカードにより、前記変更命令に従い、前記第1セッションエントリを変更するステップ、
    を含む請求項10〜15のいずれか一項に記載の方法。
  17. 前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するステップ、
    を含む請求項10〜16のいずれか一項に記載の方法。
  18. 前記ネットワークインタフェースカードにより、前記第1セッションエントリを削除する前記ステップの後に、前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記ホストへ削除命令を送信するステップと、
    前記ホストにより、前記削除命令に従い、前記少なくとも2つのフローエントリを削除するステップと、
    を含む請求項17に記載の方法。
  19. データ処理方法であって、前記方法は、
    ネットワークインタフェースカードにより、ホストに第1データパケットを送信するステップと、
    前記ネットワークインタフェースカードにより、前記ホストから処理情報を受信するステップであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、ステップと、
    前記ネットワークインタフェースカードにより、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い、前記第1セッションエントリのマッチングフィールドを生成するステップであって、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、ステップと、
    を含む方法。
  20. 前記方法が、さらに、
    前記ネットワークインタフェースカードにより、第2データパケットを受信するステップであって、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含む、ステップと、
    前記ネットワークインタフェースカードにより、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い、前記第2データパケットを処理するステップ、
    を含む請求項19に記載の方法。
  21. ネットワークインタフェースカードにより、第1データパケットをホストに送信する前記ステップの前に、前記方法は、
    前記ネットワークインタフェースカードにより、前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信する、ステップ、
    を含む請求項19又は20に記載の方法。
  22. 前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記第1セッションエントリの前記アクションフィールドに前記セキュリティグループルールを書き込むステップ、
    を含む請求項19〜21のいずれか一項に記載の方法。
  23. 前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記方法は、さらに、
    前記ネットワークインタフェースカードにより、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するステップであって、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、ステップ、
    を含む請求項22に記載の方法。
  24. 前記方法は、さらに、
    前記ネットワークインタフェースカードインタフェースカードにより、前記ホストから変更命令を受信するステップであって、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用される、ステップと、
    前記ネットワークインタフェースカードにより、前記変更命令に従い前記第1セッションエントリを変更するステップと、
    を含む請求項19〜23のいずれか一項に記載の方法。
  25. 前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するステップ、
    を含む請求項19〜24のいずれか一項に記載の方法。
  26. 前記ネットワークインタフェースカードにより、前記第1セッションエントリを削除する前記ステップの後に、前記方法は、さらに、
    前記ネットワークインタフェースカードにより、前記ホストに削除命令を送信するステップであって、前記削除命令は、前記少なくとも2つのフローエントリを削除するように前記ホストに指示するために使用されるステップ、を含む請求項25に記載の方法。
  27. ネットワークインタフェースカードであって、前記ネットワークインタフェースカードは、
    ホストに第1データパケットを送信するように構成される送信ユニットと、
    前記ホストから処理情報を受信するように構成される受信ユニットであって、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用される、受信ユニットと、
    処理ユニットであって、前記処理情報に応じて第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用される、処理ユニットと、
    を含むネットワークインタフェースカード。
  28. 前記受信ユニットは、さらに、第2データパケットを受信するように構成され、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、
    前記処理ユニットは、さらに、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するように構成される、
    請求項27に記載のネットワークインタフェースカード。
  29. 前記送信ユニットが前記ホストに前記第1データパケットを送信する前に、前記受信ユニットは、さらに、前記第1データパケットを受信するように構成され、前記処理ユニットは、さらに、前記マッチング情報に従い、記録されたセッションエントリをクエリするように構成され、前記送信ユニットは、さらに、前記処理ユニットが前記第1データパケットに一致するセッションエントリを見つけないとき、前記第1データパケットを前記ホストに送信するように構成される、請求項27又は28に記載のネットワークインタフェースカード。
  30. 前記処理ユニットは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項27〜29のいずれか一項に記載のネットワークインタフェースカード。
  31. 前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記処理ユニットは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項30に記載のネットワークインタフェースカード。
  32. 前記受信ユニットは、さらに、前記ホストから変更命令を受信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
    前記処理ユニットは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、請求項27〜31のいずれか一項に記載のネットワークインタフェースカード。
  33. 前記処理ユニットは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合に、前記第1セッションエントリを削除するように構成される、請求項27〜32のいずれか一項に記載のネットワークインタフェースカード。
  34. 前記第1セッションエントリを削除した後、前記処理ユニットは、さらに、前記ホストに削除命令を送信するように構成され、前記削除命令は、前記ホストに前記少なくとも2つのフローエントリを削除するように指示するために使用される、請求項33に記載のネットワークインタフェースカード。
  35. ホストインタフェース、プロセッサ、及びメモリを含むネットワークインタフェースカードであって、
    前記ホストインタフェースは前記ホストに接続するように構成され、
    前記プロセッサは前記ホストインタフェースを使用して前記ホストに第1データパケットを送信するように構成され、
    前記ホストインタフェースは、さらに、前記ホストインタフェースを使用することにより前記ホストから処理情報を受信するように構成され、前記処理情報は、前記第1データパケットに一致する少なくとも2つのフローエントリに従い、前記ホストにより前記第1データパケットに対して実行される処理動作を示すために使用され、
    前記プロセッサは、さらに、前記処理情報に従い第1セッションエントリのアクションフィールドを生成し、前記第1データパケットのマッチング情報に従い前記第1セッションエントリのマッチングフィールドを生成するように構成され、前記第1セッションエントリは、前記第1セッションエントリに一致するデータパケットを処理するために前記ネットワークインタフェースカードにより使用されるルールを記録するために使用され、
    前記メモリは前記第1セッションエントリを格納するように構成される、
    ネットワークインタフェースカード。
  36. 前記ネットワークインタフェースカードは、さらに、ネットワークインタフェースを含み、前記ネットワークインタフェースは、外部ネットワークに接続するように構成され、
    前記プロセッサは、さらに、前記ホストインタフェース又は前記ネットワークインタフェースを使用することにより第2データパケットを受信するように構成され、前記第2データパケットは、前記第1データパケットと同じマッチング情報を含み、
    前記プロセッサは、さらに、前記マッチング情報に従い、前記第2データパケットに一致する前記第1セッションエントリをクエリし、前記第1セッションエントリの前記アクションフィールドに従い前記第2データパケットを処理するように構成される、
    請求項35に記載のネットワークインタフェースカード。
  37. 前記ネットワークインタフェースカードは、さらに、前記ネットワークインタフェースを含み、前記ネットワークインタフェースは、前記外部ネットワークに接続するように構成され、
    前記ホストインタフェースを使用して前記ホストに前記第1データパケットを送信する前に、前記プロセッサは、さらに、前記ホストインタフェース又は前記ネットワークインタフェースを使用して前記第1データパケットを受信し、前記マッチング情報に従い、記録されたセッションエントリをクエリし、前記第1データパケットに一致するセッションエントリが見付からないとき、前記ホストに前記第1データパケットを送信するように構成される、
    請求項35又は36に記載のネットワークインタフェースカード。
  38. 前記プロセッサは、さらに、前記第1データパケットに一致するセキュリティグループルールをクエリし、前記セキュリティグループルールを前記第1セッションエントリの前記アクションフィールドに書き込むように構成される、請求項35〜37のいずれか一項に記載のネットワークインタフェースカード。
  39. 前記セキュリティグループルールが、順方向データパケット及び逆方向データパケットを通過させるファイアウォールルールを含む場合、前記プロセッサは、さらに、第2セッションエントリを作成し、前記第1データパケットの前記マッチング情報に従い、前記第2セッションエントリのマッチングフィールドを生成するように構成され、前記第2セッションエントリは、前記第1データパケットの逆方向データフローに一致するセッションエントリである、請求項38に記載のネットワークインタフェースカード。
  40. 前記プロセッサは、さらに、前記ホストインタフェースを使用することにより、前記ホストから変更命令を受信するように構成され、前記変更命令は、前記少なくとも2つのフローエントリのうちの1つに対して前記ホストにより実行される変更動作を示すために使用され、
    前記プロセッサは、さらに、前記変更命令に従い前記第1セッションエントリを変更するように構成される、
    請求項35〜39のいずれか一項に記載のネットワークインタフェースカード。
  41. 前記プロセッサは、さらに、前記第1セッションエントリがプリセット時間閾値を超える期間内にアクセスされない場合、前記第1セッションエントリを削除するように構成される、請求項35〜40のいずれか一項に記載のネットワークインタフェースカード。
  42. 前記第1セッションエントリを削除した後、前記プロセッサは、さらに、前記ホストインタフェースを使用することにより、前記ホストに削除命令を送信するように構成され、前記削除命令は、前記少なくとも2つのフローエントリを削除するように前記ホストに指示するために使用される、請求項41に記載のネットワークインタフェースカード。
JP2019572365A 2017-06-30 2017-06-30 データ処理方法、ネットワークインタフェースカード、及びサーバ Active JP7034187B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/091278 WO2019000434A1 (zh) 2017-06-30 2017-06-30 一种数据处理方法、网络接口卡及服务器

Publications (2)

Publication Number Publication Date
JP2020526122A true JP2020526122A (ja) 2020-08-27
JP7034187B2 JP7034187B2 (ja) 2022-03-11

Family

ID=64740875

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019572365A Active JP7034187B2 (ja) 2017-06-30 2017-06-30 データ処理方法、ネットワークインタフェースカード、及びサーバ

Country Status (6)

Country Link
US (1) US11223579B2 (ja)
EP (2) EP3995955A1 (ja)
JP (1) JP7034187B2 (ja)
CN (1) CN110050447B (ja)
CA (1) CA3066826C (ja)
WO (1) WO2019000434A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10887221B2 (en) * 2018-08-28 2021-01-05 Mediatek Inc. Methods of synchronization mode of flow table and apparatus using the same
CN113285892A (zh) * 2020-02-20 2021-08-20 华为技术有限公司 报文处理系统、方法、机器可读存储介质以及程序产品
CN111541789A (zh) 2020-07-08 2020-08-14 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的数据同步方法及装置
CN113438219B (zh) 2020-07-08 2023-06-02 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的重放交易识别方法及装置
CN113726875A (zh) * 2020-07-08 2021-11-30 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易处理方法及装置
CN111541783B (zh) 2020-07-08 2020-10-20 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易转发方法及装置
CN111539829B (zh) 2020-07-08 2020-12-29 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的待过滤交易识别方法及装置
CN113839933B (zh) * 2021-09-13 2023-09-26 紫光云(南京)数字技术有限公司 一种利用安全组解决多网卡流量的方法
CN113905416B (zh) * 2021-09-16 2024-04-16 锐捷网络股份有限公司 VoLTE报文的处理方法及装置
US11899585B2 (en) 2021-12-24 2024-02-13 Western Digital Technologies, Inc. In-kernel caching for distributed cache
US11934663B2 (en) 2022-01-10 2024-03-19 Western Digital Technologies, Inc. Computational acceleration for distributed cache
US11797379B2 (en) 2022-02-04 2023-10-24 Western Digital Technologies, Inc. Error detection and data recovery for distributed cache
CN116132386B (zh) * 2023-04-19 2023-06-27 安超云软件有限公司 混合工作负载引流方法及计算机集群

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2015515798A (ja) * 2012-03-21 2015-05-28 マイクロソフト コーポレーション ネットワーキング・デバイスの仮想化のためのパケット処理のオフロード

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014019205A1 (zh) * 2012-08-02 2014-02-06 华为技术有限公司 处理数据报文的方法、装置及系统
CN104253770B (zh) * 2013-06-27 2017-07-14 新华三技术有限公司 实现分布式虚拟交换机系统的方法及设备
CN103401797B (zh) * 2013-07-24 2016-05-11 杭州华三通信技术有限公司 一种报文处理方法和设备
CN104426816B (zh) * 2013-08-19 2018-08-21 华为技术有限公司 一种虚拟机通信方法及装置
CN104468357B (zh) * 2013-09-16 2019-07-12 中兴通讯股份有限公司 流表的多级化方法、多级流表处理方法及装置
CN103916314A (zh) * 2013-12-26 2014-07-09 杭州华为数字技术有限公司 报文转发控制方法和相关装置及物理主机
CN104753885B (zh) * 2013-12-30 2018-06-26 杭州华为数字技术有限公司 一种流表匹配的方法、装置和OpenFlow交换系统
US9692698B2 (en) * 2014-06-30 2017-06-27 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9917769B2 (en) * 2014-11-17 2018-03-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for virtualizing flow tables in a software-defined networking (SDN) system
CN104394080A (zh) * 2014-11-28 2015-03-04 杭州华三通信技术有限公司 实现安全组功能的方法及装置
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
WO2016131422A1 (en) * 2015-02-17 2016-08-25 Hangzhou H3C Technologies Co., Ltd. Flow entry generating and packet processing based on flow entry
CN104883302B (zh) * 2015-03-18 2018-11-09 华为技术有限公司 一种数据包转发的方法、装置及系统
CN105939291B (zh) * 2015-09-25 2019-09-06 杭州迪普科技股份有限公司 报文处理方法和网络设备
CN105245456B (zh) * 2015-10-20 2018-12-25 浪潮(北京)电子信息产业有限公司 一种云服务器内卸载sdn虚拟网络功能的方法和系统
US10333897B2 (en) * 2015-10-23 2019-06-25 Attala Systems Corporation Distributed firewalls and virtual network services using network packets with security tags
CN106815067B (zh) * 2015-11-30 2020-08-18 中国移动通信集团公司 带i/o虚拟化的虚拟机在线迁移方法、装置
EP3340064B1 (en) 2016-08-03 2020-12-02 Huawei Technologies Co., Ltd. Network interface card, computer device and data packet processing method
EP3340547B1 (en) * 2016-08-03 2019-11-27 Huawei Technologies Co., Ltd. Network interface card and data packet processing method
CN106302225B (zh) * 2016-10-18 2019-05-03 优刻得科技股份有限公司 一种服务器负载均衡的方法与装置
CN106533942B (zh) * 2016-11-30 2019-06-14 北京邮电大学 一种基于sdn的数据处理方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2015515798A (ja) * 2012-03-21 2015-05-28 マイクロソフト コーポレーション ネットワーキング・デバイスの仮想化のためのパケット処理のオフロード

Also Published As

Publication number Publication date
US11223579B2 (en) 2022-01-11
CA3066826C (en) 2023-06-27
EP3627781A1 (en) 2020-03-25
JP7034187B2 (ja) 2022-03-11
WO2019000434A1 (zh) 2019-01-03
CA3066826A1 (en) 2019-01-03
EP3627781A4 (en) 2020-04-22
US20200136998A1 (en) 2020-04-30
EP3627781B1 (en) 2021-09-01
CN110050447B (zh) 2021-02-12
CN110050447A (zh) 2019-07-23
EP3995955A1 (en) 2022-05-11

Similar Documents

Publication Publication Date Title
JP7034187B2 (ja) データ処理方法、ネットワークインタフェースカード、及びサーバ
US10911398B2 (en) Packet generation method based on server cluster and load balancer
US9940153B2 (en) Method for generating configuration information, and network control unit
JP6487979B2 (ja) オフロードデバイスベースのパケット処理のためのフレームワークおよびインターフェース
CN109937401B (zh) 经由业务旁路进行的负载均衡虚拟机的实时迁移
JP5946532B2 (ja) データセンタ環境で物理ネットワークに仮想ネットワークをオーバーレイするための方法、オーバーレイ仮想ネットワークで通信するための方法、ネットワーク仮想化環境のためのシステム、データセンタおよびコンピュータ・プログラム
US8819211B2 (en) Distributed policy service
JP5644150B2 (ja) サービス提供システム、仮想マシンサーバ、サービス提供方法及びサービス提供プログラム
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
JP5500270B2 (ja) プロファイル処理プログラム、データ中継装置およびプロファイル制御方法
US20120291024A1 (en) Virtual Managed Network
JP4840943B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
WO2014079005A1 (zh) Mac地址强制转发装置及方法
JP2005316629A (ja) ネットワークプロトコル処理装置
WO2023011254A1 (zh) 基于远程直接数据存储的热迁移方法、装置及设备
WO2023088924A1 (en) Prioritizing data replication packets in cloud environment
JP6677052B2 (ja) 通信管理装置、通信管理方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220301

R150 Certificate of patent or registration of utility model

Ref document number: 7034187

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150