JP2020048045A - スイッチ装置、スイッチング方法及びプログラム - Google Patents

スイッチ装置、スイッチング方法及びプログラム Download PDF

Info

Publication number
JP2020048045A
JP2020048045A JP2018174249A JP2018174249A JP2020048045A JP 2020048045 A JP2020048045 A JP 2020048045A JP 2018174249 A JP2018174249 A JP 2018174249A JP 2018174249 A JP2018174249 A JP 2018174249A JP 2020048045 A JP2020048045 A JP 2020048045A
Authority
JP
Japan
Prior art keywords
task
data
unit
transfer
schedule information
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
JP2018174249A
Other languages
English (en)
Other versions
JP6914900B2 (ja
Inventor
優太 小林
Yuta Kobayashi
優太 小林
ヤースィン オゲ
Oge Yasin
ヤースィン オゲ
隆博 山浦
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 JP2018174249A priority Critical patent/JP6914900B2/ja
Priority to US16/282,055 priority patent/US10884786B2/en
Publication of JP2020048045A publication Critical patent/JP2020048045A/ja
Application granted granted Critical
Publication of JP6914900B2 publication Critical patent/JP6914900B2/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】データが送信されるタイミングの最悪遅延を保証しながら、データを効率的に転送制御する。【解決手段】スイッチ装置は、その入力処理部に選択部と判定部とを備える。選択部は、第1データの送信タイミングが、第1データの優先度毎に定められた送信スケジュール情報と同期されたタスクスケジュール情報に基づいて、第1データの転送処理を実行する第1タスクを選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算する。判定部は、終了時刻と現在時刻とから、第1データの転送処理が実行可能か否かを判定する。選択部により選択された第1タスクは、転送処理が実行可能な場合、送信スケジュール情報に基づいて、第1データの転送処理を実行する。【選択図】図9

Description

本発明の実施形態はスイッチ装置、スイッチング方法及びプログラムに関する。
工場内の各産業用機器間を接続する産業用ネットワーク、及び、車内の制御コントローラを接続する車載ネットワークなどの分野では、高いリアルタイム性が求められる。近年、産業用ネットワーク及び車載ネットワークなどでは、イーサネット(登録商標)などの通信規格の利用が進んでおり、様々なリアルタイムイーサネット規格が提案されている。
特開2001―216170号公報 特開2006―268092号公報 特開2007―323256号公報 特開平6―19823号公報
しかしながら、従来の技術では、データが送信されるタイミングの最悪遅延を保証しながら、データを効率的に転送制御することが困難だった。
実施形態のスイッチ装置は、選択部と判定部とを備える。選択部は、第1データの送信タイミングが、前記第1データの優先度毎に定められた送信スケジュール情報と同期されたタスクスケジュール情報に基づいて、前記第1データの転送処理を実行する第1タスクを選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算する。判定部は、前記終了時刻と現在時刻とから、前記第1データの転送処理が実行可能か否かを判定する。前記選択部により選択された第1タスクは、転送処理が実行可能な場合、前記送信スケジュール情報に基づいて、前記第1データの転送処理を実行する。
仮想マシン間でデータを転送するスイッチ装置の例を示す概略図。 IEEE802.1Qbvに対応したスイッチ装置、及び、スイッチ装置に接続される通信端末の例を示す概略図。 ネットワークのI/O処理を専用仮想マシンで実現した場合のIEEE802.1Qbvに対応したスイッチ装置の例を示す概略図。 第1実施形態のスイッチ装置の入出力処理の例を示す概略図。 第1実施形態のタスクの実行イメージを示す図。 第1実施形態のスイッチ装置のタスクの制御例を示す図。 第1実施形態のタスクスケジュール情報の例1を示す図。 第1実施形態のタスクスケジュール情報の例2を示す図。 第1実施形態のタスクの起動処理の例を示すフローチャート。 第1実施形態の入力処理部の機能構成の例を示す図。 第1実施形態のデータの入力処理の例を示すフローチャート。 第1実施形態の出力処理部の機能構成の例を示す図。 第1実施形態のデータの出力処理の例を示すフローチャート。 第1実施形態のタスクの実行イメージを示す図。 第2実施形態の入力処理部の機能構成の例を示す図。 第2実施形態の出力処理部の機能構成の例を示す図。 第2実施形態のタスクスケジュール情報の例1を示す図。 第2実施形態のタスクスケジュール情報の例2を示す図。 第2実施形態のタスクの起動処理の例を示すフローチャート。 第2実施形態のデータの入力処理の例を示すフローチャート。 第2実施形態のデータの出力処理の例を示すフローチャート。 第2実施形態のタスクの実行イメージを示す図。 第3実施形態の入力処理部の機能構成の例を示す図。 第3実施形態の出力処理部の機能構成の例を示す図。 第3実施形態の第2アラーム部へ設定する時間を示す図。 第3実施形態のタスクの起動処理の例を示すフローチャート。 第3実施形態のデータの入力処理の例を示すフローチャート。 第3実施形態のデータの出力処理の例を示すフローチャート。 第4実施形態のタスクの制御例を示す図である。 第4実施形態のタスクの実行イメージを示す図。 第4実施形態の入力処理部の機能構成の例を示す図。 第4実施形態の出力処理部の機能構成の例を示す図。 第1乃至第4実施形態のスイッチ装置のハードウェア構成の例を示す図。
以下に添付図面を参照して、スイッチ装置、スイッチング方法及びプログラムの実施形態を詳細に説明する。
(第1実施形態)
はじめに、高いリアルタイム性が求められる産業用ネットワーク及び車載ネットワークなどの分野で利用されている規格の例について説明する。
例えば、イーサネット(登録商標)上でリアルタイム性を実現する規格として、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では、送信キュー)を事前に設定した送信スケジュール情報(ゲートコントロールリスト)に従って制御することで、優先度ごとにデータ(フレーム)の送信タイミングを厳密に制御することが可能になる。各送信バッファにはデータの送信を許可するゲートを設ける。ゲートが開いている場合(オープン状態)は、データの送信が許可され、閉じている場合(クローズ状態)はデータの送信は禁止される。
ゲートコントロールリストには、一周期分の各ゲートの状態が格納される。IEEE 802.1Qbvに対応したNIC(Network Interface Card)などは、現在時刻、ゲートコントロールリスト、及び、ゲートコントロールの開始時刻(基準時刻)などに基づいて、送信が許可された優先度のキューを選択してデータ(フレーム)の送信処理を実施する。このように、ゲートコントロールリストに従って、厳密にデータ送信タイミングを制御することで、優先度が異なるデータ間での送信タイミングの衝突を防ぎ、送信遅延時間及び送信処理時間の揺らぎなどをより小さくすることが可能になる。
次に、産業用システム及び車載システムなどに仮想化技術などのソフトウェア技術を適用する場合の例について説明する。例えば、仮想マシン間を接続するスイッチ(仮想スイッチ)をソフトウェアで実現することが考えられる。
図1は、仮想マシン13a及び13b間でデータを転送するスイッチ装置100の例を示す概略図である。図1の例は、ホストプロセッサ10上で動作する仮想マシン12によりスイッチ機能を実現する場合を示す。
スイッチ装置100は、ホストプロセッサ10、NIC30a及び30bを備える。ホストプロセッサ10は、仮想マシンモニタ11、仮想マシン12、13a及び13bを備える。
ホストプロセッサ10は、スイッチ装置100を制御する装置である。
NIC30a及び30bは、スイッチ装置100の物理インタフェースである。
仮想マシンモニタ11は、仮想マシン12、13a及び13bを制御する。仮想マシン12、13a及び13bは、仮想マシンモニタ11上で動作する。
仮想マシン12は、ソフトウェアスイッチ14を備える。ソフトウェアスイッチ14は、ネットワークドライバ15a、ネットワークドライバ15b、フォワーディング処理部16、FDB(forwarding/filtering database)17、バックエンド仮想ネットワークドライバ18a及び18bを備える。
ネットワークドライバ15aは、NIC30aとフォワーディング処理部16との間の通信を制御する。同様に、ネットワークドライバ15bは、NIC30bとフォワーディング処理部16との間の通信を制御する。
フォワーディング処理部16は、FDB17を参照して、データ(フレーム)の転送を制御する。
バックエンド仮想ネットワークドライバ18aは、仮想マシン13aとの間の通信を制御する。同様に、バックエンド仮想ネットワークドライバ18bは、仮想マシン13bとの間の通信を制御する。
仮想マシン13aは、フロントエンド仮想ネットワークドライバ19a及びアプリ/スタック20aを備える。フロントエンド仮想ネットワークドライバ19aは、アプリ/スタック20aとソフトウェアスイッチ14との間の通信を制御する。
同様に、仮想マシン13bは、フロントエンド仮想ネットワークドライバ19b及びアプリ/スタック20bを備える。フロントエンド仮想ネットワークドライバ19bは、アプリ/スタック20bとソフトウェアスイッチ14との間の通信を制御する。
次に、上述の図1のように、仮想マシン13a及び13b間を接続するスイッチ(仮想スイッチ)をソフトウェア(ソフトウェアスイッチ14)で実現する場合の問題点について説明する。例えば、ソフトウェアは、ハードウェアと違い、実行するタスクの同時実行数に制限があるという問題がある。
一般的に、ハードウェアでは、スイッチに接続される機器の台数(ネットワークポート数)分の転送処理が同時に実行できるように設計される。一方で、ソフトウェアでは、実行するCPUの数でしか同時に処理を実行できない。通常ソフトウェアではタスクやスレッドを並列実行しているが、これはOSなどの機能を利用してCPUリソースを時分割で利用しているにすぎない。
リアルタイム性が要求されない一般的なソフトウェアスイッチであれば問題ないが、リアルタイム性が要求されるスイッチでは、OSのタスクスケジューリングやコンテキストスイッチなどによる見積困難な処理時間の揺らぎは大きな問題となる。このため、ソフトウェアスイッチでリアルタイム通信を実現する場合、事前にスケジューリングされたフレームの送信(転送)タイミングに同期して、ソフトウェアスイッチの各タスクを実行する必要がある。
また、キューに格納されたフレームの転送を開始する方法も考慮する必要がある。一般的に、キューに格納されたフレームを転送する方法として、割り込みを利用する方法、及び、ポーリングを利用する方法の2つがある。前者は、キューにフレームが存在する場合にのみ処理を実行するためCPU利用効率が良いが、割り込み処理のオーバヘッドが発生する。後者は、常にキューを監視してフレーム転送を実施するため、高速なフレーム転送を実現できるが、キューにフレームが存在しない場合もCPUリソースを消費してしまう。
割り込みによる転送、及び、ポーリングによる転送のハイブリッド処理として、Linux(登録商標)で用いられるNAPI(NEW API)という方式がある。NAPIは、キューにフレームが存在する間は、ポーリングで動作し、キューが空になったら割り込み待ち状態に移行する。これにより、ポーリングによる高速なフレーム転送を実現しつつ、キューにフレームが存在しない場合は、CPUリソースを別の処理(タスク)に割り当てることが可能になる。
しかしながら、リアルタイム通信が必要なネットワークスイッチでは、(NAPIも含む)割り込みを起点として転送処理を開始する方法は、どのタイミングで割り込みが発生するかが想定できず、見積困難な処理時間を発生させてしまう。例えば、通常、割り込みに係わる処理は最優先で実行されるため、あるネットワークインタフェースのフレーム転送処理を実施している最中に、別のネットワークインタフェースの割り込みが発生すると、想定外の処理遅延が発生してしまう。
[前提説明1]
第1実施形態で説明するスイッチ装置は、IEEE802.1QBvのような、事前にスケジュールされたタイミングでフレームを送信するネットワークスイッチである。以降は、IEEE802.1Qbvを想定して説明をするが、本実施形態のスイッチ装置はこれに限定されるものではない。
[前提説明2]
図2は、IEEE802.1Qbvに対応したスイッチ装置100−2、及び、スイッチ装置100−2に接続される通信端末200a及び200bの例を示す概略図である。スイッチ装置100−2は、TSNスイッチである。スイッチ装置100−2のスイッチ機能は、ハードウェアにより実現されていてもよいし、ソフトウェアにより実現されていてもよい。
スイッチ装置100−2は、受信処理部101a、受信処理部101b、送信処理部102a、送信処理部102b、フォワーディング処理部103、FDB104、GCL105a及びGCL105bを備える。
受信処理部101aは、通信端末200aからデータ(フレーム)を受信する。同様に、受信処理部101bは、通信端末200bからデータを受信する。
送信処理部102aは、IEEE802.1QbvのGCL105aに従って、どの送信キューのデータ(フレーム)を通信端末200aに送信するかを制御する。同様に、送信処理部102bは、IEEE802.1QbvのGCL105bに従って、どの送信キューのデータを通信端末200bに送信するかを制御する。
フォワーディング処理部103及びFDB104の説明は、図1と同様なので省略する。
通信端末200aは、受信処理部201a及び送信処理部202aを備える。受信処理部201aは、スイッチ装置100−2からデータを受信する。送信処理部202aは、IEEE802.1QbvのGCL203aに従って、どの送信キューのデータ(フレーム)をスイッチ装置100−2に送信するかを制御する。
通信端末200bは、受信処理部201b及び送信処理部202bを備える。受信処理部201b及び送信処理部202bの説明は、受信処理部201a及び送信処理部202aと同様なので省略する。
なお、スイッチ装置100−2に仮想マシンが接続される場合の構成も、上述の図2の構成と同様である。ただし、Xen(登録商標)で用いられるSplit Driver Modelのように、各仮想マシンのネットワークのI/O処理を分離し、1つの仮想マシン上で処理する図3のような構成も考えられる。
図3はネットワークのI/O処理を専用仮想マシンで実現した場合のIEEE802.1Qbvに対応したスイッチ装置100−3の例を示す概略図である。スイッチ装置100−3では、スイッチ機能が、IEEE802.1Qbvに対応したソフトウェアスイッチ(仮想TSNスイッチ)110により実現されている。
図3のような構成により、ソフトウェアスイッチ110のみがリアルタイム通信のための処理を実行し、他の仮想マシンではIEEE802.1Qbvのような送信タイミングの制御をしなくて良いという利点がある。以降は、図3のような構成を想定して、実施形態の説明をするが、本実施形態は図3の構成に限定されるものではない。
図4は第1実施形態のスイッチ装置100−3の入出力処理の例を示す概略図である。第1実施形態のスイッチ装置100−3は、仮想マシン13a、仮想マシン13b及びNIC30と接続される。スイッチ装置100−3は、仮想マシン13a、仮想マシン13b及びNIC30の間でデータ転送処理(フレーム転送処理)を実施する。
ソフトウェアスイッチ110は、仮想マシン13a、仮想マシン13b及びNIC30と接続するネットワークポート毎に、入力処理部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という。
なお、図4の入力処理部301は、図3の受信処理部101及びフォワーディング処理部103に対応する。また、図4の出力処理部302は、図3の送信処理部102に対応する。
入力処理部301aは、入力バッファ303aを介して仮想マシン13aからデータ(フレーム)を受信すると、当該データのヘッダ情報を参照して転送先のネットワークポートを決定し、該当する転送バッファ304へデータを書き込む。入力処理部301aは、例えば、データの宛先が仮想マシン13bの場合、転送バッファ304bへデータを書き込む。
出力処理部302aは、転送バッファ304aからデータを取得すると、出力バッファ305aを介して仮想マシン13aへデータを出力する。
入力処理部301b及び301cの説明は、入力処理部301aと同様なので省略する。同様に、出力処理部302b及び302cの説明は、出力処理部302aと同様なので省略する。
第1実施形態のスイッチ装置100−3は、各ネットワークポートの入力処理部301及び出力処理部302を1つのタスクとし、あらかじめスケジュールされたタイミングで起動する。これにより、コンテキストスイッチなどによる見積困難な処理時間の揺らぎを排除する。
図5は第1実施形態のタスクの実行イメージを示す図である。図5の例は、ソフトウェアスイッチ110を動作させるCPUが1つの場合のタスクの実行イメージを示す。また、図5の例は、物理ネットワークの通信速度が1Gbpsである場合を示す。
ソフトウェアスイッチ110は、各タスクを周期的に実行する。br_out(pif)は、出力処理部302cのタスクを示す。br_in(pif)は、入力処理部301cのタスクを示す。br_out(vif1)は、出力処理部302aのタスクを示す。br_in(vif1)は、入力処理部301aのタスクを示す。br_out(vif2)は、出力処理部302bのタスクを示す。br_in(vif2)は、入力処理部301bのタスクを示す。
図6は第1実施形態のスイッチ装置100−3のタスクの制御例を示す図である。
アラーム部306は、指定された時間が経過した場合、選択部307へ通知する。アラーム部306の動作は、一定間隔(設定された時間周期)で通知を繰り返す動作でも良いし、指定された時間が経過したら一度だけ通知を行う動作でも良い。
選択部307は、アラーム部306の通知によって起動され、タスクスケジュール情報308を参照して、起動するタスクを選択する。
タスクスケジュール情報308には、タスクの起動タイミングを示す情報が格納される。
図7Aは第1実施形態のタスクスケジュール情報308の例1を示す図である。図7Aの例は、起動周期(tick)が一定(1000ns)の場合を示す。すなわち、図7Aのタスクスケジュール情報308の例は、全てのタスクの実行時間が同一である場合を示す。この場合、アラーム部306は1000ns間隔で起床して、選択部307に通知するという動作を繰り返す。
base_time(GCL)は、送信スケジュール情報の一例であるIEEE802.1Qbvのゲートコントロールリストを使用したゲート制御の開始時刻(基準時刻)を示す。送信スケジュール情報には、データの送信タイミングが、当該データの優先度毎に定められている。
next_task(ID)は、次に実行されるタスクを示す。
図7Bは第1実施形態のタスクスケジュール情報308の例2を示す図である。図7Bの例は、割り当てられる実行時間がタスク毎に異なる場合を示す。この場合、選択部307は、次に起床するまでの時間をその都度、アラーム部306へ設定する。
図7A及び図7Bの例では、選択部307は、next_taskに指定されたID=5のタスク(br_out(vif2))を選択する。次に、選択部307は、next_taskを更新し、次の起動時に選択するタスクを指定しておく。
最後に、選択部307は、タスクの終了時間を算出し、選択したタスクを起動する。タスクの終了時間は、現在時刻にタスクの実行時間(図7Aの場合はtickの値)を加算した値、基準時刻(base_time)からのタスク実行時間の累積値、これらの値に実行時間の揺らぎを考慮した値などが考えられるが、これらに限定されない。
なお図7A及び図7Bの説明では、選択部307が、タスクの終了時刻を算出する場合について説明したが、選択部307は各タスクにタスクの実行時間(図7Aの場合はtickの値)を通知し、各タスクが終了時間を計算してもよい。
ここで、タスクスケジュール情報308について補足する。図7A及び7Bのタスクスケジュール情報308には、各タスクを示す情報が実行順に並び、タスクを起動する際の基準時刻(base_time)、次に実行するタスクの情報(next_task)を含むが、これに限定されない。
アラームが初めて起動される時刻は、base_timeに指定された時刻になる。ここで、第1実施形態では、base_timeは、例えばデータ(フレーム)の送信スケジュール情報(IEEE802.1Qbvのゲートコントロールで利用される情報)で用いられる基準時刻の値が設定される。
すなわち、送信スケジュール情報と、タスクスケジュール情報308とは、タスクの選択制御の開始時刻を、送信スケジュール情報に基づく送信タイミング制御の開始時刻と合せることにより同期される。
なお、データの送信スケジュール情報の基準時刻とは別の値(変数)を、base_timeとして設ける場合には、タスクスケジュール情報308のbase_timeと、データの送信スケジュール情報のそれぞれの基準時刻とを同期させる。
図6の説明に戻る。図6の例では、タスクスケジュール情報308に含まれるタスクは、入力処理部301a〜c及び出力処理部302a〜cである。例えば、FDB(forwarding/filtering database)の古いエントリを削除するタスク(図7Aのfdb_clean)、スイッチの統計情報を処理するタスクなどもタスクスケジュール情報に含まれても良い。また、タスクスケジュール情報で指定されるタスクは、ノンプリエンプティブタスクを想定し、実行中に他のタスクに割り込まれないタスクとする。
入力バッファ303は、仮想マシン13からスイッチ装置100−3へデータを受け渡す際に利用されるバッファである。入力バッファ303は、スイッチ側に備えても良いし、仮想マシン側に備えても良いし、VMM(Virtual Machine Monitor、またはハイパーバイザー)側に備えても良い。IEEE802.1Qbvの場合、入力バッファ303は、トラフィッククラス毎に分割されたキューである。
入力処理部301は、選択部307からの通知を受けて起動し、入力バッファ303のデータ(フレーム)を読み出し、転送先を判定して、該当する転送バッファ304へ当該データを書き込む。
転送バッファ304は、入力処理部301から出力処理部302へデータを受け渡す際に利用されるバッファである。IEEE802.1Qbvの場合、転送バッファ304は、トラフィッククラス毎に分割されたキューである。
出力処理部302は、選択部307からの通知を受けて起動し、転送バッファ304のデータを読み出し、出力バッファ305へ当該データを書き込む。
出力バッファ305は、スイッチ装置100−3から、仮想マシン13又はNIC30へデータを受け渡す際に利用されるバッファである。出力バッファ305は、スイッチ側に備えても良いし、仮想マシン側に備えても良いし、VMM(Virtual Machine Monitor、またはハイパーバイザー)側に備えても良い。
なお、図6の説明では、入力処理部301が、ネットワークポート毎(仮想マシン13及びNIC30)に備えられている場合について説明したが、例えば入力処理部301を1つにして、参照するネットワークポートを切り替える方式でもよい。出力処理部302についても同様である。
また例えば、仮想インタフェース(仮想マシン13)の入出力制御をする入力処理部301及び出力処理部302と、物理インタフェース(NIC30)の入出力制御をする入力処理部301及び出力処理部302と、に分けて制御する構成にしてもよい。
図8は第1実施形態のタスクの起動処理の例を示すフローチャートである。はじめに、選択部307が、タスクスケジュール情報308を参照して、起動するタスクを選択する(ステップS1)。次に、選択部307が、次回実行するタスクを示すnext_taskを指定することにより、タスクスケジュール情報308を更新する(ステップS2)。次に、選択部307が、ステップS1の処理により選択されたタスクの終了時間を、上述の方法により計算する(ステップS3)。次に、選択部307が、ステップS1の処理により選択されたタスクを起動する(ステップS4)。次に、ステップS1の処理により選択されたタスクが、当該タスクの処理を実行する(ステップS5)。
以上が、第1実施形態のスイッチ装置100−3のタスク起動動作である。次に、選択部307によって起動される入力処理部301及び出力処理部302の動作について説明する。
<入力処理部の処理>
図9は第1実施形態の入力処理部301aの機能構成の例を示す図である。第1実施形態の入力処理部301aは、FDB104、送信スケジュール情報106、転送処理部310及び判定部320を備える。転送処理部310は、読み出し部311、転送先決定部312及び書き込み部313を備える。
判定部320は、1フレームを転送するのに必要な最悪処理時間を保持する。最悪処理時間は、最大フレーム長のフレーム処理時間、送信スケジュール情報の探索時間、FDB104の探索時間、及び、ブロードキャストの処理時間などを考慮して算出される。
送信スケジュール情報の探索時間については、例えばIEEE802.1Qbvの場合、優先度の高いトラフィッククラスから順番に送信フレームが存在するか確認されるため、一番優先度が低いトラフィッククラスのみにフレームが存在する場合が最も処理に時間がかかる。
FDB104の探索時間については、例えばFDB104がハッシュで管理される場合、ハッシュ値の衝突の有無などで、処理時間が変動する。
ブロードキャストの処理時間については、例えばネットワークポート数に応じてブロードキャスト時の処理が増大する。
判定部320は、現在時刻、最悪処理時間、及び、選択部307により受け取った終了時刻から、1フレーム分の送信が可能であるか否かを判定する。
送信スケジュール情報106は、事前に設定されたフレームの送信タイミングを示す情報を保持する。IEEE802.1Qbvの場合、送信スケジュール情報106は、ゲートコントロールリスト(GCL)、及び、ゲートコントロールに必要な各種情報(基準時刻を含む)である。
FDB104は、フレームの送信先を決定するための情報が含まれる。第1実施形態では、転送先のネットワークポート(ネットワークインタフェース)の識別子、MACアドレス、VLAN ID、及び、最終送信時刻などの情報が格納される。
転送処理部310は、送信スケジュール情報106を基にタイミングを制御しながら入力バッファ303aからデータ(フレーム)を読み出す。図9の例では、入力バッファ303aに含まれるTC(Traffic Class)0〜7のいずれかのバッファからデータが読み出される。次に、転送処理部310は、FDB104を参照して宛先となるネットワークポートを決定し、該当する転送バッファ305へデータを書き込む。転送処理部310はデータの書き込みが完了すると、判定部320へ通知する。転送処理は、判定部320により処理できないと判定されるまで繰り返される。
図10は第1実施形態のデータの入力処理の例を示すフローチャートである。はじめに、判定部320が、入力処理部301(タスク)の処理を実行する時間があるか否かを判定する(ステップS11)。
次に、読み出し部311が、送信スケジュール情報106に基づいて、転送処理を実施する入力バッファ(図9の例では、TC0〜TC7のいずれか)を選択する(ステップS12)。次に、読み出し部311は、ステップS12で選択された入力バッファに送信可能なデータ(フレーム)が存在するか否かを判定する(ステップS13)。送信可能なフレームが存在しない場合(ステップS13,No)、処理はステップS11に戻る。
送信可能なフレームが存在する場合(ステップS13,Yes)、読み出し部311は、ステップS12で選択されたバッファからフレームを読み出す(ステップS14)。次に、転送先決定部312が、フレームのヘッダに含まれる送信元情報に基づいてFDB104を更新する(ステップS15)。
次に、転送先決定部312が、フレームのヘッダに含まれる宛先情報が、FDB104に存在するか否かを判定する(ステップS16)。フレームのヘッダに含まれる宛先情報が、FDB104に存在する場合(ステップS16,Yes)、当該フレームをユニキャストで送信する。具体的には、書き込み部313が、FDB104に記載された宛先の転送バッファ304に、ステップS14の処理で読み出されたフレームを書き込む(ステップS17)。
フレームのヘッダに含まれる宛先情報が、FDB104に存在しない場合(ステップS16,No)、当該フレームをブロードキャストで送信する。具体的には、書き込み部313が、自身の転送バッファ304以外のすべての転送バッファ304に、ステップS14の処理で読み出されたフレームを書き込む(ステップS18)。
ここで、転送先決定部312の処理について補足する。
(FDB104の更新処理についての補足)
転送先決定部312は、読み出したフレームの”送信元”情報(MACアドレス、及び、VLAN ID)を含むエントリがFDB104に存在する場合、当該エントリの最終転送時刻に現在時刻を設定することにより、FDB104を更新する。なお、古いエントリ(長い間送信がされていないエントリ)は最終送信時間を利用して、削除される。例えば、fdb_cleanタスクが実行されたときに、最終送信時間が古い順に古いエントリが削除される。
一方、読み出したフレームの”送信元”情報(MACアドレス、及び、VLAN ID)を含むエントリがFDB104に存在しない場合、転送先決定部312は、エントリを新たに登録することにより、FDB104を更新する。
(ユニキャスト/ブロードキャストについての補足)
転送先決定部312は、読み出しフレームの”宛先”情報(MACアドレス、VLAN ID)を含むエントリがFDB104に存在する場合、当該フレームをユニキャストで転送する。
一方、読み出しフレームの”宛先”情報(MACアドレス、VLAN ID)を含むエントリがFDB104に存在しない場合、転送先決定部312は、当該フレームをブロードキャストで転送する。
<出力処理部の処理>
図11は第1実施形態の出力処理部302aの機能構成の例を示す図である。第1実施形態の出力処理部302aは、送信スケジュール情報106、転送処理部310及び判定部320を備える。転送処理部310は、読み出し部311及び書き込み部313を備える。送信スケジュール情報106、転送処理部310(読み出し部311及び書き込み部313)、及び、判定部320の説明は、図9と同様なので省略する。
図12は第1実施形態のデータの出力処理の例を示すフローチャートである。ステップS21〜S24の説明は図10のステップS11〜S14と同様なので省略する。書き込み部313は、ステップS24の処理により読み出されたデータ(フレーム)を出力バッファ305に書き込む(ステップS25)。
以上、説明したように、第1実施形態のスイッチ装置100−3では、選択部307が、データ(第1データ)の送信タイミングが、当該第1データの優先度毎に定められた送信スケジュール情報106と同期されたタスクスケジュール情報308に基づいて、当該第1データの転送処理を実行するタスク(第1タスク)を選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算する。判定部320が、当該終了時刻と現在時刻とから、当該第1データの転送処理が実行可能か否かを判定する。そして、選択部307により選択された第1タスクが、転送処理が実行可能な場合、送信スケジュール情報106に基づいて、第1データの転送処理を実行する。
<第1実施形態の効果>
第1実施形態のスイッチ装置100−3によれば、データ(フレーム)の送信タイミングと同期してタスクの起動タイミングを制御することで、図13のように事前にスケジュールされたタイミングで各タスクが順番に処理される。
図13は第1実施形態のタスクの実行イメージを示す図である。選択部307は、例えばRTOS(Real−time operating system)のアラーム機能などにより一定間隔で起動される。選択部307は、内部で管理するタスクスケジュール情報308に基づいて、タスクを起床する。
起床するタスクは、br_out(pif)、br_in(pif)、br_out(vif1)、br_in(vif1)、br_out(vif2)、及び、br_in(vif2)のいずれかである。br_out(pif)、br_in(pif)、br_out(vif1)、br_in(vif1)、br_out(vif2)、及び、br_in(vif2)の説明は、図5と同じなので省略する。
起床したタスクは、タスクスケジュール情報308で指定された実行時間中は、ポーリング動作でフレーム転送処理を実行する。
図13のように各タスクが動作することにより、タスクの実行時間が厳密に管理され、予測不能な処理時間の揺らぎ(コンテキストスイッチなどに伴う見積困難な処理時間の揺らぎ)を排除することができる。これにより、最悪遅延を保証することが可能になる。
なお上述の説明では、簡単のため、ネットワークポートを3つの場合について説明したが、ネットワークポート数は任意でよい。
(第2実施形態)
次に第2実施形態について説明する。第2実施形態の説明では、第1実施形態と同様な説明については省略する。第2実施形態では、更にタスクの割り込み制御をする場合について説明する。
図14は第2実施形態の入力処理部301aの機能構成の例を示す図である。第2実施形態の入力処理部301aは、FDB104、送信スケジュール情報106、転送処理部310、判定部320及び割込み処理部321を備える。転送処理部310は、読み出し部311、転送先決定部312及び書き込み部313を備える。
図15は第2実施形態の出力処理部302aの機能構成の例を示す図である。第2実施形態の出力処理部302aは、送信スケジュール情報106、転送処理部310、判定部320及び割込み処理部321を備える。転送処理部310は、読み出し部311及び書き込み部313を備える。
すなわち、第2実施形態では、第1実施形態の構成に割込み処理部321が更に追加されている。
割込み処理部321は、仮想マシン13aが入力バッファ303aにデータ(フレーム)を書き込んだ場合に発生する割り込み信号や、入力処理部301が転送バッファ304aにデータ書き込んだ場合に発生する割り込み信号を検知し、割り込みが有効である場合に、判定部320へ通知する。割込みが有効であるか否かは、割込みマスクによって制御される。割り込み信号は、仮想マシン13aのドライバが、フレーム投入時に発生させても良いし、入力処理部303が転送バッファへフレームを書き込み時に発生させても良いし、ハイパーバイザーが発生させても良い。また、割り込み信号を用いるのではなく、入力処理部301a(割り込み処理部321)が入力バッファ303aを、出力処理部302aが転送バッファ304aをポーリングで監視し、フレームが投入されることを検知する方法で代替しても良い。
図16Aは第2実施形態のタスクスケジュール情報208の例1を示す図である。図16Aの例は、起動周期(tick)が一定(1000ns)の場合を示す。すなわち、図16Aのタスクスケジュール情報308の例は、全てのタスクの実行時間が同一である場合を示す。この場合、アラーム部306は1000ns間隔で起床して、選択部307に通知するという動作を繰り返す。
図16Bは第2実施形態のタスクスケジュール情報308の例2を示す図である。図16Bの例は、割り当てられる実行時間がタスク毎に異なる場合を示す。この場合、選択部307は、次に起床するまでの時間をその都度、アラーム部306へ設定する。
第2実施形態では、前回実行されたタスクを示すprev_task(ID)が追加されている。
選択部307は選択したタスクを起動する際に、前回実行したタスク(prev_task)の割込み処理部321に対して、割り込みを無効化(マスク)するように設定する。次に、選択部307は、起動するタスク(next_task)の判定部320へ終了時刻を通知して、タスク(next_task)を起動する。
入力処理部301(出力処理部302)は、第1実施形態と同様の処理を実施するが、読み出し部311がバッファを参照した際にデータ(フレーム)が存在しなければ、割込み処理部321の割り込み処理を有効化して終了する。
アラーム部306が新たに動作する前(アラーム部306が起動した場合、割り込みが無効になる)に、キューにフレームが投入されると、割込み処理部321により検知され、フレーム転送処理が再開される。
図17は第2実施形態のタスクの起動処理の例を示すフローチャートである。はじめに、選択部307が、タスクスケジュール情報308を参照して、起動するタスクを選択する(ステップS31)。次に、選択部307が、前回実行していたタスク(prev_task)の割り込みを無効にする(ステップS32)。
次に、選択部307が、タスクスケジュール情報308のnext_task及びprev_taskを更新する(ステップS33)。次に、選択部307が、ステップS31の処理により選択されたタスクの終了時間を、第1実施形態と同様の方法により計算する(ステップS34)。次に、選択部307が、ステップS31の処理により選択されたタスクを起動する(ステップS35)。次に、ステップS31の処理により選択されたタスクが、当該タスクの処理を実行する(ステップS36)。
図18は第2実施形態のデータの入力処理の例を示すフローチャートである。はじめに、割込み処理部321が、タスク実行中の割り込みを無効化する(ステップS41)。
ステップS42〜ステップS49の説明は、第1実施形態と同様のため省略する。
第2実施形態では、送信可能なフレームが存在しない場合(ステップS44,No)、割り込みを有効化する(ステップS50)。
図19は第2実施形態のデータの出力処理の例を示すフローチャートである。はじめに、割込み部321が、タスク実行中の割り込みを無効化する(ステップS61)。ステップS62〜S65の説明は。図18のステップS42〜S45と同様なので省略する。書き込み部313は、ステップS65の処理により読み出されたデータ(フレーム)を出力バッファ305に書き込む(ステップS66)。
第2実施形態では、送信可能なフレームが存在しない場合(ステップS64,No)、割り込みを有効化する(ステップS67)。
図20は第2実施形態のタスクの実行イメージを示す図である。第1実施形態では、データ(フレーム)が存在しない場合もタスクの終了時刻までは動作を繰り返していた(ポーリング動作)。一方で、第2実施形態では、タスクの実行中に送信可能なフレームが存在しない場合は、割り込みを有効化して動作を終了する。これにより、図20のように、フレームが存在しない場合には別のタスクを実行することが可能になる(割り込み処理とポーリングのハイブリッド)。但し、キューにフレームが投入された場合には、転送処理部310は、直ちに転送処理を再開する。このため、転送処理部310の中断中に実行されるタスクは、優先度が低いプリエンプティブタスク(処理の割り込みが可能なタスク)である必要がある。
プリエンプティブタスクは、例えばFDBの古いエントリを削除するタスク、スイッチの統計情報処理、及び、リアルタイム通信ではないベストエフォートトラフィックの転送処理など、リアルタイム性への要求が低い処理を実行するタスクである。
具体的には、選択部307は、ノンプリエンティブタスク(第1タスク)の転送処理が中断された場合、プリエンプティブタスク(第2データ)の転送処理を実行する第2タスク(図20の例では、非リアルタイムタスク)を選択する。そして、選択部307により選択された第2タスクは、割り込みが有効にされていた第1タスク、又は、新たな第1タスクが選択部307により選択されるまでの間、第2データの転送処理を実行する。
なお、割り込み動作に移行する際の条件(送信可能なフレームが存在しないと判定する条件)は、例えばバッファが空の場合である。また例えば、割り込み動作に移行する際の条件は、バッファにフレームが存在するがゲートが閉じている場合である。また例えば、割り込み動作に移行する際の条件は、バッファにフレームが存在しゲートも空いているが、Qbvのガードバンド判定で送信できない場合である。
以上、説明したように、第2実施形態のスイッチ装置100−3では、割込み処理部321が、タスク(第1タスク)が参照するバッファへ第1データが投入されたことを検知すると、当該第1タスクに対する割り込みが有効である場合に、判定部320へ通知する。選択部307が、第1タスクを選択する際に、選択される第1タスクに対する割り込みを無効化する。選択部307により選択された第1タスクは、転送処理中に、転送可能な第1データがバッファに存在しない場合に、割り込みを有効にして転送処理を中断する。そして、判定部320が、割込み処理部から通知を受信した場合、割り込みが有効にされていた第1タスクによって第1データの転送処理が実行可能か否かを判定する。
<第2実施形態の効果>
第2実施形態によれば、データ(フレーム)の送信タイミングと同期してタスクの起動タイミングを制御し、フレーム転送処理のタスクの実行中に送信可能なフレームが存在しない場合は別のタスクを実行可能にすることで、処理の最悪遅延は保証しつつ、処理効率を向上させることができる。
(第3実施形態)
次に第3実施形態について説明する。第3実施形態の説明では、第2実施形態と同様な説明については省略する。第3実施形態では、バッファの状態と、送信スケジュール情報106の状態変化とを考慮した割り込み制御をする場合について説明する。
図21は第3実施形態の入力処理部301aの機能構成の例を示す図である。第3実施形態の入力処理部301aは、FDB104、送信スケジュール情報106、転送処理部310、判定部320及び割込み処理部321を備える。転送処理部310は、読み出し部311、転送先決定部312及び書き込み部313を備える。
図22は第2実施形態の出力処理部302aの機能構成の例を示す図である。第2実施形態の出力処理部302aは、送信スケジュール情報106、転送処理部310、判定部320及び割込み処理部321を備える。転送処理部310は、読み出し部311及び書き込み部313を備える。
第3実施形態では、第2アラーム部306bが、割込み処理部321にアラームを通知する。なお、第1アラーム部306aの動作は、第2実施形態のアラーム部306と同じである。
第2実施形態のように、送信可能なデータ(フレーム)が存在しなかったため、割り込みを有効にしてタスクを終了すると、送信フレームは新たに投入されていないが、送信スケジュール情報106(例えばGCL)の状態が変化する場合がある。この場合、送信可能なフレームが存在しているのに、タスク(入力処理部301及び出力処理部302)が動作しなくなってしまう。
そこで、第3実施形態では、転送処理部310が、図23に示すように、割り込みを有効化してタスクを終了する際に、GCLが次に変化するまでの時間を第2アラーム部306bに設定する。図23に記載のOはOpenを示し、CはCloseを示す。
第2アラーム部306bが、図23のように設定された時間が経過後にアラームを通知する。すなわち、第2アラーム部306bは、選択部307により選択された第1タスクにより転送可能な第1データがバッファに存在せず、かつ、終了時刻までにゲートコントロールリストの状態が変化する場合、ゲートコントロールリストの状態が変化する時刻に割込み処理部321に通知する。割込み処理部321は、第2アラーム部306bから通知を受信した場合、判定部320へ通知する。そして、判定部320は、割込み処理部321から通知を受信した場合、割り込みが有効にされていた第1タスクによって第1データの転送処理が実行可能か否かを判定する。
これにより、バッファにデータ(フレーム)は存在したが、GCLの状態によって送信ができなかったフレームを、GCLの状態変化後に送信することが可能になる。
なお、転送処理部310は、GCLの変化時間がタスク終了時刻よりも後ならば、第2アラーム部306bに時間を設定しない(第2アラーム部306bを動作させない)。この場合、第3実施形態の動作は、第2実施形態と同じ動作になる。
図24は第3実施形態のタスクの起動処理の例を示すフローチャートである。はじめに、選択部307が、タスクスケジュール情報308を参照して、起動するタスクを選択する(ステップS71)。次に、選択部307が、前回実行していたタスク(prev_task)の割り込みを無効にし、第2アラーム部306bを停止する(ステップS72)。
ステップS73〜ステップS76の説明は、第2実施形態のステップS33〜ステップS36と同様なので省略する。
図25は第3実施形態のデータの入力処理の例を示すフローチャートである。ステップS81〜ステップS90の説明は、第2実施形態のステップS41〜ステップS50と同様なので省略する。
転送処理部310は、送信スケジュール情報106(例えばGCL)が次に変化するまでの時間(図23参照)を第2アラーム部306bに設定する(ステップS91)。
図26は第2実施形態のデータの出力処理の例を示すフローチャートである。ステップS101〜ステップS107の説明は、第2実施形態のステップS61〜ステップS67と同様なので省略する。
転送処理部310は、送信スケジュール情報106(例えばGCL)が次に変化するまでの時間(図23参照)を第2アラーム部306bに設定する(ステップS108)。
<第3実施形態の効果>
以上、説明したように、第3実施形態のスイッチ装置100−3によれば、バッファにデータ(フレーム)は存在したが、GCLの状態によって送信ができなかったフレームを、GCLの状態変化後に送信することが可能になる。
(第4実施形態)
次に第4実施形態について説明する。第2実施形態の説明では、第1実施形態と同様な説明については省略する。第4実施形態では、マルチコアでタスクを実行する場合について説明する。
図27は第4実施形態のタスクの制御例を示す図である。図27の例では、タスク毎に当該タスクを実行するCPUが指定されている。例えば、入力処理部301aは、CPU1で実行されるが、CPU2では実行されない。一方、例えば、入力処理部301dは、CPU2で実行されるが、CPU1では実行されない。
図27のように、タスク毎に当該タスクを実行するCPUを指定することで、図28のようにデータ(フレーム)の送信スケジュール情報106と同期しながら複数のタスクを実行することが可能になる。
図28は第4実施形態のタスクの実行イメージを示す図である。CPU1では、選択部307が、alarm1の周期で各タスクを選択し、起動する。CPU2では、選択部307が、alarm2の周期で各タスクを選択し、起動する。
一方で、複数のタスク(入力処理部301)が同時に実行されると、転送バッファ304への書き込み時に競合が発生する。アクセス競合を回避するためには一般的にロックを用いるが、リアルタイム処理が必要なタスクでは、ロックを取るまでの時間が想定困難な遅延時間となってしまう。
ロックを用いない別の方法としては、同時に実行されるタスク数だけバッファを分割する(CPUごとにアクセスするバッファを分ける)方法がある。しかし、この方法だと、バッファからフレームを読み出す出力処理部302は、どちらのバッファに先にフレームが投入されたかが分からなくなってしまう。通常のスイッチ装置ではラウンドロビンなどの方法でバッファからフレームを読み出せば問題ないが、事前にスケジュールされたタイミングでフレームを送信するリアルタイム通信では、フレーム順序が変わってしまうことは問題となる。
以上のことから、第4実施形態では、図29及び図30のように、CPU毎に分離した転送バッファ304を用意し、当該転送バッファ304の各トラフィッククラスのキューにタイムスタンプ(TS)を保持する領域を確保する。
図29は第4実施形態の入力処理部301aの機能構成の例を示す図である。第4実施形態の入力処理部301aは、FDB104、送信スケジュール情報106、転送処理部310及び判定部320を備える。転送処理部310は、読み出し部311、転送先決定部312及び書き込み部313−2を備える。
第4実施形態では、書き込み部313−2が第1実施形態の書き込み部313と異なる。書き込み部313−2は、転送バッファ304へデータ(フレーム)を書き込む際に、自身のタスクを実行しているCPU側のバッファを選択し、フレームと合わせて現在時刻(タイムスタンプ)を書き込む。
例えば、CPU1で動作する入力処理部301aが、仮想マシン13bへフレームを転送する場合は、転送バッファ304b−1に当該データを書き込む。
図30は第4実施形態の出力処理部302aの機能構成の例を示す図である。第4実施形態の出力処理部302aは、送信スケジュール情報106、転送処理部310及び判定部320を備える。転送処理部310は、読み出し部311−2及び書き込み部313を備える。
第4実施形態では、読み出し部311−2が第1実施形態の読み出し部311と異なる。読み出し部311−2は、データ(フレーム)を読み出す際にタイムスタンプを比較して、書き込みされた時間が早い方のバッファからフレームを読み出す。
<第4実施形態の効果>
上述の図29及び図30の構成により、第4実施形態によれば、見積困難な遅延を排除しつつ、データ(フレーム)の送信スケジュール情報106で指定された順序で、フレームを処理することが可能になる。
なお上述の説明では、簡単のため、コアが2つ(CPU1及び2)の場合について説明したが、コアの数は任意でよい。
すなわち、第1タスク毎に、当該第1タスクを実行するプロセッサが割り当てられ、転送される第1データを保持するバッファが、プロセッサ及び転送先の組み合わせ毎に割り当てられていればよい。この場合、第1データの入力を受け付け、当該第1データを転送する第1タスクは、当該第1データの入力を受け付け、当該第1データを転送する第1タスクが実行されるプロセッサに割り当てられたバッファに当該第1データと、当該第1データの書き込み時刻(タイムスタンプ)とを書き込む。そして、転送された第1データを、転送先へ出力する第1タスクは、プロセッサ及び転送先の組み合わせ毎に割り当てられバッファから、書き込み時刻が古い順に第1データを読み出す。
最後に第1乃至第第4実施形態のスイッチ装置100−3のハードウェア構成の例について説明する。
[ハードウェア構成の例]
図31は第1乃至第4実施形態のスイッチ装置100−3のハードウェア構成の例を示す図である。第1乃至第4実施形態のスイッチ装置100−3は、制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置405及び通信装置406を備える。制御装置401、主記憶装置402、補助記憶装置403、表示装置404、入力装置305及び通信装置406は、バス410を介して接続されている。
制御装置401は、補助記憶装置403から主記憶装置402に読み出されたプログラムを実行する。主記憶装置402は、ROM(Read Only Memory)及びRAM(Random Access Memory)等のメモリである。補助記憶装置403は、HDD(Hard Disk Drive)及びメモリカード等である。
表示装置404には、スイッチ装置100−3の状態等を表示する装置である。表示装置404は、例えば液晶ディスプレイ等である。
入力装置405には、スイッチ装置100−3を操作する装置である。入力装置405は、例えばキーボード及びマウス等である。
通信装置406は、外部の機器等と通信する装置である。
第1乃至第4実施形態のスイッチ装置100−3で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、メモリカード、CD−R及びDVD等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
また第1乃至第4実施形態のスイッチ装置100−3で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
また第1乃至第4実施形態のスイッチ装置100−3で実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
また第1乃至第4実施形態のスイッチ装置100−3のプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
第1乃至第4実施形態のスイッチ装置100−3で実行されるプログラムは、第1乃至第4実施形態のスイッチ装置100−3の機能ブロックのうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置401が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置402上にロードされる。すなわち上記各機能ブロックは主記憶装置402上に生成される。
なお各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC等のハードウェアにより実現してもよい。
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2以上を実現してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
13 仮想マシン
30 NIC
100 スイッチ装置
104 FDB
106 送信スケジュール情報
110 ソフトウェアスイッチ
301 入力処理部
302 出力処理部
303 受信バッファ
304 転送バッファ
305 出力バッファ
306 アラーム部
307 選択部
308 タスクスケジュール情報
310 転送処理部
311 読み出し部
312 転送先決定部
313 書き込み部
320 判定部
321 割込み部
401 制御装置
402 主記憶装置
403 補助記憶装置
404 表示装置
405 入力装置
404 通信装置
410 バス

