JP2022112621A - 通信装置、通信システム、通知方法及びプログラム - Google Patents

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

Info

Publication number
JP2022112621A
JP2022112621A JP2021008477A JP2021008477A JP2022112621A JP 2022112621 A JP2022112621 A JP 2022112621A JP 2021008477 A JP2021008477 A JP 2021008477A JP 2021008477 A JP2021008477 A JP 2021008477A JP 2022112621 A JP2022112621 A JP 2022112621A
Authority
JP
Japan
Prior art keywords
notification
virtual machine
notification information
communication device
storage 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.)
Granted
Application number
JP2021008477A
Other languages
English (en)
Other versions
JP7451438B2 (ja
Inventor
優太 小林
Yuta Kobayashi
隆博 山浦
Takahiro Yamaura
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 JP2021008477A priority Critical patent/JP7451438B2/ja
Priority to US17/412,701 priority patent/US20220237009A1/en
Publication of JP2022112621A publication Critical patent/JP2022112621A/ja
Application granted granted Critical
Publication of JP7451438B2 publication Critical patent/JP7451438B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4555Para-virtualisation, i.e. guest operating system has to be modified
    • 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
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】リアルタイム通信で要求される転送処理の遅延を抑える通信装置、通信システム、通知方法及びプログラムを提供する。【解決手段】実施形態の通信装置は、タスクと通知部とを備える。タスクは、所定の処理を実行した後に、仮想マシンモニタを介して通知先の仮想マシンへ通知される通知情報を、記憶部に記憶する。通知部は、前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する。【選択図】図13

Description

本発明の実施形態は通信装置、通信システム、通知方法及びプログラムに関する。
工場内の各機器を接続する産業用ネットワークや、車載システムの制御コントローラを接続する車載ネットワークなどの分野では、リアルタイム性が求められる。近年、産業用ネットワークや車載ネットワークなどでは、イーサネット(登録商標)の利用が進んでおり、様々なリアルタイムイーサネット規格が提案されている。また、産業用システムや車載システムにおいては、仮想計算機技術の適用が進んでいる。1台の物理計算機上に複数の仮想マシンを集約することでコスト低減などの効果が見込まれる。このような背景から仮想マシン間の通信処理を担うソフトウェアスイッチもリアルタイムイーサネットに対応することが求められる。
特開2001―216170号公報 特開2006―268092号公報 特開2007―323256号公報 特開平6―19823号公報
しかしながら、従来の技術では、リアルタイム通信で要求される転送処理の遅延を抑えることが難しかった。
実施形態の通信装置は、タスクと通知部とを備える。タスクは、所定の処理を実行した後に、仮想マシンモニタを介して通知先の仮想マシンへ通知される通知情報を、記憶部に記憶する。通知部は、前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する。
複数の仮想マシンが動作する通信装置の例を示す概略図。 通常のハードウェアを用いたQbv対応のTSNスイッチの例を示す図。 仮想マシンを用いたQbv対応のソフトウェアTSNスイッチの例を示す図。 Qbvに関わる処理を1つの仮想マシンに集約する場合の例を示す図。 仮想マシン間のデータ受け渡しについて説明するための図。 第1実施形態の通信装置の入出力処理に係る構成の例1を示す概略図。 第1実施形態の通信装置の入出力処理に係る構成の例2を示す概略図。 第1実施形態のタスクの実行イメージを示す図。 第1実施形態の通信装置のタスク制御処理に係る構成の例を示す図。 第1実施形態のタスクスケジュール情報の例1を示す図。 第1実施形態のタスクスケジュール情報の例2を示す図。 hypercallによるイベント通知の課題を説明するための図。 第1実施形態のhypercall発行タイミングの例を示す図。 第1実施形態の通信装置の通知処理に係る構成の例を示す図。 第1実施形態の通知情報の例を示す図。 第1実施形態の通知方法の例を示すフローチャート。 第2実施形態の通信装置の通知処理に係る構成の例を示す図。 第2実施形態のタスクスケジュール情報の例を示す図。 第3実施形態のhypercall数と性能(実行時間)との関係を示す図。 第4実施形態の通信装置の機能構成の例を示す図。 第4実施形態の通信装置の機能構成の例を示す図。 第5実施形態の通信システムの装置構成の例を示す図。 第1乃至第5実施形態の通信装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、通信装置、通信システム、通知方法及びプログラムの実施形態を詳細に説明する。
仮想マシン間のリアルタイム通信処理をソフトウェアで実現する場合、通信処理の処理遅延が問題となる。具体的には、仮想マシン間でデータ受け渡しを行う時のデータコピーとhypercall発行によるオーバーヘッドが大きく影響する。
hypercallの発行回数を減らす方法として、割り込みベースのイベント通知方法ではなく、ポーリングによるイベント通知を用いる方法が考えられる。しかし、ポーリングベースだと、イベントを検知する側の仮想マシンが常にキューの状態などを監視することになり、イベントが発生していないときもCPUリソースを消費する。そのため、ポーリングによるイベント通知を用いる方法は効率が悪い。また、ゲストOSにLinux(登録商標)などの汎用OSを利用する場合も考えられ、全てをポーリング処理にするのは難しい。
割り込みとポーリングとを組み合わせたNAPI(NEW API)のような通知方法も考えられるが、最悪遅延を保証する必要があるTSN(Time-Sensitive Networking)などの用途では、割り込み(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は、優先度が異なる複数の送信バッファ(送信キュー)を事前に設定したスケジュール情報(ゲートコントロールリスト)に従って制御することで、優先度(トラフィッククラス)ごとにデータ(フレーム)の送信タイミングを厳密に制御することが可能になる。各送信バッファにはデータの送信を許可するゲートを設ける。ゲートが開いている場合(オープン状態)は、データの送信が許可され、閉じている場合(クローズ状態)はデータの送信は禁止される。
<仮想マシンとソフトウェアスイッチの説明>
次に、産業用システム及び車載システムなどに仮想化技術などのソフトウェア技術を適用する場合の例について説明する。例えば、仮想マシン間を接続するスイッチ(仮想スイッチ)をソフトウェアで実現することが考えられる。
図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のタスクスケジューリングなどの影響を受けなくなる。
なお、通信装置100で動作する仮想マシンの数は、図4の例に限られず任意でよい。また、通信装置100で動作する仮想マシンの数は、通信装置100の動作中に変更されてもよい。
<仮想マシン間のデータ受け渡しに関する説明>
図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を発行する必要がある。
<hypercallに関して>
hypercallは、上記のデータ受け渡し以外にも、仮想マシンモニタ2へイベントを通知する際に利用される。例えば、フレームの転送処理の転送通知や完了通知などにもhypercallが利用される。具体的には、仮想マシン1から別の仮想マシン1へフレームが送信される場合、送信元の仮想マシン1が、宛先の仮想マシン1と共有している共有メモリ上にフレームを書き込み、hypercallを宛先の仮想マシン1へ発行する。これにより、宛先の仮想マシン1は、共有メモリにフレームを書き込まれたことを検知し、共有メモリからフレームを読み出すことができる。その後、宛先の仮想マシン1がフレームを読み出すと、フレーム読み出しが完了したことを送信元の仮想マシン1へhypercallを発行することで通知する。このように、仮想マシン1間で何らかのイベントを通知する際にもhypercallが利用される。
他にも、コンソール画面への入出力処理などは、仮想マシンモニタ2や管理用の仮想マシン1によって実際の画面出力処理が実施される。そのため、仮想マシンモニタ2や管理用の仮想マシン1が、入出力の文字列の受け渡しをhypercallによって行う。また、タイマー割り込みなどを発生させる場合も、タイマー自体の管理は仮想マシンモニタ2や管理用の仮想マシン1が担うため、タイマーの設定もhypercallによって通知される。
図6は第1実施形態の通信装置100の入出力処理に係る構成の例1を示す概略図である。第1実施形態の通信装置100は、仮想マシン1i、仮想マシン1j及びNIC20と接続される。通信装置100は、仮想マシン1i、仮想マシン1j及びNIC20の間でデータ転送処理(フレーム転送処理)を実施する。
ソフトウェアTSNスイッチ200-3は、仮想マシン1i、仮想マシン1j及びNIC20と接続するネットワークポート毎に、入力処理部301a~c、出力処理部302a~c、入力バッファ303a~c、転送バッファ304a~c及び出力バッファ305a~cを備える。
入力処理部301a~cを区別しない場合、単に入力処理部301という。同様に、出力処理部302a~cを区別しない場合、単に出力処理部302という。同様に、入力バッファ303a~cを区別しない場合、単に入力バッファ303という。同様に、転送バッファ304a~cを区別しない場合、単に転送バッファ304という。同様に、出力バッファ305a~cを区別しない場合、単に出力バッファ305という。
入力処理部301aは、入力バッファ303aを介して仮想マシン1iからデータ(フレーム)を受信すると、当該データのヘッダ情報を参照して転送先のネットワークポートを決定し、該当する転送バッファ304へデータを書き込む。入力処理部301aは、例えば、データの宛先が仮想マシン1jの場合、転送バッファ304bへデータを書き込む。
出力処理部302aは、転送バッファ304aからデータを取得すると、出力バッファ305aを介して仮想マシン1iへデータを出力する。
入力処理部301b及び301cの説明は、入力処理部301aと同様なので省略する。同様に、出力処理部302b及び302cの説明は、出力処理部302aと同様なので省略する。
第1実施形態の通信装置100は、各ネットワークポートの入力処理部301及び出力処理部302をタスク(入力処理タスク及び出力処理タスク)により実現し、当該タスクをスケジュールされた順番に周期的に実行する。これにより、コンテキストスイッチなどによる見積困難な処理時間の揺らぎを排除する。
なお、入力処理部301及び出力処理部302を、ネットワークポート毎に備えずに、図7に示すように入力処理部301及び出力処理部302をそれぞれ1つずつの構成で、図6と同様の機能を実現してもよい。
図7は第1実施形態の通信装置100の入出力処理の例2を示す概略図である。図7の場合は、入力処理部301/出力処理部302が、処理対象のネットワークポート(仮想マシン1i/仮想マシン1j/NIC20)を切り替えながらフレーム転送を実施する。
入力処理部301は、図4のバックエンド仮想ネットワークドライバ7のTx_be及びRxに該当する。入力処理部301は、入力バッファ303を介して仮想マシン1i、1jまたはNIC20からフレームを受け取ると、ヘッダ情報を参照して転送先のネットワークポートを決定し、該当する転送バッファ304へフレームを書き込む。入力処理部301は、フレームの転送処理が完了したことを送信元の仮想マシン1に通知するために、仮想マシンモニタ2にhypercallを発行する。仮想マシンモニタ2は、hypercallで指定された送信元の仮想マシン1に転送処理が完了したことを通知する。送信元の仮想マシン1は、当該通知を受けると、入力バッファ303を解放する。
出力処理部302は、図4のバックエンド仮想ネットワークドライバ7のTx及びRx_beに該当する.出力処理部302は、転送バッファ304からフレームを受け取り、出力バッファ305を介して仮想マシン1(またはNIC20)へフレームを受け渡す。最後に出力処理部302は、宛先の仮想マシン1へフレームを出力バッファ305へ書き込んだことを通知するために、仮想マシンモニタ2にhypercallを発行する。仮想マシンモニタ2は、hypercallで指定された宛先の仮想マシン1にフレームを転送したことを通知する。宛先の仮想マシン1は、当該通知を受けると、出力バッファ305からフレームを読み出す。
図8は第1実施形態のタスクの実行イメージを示す図である。図8の例は、ソフトウェアTSNスイッチ200-3を動作させるCPUが1つの場合のタスクの実行イメージを示す。また、図8の例は、物理ネットワークの通信速度が1Gbpsである場合を示す。
ソフトウェアTSNスイッチ200-3は、各タスクを周期的に実行する。br_out(pif)は、出力処理部302cのタスクを示す。br_in(pif)は、入力処理部301cのタスクを示す。pifは、物理IFを表し、図6のNIC20に対応する。
br_out(vif1)は、出力処理部302aのタスクを示す。br_in(vif1)は、入力処理部301aのタスクを示す。vif1は、仮想IFを表し、図6の仮想マシン1iに対応する。
br_out(vif2)は、出力処理部302bのタスクを示す。br_in(vif2)は、入力処理部301bのタスクを示す。vif2は、仮想IFを表し、図6の仮想マシン1jに対応する。
図9は第1実施形態の通信装置100のタスク制御処理に係る構成の例を示す図である。図9の例では、選択部307が、タスクスケジュール情報DB308を参照して、順次起動するタスクを決定する。なお、入力処理部301及び出力処理部302は、ネットワークポート毎に個別に備えられていてもよいし(図6の構成)、入力処理部301及び出力処理部302がそれぞれ1つずつ備えられていてもよい(図7の構成)。
タスクスケジュール情報DB308には、実行されるタスクの情報が格納される。タスクスケジュール情報DB308は、複数のタスクの実行順序を示すスケジュール情報(第1のスケジュール情報)を記憶する。複数のタスクは、このスケジュール情報に基づいて周期的に実行される。
図10Aは第1実施形態のタスクスケジュール情報DB308の例1を示す図である。図10Aは、通信装置100の入出力処理に係る構成が図6の場合のタスクスケジュール情報DB308を示す。
br_in()は、入力処理部301のタスクを示し、()内は、入力処理の対象となるインタフェースを示す。例えば、br_in(pif)は、入力処理部301cのタスクを示す。br_out()は、出力処理部302のタスクを示し、()内は、出力処理の対象となるインタフェースを示す。例えば、br_out(pif)は、出力処理部302cのタスクを示す。fdb_cleanは、FDB(forwarding/filtering database)の古いエントリを削除するタスクを示す。stat_updateは、通信装置100の統計情報(例えば送信フレーム数及び受信フレーム数等)を処理するタスクを示す。
なお、タスクスケジュール情報DB308でスケジュール管理されるタスクは、ノンプリエンプトタスクとし、実行中に他のタスクに割り込まれないタスクとする。
図10Bは第1実施形態のタスクスケジュール情報DB308の例2を示す図である。図10Bは、通信装置100の入出力処理に係る構成が図7の場合のタスクスケジュール情報DB308を示す。
図10Aの場合は実行されるタスクが保持されるが、図10Bの場合は実行されるタスクと、その引数(argument)が保持される。実行されるタスクが入力処理部(br_in)/出力処理部(br_out)の場合は、引数は対象のネットワークポートである。
選択部307は、タスクスケジュール情報DB308に記憶されたタスクスケジュール情報に基づいて順次タスクを実行する。具体的には、選択部307は、next_taskで指定されているタスクを選択し、next_taskを+1する。選択部307は、選択したタスクの処理が完了したら、+1されたnext_taskで指定されているタスクを選択し、next_taskを+1する。これにより、タスクスケジュール情報に含まれるタスクが順次実行される。next_taskにより指定されるIDがスケジュール情報DBの末尾になった場合(図10の例ではIDが10の場合)には、IDが1のタスクに戻る。
このように、タスク(入力処理部301/出力処理部302)を仮想マシン1毎に周期的に実行することで、各仮想マシン1のフレームの転送タイミングが一定間隔で実施され、TSNなどのリアルタイム処理(リアルタイム通信)で要求される決定論的な(Deterministic)動作が実現できる。
図9に戻り、入力バッファ303は、仮想マシン1からソフトウェアTSNスイッチ200-3へフレームを受け渡す際に利用されるバッファである。IEEE802.1Qbvの場合、入力バッファ303は、トラフィッククラス毎に分割された複数のキューを備える。入力バッファ303は、ソフトウェアTSNスイッチ200-3側に備えても良いし、仮想マシン1側に備えても良いし、仮想マシンモニタ2(VMM(Virtual Machine Monitor、またはハイパーバイザー))側に備えても良い。
入力処理部301は、選択部307からの通知を受けて起動し、前述の通り、入力バッファ303のフレームを読み出し、転送先を判定して、該当する転送バッファ304へフレームを書き込む。
転送バッファ304は、入力処理部301から出力処理部302へフレームを受け渡す際に利用するバッファである。IEEE802.1Qbvの場合、転送バッファ304は、トラフィッククラス毎に分割された複数のキューを備える。
出力処理部302は、選択部307からの通知を受けて起動し、前述の通り、転送バッファ304のフレームを読み出し、出力バッファ305へフレームを書き込む。
出力バッファ305は、ソフトウェアTSNスイッチ200-3から仮想マシン1へフレームを受け渡す際に利用するバッファである。出力バッファ305は、ソフトウェアTSNスイッチ200-3側に備えても良いし、仮想マシン1側に備えても良いし、仮想マシンモニタ2側に備えても良い。
<hypercallによるイベント通知の課題>
ここで、図11を参照して、hypercallによるイベント通知の課題について説明する。
図11は、hypercallによるイベント通知の課題を説明するための図である。図11の例では、hypercallによるフレーム転送完了通知(入力処理部301から送信元の仮想マシン1への通知)、及び、フレーム転送通知(出力処理部302から仮想マシンモニタ2への通知)を実施するタイミングの例を示す。図9のように、ネットワークポート毎に入力処理部301及び出力処理部302を周期的に実行する場合、通常は図11のように各入力処理部301/出力処理部302がhypercallを発行する。hypercallにより仮想マシンモニタ2へ処理が移り、仮想マシンモニタ2がhypercallで通知された情報に従って適切な処理を実施することになる。この仮想マシンモニタ2へ処理が移行(トラップ)する際、CPUの動作モードをより権限の高い特権モードへ切り変えるなどの処理が発生する。この処理がオーバーヘッドとなり、見積困難な処理遅延を発生させるという課題が生じる。
そこで第1実施形態の通信装置100では、一定周期で実行される複数のタスクのhypercallを1つにまとめて発行する(バッチ処理)。
図12は第1実施形態のhypercall発行タイミングの例を示す図である。図12の例では、6つのイベント通知が1つのhypercallにより一括で処理されている。
図13は第1実施形態の通信装置100の通知処理に係る構成の例を示す図である。入力処理部301は、入力バッファ303を介して仮想マシン1i、1jまたはNIC20からフレームを受け取ると、ヘッダ情報を参照して転送先のネットワークポートを決定し、該当する転送バッファ304へフレームを書き込む。
入力処理部301は、フレームの転送処理が完了したことを送信元の仮想マシン1に通知するために、入力完了情報(読み出し完了通知)を通知情報DB306に記憶する。
次に、出力処理部302は、転送バッファ304からフレームを受け取り、出力バッファ305を介して仮想マシン1(またはNIC20)へフレームを受け渡す。最後に、出力処理部302は、宛先の仮想マシン1へフレームを出力バッファ305へ書き込んだことを通知するために、出力完了情報(書き込み完了通知)を通知情報DB306に記憶する。
通知情報DB306は、前回のhypercallを発行してから次のhypercallを発行するまでの一周期内で、各タスクから発生した通知情報(例えば、上述の入力完了情報及び出力完了情報等のイベント通知等)を記憶する。
通知部309は、通知情報DB306に記憶された複数の通知情報をまとめて、仮想マシンモニタ2へ通知する。具体的には、通知部309は、例えば一周期内で実行された複数のタスクによって通知情報DB306に記憶された複数の通知情報をまとめて、仮想マシンモニタ2へ通知する。また例えば、通知部309は、通知情報DB306に記憶された複数の通知情報を1回のhypercallによって仮想マシンモニタ2に通知する。仮想マシンモニタ2は、hypercallを受信すると、当該hypercallによって通知された通知情報を仮想マシン1及びNIC20等の通知先に通知する。
なお図13の例では、入力処理部301/出力処理部302がそれぞれ1つずつの場合を示しているが、図6のように、入力処理部301/出力処理部302が複数あってもよい。
<通知情報の例>
図14は第1実施形態の通知情報DB306の例を示す図である。通知情報DB306では、hypercallのタイプ、通知先仮想マシンを示す情報、及び、各hypercallで通知される情報等を含む。
例えば、入力処理部301/出力処理部302はフレーム転送を実施後に、自身でhypercallを発行せずに、通知情報DB306へ通知情報を登録する。通知部309は、通知情報DB306から複数の通知情報を取得し、当該複数の通知情報を含むhypercallを仮想マシンモニタ2(VMM)に通知する。そして、通知部309は、通知済みの通知情報を通知情報DB306から消去する。
なお、通知部309は、通知情報DB306に保持された通知情報を、1回のhypercallで通知してもよいし、複数の通知情報を含むhypercallを複数回に分けて通知してもよい。仮想マシンモニタ2は、通知部309からhypercallによって通知された通知情報に基づいて、各仮想マシン1に通知情報を通知する。
ここで、通知部309の実行タイミングとしては、前述のタスクスケジュール情報に通知部309をタスクとして登録して周期的に動作させても良いし、タイマーなどを利用して一定時間間隔で通知部309を実行させても良い。
<通知方法の例>
図15は第1実施形態の通知方法の例を示すフローチャートである。はじめに、各タスク(例えば入力処理部301及び出力処理部302等)が、処理(タスク毎に定めれた所定の処理)を実行する(ステップS1)。
次に、各タスクが、ステップS1の処理に基づく通知情報を通知情報DB306へ登録する(ステップS2)。次に、通知部309が、通知情報DB306を参照し(ステップS3)、複数の通知情報を含むhypercallを仮想マシンモニタ2(VMM)に通知する。次に、仮想マシンモニタ2が、各通知先へ通知情報を通知する(ステップS5)。
以上説明したように、第1実施形態の通信装置100では、タスク(例えば入力処理部301及び出力処理部302等)が、所定の処理を実行した後に、仮想マシンモニタ2を介して通知先の仮想マシン1へ通知される通知情報を、記憶部(実施形態では、通知情報DB306)に記憶する。そして、通知部309が、記憶部に記憶された複数の通知情報をまとめて、仮想マシンモニタ2へ通知する。
これにより第1実施形態の通信装置100によれば、リアルタイム通信で要求される転送処理の遅延を抑えることができる。具体的には、第1実施形態の通信装置100では、通知部309が、例えばタスクスケジュール情報の一周期で実行されるタスクの通知情報を、1つのhypercallでまとめて仮想マシンモニタ2(VMM)に通知できる。これにより、hypercallの発行回数及び仮想マシンモニタ2へのトラップ回数が削減でき、リアルタイム処理(リアルタイム通信)で要求される決定論的な(Deterministic)動作が実現できる。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第2実施形態では、通知情報をまとめて通知するか否かを通知先毎に制御する場合について説明する。
図16は第2実施形態の通信装置100の通知処理に係る構成の例を示す図である。第2実施形態では、第1実施形態の構成(図13参照)に更に通知制御情報DB310が追加されている。
通知制御情報DB310は、通知情報の通知制御方法を転送先毎に記憶する。図16の例では、例えば仮想マシン(VM)1i及び1kは、通知情報を、ポーリングで取得する。一方、仮想マシン(VM)1j及びNIC20は、通知情報を、割り込み(hypercall)を受信することによって受け付ける。
また、第2実施形態のタスクスケジュール情報DB308では、図17に示されるように、通知情報の通知制御方法もタスク毎に記憶する。各タスクで発生するイベントの通知制御は、割り込み(hypercall)またはポーリングで実施される。
割り込み(hypercall)の場合は、第1実施形態と同様に入力処理部301/出力処理部302が通知情報DB306へ通知情報を登録する。一方、ポーリングの場合は、通知先が、常にイベントが発生しているか否かを自身で確認する。そのため、ポーリングの場合は、入力処理部301/出力処理部302は、フレーム転送が完了しても通知情報DB306へ通知情報を登録しない。
すなわち、第2実施形態では、記憶部(本実施形態では、通知制御情報DB310)が、仮想マシン1毎の通知情報の通知制御方法を記憶する。入力処理タスク(入力処理部301)は、読み出し処理を実行した後に、通知制御方法が割り込みの場合、読み出し完了通知を記憶部(本実施形態では、通知情報DB306)へ記憶し、通知制御方法がポーリングの場合、読み出し完了通知を当該記憶部へ記憶しない(仮想マシンモニタへ発行しない)。また、出力処理タスク(出力処理部302)は、書き込み処理を実行した後に、通知制御方法が割り込みの場合、書き込み完了通知を記憶部(本実施形態では、通知情報DB306)へ記憶し、通知制御方法がポーリングの場合、書き込み完了通知を当該記憶部へ記憶しない(仮想マシンモニタへ発行しない)。
これにより第2実施形態によれば、通知情報をまとめて通知するか否かを通知先の動作状況に応じて柔軟に変更することができる。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第3実施形態では、通知情報をまとめて通知するか否かを、通知される通知情報の数に基づいて制御する場合について説明する。
図18は第3実施形態のhypercall数と性能(実行時間)との関係を示す図である。バッチ処理によって通知するイベント数が少ない場合は、処理時間がバッチ処理をしない場合と比較して悪化する可能性がある。そのため、第3実施形態の通知部309は、一周期内で発生するhypercall数に基づいて、通知情報をまとめる処理(バッチ処理)をするか否かを判定する。例えば、通信装置100に収容される仮想マシン1の数から、一周期内で発生するイベントに基づく通知情報の数は見積もれる。
例えば、通知部309は、仮想マシン1の数に基づいて通知情報の数を見積もり、通知情報の数が閾値以下の場合、所定の処理を実行した後に、仮想マシンモニタ2を介して通知情報を仮想マシン1に通知することをタスクに要求し、通知情報の数が閾値より大きい場合、所定の処理を実行した後に、通知情報を記憶部(実施形態では、通知情報DB306)に記憶することをタスクに要求する。
具体的には、通知部309は、例えばN=仮想マシン数×2(入力処理部301/出力処理部302)+α(コンソール出力処理等のタスクによるhypercall)によって通知情報の数Nを見積もる。通知部309は、Nが閾値より大きければ、通知情報の通知制御をバッチ処理に切り替える。
以上説明したように、第3実施形態では、タスクが、所定の期間内で発生する通知情報の数が閾値以下の場合、所定の処理を実行した後に、仮想マシンモニタ2を介して通知情報を仮想マシン1に通知し、通知情報の数が閾値より大きい場合、所定の処理を実行した後に、通知情報を記憶部(実施形態では、通知情報DB306)に記憶する。そして、通知部309は、通知情報の数が閾値より大きい場合、記憶部に記憶された複数の通知情報をまとめて、仮想マシンモニタ2へ通知する。
これにより第3実施形態によれば、例えば通信装置100で動作する仮想マシン1の数が変動する場合であっても、リアルタイム通信で要求される転送処理の遅延を抑えることができる。
(第4実施形態)
次に第4実施形態について説明する。第4実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第4実施形態では、IEEE802.1Qbvによる制御も含めた詳細な構成について説明する。
図19A及びBは第4実施形態の通信装置100-2の機能構成の例を示す図である。第4実施形態の通信装置100-2は、仮想マシン1-1~1-n、及び、ソフトウェアTSNスイッチ200-4を備える。図19A及びBは、ソフトウェアTSNスイッチ(転送制御部)200-4がIEEE802.1Qbvに対応した例を示す。図19A及びBでは、n個の仮想マシン1-1~1-nがソフトウェアTSNスイッチ200-4に接続されている。
以下、仮想マシン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の構成と同じである。
ソフトウェアTSNスイッチ200-4は、転送処理部101-1~101-n、FDB120、通知情報DB306及び通知部309を備える。転送処理部101-1~101-nは、対応する仮想マシン1-1~1-nに接続される。なお、ソフトウェアTSNスイッチ200-4は、ソフトウェアではなく、専用HWにより実現されていてもよい。
転送処理部101-1は、入力処理部111-1及び出力処理部112-1を備える。
入力処理部111-1は、記述子入力バッファ102-1、送信制御部103-1、転送先決定部104-1、FDB更新部105-1、転送部106-1及びスケジュール情報(第2のスケジュール情報)110-11を備える。
出力処理部112-1は、記述子出力バッファ107-1、送信制御部108-1、記述子転送バッファ109-1及びスケジュール情報(第2のスケジュール情報)110-12を備える。
転送処理部101-2~101-nの構成も、転送処理部101-1の構成と同じである。
はじめに、仮想FDB93について説明する。各仮想マシン1の仮想FDB93を記憶する疑似物理メモリ(仮想メモリ)は、ソフトウェアTSNスイッチ200-4のFDB120を記憶する記憶部(物理メモリ)にマップされている。つまり、各仮想マシン1は同一のFDB120を参照することになる。仮想FDB93とFDB120のマップは、例えば通信装置100-2(スイッチ)の初期化時などに実行される。
また、図19A及びBの例では、FDB120の更新はソフトウェアTSNスイッチ200-4(FDB更新部105)によって実行され、フレーム出力部91は読み出しを実行する(Read-Only)。FDB120(仮想FDB93)には、フレームの転送先を決定するための情報が含まれる。具体的には、転送先を決定するための情報は、転送先のネットワークポート(ネットワークインタフェース、または仮想マシン1)の識別子、MACアドレス、VLAN ID、及び最終送信時刻などの情報を含む。
次に、フレーム出力部91の送信仮想記憶領域と、フレーム入力部92の受信仮想記憶領域について説明する。送信仮想記憶領域は、フレーム出力部91の送信バッファ、受信仮想記憶領域は、フレーム入力部92の受信バッファとして利用される。送信/受信仮想記憶領域は、送信元の仮想マシン1及び宛先の仮想マシン1のペア毎に領域が分かれている。例えば、送信元が仮想マシン1-1、宛先が仮想マシン1-3のフレームが転送される場合は、1-3送信仮想記憶領域と1-3受信仮想記憶領域とが利用される。
以下、第4実施形態では、スイッチの起動時などに、送信仮想記憶領域と受信仮想記憶領域とをペア毎に同一の物理メモリ領域46(図5参照)に予めマップしておく方法を例にして説明する。
次に、記述子送信バッファ94及び記述子入力バッファ102について説明する。記述子送信バッファ94及び記述子入力バッファ102は、フレームのトラフィッククラス(TC)毎にキュー(FIFO)が分かれている。IEEE 802.1Qのヘッダに含まれるPCP(Priority Code Point)とトラフィッククラスの対応関係は事前に指定される。
記述子送信バッファ94は、仮想マシン1が管理する仮想メモリ領域(疑似物理メモリ領域)である。記述子入力バッファ102は、ソフトウェアTSNスイッチ200-4が管理するメモリ領域である。
記述子送信バッファ94及び記述子入力バッファ102は、通信装置100-2(スイッチ)の初期化時などに予め同一の物理メモリ領域をマップする。記述子送信バッファ94及び記述子入力バッファ102は、フレーム出力部91と入力処理部111間の記述子の受け渡しに利用される。
次に、記述子受信バッファ95及び記述子出力バッファ107について説明する。記述子受信バッファ95は、仮想マシン1が管理する仮想メモリ領域(疑似物理メモリ領域)である。記述子出力バッファ107は、ソフトウェアTSNスイッチ200-4が管理するメモリ領域である。
記述子受信バッファ95及び記述子出力バッファ107は、通信装置100-2(スイッチ)の初期化時などに予め同一の物理メモリ領域をマップする。記述子受信バッファ95及び記述子出力バッファ107は、フレーム入力部92と出力処理部112間の記述子の受け渡しに利用される。
次に、第4実施形態の動作について説明する。はじめに、フレーム出力部91について説明する。まず、書き込み部61はアプリケーションやネットワークスタックから転送対象のフレームを受け取る。書き込み部61は、受け取ったフレームのヘッダ情報と、仮想FDBとを参照し、フレームの転送先を決定する。
書き込み部61は、宛先の仮想マシン1用の送信仮想記憶領域へフレームを書き込む。リングバッファを用いる場合は、書き込み部61は、バッファ情報を参照し、空き領域が存在すればHeadのバッファへフレームを書き込み、Headを1進める。
空き領域が存在しない場合は、フレームを廃棄するか、宛先の仮想マシン1がバッファを解放するまで待機する(空き領域ができるまで待機する)。また例えば、書き込み部61は、ポーリングでHead/Tailを確認してもよい。また例えば、宛先の仮想マシン1から空き領域ができたことを通知する制御インタフェースを別途設けてもよい。
書き込み部61は、記述子送信部62へフレーム書き込み通知を発行する。フレーム書き込み通知では、転送先の仮想マシン1の識別子や、フレームを書き込んだ送信仮想記憶領域の位置情報(リングバッファの識別子等)、MACアドレスやVLAN IDなどの転送処理で必要となる情報、フレームのPCP(Priority Code Point)やTC(Traffic Class)、フレームサイズなどのTSN処理で必要となる情報などを通知する。
次に、記述子送信部62の動作について説明する。記述子送信部62は、受け取ったフレーム書き込み通知に含まれるPCPやTCから、記述子を書き込む記述子送信バッファ94の位置を決定する。記述子送信部62は、書き込み部61から受け取った情報を記述子に格納し、記述子送信バッファ94へ書き込む。記述子には、書き込み部61から受け取ったフレーム書き込み通知に含まれる情報の他に、送信時刻や統計情報などを含めても良い。
また例えば、記述子送信部62は、書き込み部61からフレームが書き込まれた送信仮想記憶領域のバッファアドレスのみを受け取り、記述子送信部62がバッファからフレームのヘッダ情報等を参照して記述子の生成、書き込みをしても良い。前述の通り、記述子送信バッファ94は、ソフトウェアTSNスイッチ200-4の記述子入力バッファ102と同一物理メモリにマップされているため、後述の送信制御部103から参照可能になる。
以上が、フレーム出力部91の動作説明である。
次に、転送処理部101の入力処理部111について説明する。
まず、送信制御部103の動作について説明する。まず、送信制御部103は、現在時刻と、スケジュール情報DB110のスケジュール情報(ゲートコントロールリスト)とから、送信が許可されているトラフィッククラスを確認する。次に、送信制御部103は、送信が許可されているトラフィッククラスのキュー(記述子入力バッファ102)から転送対象のフレームの記述子を読み出す。複数のトラフィッククラスのフレーム(記述子)が送信可能な場合は、送信制御部103は、優先度順(Strict Priority)やCredit Based Shaper(IEEE 802.1Qav)等の手法によって決定する。送信制御部103は、読み出した記述子を転送先決定部104へ入力する。送信可能なフレームが存在しない場合は、処理を終了し次のフレーム送信処理に移る(記述子が新たに書き込まれるまで待機する、スケジュール状態が変わるまで待機する等)。
以上が送信制御部103の動作である。上記の処理以外に、送信制御部103は、読み出した記述子に格納されたフレームサイズと現在時刻、スケジュール情報DB110のスケジュール情報から、ガードバンド等を考慮してスケジュールで許可された時間内でフレームが送信可能かどうかの判定処理などを実施しても良い。また、第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の転送部106は、転送先の出力処理部112へ記述子を書き込みが完了すると、通知情報DB306へ転送完了通知を登録する。
以上が入力処理部111の動作である。入力処理部111により、各仮想マシン1から送信されたフレーム(記述子)を、IEEE802.1 Qbvの送信タイミングに従って宛先の仮想マシン1用の出力処理部112へ転送することができる。これは、送信元の仮想マシン1のネットワークインタフェースのQbv処理が実施されたことになる(図4のTx_beに該当)。
次に、出力処理部112の動作について説明する。送信制御部108の動作は基本的に入力処理部111の送信制御部103と同様の処理を実施する。出力処理部112の送信制御部108では、読み出し元のバッファが記述子転送バッファ109となり、書き込み先が記述子出力バッファ107(記述子受信バッファ95)となる。ここで、記述子出力バッファ107(記述子受信バッファ95)は1つのキュー(FIFO)を提供しているが、記述子入力バッファ102や記述子転送バッファ109のようにトラフィッククラス毎にキューを分けても良い。
出力処理部112の送信制御部108は、転送先の仮想マシン1(記述子受信バッファ95)へ記述子を書き込みが完了すると、通知情報DB306へ転送通知を登録する。
以上が出力処理部112の動作である。出力処理部112により、IEEE802.1 Qbvの送信タイミングに従って宛先の仮想マシン1へ、記述子を転送することができる。これは、ソフトウェアTSNスイッチ200-4(スイッチ)のネットワークインタフェースのQbv処理が実施されたことになる(図4のTxに該当)。
通知部309は、通知情報DB306から複数の通知情報を取得し、当該複数の通知情報を含むhypercallを、仮想マシンモニタ2(VMM)を介して、各仮想マシン1に通知する。そして、通知部309は、通知済みの通知情報を通知情報DB306から消去する。
次に、フレーム入力部92の動作について説明する。まず、記述子受信部64が記述子受信バッファ95のキュー(FIFO)から記述子を読み出す。記述子受信部64は、記述子からフレームが格納された送信仮想記憶領域を特定して読み出し部63へ通知する。
読み出し部63は、通知された仮想記憶領域のバッファ情報を参照し、先頭のフレーム(Tail位置に書き込まれたフレーム)を読み出し、アプリケーションやネットワークスタックへ受け渡す。読み出し部63は、フレームの受け渡しが完了したら、バッファを解放し、Tailを+1加算する。
以上が、第4実施形態の転送動作である。以下、いくつか補足をする。
まず、送信/受信仮想記憶領域と物理メモリ領域45とのマップについて補足する。送信/受信仮想記憶領域と物理メモリ領域45とのマップは、例えば通信装置100-2(スイッチ)の初期化時等に行われてもよい。また例えば、送信/受信仮想記憶領域と物理メモリ領域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に対応する受信仮想記憶領域をマップする。
(第5実施形態)
次に第5実施形態について説明する。第5実施形態の説明では、第1実施形態と同様の説明については省略し、第1実施形態と異なる箇所について説明する。第5実施形態では、制御対象装置を含む通信システムの構成について説明する。
図20は第5実施形態の通信システム300の装置構成の例を示す図である。第5実施形態の通信装置100-3は、通信装置100-3、ネットワーク150及び制御対象装置160i~160kを備える。
通信装置100-3は、仮想マシン1h~1k及びNIC20を備える。仮想マシン1hでは、ソフトウェアTSNスイッチ200-3が動作する。仮想マシン1iは、制御対象装置160iを制御する。仮想マシン1jは、制御対象装置160jを制御する。仮想マシン1kは、制御対象装置160kを制御する。NIC20は、ネットワーク150に接続するインタフェースである。
ネットワーク150は、有線、無線、または、有線及び無線を組み合わせて構築された通信ネットワークである。ネットワーク150は、例えば産業用ネットワーク及び車載ネットワークなどである。
制御対象装置160i~160kは、通信装置100-3から制御される装置である。制御対象装置160i~160kは、例えばエッジコンピュータ、ロボット、センサー、アクチュエータ及びベルトコンベア等の任意の装置でよい。
第5実施形態の通信装置100-3を、このような通信システム300で動作させることによって、制御対象装置160i~160kのリアルタイム通信で要求される転送処理の遅延を抑えることができる。
最後に、第1乃至第5実施形態の通信装置100~100-3のハードウェア構成の例について説明する。
[ハードウェア構成の例]
図20は第1乃至第5実施形態の通信装置100~100-3のハードウェア構成の例を示す図である。
通信装置100~100-3は、制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置405及び通信IF406を備える。制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置405及び通信IF406は、バス410を介して接続されている。
制御装置401は、補助記憶装置403から主記憶装置402に読み出されたプログラムを実行する。主記憶装置402は、ROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置403は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、及び、メモリカード等である。
表示装置404は表示情報を表示する。表示装置404は、例えば液晶ディスプレイ等である。入力装置405は、通信装置100(100-2,100-3)として動作させるコンピュータを操作するためのインタフェースである。入力装置405は、例えばキーボードやマウス等である。なお、表示装置404及び入力装置405は、通信装置100(100-2,100-3)と接続可能な外部の管理端末等の表示機能及び入力機能を利用してもよい。
通信IF406は、他の装置と通信するためのインタフェースである。
コンピュータで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
またコンピュータで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またコンピュータで実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
またコンピュータで実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
コンピュータで実行されるプログラムは、上述の通信装置100(100-2,100-3)の機能構成(機能ブロック)のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置401が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置402上にロードされる。すなわち上記各機能ブロックは主記憶装置402上に生成される。
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2つ以上を実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 仮想マシン
2 仮想マシンモニタ
3 ソフトウェアスイッチ
4 ネットワークドライバ
5 フォワーディング処理部
6 FDB
7 バックエンド仮想ネットワークドライバ
8 フロントエンド仮想ネットワークドライバ
9 アプリ/スタック
10 ホストプロセッサ
21 ネットワークインタフェース
31 ノード
32 ネットワークインタフェース
61 書き込み部
62 記述子送信部
63 読み出し部
64 記述子受信部
91 フレーム出力部
92 フレーム入力部
93 仮想FDB
94 記述子送信バッファ
95 記述子受信バッファ
100 通信装置
101 転送処理部
102 記述子入力バッファ
103 送信制御部
104 転送先決定部
105 FDB更新部
106 転送部
107 記述子出力バッファ
108 送信制御部
109 記述子転送バッファ
110 スケジュール情報DB
111 入力処理部
112 出力処理部
120 FDB
150 ネットワーク
160 制御対象装置
200 ソフトウェアTSNスイッチ(転送制御部)
300 通信システム
301 入力処理部
302 出力処理部
303 入力バッファ
304 転送バッファ
305 出力バッファ
306 通知情報DB
307 選択部
308 タスクスケジュール情報DB
309 通知部
310 通知制御情報DB
401 制御装置
402 主記憶装置
403 補助記憶装置
404 表示装置
405 入力装置
406 通信IF
410 バス

Claims (11)

  1. 所定の処理を実行した後に、仮想マシンモニタを介して通知先の仮想マシンへ通知される通知情報を、記憶部に記憶するタスクと、
    前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する通知部と、
    を備える通信装置。
  2. 前記通知部は、複数の前記通知情報をまとめて1つのhypercallで仮想マシンモニタへ通知する、
    請求項1に記載の通信装置。
  3. 前記通信装置は、複数の前記タスクを備え、
    前記複数のタスクは、前記複数のタスクの実行順序を示す第1のスケジュール情報に基づいて周期的に実行され、
    前記通知部は、一周期内で実行された前記複数のタスクによって前記記憶部に記憶された前記複数の通知情報をまとめて、前記仮想マシンモニタへ通知する、
    請求項1又は2に記載の通信装置。
  4. 前記タスクは、所定の期間内で発生する前記通知情報の数が閾値以下の場合、前記所定の処理を実行した後に、仮想マシンモニタを介して前記通知情報を前記仮想マシンに通知し、前記通知情報の数が前記閾値より大きい場合、前記所定の処理を実行した後に、前記通知情報を前記記憶部に記憶し、
    前記通知部は、前記通知情報の数が閾値より大きい場合、前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する、
    請求項1乃至3のいずれか1項に記載の通信装置。
  5. 前記通信装置で動作する前記仮想マシンの数は変動し、
    前記通知部は、前記仮想マシンの数に基づいて前記通知情報の数を見積もり、前記通知情報の数が閾値以下の場合、前記所定の処理を実行した後に、仮想マシンモニタを介して前記通知情報を前記仮想マシンに通知することを前記タスクに要求し、前記通知情報の数が前記閾値より大きい場合、前記所定の処理を実行した後に、前記通知情報を前記記憶部に記憶することを前記タスクに要求する、
    請求項4に記載の通信装置。
  6. 前記通信装置は、
    転送元の前記仮想マシンから転送されるフレームの読み出し処理を実行する入力処理タスクと、
    転送先の前記仮想マシンへ転送されるフレームの書き込み処理を実行する出力処理タスクと、を備え、
    前記入力処理タスクは、前記読み出し処理を実行した後に、前記通知情報として読み出し完了通知を前記記憶部に記憶し、
    前記出力処理タスクは、前記書き込み処理を実行した後に、前記通知情報として書き込み完了通知を前記記憶部に記憶する、
    請求項1乃至5のいずれか1項に記載の通信装置。
  7. 前記記憶部は、前記仮想マシン毎の前記通知情報の通知制御方法を更に記憶し、
    前記入力処理タスクは、前記読み出し処理を実行した後に、前記通知制御方法が割り込みの場合、前記読み出し完了通知を前記記憶部へ記憶し、前記通知制御方法がポーリングの場合、前記読み出し完了通知を、前記記憶部へ記憶しない、
    前記出力処理タスクは、前記書き込み処理を実行した後に、前記通知制御方法が割り込みの場合、前記書き込み完了通知を前記記憶部へ記憶し、前記通知制御方法がポーリングの場合、前記書き込み完了通知を、前記記憶部へ記憶しない、
    請求項6に記載の通信装置。
  8. 前記入力処理タスクは、IEEE 802.1Qbvによって定義される第2のスケジュール情報に基づいて前記読み出し処理を実行し、
    前記出力処理タスクは、前記第2のスケジュール情報に基づいて前記書き込み処理を実行する、
    請求項6又は7に記載の通信装置。
  9. 通信装置と、
    前記通信装置で動作する1以上の仮想マシンによって制御される1以上の制御対象装置と、を備え、
    前記通信装置は、
    所定の処理を実行した後に、仮想マシンモニタを介して通知先の前記仮想マシンへ通知される通知情報を、記憶部に記憶するタスクと、
    前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する通知部と、
    を備える通信システム。
  10. タスクが、所定の処理を実行した後に、仮想マシンモニタを介して通知先の仮想マシンへ通知される通知情報を、記憶部に記憶するステップと、
    通知部が、前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知するステップと、
    を含む通知方法。
  11. コンピュータを、
    所定の処理を実行した後に、仮想マシンモニタを介して通知先の仮想マシンへ通知される通知情報を、記憶部に記憶するタスクと、
    前記記憶部に記憶された複数の前記通知情報をまとめて、前記仮想マシンモニタへ通知する通知部、
    として機能させるためのプログラム。
JP2021008477A 2021-01-22 2021-01-22 通信装置、通信システム、通知方法及びプログラム Active JP7451438B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021008477A JP7451438B2 (ja) 2021-01-22 2021-01-22 通信装置、通信システム、通知方法及びプログラム
US17/412,701 US20220237009A1 (en) 2021-01-22 2021-08-26 Communication apparatus, communication system, notification method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021008477A JP7451438B2 (ja) 2021-01-22 2021-01-22 通信装置、通信システム、通知方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2022112621A true JP2022112621A (ja) 2022-08-03
JP7451438B2 JP7451438B2 (ja) 2024-03-18

Family

ID=82495697

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021008477A Active JP7451438B2 (ja) 2021-01-22 2021-01-22 通信装置、通信システム、通知方法及びプログラム

Country Status (2)

Country Link
US (1) US20220237009A1 (ja)
JP (1) JP7451438B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495628B2 (en) * 2009-08-23 2013-07-23 International Business Machines Corporation Para-virtualization in a nested virtualization environment using reduced number of nested VM exits
JP5532793B2 (ja) 2009-09-28 2014-06-25 富士通株式会社 プログラム及び通信制御方法
US8635615B2 (en) * 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9268591B2 (en) * 2012-10-18 2016-02-23 Vmware, Inc. Systems and methods for detecting system exceptions in guest operating systems
WO2014141854A1 (ja) 2013-03-12 2014-09-18 日本電気株式会社 安定化システム、安定化方法、仮想マシン環境及びプログラム
JP2017059897A (ja) * 2015-09-14 2017-03-23 株式会社東芝 分類器、通信装置、及び通信方法
JP6453801B2 (ja) 2016-03-31 2019-01-16 日本電信電話株式会社 監視システム、監視方法、監視装置、および、被監視装置
JP7000088B2 (ja) * 2017-09-15 2022-01-19 株式会社東芝 通知制御装置、通知制御方法及びプログラム
JP6914900B2 (ja) 2018-09-18 2021-08-04 株式会社東芝 スイッチ装置、スイッチング方法及びプログラム

Also Published As

Publication number Publication date
US20220237009A1 (en) 2022-07-28
JP7451438B2 (ja) 2024-03-18

Similar Documents

Publication Publication Date Title
US10884786B2 (en) Switch device, switching method, and computer program product
US20020091826A1 (en) Method and apparatus for interprocessor communication and peripheral sharing
CN107846443B (zh) 网络中的分布式处理
EP3461086B1 (en) Communication apparatus, communication method and computer-readable medium
JP7310924B2 (ja) サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム
US11341087B2 (en) Single-chip multi-processor communication
JP7000088B2 (ja) 通知制御装置、通知制御方法及びプログラム
EP3823230B1 (en) Communication apparatus, communication method, and computer-readable medium
JP7354361B2 (ja) 処理装置、処理方法及びプログラム
JP7309579B2 (ja) 通信装置、通信方法及びプログラム
CN114424507A (zh) 用于发送数据分组的方法和实现该方法的装置
JP7451438B2 (ja) 通信装置、通信システム、通知方法及びプログラム
KR20210051325A (ko) 비대칭 멀티프로세싱 시스템의 데이터 공유 장치 및 방법
EP4310680A1 (en) Intra-server delay control device, intra-server delay control method, and program
WO2023002547A1 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
US20240129255A1 (en) Server delay control device, server delay control method, and program
EP3182282A1 (en) Method for operating a system in a control unit and system
CN113810167B (zh) 一种分布式系统的时序控制与同步方法
CN117978754A (zh) 数据传输方法、装置、系统、计算机设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231025

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240122

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240306

R151 Written notification of patent or utility model registration

Ref document number: 7451438

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151