JP7309579B2 - 通信装置、通信方法及びプログラム - Google Patents

通信装置、通信方法及びプログラム Download PDF

Info

Publication number
JP7309579B2
JP7309579B2 JP2019206315A JP2019206315A JP7309579B2 JP 7309579 B2 JP7309579 B2 JP 7309579B2 JP 2019206315 A JP2019206315 A JP 2019206315A JP 2019206315 A JP2019206315 A JP 2019206315A JP 7309579 B2 JP7309579 B2 JP 7309579B2
Authority
JP
Japan
Prior art keywords
descriptor
storage area
frame
virtual
unit
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.)
Active
Application number
JP2019206315A
Other languages
English (en)
Other versions
JP2021082867A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2019206315A priority Critical patent/JP7309579B2/ja
Priority to US17/004,233 priority patent/US11625199B2/en
Priority to EP20193371.0A priority patent/EP3822780A1/en
Publication of JP2021082867A publication Critical patent/JP2021082867A/ja
Application granted granted Critical
Publication of JP7309579B2 publication Critical patent/JP7309579B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明の実施形態は通信装置、通信方法及びプログラムに関する。
工場内の各機器を接続する産業用ネットワークや、車載システムの制御コントローラを接続する車載ネットワークなどの分野では、リアルタイム性が求められる。近年、産業用ネットワークや車載ネットワークなどでは、イーサネット(登録商標)の利用が進んでおり、様々なリアルタイムイーサネット規格が提案されている。
米国特許9,454,497号明細書 特開2018-133758号公報
しかしながら、従来の技術では、リアルタイム通信で要求される転送処理の遅延を抑えることが難しかった。
実施形態の通信装置は、通信を実施する複数のネットワークノードと、前記複数のネットワークノードの送信タイミングを制御する転送制御ネットワークノードと、を備える。送信側のネットワークノードは、書き込み部と記述子送信部とを備える。前記転送制御ネットワークノードは、転送制御部を備える。前記転送制御部は、第1の送信制御部と、第2の送信制御部とを備える。受信側のネットワークノードは、記述子受信部と読み出し部とを備える。書き込み部は、フレームの記述子を転送するタイミングよりも前に、第一仮想記憶領域にフレームを書き込む。記述子送信部は、前記書き込み部が前記第一仮想記憶領域に前記フレームを書き込んだ後に、前記転送制御ネットワークノードへ前記記述子を受け渡す。転送制御部は、前記フレームの記述子を転送するタイミングを制御する。第1の送信制御部は、前記送信側のネットワークノードのフレーム送信タイミングを示す第1のスケジュール情報に従って、前記記述子を転送する。第2の送信制御部は、前記転送制御ネットワークノードのフレーム送信タイミング示す第2のスケジュール情報に従って、前記記述子を転送する。記述子受信部は、前記記述子を受け付ける。読み出し部は、前記記述子受信部により前記記述子が受け付けられた場合、前記記述子に基づいて特定された第二仮想記憶領域から前記フレームを読み出す。
複数の仮想マシンが動作する通信装置の例を示す概略図。 通常のハードウェアを用いたQbv対応のTSNスイッチの例を示す図。 仮想マシンを用いたQbv対応のソフトウェアTSNスイッチの例を示す図。 Qbvに関わる処理を1つの仮想マシンに集約する場合の例を示す図。 仮想マシン間のデータ受け渡しについて説明するための図。 ソフトウェアTSNスイッチの動作例を説明するための図。 仮想マシン間を専用のネットワークで接続した場合の例を示す図。 第1実施形態の通信装置の機能構成の例を示す図。 第1実施形態の書き込み部の動作例を示すフローチャート。 第1実施形態の記述子送信部の動作例を示すフローチャート。 第1実施形態の転送制御部の動作例を示すフローチャート。 第1実施形態の記述子受信部の動作例を示すフローチャート。 第1実施形態の読み出し部の動作例を示すフローチャート。 第2実施形態の仮想マシン間のデータ受け渡しについて説明するための図。 第2実施形態の通信装置の機能構成の例を示す図。 第3実施形態の仮想マシン間のデータ受け渡しについて説明するための図。 第3実施形態の通信装置の機能構成の例(マップ切替前)を示す図。 第3実施形態の通信装置の機能構成の例(マップ切替後)を示す図。 第4実施形態の通信装置の機能構成の例を示す図。 第4実施形態の送信仮想記憶領域及び受信仮想記憶領域の例を示す図。 図19Aの記憶領域の構造の例を示す図。 第1乃至第4実施形態の通信装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、通信装置、通信方法及びプログラムの実施形態を詳細に説明する。
産業用システムや車載システムにおいては、仮想計算機技術の適用が進んでいる。1台の物理計算機上に複数の仮想マシンを集約することでコスト低減などの効果が見込まれる。このような背景から仮想マシン間の通信処理を担うソフトウェアスイッチもリアルタイムイーサネットに対応することが求められる。
仮想マシン間のリアルタイム通信処理をソフトウェアで実現する場合、通信処理の処理遅延が問題となる。具体的には、仮想マシン間でデータ受け渡しを行う時のデータコピーとhypercall発行によるオーバヘッドが大きく影響する。データコピーやhypercallの発行回数を減らす方法として、ソフトウェアスイッチを用いずに通信する仮想マシンの組み合わせごとに専用の記憶領域を用意(送信元の仮想マシンのメモリ領域と宛先の仮想マシンのメモリ領域とを直接マップ)し、各仮想マシンが独立してフレーム転送処理を実施する(送信元の仮想マシン及び宛先の仮想マシンの組み合わせごとに専用ネットワークを用意する)ことが考えられる。しかしながら、この方法ではリアルタイム通信で要求される各ネットワークノードが同期したフレーム転送を実現できなくなる。
<TSNの説明>
はじめに、高いリアルタイム性が求められる産業用ネットワーク及び車載ネットワークなどの分野で利用されている規格の例について説明する。
例えば、イーサネット(登録商標)上でリアルタイム性を実現する規格として、TSN(Time-Sensitive Networking)の規格化が、IEEE 802.1 TSN Taskで進んでいる。TSNは複数の規格から構成される。TSNは、プロオーディオなどで用いられている低遅延性を実現するAVB(Audio/Video Bridging)を拡張した規格である。TSNは、産業用ネットワーク及び車載ネットワークなどにも適用できるようにするため、AVBよりも高いリアルタイム性に加えて、高信頼性の実現を目指す規格である。
TSN規格の1つにIEEE 802.1Qbvがある。IEEE 802.1Qbvは、優先度が異なる複数の送信バッファ(IEEE 802.1Qbvでは、送信キュー)を事前に設定したスケジュール情報(ゲートコントロールリスト)に従って制御することで、優先度(トラフィッククラス)ごとにデータ(フレーム)の送信タイミングを厳密に制御することが可能になる。各送信バッファにはデータの送信を許可するゲートを設ける。ゲートが開いている場合(オープン状態)は、データの送信が許可され、閉じている場合(クローズ状態)はデータの送信は禁止される。
<仮想マシンとソフトウェアスイッチの説明>
次に、産業用システム及び車載システムなどに仮想化技術などのソフトウェア技術を適用する場合の例について説明する。例えば、仮想マシン間を接続するスイッチ(仮想スイッチ)をソフトウェアで実現することが考えられる。
図1は、複数の仮想マシン1a~1cが動作する通信装置100の例を示す概略図である。図1の例では、ホストプロセッサ10上で動作する仮想マシン1aによりスイッチ機能を実現する場合を示す。通信装置100は、ホストプロセッサ10、NIC(Network Interface Card)20a及び20bを備える。以下、NIC20a及び20bを区別しない場合は、単にNIC20という。
ホストプロセッサ10は、通信装置100を制御する装置である。NIC20は、通信装置100の物理インタフェースである。仮想マシンモニタ2は、仮想マシン1a~1cを制御する。仮想マシンモニタ2はホストプロセッサ10によって実現される。仮想マシン1a~1cは、仮想マシンモニタ2上で動作する。
仮想マシン1aは、ソフトウェアスイッチ3を備える。ソフトウェアスイッチ3は、ネットワークドライバ4a~4b、フォワーディング処理部5、FDB(forwarding/filtering database)6及びバックエンド仮想ネットワークドライバ7b~7cを備える。
ネットワークドライバ4a~4bは、NIC20とフォワーディング処理部5との間の通信を制御する。ネットワークドライバ4a~4bは、NIC20が受信したフレーム(データ)を読み出し、フォワーディング処理部5へ入力する。また、ネットワークドライバ4a~4bは、フォワーディング処理部5から受け取ったフレームをNIC20へ書き込む。
フォワーディング処理部5は、FDB6を参照して、フレームの転送先を制御する。
バックエンド仮想ネットワークドライバ7b~7cは、ソフトウェアスイッチ3が動作する仮想マシン1aと、その他の仮想マシン1b~1c(ゲストOS)との間の通信を制御する。
仮想マシン1bは、フロントエンド仮想ネットワークドライバ8b及びアプリケーション/ネットワークスタック(アプリ/スタック)9bを備える。フロントエンド仮想ネットワークドライバ8bは、アプリ/スタック9bとソフトウェアスイッチ3の間の通信を制御する。
仮想マシン1cは、フロントエンド仮想ネットワークドライバ8c及びアプリケーション/ネットワークスタック(アプリ/スタック)9cを備える。フロントエンド仮想ネットワークドライバ8cは、アプリ/スタック9cとソフトウェアスイッチ3の間の通信を制御する。
<ソフトウェアスイッチでIEEE 802.1Qbvを実現する説明>
IEEE 802.1Qbvのような各フレームの送信タイミングを厳密に制御する通信処理をソフトウェアスイッチで実現する場合について説明する。
図2は通常のハードウェアを用いたQbv対応のTSNスイッチ200の例を示す。図2では、TSNスイッチ200は3つのネットワークインタフェース21a~21cを持つ。各ネットワークインタフェース21a~21cは、ノード31a~31cのネットワークインタフェース32a~32cと接続している。各ネットワークインタフェース32a~32cは、送信処理(Tx)と受信処理(Rx)とを実施する。送信処理(Tx)は、IEEE 802.1Qbvに対応しており、事前に設定されたスケジュール情報に従ってフレームの送信タイミングを決定する(Qbv)。
図3は仮想マシン1dを用いたQbv対応のソフトウェアTSNスイッチ200-2の例を示す図である。図3の例は、図2のノード31a~31cを仮想マシン1e~1gとして1台の物理マシンに集約し、それらの仮想マシン1e~1gを仮想マシン1dで実現したTSNスイッチ(ソフトウェアTSNスイッチ200-2)で接続した場合を示す。
図3のように、単純にTSNスイッチを仮想化するとゲストOS(仮想マシン1e~1g)のフロントエンド仮想ネットワークドライバ8e~8gと、ソフトウェアTSNスイッチ200-2のバックエンド仮想ネットワークドライバ7e~7gがそれぞれQbv処理を実施する。
この場合、以下の2つの問題が発生する。
(1)仮想マシン間の時刻同期
(2)ゲストOSの処理オーバヘッド
まず、(1)に関して説明する。TSN(Qbv)では各ネットワークノードが時刻同期し、同期された時刻とスケジュール情報とを参照して、フレームの送信タイミングを制御する。このため、図3の構成においても、各仮想マシン1d~1gが持つシステムクロックやRTC(Real Time Clock)などの時刻を同期する必要がある。同期方法としては、通常のネットワーク処理と同じようにPTP(Precision Time Protocol)を用いる方法や、仮想マシンモニタやドライバが時刻同期機能を提供する方法が考えられるが、どの場合も処理オーバヘッドとなる。
次に、(2)に関して説明する。TSNのようなリアルタイム通信をソフトウェアで実現する場合、RTOS(Real Time OS)を用いるなどして、処理時間や処理時間の揺らぎ(ジッタ)を小さくすることが望ましい。しかしながら、仮想マシン1e~1g(各ネットワークノード)で動作するOSは、アプリケーションによっては汎用OSが用いられる。汎用OSのタスクスケジューリングでは、CPU(Central Processing Unit)の利用効率や省電力化などのために複雑な制御が発生する。これは実行時間が見積困難となる要因となり、リアルタイム処理(リアルタイム通信)で要求される決定論的な(Deterministic)動作を実現できなくなる。
上記の問題を解決する方法として、Qbvに係わる処理を1つの仮想マシン1dに集約することが考えらえる。
図4はQbvに関わる処理を1つの仮想マシン1hに集約する場合の例を示す図である。図4では、図3のフロントエンド仮想ネットワークドライバ8e~8gの処理を、TSNに係わるバックエンド処理部(Tx_be、Rx_be)と、それ以外のフロントエンド処理部(Tx_fe、Rx_fe)とに分離している。TSNに係わる部分はソフトウェアTSNスイッチ200-3のバックエンド仮想ネットワークドライバ7i~7kで処理する。
Tx_beは、各仮想マシン1i~1kのQbv処理を含む送信処理を実施する。Qbv処理の他には、IEEE 802.1QavやStrict Priority(キューの優先度制御)、IEEE802.1CB(冗長化処理)などが考えられるが、これらに限定されるものではない。
Rx_beは、各仮想マシン1i~1kの受信処理を実施する。Rx_beでは、IEEE 802.1Qci(フィルタリング処理)、IEEE802.1CB(冗長化処理)などが考えられるが、これらに限定されるものではない。
Tx_fe及びRx_feは、各仮想マシン1i~1kとソフトウェアTSNスイッチ200-3の間のフレーム受け渡し処理を実施する。
以上のように、図4の構成により、TSNに係わる処理を1つの仮想マシン1h(ソフトウェアTSNスイッチ200-3)に集約する。これにより、TSN処理で参照する時刻は1つに集約でき、図3のような複数仮想マシン1i~1k間での時刻同期処理をする必要がない。また、各仮想マシン1i~1kで汎用OSを利用したとしても、TSN処理に係わる部分は汎用OSのタスクスケジューリングなどの影響を受けなくなる。
<仮想マシン間のデータ受け渡しに関する説明>
図5は仮想マシン1l及び1m間のデータ受け渡しについて説明するための図である。
仮想マシン1lは、アプリケーション41l及びカーネル42lを備える。アプリケーション41lでは、仮想メモリ(Virtual memory)43lによってデータの記憶制御が行われる。カーネル42lでは、疑似物理メモリ(Pseudo-physical memory)44lによってデータの記憶制御が行われる。同様に、アプリケーション41mでは、仮想メモリ43mによってデータの記憶制御が行われる。カーネル42mでは、疑似物理メモリ44mによってデータの記憶制御が行われる。
以下、仮想マシン1l及び1mを区別しない場合は、単に仮想マシン1という。同様に、仮想メモリ43l及び43mを区別しない場合は、単に仮想メモリ43という。同様に、疑似物理メモリ44l及び44mを区別しない場合は、単に疑似物理メモリ44という。
セキュリティなどの観点から各仮想マシン1は自身以外の仮想マシン1が管理するリソースには直接アクセスできないように、ゲストOS(仮想マシン1)へ提供される機能は制限されている。例えば、物理メモリ45へのアクセスやNICやストレージデバイスなどのハードウェア制御、特権命令の発行といった処理は、仮想マシンモニタ2が担う。仮想マシン1はhypercallやVMExitといった命令を発行することで、仮想マシンモニタ2が、hypercallやVMExitに応じた処理を実行する(以降は、hypercallを用いて説明する)。
仮想マシン1間のデータ受け渡しは、上記のhypercallを発行することで実現する。図5の例では、複数の仮想マシン1l及び1mで同一物理メモリ領域46を共有することによるデータ受け渡しの例を示す。各仮想マシン1は、仮想メモリ43と疑似物理メモリ44へ直接アクセスでき、仮想メモリ43と疑似物理メモリ44のマップ情報(対応関係)を管理する。仮想マシンモニタ2は、物理メモリ(Machine memory)45と疑似物理メモリ44のマップ情報を管理する。
メモリマップ情報は、ページ単位(4KBや64KBといったサイズ)で管理される。MMU(Memory Management Unit)によって、仮想メモリアドレスや疑似物理アドレスと、物理アドレスとの変換を行い、仮想メモリアドレスや疑似物理アドレスから、物理メモリへアクセスできる。通常は、物理メモリ45の1つの領域(ページ)は、仮想メモリ43及び疑似物理メモリ44と1対1でマッピングされる。
仮想マシン1間でデータ受け渡しをする方法の1つとして、物理メモリ領域46のように、複数の仮想マシン1から同一の物理メモリ45へアクセス可能にする方法がある。仮想マシン1lの疑似物理メモリ領域47l(仮想メモリ領域48l)と、仮想マシン1mの疑似物理メモリ領域47m(仮想メモリ領域48m)とを同一物理メモリ領域46へ対応付ける動作の一例を示す(動作はこれに限定されるものではない)。
仮想マシン1lは、メモリマップを指示するhypercall(setup)を発行して、疑似物理メモリ領域47lを仮想マシン1mからマップ可能にするよう仮想マシンモニタ2へ通知する。通知する情報としては、疑似物理メモリ領域47lのアドレスや、マップを許可する仮想マシン1の情報(図5の場合、仮想マシン1m)、アクセス制限(Read OnlyやRead/Writeなど)などである。
仮想マシンモニタ2は、hypercallを受け、疑似物理メモリ領域47lにマップされた物理メモリ領域46を仮想マシン1mからもマップ可能にし、該当するメモリマップ情報の識別子を仮想マシン1lへ返す。仮想マシン1lは、仮想マシンモニタ2が提供する制御用インタフェース等を用いて受け取った識別子を仮想マシン1mに通知する。
仮想マシン1mは、hypercall(map)を発行して、疑似物理メモリ領域47lと疑似物理メモリ領域47mをマップするように仮想マシンモニタ2へ指示する。通知される情報としては、疑似メモリ領域47mのアドレスや、仮想マシン1lから通知された識別子、マップ先の仮想マシン情報などである。仮想マシンモニタ2は、通知された識別子から物理メモリアドレス領域46を特定し、疑似物理メモリ領域47mをマップする。
仮想マシン1lから仮想マシン1mへデータを受け渡すには、仮想マシン1lがデータを書き込んだページ(仮想メモリ領域48lまたは疑似物理メモリ領域47l)を仮想マシン1mのページとマップすることで、仮想マシン1mからデータを参照可能とする。データの受け渡しが完了した(仮想マシン1mがデータを読み出した)後は、疑似物理メモリ領域47mと物理メモリ46のマップを解除するように仮想マシン1mがhypercall(unmap)を発行する。
以上が、同一物理メモリ領域46のマップによるデータ受け渡し処理である。
同一物理メモリ領域46へのマップ(map)以外にも、コピー(copy)や転送(Transfer)などの方法で、データを受け渡す方法もある。コピーは、仮想マシンモニタ2が指定された2つの仮想メモリ領域(疑似物理メモリ領域)が参照する物理メモリ領域間でデータをコピーする。転送は、仮想マシンモニタ2が指定された2つの仮想メモリ領域(疑似物理メモリ領域)が参照する2つの物理メモリ領域のマッピングを入れ替える。どちらも物理メモリ45を制御するため、仮想マシン1は仮想マシンモニタ2にhypercallを発行する必要がある。
<ソフトウェアTSNスイッチの動作説明>
上記の同一物理メモリ領域46のマップによるデータ受け渡しを利用した場合のソフトウェアTSNスイッチ200-3の動作を説明する。以下の説明では、ソフトウェアTSNスイッチ200-3をフレーム転送部200-3という。
図6はソフトウェアTSNスイッチ200-3の動作例を説明するための図である。フレーム転送部200-3は、仮想マシン1hで動作するが、仮想マシン1hではなく仮想マシンモニタ2で実現しても良い。図6の例では、仮想マシン1iから仮想マシン1jへフレームを転送する。
仮想マシン1iは、フレームの送信処理を実施する送信部51(フロントエンド仮想ネットワークドライバ8i、Tx_fe)と第一仮想記憶領域52とを備える。
送信部51は、フレームを第一仮想記憶領域52に書き込み、フレーム転送処理部200-3へ通知する。第一仮想記憶領域52は、仮想マシン1iが管理する疑似物理メモリ、または仮想メモリの一部である。第一仮想記憶領域52は、フレーム転送部200-3への送信バッファとして利用される。
仮想マシン1jは、フレーム受信処理を実施する受信部55(フロントエンド仮想ネットワークドライバ8j、Rx_fe)と、第二仮想記憶領域56とを備える。受信部55は、フレーム転送部200-3からのフレーム転送通知を受けて、第二仮想記憶領域56からフレームを読み出す。第二仮想記憶領域56は、仮想マシン1jが管理する疑似物理メモリ、または仮想メモリの一部である。第二仮想記憶領域56は、フレーム転送部200-3からの受信バッファとして利用される。
仮想マシン1hは、フレーム転送部200-3、第三仮想記憶領域54及び第四仮想記憶領域58を備える。第三仮想記憶領域54及び第四仮想記憶領域58は、仮想マシン1hが管理する疑似物理メモリ、または仮想メモリの一部である。第三仮想記憶領域54は、仮想マシン1iからの受信バッファとして利用される。第四仮想記憶領域58は、仮想マシン1jへの送信バッファとして利用される。フレーム転送部200-3は、仮想マシン1間のフレーム転送処理を実施する。
第一記憶領域53及び第二記憶領域57は、仮想マシンモニタ2が管理する物理メモリ45の一部である。
以下、仮想マシン1iから仮想マシン1jへフレームを転送する時の動作の詳細を説明する。
はじめに送信部51の動作について説明する。まず、送信部51は、アプリケーションやネットワークスタックから受け取ったフレームを第一仮想記憶領域52へ書き込む。次に、送信部51は第一仮想記憶領域52が参照する第一記憶領域53を仮想マシン1hからもマップ可能にするように、hypercall(setup)を発行する。次に、送信部51はフレーム転送部200-3へフレーム転送通知を発行する。
フレーム転送通知では、転送フレームの情報としてhypercallによって取得された第一記憶領域53のマップ情報などを通知する。最後に、送信部51は、フレーム転送部200-3から転送完了通知を受け取ると、送信バッファの開放等を実施してフレームの転送処理を終了する。
次に、受信部55の動作について説明する。受信部55は、事前にhypercall(setup)を発行して空の状態の受信バッファ(第二仮想記憶領域56)がマップされた第二記憶領域57を仮想マシン1hからもマップ可能にしておく。受信部55は、フレーム転送部200-3からフレーム転送通知を受け取ると、フレーム転送通知によって受け取った情報から、フレームが書き込まれた受信バッファを特定する。受信部55は、特定された受信バッファからフレームをアプリケーションやネットワークスタックへ受け渡す。受信部55は、最後に受信バッファを開放し、空き領域となった受信バッファを仮想マシン1hからマップ可能にしておく。
最後に、フレーム転送部200-3の動作について説明する。フレーム転送部200-3は、送信部51からフレーム転送通知を受け取ると転送処理を実施する。まず、フレーム転送部200-3は、hypercall(map)を発行してマップ情報で通知された第一記憶領域53を受信バッファ(図6の例では第三仮想記憶領域54)とマップする。
フレーム転送部200-3は、第三仮想記憶領域54(第一記憶領域53)からフレームを読み出し、フレームのヘッダ情報とFDB6を参照して宛先を決定する(図6の例では仮想マシン1jが宛先になる)。フレーム転送部200-3は、宛先仮想マシン用の送信バッファ(図6の例では第四仮想記憶領域58。事前にhypercall(map)を発行して第二記憶領域57とマップしてあるものとする。)にフレームをコピーし、仮想マシン1jの受信部55へフレーム転送通知を発行する。フレーム転送部200-3は、コピーが完了したらhypercall(unmap)を発行して第三仮想記憶領域54と第一記憶領域53のマップを解除し、仮想マシン1iの送信部51へ転送完了通知を発行する。また、フレーム転送部200-3は、仮想マシン1jへの送信が完了すると、hypercall(unmap)を発行して第四仮想記憶領域58と第二記憶領域57のマップを解除する。
以上が、仮想マシン1iから仮想マシン1jへのフレーム転送処理である。上記の例では、仮想マシン1iと仮想マシン1jがhypercall(setup)を、仮想マシン1hがhypercall(map/unmap)を発行したが、逆でも良い。
また、上記の例ではフレームの転送の度にmap/unmapを実施したが、起動時にmapした領域を使いまわす構成でも良い。
また、上記の例ではデータの受け渡しにhypercall(map)を用いたが、コピー(hypercall(copy))や転送(hypercall(Transfer))を用いても良い。
図6の例では、下記のようにデータコピー1回、hypercall5回発生している。
データコピー:1回
第三仮想記憶領域54(第一記憶領域53)から第四仮想記憶領域58(第二記憶領域57)へのデータコピー
hypercall:6回
第一仮想記憶領域52(第一記憶領域53)のsetup(アクセス権限等の変更)
第一記憶領域53と第三仮想記憶領域54のmap
第一記憶領域53と第三仮想記憶領域54のunmap
第二仮想記憶領域56(第二記憶領域57)のsetup(アクセス権限等の変更)
第二記憶領域57と第四仮想記憶領域58のmap
第二記憶領域57と第四仮想記憶領域58のunmap
一般的にメモリ間のデータコピーや、hypercall(仮想マシン1と仮想マシンモニタ2の切替)は、処理時間が大きい。また、処理時間の揺らぎ(ジッタ)も大きい。データコピーはメモリアクセスの競合によって処理時間の見積もりが困難となる。hypercallは特権命令の発行や仮想マシンモニタのスケジューラの影響などによって処理時間の見積が困難となる。
上記のような問題から、可能な限りデータコピーとhypercallの回数を減らすことが望ましい。データコピーとhypercallの回数を減らす1つの手段として、図7に示すようにスイッチを用いず、送信側の仮想マシン1n及び1oと、受信側の仮想マシン1p及び1qのペア毎に専用のネットワークを利用することが考えられる。
図7の場合、送信側の仮想マシン1の送信バッファと、受信側の仮想マシン1の受信バッファとの対応が一意に決まる(マップ先が一意に決まる)ため、転送のためのコピーやhypercallの回数が減らせる。具体的には、データコピーは発生せず、hypercallは3回(送信バッファと受信バッファのsetup/map/unmap)となる。
しかしながら、図7は、TSNのようなリアルタイム通信処理では問題になる。図7では、各専用ネットワークの処理が独立している。前述の通り、TSNでは各ネットワークノードは時刻同期して動作する必要がある。例えば、仮想マシン1pへ仮想マシン1nと仮想マシン1oからそれぞれフレームとする。正しく、Qbv処理が実行されれば、事前のスケジューリングで指定された順番で仮想マシン1pへフレームが到達する。しかし、図7のように各ネットワークが独立して動作すると、フレーム到達順が保証することができなくなってしまう。
(第1実施形態)
このような背景から、第1実施形態では、フレーム転送に係わるデータの転送と制御情報(記述子)の転送とを分離する。具体的には、データの転送は、図7に示したように送信側の仮想マシン1の送信バッファと、受信側の仮想マシン1の受信バッファをマップし、制御情報の転送は、図6のようにフレーム転送部200-3(第1実施形態では転送制御部に相当)を介してやり取りをする。これにより、TSNなどのリアルタイム通信で要求されるフレームの転送タイミングを正しく制御しつつ、データコピー及びhypercallの発行回数を削減する。
<機能構成の例>
図8は第1実施形態の通信装置300の機能構成の例を示す図である。第1実施形態の通信装置300は、仮想マシン1r、仮想マシン1s、第一記憶領域53及び転送制御部60を備える。図8の例では、2つの仮想マシン1r及び1sが転送制御部60(スイッチ)に接続されている。
仮想マシン1rは、書き込み部61、第一仮想記憶領域52及び記述子送信部62を備える。
書き込み部61は、フレームを第一仮想記憶領域52に書き込み、記述子送信部62へ通知する。
第一仮想記憶領域52は、仮想マシン1rが管理する疑似物理メモリ、または仮想メモリの一部である。第一仮想記憶領域52は、転送制御部60から送信される記述子に対応するフレームを記憶する送信バッファとして利用される。
記述子送信部62は、転送制御部60へフレームの記述子を送信する。
仮想マシン1sは、読み出し部63、第二仮想記憶領域56及び記述子受信部64を備える。
記述子受信部64は、転送制御部60から記述子を受信する。
読み出し部63は、記述子受信部64からの通知を受けて、第二仮想記憶領域56からフレームを読み出す。具体的には、読み出し部63は、記述子受信部64により記述子が受け付けられた場合、記述子に基づいて特定された第二仮想記憶領域56からフレームを読み出す。より具体的には、読み出し部63は、記述子に基づいて第二仮想記憶領域56を第一記憶領域53とマップし、第二仮想記憶領域56からフレームを読み出す。
第二仮想記憶領域56は、仮想マシン1sが管理する疑似物理メモリ、または仮想メモリの一部である。第二仮想記憶領域56は、転送制御部60から送信される記述子に対応するフレームを記憶する受信バッファとして利用される。
転送制御部60は、スケジュール情報に基づいて、フレームの記述子を転送するタイミングを制御する。スケジュール情報は、例えばIEEE 802.1Qbvに基づいて定義される。転送制御部60は、記述子送信部62から受けとった記述子を参照し、転送先を決定し、宛先の仮想マシン1の記述子受信部64へ受け渡す。図8の例では、転送制御部60は、仮想マシン1rから仮想マシン1sへ記述子を転送する。
転送制御部60は仮想マシン1上で動作しても良いし、仮想マシンモニタ2上で動作しても良い。また、転送制御部60は、仮想マシン1や仮想マシンモニタ2が動作するCPUとは別のハードウェア(コプロセッサや専用ハードウェア)で動作しても良い。
第一記憶領域53は、仮想マシンモニタ2が管理する物理メモリ45の一部(物理メモリ領域46)である。
次に、第1実施形態の通信方法の例について説明する。図9乃至図13の例では、図8の仮想マシン1rから仮想マシン1sへフレームを転送する時の動作の詳細を説明する。はじめに、書き込み部61の動作について説明する。
図9は第1実施形態の書き込み部61の動作例を示すフローチャートである。
はじめに、書き込み部61が、アプリケーションやネットワークスタックから受け取ったフレームを第一仮想記憶領域52へ書き込む(ステップS1)。
次に、書き込み部61は、第一仮想記憶領域52が参照する第一記憶領域53を仮想マシン1sからもマップ可能なようにhypercall(setup)を発行する(ステップS2)。
次に、書き込み部61は、記述子送信部62へフレーム書き込み通知を発行する(ステップS3)。フレーム書き込み通知では、転送されるフレームの情報としてhypercallによって取得された第一記憶領域53のマップ情報などを通知する。
最後に、書き込み部61は、記述子送信部62から転送完了通知を受け取ると、送信バッファ(第一仮想記憶領域52)の開放等を実施してフレーム転送処理を終了する。ただし、送信バッファの開放等は記述子送信部62が実施しても良い。
次に、記述子送信部62の動作について説明する。
図10は第1実施形態の記述子送信部62の動作例を示すフローチャートである。はじめに、記述子送信部62は、書き込み部61からフレーム書き込み通知を受け取ると、記述子を転送制御部60へ入力する(ステップS11)。記述子には、書き込み部61から受け取ったマップ情報や転送先の仮想マシン1sの情報などを含む。第1実施形態では、マップ情報として、フレームが記憶された第一仮想記憶領域52とマップされた第一記憶領域53を特定する情報を含む。
記述子の受け渡し方法は、例えば予め用意された制御用インタフェースを用いて実現してもよい。制御用インタフェースは、予め仮想マシン1r(記述子送信部62)と転送制御部60間で同一の物理メモリ領域45をマップしておき、Ring Buffer等を用いて実現することが考えられる。一例としては、Xen(登録商標)のDevice I/O Ringがある。また例えば、記述子の受け渡し方法は、仮想マシンモニタ2によって提供された制御用インタフェースの機能を利用しても良い。これらの記述子の受け渡し方法は一例であり、これらに限定されるものではない。
最後に、記述子送信部62は、転送制御部60から転送完了通知を受け付けると(ステップS12)、書き込み部61へ転送が完了したことを通知する(ステップS13)。
次に、転送制御部の動作について説明する。
図11は第1実施形態の転送制御部60の動作例を示すフローチャートである。はじめに、転送制御部60は、記述子送信部62から記述子を受け付けると(ステップS21)、転送先の仮想マシン1(図8の例では、仮想マシン1s)を決定する(ステップS22)。
次に、転送制御部60は、転送先の仮想マシン1sの記述子受信部64へ記述子を転送する(ステップS23)。転送制御部60は、TSNのようなリアルタイム通信処理をサポートする場合、記述子の転送タイミング(ステップS23の実行タイミング)を制御する。例えば、IEEE 802.1Qbvの場合、転送制御部60はゲートコントロールリストと現在時刻とを参照して、記述子の転送タイミングを決定する。
次に、記述子受信部64の動作について説明する。
図12は、第1実施形態の記述子受信部64の動作例を示すフローチャートである。はじめに、記述子受信部64は、転送制御部60から記述子を受け付けると(ステップS31)、当該記述子からフレームが格納された記憶領域のマップ情報を取得し(ステップS32)、当該マップ情報を読み出し部63へ通知する(ステップS33)。なお、転送制御部60から記述子受信部64への記述子の受け渡し方法は、記述子送信部62の場合と同様である。
次に、読み出し部63の動作について説明する。
図13は第1実施形態の読み出し部63の動作例を示すフローチャートである。はじめに、読み出し部63は、記述子受信部64からマップ情報の通知を受け付けると(ステップS41)、hypercall(map)を発行して、第二仮想記憶領域56を転送対象のフレームが格納された第一記憶領域53とマップする(ステップS42)。
次に、読み出し部63は、ステップS42の処理によってマップされた第二仮想記憶領域56から転送対象のフレームを読み出す(ステップS43)。次に、読み出し部63は、ステップS43の処理によって読み出されたフレームを、アプリケーションやネットワークスタックへ入力する(ステップS44)。最後に、読み出し部63は、hypercall(unmap)を発行し、第一記憶領域53と第二仮想記憶領域56のマップを解除する(ステップS45)。
以上、説明したように、第1実施形態の通信装置300では、書き込み部61が、第一仮想記憶領域52にフレームを書き込む。転送制御部60が、スケジュール情報に基づいて、フレームの記述子を転送するタイミングを制御する。記述子受信部64が、記述子を受け付ける。そして、読み出し部63が、記述子受信部64により記述子が受け付けられた場合、記述子に基づいて特定された第二仮想記憶領域56からフレームを読み出す。
これにより第1実施形態の通信装置300によれば、リアルタイム通信で要求される転送処理の遅延を抑えることができる。
具体的には、第1実施形態の通信装置300によれば、フレーム転送に係わるデータ(転送対象のフレーム)の転送と、制御情報(記述子)の転送とを分離することで、TSNなどのリアルタイム通信で要求されるフレームの転送タイミングを正しく制御しつつ、データコピー及びhypercallの発行回数を削減できる。例えば図8の例では、データコピー0回、hypercallは3回に削減されている。
データコピー:0回
hypercall:3回
第一仮想記憶領域52(第一記憶領域53)のsetup(アクセス権限等の変更)
第一記憶領域53と第二仮想記憶領域56のmap
第一記憶領域53と第二仮想記憶領域56のunmap
なお、図8の例では、フレームを送信するたびに上記のhypercallを発行していたが、通信装置300の初期化時などに、予め第一仮想記憶領域52と第二仮想記憶領域56とを第一記憶領域53にマップしておき、バッファとして使いまわしてもよい。この場合、記述子は、フレームが記憶された第一記憶領域53を特定する情報を含む。例えば、Ring Bufferを用いて、空き領域の先頭アドレス(Head)とフレームが書き込まれた先頭アドレス(Tail)とを管理すれば、書き込み部61と読み出し部63とから第一記憶領域53へ同時に読み書きすることが可能になる。この場合、初期化時などにhypercallが発行されていれば良く、フレーム転送処理時には、hypercallの発行が不要になる。
また、図8の例では、転送制御部60(ソフトウェアTSNスイッチ)に接続される仮想マシン1が2つの場合で説明したが、仮想マシン1の数は任意で良い。また図8の例では、仮想マシン1rでは送信処理部(書き込み部61及び記述子送信部62)、仮想マシン1sでは受信処理部(読み出し部63及び記述子受信部64)を備える場合で説明したが、各仮想マシン1は送信処理部及び受信処理部の両方を備えていてもよい。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
第1実施形態では、同一の物理メモリ領域45を複数の仮想マシン1間で共有する方法を用いて、仮想マシン1間のデータ受け渡し方法を説明した(hypercall(map))。第2実施形態では、図14のようにhypercall(copy)によって、仮想マシンモニタ2が物理メモリ領域45のデータをコピーする方法を用いる。
図14は、第2実施形態の仮想マシン1t及び1u間のデータ受け渡しについて説明するための図である。
通常、セキュリティなどの観点から、各仮想マシン1は自身が管理するメモリ領域以外は直接アクセスすることはできない。一方で、仮想マシンモニタ2はメモリ管理機能を担うことから、全物理メモリ領域45へアクセスが可能である。このため、複数の物理メモリ間のデータコピー機能を仮想マシンモニタ2が提供し、各仮想マシン1はhypercall(copy)を発行してその機能を利用することで、仮想マシン1間でのデータの受け渡しを実現することができる。
<機能構成の例>
図15は第2実施形態の通信装置300-2の機能構成の例を示す図である。第2実施形態の通信装置300-2は、仮想マシン1t、仮想マシン1u、第一記憶領域53、第二記憶領域57、転送制御部60及びコピー部70を備える。図15の例では、2つの仮想マシン1t及び1uが転送制御部60(スイッチ)に接続されている。また図15の例では、図8の第1実施形態の構成に加えて、コピー部70が追加されている。
仮想マシン1tは、書き込み部61、第一仮想記憶領域52及び記述子送信部62を備える。
書き込み部61は、フレームを第一仮想記憶領域52に書き込み、記述子送信部62へ通知する。第2実施形態では、書き込み部61は、読み出し部63より空の受信バッファの情報(第二仮想記憶領域56、及び、第二記憶領域57等)を予め受けてっておく。書き込み部61は、第一仮想記憶領域53にフレームを書き込んだ後、hypercall(copy)をコピー部70へ発行する。この時、書き込み部61は、コピー元にフレームを書き込んだ第一仮想記憶領域52(第一記憶領域53)、コピー先に第二仮想記憶領域56(第二記憶領域57)を指定する。書き込み部61は、コピーが完了した後、第一仮想記憶領域52の開放処理等を実施する。
第一仮想記憶領域52は、仮想マシン1rが管理する疑似物理メモリ、または仮想メモリの一部である(第一記憶領域53にマップされる)。第一仮想記憶領域52は、転送制御部60から送信される記述子に対応するフレームを記憶する送信バッファとして利用される。
記述子送信部62は、転送制御部60へフレームの記述子を送信する。第2実施形態の記述子は、フレームがコピーされた第二記憶領域57を特定する情報を含む。
仮想マシン1uは、読み出し部63、第二仮想記憶領域56及び記述子受信部64を備える。
第二仮想記憶領域56は、仮想マシン1sが管理する疑似物理メモリ、または仮想メモリの一部である(第二記憶領域57にマップされる)。第二仮想記憶領域56は、転送制御部60から送信される記述子に対応するフレームを記憶する受信バッファとして利用される。
記述子受信部64は、転送制御部60から記述子を受信する。
読み出し部63は、記述子受信部64からの通知を受けて、第二仮想記憶領域56からフレームを読み出す。
転送制御部60は、記述子送信部62から受けとった記述子を参照し、転送先を決定し、宛先の仮想マシン1の記述子受信部64へ受け渡す。図15の例では、転送制御部60は、仮想マシン1tから仮想マシン1uへ記述子を転送する。
第2実施形態では、第一記憶領域53は、仮想マシンモニタ2が管理する物理メモリ45の一部(物理メモリ領域46-1)である。また、第二記憶領域57は、仮想マシンモニタ2が管理する物理メモリ45の一部(物理メモリ領域46-2)である。
コピー部70は、書き込み部61からコピー要求を受け付けると、第一記憶領域53に記憶されたフレームを第二記憶領域57へコピーする。コピー部70は、物理メモリ領域45を制御できる権限を持った仮想マシンモニタ2などで実現される。各仮想マシン1は、hypercall(copy)を仮想マシンモニタ2に発行することで、物理メモリ領域45内のデータコピーを実現する。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
第3実施形態では、図16のように仮想マシン1間のデータ受け渡しをhypercall(transfer)によって実現する。
図16は第3実施形態の仮想マシン1v及び1w間のデータ受け渡しについて説明するための図である。hypercall(transfer)では、MMUなどによって管理される疑似物理メモリ領域(仮想メモリ領域)と物理メモリ領域とのマッピングを変更することでデータ転送を実現する。図16の例では、仮想マシン1vが管理する疑似物理メモリ領域47vにマップされた物理メモリ領域46を、仮想マシン1wが管理する疑似物理メモリ領域47wにマップし直している。これにより、仮想マシン1v及び1w間のデータ受け渡しを実現する。
<機能構成の例>
図17Aは第3実施形態の通信装置300-3の機能構成の例(マップ切替前)を示す図である。図17Bは第3実施形態の通信装置300-3の機能構成の例(マップ切替後)を示す図である。第3実施形態の通信装置300-3は、仮想マシン1v、仮想マシン1w、第一記憶領域53、転送制御部60及び切り替え部80を備える。図17A及びBの例では、2つの仮想マシン1v及び1wが転送制御部60(スイッチ)に接続されている。また図17A及びBの例では、図8の第1実施形態の構成に加えて、切り替え部80が追加されている。
仮想マシン1vは、書き込み部61、第一仮想記憶領域52及び記述子送信部62を備える。
書き込み部61は、フレームを第一仮想記憶領域52に書き込み、記述子送信部62へ通知する。第3実施形態では、書き込み部61は、読み出し部63より空の受信バッファの情報(第二仮想記憶領域56)を予め受けてっておく。書き込み部61は、第一仮想記憶領域52にフレームを書き込んだ後、hypercall(transfer)を切り替え部80へ発行する。これは、書き込み部61が、自身が管理するメモリ領域を読み出し部63から通知された受信バッファへマップを切り替えるためである。図17A及びBの例では、フレームを書き込んだ第一記憶領域53のマップを、第一仮想記憶領域52から第二仮想記憶領域56に切り替える。
第一仮想記憶領域52は、仮想マシン1vが管理する疑似物理メモリ、または仮想メモリの一部である。第一仮想記憶領域52は、転送制御部60から送信される記述子に対応するフレームを記憶する送信バッファとして利用される。
記述子送信部62は、転送制御部60へフレームの記述子を送信する。第3実施形態の記述子は、フレームが記憶された第一記憶領域53とマップされた第二仮想記憶領域56を特定する情報を含む。
仮想マシン1wは、読み出し部63、第二仮想記憶領域56及び記述子受信部64を備える。
記述子受信部64は、転送制御部60から記述子を受信する。
読み出し部63は、記述子受信部64からの通知を受けて、第二仮想記憶領域56からフレームを読み出す。
第二仮想記憶領域56は、仮想マシン1wが管理する疑似物理メモリ、または仮想メモリの一部である。第二仮想記憶領域56は、転送制御部60から送信される記述子に対応するフレームを記憶する送信バッファとして利用される。
転送制御部60は、記述子送信部62から受けとった記述子を参照し、転送先を決定し、宛先の仮想マシン1の記述子受信部64へ受け渡す。図17A及びBの例では、転送制御部60は、仮想マシン1vから仮想マシン1wへ記述子を転送する。
切り替え部80は、メモリマップの制御などの権限を持った仮想マシンモニタ2やMMUで実現される。各書き込み部61が、マップ切替要求として、hypercall(transfer)を仮想マシンモニタ2に発行することで、仮想マシンモニタ2がMMUを操作しメモリマップを切り替える。図17A及びBの例では、切り替え部80は、hypercall(transfer)を受けると、第一仮想記憶領域52にマップしていた第一記憶領域53を、第二仮想記憶領域56にマップし直す。
第一記憶領域53は、仮想マシンモニタ2が管理する物理メモリ45の一部(物理メモリ領域46)である。
(第4実施形態)
次に第4実施形態について説明する。第4実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。
<機能構成の例>
図18は第4実施形態の通信装置300-4の機能構成の例を示す図である。第4実施形態の通信装置300-4は、仮想マシン1-1~1-n、及び、転送制御部60-2を備える。図18は、転送制御部(スイッチ)がIEEE802.1Qbvに対応した例を示す。図18では、n個の仮想マシン1-1~1-nが転送制御部60-2に接続されている。
以下、仮想マシン1-1~1-nを区別しない場合は、単に仮想マシン1という。なお、複数存在する他の機能ブロックについても、区別しない場合には、同様の方法で称呼する。
仮想マシン1-1は、フレーム出力部91-1及びフレーム入力部92-1を備える。
フレーム出力部91-1は、書き込み部61-1、記述子送信部62-1、仮想FDB93-1、記述子送信バッファ94-1、及び、1-2送信仮想記憶領域~1-n送信仮想記憶領域を備える。
フレーム入力部92-1は、読み出し部63-1、記述子受信部64-1、記述子受信バッファ95-1、及び、2-1受信仮想記憶領域~n-1受信仮想記憶領域を備える。
仮想マシン1-2~1-nの構成も、仮想マシン1-1の構成と同じである。
転送制御部60-2は、転送処理部101-1~101-n、及び、FDB120を備える。転送処理部101-1~101-nは、対応する仮想マシン1-1~1-nに接続される。なお、転送制御部60-2は、ソフトウェアではなく、専用HWにより実現されていてもよい。
転送処理部101-1は、入力処理部111-1及び出力処理部112-1を備える。
入力処理部111-1は、記述子入力バッファ102-1、送信制御部103-1、転送先決定部104-1、FDB更新部105-1、転送部106-1及びスケジュール情報110-11を備える。
出力処理部112-1は、記述子出力バッファ107-1、送信制御部108-1、記述子転送バッファ109-1及びスケジュール情報110-12を備える。
転送処理部101-2~101-nの構成も、転送処理部101-1の構成と同じである。
はじめに、仮想FDB93について説明する。各仮想マシン1の仮想FDB93を記憶する疑似物理メモリ(仮想メモリ)は、転送制御部60-2のFDB120を記憶する記憶部(物理メモリ)にマップされている。つまり、各仮想マシン1は同一のFDB120を参照することになる。仮想FDB93とFDB120のマップは、例えば通信装置300-4(スイッチ)の初期化時などに実行される。
また、図18の例では、FDB120の更新は転送制御部60-2(FDB更新部105)によって実行され、フレーム出力部91は読み出しを実行する(Read-Only)。FDB120(仮想FDB93)には、フレームの転送先を決定するための情報が含まれる。具体的には、転送先を決定するための情報は、転送先のネットワークポート(ネットワークインタフェース、または仮想マシン1)の識別子、MACアドレス、VLAN ID、及び最終送信時刻などの情報を含む。
次に、フレーム出力部91の送信仮想記憶領域と、フレーム入力部92の受信仮想記憶領域について説明する。送信仮想記憶領域は、フレーム出力部91の送信バッファ、受信仮想記憶領域は、フレーム入力部92の受信バッファとして利用される。送信/受信仮想記憶領域は、送信元の仮想マシン1及び宛先の仮想マシン1のペア毎に領域が分かれている。例えば、送信元が仮想マシン1、宛先が仮想マシン3のフレームが転送される場合は、1-3送信仮想記憶領域と1-3受信仮想記憶領域とが利用される。
図19Aは、第4実施形態の1-3送信仮想記憶領域、及び、1-3受信仮想記憶領域の例を示す図である。図19Bは、図19Aの記憶領域の構造の例を示す図である。
1-3送信仮想記憶領域、及び、1-3受信仮想記憶領域は、例えば図19Bのリングバッファのように管理し、複数のフレームを同時に読み書きできることを想定するが、これに限定されない。
第1実施形態の方法でデータ受け渡しを実現する場合、上記の送信/受信仮想記憶領域のペアごとに同一の物理メモリ領域46(第一記憶領域)をマップする。
第2実施形態の方法でデータ受け渡しを実現する場合、上記の送信/受信仮想記憶領域のペアごとに、送信仮想記憶領域がマップされた物理メモリ領域46-1から、受信仮想記憶領域がマップされた物理メモリ領域46-2へデータをコピーする。
第3実施形態の方法でデータ受け渡しを実現する場合、上記の送信/受信仮想記憶領域のペアごとに、送信仮想記憶領域がマップされた物理メモリ領域46を、受信仮想記憶領域へマップし直す。
以下、第4実施形態では、スイッチの起動時などに、送信仮想記憶領域と受信仮想記憶領域とを同一の物理メモリ領域46に予めマップしておく方法を例にして説明する。
次に、記述子送信バッファ94及び記述子入力バッファ102について説明する。記述子送信バッファ94及び記述子入力バッファ102は、フレームのトラフィッククラス(TC)毎にキュー(FIFO)が分かれている。IEEE 802.1Qのヘッダに含まれるPCP(Priority Code Point)とトラフィッククラスの対応関係は事前に指定される。
記述子送信バッファ94は、仮想マシン1が管理する仮想メモリ領域(疑似物理メモリ領域)である。記述子入力バッファ102は、転送制御部60-2が管理するメモリ領域である。
記述子送信バッファ94及び記述子入力バッファ102は、通信装置300-4(スイッチ)の初期化時などに予め同一の物理メモリ領域をマップする。記述子送信バッファ94及び記述子入力バッファ102は、フレーム出力部91と入力処理部111間の記述子の受け渡しに利用される。
次に、記述子受信バッファ95及び記述子出力バッファ107について説明する。記述子受信バッファ95は、仮想マシン1が管理する仮想メモリ領域(疑似物理メモリ領域)である。記述子出力バッファ107は、転送制御部60-2が管理するメモリ領域である。
記述子受信バッファ95及び記述子出力バッファ107は、通信装置300-4(スイッチ)の初期化時などに予め同一の物理メモリ領域をマップする。記述子受信バッファ95及び記述子出力バッファ107は、フレーム入力部92と出力処理部112間の記述子の受け渡しに利用される。
次に、第4実施形態の動作について説明する。
はじめに、フレーム出力部91について説明する。まず、書き込み部61はアプリケーションやネットワークスタックから転送対象のフレームを受け取る。書き込み部61は、受け取ったフレームのヘッダ情報と、仮想FDBとを参照し、フレームの転送先を決定する。
書き込み部61は、宛先の仮想マシン1用の送信仮想記憶領域へフレームを書き込む。図19Bのようにリングバッファを用いる場合は、書き込み部61は、バッファ情報を参照し、空き領域が存在すればHeadのバッファへフレームを書き込み、Headを1進める。
空き領域が存在しない場合は、フレームを廃棄するか、宛先の仮想マシン1がバッファを解放するまで待機する(空き領域ができるまで待機する)。また例えば、書き込み部61は、ポーリングでHead/Tailを確認してもよい。また例えば、宛先の仮想マシン1から空き領域ができたことを通知する制御インタフェースを別途設けてもよい。
書き込み部61は、記述子送信部62へフレーム書き込み通知を発行する。フレーム書き込み通知では、転送先の仮想マシン1の識別子や、フレームを書き込んだ送信仮想記憶領域の位置情報(リングバッファの識別子等)、MACアドレスやVLAN IDなどの転送処理で必要となる情報、フレームのPCP(Priority Code Point)やTraffic Class、フレームサイズなどのTSN処理で必要となる情報などを通知する。
次に、記述子送信部62の動作について説明する。記述子送信部62は、受け取ったフレーム書き込み通知に含まれるPCPやTCから、記述子を書き込む記述子送信バッファ94の位置を決定する。記述子送信部62は、書き込み部61から受け取った情報を記述子に格納し、記述子送信バッファ94へ書き込む。記述子には、書き込み部61から受け取ったフレーム書き込み通知に含まれる情報の他に、送信時刻や統計情報などを含めても良い。
また例えば、記述子送信部62は、書き込み部61からフレームが書き込まれた送信仮想記憶領域のバッファアドレスのみを受け取り、記述子送信部62がバッファからフレームのヘッダ情報等を参照して記述子の生成、書き込みをしても良い。前述の通り、記述子送信バッファ94は、転送制御部60-2の記述子入力バッファ102と同一物理メモリにマップされているため、後述の送信制御部103から参照可能になる。
以上が、フレーム出力部91の動作説明である。
次に、転送処理部101の入力処理部111について説明する。
まず、送信制御部103の動作について説明する。まず、送信制御部103は、現在時刻とスケジュール情報(ゲートコントロールリスト)とから、送信が許可されているトラフィッククラスを確認する。次に、送信制御部103は、送信が許可されているトラフィッククラスのキュー(記述子入力バッファ102)から転送対象のフレームの記述子を読み出す。複数のトラフィッククラスのフレーム(記述子)が送信可能な場合は、送信制御部103は、優先度順(Strict Priority)やCredit Based Shaper(IEEE 802.1Qav)等の手法によって決定する。送信制御部103は、読み出した記述子を転送先決定部104へ入力する。送信可能なフレームが存在しない場合は、処理を終了し次のフレーム送信処理に移る(記述子が新たに書き込まれるまで待機する、スケジュール状態が変わるまで待機する等)。
以上が送信制御部103の動作である。上記の処理以外に、送信制御部103は、読み出した記述子に格納されたフレームサイズと現在時刻、スケジュール情報から、ガードバンド等を考慮してスケジュールで許可された時間内でフレームが送信可能かどうかの判定処理などを実施しても良い。また、第4実施形態ではIEEE802.1 Qbvの処理を想定しているが、これに限定されるものではない。
次に、転送先決定部104の動作について説明する。転送先決定部104は、記述子に記載された転送先の仮想マシン1の識別子を参照し、記述子を書き込む記述子転送バッファ109を決定する。例えば、転送先が仮想マシン1-3の場合、転送処理部101-3の記述子転送バッファ109-3が書き込み先となる。
次に、FDB更新部105の動作について説明する。まず、FDB更新部105は、送信元の仮想マシン1のエントリ(MACアドレス、VLAN ID)がFDB120に存在するか否かを確認する。存在しない場合は、FDB更新部105は、エントリを登録し、ネットワークインタフェース、MACアドレスやVLAN ID、最終送信時刻等を書き込む。存在する場合は、エントリの最終時刻の更新等を実施する。
最後に、転送部106の動作について説明する。転送部106は、転送先決定部104によって決定された記述子転送バッファ109の該当するトラフィッククラスのキューに記述子を書き込む。シングルタスクで動作する場合(CPU1コアで動作する場合等)、各仮想マシン1の入力処理部111が順番に実行されるため、記述子転送バッファ109で記述子の入力がシリアライズされる。一方、マルチタスクで動作する場合(マルチコアで動作する場合、HWで並列処理する場合等)、各仮想マシン1の入力処理が並列で複数実行されることになるため、記述子転送バッファ109への書き込みは、ロックを取るなどしてアクセス競合が発生しないようにして、記述子の転送順をシリアライズ必要がある。
以上が入力処理部111の動作である。入力処理部111により、各仮想マシン1から送信されたフレーム(記述子)を、IEEE802.1 Qbvの送信タイミングに従って宛先の仮想マシン1用の出力処理部112へ転送することができる。これは、送信元の仮想マシン1のネットワークインタフェースのQbv処理が実施されたことになる(図4のTx_beに該当)。
次に、出力処理部112の動作について説明する。送信制御部108の動作は基本的に入力処理部111の送信制御部103と同様の処理を実施する。出力処理部112の送信制御部108では、読み出し元のバッファが記述子転送バッファ109となり、書き込み先が記述子出力バッファ107(記述子受信バッファ95)となる。ここで、図18の記述子出力バッファ107(記述子受信バッファ95)は1つのキュー(FIFO)を提供しているが、記述子入力バッファ102や記述子転送バッファ109のようにトラフィッククラス毎にキューを分けても良い。
以上が出力処理部112の動作である。出力処理部112により、IEEE802.1 Qbvの送信タイミングに従って宛先の仮想マシン1へ、記述子を転送することができる。これは、転送制御部60-2(スイッチ)のネットワークインタフェースのQbv処理が実施されたことになる(図4のTxに該当)。
次に、フレーム入力部92の動作について説明する。まず、記述子受信部64が記述子バッファ95のキュー(FIFO)から記述子を読み出す。記述子受信部64は、記述子からフレームが格納された送信仮想記憶領域を特定して読み出し部63へ通知する。
読み出し部63は、通知された仮想記憶領域のバッファ情報を参照し(図19B)、先頭のフレーム(Tail位置に書き込まれたフレーム)を読み出し、アプリケーションやネットワークスタックへ受け渡す。読み出し部63は、フレームの受け渡しが完了したら、バッファを解放し、Tailを+1加算する。
以上が、第4実施形態の転送動作である。以下、いくつか補足をする。
まず、送信/受信仮想記憶領域と物理メモリ領域45とのマップについて補足する。送信/受信仮想記憶領域と物理メモリ領域45とのマップは、例えば通信装置300-4(スイッチ)の初期化時等に行われてもよい。また例えば、送信/受信仮想記憶領域と物理メモリ領域45とのマップは、第1実施形態のようにフレームを送信するたびにhypercall(map)/(unmap)を発行することによって行ってもよい。
また例えば、送信/受信仮想記憶領域と物理メモリ領域45とのマップは、FDB120に新たにエントリが登録されたタイミングで行われてもよい。この場合、例えば送信/受信仮想記憶領域と物理メモリ領域45とのマップは、一定時間フレームが送信されないなどの理由でFDB120からエントリが削除されたタイミングで解除される。
FDB120に新たにエントリが登録されたタイミングとは、別の言い方をすると送信元の仮想マシン1と宛先の仮想マシン1との通信ペアが生成されたタイミングである。これにより、仮想マシン1間で通信が確立していない場合は、送信/受信仮想記憶領域をマップしない(利用しない)ことで無駄なメモリリソースを消費しないというメリットがある。
動作の例としては、書き込み部61が仮想FDB93を参照した際に、送信先の通信インタフェースのエントリが存在しない場合に、新たに送信仮想記憶領域を確保して、他の仮想マシン1からマップ可能に設定する(hypercall(setup))。FDB120にエントリが存在しないフレームは、マルチキャスト(ブロードキャスト)され、全ての仮想マシン1のフレーム入力部92へ転送される。この際、書き込み部61(または記述子送信部62)は、記述子にフレームがマルチキャスト(ブロードキャスト)であることを示す情報を付加する。
読み出し部63は、転送制御部60から受け取った記述子を参照し、フレームがマルチキャスト(ブロードキャスト)であり、かつ、フレームの転送先の仮想マシン1の読み出し部63である場合、新たに受信仮想記憶領域を確保し、記述子に記載された送信仮想領域とマップする(hypercall(map))。具体的には、読み出し部63は、転送元の仮想マシン1に対応する送信仮想記憶領域がマップされた第一記憶領域に、転送先の仮想マシン1に対応する受信仮想記憶領域をマップする。
次に、バッファ情報(図19A及びB)について補足する。第4実施形態では、送信/受信仮想記憶領域上にバッファ情報を保持することで、バッファの空き領域とフレーム書き込み済みの領域とが特定される。別の構成としては、送信/受信仮想記憶領域上ではバッファのみを管理し、記述子にバッファ情報を含める構成も考えらえる。記述子にフレームが格納されたバッファの位置が特定できるため、書き込み部61/読み出し部63は、受信仮想記憶領域のバッファ情報の読み書きが不要になる。この場合、読み出し部63がフレームを読み出した後、フレーム出力部91へバッファが解放されたことを別途通知する(第4実施形態ではTailを更新する事で通知)。通知方法としては、転送制御部60-2を介して転送完了通知をフレーム出力部91へ通知する方法などが考えられる。
以上、説明したように、第4実施形態の通信装置300-4は、複数の仮想マシン1-1~1-nと、転送制御部60-2と、を備える。
各仮想マシン1は、フレームの転送先の仮想マシン1毎に定められた複数の送信仮想記憶領域(第一仮想記憶領域)と、フレームの転送元毎に定められた複数の受信仮想記憶領域(第二仮想記憶領域)と、を備える。書き込み部61は、仮想転送先情報(仮想FDB93)を参照して、フレームの転送先を決定し、転送先の仮想マシン1に対応する第一仮想記憶領域にフレームを書き込む。記述子受信部64は、フレームの記述子を受け付ける。読み出し部63は、記述子受信部64により記述子が受け付けられた場合、記述子に基づいて特定された第二仮想記憶領域からフレームを読み出す。
また、転送制御部60-2では、記憶部が、仮想転送先情報(仮想FDB)とマップされた転送先情報(FDB120)を記憶する。入力処理部111が、スケジュール情報に基づいて、フレームの記述子を出力処理部112に入力するタイミングを制御する。出力処理部112が、入力処理部111から記述子を受け付けると、スケジュール情報に基づいて、記述子を、転送先の仮想マシン1に出力するタイミングを制御する。
最後に、第1乃至第4実施形態の通信装置300~300-4のハードウェア構成の例について説明する。
[ハードウェア構成の例]
図20は第1乃至第4実施形態の通信装置300~300-4のハードウェア構成の例を示す図である。
通信装置300~300-4は、制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信IF306を備える。制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信IF306は、バス310を介して接続されている。
制御装置301は、補助記憶装置303から主記憶装置302に読み出されたプログラムを実行する。主記憶装置302は、ROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置303は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、及び、メモリカード等である。
表示装置304は表示情報を表示する。表示装置304は、例えば液晶ディスプレイ等である。入力装置305は、通信装置300として動作させるコンピュータを操作するためのインタフェースである。入力装置305は、例えばキーボードやマウス等である。なお、表示装置304及び入力装置305は、通信装置300~300-4と接続可能な外部の管理端末等の表示機能及び入力機能を利用してもよい。
通信IF306は、他の装置と通信するためのインタフェースである。
コンピュータで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
またコンピュータで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またコンピュータで実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
またコンピュータで実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
コンピュータで実行されるプログラムは、上述の通信装置300の機能構成(機能ブロック)のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置301が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置302上にロードされる。すなわち上記各機能ブロックは主記憶装置302上に生成される。
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2つ以上を実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 仮想マシン
2 仮想マシンモニタ
3 ソフトウェアスイッチ
4 ネットワークドライバ
5 フォワーディング処理部
6 FDB
7 バックエンド仮想ネットワークドライバ
8 フロントエンド仮想ネットワークドライバ
9 アプリ/スタック
10 ホストプロセッサ
21 ネットワークインタフェース
31 ノード
32 ネットワークインタフェース
51 送信部
52 第一仮想記憶領域
53 第一記憶領域
54 第三仮想記憶領域
55 受信部
56 第二仮想記憶領域
57 第二記憶領域
58 第四仮想記憶領域
60 転送制御部
61 書き込み部
62 記述子送信部
63 読み出し部
64 記述子受信部
70 コピー部
80 切り替え部
91 フレーム出力部
92 フレーム入力部
93 仮想FDB
94 記述子送信バッファ
95 記述子受信バッファ
100 通信装置
101 転送処理部
102 記述子入力バッファ
103 送信制御部
104 転送先決定部
105 FDB更新部
106 転送部
107 記述子出力バッファ
108 送信制御部
109 記述子転送バッファ
110 スケジュール情報
111 入力処理部
112 出力処理部
120 FDB
200 TSNスイッチ
301 制御装置
302 主記憶装置
303 補助記憶装置
304 表示装置
305 入力装置
306 通信IF
310 バス