Claims (10)

  1. 第1データの送信タイミングが、前記第1データの優先度毎に定められた送信スケジュール情報と同期されたタスクスケジュール情報に基づいて、前記第1データの転送処理を実行する第1タスクを選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算する選択部と、
    前記終了時刻と現在時刻とから、前記第1データの転送処理が実行可能か否かを判定する判定部と、を備え、
    前記選択部により選択された第1タスクは、転送処理が実行可能な場合、前記送信スケジュール情報に基づいて、前記第1データの転送処理を実行する、
    スイッチ装置。
  2. 前記送信スケジュール情報と、前記タスクスケジュール情報とは、前記第1タスクの選択制御の開始時刻を、前記送信スケジュール情報に基づく送信タイミング制御の開始時刻と合せることにより同期される、
    請求項1に記載のスイッチ装置。
  3. 前記第1タスクが参照するバッファへ前記第1データが投入されたことを検知すると、前記第1タスクに対する割り込みが有効である場合に、前記判定部へ通知する割込み処理部を更に備え、
    前記選択部は、前記第1タスクを選択する際に、選択される前記第1タスクに対する割り込みを無効化し、
    前記選択部により選択された第1タスクは、転送処理中に、転送可能な前記第1データが前記バッファに存在しない場合に、割り込みを有効にして転送処理を中断し、
    前記判定部は、前記割込み処理部から通知を受信した場合、割り込みが有効にされていた前記第1タスクによって前記第1データの転送処理が実行可能か否かを判定する、
    請求項1に記載のスイッチ装置。
  4. 前記選択部は、前記第1タスクの転送処理が中断された場合、第2データの転送処理を実行する第2タスクを選択し、
    前記選択部により選択された第2タスクは、割り込みが有効にされていた前記第1タスク、又は、新たな第1タスクが前記選択部により選択されるまでの間、前記第2データの転送処理を実行する、
    請求項3に記載のスイッチ装置。
  5. 前記第1タスクは、ノンプリエンプティブタスクであり、
    前記第2タスクは、プリエンプティブタスクである、
    請求項4に記載のスイッチ装置。
  6. 前記送信スケジュール情報は、IEEE802.1Qbvのゲートコントロールリストである、
    請求項5に記載のスイッチ装置。
  7. 前記選択部により選択された第1タスクにより転送可能な前記第1データが前記バッファに存在せず、かつ、前記終了時刻までに前記ゲートコントロールリストの状態が変化する場合、前記ゲートコントロールリストの状態が変化する時刻に前記割込み処理部に通知するアラーム部を更に備え、
    前記割込み処理部は、前記アラーム部から通知を受信した場合、前記判定部へ通知し、
    前記判定部は、前記割込み処理部から通知を受信した場合、割り込みが有効にされていた前記第1タスクによって前記第1データの転送処理が実行可能か否かを判定する、
    請求項6に記載のスイッチ装置。
  8. 前記第1タスク毎に、前記第1タスクを実行するプロセッサが割り当てられ、
    転送される前記第1データを保持するバッファは、前記プロセッサ及び転送先の組み合わせ毎に割り当てられており、
    前記第1データの入力を受け付け、前記第1データを転送する第1タスクは、前記第1データの入力を受け付け、前記第1データを転送する第1タスクが実行されるプロセッサに割り当てられたバッファに前記第1データと、前記第1データの書き込み時刻とを書き込み、
    転送された前記第1データを、転送先へ出力する第1タスクは、前記プロセッサ及び前記転送先の組み合わせ毎に割り当てられバッファから、前記書き込み時刻が古い順に前記第1データを読み出す、
    請求項1に記載のスイッチ装置。
  9. 選択部が、第1データの送信タイミングが、前記第1データの優先度毎に定められた送信スケジュール情報と同期されたタスクスケジュール情報に基づいて、前記第1データの転送処理を実行する第1タスクを選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算するステップと、
    判定部が、前記終了時刻と現在時刻とから、前記第1データの転送処理が実行可能か否かを判定するステップと、
    前記選択部により選択された第1タスクが、転送処理が実行可能な場合、前記送信スケジュール情報に基づいて、前記第1データの転送処理を実行するステップと、
    を含むスイッチング方法。
  10. コンピュータを、
    第1データの送信タイミングが、前記第1データの優先度毎に定められた送信スケジュール情報と同期されたタスクスケジュール情報に基づいて、前記第1データの転送処理を実行する第1タスクを選択し、選択された第1タスクにより実行される転送処理の終了時刻を計算する選択部と、
    前記終了時刻と現在時刻とから、前記第1データの転送処理が実行可能か否かを判定する判定部として機能させ、
    前記選択部により選択された第1タスクは、転送処理が実行可能な場合、前記送信スケジュール情報に基づいて、前記第1データの転送処理を実行する、
    プログラム。
