(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】データバッファリング方法、データ処理方法、コンピュータデバイス、および記憶媒体
(51)【国際特許分類】
H04L 41/40 20220101AFI20231215BHJP
【FI】
H04L41/40
(21)【出願番号】P 2020566722
(86)(22)【出願日】2019-05-21
(86)【国際出願番号】 CN2019087799
(87)【国際公開番号】W WO2019228228
(87)【国際公開日】2019-12-05
【審査請求日】2022-05-13
(31)【優先権主張番号】201810539153.1
(32)【優先日】2018-05-30
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ジン・チェン
【審査官】安藤 一道
(56)【参考文献】
【文献】特開2013-196138(JP,A)
【文献】特表2014-531093(JP,A)
【文献】米国特許出願公開第2007/0061492(US,A1)
【文献】中国特許出願公開第107995129(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 41/40
(57)【特許請求の範囲】
【請求項1】
データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、
前記仮想位置情報を物理アドレスに変換することと、
前記物理アドレスにしたがって、物理ネットワークインターフェースコンポーネントの物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を判定することと、
前記物理位置情報を前記仮想位置情報として指定することと、
データが送信されるべき前記仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、前記物理データバッファの前記物理位置情報を取得することと、
前記取得した物理位置情報にしたがって前記データを記憶することと、
を備える、方法。
【請求項2】
前記仮想記憶空間内の前記複数の仮想データバッファの前記仮想位置情報を前記判定することが、
前記仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、前記仮想受信キューが仮想バッファ制御情報を含む、作成することと、
前記仮想記憶空間から、前記仮想位置情報を取得することと、
前記仮想位置情報を前記仮想バッファ制御情報に追加することと、を備える、請求項
1に記載の方法。
【請求項3】
前記仮想ネットワークインターフェースコンポーネントのデータバッファの前記仮想位置情報を前記取得することが、
前記仮想受信キュー内の前記仮想位置情報の検出を実行することを備える、請求項
2に記載の方法。
【請求項4】
前記仮想受信キュー内の前記仮想位置情報の検出を前記実行する前に、前記方法が、さらに、
前記仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える、請求項
3に記載の方法。
【請求項5】
前記物理アドレスにしたがって、前記物理データバッファの前記物理位置情報を前記判定することが、
前記物理データバッファの物理バッファ制御情報に前記物理アドレスを追加することを備える、請求項
1に記載の方法。
【請求項6】
前記物理位置情報を前記仮想位置情報として前記指定する前に、前記方法が、さらに、
前記物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの前記物理バッファ制御情報に前記物理アドレスを前記追加することが、
前記情報キュー内の前記物理バッファ制御情報を取得することと、
前記取得した物理バッファ制御情報に順番に前記物理アドレスを追加することと、
前記物理バッファ制御情報を前記物理記憶空間に記憶することと、を備える、請求項
5に記載の方法。
【請求項7】
前記データを前記物理データバッファに記憶するときに、前記仮想位置情報にしたがって前記データを前記記憶する前に、前記方法が、さらに、
前記物理記憶空間内の前記物理バッファ制御情報を取得することと、
前記物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
前記物理バッファ制御情報を前記物理受信キューに追加することと、を備える、請求項
6に記載の方法。
【請求項8】
前記仮想ネットワークインターフェースコンポーネントが、前記物理ネットワークインターフェースコンポーネントの前記物理受信キューへの1対1のマッピングを有し、
前記物理受信キューが、前記物理データバッファへの1対1のマッピングを有
する、
請求項
7に記載の方法。
【請求項9】
前記仮想ネットワークインターフェースコンポーネントに対応する前記物理受信キューから前記対応する物理データバッファの前記物理位置情報を前記取得することが、
前記物理受信キュー内の前記物理バッファ制御情報を取得することであって、前記物理バッファ制御情報が前記物理位置情報を含む、取得することを備え、
前記物理位置情報にしたがって前記データを前記記憶した後、前記方法が、さらに、
物理マシンが受信データを検出するように、前記データが受信された旨を前記物理
バッファ制御情報にマークすることを備える、請求項
8に記載の方法。
【請求項10】
さらに、
前記物理バッファ制御情報にしたがって、前記仮想ネットワークインターフェースコンポーネントが前記受信データを検出するように、前記仮想ネットワークインターフェースコンポーネント内の
仮想受信キューの
仮想バッファ制御情報に前記データが受信された旨をマークすることを備える、請求項
9に記載の方法。
【請求項11】
さらに、
前記物理バッファ制御情報にしたがって、前記仮想ネットワークインターフェースコンポーネントに前記データが受信された旨を通知することを備える、請求項
9に記載の方法。
【請求項12】
メモリと、プロセッサと、前記メモリに記憶されて前記プロセッサ上で実行可能なコンピュータプログラムとを備えるコンピュータデバイスであって、前記プロセッサが、前記コンピュータプログラムを実行したときに請求項1~
11のうちの
いずれか1項に記載の方法を実装する、コンピュータデバイス。
【請求項13】
コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、前記コンピュータプログラムが、プロセッサによって実行されたときに請求項1~
11のうちの
いずれか1項に記載の方法を実装する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2018年5月30日に出願された「データバッファリング方法、データ処理方法、コンピュータデバイス、記憶媒体」と題された中国特許出願第201810539153.1号の優先権を主張し、これは参照によりその全体が本明細書に組み込まれる。
【0002】
本出願は、データ処理の技術分野に関し、より具体的には、データバッファリング方法、データ処理方法、コンピュータデバイス、およびコンピュータ可読記憶媒体に関する。
【背景技術】
【0003】
仮想ネットワークでは、物理マシン(物理マシンはまた、物理コンピュータ、コンピュータデバイス、またはホストデバイスとも呼ばれることができる)でシミュレートされた仮想マシン(VM)は、vSwitch(仮想スイッチ)を介して、仮想スイッチルーティングやトンネルエンドポイント(TEP)などのネットワークサービスを提供する。vSwitchは、優れたネットワークスループット性能も提供するソフトウェアを純粋に使用して実装される。しかしながら、その主な問題は、物理マシンのリソース使用率を妨げる、vSwitchが物理マシンのCPUおよびメモリリソースの一部を占有する必要があるということである。
【0004】
上記に照らして、スマートネットワークカードを使用する解決策が作成された。主な目的は、より多くの物理マシンリソースがクライアントに解放されるように、vSwitch機能をスマートネットワークカードに組み込み、より良好なネットワークスループットを提供することを目的とすることである。
【0005】
調査の結果、特許出願人は、パケット受信プロセスに関して、物理マシンのネットワークカードが、仮想マシンに送信されたパケットを受信すると、ネットワークカードドライバによって指定されたデータバッファにパケットを最初に記憶した後、仮想マシンの仮想ネットワークカードによって指定されたデータバッファにデータをコピーする必要があることを見出した。これは、データ受信プロセス中にデータがコピーされる必要があるという問題につながる。そのようなコピー処理は、データ受信時の時間コストの増加およびネットワーク性能の低下、ならびにネットワーク遅延の増加につながる。
【発明の概要】
【課題を解決するための手段】
【0006】
上述した問題を考慮して、本出願は、上述した問題を解消するか、または少なくとも部分的に解決するデータバッファリング方法、データ処理方法、コンピュータデバイス、およびコンピュータ可読記憶媒体を提供するために提案される。
【0007】
本出願の一態様によれば、データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファのviを取得することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することと、
データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶することと、を備える、方法が提供される。
必要に応じて、前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、本方法は、さらに、
仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、を備える。
【0008】
必要に応じて、前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することは、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むことと、
仮想記憶空間から、仮想位置情報を取得することと、
仮想位置情報を仮想バッファ制御情報に追加することと、を備える。
【0009】
必要に応じて、前記仮想ネットワークインターフェースコンポーネントのデータバッファの仮想位置情報を取得することは、
仮想受信キュー内の仮想位置情報の検出を実行することを備える。
【0010】
必要に応じて、前記仮想受信キュー内の仮想位置情報の検出を実行する前に、本方法は、さらに、
仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える。
【0011】
必要に応じて、前記仮想位置情報としての物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を指定することは、
仮想位置情報を物理アドレスに変換することと、
物理アドレスにしたがって、物理データバッファの物理位置情報を判定することと、を備える。
【0012】
必要に応じて、前記物理アドレスにしたがって物理データバッファの物理位置情報を判定することは、
物理データバッファの物理バッファ制御情報に物理アドレスを追加することを備える。
【0013】
必要に応じて、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、本方法は、さらに、
物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの物理バッファ制御情報に物理アドレスを追加することは、
情報キュー内の物理バッファ制御情報を取得することと、
取得した物理バッファ制御情報に順番に物理アドレスを追加することと、
物理バッファ制御情報を物理記憶空間に記憶することと、を備える。
【0014】
必要に応じて、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、本方法は、さらに、
物理記憶空間内の物理バッファ制御情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
物理バッファ制御情報を物理受信キューに追加することと、を備える。
【0015】
必要に応じて、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有し、物理受信キューは、物理データバッファへの1対1のマッピングを有し、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶することは、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得することと、
物理位置情報にしたがってデータを記憶することと、を備える。
【0016】
必要に応じて、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得することは、
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むことを備え、
前記物理位置情報にしたがってデータを記憶した後、本方法は、さらに、物理マシンが受信したデータを検出するように、物理的制御バッファ情報にデータが受信された旨をマークすることを備える。
【0017】
必要に応じて、本方法は、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークすることを備える。
【0018】
必要に応じて、本方法は、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知することを備える。
したがって、本出願の別の態様によれば、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用されるデータ記憶命令を受信することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得することと、
データを仮想位置に記憶することと、を備える、データ処理方法がさらに提供される。
したがって、本出願の別の態様によれば、メモリと、プロセッサと、メモリに記憶され且つプロセッサ上で実行可能なコンピュータプログラムとを備え、プロセッサが、コンピュータプログラムを実行したときに上述した方法の1つ以上を実装する、コンピュータデバイスがさらに提供される。
【0019】
したがって、本出願の別の態様によれば、記憶されたコンピュータプログラムを有し、プログラムがプロセッサによって実行されたときに上述した方法の1つ以上を実装する、コンピュータ可読記憶媒体がさらに提供される。
【0020】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0021】
上記の説明は、本出願の技術的解決策の概要にすぎない。当業者が本出願の技術的手段をよりよく理解するために、さらに本明細書の内容にしたがって実装するために、および本出願の上記および他の目的、特徴、および利点をより明白で理解可能にするために、本出願の特定の実装方法が以下に示される。
【0022】
本開示の例示的な実施形態における技術的解決策をより明確に説明するために、以下に添付の図面を簡単に説明する。明らかに、以下の説明の添付図面は、本開示のいくつかの実施形態を単に表すだけであり、当業者は、発明の努力なしに、これらの添付図面から他の添付図面をさらに導出することができる。
【図面の簡単な説明】
【0023】
【
図1】
図1は、仮想マシン展開の概略図を示している。
【
図2】
図2は、データバッファリングプロセスの概略図を示している。
【
図3】
図3は、本出願の実施形態Iにかかるデータバッファリング方法の実施形態のフローチャートを示している。
【
図4】
図4は、本出願の実施形態IIにかかるデータバッファリング方法の実施形態のフローチャートを示している。
【
図5】
図5は、本出願の実施形態IIIにかかるデータ処理方法の実施形態のフローチャートを示している。
【
図6】
図6は、最適化されていないデータバッファリングプロセスの概略図を示している。
【
図7】
図7は、最適化されたデータバッファリングプロセスの概略図を示している。
【
図8】
図8は、本出願の実施形態IVにかかるデータバッファリング装置の実施形態の構造ブロック図を示している。
【
図9】
図9は、本出願の実施形態Vにかかるデータバッファリング装置の実施形態の構造ブロック図を示している。
【
図10】
図10は、本開示に記載される様々な実施形態を実施するために使用されることができる例示的なシステムを示している。
【発明を実施するための形態】
【0024】
以下、本開示の例示的な実施形態を、添付の図面を参照してより詳細に説明する。図面は、本開示の例示的な実施形態を示しているが、本開示は、様々な形態で実施することができ、本明細書に記載の実施形態によって限定されるべきではないことを理解されたい。むしろ、これらの実施形態は、本開示のより完全な理解を可能にし、本開示の範囲を当業者に完全に伝えるために提供される。
【0025】
当業者が本出願をよりよく理解できるようにするために、本出願に含まれる概念を以下に説明する。
【0026】
仮想ネットワークインターフェースコンポーネントは、仮想マシンと仮想ネットワーク内の伝送媒体とを接続するインターフェースを含み、仮想マシンによって使用されるネットワークからデータを受信することができる。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な仮想ネットワークインターフェースコンポーネントとすることができる。例えば、
図1に示されるような仮想マシン展開の概略図において、
図1に示すように、vSwitch機能を備えたスマートネットワークカードが物理マシンに採用されている。物理マシン上の各仮想マシンは、仮想ネットワークカードインターフェース(すなわち、仮想ネットワークインターフェースコンポーネント)としてバートアイオー-ネットを採用している。
【0027】
仮想ネットワークインターフェースコンポーネントは、データを記憶および処理するための仮想データバッファ、例えば、バートアイオー-ネットインターフェースドライバによって指定された位置のメモリ領域を事前に指定する。具体的には、本出願の実施形態によって限定されない、任意の適用可能な仮想データバッファを含むことができる。
【0028】
したがって、仮想位置情報は、仮想データバッファの位置、例えば、バートアイオー-ネットインターフェースドライバによって指定されたメモリプール内の複数の仮想データバッファのメモリアドレスを指定するために使用される。具体的には、本出願の実施形態によって限定されない、任意の適用可能な仮想位置情報を含むことができる。
【0029】
物理ネットワークインターフェースコンポーネントは、物理マシンとネットワーク内の伝送媒体を接続するインターフェースを含み、物理マシンによって使用されるデータをネットワークから受信することができる。具体的には、本出願の実施形態によって限定されない、任意の適用可能な物理ネットワークインターフェースコンポーネントを含むことができる。例えば、
図1に示すように、物理マシンによって採用されるvSwitch機能を有するスマートネットワークカードは、物理ネットワークインターフェースコンポーネントである。業界では一般に標準のバートアイオー-ネット仮想ネットワークカードインターフェースを採用しており、現在のスマートネットワークカードがバートアイオー-ネット仮想ネットワークカードインターフェースをサポートしていないため、ネットワーク上のトラフィックは、仮想マシンに直接送信されることができないが、SRIOV(ハードウェアベースの仮想化ソリューション)のVFデバイス(物理機能に関連付けられた機能)にのみ送信されることは注目に値する。物理マシン上の各SRIOV VFデバイスは、仮想マシンのバートアイオー-ネットインターフェースとの1対1のマッピング関係を有する。物理マシン上の1つの単純な転送プログラムは、VFデバイスからバートアイオー-ネットインターフェースへの変換を完了し、それによって仮想マシンネットワークを物理ネットワークカードに接続する。
【0030】
物理ネットワークインターフェースコンポーネントは、データを記憶および処理するために、物理データバッファ、例えば、スマートネットワークカードドライバによって指定された位置のメモリ領域を事前に指定する。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な物理データバッファを含むことができる。
【0031】
したがって、物理位置情報は、物理データバッファの位置、例えば、スマートネットワークカードドライバが指定するメモリプール内の複数の物理データバッファのメモリアドレスを指定するために使用される。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な物理位置情報を含むことができる。
【0032】
本出願の任意の実施形態では、仮想マシンのカーネルまたは仮想マシン上で実行されるAPP(アプリケーション)は、仮想ネットワークインターフェースコンポーネントのための仮想記憶空間をデータ記憶領域として割り当てることができる。仮想記憶空間は、複数の仮想データバッファを含むことができる。例えば、仮想マシンのカーネルまたはAPPは、1つのメモリプール(メモリプール)、すなわち仮想記憶空間を初期化し、これは、パケットの記憶領域としてバートアイオー-ネットインターフェースドライバに提供される。
【0033】
本出願の任意の実施形態では、仮想ネットワークインターフェースコンポーネントのために仮想受信キューが作成される必要があり、キューは、ソフトウェアドライバとハードウェアとの間の通信に使用され、主にネットワークからパケットデータを受信するための制御情報を記憶する。仮想受信キューの各要素は、仮想バッファ制御情報と呼ばれる。仮想バッファ制御情報は、パケット長、データバッファ長など、仮想データバッファの特性および状態を記述するために使用される。異なるネットワークデバイスによって定義された仮想バッファ制御情報は、異なるフォーマットおよびサイズを有することができるが、少なくとも本出願の実施形態によって限定されない仮想データバッファのアドレスを含む。
【0034】
例えば、バートアイオー-ネットインターフェースドライバは、デバイスを初期化し、最終的に、本質的にソフトウェアドライバとハードウェアとの間の通信に使用される1つのキューであるrxq(受信キュー)を初期化する。キューの各要素は、記述子(すなわち、仮想バッファ制御情報)と呼ばれる。記述子は、パケットキューを送受信し、ソフトウェア通信を実行するためにネットワークカードによって定義されるデータフォーマットである。様々なタイプのネットワークデバイスによって定義された各記述子は、少なくともデータバッファのアドレスを含む。
【0035】
本出願の任意の実施形態では、仮想マシンによって定義され、物理マシンのハードウェア記憶デバイス上の物理アドレス(すなわち、物理アドレス)ではない仮想位置情報は、物理マシン上のメモリアドレス、ハードディスクアドレスなど、または本出願の実施形態によって限定されない他の任意の適用可能な物理アドレスを含む。仮想マシンの仮想位置情報は、物理アドレスに変換されることができる。
【0036】
本出願の任意の実施形態では、物理バッファ制御情報を使用して、パケット長、データバッファ長などの物理データバッファの特性および状態を記述する。異なるネットワークデバイスによって定義された物理バッファ制御情報は、異なるフォーマットおよびサイズを有することができるが、少なくとも、本出願の実施形態によって限定されない、物理データバッファのアドレスまたは任意の他の適用可能な情報を含むことができる。
【0037】
例えば、メモリプールの各要素は、1つのデータバッファだけではない。むしろ、各データバッファは、1つの制御構造、すなわち、同じタイプまたは異なるタイプのデータを有するデータセットを含まなければならず、これは、本出願において物理バッファ制御情報と呼ばれる。物理マシンのメモリプール(メモリプール)がbctlと呼ばれる制御構造を定義すると仮定する:
typedef struct buf ctrl{
void*addr
・・・・・・
}bctl。
【0038】
本出願の任意の実施形態では、情報キューを使用して、物理バッファ制御情報を記憶する。換言すれば、キューの各要素は、物理バッファ制御情報である。物理マシンに割り当てられた物理記憶空間は、データの記憶領域として使用される。
【0039】
本出願の任意の実施形態では、物理ネットワークインターフェースコンポーネントのために物理受信キューが作成される必要があり、キューは、ソフトウェアドライバとハードウェアとの間の通信に使用され、主にネットワークからパケットデータを受信するための制御情報を記憶する。物理受信キューの各要素は、物理バッファ制御情報と呼ばれる。
【0040】
本出願の任意の実施形態では、物理マシンは、vSwitch機能を有するスマートネットワークカードを採用するため、スマートネットワークカードは、データを受信すると、異なる仮想マシンに向けられたデータを対応するVFデバイスに配信することができる。VFデバイスは、スマートネットワークカードの出力ポートとして機能するため、物理マシン上に対応する物理受信キューを有する必要がある。VFデバイスは、仮想ネットワークインターフェースコンポーネントへの1対1のマッピングを有し、VFデバイスは、物理受信キューへの1対1のマッピングを有するため、仮想ネットワークインターフェースコンポーネントもまた、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有する。さらに、物理受信キューはまた、異なる仮想マシンに送信されたデータが異なる物理受信キューを介して異なる物理データバッファにバッファリングされることができるように、物理データバッファへの1対1のマッピングも有する。
【0041】
本出願の実施形態によれば、パケット受信プロセスにおいて、物理マシンのネットワークカードは、仮想マシンに送信されたパケットを受信すると、最初に、ネットワークカードドライバによって指定されたデータバッファにパケットを記憶した後、仮想マシンの仮想ネットワークカードによって指定されたデータバッファにデータをコピーしなければならず、これは、データ受信プロセス中にデータがコピーされる必要があるという問題につながる。データバッファリングプロセスの概略図である
図2に示すように、本出願は、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、仮想位置情報として物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を指定し、データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するデータバッファリングメカニズムを提供する。物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報は、物理デバイスによる割り当てによって判定される代わりに、仮想位置情報として指定されるため、物理ネットワークインターフェースコンポーネントは、データを受信すると、仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに受信したデータを直接記憶することができ、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。本出願は、上記の適用シナリオに適用可能であるが、限定されるものではない。
【0042】
図3を参照すると、本出願の実施形態Iにかかるデータ処理方法の実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【0043】
ステップ101:仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する。本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された後、仮想データバッファの仮想位置情報を取得することができる。例えば、全てのデータバッファ(すなわち、仮想データバッファ)のポインタ情報は、バートアイオー-ネットインターフェースのrxqキューをスキャンすることによって取得される。具体的には、これは、本出願の実施形態によって限定されない、任意の適用可能な方法で仮想位置情報を取得することを含むことができる。
【0044】
ステップ102:物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する。
【0045】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントの初期化プロセスにおいて、物理位置情報は、もともと物理マシンによって指定され、これは、物理データバッファと仮想データバッファとの間に位置差をもたらす。受信データの物理データバッファから仮想データバッファへのコピーを排除するために、物理データバッファの物理位置情報は、取得された仮想位置情報として直接指定される。物理位置情報を仮想位置情報として指定するために様々な方法を採用することができ、これは本出願の実施形態によって限定されない。
【0046】
例えば、物理マシン上の転送プログラムが1つのキューを作成することができ、キュー内の各要素は、上記で定義されたbctl制御構造である。物理マシンは、データバッファまたは制御構造を有しない空のメモリプールを1つ作成する。物理マシンの転送プログラムは、バートアイオー-ネットインターフェースが初期化された旨の通知を受信し、バートアイオー-ネットインターフェースのrxq仮想受信キューをスキャンして、全てのデータバッファのポインタ情報を取得する。データバッファの仮想位置情報は、物理マシンの物理アドレスに変換された後、データバッファを有しないbctl制御構造がキューから取得され、bctl制御構造内の物理位置情報には、割り当て動作を使用して仮想位置情報から変換された物理アドレスになる値が割り当てられる。最終的に、bctl制御構造は、メモリプールにエンキューされる。この時点で、物理マシンのメモリプール内のデータバッファは、本質的に、仮想マシンによって割り当てられたアドレスである。その後、転送プログラムが物理ネットワークインターフェースコンポーネントのrxq物理受信キューを初期化すると、物理位置情報は、メモリプールからデキューすることによって取得され、これは、実際には仮想マシンによって割り当てられた仮想位置情報である。
【0047】
ステップ103:データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶する。
【0048】
ネットワークからデータを受信すると、物理ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントのメモリにデータをバッファリングする。次に、vSwitch機能は、データにしたがって、データが送信されるべき仮想マシンを決定する。データが仮想マシンに送信される前に、まず物理マシンの物理データバッファに記憶されてから、転送プログラムによって仮想マシンに送信される必要がある。
【0049】
本出願の実施形態では、データが物理データバッファに記憶されているとき、仮想マシンに対応する物理受信キューが読み取られて、物理データバッファの情報を取得し、物理データバッファは、前の初期化プロセスで満たされている。次に、ハードウェアは、DMA(ダイレクトメモリアクセス)を使用して、物理マシンの指定されたメモリにデータを送信する。換言すれば、データが物理データバッファに記憶されているとき、物理位置情報が仮想位置情報として指定されているため、データは、実際には仮想位置情報にしたがって記憶されている。その後、対応する制御情報を単に構成して、ネットワークからのデータが物理ネットワークインターフェースコンポーネントの物理データバッファに配信されることを示す。転送プログラムは、制御情報にしたがって、配信されたデータが存在することを検出し、それに応じて、データが配信されるべき仮想マシンにしたがって仮想ネットワークインターフェースコンポーネントの制御情報を更新するか、または仮想ネットワークインターフェースコンポーネントにアクティブに通知する。最後に、仮想ネットワークインターフェースコンポーネントは、配信されたデータが存在することを検出した後、仮想位置情報にしたがって仮想データバッファからデータをフェッチするように仮想マシンに通知する。
【0050】
本出願の実施形態では、データは、仮想位置情報にしたがって物理データバッファに記憶され、これは、物理データバッファおよび仮想データバッファが同じ位置にあることを意味する。物理マシンの場合、データは、物理データバッファに記憶され、仮想マシンの場合、データは、仮想データバッファに記憶されている。したがって、物理データバッファから仮想データバッファにデータをコピーする必要はない。データが配信されたことが仮想マシンに通知されている限り、データは仮想データバッファからフェッチされることができる。
【0051】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0052】
図4を参照すると、本出願の実施形態IIにかかるデータ処理方法の一実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【0053】
ステップ201:仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てる。
【0054】
本出願の実施形態では、物理データバッファから仮想データバッファにデータをコピーするプロセスを排除するために、初期化プロセスを最初に最適化する必要がある。仮想マシンの初期化プロセスは、仮想記憶空間を準備するステップを含む。このステップは、最初に仮想ネットワークインターフェースコンポーネントに1つの仮想記憶空間を割り当てることと、その空間をデータ記憶領域として仮想ネットワークインターフェースコンポーネントのドライバに提供することとを含む。メモリプールは、パケットデータによって満たされるように構成された仮想データバッファを含む。
【0055】
例えば、仮想マシンのカーネルまたはAPPは、パケットの記憶領域としてバートアイオー-ネットインターフェースのドライバに提供される1つのメモリプール(すなわち、仮想記憶空間)の初期化の責を担う。
【0056】
ステップ202:仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定する。
【0057】
本出願の実施形態では、仮想記憶空間は、複数の仮想データバッファを含み、仮想ネットワークインターフェースコンポーネントは、最初に、具体的には仮想ネットワークインターフェースコンポーネントに割り当てられた仮想記憶空間から連続的にデキューして新たな仮想データバッファの仮想位置情報を取得することができる複数の仮想データバッファの仮想位置情報を判定する必要がある。具体的には、それは、本出願の実施形態によって限定されない任意の適用可能な方法を含むことができる。
【0058】
本出願の実施形態では、必要に応じて、仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定する実装方法は、以下を含むことができる:
サブステップS1:仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むこと、
サブステップS2:仮想記憶空間から仮想位置情報を取得すること、および、
サブステップS3:仮想位置情報を仮想バッファ制御情報に追加すること。
例えば、バートアイオー-ネットインターフェースのドライバは、デバイスの初期化を実行し、最終的にrxq仮想受信キューを初期化する。rxqの各要素は、記述子、すなわち仮想バッファ制御情報と呼ばれる。rxqキューを初期化するプロセスは、ここではGPA(ゲスト物理アドレス、仮想マシンの物理アドレス)と呼ばれる1つの有効な仮想データバッファを指す1つのデータバッファポインタを各記述子に入力することを含む。ドライバは、メモリプールから連続的にデキューすることにより、新たな仮想データバッファの仮想位置情報を取得した後、それを記述子(すなわち、仮想バッファ制御情報)に入力する。
【0059】
ステップ203:仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信する。
【0060】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された後、仮想ネットワークインターフェースコンポーネントの仮想受信キューが有効にされて、ネットワーク上でデータパケットを受信する準備をすることができる。物理マシンの転送プログラムは、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信した後、ステップ204を実行する。
【0061】
ステップ204:仮想受信キュー内の仮想位置情報に対して検出を実行する。
【0062】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知が受信された後、全ての仮想データバッファの仮想位置情報が取得されることができるように、仮想ネットワークインターフェースコンポーネントの仮想受信キューのスキャンおよび検出が実行される。例えば、バートアイオー-ネットインターフェースのrxqキューがスキャンされ、全てのデータバッファポインタの情報、すなわち仮想位置情報を取得する。
【0063】
ステップ205:仮想位置情報を物理アドレスに変換する。
【0064】
本出願の実施形態では、仮想マシンによって使用される仮想データバッファは、本質的に物理マシン上にある。しかしながら、仮想マシンの仮想位置情報は、仮想マシンによって使用される仮想データバッファ用である。仮想位置情報は仮想化されているため、物理マシン上の実際の物理アドレスとは異なる。しかしながら、それらの間の対応関係は存在する。物理マシン上の実際の物理アドレスを判定するために、仮想位置情報と、仮想位置関係と物理アドレスとの対応関係とにしたがって変換を行う必要がある。例えば、データバッファのGPAは、HPA(ホスト物理アドレス、物理マシンの物理アドレス)に変換される。
【0065】
ステップ206:物理アドレスにしたがって、物理データバッファの物理位置情報を判定する。
【0066】
本出願の実施形態では、仮想位置情報が物理アドレスに変換された後、物理データバッファの物理位置情報は、物理アドレスにしたがって判定されることができる。具体的には、物理位置情報が物理アドレスと等しくなるように割り当てを行うことができる。
【0067】
本出願の実施形態では、必要に応じて、物理アドレスにしたがって物理データバッファの物理位置情報を判定する実装方法は、物理データバッファの物理バッファ制御情報に物理アドレスを追加することを含むことができる。
【0068】
物理データバッファの物理バッファ制御情報は、物理位置情報を含む。割り当て動作は、物理位置情報が物理アドレスと等しくなるように実行され、これは、物理アドレスが物理バッファ制御情報に追加されることを意味する。具体的には、物理アドレスは、本出願の実施形態によって限定されない、任意の適用可能な方法で物理データバッファの物理バッファ制御情報に追加されることができる。
【0069】
本出願の実施形態では、必要に応じて、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、以下がさらに含められることができる:物理バッファ制御情報コンポーネントから構成される情報キューを作成すること、および空の物理記憶空間を作成すること。したがって、物理データバッファの物理バッファ制御情報に物理アドレスを追加する実装方法は、以下を含むことができる:情報キュー内の物理バッファ制御情報を取得すること、取得した物理バッファ制御情報に順番に物理アドレスを追加すること、および、物理バッファ制御情報を物理記憶空間に記憶すること。
【0070】
例えば、バートアイオー-ネットインターフェースが初期化された後、物理マシン上の転送プログラムは、1つのキュー、すなわち情報キューを作成する。キューの各要素は、データバッファ(物理データバッファ)の定義済み制御構造bctlであり、これはまた、記述子、すなわち物理バッファ制御情報と呼ばれることもある。空のメモリプールがさらに1つ作成され、いかなるデータバッファまたは制御構造も含んでいない。仮想位置情報が物理アドレスに変換された後、データバッファを有しない制御構造bctlが情報キューから取得され、bctl.addrは、GPAと等しくなるように設定され、最終的にメモリプール(すなわち、物理記憶空間)にエンキューされる。この時点で、メモリプールのデータバッファは、本質的に、仮想マシンによって割り当てられた仮想位置情報である。
【0071】
ステップ207:物理記憶空間内の物理バッファ制御情報を取得する。
【0072】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントの物理受信キューが初期化されると、物理位置情報を含む物理バッファ制御情報が物理記憶空間から取得される。物理位置情報は、本質的に、指定された仮想位置情報である。
【0073】
例えば、転送プログラムがスマートネットワークカード(すなわち、物理ネットワークインターフェースコンポーネント)のrxq物理受信キューを初期化する場合、メモリプール(すなわち、物理記憶空間)からのデキューが実行される。記述子(すなわち、物理バッファ制御情報)によって満たされたデータバッファポインタは、実際には仮想マシンの仮想位置情報である。
【0074】
ステップ208:物理ネットワークインターフェースコンポーネントの物理受信キューを作成する。
【0075】
本出願の実施形態では、物理ネットワークインターフェースコンポーネントを初期化するプロセスは、物理受信キューの初期化を含み、これは、物理受信キューが作成されることを意味する。物理受信キューは、それぞれの物理受信キューが異なる仮想ネットワークインターフェースコンポーネントに対して対応して作成されるように、複数の物理受信キューを含むことができる。
【0076】
ステップ209:物理バッファ制御情報を物理受信キューに追加する。
【0077】
本出願の実施形態では、取得された物理バッファ制御情報は、物理受信キューに追加される。例えば、スマートネットワークカードのrxq物理受信キューでは、物理バッファ制御情報は、記述子フォーマットでrxqに追加される。すなわち、記述子によって満たされたデータバッファ(すなわち、物理データバッファ)のポインタは、実際には仮想マシンのデータバッファ(すなわち、仮想データバッファ)のポインタである。
【0078】
ステップ210:データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定する。
【0079】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントおよび物理ネットワークインターフェースコンポーネントの双方が初期化されて有効にされた後、それらは、ネットワーク上でパケットデータの受信を開始することができる。
【0080】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有し、物理受信キューは、物理データバッファへの1対1のマッピングを有する。物理ネットワークインターフェースコンポーネントはvSwitch機能を有するため、物理ネットワークインターフェースコンポーネントは、最初にパケットデータが物理マシンに送信されてパケットデータが送信されるべき仮想マシンを物理マシンに決定させるのではなく、パケットデータが送信されるべき仮想マシンを決定する必要があることを意味する。したがって、データが送信されるべき仮想ネットワークインターフェースコンポーネント、すなわちデータが送信されるべき仮想マシンは、データに応じて判定される必要がある。
【0081】
例えば、スマートネットワークカードは、ネットワークから1つのパケットデータを受信し、それをネットワークカードのメモリにバッファリングする。次に、パケットヘッダにしたがって、vSwitch関数は、パケットデータが送信されるべき仮想マシン(すなわち、特定の仮想ネットワークインターフェースコンポーネント)を決定する。
【0082】
ステップ211:仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得する。
【0083】
本出願の実施形態では、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有するため、異なる仮想ネットワークインターフェースコンポーネントは、異なる物理受信キューに対応する。データが送信されるべき仮想ネットワークインターフェースコンポーネントへのデータの送信を可能にするために、対応する物理データバッファの物理位置情報は、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから取得される必要がある。具体的には、それは、本出願の実施形態によって限定されない、物理位置情報を取得する任意の適用可能な方法を含むことができる。
【0084】
ステップ212:物理位置情報にしたがってデータを記憶する。
【0085】
本出願の実施形態では、取得された物理位置情報は、本質的には仮想位置情報である。したがって、物理位置情報にしたがってデータを記憶することは、仮想位置情報にしたがってデータを記憶することと同等である。
【0086】
本出願の実施形態では、必要に応じて、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得する実装方法は、以下を備えることができる:
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むこと、および、
物理位置情報にしたがってデータを記憶した後、以下がさらに含められることができる:
物理マシンが受信データを検出するように、データが受信された旨を物理制御バッファ情報にマークすること。
【0087】
例えば、対応する物理受信キュー内の記述子(すなわち、物理バッファ制御情報)は、物理データバッファの情報を取得するために物理マシン上で読み取られる。物理位置情報を含む物理データバッファは、前の初期化プロセス中に満たされる。データが記憶された後、データ記憶が行われた旨を物理マシンが検出するために、記述子内の対応する制御ビットは、物理マシンの転送プログラムが受信データを検出することができるように、データが受信された旨をマークするように構成されることができる。
【0088】
本出願の実施形態では、必要に応じて、それは、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、データが受信される仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にマークすることをさらに備えることができる。
【0089】
仮想ネットワークインターフェースコンポーネントが受信データを検出するために、データが受信された旨を物理バッファ制御情報がマークされていることが検出されると、仮想ネットワークインターフェースコンポーネントの仮想受信キュー内の仮想バッファ制御情報もマークされ、データが受信された旨を示す。例えば、転送プログラムは、rxq(すなわち、物理受信キュー)内の記述子(すなわち、物理バッファ制御情報)が更新されていることを検出し、更新されたマークは、受信パケットデータが存在することを示す。次に、例えば、パケット長が要件を満たしているかどうかのチェック、パケットタイプのチェックなどの特定の論理チェックが実行された後、パケットデータをバートアイオー-ネットインターフェース(すなわち、仮想ネットワークインターフェースコンポーネント)のrxq(すなわち、仮想受信キュー)に送信するように判定される。次に、転送プログラムは、バートアイオー-ネットインターフェースの対応する記述子(すなわち、仮想バッファ制御情報)を更新し、対応する制御ビットの状態を変更して、データが受信された旨をマークする。
【0090】
本出願の実施形態では、必要に応じて、以下がさらに含められることができる:物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知する。
【0091】
仮想ネットワークインターフェースコンポーネントの仮想受信キュー内の仮想バッファ制御情報に受信データが存在する旨をマークすることは、仮想ネットワークインターフェースコンポーネントが仮想バッファ制御情報の検出を最初に実行した後にのみ、受信データが存在する旨を検出することを必要とするため、仮想ネットワークインターフェースコンポーネントが受信データを検出することを可能にする受動的な方法である。別の実装方法は、データが受信された旨を仮想ネットワークインターフェースコンポーネントに割り込みによって直接通知することである。最後に、仮想ネットワークインターフェースコンポーネントは、受信したパケットデータが存在する旨を検出し、データを処理するように仮想マシンのカーネルまたはAPPに通知し、受信プロセス全体が終了する。
【0092】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントに1つの仮想記憶空間を割り当て、仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定し、仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信し、仮想受信キュー内の仮想位置情報の検出を実行し、仮想位置情報を物理アドレスに変換し、物理アドレスにしたがって物理データバッファの物理位置情報を判定し、物理記憶空間内の物理バッファ制御情報を取得し、物理ネットワークインターフェースコンポーネントの物理受信キューを作成し、物理バッファ制御情報を物理受信キューに追加し、データにしたがってデータが送信されるべき仮想ネットワークインターフェースコンポーネントを判定し、前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから対応する物理データバッファの物理位置情報を取得し、物理位置情報にしたがってデータを記憶することにより、本出願は、データを受信すると、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0093】
図5を参照すると、本出願の実施形態IIIにかかるデータ処理方法の実施形態のフローチャートが示されている。本方法は、具体的には、以下のステップを備えることができる。
【0094】
ステップ301:データ記憶命令を受信する。
【0095】
本出願の実施形態では、データ記憶命令は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される。物理データバッファの位置は、物理位置として示される。したがって、仮想ネットワークインターフェースコンポーネントの仮想データバッファの位置は、仮想位置として示される。
【0096】
ステップ302:物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得する。
【0097】
本出願の実施形態では、スマートネットワークカード(すなわち、物理ネットワークインターフェースコンポーネント)がvSwitch機能を実装した後、データが物理データバッファに記憶されることになる場合、スマートネットワークカードは、データを異なる仮想マシンの対応する物理データバッファに記憶する必要がある。受信データを物理データバッファから仮想データバッファにコピーするプロセスを排除するために、物理データバッファの物理位置は、対応する仮想マシンの仮想データバッファの仮想位置として直接事前に指定される。データ記憶命令を受信した後、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置が取得される。
【0098】
実装方法は、以下を含むことができる:対応する仮想マシンの仮想位置を、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に記憶すること。データが物理位置に記憶される場合、対応する仮想位置は、物理位置から取得されることができる。具体的には、それは、本出願の実施形態によって限定されない、任意の適用可能な実装方法を含むことができる。
【0099】
ステップ303:データを仮想位置に記憶する。
【0100】
本出願の実施形態では、仮想位置が取得された後、仮想位置へのデータの記憶が実行される。
【0101】
本出願の実施形態によれば、データ記憶命令を受信し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得し、データを仮想位置に記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0102】
当業者が本出願をよりよく理解できるようにするために、本出願の実装方法が特定の例とともに以下に説明される。
【0103】
図6は、最適化されていないデータバッファリングプロセスの概略図を示している。
【0104】
データが受信される前に、仮想ネットワークインターフェースコンポーネントおよび物理ネットワークインターフェースコンポーネントの初期化が最初に実行される。
【0105】
仮想ネットワークインターフェースコンポーネントが初期化される。初期化プロセスは、データバッファ(すなわち、仮想データバッファ)を提供するために使用されるメモリプールの準備を含む。この例では、VM(すなわち、仮想マシン)は、バートアイオー-ネットRXリング(すなわち、仮想受信キュー)を含み、キュー内の要素記述子(すなわち、仮想バッファ制御情報)は、GPA(すなわち、仮想位置情報)を含む。VMは、ゲストメモリ(すなわち、仮想マシンで利用可能な記憶装置)をさらに含む。メモリプール(すなわち、仮想記憶空間)がゲストメモリに割り当てられ、メモリプール内のデータバッファが判定される。
【0106】
物理ネットワークインターフェースコンポーネントが初期化される。初期化プロセスは、データバッファ(すなわち、物理データバッファ)を提供するために使用されるメモリプールの準備を含む。この例では、ホスト(すなわち、物理マシン)は、NIC RXリング(すなわち、物理受信キュー)を含み、キュー内の要素記述子(物理バッファ制御情報)は、アドレス(すなわち、物理位置情報)を含む。ホストは、ホストメモリ(すなわち、物理マシンで利用可能な記憶装置)をさらに含む。メモリプール(すなわち、物理記憶空間)がホストメモリに割り当てられ、メモリプール内のデータバッファが判定される。
【0107】
パケットデータを受信するプロセスは、以下のとおりである。
【0108】
ステップ1:スマートNIC(すなわち、物理ネットワークインターフェースコンポーネント)がパケットを受信してスマートNICのデータバッファに記憶する。スマートNICは、vSwitch機能を含む。
【0109】
ステップ2:DMAを使用してスマートNICからホストメモリにデータを書き込む。物理受信キュー内の物理バッファ制御情報が読み取られ、物理位置情報にしたがって、ハードウェアは、DMAを使用して指定されたホストメモリ(すなわち、物理データバッファ)にパケットデータを送信し、記述子内の対応する制御ビットは、ネットワークパケットデータが物理受信キューに配信される旨を示すように構成される。
【0110】
ステップ3:物理データバッファから仮想データバッファにデータをコピーする。物理マシン上の転送プログラムは、バートアイオー-ネットの仮想受信キュー内の対応する記述子が更新された旨、パケットデータが受信された旨を検出し、特定の論理チェックの後、バートアイオー-ネットの特定のrxqに送信するように判定する。転送プログラムは、バートアイオー-ネットインターフェースのrxq(すなわち、仮想受信キュー)内の対応する記述子情報を読み取り、VM内のデータバッファのアドレスを取得する。転送プログラムは、ホストメモリのデータバッファからVMのデータバッファにデータをコピーし、記述子の対応する制御ビット(すなわち、仮想バッファ制御情報)を更新し、必要に応じてバートアイオー-ネットインターフェースに通知する。最後に、バートアイオー-ネットインターフェースは、VMがデータを消費するように、1つのパケットデータが受信された旨の通知をVMに送信し、受信プロセス全体が終了する。
【0111】
図7は、最適化されたデータバッファリングプロセスの概略図を示している。
【0112】
初期化プロセスは、以下のステップを含む。
【0113】
ステップ1.1:仮想ネットワークインターフェースコンポーネントを初期化する。VM内のカーネルまたはAPPは、パケットデータによって満たされるように構成されたデータバッファ(すなわち、仮想データバッファ)を含む1つのメモリプールを準備する。バートアイオー-ネットインターフェースは、rxq仮想受信キューを初期化してから、rxq仮想受信キューを有効にする。
【0114】
ステップ1.2:バートアイオー-ネットRXリング(すなわち、仮想受信キュー)をスキャンし、全てのデータバッファポインタ(すなわち、仮想データバッファの仮想位置情報)を取得する。
【0115】
ステップ1.3:転送プログラムが1つのキューを作成する。各要素は、bctlとして定義された1つの制御構造である。
【0116】
ステップ1.4:キューからbctl制御構造を取得し、ステップ1.2において取得したデータバッファポインタにしたがってbctl.addr(すなわち、物理位置情報)を入力し、それをメモリプールにエンキューする。具体的には、ステップ1.2において取得したデータバッファのGPAをHPAに変換してから、キューからデータバッファを有しない制御構造bctlを取得し、bctl.addr=HPAを設定し、最後にメモリプールにエンキューすることを含む。この時点で、メモリプールのデータバッファは、本質的に、VMによって割り当てられたアドレスである。
【0117】
ステップ1.5:スマートNIC(すなわち、物理ネットワークインターフェースコンポーネント)のドライバがrxq(すなわち、物理受信キュー)を初期化し、VMのデータバッファポインタ(すなわち、仮想位置情報)をメモリプール(すなわち、物理記憶空間)から取得する。転送プログラムがNICネットワークカードのrxqを初期化しているとき、メモリプールからのデキューが実行される。物理受信キューの記述子に入力されるデータバッファポインタは、実際にはVMによって準備されるデータバッファポインタである。NICネットワークカードは、rxq物理受信キューの初期化を完了し、rxq物理受信キューがネットワークパケットの受信を開始することを可能にする。
【0118】
データ受信プロセスは、以下のステップを含む。
【0119】
ステップ2.1:スマートNIC(すなわち、物理ネットワークインターフェースコンポーネント)がパケットを受信し、スマートNICのデータバッファに記憶する。スマートNICは、vSwitch機能を含む。vSwitch機能は、パケットのヘッダにしたがってパケットが送信されるべきVMを判定する。
【0120】
ステップ2.2:DMAを使用して仮想マシン(VM)のメモリにデータを記憶する。VMに対応する物理受信キュー内の記述子(すなわち、物理バッファ制御情報)が読み取られて、前の初期化プロセス中に満たされた物理データバッファの情報を取得する。次に、ハードウェアは、DMAを使用してパケットデータを指定されたホストメモリに送信し、ネットワークパケットデータがrxq物理受信キューに配信されることを示すように、物理受信キュー内の記述子の対応する制御ビットを構成する。
【0121】
ステップ2.3:バートアイオー-ネットRXリングの記述子(すなわち、仮想バッファ制御情報)を更新する。ホスト上の転送プログラムは、rxq物理受信キューの記述子が更新されてパケットデータが受信された旨を検出し、特定の論理チェックの後、それをバートアイオー-ネットインターフェースのrxq(すなわち仮想受信キュー)に送信するように判定する。転送プログラムは、バートアイオー-ネットRXリングの記述子を更新し、必要に応じて、バートアイオー-ネットインターフェースに通知する。最終的に、バートアイオー-ネットインターフェースは、パケットデータが受信された旨を検出し、データを消費するように仮想マシンに通知する。受信プロセス全体が終了する。
【0122】
図8を参照すると、本出願の実施形態IVにかかるデータバッファリング装置の実施形態の構造ブロック図が示されており、これは、具体的には、
【0123】
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得するように構成された情報取得モジュール401と、
【0124】
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定するように構成された情報指定モジュール402と、
【0125】
データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するように構成されたデータ記憶モジュール403と、を備えることができる。
【0126】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、仮想ネットワークインターフェースコンポーネントに1つの仮想記憶空間を割り当てるように構成された空間割り当てモジュールと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定するように構成された情報判定モジュールと、を備える。
【0127】
本出願の実施形態では、必要に応じて、情報判定モジュールは、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成するように構成され、仮想受信キューが仮想バッファ制御情報を含む仮想キュー作成サブモジュールと、
仮想記憶空間から仮想位置情報を取得するように構成された情報取得サブモジュールと、
仮想位置情報を仮想バッファ制御情報に追加するように構成された情報追加サブモジュールと、を備える。
本出願の実施形態では、必要に応じて、情報取得モジュールは、
仮想受信キュー内の仮想位置情報に対して検出を実行するように構成された情報検出サブモジュールを備える。
【0128】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記仮想受信キュー内の仮想位置情報の検出を実行する前に、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信するように構成された通知受信モジュールを備える。
【0129】
本出願の実施形態では、必要に応じて、情報指定モジュールは、
仮想位置情報を物理アドレスに変換するように構成されたアドレス変換サブモジュールと、
物理アドレスにしたがって物理データバッファの物理位置情報を判定するように構成された情報判定サブモジュールと、を備える。
【0130】
本出願の実施形態では、必要に応じて、情報判定サブモジュールは、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成された情報追加ユニットを備える。
【0131】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成するように構成された空間作成モジュールを備え、
情報追加ユニットは、
情報キュー内の物理バッファ制御情報を取得するように構成された情報取得サブユニットと、取得した物理バッファ制御情報に物理アドレスを順番に追加するように構成されたアドレス追加サブユニットと、
物理バッファ制御情報を物理記憶空間に記憶するように構成された情報記憶サブユニットと、を備える。
【0132】
本出願の実施形態では、必要に応じて、装置は、さらに、
前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、物理記憶空間内の物理バッファ制御情報を取得するように構成された制御情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成するように構成された物理キュー作成モジュールと、物理バッファ制御情報を物理受信キューに追加するように構成された制御情報追加モジュールと、を備える。
【0133】
本出願の実施形態では、必要に応じて、仮想ネットワークインターフェースコンポーネントは、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有し、物理受信キューは、物理データバッファへの1対1のマッピングを有し、データ記憶モジュールは、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定するように構成されたコンポーネント判定サブモジュールと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得するように構成された物理情報取得サブモジュールと、
物理位置情報にしたがってデータを記憶するように構成されたデータ記憶サブモジュールと、を備える。
【0134】
本出願の実施形態では、必要に応じて、物理情報取得サブモジュールは、
物理受信キュー内の物理バッファ制御情報を取得するように構成され、物理バッファ制御情報が物理位置情報を含む物理制御情報取得ユニットを備え、
装置は、さらに、
前記物理位置情報にしたがって物理制御バッファ情報にデータを記憶した後、物理マシンが受信データを検出するように、データが受信された旨をマークするように構成された第1のマーキングモジュールを備える。
【0135】
本出願の実施形態では、必要に応じて、装置は、さらに、
仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントの仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークするように構成された第2のマーキングモジュールを備える。
【0136】
本出願の実施形態では、必要に応じて、装置は、さらに、
物理バッファ制御情報にしたがって、データが受信された旨を仮想ネットワークインターフェースコンポーネントに通知するように構成された通知モジュールを備える。
【0137】
本出願の実施形態によれば、仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定し、データが物理データバッファに記憶されているときの仮想位置情報にしたがってデータを記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0138】
図9を参照すると、本出願の実施形態Vにかかるデータ処理装置の構造ブロック図が示されており、これは、具体的には、
データ記憶命令を受信するように構成され、データ記憶命令が、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される命令受信モジュール501と、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得するように構成された位置取得モジュール502と、
データを仮想位置に記憶するように構成されたデータ記憶モジュール503と、を備えることができる。
【0139】
本出願の実施形態によれば、データ記憶命令を受信し、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得し、データを仮想位置に記憶することにより、本出願は、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報が物理デバイスによる割り当てを介して判定される代わりに仮想位置情報として指定されるため、データを受信すると、物理ネットワークインターフェースコンポーネントが、受信データを仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファに直接記憶することを可能にし、それにより、物理ネットワークインターフェースコンポーネントによって指定されたデータバッファから仮想ネットワークインターフェースコンポーネントによって指定されたデータバッファにデータをコピーするプロセスを不要にし、これは、データの受信にかかる時間を短縮し、データ受信のネットワーク性能を向上せ、ネットワークの遅延を低減する。
【0140】
装置の実施形態は、本質的に方法の実施形態と類似しているため、それらは、より簡潔な方法で説明される。関連する内容については、方法の実施形態の説明を参照することができる。
【0141】
本開示の実施形態は、任意の適切なハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせを使用して、所望の構成を形成するシステムとして実装されることができる。
図10は、本開示に記載される様々な実施形態を実装するために使用されることができる例示的なシステム(または装置)600を概略的に示している。
【0142】
一実施形態では、
図10は、1つ以上のプロセッサ602と、(1つ以上の)プロセッサ602の少なくとも1つに結合されたシステム制御モジュール(チップセット)604と、システム制御モジュール604に結合されたシステムメモリ606と、システム制御モジュール604に結合された不揮発性メモリ(NVM)/記憶装置608と、システム制御モジュール604に結合された1つ以上の入力/出力装置610と、システム制御モジュール604に結合されたネットワークインターフェース612と、を有する例示的なシステム600を示している。
【0143】
プロセッサ602は、1つ以上のシングルコアまたはマルチコアプロセッサを備えることができ、プロセッサ602は、汎用プロセッサまたは専用プロセッサ(例えば、グラフィックス処理ユニット、アプリケーションプロセッサ、ベースバンドプロセッサなど)の任意の組み合わせを含むことができる。いくつかの実施形態では、システム600は、本出願で説明されるブラウザとして機能することができる。
【0144】
いくつかの実施形態では、システム600は、命令(例えば、システムメモリ606またはNVM/記憶装置608)を有する1つ以上のコンピュータ可読媒体と、1つ以上のコンピュータ可読媒体と互換性があり、モジュールを実装するための命令を実行し、したがって本開示に記載された動作を実行するように構成された1つ以上のプロセッサ602とを備えることができる。
【0145】
一実施形態では、システム制御モジュール604は、(1つ以上の)プロセッサ602の少なくとも1つおよび/またはシステム制御モジュール604と通信する任意の適切な装置またはコンポーネントに対する任意の適切なインターフェースを提供する任意の適切なインターフェースコントローラを備えることができる。
【0146】
システム制御モジュール604は、システムメモリ606へのインターフェースを提供するためのメモリコントローラモジュールを備えることができる。メモリコントローラモジュールは、ハードウェアモジュール、ソフトウェアモジュール、および/またはファームウェアモジュールとすることができる。
【0147】
システムメモリ606は、例えば、システム600のデータおよび/または命令をロードおよび記憶するために使用されることができる。一実施形態では、システムメモリ606は、任意の適切な揮発性メモリ、例えば、適切なDRAMを備えることができる。いくつかの実施形態では、システムメモリ606は、ダブルデータレートの第4世代同期ダイナミックランダムアクセスメモリ(DDR4 SDRAM)を備えることができる。
【0148】
一実施形態では、システム制御モジュール604は、NVM/記憶装置608および(1つ以上の)入力/出力装置610へのインターフェースを提供するための1つ以上の入力/出力コントローラを備えることができる。
【0149】
例えば、NVM/記憶装置608は、データおよび/または命令を記憶するために使用されることができる。NVM/記憶装置608は、任意の適切な不揮発性メモリ(例えば、フラッシュメモリ)を備えることができ、および/または任意の適切な(1つ以上の)不揮発性記憶装置(例えば、1つ以上のハードディスクドライブ(HDD)、1つ以上のコンパクトディスク(CD)ドライブ、および/または1つ以上のデジタル多用途ディスク(DVD)ドライブ)を含むことができる。
【0150】
NVM/記憶装置608は、システム600が設置される装置の物理的に一部であるか、または必ずしも装置の一部でなくても装置にとってアクセス可能とすることができる記憶リソースを備えることができる。例えば、NVM/記憶装置608は、ネットワークを介して(1つ以上の)入力/出力装置610によってアクセスされることができる。
【0151】
(1つ以上の)入力/出力装置610は、他の任意の適切な装置と通信するためのシステム600へのインターフェースを提供することができる。入力/出力装置610は、通信コンポーネント、音声コンポーネント、センサコンポーネントなどを備えることができる。ネットワークインターフェース612は、1つ以上のネットワークを介して通信するためのシステム600へのインターフェースを提供することができ、システム600は、例えば、Wi-Fi、2G、3G、またはそれらの組み合わせなどの通信規格ベースの無線ネットワークにアクセスして無線通信を実行することにより、1つ以上の無線ネットワーク規格および/またはプロトコルのいずれかにしたがって、無線ネットワーク内の1つ以上のコンポーネントと無線通信を実行することができる。
【0152】
一実施形態では、(1つ以上の)プロセッサ602の少なくとも1つは、システム制御モジュール604の1つ以上のコントローラ(例えば、メモリコントローラモジュール)のロジックとともにパッケージ化されることができる。一実施形態では、(1つ以上の)プロセッサ602の少なくとも1つは、システム制御モジュール604の1つ以上のコントローラのロジックとともにパッケージ化されて、システムインパッケージ(SiP)を形成することができる。一実施形態では、(1つ以上の)プロセッサ602の少なくとも1つは、同じ型上のシステム制御モジュール604の1つ以上のコントローラのロジックと統合されることができる。一実施形態では、(1つ以上の)プロセッサ602の少なくとも1つは、同じ型上のシステム制御モジュール604の1つ以上のコントローラのロジックと統合されてシステムオンチップ(SoC)を形成することができる。
【0153】
様々な実施形態では、システム600は、限定されるものではないが、ブラウザ、ワークステーション、デスクトップコンピューティング装置、またはモバイルコンピューティング装置(例えば、ラップトップコンピューティング装置、ハンドヘルドコンピューティング装置、タブレットコンピュータ、ネットブックなど)とすることができる。様々な実施形態では、システム600は、より多くのまたはより少ないコンポーネントおよび/または異なるアーキテクチャを有することができる。例えば、いくつかの実施形態では、システム600は、1つ以上のカメラ、キーボード、液晶ディスプレイ(LCD)画面(タッチ画面ディスプレイを含む)、不揮発性メモリポート、複数のアンテナ、グラフィックチップ、特定用途向け集積回路(ASIC)、およびスピーカを備え、
ディスプレイがタッチパネルを含む場合、ディスプレイ画面は、ユーザからの入力信号を受信するためのタッチ画面ディスプレイとして実装されることができる。タッチパネルは、タッチパネル上のタッチ、スワイプ、およびジェスチャを検知するための1つ以上のタッチセンサを備える。タッチセンサは、タッチまたはスワイプ動作の境界を検知するだけでなく、タッチまたはスワイプ操作に関連する持続時間および圧力を検出することもできる。
【0154】
本出願の実施形態は、さらに、1つ以上のモジュール(プログラム)が記憶される不揮発性の可読記憶媒体を提供し、端末装置に1つ以上のモジュールを適用することは、端末装置が本出願の実施形態における各方法ステップの命令を実行することを可能にする。
【0155】
例は、メモリ、プロセッサ、およびメモリに記憶されてプロセッサ上で実行可能なコンピュータプログラムを備えるコンピュータデバイスを提供し、プロセッサは、コンピュータプログラムを実行したときに、本出願の実施形態に記載されている方法を実行する。
【0156】
例は、さらに、コンピュータプログラムが記憶されたコンピュータ可読記憶媒体を提供し、プログラムは、プロセッサによって実行されたときに、本出願の実施形態に記載された方法の1つ以上を実装する。
【0157】
本出願の実施形態は、データバッファリング方法および装置を開示する。例1は、データバッファリング方法であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することと、
データが物理データバッファに記憶されているときに、仮想位置情報にしたがってデータを記憶することと、を備える、方法を含む。
【0158】
例2は、前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、方法が、さらに、
仮想ネットワークインターフェースコンポーネントに仮想記憶空間を割り当てることと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することと、を備える、例1に記載の方法を含むことができる。
【0159】
例3は、前記仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定することが、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成することであって、仮想受信キューが仮想バッファ制御情報を含むことと、
仮想記憶空間から、仮想位置情報を取得することと、
仮想位置情報を仮想バッファ制御情報に追加することと、を備える、例1および/または例2の方法を含むことができる。
【0160】
例4は、前記仮想ネットワークインターフェースコンポーネントのデータバッファの仮想位置情報を取得することが、
仮想受信キュー内の仮想位置情報の検出を実行することを備える、例1から3のうちの1つ以上に記載の方法を含むことができる。
【0161】
例5は、前記仮想受信キュー内の仮想位置情報の検出を実行する前に、本方法が、さらに、
仮想ネットワークインターフェースコンポーネントの初期化が完了した旨の通知を受信することを備える、例1から4のうちの1つ以上に記載の方法を含むことができる。
【0162】
例6は、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定することが、
仮想位置情報を物理アドレスに変換することと、
物理アドレスにしたがって、物理データバッファの物理位置情報を判定することと、を備える、例1から5のうちの1つ以上に記載の方法を含むことができる。
【0163】
例7は、前記物理アドレスにしたがって物理データバッファの物理位置情報を判定することが、
物理データバッファの物理バッファ制御情報に物理アドレスを追加することを備える、例1から6のうちの1つ以上に記載の方法を含むことができる。
【0164】
例8は、前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、本方法が、さらに、
物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成することを備え、
前記物理データバッファの物理バッファ制御情報に物理アドレスを追加することが、
情報キュー内の物理バッファ制御情報を取得することと、
取得した物理バッファ制御情報に順番に物理アドレスを追加することと、
物理バッファ制御情報を物理記憶空間に記憶することと、を備える、例1から7のうちの1つ以上に記載の方法を含むことができる。
【0165】
例9は、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、本方法が、さらに、
物理記憶空間内の物理バッファ制御情報を取得することと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成することと、
物理バッファ制御情報を物理受信キューに追加することと、を備える、例1から8のうちの1つ以上に記載の方法を含むことができる。
【0166】
例10は、仮想ネットワークインターフェースコンポーネントが、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有し、物理受信キューが、物理データバッファへの1対1のマッピングを有し、前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶することが、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定することと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得することと、
物理位置情報にしたがってデータを記憶することと、を備える、例1から9のうちの1つ以上に記載の方法を含むことができる。
【0167】
例11は、前記仮想ネットワークインターフェース構成要素に対応する物理受信キューから対応する物理データバッファの物理位置情報を前記取得することが、
物理受信キュー内の物理バッファ制御情報を取得することであって、物理バッファ制御情報が物理位置情報を含むことを備え、
物理位置情報にしたがってデータを前記記憶した後、本方法が、さらに、
物理マシンが受信データを検出するように、データが受信された旨を物理制御バッファ情報にマークすることを備える、例1から10のうちの1つ以上に記載の方法を含むことができる。
【0168】
例12は、本方法が、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントが受信データを検出するように、仮想ネットワークインターフェースコンポーネント内の仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークすることを備える、例1から11のうちの1つ以上に記載の方法を含むことができる。
【0169】
例13は、本方法が、さらに、
物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントにデータが受信された旨を通知することを備える、例1から12のうちの1つ以上に記載の方法を含むことができる。
【0170】
例14は、データ処理方法であって、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用されるデータ記憶命令を受信することと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得することと、
データを仮想位置に記憶することと、を備える、方法を含む。
【0171】
例15は、データバッファリング装置であって、
仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得するように構成された情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定するように構成された情報指定モジュールと、
データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶するように構成されたデータ記憶モジュールと、を備える、装置を含む。
【0172】
例16は、装置が、さらに、
前記仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置情報を取得する前に、仮想ネットワークインターフェースコンポーネントに1つの仮想記憶空間を割り当てるように構成された空間割り当てモジュールと、
仮想記憶空間内の複数の仮想データバッファの仮想位置情報を判定するように構成された情報判定モジュールと、を備える、例15に記載の装置を含むことができる。
【0173】
例17は、情報判定モジュールが、
仮想ネットワークインターフェースコンポーネントの仮想受信キューを作成するように構成され、仮想受信キューが仮想バッファ制御情報を含む仮想キュー作成サブモジュールと、
仮想記憶空間から仮想位置情報を取得するように構成された情報取得サブモジュールと、
仮想位置情報を仮想バッファ制御情報に追加するように構成された情報追加サブモジュールと、を備える、例15および/または例16に記載の装置を含むことができる。
【0174】
例18は、情報取得モジュールが、
仮想受信キュー内の仮想位置情報に対して検出を実行するように構成された情報検出サブモジュールを備える、例15から17のうちの1つ以上に記載の装置を含むことができる。
【0175】
例19は、装置が、さらに、
前記仮想受信キュー内の仮想位置情報の検出を実行する前に、仮想ネットワークインターフェースコンポーネントが初期化された旨の通知を受信するように構成された通知受信モジュールを備える、例15から18のうちの1つ以上に記載の装置を含むことができる。
【0176】
例20は、情報指定モジュールが、
仮想位置情報を物理アドレスに変換するように構成されたアドレス変換サブモジュールと、
物理アドレスにしたがって物理データバッファの物理位置情報を判定するように構成された情報判定サブモジュールと、を備える、例15から19のうちの1つ以上に記載の装置を含むことができる。
【0177】
例21は、情報判定サブモジュールが、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成された情報追加ユニットを備える、例15から20のうちの1つ以上に記載の装置を含むことができる。
【0178】
例22は、装置が、さらに、
前記物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置情報を仮想位置情報として指定する前に、物理バッファ制御情報から構成される情報キューを作成し、空の物理記憶空間を作成するように構成された空間作成モジュールを備え、
情報追加ユニットが、
情報キュー内の物理バッファ制御情報を取得するように構成された情報取得サブユニットと、
物理データバッファの物理バッファ制御情報に物理アドレスを追加するように構成されたアドレス追加サブユニットと、
物理バッファ制御情報を物理記憶空間に記憶するように構成された情報記憶サブユニットと、を備える、例15から21のうちの1つ以上に記載の装置を含むことができる。
【0179】
例23は、装置が、さらに、
前記データが物理データバッファに記憶されているときに仮想位置情報にしたがってデータを記憶する前に、物理記憶空間内の物理バッファ制御情報を取得するように構成された制御情報取得モジュールと、
物理ネットワークインターフェースコンポーネントの物理受信キューを作成するように構成された物理キュー作成モジュールと、
物理バッファ制御情報を物理受信キューに追加するように構成された制御情報追加モジュールと、を備える、例15から22のうちの1つ以上に記載の装置を含むことができる。
【0180】
例24は、仮想ネットワークインターフェースコンポーネントが、物理ネットワークインターフェースコンポーネントの物理受信キューへの1対1のマッピングを有し、物理受信キューが、物理データバッファへの1対1のマッピングを有し、データ記憶モジュールが、
データにしたがって、データが送信されるべき仮想ネットワークインターフェースコンポーネントを判定するように構成されたコンポーネント判定サブモジュールと、
前記仮想ネットワークインターフェースコンポーネントに対応する物理受信キューから、対応する物理データバッファの物理位置情報を取得するように構成された物理情報取得サブモジュールと、
物理位置情報にしたがってデータを記憶するように構成されたデータ記憶サブモジュールと、を備える、例15から23のうちの1つ以上に記載の装置を含むことができる。
【0181】
例25は、物理情報取得サブモジュールが、
物理受信キュー内の物理バッファ制御情報を取得するように構成され、物理バッファ制御情報が物理位置情報を含む物理制御情報取得ユニットを備え、
装置が、さらに、
前記物理位置情報にしたがって物理制御バッファ情報にデータを記憶した後、物理マシンが受信データを検出するように、データが受信された旨をマークするように構成された第1のマーキングモジュールを備える、例15から24のうちの1つ以上に記載の装置を含むことができる。
【0182】
例26は、装置が、さらに、
仮想ネットワークインターフェースコンポーネントが受信データを検出するように、物理バッファ制御情報にしたがって、仮想ネットワークインターフェースコンポーネントの仮想受信キューの仮想バッファ制御情報にデータが受信された旨をマークするように構成された第2のマーキングモジュールを備える、例15から25のうちの1つ以上に記載の装置を含むことができる。
【0183】
例27は、装置が、さらに、
物理バッファ制御情報にしたがって、データが受信された旨を仮想ネットワークインターフェースコンポーネントに通知するように構成された通知モジュールを備える、例15から26のうちの1つ以上に記載の装置を含むことができる。
【0184】
例28は、データ処理装置であって、
データ記憶命令を受信するように構成され、データ記憶命令が、物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置にデータを記憶するために使用される命令受信モジュールと、
物理ネットワークインターフェースコンポーネントの物理データバッファの物理位置に対応する仮想ネットワークインターフェースコンポーネントの仮想データバッファの仮想位置を取得するように構成された位置取得モジュールと、
データを仮想位置に記憶するように構成されたデータ記憶モジュールと、を備える、装置を含む。
【0185】
例29は、メモリと、プロセッサと、メモリに記憶されてプロセッサ上で実行可能なコンピュータプログラムとを備えるコンピュータデバイスであって、プロセッサが、コンピュータプログラムを実行したときに例1~14のうちの1つ以上の方法を実装する、コンピュータデバイスを含む。
【0186】
例30は、コンピュータプログラムが記憶されたコンピュータ可読記憶媒体であって、プログラムが、プロセッサによって実行されたときに例1~14のうちの1つ以上の方法を実装する、コンピュータ可読記憶媒体を含む。
【0187】
いくつかの実施形態は、例示的および説明的な目的のためであるが、客観的な実施形態を例示および説明する同じ目的を達成するために使用される様々な代替および/または同等の実装方法または計算は、本出願の実装の範囲から逸脱しない。本出願は、本明細書に記載の実施形態の任意のいかなる変更または変形もカバーすることを意図している。したがって、本明細書に記載の実施形態は、特許請求の範囲およびその均等物によってのみ限定されることは明らかである。
【符号の説明】
【0188】
401 情報取得モジュール
402 情報指定モジュール
403 データ記憶モジュール
501 命令受信モジュール
502 位置取得モジュール
503 データ記憶モジュール
600 システム/装置
602 プロセッサ
604 システム制御モジュール
606 システムメモリ
608 記憶装置
610 出力装置
612 ネットワークインターフェース