Claims (12)

  1. 通信を実施する複数のネットワークノードと、
    前記複数のネットワークノードの送信タイミングを制御する転送制御ネットワークノードと、を備え、
    送信側のネットワークノードは、
    フレームの記述子を転送するタイミングよりも前に、第一仮想記憶領域にフレームを書き込む書き込み部と、
    前記書き込み部が前記第一仮想記憶領域に前記フレームを書き込んだ後に、前記転送制御ネットワークノードへ前記記述子を受け渡す記述子送信部と、を備え、
    前記転送制御ネットワークノードは、
    記フレームの記述子を転送するタイミングを制御する転送制御部を備え
    前記転送制御部は、
    前記送信側のネットワークノードのフレーム送信タイミングを示す第1のスケジュール情報に従って、前記記述子を転送する第1の送信制御部と、
    前記転送制御ネットワークノードのフレーム送信タイミング示す第2のスケジュール情報に従って、前記記述子を転送する第2の送信制御部と、を備え、
    受信側のネットワークノードは、
    前記記述子を受け付ける記述子受信部と、
    前記記述子受信部により前記記述子が受け付けられた場合、前記記述子に基づいて特定された第二仮想記憶領域から前記フレームを読み出す読み出し部と、
    を備える通信装置。
  2. 前記フレームは、前記第一仮想記憶領域と前記第二仮想記憶領域とに予めマップされた第一記憶領域に記憶され、
    前記記述子は、前記フレームが記憶された前記第一記憶領域を特定する情報を含む、
    請求項1に記載の通信装置。
  3. 前記第一仮想記憶領域は、第一記憶領域にマップされ、
    前記記述子は、前記フレームが記憶された前記第一仮想記憶領域とマップされた前記第一記憶領域を特定する情報を含み、
    前記読み出し部は、前記記述子受信部により前記記述子が受け付けられた場合、前記第二仮想記憶領域を前記第一記憶領域とマップし、前記第二仮想記憶領域から前記フレームを読み出す、
    請求項1に記載の通信装置。
  4. 前記第一仮想記憶領域は、第一記憶領域にマップされ、
    前記第二仮想記憶領域は、第二記憶領域にマップされ、
    前記書き込み部からコピー要求を受け付けると、前記第一記憶領域に記憶された前記フレームを前記第二記憶領域へコピーするコピー部を更に備え、
    前記記述子は、前記フレームがコピーされた前記第二記憶領域を特定する情報を含む、 請求項1に記載の通信装置。
  5. 前記第一仮想記憶領域は、第一記憶領域にマップされ、
    前記書き込み部からマップ切替要求を受け付けると、前記第一記憶領域とマップされる記憶領域を前記第一仮想記憶領域から第二仮想記憶領域に切り替える切り替え部を更に備え、
    前記記述子は、前記フレームが記憶された前記第一記憶領域とマップされた前記第二仮想記憶領域を特定する情報を含む、
    請求項1に記載の通信装置。
  6. 前記第一仮想記憶領域は、第一仮想マシンが管理し、
    前記第二仮想記憶領域は、第二仮想マシンが管理する、
    請求項1乃至5のいずれか1項に記載の通信装置。
  7. 前記第1及び第2のスケジュール情報は、IEEE 802.1Qbvに基づいて定義される、
    請求項1乃至6のいずれか1項に記載の通信装置。
  8. 前記第1の送信制御部は、前記転送制御ネットワークノードのシステムクロックを使用して、前記第1のスケジュール情報に従い、前記フレームの記述子を転送するタイミングを制御し、
    前記第2の送信制御部は、前記システムクロックを使用して、前記第2のスケジュール情報に従い、前記フレームの記述子を転送するタイミングを制御する、
    請求項1乃至7のいずれか1項に記載の通信装置。
  9. 複数の仮想マシンと、転送制御部と、を備える通信装置であって、
    前記仮想マシンは、
    フレームの転送先の仮想マシン毎に定められた複数の第一仮想記憶領域と、
    仮想転送先情報を参照して、前記フレームの転送先を決定し、転送先の仮想マシンに対応する前記第一仮想記憶領域に前記フレームを書き込む書き込み部と、
    前記フレームの転送元毎に定められた複数の第二仮想記憶領域と、
    前記フレームの記述子を受け付ける記述子受信部と、
    前記記述子受信部により前記記述子が受け付けられた場合、前記記述子に基づいて特定された前記第二仮想記憶領域から前記フレームを読み出す読み出し部と、を備え、
    前記転送制御部は、記憶部と入力処理部と出力処理部とを備え、
    前記記憶部は、前記仮想転送先情報とマップされた転送先情報を記憶し、
    前記入力処理部は、転送元の前記仮想マシンのフレーム送信タイミングを示す第1のスケジュール情報に基づいて、前記フレームの記述子を前記出力処理部に入力するタイミングを制御する入力処理部と、
    前記出力処理部は、前記入力処理部から前記記述子を受け付けると、前記転送制御部のフレーム送信タイミング示す第2のスケジュール情報に基づいて、前記記述子を、前記転送先の仮想マシンに出力するタイミングを制御する、
    を備える通信装置。
  10. 前記書き込み部は、前記仮想転送先情報に前記フレームのエントリが存在しない場合、新たに確保された第一仮想記憶領域を第一記憶領域にマップ
    前記書き込み部は、前記仮想転送先情報に前記フレームのエントリが存在しない場合、前記記述子にマルチキャストを示す情報を付加し、
    前記読み出し部は、前記記述子に前記マルチキャストを示す情報が付加されており、かつ、前記フレームの転送先の仮想マシンの読み出し部である場合、前記転送元の仮想マシンに対応する前記新たに確保された第一仮想記憶領域がマップされた第一記憶領域に、転送先の仮想マシンに対応する前記第二仮想記憶領域をマップする、
    請求項に記載の通信装置。
  11. 通信を実施する複数のネットワークノードと、前記複数のネットワークノードの送信タイミングを制御する転送制御ネットワークノードと、を備える通信装置の通信方法であって、
    送信側のネットワークノードが、フレームの記述子を転送するタイミングよりも前に、第一仮想記憶領域にフレームを書き込むステップと、
    前記送信側のネットワークノードが、前記第一仮想記憶領域に前記フレームを書き込んだ後に、前記転送制御ネットワークノードへ前記記述子を受け渡すステップと、
    前記転送制御ネットワークノードが、前記フレームの記述子を転送するタイミングを制御するステップを含み、
    前記タイミングを制御するステップは、
    前記送信側のネットワークノードのフレーム送信タイミングを示す第1のスケジュール情報に従って、前記記述子を転送するステップと、
    前記転送制御ネットワークノードのフレーム送信タイミング示す第2のスケジュール情報に従って、前記記述子を転送するステップと、を含み、
    受信側のネットワークノードが、前記記述子を受け付けるステップと、
    前記受信側のネットワークノードが、前記記述子が受け付けられた場合、前記記述子に基づいて特定された第二仮想記憶領域から前記フレームを読み出すステップと、
    を含む通信方法。
  12. 通信を実施する複数のネットワークノードと、前記複数のネットワークノードの送信タイミングを制御する転送制御ネットワークノードとしてコンピュータを機能させるプログラムであって
    送信側のネットワークノードは、
    フレームの記述子を転送するタイミングよりも前に、第一仮想記憶領域にフレームを書き込む書き込み部と、
    前記書き込み部が前記第一仮想記憶領域に前記フレームを書き込んだ後に、前記転送制御ネットワークノードへ前記記述子を受け渡す記述子送信部、として機能させ、
    前記転送制御ネットワークノードは、
    スケジュール情報に基づいて、前記フレームの記述子を転送するタイミングを制御する転送制御部として機能させ
    前記転送制御部は、
    前記送信側のネットワークノードのフレーム送信タイミングを示す第1のスケジュール情報に従って、前記記述子を転送する第1の送信制御部と、
    前記転送制御ネットワークノードのフレーム送信タイミング示す第2のスケジュール情報に従って、前記記述子を転送する第2の送信制御部と、を有し、
    受信側のネットワークノードは、
    前記記述子を受け付ける記述子受信部と、
    前記記述子受信部により前記記述子が受け付けられた場合、前記記述子に基づいて特定された第二仮想記憶領域から前記フレームを読み出す読み出し部、
    として機能させるためのプログラム。