JP2018174249A 2018-09-18 2018-09-18 スイッチ装置、スイッチング方法及びプログラム Active JP6914900B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018174249A JP6914900B2 (ja) 2018-09-18 2018-09-18 スイッチ装置、スイッチング方法及びプログラム
US16/282,055 US10884786B2 (en) 2018-09-18 2019-02-21 Switch device, switching method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018174249A JP6914900B2 (ja) 2018-09-18 2018-09-18 スイッチ装置、スイッチング方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020048045A true JP2020048045A (ja) 2020-03-26
JP6914900B2 JP6914900B2 (ja) 2021-08-04

Family

ID=69774052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018174249A Active JP6914900B2 (ja) 2018-09-18 2018-09-18 スイッチ装置、スイッチング方法及びプログラム

Country Status (2)

Country Link
US (1) US10884786B2 (ja)
JP (1) JP6914900B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11336725B2 (en) 2019-11-14 2022-05-17 Kabushiki Kaisha Toshiba Communication apparatus, communication method, and computer program product
WO2022259540A1 (ja) * 2021-06-11 2022-12-15 日本電信電話株式会社 信号転送装置、信号転送方法、及びプログラム
WO2022264230A1 (ja) * 2021-06-14 2022-12-22 日本電信電話株式会社 通信制御装置、通信制御方法、及びプログラム
US11625199B2 (en) 2019-11-14 2023-04-11 Kabushiki Kaisha Toshiba Communication apparatus, communication method, and computer program product
WO2023233708A1 (ja) * 2022-06-03 2023-12-07 株式会社インタフェース Tsn通信システム
US11880724B2 (en) 2020-07-22 2024-01-23 Fujitsu Limited Information processing apparatus for controlling data transferring and method of processing information for controlling data transferring
WO2024053113A1 (ja) * 2022-09-09 2024-03-14 日本電信電話株式会社 情報処理装置、情報管理装置、情報処理方法、及びプログラム
JP7451438B2 (ja) 2021-01-22 2024-03-18 株式会社東芝 通信装置、通信システム、通知方法及びプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7467325B2 (ja) * 2020-12-17 2024-04-15 株式会社東芝 通信制御装置、通信制御方法、情報処理装置、情報処理方法、および、プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000512442A (ja) * 1996-03-14 2000-09-19 モトローラ・インコーポレーテッド 通信ネットワークにおける事象駆動セルスケジューラおよびマルチサービスカテゴリをサポートする方法
JP2001045063A (ja) * 1999-08-03 2001-02-16 Nec Commun Syst Ltd フレーム送信の優先制御方法及びその優先制御システム
JP2007074218A (ja) * 2005-09-06 2007-03-22 Toyota Infotechnology Center Co Ltd パケット送信制御プログラム、パケット送信制御装置、及びパケット送信制御方法
JP2011097124A (ja) * 2009-10-27 2011-05-12 Hitachi Automotive Systems Ltd 車載ネットワーク装置
JP2019165380A (ja) * 2018-03-20 2019-09-26 株式会社東芝 転送制御装置、転送制御方法及びプログラム
WO2020039607A1 (ja) * 2018-08-23 2020-02-27 三菱電機株式会社 通信装置、通信方法及び通信プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3263135B2 (ja) 1992-06-30 2002-03-04 キヤノン株式会社 情報処理装置
JP2001216170A (ja) 2000-01-31 2001-08-10 Mitsubishi Electric Corp 専用ポーリング処理組み込みオペレーティング方法及び専用ポーリング処理組み込みオペレーティングシステム
JP4720236B2 (ja) 2005-03-22 2011-07-13 富士ゼロックス株式会社 画像処理装置
JP2007323256A (ja) 2006-05-31 2007-12-13 Matsushita Electric Ind Co Ltd 割込制御方法および情報処理装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000512442A (ja) * 1996-03-14 2000-09-19 モトローラ・インコーポレーテッド 通信ネットワークにおける事象駆動セルスケジューラおよびマルチサービスカテゴリをサポートする方法
JP2001045063A (ja) * 1999-08-03 2001-02-16 Nec Commun Syst Ltd フレーム送信の優先制御方法及びその優先制御システム
JP2007074218A (ja) * 2005-09-06 2007-03-22 Toyota Infotechnology Center Co Ltd パケット送信制御プログラム、パケット送信制御装置、及びパケット送信制御方法
JP2011097124A (ja) * 2009-10-27 2011-05-12 Hitachi Automotive Systems Ltd 車載ネットワーク装置
JP2019165380A (ja) * 2018-03-20 2019-09-26 株式会社東芝 転送制御装置、転送制御方法及びプログラム
WO2020039607A1 (ja) * 2018-08-23 2020-02-27 三菱電機株式会社 通信装置、通信方法及び通信プログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11336725B2 (en) 2019-11-14 2022-05-17 Kabushiki Kaisha Toshiba Communication apparatus, communication method, and computer program product
US11625199B2 (en) 2019-11-14 2023-04-11 Kabushiki Kaisha Toshiba Communication apparatus, communication method, and computer program product
US11880724B2 (en) 2020-07-22 2024-01-23 Fujitsu Limited Information processing apparatus for controlling data transferring and method of processing information for controlling data transferring
JP7451438B2 (ja) 2021-01-22 2024-03-18 株式会社東芝 通信装置、通信システム、通知方法及びプログラム
WO2022259540A1 (ja) * 2021-06-11 2022-12-15 日本電信電話株式会社 信号転送装置、信号転送方法、及びプログラム
WO2022264230A1 (ja) * 2021-06-14 2022-12-22 日本電信電話株式会社 通信制御装置、通信制御方法、及びプログラム
WO2023233708A1 (ja) * 2022-06-03 2023-12-07 株式会社インタフェース Tsn通信システム
JP7420406B2 (ja) 2022-06-03 2024-01-23 株式会社インタフェース Tsn通信システム
WO2024053113A1 (ja) * 2022-09-09 2024-03-14 日本電信電話株式会社 情報処理装置、情報管理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
US10884786B2 (en) 2021-01-05
JP6914900B2 (ja) 2021-08-04
US20200089525A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
JP6914900B2 (ja) スイッチ装置、スイッチング方法及びプログラム
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
JP3549081B2 (ja) 優先度付きタスク実行制御方法及びデータ処理装置
JP3573546B2 (ja) 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
WO2019127597A1 (zh) 一种发送报文的方法、设备和系统
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
JP2019054350A (ja) 転送装置、転送方法及びプログラム
US20090086737A1 (en) System-on-chip communication manager
JP2019165380A (ja) 転送制御装置、転送制御方法及びプログラム
JP7000088B2 (ja) 通知制御装置、通知制御方法及びプログラム
EP3296884A1 (en) Distributed processing in a network
JP7251648B2 (ja) サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
WO2019157849A1 (zh) 一种资源调度的方法、装置、设备及系统
CN112306669A (zh) 一种基于多核系统的任务处理方法及装置
US9374325B2 (en) Hash perturbation with queue management in data communication
JP2021082868A (ja) 通信装置、通信方法及びプログラム
JP7309579B2 (ja) 通信装置、通信方法及びプログラム
Behnke et al. Towards a real-time IoT: Approaches for incoming packet processing in cyber–physical systems
JP7451438B2 (ja) 通信装置、通信システム、通知方法及びプログラム
US10735286B2 (en) Recovery from a networking backend disconnect
Golchin et al. Tuned pipes: end-to-end throughput and delay guarantees for USB devices
WO2012171398A1 (zh) 实时处理系统中的共享资源访问方法和实时处理系统
JP2007249357A (ja) 情報処理装置、分散処理システム及びタスク管理方法
CN115955441A (zh) 一种基于tsn队列的管理调度方法、装置
JP3387464B2 (ja) 通信制御システムとその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210528

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210714

R151 Written notification of patent or utility model registration

Ref document number: 6914900

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151