(57)【要約】【課題】通信のリアルタイム性を保証しながら、処理負荷を軽減させる。【解決手段】実施形態の通知制御装置は、判定部と通知部とを備える。判定部は、フレームの優先度に応じて定められた通知制御情報を使用して、前記フレームの処理の完了を示す完了通知を通知するか否かを判定する。通知部は、前記完了通知を通知すると判定された場合、前記完了通知を通知する。【選択図】図２
2019053591.tif 000002
【特許請求の範囲】
【請求項１】
フレームの優先度に応じて定められた通知制御情報を使用して、前記フレームの処理の完了を示す完了通知を通知するか否かを判定する判定部と、
前記完了通知を通知すると判定された場合、前記完了通知を通知する通知部と、
を備える通知制御装置。
【請求項２】
前記フレームの処理は、前記フレームの送信処理又は受信処理の少なくとも一方である、
請求項１に記載の通知制御装置。
【請求項３】
前記通知制御情報は、優先度毎に定められた集約フレーム数を含み、
前記判定部は、前記処理の完了した前記フレームの数が前記集約フレーム数に一致した場合、前記完了通知を通知すると判定する、
請求項１に記載の通知制御装置。
【請求項４】
前記通知制御情報は、優先度毎に定められたタイマ値を含み、
前記判定部は、前記処理が完了してから経過した時間が前記タイマ値に一致した場合、前記完了通知を通知すると判定する、
請求項１に記載の通知制御装置。
【請求項５】
前記判定部は、前記完了通知の通知期限を示すデッドライン時刻を算出し、現在時刻が前記デッドライン時刻に一致した場合、前記処理の完了した前記フレームの数が前記集約フレーム数に一致していなくても、まだ通知されていない前記完了通知を通知すると判定する、
請求項３に記載の通知制御装置。
【請求項６】
前記判定部は、前記完了通知の通知期限を示すデッドライン時刻を算出し、前記タイマ値によるタイマの満了時刻よりも、前記デッドライン時刻の方が早い場合、前記タイマ値によるタイマの満了時刻を前記デッドライン時刻に更新する、
請求項４に記載の通知制御装置。
【請求項７】
前記フレームはプレゼンテーション時刻を含み、
前記判定部は、前記プレゼンテーション時刻から前記デッドライン時刻を算出する、
請求項５又は６に記載の通知制御装置。
【請求項８】
前記通知制御装置では、１以上の仮想マシンが動作し、
前記通知部は、１以上の仮想マシンのいずれかに前記完了通知を通知し、
前記判定部は、前記１以上の仮想マシンのそれぞれに割り当てられる実行時間の予定を示すスケジューリング情報から前記デッドライン時刻を算出する、
請求項５又は６に記載の通知制御装置。
【請求項９】
前記優先度は、前記フレームのトラヒッククラスに基づく、
請求項１に記載の通知制御装置。
【請求項１０】
フレームの優先度に応じて定められた通知制御情報を使用して、前記フレームの処理の完了を示す完了通知を通知するか否かを判定するステップと、
前記完了通知を通知すると判定された場合、前記完了通知を通知するステップと、
を含む通知制御方法。
【請求項１１】
コンピュータを、
フレームの優先度に応じて定められた通知制御情報を使用して、前記フレームの処理の完了を示す完了通知を通知するか否かを判定する判定部と、
前記完了通知を通知すると判定された場合、前記完了通知を通知する通知部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は通知制御装置、通知制御方法及びプログラムに関する。
【背景技術】
【０００２】
ＴＳＮ（Ｔｉｍｅ−Ｓｅｎｓｉｔｉｖｅ  Ｎｅｔｗｏｒｋｉｎｇ）規格等に対応したネットワークを介してリアルタイム通信を行う通信装置が従来から知られている。また、例えば通信装置のホストプロセッサで複数の仮想マシンを動作させ、各仮想マシンがネットワークを介して通信する技術が従来から知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９１７６７７０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、通信のリアルタイム性を保証しながら、処理負荷を軽減させることが難しかった。
【課題を解決するための手段】
【０００５】
実施形態の通知制御装置は、判定部と通知部とを備える。判定部は、フレームの優先度に応じて定められた通知制御情報を使用して、前記フレームの処理の完了を示す完了通知を通知するか否かを判定する。通知部は、前記完了通知を通知すると判定された場合、前記完了通知を通知する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の通信装置のハードウェア構成の例を示す図。
【図２】第１実施形態の通信装置の主要部の機能構成の例を示す図。
【図３】第１実施形態のスケジューリング情報の例を示す図。
【図４】第１実施形態のネットワークインタフェース部の機能構成の例を示す図。
【図５Ａ】第１実施形態の送信用ディスクリプタリングについて説明するための図。
【図５Ｂ】第１実施形態の受信用ディスクリプタリングについて説明するための図。
【図６】第１実施形態のフレーム送受信情報の例を示す図。
【図７Ａ】第１実施形態の送信用の通知制御情報の例を示す図。
【図７Ｂ】第１実施形態の受信用の通知制御情報の例を示す図。
【図８】第１実施形態の振り分け処理の例を説明するための図。
【図９】第１実施形態のトラヒッククラステーブルの例を示す図。
【図１０】第１実施形態の判定処理の例を示すフローチャート。
【図１１】第１実施形態のデッドライン時刻の算出方法の例１を説明するための図。
【図１２】第１実施形態のデッドライン時刻の算出方法の例２を説明するための図。
【図１３】第１実施形態のタイマ処理の例を示すフローチャート。
【図１４】第２実施形態の通信装置の主要部の機能構成の例を示す図。
【図１５】第２実施形態の仮想ネットワークインタフェース部の機能構成の例を示す図。
【図１６】第２実施形態の変形例の通信装置の主要部の機能構成の例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、通知制御装置、通知制御方法及びプログラムの実施形態を詳細に説明する。
【０００８】
（第１実施形態）
はじめに第１実施形態について説明する。
【０００９】
［ハードウェア構成の例］
図１は第１実施形態の通信装置１００のハードウェア構成の例を示す図である。第１実施形態の通信装置１００は、メモリ１、ホストプロセッサ２、ストレージ３及びネットワークインタフェースコントローラ４を備える。
【００１０】
メモリ１は、ホストプロセッサ２内のメモリコントローラを介してホストプロセッサ２に接続される。メモリ１は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等により実現される。
【００１１】
ホストプロセッサ２は、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）等のバスを用いて、ストレージ３と接続される。同様に、ホストプロセッサ２は、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）等のバスを用いて、ネットワークインタフェースコントローラ４と接続される。
【００１２】
ホストプロセッサ２は、ストレージ３に格納された実行プログラムのイメージをメモリ１に展開し、メモリ１上の命令及びデータを読みながら処理を実行する。処理は、ホストプロセッサ２に備えられた１つまたは複数のコアにより実行される。また、ホストプロセッサ２は、ハードウェア仮想化支援機能を備えており、仮想化対応命令セット及びＩＯＭＭＵ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）等により、効率的に仮想マシンを実行することができる。
【００１３】
ストレージ３は、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等により実現される。
【００１４】
ネットワークインタフェースコントローラ４は、ホストプロセッサ２をネットワーク２００に接続する。
【００１５】
ネットワーク２００は、例えばＥｔｈｅｒｎｅｔ（登録商標）である。ネットワーク２００は、ＩＥＥＥ  ８０２．１で定義されるＡＶＢ（Ａｕｄｉｏ  Ｖｉｄｅｏ  Ｂｒｉｄｇｉｎｇ）及びＴＳＮ規格等に対応したネットワークである。ネットワーク２００の種類は任意でよい。ネットワーク２００は、例えばオフィスネットワーク、データセンタ内部のネットワーク、車載ネットワーク、工場内ネットワーク、及び、携帯基地局のネットワーク等である。
【００１６】
ネットワークインタフェースコントローラ４は、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、及び、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等により実現される。また、ネットワークインタフェースコントローラ４は、ＡＳＩＣ、ＦＰＧＡ及び汎用プロセッサの組み合わせによって実現してもよい。また、ネットワークインタフェースコントローラ４は、ホストプロセッサ２とは別のチップとして実装されてもよいし、ＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ）として１つのチップとして実装されてもよい。
【００１７】
［機能構成の例］
図２は第１実施形態の通信装置１００の主要部の機能構成の例を示す図である。第１実施形態の通信装置１００の主要部の機能は、上述のホストプロセッサ２（メモリ１によって実現される機能も含む）及びネットワークインタフェースコントローラ４により実現される。
【００１８】
ホストプロセッサ２は、ハイパバイザ２１、第１仮想マシン２２ａ、第２仮想マシン２２ｂ、第３仮想マシン２２ｃ、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２３ａ〜ｃ、アプリケーション２４ａ〜ｃ、ネットワークインタフェース部２５ａ〜ｃ及びスケジューリング情報記憶部２６を備える。
【００１９】
以下、第１仮想マシン２２ａ、第２仮想マシン２２ｂ及び第３仮想マシン２２ｃを区別しない場合は、単に仮想マシン２２という。同様に、ＯＳ２３ａ〜ｃを区別しない場合は、単にＯＳ２３という。同様に、アプリケーション２４ａ〜ｃを区別しない場合は、単にアプリケーション２４という。同様に、ネットワークインタフェース部２５ａ〜ｃを区別しない場合は、単にネットワークインタフェース部２５という。
【００２０】
ハイパバイザ２１は、第１仮想マシン２２ａ、第２仮想マシン２２ｂ及び第３仮想マシン２２ｃの動作を制御する。なお、ハイパバイザ２１により制御される仮想マシン２２の数は任意でよい。
【００２１】
各仮想マシン２２では、ＯＳ２３が動作する。ＯＳ２３は、例えばリアルタイムＯＳ及び汎用ＯＳ等である。なお各仮想マシン２２で動作するＯＳの種類は、同一である必要はなく、仮想マシン２２毎に異なるＯＳを動作させてもよい。
【００２２】
各ＯＳ２３では、アプリケーション２４が動作する。図２の例では、簡単のため、各ＯＳ２３で動作するアプリケーション２４を１つ示しているが、各ＯＳ２３で動作するアプリケーション２４は複数でもよい。アプリケーション２４はタスクにより構成される。リアルタイム性が要求されるアプリケーション２４では、各タスクの実行時間（例えば実行周期及び最大実行時間）が与えられる。各ＯＳ２３は、各タスクのデッドラインを超えないように、各タスクの実行時間をスケジューリングするものとする。また、ハイパバイザ２１は、各仮想マシン２２で動作する各タスクのデッドラインを超えないように、各仮想マシン２２の実行時間をスケジューリングするものとする。
【００２３】
ネットワークインタフェース部２５は、仮想マシン２２で動作するアプリケーション２４とネットワーク２００との間で送受信されるデータの通信制御を行う。ネットワークインタフェース部２５は、例えばネットワークインタフェースコントローラ４を制御するデバイスドライバの機能等によって実現される。また、ネットワークインタフェース部２５は、例えばネットワークインタフェースコントローラ４から受け付けた通知を契機に動作する。ネットワークインタフェース部２５の詳細については、図４を参照して後述する。
【００２４】
スケジューリング情報記憶部２６は、スケジューリング情報を記憶する。スケジューリング情報は、各仮想マシン２２に割り当てられる実行時間の予定を示す。例えば、スケジューリング情報記憶部２６はホストプロセッサ２と接続されたメモリ１によって実現される。
【００２５】
図３は第１実施形態のスケジューリング情報の例を示す図である。図３の例では、例えば時間０〜２（ｍｓ）では、第１仮想マシン２２ａに実行時間が割り当てられていることを示す。ハイパバイザ２１は、このようなスケジューリング情報２６を使用して、各仮想マシン２２の実行時間をスケジューリングする。
【００２６】
図２に戻り、次に、ネットワークインタフェースコントローラ４の機能について説明する。
【００２７】
ネットワークインタフェースコントローラ４は、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）等のバスによりホストプロセッサ２と接続される。ネットワークインタフェースコントローラ４は、ホストプロセッサ２の指示に従って、ネットワーク２００を介したフレームの送受信処理を実行する。フレームは、例えばＥｔｈｅｒｎｅｔ（登録商標）フレームである。
【００２８】
ネットワークインタフェースコントローラ４は、ＳＲ−ＩＯＶ（Ｓｉｎｇｌｅ  Ｒｏｏｔ  Ｉ／Ｏ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ）に対応している。各仮想マシン２２は、ＰＣＩ  Ｐａｓｓｔｈｒｏｕｇｈの機能によって、ネットワークインタフェースコントローラ４に直接アクセスできる。
【００２９】
ネットワークインタフェースコントローラ４は、物理層処理部４１、データリンク層処理部４２、振り分け部４３、転送部４４、生成部４５、設定部４６、通知制御情報記憶部４７、現在時刻記憶部４８、判定部４９及び通知部５０を備える。判定部４９及び通知部５０は、通知制御装置として動作する。
【００３０】
物理層処理部４１は、ネットワーク２００と接続され、物理層に関わる送受信処理を実行する。
【００３１】
データリンク層処理部４２は、データリンク層に係わる送受信処理を実行する。
【００３２】
振り分け部４３は、データリンク層処理部４２からフレームを受け付けると、当該フレームを振り分ける。振り分け部４３による振り分け処理の例については、図８を参照して後述する。
【００３３】
転送部４４はフレームを転送する。
【００３４】
生成部４５は、転送部４４により転送されるフレームの情報からフレーム送受信情報を生成する。フレーム送受信情報の詳細については、図６を参照して後述する。
【００３５】
設定部４６は、上述のスケジューリング情報を共有するための設定を行う。
【００３６】
通知制御情報記憶部４７は、フレームの優先度に応じて定められた通知制御情報を記憶する。通知制御情報の詳細については、図７Ａ及びＢを参照して後述する。
【００３７】
現在時刻記憶部４８は現在時刻を記憶する。例えば、現在時刻はＩＥＥＥ  ８０２．１ＡＳやＩＥＥＥ  １５８８などで定義される時刻同期技術によって時刻同期しているものとする。
【００３８】
判定部４９は、上述の通知制御情報を使用して、フレームの処理の完了を示す完了通知を通知するか否かを判定する。フレームの処理は、例えばフレームの送信処理又は受信処理の少なくとも一方である。判定部４９の処理の詳細については、図１０のフローチャートを参照して後述する。
【００３９】
通知部５０は、上述の完了通知を通知する場合、完了通知を各仮想マシン２２のネットワークインタフェース部２５に通知する。
【００４０】
図４は第１実施形態のネットワークインタフェース部２５の機能構成の例を示す図である。第１実施形態のネットワークインタフェース部２５は、転送部２５１、フレーム記憶部２５２、バッファ制御部２５３及びディスクリプタ記憶部２５４を備える。
【００４１】
転送部２５１は、アプリケーション２４とフレーム記憶部２５２との間でデータ（フレーム）を転送する。
【００４２】
フレーム記憶部２５２は、ネットワークインタフェースコントローラ４（転送部４４）との間で送受信されるフレームを記憶する。
【００４３】
バッファ制御部２５３は、フレーム記憶部２５２の記憶領域の記憶制御を行う。
【００４４】
ディスクリプタ記憶部２５４は、バッファ制御部２５３とネットワークインタフェースコントローラ４（転送部４４及び通知部５０）との間でフレームの転送制御をするためのディスクリプタリングを記憶する。
【００４５】
図５Ａは第１実施形態の送信用ディスクリプタリングについて説明するための図である。図５Ｂは第１実施形態の受信用ディスクリプタリングについて説明するための図である。
【００４６】
図５Ａは、ディスクリプタ記憶部２５４に記憶される送信用ディスクリプタリングの構成の例を示す。図５Ｂは、ディスクリプタ記憶部２５４に記憶される受信用ディスクリプタリングの構成の例を示す。ディスクリプタリングは、リングバッファで構成されており、１つのエントリをディスクリプタと呼ぶ。
【００４７】
ディスクリプタリングは、ホストプロセッサ２と接続されたメモリ１上に記憶される。ディスクリプタリングは、ネットワークインタフェースコントローラ４からはＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によりアクセスされる。
【００４８】
ディスクリプタリングは、ＨｅａｄとＴａｉｌという２つの変数により管理される。図５Ａ及びＢに示すように、ＨｅａｄからＴａｉｌ−１のディスクリプタは、ＨＷ（ハードウェア）、すなわちネットワークインタフェースコントローラ４が所有しているディスクリプタを示す。また、ＴａｉｌからＨｅａｄ−１のディスクリプタは、ＳＷ（ソフトウェア）、すなわちホストプロセッサ２上で動作するソフトウェア（ネットワークインタフェース部２５）が所有しているディスクリプタを示す。
【００４９】
転送処理が送信処理である場合と、転送処理が受信処理である場合とでは、ディスクリプタに含まれる情報が異なる。
【００５０】
送信用ディスクリプタは、転送元アドレス、長さ及びステータスを含む。転送元アドレスは、送信対象のフレームが記憶されているフレーム記憶部２５２の記憶領域（メモリ１上の記憶領域）の先頭位置を示す先頭アドレスを示す。長さは、送信対象のフレームの長さを示す。ステータスは、送信処理の状態を示す情報が格納される。
【００５１】
受信用ディスクリプタは、転送先アドレス、長さ及びステータスを含む。転送先アドレスは、受信対象のフレームを記憶するフレーム記憶部２５２の記憶領域（メモリ１上の記憶領域）の先頭位置を示す先頭アドレスを示す。長さは、受信対象のフレームの長さを示す。ステータスは、受信処理の状態を示す情報が格納される。
【００５２】
上述のステータスには、例えばエラービット及びＤＯＮＥビット等が含まれる。エラービットは、転送エラーの有無を示す。ＤＯＮＥビットは、ネットワークインタフェースコントローラ４で処理が終わったことを示す。送信用ディスクリプタのＤＯＮＥビットが１の場合、送信処理が終わったことを示し、受信用ディスクリプタのＤＯＮＥビットが１の場合、受信処理が終わったことを示す。ネットワークインタフェースコントローラ４が、各ビット（エラービット及びＤＯＮＥビット）に１を書き込む。そして、ネットワークインタフェース部２５（バッファ制御部２５３）が、各ビットを確認した後に、各ビットに０を書き込むことにより、各ビットをクリアする。
【００５３】
送信処理と受信処理では、ネットワークインタフェース部２５の動作が異なるため、以下では、それぞれの動作について説明する。
【００５４】
＜送信処理の例＞
図４に戻り、はじめに、転送部２５１が、アプリケーション２４から送信指示を受け付ける。送信指示には、アプリケーション２４のバッファに記憶された送信対象のデータの先頭アドレス、送信対象のデータの長さ、及び、送信に使用されるトラヒッククラスが含まれる。トラヒッククラスは、例えばフレームの送信制御に使用される。トラヒッククラスは、例えば０〜７の８種類の値を示す。
【００５５】
次に、バッファ制御部２５３が、送信対象のデータを含むフレームを格納するためのバッファ領域をフレーム記憶部２５２に確保する。次に、転送部２５１が、アプリケーション２４のバッファに記憶されたデータを、フレーム記憶部２５２に確保されたバッファ領域にコピーする。
【００５６】
次に、バッファ制御部２５３は、ディスクリプタ記憶部２５４のディスクリプタリングのＴａｉｌが指すディスクリプタ（エントリ）に含まれる転送元アドレス、長さ及びステータスを設定する。
【００５７】
転送元アドレスには、フレームが格納されたバッファ領域の先頭アドレスが設定される。長さには、フレームの長さが設定される。ステータスに含まれるエラービット及びＤＯＮＥビットには、０が設定される。
【００５８】
ここでディスクリプタリングは、仮想マシン２２のネットワークインタフェース毎、さらにトラヒッククラス毎に異なる。より具体的には、どの仮想マシン２２のネットワークインタフェースのどのトラヒッククラスが、どのディスクリプタリングを使うかは、予め初期設定によって決まっている。
【００５９】
次に、バッファ制御部２５３は、各ディスクリプタリングのＴａｉｌ及びＨｅａｄの値をネットワークインタフェースコントローラ４の転送部４４に伝達する。具体的には、バッファ制御部２５３は、ネットワークインタフェースコントローラ４の転送部４４が参照可能なレジスタインタフェースを更新する。ここでは、バッファ制御部２５３は、ホストプロセッサに対して提供されるレジスタインタフェースに記憶された該当のディスクリプタリングのＴａｉｌの値を１加算した値により更新する。
【００６０】
図２に戻り、ネットワークインタフェースコントローラ４の転送部４４は、Ｔａｉｌの値が１加算されたことにより、該ディスクリプタリングのＴａｉｌ−１のディスクリプタが更新されたことを検出する。転送部４４は、更新されたディスクリプタからフレームの転送元アドレス及び長さをＤＭＡにより取得する。次に、転送部４４は、転送元アドレス及び長さにより指定されたフレームをフレーム記憶部２５２からデータリンク層処理部４２に、ＤＭＡにより転送する。
【００６１】
次に、データリンク層処理部４２が、トラヒッククラスに応じたＶＬＡＮタグのＰＣＰの付与、及び、ＴＳＮのトラヒックシェイピング等を行う。そしてデータリンク層処理部４２は、フレームのチェックサムを計算し、当該チェックサムをフレームに付加する。トラヒッククラスとＰＣＰとの対応は後述するトラヒッククラステーブル（図９）により得られる。
【００６２】
次に、物理層処理部４１が、ネットワーク２００にフレームを送信する。
【００６３】
生成部４５は、転送部４４によってフレームが転送されるときに、転送部４４から、転送処理の制御情報を受け付ける。生成部４５は、転送部４４から制御情報を受け付けると、当該制御情報に基づいてフレーム送受信情報を生成する。そして、生成部４５は、フレーム送受信情報を判定部４９に入力する。
【００６４】
図６は第１実施形態のフレーム送受信情報の例を示す図である。第１実施形態の通知制御情報は、転送識別情報、仮想マシン識別情報、ネットワークインタフェース識別情報、トラヒッククラス情報及びプレゼンテーション時刻情報を含む。
【００６５】
転送識別情報は、転送処理の種類（送信処理／受信処理）を識別する情報である。仮想マシン識別情報は、転送処理の対象となる仮想マシン２２を識別する情報である。ネットワークインタフェース識別情報は、仮想マシン２２内で転送処理に使用されるネットワークインタフェースを識別する情報である。トラヒッククラス情報は、フレームのトラヒッククラスを識別する情報である。
【００６６】
上述の転送識別情報、仮想マシン識別情報、ネットワークインタフェース識別情報及びトラヒッククラス情報により、転送処理に使用されたディスクリプタリングが特定できる。なお、仮想マシン識別情報、ネットワークインタフェース識別情報及びトラヒッククラス情報は、フレームのデータ転送に使用されたディスクリプタリングを特定できる情報であれば、他の形式で保持される情報でもよい。
【００６７】
プレゼンテーション時刻情報は、ＡＶＴＰ（Ａｕｄｉｏ  Ｖｉｄｅｏ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）のフレームに含まれるプレゼンテーション時刻を示す情報である。ＡＶＴＰは、ＩＥＥＥ  １７２２で定義される。フレームにプレゼンテーション時刻が含まれていない場合、プレゼンテーション時刻情報には、有効なプレゼンテーション時刻がないことを示す情報が保持される。
【００６８】
図２に戻り、判定部４９は、生成部４５からフレーム送受信情報を受け付けると、通知制御情報記憶部４７に記憶されている通知制御情報と、現在時刻記憶部４８から取得された現在時刻と、設定部４６から取得されたスケジューリング情報とから、上述の完了通知を通知するか否かを判定する。
【００６９】
図７Ａは第１実施形態の送信用の通知制御情報の例を示す図である。図７Ｂは第１実施形態の受信用の通知制御情報の例を示す図である。受信用の通知制御情報の説明は、送信用の通知制御情報の説明と同様なので、以下、送信用の通知制御情報を例にして説明する。
【００７０】
第１実施形態の送信用の通知制御情報は、送信元仮想マシン、ネットワークインタフェース、トラヒッククラス、通知抑制値及び現在値を含む。
【００７１】
送信元仮想マシンは、フレームを送信する仮想マシン２２を示す。ネットワークインタフェースは、フレームを送信するネットワークインタフェースを示す。トラヒッククラスは、フレームのトラヒッククラスを示す。送信元仮想マシン、ネットワークインタフェース及びトラヒッククラスにより、送信処理に使用されるディスクリプタリングを特定することができる。
【００７２】
通知抑制値は、集約フレーム数及びタイマ値（ｎｓ）を含む。
【００７３】
集約フレーム数は、通知を集約するフレーム数を示す。例えば、集約フレーム数が４である場合、４つのフレームの送信が完了するまで、当該４つのフレームの送信完了通知の通知が抑制される。なお、集約フレーム数に１が設定されている場合、完了通知の通知が抑制されずに、即座に通知される。また、０は特別な値であり、集約フレーム数に０が設定されている場合、フレーム数による制御が行われない。タイマ値による制御のみが行われる場合、集約フレーム数に０が設定される。
【００７４】
タイマ値は、通知を遅延させるタイマ値を示す。例えば、タイマ値が、７００００００ｎｓである場合、フレームの送信が完了してから７００００００ｎｓ経過するまで、送信完了通知の通知が抑制される。０は特別な値であり、タイマ値に０が設定されている場合、タイマ値による制御が行われない。集約フレーム数による制御のみが行われる場合、タイマ値に０が設定される。
【００７５】
なお、集約フレーム数及びタイマ値の両方が設定されている場合の動作は任意でよい。第１実施形態では、集約フレーム数及びタイマ値の両方が設定されている場合、集約フレーム数の設定が優先される。具体的には、通知をタイマ値によって遅延させている場合でも、送信を完了したフレームの数が集約フレーム数に達した場合には、完了通知が通知される。
【００７６】
現在値は、通知抑制状態、残りフレーム数及び残りタイマ値（ｎｓ）を含む。現在値は、現在の状態を記憶するために使用される。通知抑制状態は、通知が抑制されているか否かを示す。図７Ａの例では、通知抑制状態が０の場合、通知が抑制されていないことを示し、通知抑制情報が１の場合、通知が抑制されていることを示す。残りフレーム数は、通知するまでに必要なフレーム数を示す。残りフレーム数が１の状態でフレームを送信した場合、完了通知が送信される。残りタイマ値は、完了通知を通知するまでの残り時間を示す。
【００７７】
現在値は、初期設定の際には、全て０で初期化される。
【００７８】
一方、通知抑制値の設定方法は任意でよい。通知抑制値は、例えばトラヒックを利用するアプリケーション２４により予め設定されてもよい。また例えば、通知抑制値のうち、一部の値が動的に調整されてもよい。なお、ベストエフォートのような優先度の低いトラヒックは通知（割り込み）を集約し、リアルタイム性の高い優先度の高いトラヒックは通知（割り込み）をあまり集約しないように設定することが好ましい。例えば、ＩＥＥＥ  ８０２．１Ｑｂｕで定義されるフレームプリエンプションテーブルでＥｘｐｒｅｓｓに設定されている割り込みは集約しないように設定してもよい。
【００７９】
また、図７Ａの例では、全てのディスクリプタリングに対して設定があるように記載している。しかしながら、通知の抑制制御が実行されるディスクリプタリングの分だけ通知制御情報のエントリがあればよい。
【００８０】
なお、上述の通知制御情報を用いた具体的な通知の抑制制御の説明は、受信処理と同様なので、受信処理の説明で後述する。
【００８１】
図２に戻り、判定部４９により完了通知を通知すると判定されると、通知部５０が、当該完了通知を、通知対象のネットワークインタフェース部２５に通知する。通知部５０は、例えば、データ転送が完了したディスクリプタのステータスのＤＯＮＥビットに１を書いて処理完了状態にステータスを更新し、ＭＳＩ−Ｘを用いた割り込みをアサートすることにより、完了通知を通知する。なお、ネットワークインタフェース部２５が、割り込みを契機に動作するか、ポーリング動作をするかは、各仮想マシン２２によって異なる。割り込みを使用しない場合には、割り込みマスク等の機能を用いて割り込みを発生させないようにすればよい。
【００８２】
ネットワークインタフェース部２５が割り込みを契機にする場合、割り込み番号から対応するディスクリプタリングが求められる。この場合、ネットワークインタフェース部２５は、データ転送を指示したディスクリプタのステータスに含まれるＤＯＮＥビット及びエラービットを確認する。ＤＯＮＥビットが１の場合、処理が完了していることを示す。エラービットが１の場合、処理でエラーが発生したことを示す。
【００８３】
ネットワークインタフェース部２５がポーリング動作をする場合、ネットワークインタフェース部２５は、データ転送を指示したディスクリプタのステータス（状態情報）が更新されているか否かを定期的に確認する。ステータスが更新されたディスクリプタは、既に送信が完了している。そのため、バッファ制御部２５３が、ディスクリプタに含まれる情報から特定されるフレームを格納していたバッファ領域を解放する。これにより、このディスクリプタを、フレームの送信制御に再度利用することが可能となる。
【００８４】
＜受信処理の例＞
図４に戻り、次に受信処理について説明する。フレームを受信する際には、ネットワークインタフェース部２５のバッファ制御部２５３が、フレーム記憶部２５２の空き領域から、フレームの最大長を格納できるバッファ領域を予め確保する。そして、バッファ制御部２５３は、ディスクリプタの転送先アドレスに、予め確保されたバッファ領域の先頭アドレスを設定する。ディスクリプタの転送先アドレスを設定する際に、バッファ制御部２５３は、当該ディスクリプタに含まれる長さを０にし、当該ディスクリプタのステータスに含まれるエラービット及びＤＯＮＥビットも０に設定する。バッファ制御部２５３は、受信に用いられる全てのディスクリプタリングの全てのディスクリプタに対して、上述の処理を行い、Ｔａｉｌの値を更新する。そして、バッファ制御部２５３は、受信に用いられる全てのディスクリプタリングの全てのディスクリプタを、全てＨＷ（すなわちネットワークインタフェースコントローラ４）が所有した状態にしておく。
【００８５】
ネットワークインタフェースコントローラ４が、ネットワーク２００からフレームを受信すると、物理層処理部４１が、Ｅｔｈｅｒｎｅｔ（登録商標）の物理層の受信処理を実行する。次に、データリンク層処理部４２が、Ｅｔｈｅｒｎｅｔ（登録商標）のデータリンク層の受信処理を実行する。データリンク層の処理では、ＭＡＣ副層の処理とＬＬＣ副層の処理とが実行される。また、データリンク層処理部４２は、ＩＥＥＥ  ８０２．１  ＴＳＮ規格によって定められる処理を実行し、受信されたフレームに異常がなければ、当該フレームを振り分け部４３に入力する。振り分け部４３は、データリンク層処理部４２からフレームを受け付けると、当該フレームの振り分け処理を実行する。
【００８６】
図８は第１実施形態の振り分け処理の例を説明するための図である。はじめに、振り分け部４３は、受信されたフレームに含まれる送信先ＭＡＣアドレスにより、当該フレームを振り分ける。
【００８７】
図８の例では、送信先ＭＡＣアドレスがＡＡ−ＡＡ−ＡＡ−ＡＡ−ＡＡ−ＡＡの場合、第１仮想マシン２２ａのネットワークインタフェース部２５ａに振り分けられる。送信先ＭＡＣアドレスがＢＢ−ＢＢ−ＢＢ−ＢＢ−ＢＢ−ＢＢの場合、第２仮想マシン２２ｂのネットワークインタフェース部２５ｂに振り分けられる。送信先ＭＡＣアドレスがＣＣ−ＣＣ−ＣＣ−ＣＣ−ＣＣ−ＣＣの場合、第３仮想マシン２２ｃのネットワークインタフェース部２５ｃに振り分けられる。
【００８８】
なお、１つの仮想マシン２２で複数のネットワークインタフェースが使用される場合でも、ネットワークインタフェース毎にＭＡＣアドレスが異なる。そのため、振り分け部４３は、送信先ＭＡＣアドレスを使用して、フレームを振り分けることができる。
【００８９】
次に、振り分け部４３は、トラヒッククラスにより、フレームを更に振り分ける。フレームのＶＬＡＮタグには、優先度を示すＰＣＰ（Ｐｒｉｏｒｉｔｙ  Ｃｏｄｅ  Ｐｏｉｎｔ）フィールドがある。振り分け部４３は、例えばＰＣＰとトラヒッククラスとの対応を示すトラヒッククラステーブルを使用して、フレームを振り分ける。
【００９０】
図９は第１実施形態のトラヒッククラステーブルの例を示す図である。ＴＳＮ規格では、図９に示すようなトラヒッククラステーブルが定義されている。振り分け部４３は、トラヒッククラステーブルを参照することにより、優先度（ＰＣＰ）とトラヒッククラスとを対応させることができる。振り分け部４３は、トラヒッククラステーブルを使用して、フレームのＰＣＰ値をトラヒッククラスに変換し、当該トラヒッククラスにより、当該フレームを更に振り分ける。
【００９１】
図２に戻り、転送部４４は、トラヒッククラスに対応したディスクリプタリングを使用して、フレームを仮想マシン２２に転送する。具体的には、転送部４４は、まずＤＭＡによって、ディスクリプタ記憶部２５４に記憶された該当のディスクリプタリングのＨｅａｄの位置のディスクリプタから、転送先アドレスを取得する。転送部４４は、この転送先アドレスにフレームを転送し、転送が終わると、当該フレームの長さを、ディスクリプタに含まれる長さに書き込む。
【００９２】
また、生成部４５は、転送部４４によってフレームの転送が完了すると、上述のフレーム送受信情報を生成し、当該フレーム送受信情報を判定部４９に入力する。このフレーム送受信情報は、上述の送信処理の説明と同様である。ただし、フレーム送受信情報に含まれる転送識別情報には、受信処理を示す情報が含まれる。
【００９３】
＜判定処理の例＞
図１０は第１実施形態の判定処理の例を示すフローチャートである。はじめに、判定部４９は、生成部４５からフレーム送受信情報を受け付けると、当該フレーム送受信情報に含まれる仮想マシン識別情報、ネットワークインタフェース識別情報及びトラヒッククラス情報から、転送処理に使用されたディスクリプタリングを特定する。そして、判定部４９は、転送処理に使用されたディスクリプタリングの通知抑制状態が１であるか否かを判定する（ステップＳ１）。
【００９４】
通知抑制状態が１である場合（ステップＳ１，Ｙｅｓ）、判定部４９は、残りフレーム数が１であるか否かを判定する（ステップＳ１１）。
【００９５】
残りフレーム数が１である場合（ステップＳ１１，Ｙｅｓ）、判定部４９は、通知抑制状態を０に設定し（ステップＳ１４）、完了通知の通知を通知部５０に指示する（ステップＳ１５）。
【００９６】
残りフレーム数が１でない場合（ステップＳ１１，Ｎｏ）、判定部４９は、集約フレーム数が０であるか否かを判定する（ステップＳ１２）。集約フレーム数が０である場合（ステップＳ１２，Ｙｅｓ）、ステップＳ７の処理に進む。集約フレーム数が０でない場合（ステップＳ１２，Ｎｏ）、判定部４９は、残りフレーム数を１減らし（ステップＳ１３）、ステップＳ７の処理に進む。
【００９７】
一方、通知抑制状態が１でない場合（ステップＳ１，Ｎｏ）、判定部４９は、集約フレーム数が１であるか否かを判定する（ステップＳ２）。
【００９８】
集約フレーム数が１である場合（ステップＳ２，Ｙｅｓ）、判定部４９は、完了通知の通知を通知部５０に指示する（ステップＳ１５）。
【００９９】
集約フレーム数が１でない場合（ステップＳ２，Ｎｏ）、判定部４９は、集約フレーム数が０であるか否かを判定する（ステップＳ３）。集約フレーム数が０である場合（ステップＳ３，Ｙｅｓ）、ステップＳ５の処理に進む。集約フレーム数が０でない場合（ステップＳ３，Ｎｏ）、判定部４９は、集約フレーム数から１を引いた数により、残りフレーム数を更新する（ステップＳ４）。
【０１００】
次に、判定部４９は、タイマ値が０であるか否かを判定する（ステップＳ５）。タイマ値が０である場合（ステップＳ５，Ｙｅｓ）、ステップＳ７の処理に進む。タイマ値が０でない場合（ステップＳ５，Ｎｏ）、判定部４９は、タイマ値を残りタイマ値に書き込むことによりタイマ処理を開始させ（ステップＳ６）、ステップＳ７の処理に進む。
【０１０１】
次に、判定部４９は、タイマによる通知予定時刻よりもデッドライン時刻が早いか否かを判定する（ステップＳ７）。デッドライン時刻は、完了通知の通知期限を示す。具体的には、判定部４９は、プレゼンテーション時刻情報及びスケジューリング情報等が利用可能な場合、プレゼンテーション時刻情報及びスケジューリング情報等から算出されるデッドライン時刻までの残り時間が閾値以下であるか否かを判定する。例えば、ＡＶＴＰのフレームにはプレゼンテーション時刻情報が含まれているので、フレーム送受信情報にはプレゼンテーション時刻が含まれている。この場合、判定部４９は、現在時刻とプレゼンテーション時刻との比較によってデッドライン時刻を算出する。
【０１０２】
ここで、デッドライン時刻の算出方法の例について、図１１及び１２を参照して説明する。
【０１０３】
図１１は第１実施形態のデッドライン時刻の算出方法の例１を説明するための図である。タイマ値を使用したタイマ処理によって完了通知が通知される場合、タイマによる通知予定時刻に通知が行われる。判定部４９は、プレゼンテーション時刻から閾値を引くことによって、デッドライン時刻を算出する。閾値は、例えば処理所要時間にαを足した値である。処理所要時間は、ネットワークインタフェースコントローラ４が通知を送信してから、送信先の仮想マシン２２のアプリケーション２４にデータ（フレーム）が届くまでに要する時間である。
【０１０４】
処理所要時間は、例えば予め実験をすることにより決定されてもよい。αは、処理時間の揺らぎを吸収するために用いられる。このαも例えば予め実験をすることにより決定される。
【０１０５】
判定部４９は、プレゼンテーション時刻情報がない場合（フレームがＡＶＴＰではない場合等）、タイマによる通知予定時刻をデッドライン時刻に設定する。判定部４９は、現在時刻からデッドライン時刻までの時間は、プレゼンテーション時刻情報によるタイマ値として算出する。
【０１０６】
図１２は第１実施形態のデッドライン時刻の算出方法の例２を説明するための図である。判定部４９は、スケジューリング情報が参照可能な場合、スケジューリング情報からデッドライン時刻を算出する。具体的には、はじめに、判定部４９は、スケジューリング情報を参照して、タイマによる通知予定時刻以降で最初にフレームを送受信している仮想マシン２２（図１２の例では第１仮想マシン２２ａ）が実行状態になる時刻Ｂを算出する。次に、判定部４９は、時刻Ｂから、処理所要時間と上述のαとを加算した閾値を減算した時刻Ａを算出する。次に、判定部４９は、時刻Ａとタイマによる通知予定時刻との差を算出する。次に、判定部４９は、時刻Ａとタイマによる通知予定時刻との差が、βより大きい場合、スケジューリング情報を用いたデッドライン時刻を、タイマによる通知予定時刻までで最後にフレームを送受信する仮想マシン２２が実行中になる時刻Ｃから閾値を引いた値に設定する。
【０１０７】
一方、判定部４９は、スケジューリング情報が利用不可能な場合、タイマによる通知予定時刻をデッドライン時刻に設定する。
【０１０８】
現在時刻からデッドライン時刻までの時間は、スケジューリング情報によるタイマ値として算出される。
【０１０９】
なお、上述のα及びβは、ＴＳＮのＳＲＰ（Ｓｔｒｅａｍ  Ｒｅｓｅｒｖａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）の遅延パラメータを使って設定されてもよい。また、上述のα及びβは、予め算出されたアプリケーション２４の通信要件から算出されてもよい。  
【０１１０】
図１０に戻り、タイマによる通知予定時刻よりも、上述のプレゼンテーション時刻情報及びスケジューリング情報等によって算出されたデッドライン時刻が早くない場合（ステップＳ７，Ｎｏ）、判定部４９は、通知抑制状態を１に設定し（ステップＳ１０）、処理を終了する。
【０１１１】
タイマによる通知予定時刻よりも、上述のプレゼンテーション時刻情報及びスケジューリング情報等によって算出されたデッドライン時刻が早い場合（ステップＳ７，Ｙｅｓ）、判定部４９は、現在時刻がデッドライン時刻を過ぎているか否かを判定する（ステップＳ８）。現在時刻がデッドライン時刻を過ぎている場合（ステップＳ８，Ｙｅｓ）、判定部４９は、完了通知の通知を通知部５０に即座に指示する（ステップＳ１５）。
【０１１２】
現在時刻がデッドライン時刻を過ぎていない場合（ステップＳ８，Ｎｏ）、判定部４９は、残りタイマ値を更新し（ステップＳ９）、通知抑制状態を１に設定し（ステップＳ１０）、処理を終了する。具体的には、判定部４９は、プレゼンテーション時刻情報によるタイマ値、及び、スケジューリング情報によるタイマ値のうち、より小さい方の値で残りタイマ値を更新する。すなわち、判定部４９は、タイマ値によるタイマの満了時刻を、プレゼンテーション時刻情報から算出されたデッドライン時刻、及び、スケジューリング情報から算出されたデッドライン時刻のうち、より早いデッドライン時刻に更新する。
【０１１３】
図１３は第１実施形態のタイマ処理の例を示すフローチャートである。判定部４９によるタイマ処理は、例えば１０ｕｓ等の一定間隔で行われる。はじめに、判定部４９は、通知制御情報の各エントリにアクセスし、通知抑制状態が１であるかを判定する（ステップＳ２１）。通知抑制状態が１でない場合（ステップＳ２１，Ｎｏ）、処理は終了する（次のエントリの処理に移る）。
【０１１４】
通知抑制状態が１である場合（ステップＳ２１，Ｙｅｓ）、判定部４９は、残りタイマ値がタイマ間隔以下か否かを判定する（ステップＳ２２）。残りタイマ値がタイマ間隔以下の場合（ステップＳ２２，Ｙｅｓ）、判定部４９は、通知抑制状態を０に設定し（ステップＳ２４）、通知部５０に通知を指示し（ステップＳ２５）、このエントリの処理を終える（次のエントリの処理に移る）。残りタイマ値がタイマ間隔より大きい場合（ステップＳ２２，Ｎｏ）、判定部４９は、タイマ値をタイマ間隔分減算し（ステップＳ２３）、このエントリの処理を終える（次のエントリの処理に移る）。
【０１１５】
通知部５０は、判定部４９により通知すると判定された場合、フレーム受信処理が完了したことを示す完了通知を、通知対象の仮想マシン２２のネットワークインタフェース部２５に通知する。例えば、データ転送が完了したディスクリプタのステータスのＤＯＮＥビットに１を書いて処理完了状態にステータスを更新し、ＭＳＩ−Ｘを用いた割り込みをアサートすることにより、完了通知を通知する。バッファ制御部２５３は、送信処理の場合と同様に、割り込み又はポーリングによりディスクリプタのステータスを確認する。バッファ制御部２５３は、ステータスに含まれるＤＯＮＥビットが１である場合、ネットワークインタフェース部２５の転送部２５１に転送指示をする。転送部２５１は、バッファ制御部２５３から転送指示を受け付けると、フレーム記憶部２５２からアプリケーション２４のバッファにデータをコピーする。バッファ制御部２５３は、コピーが完了したディスクリプタのステータスに含まれるエラービット及びＤＯＮＥビットを０でクリアし、Ｔａｉｌの値を更新する。これにより、コピーが完了したディスクリプタが、再びＨＷすなわちネットワークインタフェースコントローラ４の所有となり、フレームの受信に使用される。
【０１１６】
以上説明したように、第１実施形態の通信装置１００では、判定部４９が、フレームの優先度に応じて定められた通知制御情報を使用して、フレームの処理の完了を示す完了通知を通知するか否かを判定する。そして、通知部５０が、完了通知を通知すると判定された場合、完了通知を通知する。具体的には、第１実施形態の通信装置１００は、上述の構成により、例えばトラヒッククラス毎に完了通知の送信を抑制する。
【０１１７】
第１実施形態の通信装置１００によれば、通信のリアルタイム性を保証しながら、ホストプロセッサ２にかかる処理負荷を軽減させることが可能になる。
【０１１８】
なお上述の第１実施形態では、上述の判定部４９及び通知部５０を備える通信装置１００の場合を例にして説明した。しかしながら、上述の判定部４９及び通知部５０を備える装置の形態は任意でよい。例えば、上述の判定部４９及び通知部５０を備える通知制御装置によっても、上述の第１実施形態と同様の効果が得られる。また、当該通知制御装置を備える装置によっても、上述の第１実施形態と同様の効果が得られる。
【０１１９】
（第２実施形態）
次に第２実施形態について説明する。第２実施形態の説明では、第１実施形態と同様の説明については省略し、第１実施形態と異なる箇所について説明する。
【０１２０】
［機能構成の例］
図１４は第２実施形態の通信装置１００の主要部の機能構成の例を示す図である。第２実施形態のネットワークインタフェースコントローラ４は、第１実施形態のネットワークインタフェースコントローラ４と同様である。第２実施形態は、ホストプロセッサ２−２で動作する第２仮想マシン２２ｂ−２及び第３仮想マシン２２ｃ−２が、第１仮想マシン２２ａ−２のブリッジ処理部２７、すなわちソフトウェアスイッチを介して通信する点が、第１実施形態とは異なる。
【０１２１】
ホストプロセッサ２−２は、ハイパバイザ２１、第１仮想マシン２２ａ−２、第２仮想マシン２２ｂ−２、第３仮想マシン２２ｃ−２、ＯＳ２３ａ−２〜２３ｃ−２、アプリケーション２４ｂ〜ｃ、ネットワークインタフェース部２５ａ、スケジューリング情報記憶部２６、ブリッジ処理部（アプリケーション）２７、仮想ネットワークインタフェース部２８ａ−１、仮想ネットワークインタフェース部２８ａ−２、仮想ネットワークインタフェース部２８ｂ及び仮想ネットワークインタフェース部２８ｃを備える。
【０１２２】
以下、ＯＳ２３ａ−２〜２３ｃ−２を区別しない場合、単にＯＳ２３−２という。同様に、仮想ネットワークインタフェース部２８ａ−１、仮想ネットワークインタフェース部２８ａ−２、仮想ネットワークインタフェース部２８ｂ及び仮想ネットワークインタフェース部２８ｃを区別しない場合、単に仮想ネットワークインタフェース部２８という。
【０１２３】
ブリッジ処理部２７は、第１仮想マシン２２ａ−２〜第３仮想マシン２２ｃ−２間のフレームを転送する。また、ブリッジ処理部２７は、第１仮想マシン２３ａ−２とネットワークインタフェースコントローラ４との間のフレームを転送する。
【０１２４】
仮想ネットワークインタフェース部２８ａ−１及び仮想ネットワークインタフェース部２８ｂは、第１仮想マシン２２ａ−２及び第２仮想マシン２２ｂ−２間のフレームを転送する。
【０１２５】
仮想ネットワークインタフェース部２８ａ−２及び仮想ネットワークインタフェース部２８ｃは、第１仮想マシン２２ａ−２及び第３仮想マシン２２ｃ−２間のフレームを転送する。
【０１２６】
第２実施形態のネットワークインタフェースコントローラ４は、物理層処理部４１、データリンク層処理部４２、振り分け部４３、転送部４４、生成部４５、設定部４６、通知制御情報記憶部４７、現在時刻記憶部４８、判定部４９及び通知部５０を備える。第２実施形態のネットワークインタフェースコントローラ４は、第１実施形態のネットワークインタフェースコントローラ４と同様であるので、説明を省略する。
【０１２７】
図１５は第２実施形態の仮想ネットワークインタフェース部２８の機能構成の例を示す図である。第２実施形態の仮想ネットワークインタフェース部２８は、フレーム記憶部６１、転送部６２、バッファ制御部６３、生成部６４、判定部６５、設定部６６、通知制御情報記憶部６７及び通知部６８を備える。
【０１２８】
フレーム記憶部６１は、上述のフレーム記憶部２５２と同様のため、説明を省略する。
【０１２９】
転送部６２は、上述の転送部２５１と同様のため、説明を省略する。
【０１３０】
バッファ制御部６３は、上述のバッファ制御部２５３と同様のため、説明を省略する。上述したように割り込みを契機に動作してもよいし、ポーリングで動作してもよい。
【０１３１】
生成部６４は、上述の生成部４５と同様のため、説明を省略する。
【０１３２】
判定部６５は、上述の判定部４９と同様のため、説明を省略する。
【０１３３】
設定部６６は、上述の設定部４６と同様のため、説明を省略する。
【０１３４】
通知制御情報記憶部６７は、上述の通知制御情報記憶部４７と同様のため、説明を省略する。
【０１３５】
通知部６８は、上述の通知部５０と同様のため、説明を省略する。
【０１３６】
第２実施形態の仮想ネットワークインタフェース部２８の判定部６５による判定処理は、第１実施形態のネットワークインタフェースコントローラ４の判定部４９による判定処理と同様である。なお、タイマ処理に使用されるタイマには、ＯＳ２３−２により提供されるタイマ等を使用することができる。
【０１３７】
第２実施形態の通信装置１００によれば、第１実施形態の通信装置１００と同様の効果を得ることができる。すなわち、通信のリアルタイム性を保証しながら、ホストプロセッサ２−２にかかる処理負荷を軽減させることができる。
【０１３８】
（第２実施形態の変形例）
次に第２実施形態の変形例について説明する。第２実施形態の変形例の説明では、第２実施形態と同様の説明については省略し、第２実施形態と異なる箇所について説明する。
【０１３９】
図１６は第２実施形態の変形例の通信装置１００の主要部の機能構成の例を示す図である。第２実施形態の変形例では、ネットワークインタフェースコントローラ４−２の構成が、第２実施形態のネットワークインタフェースコントローラ４の構成とは異なる。
【０１４０】
ホストプロセッサ２−２は、ハイパバイザ２１、第１仮想マシン２２ａ−２、第２仮想マシン２２ｂ−２、第３仮想マシン２２ｃ−２、ＯＳ２３ａ−２〜２３ｃ−２、アプリケーション２４ｂ〜ｃ、ネットワークインタフェース部２５ａ、スケジューリング情報記憶部２６、ブリッジ処理部（アプリケーション）２７、仮想ネットワークインタフェース部２８ａ−１、仮想ネットワークインタフェース部２８ａ−２、仮想ネットワークインタフェース部２８ｂ及び仮想ネットワークインタフェース部２８ｃを備える。
【０１４１】
第２実施形態の変形例のホストプロセッサ２−２は、第２実施形態のホストプロセッサ２−２と同様のため、説明を省略する。
【０１４２】
第２実施形態の変形例のネットワークインタフェースコントローラ４−２は、物理層処理部４１、データリンク層処理部４２、転送部４４及び通知部５０を備える。
【０１４３】
第２実施形態の変形例の物理層処理部４１、データリンク層処理部４２、転送部４４及び通知部５０は、第２実施形態の物理層処理部４１、データリンク層処理部４２、転送部４４及び通知部５０と同様のため、説明を省略する。
【０１４４】
第２実施形態の変形例では、第２実施形態のネットワークインタフェースコントローラ４で実行されていた上述の判定処理が実行されない。すなわち、第２実施形態の変形例では、上述の判定処理が、ホストプロセッサ２−２の各仮想ネットワークインタフェース部２８のみで実行される。
【０１４５】
第２実施形態の変形例の通信装置１００によれば、第１実施形態の通信装置１００と同様の効果を得ることができる。すなわち、通信のリアルタイム性を保証しながら、ホストプロセッサ２−２にかかる処理負荷を軽減させることができる。
【０１４６】
なお、上述の第１及び第２実施形態の通信装置１００は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、上述の第１及び第２実施形態の通信装置１００の機能構成のうち、プログラムにより実現させることができる機能を、コンピュータ装置に搭載されたプロセッサに当該プログラムを実行させることにより実現させることができる。このとき、通信装置１００は、例えばプログラムをコンピュータ装置にあらかじめインストールすることで実現されてもよい。また例えば、通信装置１００は、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたプログラムをコンピュータ装置に適宜インストールすることで実現されてもよい。また例えば、通信装置１００は、ネットワークを介して配布されたプログラムをコンピュータ装置に適宜インストールすることで実現されてもよい。
【０１４７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１４８】
例えば上述の実施形態の説明では、全てのトラヒッククラスにおいて完了通知を抑制する例を説明したが、ベストエフォートのトラヒックのみにおいて完了通知を抑制し、リアルタイムのトラヒックには完了通知を抑制しないように設定してもよい。
【０１４９】
また例えば上述の実施形態の説明では、トラヒッククラス毎に異なるディスクリプタリングを使用したが、トラヒッククラステーブルを用いずにＰＣＰ値によってディスクリプタリングを分けて、ＰＣＰ値毎に完了通知を抑制するようにしてもよい。
【０１５０】
例えば上述の実施形態の説明では、トラヒッククラス毎に設けられた異なるディスクリプタリングを使用して、上述の完了通知が抑制される場合について説明したが、ＡＶＴＰのストリーム毎に設けられたディスクリプタリングを使用して、完了通知が抑制されてもよい。また例えば、リソースが不足する場合には、特定のストリームに割り当てられた特定のディスクリプタリングを使用して、完了通知が抑制されてもよい。
【０１５１】
また例えば、ＩＥＥＥ  ８０２．１ＡＳで定義されるｇＰＴＰ及びＩＥＥＥ  １５８８で定義される時刻同期のフレームを受信した場合、当該フレームの受信処理が完了したことを示す完了通知が即座に通知されるようにしてもよい。具体的には、Ｅｔｈｅｒｎｅｔ（登録商標）のタイプ値（Ｅｔｈｅｒｔｙｐｅ）が０ｘ８８Ｆ７、ＵＤＰのポート番号が３１９、及び、ＵＤＰのポート番号が３２０のデータグラムを受信した場合、当該データグラムが即座に通知されるようにしてもよい。
【０１５２】
また例えば、上述の実施形態では、ディスクリプタ記憶部２５４がリングバッファである場合について説明したが、ディスクリプタ記憶部２５４はキュー（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）によって実現されていてもよい。
【符号の説明】
【０１５３】
１  メモリ
２  ホストプロセッサ
３  ストレージ
４  ネットワークインタフェースコントローラ
２１  ハイパバイザ
２２  仮想マシン
２３  ＯＳ
２４  アプリケーション
２５  ネットワークインタフェース部
２６  スケジューリング情報記憶部
２７  ブリッジ処理部
２８  仮想ネットワークインタフェース部
４１  物理層処理部
４２  データリンク層処理部
４３  振り分け部
４４  転送部
４５  生成部
４６  設定部
４７  通知制御情報記憶部
４８  現在時刻記憶部
４９  判定部
５０  通知部
６１  フレーム記憶部
６２  転送部
６３  バッファ制御部
６４  生成部
６５  判定部
６６  設定部
６７  通知制御情報記憶部
６８  通知部
１００  通信装置
２００  ネットワーク
２５１  転送部
２５２  フレーム記憶部
２５３  バッファ制御部
２５４  ディスクリプタ記憶部
【図１】
2019053591.tif 000003
【図２】
2019053591.tif 000004
【図３】
2019053591.tif 000005
【図４】
2019053591.tif 000006
【図５Ａ】
2019053591.tif 000007
【図５Ｂ】
2019053591.tif 000008
【図６】
2019053591.tif 000009
【図７Ａ】
2019053591.tif 000010
【図７Ｂ】
2019053591.tif 000011
【図８】
2019053591.tif 000012
【図９】
2019053591.tif 000013
【図１０】
2019053591.tif 000014
【図１１】
2019053591.tif 000015
【図１２】
2019053591.tif 000016
【図１３】
2019053591.tif 000017
【図１４】
2019053591.tif 000018
【図１５】
2019053591.tif 000019
【図１６】
2019053591.tif 000020