JP2019206315A 2019-11-14 2019-11-14 通信装置、通信方法及びプログラム Active JP7309579B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019206315A JP7309579B2 (ja) 2019-11-14 2019-11-14 通信装置、通信方法及びプログラム
US17/004,233 US11625199B2 (en) 2019-11-14 2020-08-27 Communication apparatus, communication method, and computer program product
EP20193371.0A EP3822780A1 (en) 2019-11-14 2020-08-28 Communication apparatus, communication method, and computer-readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019206315A JP7309579B2 (ja) 2019-11-14 2019-11-14 通信装置、通信方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2021082867A JP2021082867A (ja) 2021-05-27
JP7309579B2 true JP7309579B2 (ja) 2023-07-18

Family

ID=72290915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019206315A Active JP7309579B2 (ja) 2019-11-14 2019-11-14 通信装置、通信方法及びプログラム

Country Status (3)

Country Link
US (1) US11625199B2 (ja)
EP (1) EP3822780A1 (ja)
JP (1) JP7309579B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7309580B2 (ja) * 2019-11-14 2023-07-18 株式会社東芝 通信装置、通信方法及びプログラム
JP7451438B2 (ja) 2021-01-22 2024-03-18 株式会社東芝 通信装置、通信システム、通知方法及びプログラム
WO2022157750A1 (en) * 2021-01-25 2022-07-28 Marvell Israel (M.I.S.L) Ltd. Centralized control of time gates for time sensitive networking (tsn)
JP2022191014A (ja) 2021-06-15 2022-12-27 株式会社東芝 スイッチ装置、方法及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217916A1 (en) 2009-02-26 2010-08-26 International Business Machines Corporation Method and apparatus for facilitating communication between virtual machines
JP2012514386A (ja) 2008-12-30 2012-06-21 インテル・コーポレーション メッセージ通信方法
US20130232491A1 (en) 2008-06-13 2013-09-05 Netapp Inc. Virtual machine communication
JP2019057817A (ja) 2017-09-21 2019-04-11 株式会社東芝 通信装置、通信方法及びプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
US9960872B2 (en) * 2012-03-08 2018-05-01 Marvell International Ltd. Systems and methods for performing a soft-block of a queue based on a size of a remaining period of a guard band
US9454497B2 (en) 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
JP6650896B2 (ja) 2017-02-17 2020-02-19 日本電信電話株式会社 仮想マシン間通信システム
JP6914900B2 (ja) 2018-09-18 2021-08-04 株式会社東芝 スイッチ装置、スイッチング方法及びプログラム
US11012365B2 (en) * 2019-09-27 2021-05-18 Intel Corporation Changing a time sensitive networking schedule implemented by a softswitch

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130232491A1 (en) 2008-06-13 2013-09-05 Netapp Inc. Virtual machine communication
JP2012514386A (ja) 2008-12-30 2012-06-21 インテル・コーポレーション メッセージ通信方法
US20100217916A1 (en) 2009-02-26 2010-08-26 International Business Machines Corporation Method and apparatus for facilitating communication between virtual machines
JP2019057817A (ja) 2017-09-21 2019-04-11 株式会社東芝 通信装置、通信方法及びプログラム

