(通信システムおよび通信サイクルの概要)
図1に本実施形態に係る通信システム1000の一例を図示する。通信システム1000には、通信端末1~N+1(Nは1以上の自然数)と、通信端末1~N+1間で送受信される通信パケットを中継する中継器C100、中継器C200および中継器C300が含まれる。図1では、中継器が3台開示されているが1台以上であれば任意の数の中継器が配置されてよい。なお、通信パケットは有線または無線で伝送されることが可能である。
図2に通信システム1000において送受信される通信パケットの送受信サイクルの一例を図示する。各通信サイクルは、通信パケットが送受信されるべき優先度に基づいて通信期間が区分されている。すなわち、通信システム1000において送受信される通信パケットには、通信パケットが送受信されるべき優先度を示す優先度情報がヘッダー等の情報として含まれ、優先度情報に基づいて送受信サイクルが構成される。図2の通信システム1000では、VLANプライオリティ番号(PCP(Priority Code Point))で優先度情報を定めた例を示している。
優先度情報の一例として、VLANプライオリティ番号としてプライオリティ0~7が設定され、プライオリティ7が最も優先度が高く、番号の降順に優先度が低くなり、プライオリティ0が最も優先度が低い構成を示す。各通信サイクルの先頭には、優先度情報としてプライオリティ7を有する通信パケットだけが送受信される専用の通信時間帯t1およびt3が設けられる。すなわち、通信サイクルNの先頭には専用の通信時間帯t1が設けられ、通信サイクルN+1の先頭には専用の通信時間帯t3が設けられる。なお、通信時間帯t1およびt3を高優先度通信専用時間帯と称する場合がある。
また、各通信サイクルには、優先度情報としてプライオリティ6~0を有する通信パケットだけが送受信される専用の通信時間帯t2およびt4が設けられる。通信サイクルNには専用の通信時間帯t2が設けられ、通信サイクルN+1には専用の通信時間帯t4が設けられる。図2においては、通信時間帯t2およびt4は1区分として示されているが、プライオリティ6~0のそれぞれに対応する時間帯がさらに細かく区分されて設けられていてもよい。さらに、複数のプライオリティをまとめて専用の時間帯が設けられていてもよい。例えば、プライオリティ6~4の通常の優先度に対応する専用の時間帯と、プライオリティ3~0の低優先度に対応する専用の時間帯とを設ける構成とすることも可能である。
本実施形態に係る通信システム1000によれば、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にすることが可能になる。以下に詳細を説明する。
(実施形態に係る中継器の構成例)
図3は、実施形態に係るスイッチングHUBやルータ、ゲートウェイ等の中継器C100の構成イメージをブロック図で示したものである。なお、中継器C200および中継器C300も中継器C100と同一の構成を有する。
中継器C100は入力ポート部C111、入力バッファ部C120、スイッチ処理部C130、出力バッファ部C140、タイマー部C150および出力ポート部C112を含んで構成される。なお、ネットワークの使用状況や中継器の処理の状況により、中継器C100では即座にスイッチ処理やネットワークへの通信パケットの出力ができないこともあるため、中継器C100内に入出力用にバッファを持つ構成としている。さらに、出力バッファ部C140については、1つの出力ポート部C112に対して複数のバッファを持ち、バッファからの出力順を調整することで、通信パケットの優先制御を行う構成としている。なお、本実施形態に係るスイッチ処理部C130および出力バッファ部C140は、高優先度通信専用時間内に送信できなくなった通信パケットがある場合には、通信パケットの優先度を一段下げることで、通信遅延を最小限にする機能を有する。詳細については後述する。
入力ポート部C111には前段の通信端末や中継器等の電子機器から送信される通信パケットが随時入力される。
入力バッファ部C120には、入力ポート部C111に入力された通信パケットが中継器C100の後段の処理が実行されるまでバッファリングされる。
スイッチ処理部C130は、入力バッファ部C120にバッファリングされた通信パケットの宛先アドレスを抽出し、当該宛先アドレスを有する端末に対する接続先である出力ポート部C112に対応する出力バッファ部C140に通信パケットを出力する。
この場合に、スイッチ処理部C130は通信パケットのVLANプライオリティ番号も抽出し、VLANプライオリティ番号に対応した出力バッファ部C140のバッファに当該通信パケットを出力する。
従来技術の方法では、スイッチ処理部C130は、VLANプライオリティ番号7で示される高優先度通信専用時間の終了後に、VLANプライオリティ番号7の通信パケットの優先番号の切り替え処理を実行していた。しかし、優先番号の切り替え処理時間CTの終了後に通信パケットの送信処理が開始されるために、通信パケットの送信処理が遅れてしまうという課題があった。図4(a)に通信パケットの送信処理が遅れてしまうことを説明する模式図を示す。図4(a)において、優先番号の切り替え処理時間CTがなければ、タイミングのt1から通信パケットの送信処理を開始できるが、優先番号の切り替え処理時間CTがあるために、タイミングのt2から通信パケットの送信処理が開始される。すなわち、高優先度通信専用時間の終了後の優先番号の切り替え処理時間CTの経過後に、優先番号が切り替えられた通信パケットの送信が開始される。そこで、本実施形態では、以下に説明する制限時間LTを用いる構成を採用する。
上述したように、本実施形態では、スイッチ処理部C130は、高優先度通信専用時間において制限時間LTを演算する。制限時間LTは、高優先度通信専用時間内の時間であるが、高優先度通信専用時間の終了時刻から一定の範囲の時間帯である。例えば、制限時間LTは、高優先度通信専用時間内で通信パケットの通信が完了しない可能性がある時間帯をあらわす。一例として、図4(b)に、N番目の通信サイクルN、制限時間LT、高優先度通信専用時間等の関係を示す。高優先度通信専用時間は、VLANプライオリティ番号7で示される時間帯であり、制限時間LTは高優先度通信専用時間の終了時刻から一定の範囲の時間帯となっている。なお、制限時間LTが終了するとVLANプライオリティ番号6から0で示される通信パケットを送信できる時間帯となる。
図4(c)に、制限時間LTの演算方法の一例を示す。VLANプライオリティ番号7の通信パケットが通信端末Nから中継器C100、中継器C200および中継器C300を介して通信端末N+1に送信され場合の制限時間LTの演算方法の一例である。通信端末Nと中継器C100の間、中継器C100と中継器C200の間、中継器C200と中継器C300の間、および、中継器C300と通信端末N+1との間の回線速度は同一であるとする。また、中継器C100、中継器C200および中継器C300における通信パケットの転送時間は同一または異なる時間であるものとする。VLANプライオリティ番号7の通信パケットのサイズを回線速度で除算した時間が装置間の転送時間となるので、制限時間LTは以下の式(1)であらわされる。
制限時間LT=(通信パケットサイズ/回線速度)×(経由する中継器の台数+1)+(経由する各中継器の転送時間の合計)---(1)
例えば、転送する通信パケットのサイズが100[byte]、回線速度が100[Mbps]、経由する中継器が3台あり、各中継器の転送時間が1.0[マイクロ秒]の場合に式(1)から制限時間LTを演算する。この場合には、制限時間LT=(100[byte]/100×106×8[byte/sec])×(3+1)+1.0×10-6×3=3.5[マイクロ秒]となる。なお、上記数値は通信端末Nにおける制限時間LTであって、中継器100、中継器200および中継器300における制限時間LTは異なる。例えば、中継器200の制限時間LTは、(100[byte]/100×106×8[byte/sec])×(1+1)+1.0×10-6×2=2.25[マイクロ秒]となる。このように、各中継器は、自中継器における制限時間LTを演算することが可能になる。
スイッチ処理部C130は、VLANプライオリティ番号7の通信パケットを転送する場合に、制限時間LT以内の時間帯である場合には、当該通信パケットを優先用バッファ部C141に格納するとともに、VLANプライオリティ番号を1つ下げる。そして、VLANプライオリティ番号を7から6に1つ下げた通信パケットを通常用バッファ部C142に格納する。スイッチ処理部C130は、優先用バッファ部C141からVLANプライオリティ番号7の通信パケットを通信し、通信が失敗した場合は通常用バッファ部C142からVLANプライオリティ番号を7から6に1つ下げた通信パケットを通信する。スイッチ処理部C130は、いずれかの通信が成功したら、通信に成功していない優先用バッファ部C141または通常用バッファ部C142に格納されている通信パケットを削除する。
出力バッファ部C140には、一例として、優先用バッファ部C141、通常用バッファ部C142、低速用バッファ部C143が含まれる。優先用バッファ部C141は、VLANプライオリティ番号の優先度が最も高い通信パケットが格納されるバッファ部である。
例えば、VLANプライオリティ番号が7である通信パケットが、最も高い通信優先度を有する場合にはVLANプライオリティ番号7の通信パケットは優先用バッファ部C141に記憶される。通常用バッファ部C142および低速用バッファ部C143に格納される通信パケットは、その他のVLANプライオリティ番号に対応する。例えば、VLANプライオリティ番号7から降順に通信優先度が下がる場合には、通常用バッファ部C142はVLANプライオリティ番号6~4の通信パケットを格納するバッファとして機能する。また、低速用バッファ部C143はVLANプライオリティ番号3~0の通信パケットを格納するバッファとして機能するが、これに限定されるわけではない。
このように、スイッチ処理部C130は、VLANプライオリティ番号7の通信パケットを検出した場合には、当該通信パケットを優先用バッファ部C141に出力する。
出力バッファ部C140は、通信フレームの各サイクルの先頭にある高優先度通信専用時間帯に優先用バッファ部C141に格納されている通信パケットを出力ポート部C112に出力する。また、出力バッファ部C140は、各サイクルの高優先度通信専用時間帯以外の時間帯に、通常用バッファ部C142および低速用バッファ部C143に格納されている通信パケットを優先度順に出力ポート部C112に出力する。
例えば、通常用バッファ部C142にVLANプライオリティ番号6~4の通信パケットがある場合には、最初に、通常用バッファ部C142はVLANプライオリティ番号6の通信パケットを出力ポート部C112に出力する。次に、通常用バッファ部C142は、VLANプライオリティ番号5の通信パケットを出力ポート部C112に出力し、その次にVLANプライオリティ番号4の通信パケットを出力ポート部C112に出力する。
また、例えば、低速用バッファ部C143にVLANプライオリティ番号3~0の通信パケットがある場合には、最初に、低速用バッファ部C143はVLANプライオリティ番号3の通信パケットを出力ポート部C112に出力する。次に、低速用バッファ部C143は、VLANプライオリティ番号2の通信パケットを出力ポート部C112に出力し、その次にVLANプライオリティ番号1の通信パケットを出力ポート部C112に出力する。最後に、低速用バッファ部C143はVLANプライオリティ番号0の通信パケットを出力ポート部C112に出力する。
さらに、優先用バッファ部C141に格納されている通信パケットを出力ポート部C112に出力した場合に、高優先度通信専用時間帯に当該通信パケットを中継器C100から出力できない場合がある。このような場合に、従来では、当該通信パケットは次のサイクルの高優先度通信専用時間帯まで通信を待つ必要があった。しかし、本実施形態では、一例として、スイッチ処理部C130が、当該通信パケットのVLANプライオリティ番号を7から6に引き下げて、同じサイクルの高優先度通信専用時間帯以外の時間帯に当該通信パケットを出力するように機能する。スイッチ処理部C130の当該機能によって、当初、VLANプライオリティ番号7の高優先度を有していた通信パケットの通信遅延を低減することが可能になる。なお、VLANプライオリティ番号を7から6に引き下げられた通信パケットが伝送される高優先度通信専用時間帯以外の時間帯は、VLANプライオリティ番号6に対応する時間帯である。また、スイッチ処理部C130は、VLANプライオリティ番号を7から6に引き下げられた通信パケットを、優先用バッファ部C141に格納された状態から通常用バッファ部C142に移動させる。
さらに、VLANプライオリティ番号は7から6に引き下げる場合に限定されるわけではない。例えば、スイッチ処理部C130は、高優先度通信専用時間帯に送信できないVLANプライオリティ番号7の通信パケットを通常用バッファ部C142または低速用バッファ部C143に設定されているVLANプライオリティ番号を抽出する。スイッチ処理部C130は、抽出されたVLANプライオリティ番号の中で最も高い優先度のVLANプライオリティ番号に書き換えて、優先用バッファ部C141から通常用バッファ部C142に移動させる。
さらに、本実施形態では、VLANプライオリティ番号が7から6に引き下げられた通信パケットが、複数の中継器を経由する間に、他の通信などの影響によって、同一の通信サイクル内で通常用バッファ部C142に残ってしまう場合が想定される。通常用バッファ部C142に当該通信パケットが残ってしまうと、次の通信サイクルの高優先度通信専用時間帯の次の時間帯で送信されることが想定されるために、リアルタイム性が損なわれる場合が発生する。そこで、本実施形態では、通信サイクルの終了時に通常用バッファ部C142にVLANプライオリティ番号が7から6に引き下げられた通信パケットが残ってしまう場合に、VLANプライオリティ番号を6から7に戻す構成とした。さらに、本実施形態では、VLANプライオリティ番号を6から7に戻した通信パケットを優先用バッファ部C141に格納する構成とし、次の通信サイクルの高優先度通信専用時間帯に送信される構成にした。
タイマー部C150は、他の中継器および通信端末と同期を取る機能を有する。したがって、通信サイクルの開始時刻および終了時刻、ならびに、高優先度通信専用時間帯の開始時刻および終了時刻等の時刻は各中継器および通信端末において同期している。
(実施形態に係る中継器の動作のフローチャート)
次に、図5および図6を参照して、実施形態に係る中継器C100の動作のフローチャートの一例を示す。中継器C100における図5および図6の処理手順は、中継器C100が有するコンピュータのROM(Read Only Memory)に格納されたプログラムにしたがいCPU(Central Processing Unit)が実行する。
なお、以下の処理手順の一部または全部は、例えば、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等のハードウェアにより実行させられる。但し本実施例では、ROMのプログラムにしたがってCPUが実行する形態とした場合について説明する。
図5は入力バッファ部C120の動作のフローチャートの一例であり、図6はスイッチ処理部C130および出力バッファ部C140の動作のフローチャートの一例である。図5および図6の動作は非同期で動作することができるが、同期して動作することも可能である。
最初に、図5の入力バッファ部C120の動作のフローチャートの一例について説明する。
ステップS510において、入力バッファ部C120は入力ポート部C111に通信パケットが入力されたか否かを判定する。入力ポート部C111に通信パケットが入力された場合(ステップS510:YES)には、入力バッファ部C120はステップS520に進む。入力ポート部C111に通信パケットが入力されていない場合(ステップS510:NO)には、入力バッファ部C120はステップS510を繰り返す。
ステップS520において、入力バッファ部C120は入力ポート部C111に入力された通信パケットを入力バッファ部C120に記憶する。入力バッファ部C120はFIFO(First In、 First Out)タイプのバッファであるが、これに限定されるわけではない。次に、入力バッファ部C120はステップS510に戻り、処理を継続する。
次に、図6のスイッチ処理部C130および出力バッファ部C140の動作のフローチャートの一例について説明する。図6のフローチャートは、1通信サイクルの間の処理を示し、1通信サイクルの開始時点からの動作を示している。
中継器C100における図6の処理手順は、中継器C100が有するコンピュータのROM(Read Only Memory)に格納されたプログラムにしたがいCPU(Central Processing Unit)が実行する。
なお、以下の処理手順の一部または全部は、例えば、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等のハードウェアにより実行できる。但し本実施例では、ROMのプログラムにしたがってCPUが実行する形態とした場合について説明する。
ステップS601において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて記憶された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS601:YES)には、スイッチ処理部C130はステップS604に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS601:NO)には、スイッチ処理部C130はステップS602に進む。なお、中継器C100が通信システム1000の初段に位置する場合には、サイクルの開始時に優先用バッファ部C141に通信パケットが残っていることは想定していない。詳細については後述する。
ステップS602において、スイッチ処理部C130は入力バッファ部C120に通信パケットが記憶されたか否かを判定する。入力バッファ部C120に通信パケットが記憶された場合(ステップS602:YES)には、スイッチ処理部C130はステップS604に進む。入力バッファ部C120に通信パケットが記憶されていない場合(ステップS602:NO)には、スイッチ処理部C130はステップS603に進む。
ステップS603において、スイッチ処理部C130はタイマー部C150を参照して、通信パケットを送信するための1サイクルが終了したか否かを判定する。TSNでは通信システム1000のすべての中継器で同期が取れているので、各中継器で通信パケットを送信するための1サイクルの開始時刻と終了時刻を認識することが可能になっている。通信パケットを送信するための1サイクルが終了した場合(ステップS603:YES)には、スイッチ処理部C130は処理を終了する。通信パケットを送信するための1サイクルが終了していない場合(ステップS603:NO)には、スイッチ処理部C130はステップS602に戻り、通信パケットの入力を待機する。
ステップS604において、スイッチ処理部C130は高優先度通信専用時間か否かを判定する。高優先度通信専用時間に送信できる通信パケットは最高優先番号を有する通信パケットであるため、ステップS604からステップS605の処理に進む通信パケットは最高優先番号を有する通信パケットである。通信パケットが高優先度通信専用時間の中にある場合(ステップS604:YES)には、スイッチ処理部C130はステップS605に進む。高優先度通信専用時間ではない通信パケットである場合(ステップS604:NO)には、スイッチ処理部C130はステップS618に進む。
ステップS605において、スイッチ処理部C130はタイマー部C150を参照して、高優先度通信専用時間の中の制限時間内であるか否かを判定する。制限時間内である場合(ステップS605:YES)には、通信パケットの通信処理に余裕がないためにスイッチ処理部C130はステップS606に進む。制限時間内ではない場合(ステップS605:NO)には、通信パケットの通信処理に余裕があるためにスイッチ処理部C130はステップS615に進む。
ステップS606において、スイッチ処理部C130は通信パケットを優先用バッファ部C141に格納する。制限時間内であっても、優先用バッファ部C141から出力された通信パケットが高優先度通信専用時間の間に通信が完了する場合があるので、スイッチ処理部C130は通信パケットを優先用バッファ部C141に格納する。次に、スイッチ処理部C130はステップS607に進む。
ステップS607において、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットのコピーを作成する。次に、スイッチ処理部C130はステップS608に進む。
ステップS608において、スイッチ処理部C130はコピーされた通信パケットの優先番号の書き換えを実施する。例えば、スイッチ処理部C130はVLANプライオリティ番号を最高優先度から次の優先度に書き換える。優先番号の書き換え処理の一例の詳細については、図8等を参照して後述する。次に、スイッチ処理部C130はステップS609に進む。
ステップS609において、スイッチ処理部C130は優先番号が書き換えられた通信パケットを通常用バッファ部C142に格納する。優先用バッファ部C141から出力された通信パケットが高優先度通信専用時間の間に通信が完了しない場合に、スイッチ処理部C130は優先番号が書き換えられた通信パケットを通常用バッファ部C142から出力する。次に、スイッチ処理部C130はステップS610に進む。
ステップS610において、制限時間内であっても通信が完了する場合があるので、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットを出力ポート部C112に出力する。次に、スイッチ処理部C130はステップS611に進む。
ステップS611において、ステップS610で出力された通信パケットが高優先度通信専用時間の間に通信が完了したか否かを判定する。高優先度通信専用時間の間に通信パケットの通信が完了した場合(ステップS611:YES)には、スイッチ処理部C130はステップS612に進む。高優先度通信専用時間の間に通信パケットの通信が完了しない場合(ステップS611:NO)には、スイッチ処理部C130はステップS613に進む。
ステップS612において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた通常用バッファ部C142に格納されている通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。次に、スイッチ処理部C130はステップS601に戻る。
ステップS613において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しなかったので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた通常用バッファ部C142に格納されている通信パケットを出力する。この場合には、出力された通信パケットが通常用バッファ部C142に対応する時間帯の間に通信が完了する場合と、通信が完了しない場合があるが、いずれの場合にも、スイッチ処理部C130はステップS614に進む。
ステップS614において、ステップS613にて出力された通信パケットの通信完了の成否に関わらず、スイッチ処理部C130は当該通信パケットの優先度を書き換える前の最高優先度の優先用バッファ部C141に格納されている通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。ステップS613にて出力された通信パケットの通信が完了していない場合には、後述するステップS622からステップS624において、当該通信パケットは通常用バッファ部C142から優先用バッファ部C141に格納される。したがって、ステップS614において、ステップS613にて出力された通信パケットの通信が完了していない場合にも、優先度を書き換える前の最高優先度の優先用バッファ部C141に格納されている通信パケットを削除する。次に、スイッチ処理部C130はステップS601に戻る。
ステップS615において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて記憶された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS615:YES)には、スイッチ処理部C130はステップS617に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS615:NO)には、スイッチ処理部C130はステップS616に進む。
ステップS616において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを入力バッファ部C120から優先用バッファ部C141に格納する。次に、スイッチ処理部C130はステップS617に進む。
ステップS617において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを優先用バッファ部C141から出力ポート部C112に出力する。次に、スイッチ処理部C130はステップS601に戻る。
ステップS618において、スイッチ処理部C130は入力バッファ部C120から抽出した通信パケットのVLANプライオリティ番号を抽出する。次に、スイッチ処理部C130はステップS619に進む。
ステップS619において、スイッチ処理部C130は最高優先度ではないVLANプライオリティ番号を有する通信パケットを通常用バッファ部C142または低速用バッファ部C143に格納する。例えば、VLANプライオリティ番号7から降順に通信優先度が下がる場合には、通常用バッファ部C142はVLANプライオリティ番号6~4に対応し、低速用バッファ部C143はVLANプライオリティ番号3~0に対応する。しかし、通常用バッファ部C142または低速用バッファ部C143とVLANプライオリティ番号との関係はこれに限定されるわけではない。次に、スイッチ処理部C130はステップS620に進み、処理を継続する。
ステップS620において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143から通信パケットを出力ポート部C112に出力する。一例として、通常用バッファ部C142から通信パケットを出力できる時間帯と、低速用バッファ部C143から通信パケットを出力できる時間帯とが異なる場合がある。次に、スイッチ処理部C130はステップS621に進む。
ステップS621において、スイッチ処理部C130は、現在の通信サイクルが終了したか否かを判定する。現在の通信サイクルが終了した場合(ステップS621:YES)には、スイッチ処理部C130はステップS622に進み、通信パケットの優先番号の書き換えをチェックする。現在の通信サイクルが終了していない場合(ステップS621:NO)には、スイッチ処理部C130はステップS602に進み、処理を継続する。
ステップS622において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143に通信パケットが送信されずに残っている場合に、当該通信パケットの優先番号の書き換えの変更履歴が有るか否かを判定する。通信パケットの優先番号の書き換えの変更履歴が有る場合(ステップS622:YES)には、スイッチ処理部C130はステップS623に進む。通信パケットの優先番号の書き換えの変更履歴が無い場合(ステップS622:NO)には、スイッチ処理部C130は現在の通信サイクルの処理を終了し、次の通信サイクルの処理を開始する。
ステップS623において、スイッチ処理部C130は、優先番号の書き換えの変更履歴が有る通信パケットの優先番号を元の優先番号に書き換える。一例として、優先番号が7から6に書き換えられた通信パケットが通常用バッファ部C142または低速用バッファ部C143に有る場合には、スイッチ処理部C130は、当該通信パケットの優先番号を6から7に書き換える。次に、スイッチ処理部C130はステップS624に進む。
ステップS624において、スイッチ処理部C130は、ステップS623において優先番号が書き換えられた通信パケットを、書き換えられた優先番号に対応する出力バッファ部C140に移動させて、格納する。一例として、ステップS623において優先番号が6から7に書き換えられた通常用バッファ部C142に格納されていた通信パケットを、スイッチ処理部C130は優先用バッファ部C141に移動させて、格納する。このように、スイッチ処理部C130は、高優先度通信専用時間で伝送されていた通信パケットが高優先度通信専用時間の時間内で送信できずに優先番号が下がった場合に、次のサイクルにおいて優先的に高優先度通信専用時間で送信されるようにする。
図7(a)は、図6のステップS606からステップS609の動作を説明するための模式図の一例である。ステップS606において、スイッチ処理部C130は通信パケットP81を優先用バッファ部C141に格納する。ステップS607において、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットP81のコピーをスイッチ処理部C130に作成する。ステップS608において、スイッチ処理部C130はコピーされた通信パケットの優先番号の書き換えを実施する。例えば、図7(a)においては、スイッチ処理部C130はVLANプライオリティ番号を最高優先度の7から次の優先度の6に書き換える。ステップS609において、スイッチ処理部C130は優先番号が書き換えられた通信パケットを通常用バッファ部C142に格納する。
図7(b)は、図6のステップS612の動作を説明するための模式図の一例である。ステップS612において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた通常用バッファ部C142に格納されている通信パケットを削除する。図7(b)では、優先用バッファ部C141に格納した優先度が7の通信パケットP81の通信が成功すると、送信完了の割り込み通知が、出力バッファ部C140からスイッチ処理部C130に伝送される。送信完了の割り込み通知を受信したスイッチ処理部C130は、当該通信パケットの優先度が7から6に書き換えられた通常用バッファ部C142に格納されている通信パケットを削除する命令を通常用バッファ部C142に伝送する。通常用バッファ部C142は、優先度が7から6に書き換えられた通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。
図7(c)は、図6のステップS614の動作の一部を説明するための模式図の一例である。ステップS614では以下の処理を実行する。すなわち、高優先度通信専用時間の次の時間帯に通信パケットの通信が完了しているか否かに関わらず、スイッチ処理部C130は当該通信パケットの優先度を書き換える前の最高優先度の優先用バッファ部C141に格納されている通信パケットを削除する。図7(c)では、高優先度通信専用時間の次の時間帯に通信パケットの通信が完了した場合について説明する。通常用バッファ部C142に格納した優先度が6の通信パケットP81の通信が成功すると、送信完了の割り込み通知が、出力バッファ部C140からスイッチ処理部C130に伝送される。送信完了の割り込み通知を受信したスイッチ処理部C130は、当該通信パケットの優先度が書き換えられる前の優先用バッファ部C141に格納されている通信パケットを削除する命令を優先用バッファ部C141に伝送する。優先用バッファ部C141は、優先度が6に書き換えられ前の優先度が7の通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。なお、高優先度通信専用時間の次の時間帯に通信パケットの通信が完了しない場合には、送信未完了の割り込み通知が発生する。送信未完了の割り込み通知を受信したスイッチ処理部C130は、当該通信パケットの優先度が書き換えられる前の優先用バッファ部C141に格納されている通信パケットを削除する命令を優先用バッファ部C141に伝送する。ステップS613にて出力された通信パケットの通信が完了していない場合には、前述したステップS622からステップS624において、当該通信パケットは通常用バッファ部C142から優先用バッファ部C141に格納される。したがって、次の通信サイクルにおいて、高優先度通信専用時間に優先的に当該通信パケットが送信される。
図8は、通信パケット内に元の優先度情報を格納する方法の一例を示し、MAC-in-MAC(IEEE802.1ah)で通信フレームのカプセル化を行う手法を利用する例である。図8の通信フレームのカプセル化によって、通信パケットの優先度情報の書き換えの有無および元の優先度情報の判定をスイッチ処理部C130が行うことが可能になる。しかし、優先度情報の書き換えの有無および元の優先度情報の判定処理は、通信フレームのカプセル化に限定されるわけではない。
図8において、通信パケットの優先度情報を7から6に引き下げた場合の通信フレームの構成例を示す。優先度情報の書き換えは、元の優先度情報が格納されているヘッダーでは行わず、新たに優先度情報が格納されるヘッダーを追加する。新たな優先度情報が格納されるヘッダーの前には、元の通信フレームの宛先アドレスと送信先アドレスが書き込まれ、カプセル化が実行される。通信パケットの優先度は新たな優先度情報が格納されているヘッダーで判定される。また、優先度の変更履歴の有無は、新たな優先度情報が格納されているヘッダーの次の宛先アドレスの有無によって判定される。新たな優先度情報が格納されているヘッダーの次に宛先アドレスが存在する場合には、宛先アドレスの隣の送信先アドレスの隣の優先度情報が格納されているヘッダーの優先度情報によって、通信パケットの元の優先度が判定される。
以上のように、本実施形態の構成によれば、高優先度通信専用時間内の制限時間になった場合には、スイッチ処理部C130は、当該通信パケットを優先用バッファ部C141に格納するとともに、VLANプライオリティ番号を1つ下げる。そして、スイッチ処理部C130は、VLANプライオリティ番号を7から6に1つ下げた通信パケットを通常用バッファ部C142に格納する。スイッチ処理部C130は、優先用バッファ部C141からVLANプライオリティ番号7の通信パケットを通信し、通信が失敗した場合は通常用バッファ部C142からVLANプライオリティ番号を7から6に1つ下げた通信パケットを通信する。スイッチ処理部C130は、いずれかの通信が成功したら、通信に成功していない優先用バッファ部C141または通常用バッファ部C142に格納されている通信パケットを削除する。また、通常用バッファ部C142からの通信が失敗した場合にも、優先用バッファ部C141に格納されているVLANプライオリティ番号が書き換えられる前の通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。また、スイッチ処理部C130は高優先度通信専用時間が終了する前に、上記処理を実行するために、VLANプライオリティ番号の書き換え処理等による遅延が発生しないので、リアルタイム性を改善することが可能になる。
また、優先順位が書き換えられた通信パケットが現在のサイクル内で送信できない場合は、次の通信サイクルの高優先度通信専用時間の後の時間帯に送信されることになるので、リアルタイム性が損なわれてしまう。そこで、上記実施形態によれば、優先順位が書き換えられた通信パケットの優先順位を元の優先順位に書き換え、元の優先順位が例えば最高順位であれば、通信パケットを優先用バッファ部C141に移動させて、格納する。したがって、次の通信サイクルで、当該通信パケットは高優先度通信専用時間において優先的に送信されることが可能になる。
図9は、通信端末Nから通信端末N+1にVLANプライオリティ番号7の通信パケットを送信する場合の本実施形態の動作を上位概念化した図である。
通信端末NからVLANプライオリティ番号7を有する通信パケットP1sが中継器C100に送信される。通信パケットP1sを受信した中継器C100は通信パケットP1sを高優先度通信専用時間帯に送信可能であるので、通信パケットP1sを通信パケットP1s’として中継器C200に送信する。通信パケットP1s’を受信した中継器C200は通信パケットP1s’を高優先度通信専用時間帯に送信可能であるので、通信パケットP1s’を通信パケットP1s’’として中継器C300に送信する。
通信パケットP1s’’を受信した中継器C300は通信パケットP1s’’を高優先度通信専用時間帯に送信することが不可能であるので、通信パケットP1s’’のVLANプライオリティ番号を7から6に下げる。中継器C300はVLANプライオリティ番号が6となった通信パケットP1s’’を通信パケットP1s’’’として、VLANプライオリティ番号6に対応する通信時間帯で通信端末N+1に送信する。
以上説明したように、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にすることが可能になる。また、TSNの高優先度通信専用時間帯において通信パケットの数および通信間隔を調節する必要がなくなるので、通信資源を効率的に使用することが可能となる。
(変形例)
以上の説明では、本実施形態に係るTSNの改良された機能を中継器に実装した場合を説明してきたが、当該TSNの改良された機能は車載ネットワークにおいても利用することが可能である。
図10は車載ネットワークの一例を図示するものである。図10の構成には、カメラS100、ECU(Electronic Control Unit:E100、E200、E300、E400)、センサS200、SW(車載スイッチングハブ:A100、A200)が含まれる。さらに、図10の構成には、GW(車載ゲートウェイ:A300)、RT(車載ルータ:A400)、通信モジュールT100、GWに接続されるCAN(Controller Area Network:N100)が含まれる。
図10の車載ネットワークでは、当該TSNの改良された機能は、車載スイッチングハブA100、A200、車載ゲートウェイA300および車載ルータA400に実装することが可能である。
したがって、ECU(E100、E200、E300、E400)、通信モジュールT100およびCAN(N100)間で高優先度に設定された通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、以下の処理を実行する。すなわち、高優先度に設定された通信パケットの優先度を一段下げる処理を実行することで、遅延を最小限にすることが可能になる。また、TSNの高優先度通信専用時間帯において通信パケットの数および通信間隔を調節する必要がなくなるので、通信資源を効率的に使用することが可能となる。
なお、上述した実施形態では、VLANプライオリティ番号が7である通信パケットの優先度を1つ下げる例について説明したが、VLANプライオリティ番号が6~1の通信パケットの優先度を1つ下げる構成とすることも可能である。この場合には、VLANプライオリティ番号ごとに専用の通信時間帯が設定されていてもよい。また、複数のVLANプライオリティ番号ごとに専用の通信時間帯が設定されていてもよい。
なお、各通信パケットには、VLANプライオリティ番号の他にサイクル番号を特定するためのサイクル番号識別子が含まれる構成とすることも可能である。
以下に、本実施形態の中継器C100および通信システム1000の特徴について記載する。
本開示の第1の態様に係る中継器C100は、通信パケットを優先度順に伝送するための優先度情報を有する通信パケットに対して、優先度情報に対応する専用の通信時間帯を通信サイクルに含む通信方式を用いる。通信パケットを中継する中継器C100は、入力された通信パケットから通信パケットの優先度情報を抽出し、優先度情報に対応する、出力バッファ部C140のバッファ部に通信パケットを出力するスイッチ処理部C130を含む。スイッチ処理部C130は、最高の優先度情報を有する通信パケットを最高の優先度情報に対応する専用の通信時間帯の終了時刻から遡った制限時間内に受信した場合には、以下の処理を実行する。最高の優先度情報を有する通信パケットを、最高の優先度情報に対応する、出力バッファ部C140の優先用バッファ部C141に出力する。また、通信パケットの優先度情報を次の優先度の優先度情報に下げ、通信パケットを下げられた優先度情報に対応する、出力バッファ部C140のバッファ部にも出力する。
上記構成によれば、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にし、高優先度通信専用時間帯の通信資源を効率的に使用することが可能となる。
本開示の第2の態様に係る中継器C100は、第1の態様に係る中継器C100に関し、制限時間は、最高の優先度情報を有する通信パケットが自中継器から送信宛の通信端末に転送されるまでの時間である。
上記構成によれば、最高の優先度情報を有する通信パケットを送信する場合に制限時間LT内である場合には、通信パケットの通信が未完了になる可能性がある。この場合に、通信パケットを優先用バッファ部C141と、下げられた優先度情報に対応するバッファ部に格納することで、通信パケットの通信が完了する確率を高めることが可能になる。
本開示の第3の態様に係る中継器C100は、第1の態様または第2の態様に係る中継器C100に関し、下げられた優先度情報に対応する、出力バッファ部C140のバッファ部は通常用バッファ部C142である。通常用バッファ部C142には、優先度情報が書き換えられていない通常用バッファ部C142の優先度情報に対応する通信パケットも格納される。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットを送信する場合には、優先用バッファ部C141に格納し、最高の優先度情報の次の優先度に優先度情報に書き換えて、通常用バッファ部C142にも格納する。したがって、最高の優先度情報を有する通信パケットを高優先度通信専用時間または高優先度通信専用時間の次の時間帯に送信できる場合があるので、最高の優先度に設定した通信パケットの伝搬遅延を最小限にすることが可能になる。
本開示の第4の態様に係る中継器C100は、第3の態様に係る中継器C100に関し、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットを送信する。スイッチ処理部C130は、最高の優先度情報に対応する専用の通信時間帯に通信パケットが送信完了した場合には、通常用バッファ部C142に格納された優先度情報が書き換えられた通信パケットを削除する。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットの送信が完了する場合には、通信パケットの二重送信を防ぐために、通常用バッファ部C142に格納された優先度情報が書き換えられた通信パケットを削除する。
上記の制限時間LTは、高優先度通信専用時間内で通信を終了することができない理論的な値となる。つまり、理論的には上記制限時間LTを過ぎた場合は、通信パケットの優先度を下げ、一段下のバッファに格納する処理を行うべきである。しかし、通常、中継器C100の転送時間は常に一定ではなく、処理負荷などによって変化するため、上記制限時間LTを過ぎていても、高優先度通信専用時間内での通信が完了する可能性も考えられる。このため高優先度通信専用時間内での通信は試みるべきであり、通信が成功すれば、遅延時間を最小にして通信を完了させることが可能となる。
本開示の第5の態様に係る中継器C100は、第4の態様に係る中継器C100に関し、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットの送信を送信する。スイッチ処理部C130は、当該通信パケットが最高の優先度情報に対応する専用の通信時間帯に完了しない場合には、通常用バッファ部C142に格納された優先度情報が書き換えられた通信パケットを送信する。そして、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットを削除する。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットの送信が完了しない場合には通常用バッファ部C142に格納された優先度情報が書き換えられた通信パケットを送信し、優先用バッファ部C141に格納された通信パケットを削除する。この構成によって、通信パケットの二重送信を防ぐことが可能になる。また、高優先度通信専用時間内での通信を試みつつ、通信が完了できなかった場合は、無駄な遅延時間を必要とせず優先度を下げる処理を行えるため、遅延時間を最小にして通信を完了させることが可能となる。
本開示の第6の態様に係る中継器C100は、第1の態様から第5の態様に係る中継器C100のいずれかに関する。スイッチ処理部C130は、1通信サイクルの終了時に、優先度情報が書き換えられた通信パケットが、書き換えられた優先度情報に対応する、出力バッファ部C140のバッファ部に存在するか否かを判定する。優先度情報が書き換えられた通信パケットが、存在する場合には、当該通信パケットの優先度情報を書き換えられる前の優先度情報に戻し、当該通信パケットを書き換えられる前の優先度情報に対応する、出力バッファ部C140のバッファ部に移動させる。
1通信サイクルの終了時に、優先度情報が書き換えられた通信パケットが、出力バッファ部C140の低優先度のバッファ部に存在する場合には、次の通信サイクルにおいて、当該通信パケットの送信タイミングが遅れてしまう。しかし、上記構成によれば、優先度情報を書き換えられる前の優先度情報に戻し、書き換えられる前の優先度情報に対応する高優先度のバッファ部に移動するので、送信タイミングが遅れずにリアルタイム性を損なわないようにすることが可能である。
本開示の第7の態様に係る中継器C100は、第6の態様に係る中継器C100に関する。スイッチ処理部C130は、1通信サイクルの開始時に優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットが存在する場合には、当該最高の優先度情報を有する通信パケットを、最高の優先度情報に対応する専用の通信時間帯に送信する。
上記構成によれば、優先度情報が書き換えられる前の最高の優先度情報に戻った通信パケットは、最高の優先度情報に対応する専用の通信時間帯に送信されるので、送信タイミングが遅れずにリアルタイム性を損なわないようにすることが可能である。
本開示の第8の態様に係る中継器C100は、第1の態様から第7の態様に係る中継器C100のいずれかに関する。通信方式は、最も優先度が高い通信パケットを伝送するための高優先度通信時間帯およびその他の優先度を有する通信パケットを伝送するための通信時間帯を通信サイクルに有し、高優先度通信時間帯は各通信サイクルの先頭に位置する。
上記構成によれば、通信サイクルには、最も優先度が高い通信パケットを伝送するための高優先度通信時間帯が設けられているので、緊急な通信を必要とする通信パケット等の重要な通信パケットの伝送の遅延を低減することが可能になる。また、上記構成によれば、通信サイクルの先頭に緊急な通信を必要とする通信パケット等の重要な通信パケットの通信時間帯が設けられるので、優先的に当該通信パケットが送信されることが可能になる。さらに、当該優先度から優先度を下げられた通信パケットも迅速に送信されることが期待されるので通信性能の向上が可能となる。
本開示の第9の態様に係る通信システム1000は、第1の態様から第8の態様のいずれかに記載の中継器C100と、中継器C100に直接的または間接的に接続される、通信パケットを送受信する少なくとも一つ以上の通信端末Nを含む。
上記構成によれば、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にし、高優先度通信専用時間帯の通信資源を効率的に使用することが可能となる。
以上説明したように、本実施形態によって、TSNの高優先度通信専用時間内で送信できなかった通信パケットの遅延を最小限に抑えることが可能になる。遅延の発生頻度、影響、および、許容時間はネットワークの設計およびアプリケーションによって異なってくるが、本実施形態を導入することによって得られる効果がある。車両関連であれば、ADASや自動運転など、遅延が致命的となるアプリケーションの普及が進むことが想定されるので、本実施形態を導入することによって得られる効果は大きい。
また、以上説明したように、本実施形態によって、TSNの高優先度通信専用時間の帯域を効率的に利用することが可能になる。最適な帯域は、端末数、通信量、それぞれのアプリケーションが必要とする帯域によって異なってくるが、本実施形態を導入することによって効果が得られる。IT系ネットワークおよび車載ネットワーク共に今後も通信量の増加が懸念されるので、本実施形態を導入することによって得られる効果は大きい。特に、車両関連であれば、ADAS、自動運転、および、V2Xによる情報の取得/送信など、これまで搭載されていなかったアプリケーションの普及が進み、通信量の増加が想定されるので、本実施形態を導入することによって得られる効果は大きい。
以上、さまざまな実施例を説明したが、それらの実施例の一部または全部を組み合わせて新たな実施例とすることもできる。