IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィの特許一覧

特許7539757スイッチング機能を実行する方法及びスイッチング装置
<>
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図1
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図2
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図3
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図4
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図5
  • 特許-スイッチング機能を実行する方法及びスイッチング装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-16
(45)【発行日】2024-08-26
(54)【発明の名称】スイッチング機能を実行する方法及びスイッチング装置
(51)【国際特許分類】
   H04L 12/28 20060101AFI20240819BHJP
【FI】
H04L12/28 200D
H04L12/28 400
【請求項の数】 15
(21)【出願番号】P 2023559194
(86)(22)【出願日】2021-10-01
(65)【公表番号】
(43)【公表日】2023-12-21
(86)【国際出願番号】 JP2021037259
(87)【国際公開番号】W WO2022208950
(87)【国際公開日】2022-10-06
【審査請求日】2023-06-09
(31)【優先権主張番号】21305410.9
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】503163527
【氏名又は名称】ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ
【氏名又は名称原語表記】MITSUBISHI ELECTRIC R&D CENTRE EUROPE B.V.
【住所又は居所原語表記】Capronilaan 46, 1119 NS Schiphol Rijk, The Netherlands
(74)【代理人】
【識別番号】100110423
【弁理士】
【氏名又は名称】曾我 道治
(74)【代理人】
【識別番号】100111648
【弁理士】
【氏名又は名称】梶並 順
(74)【代理人】
【識別番号】100122437
【弁理士】
【氏名又は名称】大宅 一宏
(74)【代理人】
【識別番号】100147566
【弁理士】
【氏名又は名称】上田 俊一
(74)【代理人】
【識別番号】100188514
【弁理士】
【氏名又は名称】松岡 隆裕
(72)【発明者】
【氏名】ロレ、ロマン
【審査官】前田 健人
(56)【参考文献】
【文献】米国特許出願公開第2019/0044894(US,A1)
【文献】特開2020-048045(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/28
(57)【特許請求の範囲】
【請求項1】
スイッチング装置の処理回路によってソフトウェアスイッチング機能を実行する方法であって、前記スイッチング装置は、ホストスタックと、通信チャネル上でデータフレームを通信するための少なくとも2つの媒体アクセスコントローラ(MAC)ユニットとを更に含み、前記ホストスタックは、前記スイッチング装置で実行されるアプリケーションソフトウェアを含み、前記少なくとも2つのMACユニットは、前記処理回路に接続され、前記ソフトウェアスイッチング機能は、前記MACユニットのうちの1つにより受信されたデータフレームを、前記MACユニットのうちの別の1つへと及び/又は前記ホストスタックへと転送すること、及び/又は、前記ホストスタックから受信されたデータフレームを、前記MACユニットのうちの1つへと転送することを含み、前記通信チャネル上の通信は、連続する時間的サイクルに従って編成され、各時間的サイクルは、少なくとも第1の時間スライス及び第2の時間スライスを含み、データフレームを通信するための前記第1の時間スライスは、前記第2の時間スライスの間に通信されるデータフレームよりも高いタイミング制約を有し、前記処理回路は、リアルタイムオペレーティングシステム(RTOS)であって、通常動作において異なる優先度を有する複数のタスクをスケジューリングするRTOSスケジューラを含む、RTOSを実行し、前記方法は、
前記処理回路によって、各第1の時間スライスの間に、第1の動作モードを適用することであって、前記第1の動作モードにおいては、前記RTOSスケジューラが一時停止されるという点で前記RTOSの通常動作が中断されるとともに、前記処理回路が前記ソフトウェアスイッチング機能を実行する単一のタスクを実行することと、
前記処理回路によって、各前記第2の時間スライスにおいて、第2の動作モードを適用することであって、前記第2の動作モードにおいては、前記RTOSの通常動作が再開され、前記RTOSスケジューラの最高の優先度を有さないタスクによって前記ソフトウェアスイッチング機能が実行されることと、
を含む、方法。
【請求項2】
前記処理回路は、前記MACユニットから又は前記ホストスタックから受信されたデータフレームを記憶するために使用されるバッファに関連する状態レジスタを、反復的にポーリングすることによって、転送されるデータフレームの受信を検出するように構成される、請求項1に記載の方法。
【請求項3】
前記第1の動作モードにおいて、前記処理回路は、データフレーム全体が受信される前にデータフレームの転送が開始される、カットスルー方式を適用し、
前記第2の動作モードにおいて、前記処理回路は、カットスルー方式、又は、データフレーム全体が受信された後にのみデータフレームの転送が開始される、ストアアンドフォワード方式を適用する、請求項1又は2に記載の方法。
【請求項4】
前記カットスルー方式において、前記MACユニットによって受信された各データフレームは、前記処理回路のそれぞれのバッファに記憶された複数のフラグメントに分解され、前記バッファは、前記第1の動作モードについて、256バイト以下又は128バイト以下の、同じサイズを有する、請求項3に記載の方法。
【請求項5】
前記第2の動作モードのために使用される前記バッファは、512バイト以上又は1024バイト以上のサイズを有する、請求項4に記載の方法。
【請求項6】
前記MACユニットのうちの1つによって受信されたデータフレームは、前記処理回路のバッファにコピーされ、前記バッファから、前記データフレームが、前記ホストスタックによって及び/又は前記MACユニットのうちの別の1つによってアクセスされる、請求項1~5のいずれか一項に記載の方法。
【請求項7】
異なるバッファが、データフレームのそれぞれのフラグメントを記憶し、前記データフレームの標的フラグメントが、データを削除又は挿入することによって修正される場合、前記標的フラグメントは修正されて別のバッファ中へとコピーされ、他のフラグメントは他のバッファ中へとコピーされない、請求項6に記載の方法。
【請求項8】
第2の時間スライスの間に、前記ホストスタックによってタイムセンシティブなデータフレームが生成される場合、前記第1の動作モードの間に実行される前記単一のタスクは、次の第1の時間スライスの開始時に前記タイムセンシティブなデータフレームを前記MACユニットのうちの1つへと転送するように構成される、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記第2の動作モードの複数のタスクは、前記ソフトウェアスイッチング機能を実行するタスクよりも高い優先度を有する処理タスクを含み、前記処理タスクは、次の第1の時間スライスの間に送信される、前記ホストスタックのタイムセンシティブなデータフレームを生成するために、及び/又は以前の第1の時間スライスの間に前記ホストスタックへと転送されたタイムセンシティブなデータフレームからデータを抽出するために使用される、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記RTOSスケジューラは、所定の最大継続時間内の各第2の時間スライスの開始時に、前記処理タスクを実行するように構成される、請求項9に記載の方法。
【請求項11】
処理回路によって実行されるときに、前記処理回路が請求項1~10のいずれか一項に記載の方法を実行するように構成する命令を含む、コンピュータプログラム製品。
【請求項12】
処理回路によって実行されるときに、前記処理回路が請求項1~10のいずれか一項に記載の方法を実行するように構成する命令を含む、コンピュータ可読記憶媒体。
【請求項13】
少なくとも2つの媒体アクセスコントローラ(MAC)ユニットを含むスイッチング装置であって、前記少なくとも2つのMACユニットは、処理回路に接続され、前記処理回路は、請求項1~10のいずれか一項に記載の方法を実行するように構成される、スイッチング装置。
【請求項14】
前記少なくとも2つのMACユニットは、EthernetのMACユニットである、請求項13に記載のスイッチング装置。
【請求項15】
請求項13又は14に記載のスイッチング装置を複数含むローカルエリアネットワーク(LAN)であって、前記スイッチング装置の少なくともいくつかは、デイジーチェーントポロジに従ってともに接続される、ローカルエリアネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、通信システムに関し、より具体的には、スイッチング機能を実行する方法及び装置に関する。
【背景技術】
【0002】
一般的な産業用ネットワークでは、通信装置は通常、デイジーチェーントポロジを使用してバスによって接続される。典型的には、マスター装置(通常はプログラマブルロジックコントローラ(PLC))は、他の装置にデータフレームを送信し、データフレームを受信した各装置は、自らが受信したデータフレームの宛先でない場合、隣接する装置にそのデータフレームを転送する。各装置はまた、マスター装置にデータフレームを送り返すこともある。デイジーチェーントポロジにおいて、マスター装置に対して反対側の端に位置する装置によって生成されたデータフレームは、マスター装置に至るまでの全ての中間装置によって転送される。
【0003】
このデイジーチェーントポロジをサポートするために、各装置は、2つの物理ポート及び1つの内部ポートを含む少なくとも3つのポートを有している。装置の物理ポートは、デイジーチェーントポロジの上流及び下流の装置と通信するための(マスター装置がソースであると仮定する)、例えばそれぞれの媒体アクセス制御(MAC)ユニットに接続される。内部ポートは、装置のホストスタックとのインターフェイスであり、装置にアドレス指定されたデータフレームを処理し、装置がそれ自身の生成されたデータフレームを他の装置に送信することを可能にするためのものである。各装置は、任意の物理ポートにおいて受信されたデータフレームを別の物理ポートに(当該装置が当該データフレームの宛先でない場合)又は内部ポートに(上記装置が上記データフレームの宛先である場合)転送すること、及びホストスタックから内部ポートにおいて受信されたデータフレームを1つ以上の物理ポートへと転送することを可能とする、スイッチング機能を備えている。
【0004】
例えば、装置間で交換されるデータフレームは、Ethernetデータフレームであってもよい。産業用ネットワークにおいては、データフレームは、厳密な待ち時間要件で交換される必要がある。タイムセンシティブネットワーク(TSN)は、標準的なEthernetプロトコル上で決定論的なメッセージングを提供するための、IEEE802.1で定義された標準技術のセットである。タイムセンシティブなデータフレームのオンタイムの配信を提供するための鍵は、IEEE802.1Qbv規格である。より具体的には、IEEE802.1Qbv規格は、Ethernet通信チャネル上の通信を、一定の継続時間の繰り返される時間的サイクルに分離するように設計された、時間考慮型スケジューラを定義している。これらの時間的サイクル内においては、異なる優先度を有するトラフィッククラスに割り当てられることができる、異なる時間スライスを構成することができる。このような時間スライスは、仮想通信チャネルとみなすことができ、これにより、タイムクリティカルなトラフィックを、クリティカルでないバックグラウンドのトラフィックから分離することができる。
【0005】
図1は、IEEE802.1Qbv規格が依存する、かかる時間的サイクル及び時間スライスを示す時間図を概略的に表したものである。図1に示される例にでは、2つの時間的サイクルが、それぞれ「時間的サイクル#n」及び「時間的サイクル#n+1」で示されて表されている。各時間的サイクルは、それぞれ「時間スライス#1」及び「時間スライス#2」で示される2つの時間スライスを有している。また、各時間的サイクルの時間スライス#2の後、かつ次の時間的サイクルの時間スライス#1の開始の前には、ガードバンドが設けられる。例えば、時間スライス#1は、仮想ローカルエリアネットワーク(VLAN)の優先度7(IEEE802.1Q規格によって定義される)とタグ付けされたデータフレームのために予約されてもよく、時間スライス#2は、VLANの優先度0~6とタグ付けされたデータフレームのために使用されてもよい。
【0006】
それゆえ、IEEE802.1Qbv規格では、クリティカルなデータフレームを配信するために確保される、通信チャネル(すなわちデイジーチェーントポロジ中の装置対間のバスのセット)上に時間スライスが設けられている。
【0007】
しかしながら、デイジーチェーントポロジを有するネットワークの一方の端から他方の端まで、クリティカルなデータフレームが非常に迅速に配信されることを保証するために、各装置は、TSNスイッチング機能を非常に迅速に実行する必要がある。非常に短い待ち時間要件を有するネットワークにおいては、TSNスイッチング機能は、ハードウェア構成要素、典型的には特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)によって実行される。
【0008】
かかるハードウェアによって促進されるスイッチング手法は、効率的ではあるが、コストがかかり、あらゆるタイプの産業用ネットワーク装置に使用されるわけではない。実際、多くの産業用ネットワークでは、装置は、EthernetMACユニットに接続された又はかかるユニットを内蔵したマイクロコントローラユニット(MCU)上で実行され、この場合、スイッチング機能は、ハードウェアによって促進されるスイッチング手法を使用できず、ソフトウェアにより実行される必要がある。MCU上でのリアルタイムオペレーティングシステム(RTOS)の使用は、高い優先度を有するタスクについての待ち時間を或る程度短縮することができるが、非常に低い待ち時間を達成するには十分ではない。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本開示は、この状況を改善することを目的とする。特に、本開示は、ソフトウェアベースのスイッチング機能を実行する際の待ち時間を短縮するための手法を提案することによって、以上に議論された従来技術の制限のうちの少なくともいくつかを克服することを目的とする。特に、本開示は、例えばEthernetのMACユニットに接続された、又は好ましくはかかるユニットを内蔵したMCUによって実行される手法を提案することを目的とする。
【課題を解決するための手段】
【0010】
この目的のために、第1の態様によれば、本開示は、スイッチング装置の処理回路によってソフトウェアスイッチング機能を実行する方法であって、スイッチング装置は、ホストスタックと、通信チャネル上でデータフレームを通信するための少なくとも2つの媒体アクセスコントローラ(MAC)ユニットとを更に含み、ホストスタックは、前記スイッチング装置で実行されるアプリケーションソフトウェアを含み、少なくとも2つのMACユニットは、処理回路に接続され、ソフトウェアスイッチング機能は、MACユニットのうちの1つにより受信されたデータフレームを、MACユニットのうちの別の1つへと及び/又はホストスタックへと転送すること、及び任意選択で、ホストスタックから受信されたデータフレームを、MACユニットのうちの1つへと転送することを含み、通信チャネル上の通信は、連続する時間的サイクルに従って編成され、各時間的サイクルは、少なくとも第1の時間スライス及び第2の時間スライスを含み、データフレームを通信するための第1の時間スライスは、第2の時間スライスの間に通信されるデータフレームよりも高いタイミング制約を有し、処理回路は、リアルタイムオペレーティングシステム(RTOS)であって、通常動作において異なる優先度を有する複数のタスクをスケジューリングするRTOSスケジューラを含む、RTOSを実行し、方法は、
処理回路によって、各第1の時間スライスの間に、第1の動作モードを適用することであって、第1の動作モードにおいては、RTOSスケジューラが一時停止されるという点でRTOSの通常動作が中断されるとともに、処理回路がソフトウェアスイッチング機能を実行する単一のタスクを実行することと、
処理回路によって、各第2の時間スライスにおいて、第2の動作モードを適用することであって、第2の動作モードにおいては、RTOSの通常動作が再開され、RTOSスケジューラの最高の優先度を有さないタスクによってソフトウェアスイッチング機能が実行されることと、
を含む、方法に関する。
【0011】
それゆえ、本スイッチング方法は、通信チャネル上の通信が連続する時間的サイクルに従って編成され、各時間的サイクルは、少なくとも第1の時間スライス及び第2の時間スライスを含み、データフレームを通信するための第1の時間スライスは、第2の時間スライスの間に通信されるデータフレームよりも高いタイミング制約を有するという事実に依存する。このことは、典型的には、例えば以上に議論されたIEEE802.1Qbv規格を使用する場合に成り立つ。以下においては、第1の時間スライスの間に通信されるデータフレームは、タイムセンシティブな(TS)データフレームと呼ばれ、第2の時間スライスの間に通信されるデータフレームは、非TSな(NTS)データフレームと呼ばれる。
【0012】
処理回路は、複数のタスクをそれぞれの異なる優先度に従ってスケジューリングするRTOSスケジューラを、従来の態様で有する、RTOSを実行する。タスクのいくつかは、スイッチング機能に関するのに対し、他のいくつかのタスクは、例えばホストスタックの機能に関する。第2の時間スライスは、RTOS、より具体的にはそのRTOSスケジューラの通常動作が、NTSデータフレームのタイミング制約に十分となるように、NTSデータフレームを通信するために使用される。
【0013】
しかしながら、TSデータフレームを通信するために使用される第1の時間スライスの間、スイッチング機能が他のタスクによって割り込まれることを防ぐために、スイッチング機能を実行する単一のタスクを実行するため、通常動作が中断される。特に、割り込みが無効化され、第1の時間スライスの間、第1の動作モードにおいて、割り込みサービスルーチン(ISR)は実行されない。
【0014】
通信チャネル上の通信の編成のおかげで、スイッチング装置の処理回路には、第1の時間スライス及び第2の時間スライスがいつスケジューリングされるかが既知となり、それゆえ、処理回路は、第1の時間スライス及び第2の時間スライスの開始時間及び終了時間に基づいて、第1の動作モードの適用から第2の動作モードの適用、及びその逆に移行することができる。
【0015】
それゆえ、TSデータフレームについて、他のタスクによって割り込まれない単一のタスクによって実行されることを保証することによって、スイッチング機能の待ち時間は短縮される。このことは、当該タスクが、TSデータフレームのために使用される第1の時間スライスの間に動作する唯一のタスクであるためである。
【0016】
第2の動作モードにおいては、第2の時間スライスの間、スイッチング機能を実行するタスクは、最高の優先度を有さず、第1の時間スライスの間に動作を防止された高い優先度のタスクが、スイッチング機能を実行するタスクよりも優先されることが可能となる。
【0017】
特定の実施の形態において、方法は、単独で、又は任意の技術的に可能な組合せで検討される、以下の特徴のうちの1つ以上を更に含むことができる。
【0018】
特定の実施の形態においては、処理回路は、MACユニットから又はホストスタックから受信されたデータフレームを記憶するために使用されるバッファに関連する状態レジスタを、反復的にポーリングすることによって、転送されるデータフレームの受信を検出するように構成される。
【0019】
以上において議論したように、第1の動作モードにおいては、第1の時間スライスの間、割り込みが典型的には無効となる。それゆえ、転送されるデータフレームの受信が迅速に検出され、関連する処理コードが迅速に実行されることを保証するために、受信時にかかるデータフレームが記憶されるバッファの状態レジスタが、反復的に、例えば周期的に、ポーリングされる。転送されるデータフレームを検出するための待ち時間は、ポーリング周期を短縮することにより短縮される。
【0020】
特定の実施の形態においては、
第1の動作モードにおいて、処理回路は、データフレーム全体が受信される前にスイッチング機能によるデータフレームの転送が開始される、カットスルー方式を適用し、
第2の動作モードにおいて、処理回路は、カットスルー方式、又は、データフレーム全体が受信された後にのみスイッチング機能によるデータフレームの転送が開始される、ストアアンドフォワード方式を適用する。
【0021】
少なくとも第1の動作モードの間、すなわちTSデータフレームが転送される第1の時間サイクルの間、カットスルー方式を使用することによって、スイッチング機能の待ち時間を更に短縮することが可能になる。
【0022】
特定の実施の形態においては、カットスルー方式において、MACユニットによって受信された各データフレームは、処理回路のそれぞれのバッファに記憶された複数のフラグメントに分解され、バッファは、第1の動作モードについて、256バイト以下又は128バイト以下の、同じサイズを有する。
【0023】
特定の実施の形態においては、カットスルー方式において、各データフレームは、処理回路のそれぞれのバッファに記憶される複数のフラグメントに分解され、第1の動作モードのために使用されるバッファは、第2の動作モードのために使用されるバッファよりも小さいサイズを有する。
【0024】
特定の実施の形態においては、第2の動作モードのために使用されるバッファは、512バイト以上又は1024バイト以上のサイズを有する。
【0025】
特定の実施の形態においては、MACユニットのうちの1つによって受信されたデータフレームは、処理回路のバッファにコピーされ、バッファから、データフレームが、ホストスタックによって及び/又はMACユニットのうちの別の1つによってアクセスされる。
【0026】
それゆえ、処理回路の或るバッファから別のバッファにデータフレームをコピーすることは不要であり、このことにより、少なくともデータフレームが修正されるべきでない場合、必要とされるメモリの量を削減し、バッファ間のかかるコピーによってもたらされる待ち時間を回避することが可能になる。
【0027】
特定の実施の形態においては、異なるバッファが、データフレームのそれぞれのフラグメントを記憶し、データフレームの標的フラグメントが、データを削除又は挿入することによって修正される場合、標的フラグメントは修正されて別のバッファ中へとコピーされ、他のフラグメントは他のバッファ中へとコピーされない。
【0028】
それゆえ、例えば転送されるデータフレームに追加的なデータ(例えばVLAN識別子)が挿入される場合、データフレームの標的フラグメント、すなわち追加的なデータが挿入されるフラグメントのみが、或るバッファから別のバッファにコピーされ、それによってバッファ間のかかるコピーによってもたらされる待ち時間が制限される。
【0029】
特定の実施の形態においては、第2の時間スライスの間に、ホストスタックによってTSデータフレームが生成される場合、第1の動作モードの間に実行される単一のタスクは、次の第1の時間スライスの開始時にTSデータフレームをMACユニットのうちの1つへと転送するように構成される。
【0030】
特定の実施の形態においては、第2の動作モードの複数のタスクは、スイッチング機能を実行するタスクよりも高い優先度を有する処理タスクを含み、処理タスクは、次の第1の時間スライスの間に送信される、ホストスタックのTSデータフレームを生成するために、及び/又は以前の第1の時間スライスの間にホストスタックへと転送されたTSデータフレームからデータを抽出するために使用される。
【0031】
特定の実施の形態においては、RTOSスケジューラは、所定の最大継続時間内の各第2の時間スライスの開始時に、処理タスクを実行するように構成される。
【0032】
第2の態様によれば、本開示は、処理回路によって実行されるときに、処理回路が本開示の実施の形態のいずれか1つによる方法を実行するように構成する命令を含む、コンピュータプログラム製品に関する。
【0033】
第3の態様によれば、本開示は、処理回路によって実行されるときに、処理回路が本開示の実施の形態のいずれか1つによる方法を実行するように構成する命令を含む、コンピュータ可読記憶媒体に関する。
【0034】
第4の態様によれば、本開示は、少なくとも2つの媒体アクセスコントローラ(MAC)ユニットを含むスイッチング装置であって、少なくとも2つのMACユニットは、処理回路に接続され、処理回路は、本開示の実施の形態のいずれか1つによる方法を実行するように構成される、スイッチング装置に関する。
【0035】
特定の実施の形態においては、スイッチング装置は、単独で又は任意の技術的に可能な組合せで検討される、以下の特徴のうちの1つ以上を更に含んでもよい。
【0036】
特定の実施の形態においては、少なくとも2つのMACユニットは、EthernetのMACユニットである。いくつかの場合においては、EthernetのMACユニットは、IEEE802.1Qbv規格に準拠するものである。
【0037】
第5の態様によれば、本開示は、本開示の実施の形態のいずれか1つによる複数のスイッチング装置を含むローカルエリアネットワーク(LAN)であって、スイッチング装置の少なくともいくつかは、デイジーチェーントポロジに従ってともに接続される、ローカルエリアネットワークに関する。
【0038】
本発明は、以下の説明を読むことでより良く理解される。以下の説明は、決して限定的なものではなく一例として与えられ、図に関して作成されている。
【図面の簡単な説明】
【0039】
図1】既に説明された、IEEE802.1Qbv規格による時間的サイクル及び時間スライスの一例を表す図である。
図2】スイッチング装置の概略的な表現である。
図3】スイッチング方法の例示的な実施形態の主要なステップを表す図である。
図4】スイッチング方法を使用する場合の、データフレームのスイッチングの一例を示す時間図である。
図5】第1の例によるスイッチング機能を実行するためのソフトウェアアーキテクチャの概略的な表現である。
図6】第2の例によるスイッチング機能を実行するためのソフトウェアアーキテクチャの概略的な表現である。
【発明を実施するための形態】
【0040】
これらの図において、同一の参照符号は、同一又は類似の要素を示す。図示した要素は、明確化を目的としており、特段の指定がない限り、一律の縮尺でない。
【0041】
図2は、スイッチング装置20の一例を概略的に表す。図2に示すように、スイッチング装置20は、2つのMACユニット22に接続された処理回路21を含む。
【0042】
各MACユニット22は、少なくとも1つの有線通信プロトコルに従って、通信チャネル上でデータフレームを送信及び受信するように適合されている。より具体的には、MACユニット22は、それぞれの通信リンク、例えば異なるバスに接続されており、これらの通信リンクは、まとめて通信チャネルと呼ばれる。MACユニット22は、互いに分離されており、それにより、或るMACユニット22から別のMACユニット22へとデータフレームを転送することは、必然的に処理回路21を介して実行されることになる。
【0043】
以上で述べたように、MACユニット22は、任意の有線通信プロトコルを適用してもよい。好ましい実施形態において、MACユニット22は、10BASE-T/100BASE-TX IEEE802.3規格等のIEEE規格に準拠した、EthernetのMACユニットである。EthernetのMACユニット22は、VLANタグ検出のためのIEEE802.1Q規格、及び/又は精密ネットワークのクロック同期又はギガビット速度のためのIEEE1588-2008規格をサポートしてもよい。好ましい実施形態において、EthernetのMACユニット22は、IEEE802.1Qbv規格等のIEEE TSN拡張をサポートしてもよい。
【0044】
処理回路21は、図2においてスイッチ23により表されるスイッチング機能を実行する。処理回路21は、1つ以上のプロセッサと、スイッチ23を動作させるために実行されるプログラムコード命令のセットの形をとるコンピュータプログラム製品(すなわちソフトウェア)が記憶される記憶手段(磁気ハードディスク、固体ディスク、光ディスク、電子メモリ等)とを含む。例えば、処理回路21は、マイクロプロセッサユニット(MPU)に、又はマイクロコントローラユニット(MCU)に組み込まれてもよい。かかる場合においては、MACユニット22は、MPU又はMCUとは別個のものであってもよいが、MACユニットとMPU又はMCUとの間でデータフレームを交換するための待ち時間を短縮するために、好ましくはMPU又はMCUに組み込まれていることに留意すべきである。
【0045】
スイッチング装置20はまた、ホストスタック24を含む。このホストスタックは、スイッチング装置20によって実行される高レベルソフトウェアに対応し、任意のプロトコル層(例えばIP、TCP、UDP等)、スイッチング装置20によって実行される任意のアプリケーションに関する任意のソフトウェア等を含んでもよい。ホストスタック24は、処理回路21によって(それゆえスイッチング機能及びホストスタック24によって実行される機能の両方を実行する)、及び/又は例えば処理回路21に接続されたアプリケーションプロセッサ等によって実行されてもよいことに留意すべきである。
【0046】
以下においては、非限定的な態様で、図2によって示されるように、ホストスタック24が処理回路21によって少なくとも部分的に実行されると仮定する。
【0047】
図2で示される例においては、スイッチ23は、3つの異なるポート、すなわち、各MACユニット22のための2つの物理ポート25と、ホストスタック24のための1つのホストポート26とを有する。それゆえ、スイッチング機能は、これら3つのポートのうちの任意の1つのポートから受信されたデータフレームを、これら3つのポートのうちの1つ以上の他のポートへと転送することを目的とする。本開示は、N個のMACユニット22及びM個のホストスタック24に関連する、任意の数N≧2個の物理ポート及び任意の数M≧1個のホストポートを用いて適用されることに留意すべきである。
【0048】
処理回路21は、リアルタイムオペレーティングシステム(RTOS)を実行する。RTOSは、データが受信されたときにデータのリアルタイム処理の機能を果たすことを意図されたオペレーティングシステムである。RTOSの例は、数ある中でも、FreeRTOS(商標)、RTEMS(商標)である。RTOSの特徴は、タスクをスケジューリング及び完了する際の一貫性のレベルである。本明細書では、タスクとは、RTOS上で実行されるアプリケーションによって、又は割り込みサービスルーチン(ISR)等によって呼び出される、オペレーティングシステムの動作であってもよい。
【0049】
ソフトRTOSは、例えば性能劣化に導く等、デッドラインを満たさないことが望ましくない影響を及ぼされるが許容される、オペレーティングシステムである。換言すれば、ソフトRTOSは、平均的にはデッドラインを満たす。例えば、Linux(商標) OSカーネルは、FIFO(ファーストインファーストアウト)又はラウンドロビンのプロセススケジューリングを実行するので、このカテゴリーに属するものとして分類される。
【0050】
ファームRTOSにおいては、稀に起こるデッドラインのミスは、それらが適切に間隔を空けられる限りは、許容される。ファームRTOSは、例えば、ハードRTOSに近づくように改善されたソフトRTOSである。ほとんどの場合、ファームRTOSによって保証される厳密なデッドラインはない。PREEMPT_RTパッチを用いるLinuxカーネル、又はXenomaiは、このカテゴリーに含まれる。
【0051】
ハードRTOSは、デッドラインを満たさないことが致命的な影響を及ぼす、オペレーティングシステムである。FreeRTOS又はRTEMS等のRTOSは、このカテゴリーに含まれる。いくつかの場合においては、これらは、Linux等のOSとは異なり、比較的少数のサービスを提供し、かかる少数のサービスは、いくつかの場合においては、タスク/プロセスのスケジューリング及び割り込みに関する。
【0052】
本開示においては、RTOSは、ソフトRTOSであってもよいし、ファームRTOSであってもよいし、又はハードRTOSであってもよい。しかしながら、RTOSは、好ましくはハードRTOSである。なぜなら、低減された待ち時間及びジッターを提供するからである。
【0053】
従来の態様においては、RTOSは、タスクをそれぞれの優先度に従ってスケジューリングするRTOSスケジューラを含む。
【0054】
通信チャネル上での通信は、連続する時間的サイクルに従って編成され、各時間的サイクルは、少なくとも第1の時間スライス及び第2の時間スライスを含む。時間的サイクルはまた、追加的な時間スライスを含んでもよいことに留意すべきである。第1の時間スライスは、TSデータフレームを通信するために使用され、一方、第2の時間スライスは、NTSデータフレームを通信するために使用される。例えば、このことは、IEEE802.1Qbv規格を使用することによって達成される。かかる場合においては、IEEE802.1Qbv規格は、MACユニット22によって実行されてもよく、及び/又は、例えばMACユニット22がIEEE802.1Qbv規格をサポートしない場合には、処理回路21によって実行されてもよい。
【0055】
図3は、スイッチング装置20の処理回路21によって実行される、例示的な実施形態によるスイッチング方法30の主要なステップを概略的に表す。
【0056】
図3によって示されるように、スイッチング方法30は、時間スライスを検出するステップS30を含む。検出された時間スライスが第1の時間スライスである場合(図3の参照符号S30a)、スイッチング方法30は、処理回路21によって、第1の時間スライスの先験的に既知である継続時間の間に第1の動作モードを適用する、ステップS31を含む。一方、検出された時間スライスが第2の時間スライスである場合(図3の参照符号S30b)、スイッチング方法30は、処理回路21によって、第2の時間スライスの先験的に既知である継続時間の間に第2の動作モードを適用する、ステップS32を含む。
【0057】
以下において、第1の動作モード及び第1の時間スライスを、それぞれTS(タイムセンシティブ)動作モード及びTS時間スライスと呼ぶ。第2の動作モード及び第2の時間スライスを、それぞれNTS(非TS)動作モード及びNTS時間スライスと呼ぶ。図3は、2つの異なる動作モード(それぞれの時間スライス)のみがあることを仮定しているが、本開示は、2つよりも多い異なる動作モード(それぞれの時間スライス)を有して適用されてもよいことに留意すべきである。
【0058】
TS動作モードにおいては、RTOSスケジューラが中断されているという点で、RTOSの通常動作が中断されている。処理回路21は、TS時間スライスの全継続時間にわたって、スイッチング機能を実行する単一のタスクを実行する。実際に、スイッチングを実行する単一のタスクが他のタスクによって割り込まれないように又はプリエンプションされないように、割り込みが無効化されてもよい。TS時間スライスの終了時に、単一のタスクは、NTS時間スライスが開始されようとしていることを検出してもよく、単一のタスクが、RTOSスケジューラをトリガしてもよい。
【0059】
NTS動作モードにおいては、RTOSの通常動作が再開され、RTOSスケジューラは、NTS時間スライスの全継続時間の間、複数のタスクをそれぞれの優先度に従ってスケジューリングする。RTOSスケジューラによってスケジューリングされるタスクの1つは、スイッチング機能を実行するが、このタスクは、NTS時間スライスの間に他のタスクが実行されることを保証するために、最高の優先度を有さない。例えば、クリティカルなホストスタック24の機能を実行する、より高い優先度のタスクが、スイッチング機能を実行するタスクよりも優先されてもよく、上記スイッチング機能を実行するタスクが、クリティカルではないホストスタック24の機能を実行する、より低い優先度のタスクよりも優先されてもよい。例えば、NTS動作モードの複数のタスクは、スイッチング機能を実行するタスクよりも高い優先度を有する処理タスクを含んでもよく、上記処理タスクは、次のTS時間スライスの間に送信される、ホストスタック24のTSデータフレームを生成するために、及び/又はTSである第1の時間スライスの間にホストスタック24へと転送されたTSデータフレームからデータを抽出するために、使用される。
【0060】
TS動作モードにおいて割り込みが無効にされる場合、転送されるTSデータフレームの受信の検出は、処理回路21によって、MACユニット22から又はホストスタック24から受信されたTSデータフレームを記憶するために使用されるバッファに関連する状態レジスタを反復的にポーリングすることによって実行されてもよい。
【0061】
実際に、MACユニット22によって受信されたデータフレームは、例えばダイレクトメモリアクセス(DMA)コントローラによって、バッファに、すなわち処理回路21のメモリ空間に、コピーされる。受信されたデータフレームの全て又は一部がバッファにコピーされると、DMAコントローラは、対応するバッファがデータフレームに関するデータを記憶したことを示すために、状態レジスタを更新する。状態レジスタは、MACユニット22に関連するキューに対応してもよく、キューは、データフレームに関するデータを記憶するバッファへのポインタを含む、リングバッファ記述子として実行されてもよい。それゆえ、状態レジスタをポーリングすることは、例えば、データが処理回路21のバッファにコピーされたことを検出するために、リングバッファ記述子を読み取ることに対応する。
【0062】
同様に、ホストスタック24によって生成されたデータフレームは、バッファにコピーされてもよく、処理回路21は、ホストスタック24によって生成されたTSデータフレームがMACユニット22のうちの1つへと転送される否かを検出するために、対応する状態レジスタをポーリングしてもよい。しかしながら、TSデータフレームの生成を含む、ホストによるデータフレームの生成は、NTS時間スライスの間に、ホストスタック24によって生成され、TS時間スライスの間に送信されるTSデータフレームが、上記TS時間スライスの開始時に利用可能となるように実行されることを強調しておく。好ましい実施形態においては、TS動作モードの間に実行される単一のタスクは、次いで、TS時間スライスの開始時に、MACユニット22のうちの1つへと上記TSデータフレームを転送するように構成されている。例えば、このことは、TS時間スライスの開始時に、ホストスタック24によって生成されたTSデータフレームがコピーされるリングバッファの状態レジスタをポーリングすることによって、行われてもよい。以上で説明したように、これらの状態レジスタは、例えば、処理回路21によって読み取られるリングバッファ記述子に対応する。
【0063】
一般的には、転送されるデータフレームの受信を迅速に検出するためには、状態レジスタは頻繁にポーリングされてもよい。ポーリングが周期的に実行される場合、ポーリング周期が短いほど、転送されるデータフレームの受信の検出が迅速になる。
【0064】
TSデータフレームについての待ち時間を更に短縮するために、TS動作モードにおいて、処理回路21は、いくつかの実施形態において、カットスルー方式を適用してもよい。かかるカットスルー方式においては、スイッチング機能によるデータフレームの処理は、データフレーム全体が受信される前に開始される。典型的には、カットスルー方式においては、小さなバッファが使用され、MACユニット22によって受信されたデータフレームは、処理回路21のそれぞれのバッファに記憶された複数のフラグメントに分解されることとなる。それゆえ、データフレームのフラグメントが受信されるとすぐに、他のフラグメントが受信されてバッファにコピーされる前に、当該フラグメントはバッファにコピーされ、処理回路21によって処理される。次いで、データフレームの宛先のアドレスを含むフラグメントが処理されるとすぐに、転送が開始される。それゆえ、カットスルー方式は、フレームチェックシーケンス(FCS)が一般的にデータフレームの最後に現れるため、受信されたデータフレームの完全性をチェックすることが可能ではないことと引き換えに、待ち時間を短縮することが可能となる。
【0065】
かかるカットスルー方式は、データフレームフラグメントを記憶するために小さなバッファを使用することを必要とする。従来のシステムにおいては、小さなバッファを使用することは、データフレームを受信するために生成される割り込みの数を増加させる。しかしながら、TS動作モードにおいては、RTOSの動作に影響を与えることなく小さなバッファが使用されるように、割り込みが無効化される。
【0066】
好ましくは、TS動作モードにおいては、使用されるバッファは小さい。例えば、上記バッファは、TS動作モードについて、256バイト以下又は128バイト以下の、同じサイズを有する。
【0067】
NTS動作モードにおいては、カットスルー方式か又はストアアンドフォワード方式のいずれかを使用することが可能であるように、タイミング制約がTS動作モードよりも低い。ストアアンドフォワード方式においては、データフレームは、1つ以上のバッファに完全にコピーされた後にのみ処理及び転送され、それによってカットスルー方式に対する待ち時間を増大させる。しかしながら、ストアアンドフォワード方式では、データフレームの完全性は、データフレームを転送する前にチェックされることとなり、それによって、破損したデータフレームを転送することを回避することが可能となる。
【0068】
好ましくは、NTS動作モードは、ストアアンドフォワード方式を使用する。使用される方式(カットスルー又はストアアンドフォワード)にかかわらず、NTS動作モードは、好ましくは、TS動作モードにおいて使用されるバッファよりも大きなサイズを有するバッファを使用する。例えば、NTS動作モードのために使用されるバッファは、512バイト以上又は1024バイト以上のサイズを有する。
【0069】
表1に、TS及びNTS時間スライスの間に実行される、タスク及びそれらの関連する優先度の例を提供する。
【表1】
【0070】
表1に示される例においては、TS時間スライスの間に実行される単一のタスク#0が、DMA管理も実行し、その一方、DMA管理は、NTS時間スライスの間に、最高の優先度を有する別のタスクの間に実行される。DMA管理は、処理回路21のバッファからMACユニット22の内部メモリに、及びその逆に、データをコピーするように、DMAコントローラに指示することを含む。この例はまた、TS時間スライス(単一のタスク#0)の間とNTS時間スライス(タスク#2)の間とでは、スイッチング機能を実行するタスクが典型的には異なることを示している。
【0071】
図4は、表1によって示されるタスク及び優先度を使用する場合の、データフレームのスイッチングの一例を示す時間図を表す。この例においては、いくつかのキューが概略的に表されている:
- Host-TS-TxQは、ホストスタック24によって生成及び送信されるTSデータフレームのためのホストポート26のキューに対応する。
- Host-TS-RxQは、ホストスタック24のために受信されたTSデータフレームのためのホストポート26のキューに対応する。
- MAC-NTS-TxQは、MACユニット22によって送信されるべきNTSデータフレームのための物理ポート25のキューに対応する。
- Host-NTS-RxQは、ホストスタック24のために受信されたNTSデータフレームのためのホストポート26のキューに対応する。
【0072】
以上で議論したように、これらのキューは、好ましくは、TS/NTSデータフレームに関するデータを記憶するバッファへのポインタを含む、リングバッファ記述子として実行される。
【0073】
図4に示すように、単一のタスク#0は、TS時間スライスの間に動作している唯一のタスクであり、スイッチング装置20は、上記TS時間スライスの間に、TS-Rx1、TS-Rx2及びTS-Rx3によって示される3つの異なるTSデータフレームを連続的に受信する。この例においては、単一のタスク#0は、Host-TS-TxQキュー中のTSデータフレームを、MACユニット22の1つへと転送することによって開始される。この例においては、Host-TS-TxQキューの中には、TS-Tx1によって示される1つのTSデータフレームのみがある。次いで、単一のタスク#0は、MACユニット22から受信されたTSデータフレームを、MACユニット22へと、及び/又はホストスタック24へと、転送する。この例においては、TSデータフレームTS-Rx1及びTS-Rx3は、それぞれTSデータフレームTS-Tx2及びTS-Tx3として、MACユニット22によって通信チャネル上で再送信される。図4に示すように、TSデータフレームTS-Rx1及びTS-Rx3はいずれも、TS動作モードにおいて使用されるカットスルー方式により、完全に受信される前に再送信される。TSデータフレームTS-Rx2は、ホストスタック24のためのものであり、Host-TS-RxQキューに転送される。TS時間スライスの継続時間は、全てのTSデータフレーム(すなわち、Host-TS-TxQ中のもの、及びMACユニット22によって受信され別のMACユニット22へと転送されるもの)がTS時間スライスの間に送信されることを保証するように故意に構成されてもよいことに留意すべきである。
【0074】
NTS時間スライスの間、タスク#1~#4は次いで、それぞれの優先度に従って実行される。NTS時間スライスは、タスク#1がMAC-NTS-TxQキュー中のNTSデータフレームをMACユニット22のうちの1つへと転送することから始まる。この例においては、MAC-NTS-TxQキューの中には、NTS-Tx1によって示される1つのNTSデータフレームのみがある。
【0075】
図4に示すように、タスク#2は、NTS時間スライスの開始時に実行される。タスク#2は、ホストスタック24のTSデータフレームを生成すること、及びホストスタック24のために受信されたTSデータフレームからデータを抽出することを担当する、以上に議論された処理タスクに対応する。基本的に、TSデータフレームを生成することは、TSデータフレームを構築し、Host-TS-TxQキューにポストすることに対応する。ホストスタック24のために受信されたTSデータフレームからデータを抽出することは、Host-TS-RxQキュー中のデータフレームからデータを抽出することに対応する。好ましくは、タスク#2は、スイッチング機能を実行するタスク#3を含む、より低い優先度を有する他のタスクを実行するための時間を確実に残すために、所定の最大継続時間(NTS時間スライスの継続時間よりも短い)の間に、NTS時間スライスの開始時に実行される。図4に示すように、スイッチング装置20は、上記NTS時間スライスの間に、タスク#1によって処理回路21のバッファにコピーされた、NTS-Rx1、NTS-Rx2、NTS-Rx3及びNTS-Rx4によって示される4つの異なるNTSデータフレームを、連続的に受信する。この例においては、NTSデータフレームNTS-Rx1は、タスク#3(及びタスク#1)により、NTS-Tx2として再送信される。タスク#3は、NTSデータフレームNTS-Rx2がホストスタック24のためのものであることを検出し、タスク#4による更なる処理のためにHost-NTS-RxQキューにポストする。NTSデータフレームNTS-Rx3は、タスク#3(及びタスク#1)により、NTS-Tx3として再送信される。NTSデータフレームNTS-Rx4もまた、タスク#3によって再送信されるべきであるが、NTS時間スライス中に十分な時間が残されていない。NTSデータフレームNTS-Rx4は、この例においては、次のNTS時間スライスの間の送信のために、MAC-NTS-TxQキューにポストされる。
【0076】
また、タスク#4は、例えば、ホストスタック24によるNTSデータフレームの生成、フレームNTS-Rx2等のホストスタック24のために受信されたNTSデータフレームからのデータの抽出、及びホストスタック24によって達成される、より高レベルの機能を含む、クリティカルでないホストスタック機能を実行するために、実行されてもよい。
【0077】
図5は、処理回路21によって実行される、スイッチング機能を実行するスイッチ23のためのとるソフトウェアアーキテクチャの一例を、概略的に表す。図5に示すように、ソフトウェアアーキテクチャは、この例においては、
- データフレーム受信部231、
- データフレーム分類部232、
- データフレーム転送部233、
- データフレーム送信部234
を含む。
【0078】
データフレーム受信部231は、MACユニット22によって受信されたデータフレームのためのキューを処理する(主にDMA制御)。それゆえ、データフレーム受信部231は、MACユニット22の内部メモリから処理回路21のキューにデータをコピーするように、DMAコントローラに指示する。これらのキューは、MACユニット22によって受信されたデータフレームに関するデータを記憶するバッファへのポインタを含む、リングバッファ記述子として実行されてもよい。これらのバッファは、データフレーム受信部231によって割り当てられてもよい。
【0079】
図5に示す例においては、MACユニット22は、IEEE802.1Qbv規格をサポートすると仮定され、TSデータフレーム及びNTSデータフレームは、各MACユニット22について、それぞれMAC-TS-RxQ及びMAC-NTS-RxQによって示される、異なるキューに送信される。
【0080】
以上で議論したように、TS動作モード又はNTS動作モードのいずれが使用されるかに依存して、データフレーム受信部231は、キューを(待ち時間を短縮するために)ポーリングするか又はISRに入れることによって、データフレームがMACユニット22の1つによって受信されたことを検出してもよい。データフレーム受信部231は、受信されたデータフレームを、データフレーム分類部232にディスパッチする。カットスルー方式が使用されるか否かに依存して、データフレームのディスパッチは、データフレームの最初又は最後のフラグメントの受信時に開始されてもよい。
【0081】
データフレーム受信部231はまた、1つ以上のMACユニット22によって送信される、ホストスタック24によって生成されたデータフレームを含む、ホストポート26のキューを、ホストスタック24を用いて処理する。この例においては、Host-TxQと示される1つのキューのみがある。もちろん、2つ以上のキュー、例えば、TSデータフレームのための1つのキュー及びNTSデータフレームのための1つのキュー、又は種々のサービス品質(QoS)のための種々のキュー、若しくは、より一般的には、種々のトラフィッククラス(TC)のための種々のキュー等を有することも可能である。
【0082】
データフレーム分類部232は、各受信されたデータのTCを決定するためにデータフレームを検査し、考慮された異なるTCにそれぞれ関連する異なる内部キューにそれらをポストする。図5に示す例においては、考慮されるTCは、それぞれTSデータフレーム及びNTSデータフレームであり、キューは、それぞれInt-TS-TxQ及びInt-NTS-TxQによって示されている。MACユニット22は既に、受信されたデータフレームをTSデータフレームとNTSデータフレームとに分類しているので、これらは、Int-TS-TxQキュー及びInt-NTS-TxQキューのうちの、それらの対応するキューに直接にディスパッチされる。この例においては、データフレーム分類部232は、主にHost-TxQキューにおいて受信されたデータフレームを分類し、TS及びNTSとして分類されたデータフレームを、それぞれInt-TS-TxQキュー及びInt-NTS-TxQキューへと転送する。
【0083】
データフレーム転送部233は、例えば所定のテーブルに基づいて、転送ルールを適用する。基本的に、データフレーム転送部233は、受信されたデータフレームが、1つ以上のMACユニット22へと転送されるか、ホストポート26へと、すなわちホストスタック24へと転送されるかを決定する。ホストスタック24のためのデータフレームは、この例においては、Host-TS-RxQ及びHost-NTS-RxQによってそれぞれ示される2つの異なるキューにポストされる。MACユニット22によって再送信されるべきデータフレームは、データフレーム送信部234にディスパッチされる。
【0084】
データフレーム転送部233はまた、いくつかの場合においては、Int-TS-TxQ及びInt-NTS-TxQキュー中のデータフレームを修正してもよいことに留意すべきである。例えば、データフレーム転送部233は、MACユニット22によって送信されるデータフレームの中に、フレームヘッダ中の追加的なデータ、例えばVLAN識別子を挿入してもよいし、又はVLAN識別子を別のものに置き換えるなどとしてもよい。
【0085】
データフレーム送信部234は、MACユニット22によって送信されるデータフレームのためのキューを処理する(主にDMA制御)。それゆえ、データフレーム送信部234は、処理回路21のキュー中のデータをMACユニット22の内部メモリにコピーするように、DMAコントローラに指示する。これらのキューは、MACユニット22によって送信されるべきデータフレームに関するデータを記憶するバッファへのポインタを含む、リングバッファ記述子として実行されてもよい。データフレーム送信部234は、例えばデータフレーム受信部231によって割り当てられたバッファを解放するため、MACユニット22によるデータフレームの適切な送信をチェックするために、キューを検査してもよい。
【0086】
図5に示す例においては、MACユニット22は、IEEE802.1Qbv規格をサポートすると仮定され、TSデータフレーム及びNTSデータフレームは、各MACユニット22について、それぞれMAC-TS-TxQ及びMAC-NTS-TxQによって示される異なるキューにポストされ、そこからDMAコントローラによってMACユニット22に転送される。
【0087】
図6は、処理回路21によって実行される、スイッチング機能を実行するスイッチ23のための可能なソフトウェアアーキテクチャの別の非限定的な例を概略的に表している。
【0088】
図6に示すように、このソフトウェアアーキテクチャもまた、データフレーム受信部231、データフレーム分類部232、データフレーム転送部233及びデータフレーム送信部234を含む。図5の例と比較して、主な違いは、MACユニット22がIEEE802.1Qbv規格をサポートしていないことであり、それゆえ当該規格は処理回路21によって実行される。MACユニット22は、それぞれ、受信されたデータフレーム(TS及びNTSの両方のデータフレームを含む)のための1つのキューMAC-RxQ、及び送信されるデータフレームのための1つのキューMAC-TxQを含む。
【0089】
それゆえ、図6に示す例においては、データフレーム分類部232は、ホストスタック24から受信されたデータフレーム、及びMACユニット22から受信されたデータフレームを分類する。例えば、受信されたデータフレームが、VLAN優先度を含んでいる場合、VLAN優先度7を有するデータフレームを、Int-TS-TxQキューにポストし、VLAN優先度0~6を有するデータフレームを、Int-NTS-TxQキューにポストすることが可能である。
【0090】
次に、データフレーム送信部234は、好ましくは、IEEE802.1Qbv規格を実行するフレームスケジューラを含む。それゆえ、フレームスケジューラは、各時間的サイクルのTS時間スライス及びNTS時間スライスに従って、TSデータフレーム及びNTSデータフレームを、MACユニット22のMAC-TxQキューにポストする。この場合、MACユニット22は、時間ベースのスケジューリングをサポートし、すなわち、MACユニット22は、例えばネットワーククロック(例えばIEEE1588-2008)に基づく所与の時間において、データフレームを送信することが可能である。
【0091】
もちろん、図5及び図6に示した例は非限定的なものであり、他の例も可能である。例えば、データフレーム分類部232は、データフレームを、TS及びNTSトラフィッククラスに直接対応しないTCに分類してもよい。例えば、受信されたデータフレームを、それぞれのQoSに従って(この場合には、異なるQoSに関連する異なるキューにディスパッチされる)、それぞれのVLAN優先度に従って(この場合には、異なるVLAN優先度に関連する異なるキューにディスパッチされる)等で分類してもよい。その場合には、データフレーム送信部234及び/又はデータフレーム転送部233は、MACユニット22による送信の前に、考慮される異なるTCとTS及びNTSトラフィッククラスとの間のマッピングを実行してもよい(例えば、VLAN優先度7を有するデータフレームはTSデータフレームとして送信され、VLAN優先度0~6を有するデータフレームはNTSデータフレームとして送信される、等)。
【0092】
好ましい実施形態においては、MACユニット22によって受信されたデータフレームは、処理回路21のバッファにコピーされ、そこから、このデータフレームは、ホストスタック24によって及び/又はMACユニット22のうちの別のものによって(DMAコントローラを介して)アクセスされてもよい。それゆえ、かかる実施形態においては、処理回路21の1つのバッファから別のバッファにデータフレームをコピーすることは、可能な限り防止される。
【0093】
図5に示される例を考慮するならば、このことは、MACユニット22によって受信されたデータフレームが修正なしで別のMACユニット22へと転送される場合、対応するキューがこのデータフレームを含むバッファへの(又はデータフレームがフラグメント化されている場合はこのデータフレームを含む複数のバッファへの)ポインタを含むことを意味している。例えば、データフレームがTSデータフレームである場合、このことは、MAC-TS-RxQ、Int-TS-TxQ及びMAC-TS-TxQキューのポインタが、同じ1つ以上のバッファを指すことを意味している。このことは、必要とされるメモリの量及び処理CPUパワーを削減することを可能とし、それによって、少なくともデータフレームが変更される必要がない場合には、バッファ間のかかるコピーによってもたらされる待ち時間を回避する。同様に、ホストスタック24のためにMACユニット22によって受信されたTSデータフレームについては、MAC-TS-RxQ、Int-TS-TxQ及びHost-TS-RxQキューのポインタは、同じ1つ以上のバッファを指す。
【0094】
それゆえ、同じバッファが、異なるプロセスによって使用されてもよく、所与のバッファは、それを使用する最後のプロセスが終了したときにのみ解放される。例えば、データフレームが複数のMACユニット22に転送される場合、全てのMACユニット22がデータフレームの送信を完了したときにのみ、対応するバッファが解放される。かかる機能ができることは、各バッファに参照カウンタを関連付けることである。このカウンタは、或るプロセスがそこで参照を得る(すなわちバッファを使用する)たびにインクリメントされる必要がある。このカウンタは、或るプロセスがそこでバッファへの参照を失う(すなわち、バッファを使用する必要がなくなる)たびにデクリメントされる。参照カウンタが0に到達すると、関連するバッファは効果的に解放される。
【0095】
データフレームのサイズが、例えば、上記データフレームにデータを挿入することによって、又は上記データフレームからデータを削除することによって、修正される必要がある場合、上記データフレームは、好ましくは、それぞれのバッファに記憶される複数のフラグメントへとフラグメント化される。それゆえ、データを追加又は削除することによって修正される必要がある1つ以上のフラグメントは、標的フラグメントと呼ばれ、処理回路21の他のバッファにコピーされる唯一のフラグメントである。それゆえ、データフレームは、或るバッファから別のバッファに全体がコピーされるのではなく、その標的フラグメントのみがコピーされる。それゆえ、修正されていないフラグメントを含むバッファへのポインタは修正されず、その一方で、標的フラグメントを含むバッファへのポインタは、修正された標的フラグメントがコピーされたバッファを指すように修正される。それゆえ、バッファ間のコピーは、必要な場合、データフレームの標的フラグメントを含むバッファに限定され、それによって、バッファ間のかかるコピーによってもたらされる待ち時間を短縮する。
【0096】
スイッチング装置20は、例えば産業用LAN等のローカルエリアネットワーク(LAN)で使用されてもよい。かかるLANは、複数のかかるスイッチング装置20を含んでもよく、スイッチング装置20のうちの少なくともいくつかは、デイジーチェーントポロジに従ってともに接続されている。しかしながら、スイッチング装置20はまた、他のネットワークトポロジに従ってともに接続されてもよいことを、強調しておく。
図1
図2
図3
図4
図5
図6