Also Published As

Publication number Publication date
US20210149603A1 (en) 2021-05-20
JP2021082867A (ja) 2021-05-27
EP3822780A1 (en) 2021-05-19
US11625199B2 (en) 2023-04-11

Similar Documents

Publication Publication Date Title
JP7309579B2 (ja) 通信装置、通信方法及びプログラム
JP7309580B2 (ja) 通信装置、通信方法及びプログラム
US10884786B2 (en) Switch device, switching method, and computer program product
EP3461086B1 (en) Communication apparatus, communication method and computer-readable medium
CN107846443B (zh) 网络中的分布式处理
JP7000088B2 (ja) 通知制御装置、通知制御方法及びプログラム
US7809875B2 (en) Method and system for secure communication between processor partitions
US10452570B1 (en) Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints
JP7354361B2 (ja) 処理装置、処理方法及びプログラム
KR20210051325A (ko) 비대칭 멀티프로세싱 시스템의 데이터 공유 장치 및 방법
JP7451438B2 (ja) 通信装置、通信システム、通知方法及びプログラム
EP3304331A1 (en) Single-chip multi-processor communication
US20160134567A1 (en) Universal network interface controller
US10353857B2 (en) Parallel processing apparatus and method for controlling communication
JP5372699B2 (ja) 車載ネットワーク装置
US20120096245A1 (en) Computing device, parallel computer system, and method of controlling computer device
US20240333541A1 (en) Data transmission device on server, data transmission method and program on server
US20240129255A1 (en) Server delay control device, server delay control method, and program
CN117874748A (zh) 一种跨平台操作系统的混合安全虚拟化方法
JP2022022059A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230213

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: 20230606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230705

R151 Written notification of patent or utility model registration

Ref document number: 7309579

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151