(通信システムおよび通信サイクルの概要)
図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のバッファに当該通信パケットを出力する。
出力バッファ部C140には、一例として、優先用バッファ部C141、通常用バッファ部C142、低速用バッファ部C143および一時退避用バッファ部C144が含まれる。優先用バッファ部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の中で最も送信順番が早い通信パケットとして格納される。したがって、高優先度通信専用時間帯に送信できないVLANプライオリティ番号7の通信パケットは、同一サイクルの高優先度通信専用時間帯の次の時間帯で送信されることが可能になる。具体的には、VLANプライオリティ番号が6の通常用バッファ部C142に格納されていた通信パケットを一時退避用バッファ部C144に一時移動する。その後、VLANプライオリティ番号が7から6に引き下げられた通信パケットを通常用バッファ部C142の送信順番が1番の領域に書き込み、送信順番が2番以降の領域に一時退避用バッファ部C144に一時格納されていた通信パケットを再格納する。
さらに、本実施形態では、VLANプライオリティ番号が7から6に引き下げられた通信パケットが、複数の中継器を経由する間に、他の通信などの影響によって、同一の通信サイクル内で通常用バッファ部C142に残ってしまう場合が想定される。通常用バッファ部C142に当該通信パケットが残ってしまうと、次の通信サイクルの高優先度通信専用時間帯の次の時間帯で送信されることが想定されるために、リアルタイム性が損なわれる場合が発生する。そこで、本実施形態では、通信サイクルの終了時に通常用バッファ部C142にVLANプライオリティ番号が7から6に引き下げられた通信パケットが残ってしまう場合に、VLANプライオリティ番号を6から7に戻す構成とした。さらに、本実施形態では、VLANプライオリティ番号を6から7に戻した通信パケットを優先用バッファ部C141に格納する構成とし、次の通信サイクルの高優先度通信専用時間帯に送信される構成にした。
タイマー部C150は、他の中継器および通信端末と同期を取る機能を有する。したがって、通信サイクルの開始時刻および終了時刻、ならびに、高優先度通信専用時間帯の開始時刻および終了時刻等の時刻は各中継器および通信端末において同期している。
(第一実施形態に係る中継器の動作のフローチャート)
次に、図4および図5を参照して、第一実施形態に係る中継器C100の動作のフローチャートの一例を示す。中継器C100における図4および図5の処理手順は、中継器C100が有するコンピュータのROM(Read Only Memory)に格納されたプログラムにしたがいCPU(Central Processing Unit)が実行する。
なお、以下の処理手順の一部または全部は、例えば、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等のハードウェアにより実行させられる。但し本実施例では、ROMのプログラムにしたがってCPUが実行する形態とした場合について説明する。
図4は入力バッファ部C120の動作のフローチャートの一例であり、図5はスイッチ処理部C130および出力バッファ部C140の動作のフローチャートの一例である。図4および図5の動作は非同期で動作することができるが、同期して動作することも可能である。
最初に、図4の入力バッファ部C120の動作のフローチャートの一例について説明する。
ステップS410において、入力バッファ部C120は入力ポート部C111に通信パケットが入力されたか否かを判定する。入力ポート部C111に通信パケットが入力された場合(ステップS410:YES)には、入力バッファ部C120はステップS420に進む。入力ポート部C111に通信パケットが入力されていない場合(ステップS410:NO)には、入力バッファ部C120はステップS410を繰り返す。
ステップS420において、入力バッファ部C120は入力ポート部C111に入力された通信パケットを入力バッファ部C120に記憶する。入力バッファ部C120はFIFO(First In、 First Out)タイプのバッファであるが、これに限定されるわけではない。次に、入力バッファ部C120はステップS410に戻り、処理を継続する。
次に、図5のスイッチ処理部C130および出力バッファ部C140の動作のフローチャートの一例について説明する。図5のフローチャートは、1通信サイクルの間の処理を示し、1通信サイクルの開始時点からの動作を示している。
ステップS501において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて格納された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS501:YES)には、スイッチ処理部C130はステップS504に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS501:NO)には、スイッチ処理部C130はステップS502に進む。なお、中継器C100が通信システム1000の初段に位置する場合には、サイクルの開始時に優先用バッファ部C141に通信パケットが残っていることは想定していない。また、優先用バッファ部C141に格納されている通信パケットは、VLANプライオリティ番号が7から6に引き下げられた通信パケットであって、再びVLANプライオリティ番号が6から7に引き上げられた通信パケットである。詳細については後述する。
ステップS502において、スイッチ処理部C130は入力バッファ部C120に通信パケットが記憶されたか否かを判定する。入力バッファ部C120に通信パケットが記憶された場合(ステップS502:YES)には、スイッチ処理部C130はステップS504に進む。入力バッファ部C120に通信パケットが記憶されていない場合(ステップS502:NO)には、スイッチ処理部C130はステップS503に進む。
ステップS503において、スイッチ処理部C130はタイマー部C150を参照して、通信パケットを送信するための1サイクルが終了したか否かを判定する。TSNでは通信システム1000のすべての中継器で同期が取れているので、各中継器で通信パケットを送信するための1サイクルの開始時刻と終了時刻を認識することが可能になっている。通信パケットを送信するための1サイクルが終了した場合(ステップS503:YES)には、スイッチ処理部C130は処理を終了する。通信パケットを送信するための1サイクルが終了していない場合(ステップS503:NO)には、スイッチ処理部C130はステップS502に戻り、通信パケットの入力を待機する。
ステップS504において、スイッチ処理部C130は高優先度通信専用時間の中で通信パケットの送信が可能か否かを判定する。高優先度通信専用時間に送信できる通信パケットは最高優先番号を有する通信パケットである。高優先度通信専用時間の中で送信が可能な最高優先番号を有する通信パケットである場合(ステップS504:YES)には、スイッチ処理部C130はステップS505に進む。高優先度通信専用時間の中で送信ができない通信パケットである場合(ステップS504:NO)には、スイッチ処理部C130はステップS508に進む。ステップS508に進む場合の通信パケットは、最高優先番号を有する通信パケットであるが高優先度通信専用時間に通信が完了できない通信パケットと、最高優先番号を有しない通信パケットである場合がある。
ステップS505において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて格納された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS505:YES)には、スイッチ処理部C130はステップS507に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS505:NO)には、スイッチ処理部C130はステップS506に進む。
ステップS506において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを入力バッファ部C120から優先用バッファ部C141に格納する。次に、スイッチ処理部C130はステップS507に進む。
ステップS507において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを優先用バッファ部C141から出力ポート部C112に出力する。次に、スイッチ処理部C130はステップS501に戻る。
ステップS508において、スイッチ処理部C130は入力バッファ部C120から抽出した通信パケットのVLANプライオリティ番号が最高優先度のVLANプライオリティ番号か否かを判定する。VLANプライオリティ番号が最高優先度のVLANプライオリティ番号である場合(ステップS508:YES)には、スイッチ処理部C130はステップS509に進む。VLANプライオリティ番号が最高優先度のVLANプライオリティ番号ではない場合(ステップS508:NO)には、スイッチ処理部C130はステップS514に進む。
ステップS509において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号である通信パケットをコピーする。次に、スイッチ処理部C130はステップS510に進む。
ステップS510において、スイッチ処理部C130はステップS509においてコピーした通信パケットのVLANプライオリティ番号を最高優先度から次の優先度に書き換える。VLANプライオリティ番号の書き換えの一例については、図11において詳述する。次に、スイッチ処理部C130はステップS511に進む。
ステップS511において、スイッチ処理部C130は通常用バッファ部C142に格納されている通信パケットがある場合には、当該通信パケットの送信をキャンセルする。次に、スイッチ処理部C130はステップS512に進む。
ステップS512において、スイッチ処理部C130は通常用バッファ部C142に格納されている通信パケットを一時退避用バッファ部C144に移動させ、一時退避させる。次に、スイッチ処理部C130はステップS513に進む。
ステップS513において、スイッチ処理部C130は、ステップS509においてVLANプライオリティ番号を最高優先度から次の優先度に書き換えた通信パケットを通常用バッファ部C142の送信優先順番が最も高い領域に格納する。したがって、高優先度通信専用時間が終了すると、VLANプライオリティ番号を最高優先度から次の優先度に書き換えた通信パケットが優先的に送信される。また、ステップS513において、スイッチ処理部C130は、一時退避用バッファ部C144に一時退避させた通信パケットを、優先度を書き換えた通信パケットの次の送信優先順番から優先順位が下がる方向に通常用バッファ部C142に格納する。一例として、一時退避用バッファ部C144における送信優先順番が一番の送信パケットは、通常用バッファ部C142における送信優先順番が二番の領域に格納される。また、一例として、一時退避用バッファ部C144における送信優先順番が二番の送信パケットは、通常用バッファ部C142における送信優先順番が三番の領域に格納される。次に、スイッチ処理部C130はステップS516に進む。
ステップS514において、スイッチ処理部C130は入力バッファ部C120から抽出した通信パケットのVLANプライオリティ番号を抽出する。次に、スイッチ処理部C130はステップS515に進む。
ステップS515において、スイッチ処理部C130は最高優先度ではないVLANプライオリティ番号を有する通信パケットを通常用バッファ部C142または低速用バッファ部C143に格納する。例えば、VLANプライオリティ番号7から降順に通信優先度が下がる場合には、通常用バッファ部C142はVLANプライオリティ番号6〜4に対応し、低速用バッファ部C143はVLANプライオリティ番号3〜0に対応する。しかし、通常用バッファ部C142または低速用バッファ部C143とVLANプライオリティ番号との関係はこれに限定されるわけではない。次に、スイッチ処理部C130はステップS516に進み、処理を継続する。
ステップS516において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143から通信パケットを出力ポート部C112に出力する。一例として、通常用バッファ部C142から通信パケットを出力できる時間帯と、低速用バッファ部C143から通信パケットを出力できる時間帯とが異なる場合がある。次に、スイッチ処理部C130はステップS517に進む。
ステップS517において、スイッチ処理部C130は、現在の通信サイクルが終了したか否かを判定する。現在の通信サイクルが終了した場合(ステップS517:YES)には、スイッチ処理部C130はステップS518に進み、通信パケットの優先番号の書き換えをチェックする。現在の通信サイクルが終了していない場合(ステップS517:NO)には、スイッチ処理部C130はステップS508に進み、処理を継続する。
ステップS518において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143に通信パケットが送信されずに残っている場合に、当該通信パケットの優先番号の書き換えの変更履歴が有るか否かを判定する。通信パケットの優先番号の書き換えの変更履歴が有る場合(ステップS518:YES)には、スイッチ処理部C130はステップS519に進む。通信パケットの優先番号の書き換えの変更履歴が無い場合(ステップS518:NO)には、スイッチ処理部C130は現在の通信サイクルの処理を終了し、次の通信サイクルの処理を開始する。VLANプライオリティ番号の優先番号の書き換えの変更履歴の判定方法の一例については、図11において詳述する。
ステップS519において、スイッチ処理部C130は、優先番号の書き換えの変更履歴が有る通信パケットの優先番号を元の優先番号に書き換える。一例として、優先番号が7から6に書き換えられた通信パケットが通常用バッファ部C142または低速用バッファ部C143に有る場合には、スイッチ処理部C130は、当該通信パケットの優先番号を6から7に書き換える。次に、スイッチ処理部C130はステップS520に進む。
ステップS520において、スイッチ処理部C130は、ステップS519において優先番号が書き換えられた通信パケットを、書き換えられた優先番号に対応する出力バッファ部C140に移動させて、格納する。一例として、ステップS519において優先番号が6から7に書き換えられた通常用バッファ部C142に格納されていた通信パケットを、スイッチ処理部C130は優先用バッファ部C141に移動させて、格納する。このように、スイッチ処理部C130は、高優先度通信専用時間で伝送されていた通信パケットの優先番号が下がった場合に、同一のサイクルで送信できない場合には、次のサイクルにおいて優先的に高優先度通信専用時間で送信されるようにする。
図6(a)は、図5のステップS510の動作を説明するための模式図の一例である。ステップS510において、スイッチ処理部C130はステップS509においてコピーした通信パケットのVLANプライオリティ番号を最高優先度から次の優先度に書き換える。図6(a)では、通信パケットP71のVLANプライオリティ番号が記載されている優先度ヘッダーPHのVLANプライオリティ番号を7から6に書き換える様子を図示する。また、図11に示すように、VLANプライオリティ番号を書き換えることも可能である。
図6(b)は、図5のステップS511の動作を説明するための模式図の一例である。ステップS511において、スイッチ処理部C130は通常用バッファ部C142に格納されている通信パケットがある場合には、当該通信パケットの送信をキャンセルする。図6(b)では、スイッチ処理部C130が通常用バッファ部C142に格納されている通信パケットP61および通信パケットP62の送信をキャンセルする命令を通常用バッファ部C142に出力する。図6(b)では、通常用バッファ部C142に格納されている通信パケットは通信パケットP61および通信パケットP62の2個である。また、通信パケットP61は通常用バッファ部C142の領域TA1に格納されており、領域TA1は通常用バッファ部C142の送信順番が1番の通信パケットが格納される領域である。さらに、通信パケットP62は通常用バッファ部C142の領域TA2に格納されており、領域TA2は通常用バッファ部C142の送信順番が2番の通信パケットが格納される領域である。さらに、領域TA3は通常用バッファ部C142の送信順番が3番の通信パケットが格納される領域であり、領域TA4は通常用バッファ部C142の送信順番が4番の通信パケットが格納される領域である。図6(b)では、領域TA3および領域TA4には通信パケットが格納されていない。
図6(c)は、図5のステップS512の動作を説明するための模式図の一例である。ステップS512において、スイッチ処理部C130は通常用バッファ部C142に格納されている通信パケットを一時退避用バッファ部C144に移動させ、一時退避させる。図6(c)では、通常用バッファ部C142の領域TA1に格納されている通信パケットP61を一時退避用バッファ部C144の領域IA1に移動させる。また、通常用バッファ部C142の領域TA2に格納されている通信パケットP62を一時退避用バッファ部C144の領域IA2に移動させる。
図6(d)は、図5のステップS513の動作の一部を説明するための模式図の一例である。ステップS513において、スイッチ処理部C130は、ステップS509においてVLANプライオリティ番号を最高優先度から次の優先度に書き換えた通信パケットを通常用バッファ部C142の送信優先順番が最も高い領域に格納する。図6(d)における通信パケットP71は、VLANプライオリティ番号が7から6に書き換えられた通信パケットであるので、通常用バッファ部C142の領域TA1に格納される。上述したように、領域TA1は通常用バッファ部C142の送信順番が1番の通信パケットが格納される領域である。
図6(e)は、図5のステップS513の動作の一部を説明するための模式図の一例である。ステップS513において、スイッチ処理部C130は、一時退避用バッファ部C144に一時退避させた通信パケットを、優先度を書き換えた通信パケットの次の送信優先順番から優先順位が下がる方向に通常用バッファ部C142に格納する。例えば、スイッチ処理部C130は、図6(e)に示すように、一時退避用バッファ部C144の領域IA1に一時退避させた通信パケットP61を、通常用バッファ部C142の領域TA2に格納する。上述したように、領域TA2は通常用バッファ部C142の送信順番が2番の通信パケットが格納される領域である。また、一時退避用バッファ部C144の領域IA2に一時退避させた通信パケットP62を、通常用バッファ部C142の領域TA3に格納する。上述したように、領域TA3は通常用バッファ部C142の送信順番が3番の通信パケットが格納される領域である。このように、優先度を書き換えた通信パケットP71を通常用バッファ部C142における送信順番を一番とし、通常用バッファ部C142にすでに格納されていた通信パケットP61および通信パケットP62の送信順番を下げる。
以上のように、第一実施形態の構成によれば、高優先度通信専用時間で送信できなくなった、VLANプライオリティ番号が最上位の通信パケットの優先順位を次の優先順位に書き換えて、通常用バッファ部C142に格納し、送信する。この場合に、通常用バッファ部C142に他の通信パケットがすでに存在している場合には、最上位から次の優先順位に書き換えられた通信パケットの送信順番が遅れてしまう可能性がある。また、通常用バッファ部C142に他の通信パケットがすでに存在している場合には、最上位から次の優先順位に書き換えられた通信パケットを現在のサイクルで送信できない場合も想定される。そこで、第一実施形態の構成によれば、通常用バッファ部C142の送信順番を変更し、最上位から次の優先順位に書き換えられた通信パケットの送信順番を通常用バッファ部C142の中で最上位に変更する。この結果、最上位から次の優先順位に書き換えられた通信パケットは、高優先度通信専用時間の次の通常用バッファ部C142に対応する時間帯で送信することが可能になる。
また、最上位から次の優先順位に書き換えられた通信パケットの送信順番を通常用バッファ部C142の中で最上位に変更した場合であっても、中継器C100が複数接続されている場合の後段の中継器C100では、サイクル内で送信できない場合も想定される。この場合には、他の通信等の影響が原因として考えられる。優先順位が書き換えられた通信パケットが現在のサイクル内で送信できない場合は、次の通信サイクルの高優先度通信専用時間の後の時間帯に送信されることになるので、リアルタイム性が損なわれてしまう。そこで、上記第一実施形態によれば、優先順位が書き換えられた通信パケットの優先順位を元の優先順位に書き換え、元の優先順位が例えば最高順位であれば、通信パケットを優先用バッファ部C141に移動させて、格納する。したがって、次の通信サイクルで、当該通信パケットは高優先度通信専用時間において優先的に送信されることが可能になる。
(第二実施形態に係る中継器の構成例)
図7は、第二実施形態に係るスイッチングHUBやルータ、ゲートウェイ等の中継器C100の構成イメージをブロック図で示したものである。なお、中継器C200および中継器C300も中継器C100と同一の構成を有する。
中継器C100は入力ポート部C111、入力バッファ部C120、スイッチ処理部C130、出力バッファ部C140、タイマー部C150および出力ポート部C112を含んで構成される。なお、ネットワークの使用状況や中継器の処理の状況により、中継器C100では即座にスイッチ処理やネットワークへの通信パケットの出力ができないこともあるため、中継器C100内に入出力用にバッファを持つ構成としている。さらに、出力バッファ部C140については、1つの出力ポート部C112に対して複数のバッファを持ち、バッファからの出力順を調整することで、通信パケットの優先制御を行う構成としている。なお、第二実施形態に係るスイッチ処理部C130および出力バッファ部C140は、高優先度通信専用時間内に送信できなくなった通信パケットがある場合には、通信パケットの優先度を一段下げることで、通信遅延を最小限にする機能を有する。詳細については後述する。
なお、入力ポート部C111、入力バッファ部C120、タイマー部C150および出力ポート部C112の機能については、第一実施形態と重複するため記載の重複を避けるために説明を省略する。
スイッチ処理部C130は、入力バッファ部C120にバッファリングされた通信パケットの宛先アドレスを抽出し、当該宛先アドレスを有する端末に対する接続先である出力ポート部C112に対応する出力バッファ部C140に通信パケットを出力する。
この場合に、スイッチ処理部C130は通信パケットのVLANプライオリティ番号も抽出し、VLANプライオリティ番号に対応した出力バッファ部C140のバッファに当該通信パケットを出力する。
第一実施形態では、スイッチ処理部C130は、VLANプライオリティ番号7で示される高優先度通信専用時間の終了後に、VLANプライオリティ番号7の通信パケットの優先番号の切り替え処理を実行していた。しかし、優先番号の切り替え処理時間CTの終了後に通信パケットの送信処理が開始されるために、通信パケットの送信処理が遅れてしまうという課題があった。図8(a)に通信パケットの送信処理が遅れてしまうことを説明する模式図を示す。図8(a)において、優先番号の切り替え処理時間CTがなければ、タイミングのt1から通信パケットの送信処理を開始できるが、優先番号の切り替え処理時間CTがあるために、タイミングのt2から通信パケットの送信処理が開始される。すなわち、高優先度通信専用時間の終了後の優先番号の切り替え処理時間CTの経過後に、優先番号が切り替えられた通信パケットの送信が開始される。そこで、第二実施形態では、以下に説明する制限時間LTを用いる構成を採用する。また、優先用バッファ部C141よりも送信優先度が低いが、通常用バッファ部C142よりも送信優先度が高い、以下に説明する専用バッファ部C145を設ける構成を採用する。
上述したように、第二実施形態では、スイッチ処理部C130は、高優先度通信専用時間において制限時間LTを演算する。制限時間LTは、高優先度通信専用時間内の時間であるが、高優先度通信専用時間の終了時刻から一定の範囲の時間帯である。例えば、制限時間LTは、高優先度通信専用時間内で通信パケットの通信が完了しない可能性がある時間帯をあらわす。一例として、図8(b)に、N番目の通信サイクルN、制限時間LT、高優先度通信専用時間等の関係を示す。高優先度通信専用時間は、VLANプライオリティ番号7で示される時間帯であり、制限時間LTは高優先度通信専用時間の終了時刻から一定の範囲の時間帯となっている。なお、制限時間LTが終了するとVLANプライオリティ番号6から0で示される通信パケットを送信できる時間帯となる。
図8(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つ下げた通信パケットを専用バッファ部C145に格納する。スイッチ処理部C130は、優先用バッファ部C141からVLANプライオリティ番号7の通信パケットを通信し、通信が失敗した場合は専用バッファ部C145からVLANプライオリティ番号を7から6に1つ下げた通信パケットを通信する。スイッチ処理部C130は、いずれかの通信が成功したら、通信に成功していない優先用バッファ部C141または専用バッファ部C145に格納されている通信パケットを削除する。
出力バッファ部C140には、一例として、優先用バッファ部C141、専用バッファ部C145、通常用バッファ部C142、低速用バッファ部C143が含まれる。優先用バッファ部C141は、VLANプライオリティ番号の優先度が最も高い通信パケットが格納されるバッファ部である。
例えば、VLANプライオリティ番号が7である通信パケットが、最も高い通信優先度を有する場合にはVLANプライオリティ番号7の通信パケットは優先用バッファ部C141に記憶される。専用バッファ部C145は、優先用バッファ部C141の次の送信優先度を有するバッファである。また、専用バッファ部C145に格納される通信パケットは、VLANプライオリティ番号を7から6に1つ下げられた通信パケットである。また、専用バッファ部C145に対応する送信時間帯は、通常用バッファ部C142に対応する送信時間帯と共用される。通常用バッファ部C142および低速用バッファ部C143に格納される通信パケットは、その他のVLANプライオリティ番号に対応する。例えば、VLANプライオリティ番号7から降順に通信優先度が下がる場合には、通常用バッファ部C142はVLANプライオリティ番号が書き換えられていないVLANプライオリティ番号6〜4の通信パケットを格納するバッファとして機能する。また、低速用バッファ部C143はVLANプライオリティ番号3〜0の通信パケットを格納するバッファとして機能するが、これに限定されるわけではない。
出力バッファ部C140は、通信フレームの各サイクルの先頭にある高優先度通信専用時間帯に優先用バッファ部C141に格納されている通信パケットを出力ポート部C112に出力する。また、出力バッファ部C140は、各サイクルの高優先度通信専用時間帯以外の時間帯に、専用バッファ部C145、通常用バッファ部C142および低速用バッファ部C143に格納されている通信パケットを優先度順に出力ポート部C112に出力する。
(第二実施形態に係る中継器の動作のフローチャート)
次に、図9を参照して、中継器C100の第二実施形態に係る動作のフローチャートの一例を示す。中継器C100における図9の処理手順は、中継器C100が有するコンピュータのROM(Read Only Memory)に格納されたプログラムにしたがいCPU(Central Processing Unit)が実行する。
なお、以下の処理手順の一部または全部は、例えば、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等のハードウェアにより実行できる。但し本実施例では、ROMのプログラムにしたがってCPUが実行する形態とした場合について説明する。
なお、入力バッファ部C120の動作のフローチャートの一例は、図4と同一であるので、記載の重複を避けるためにここでは省略する。図4および図9の動作は非同期で動作することができるが、同期して動作することも可能である。
図9のスイッチ処理部C130および出力バッファ部C140の動作のフローチャートの一例について説明する。図9のフローチャートは、1通信サイクルの間の処理を示し、1通信サイクルの開始時点から動作を示している。
ステップS901において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて記憶された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS901:YES)には、スイッチ処理部C130はステップS904に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS901:NO)には、スイッチ処理部C130はステップS902に進む。なお、中継器C100が通信システム1000の初段に位置する場合には、サイクルの開始時に優先用バッファ部C141に通信パケットが残っていることは想定していない。詳細については後述する。
ステップS902において、スイッチ処理部C130は入力バッファ部C120に通信パケットが記憶されたか否かを判定する。入力バッファ部C120に通信パケットが記憶された場合(ステップS902:YES)には、スイッチ処理部C130はステップS904に進む。入力バッファ部C120に通信パケットが記憶されていない場合(ステップS902:NO)には、スイッチ処理部C130はステップS903に進む。
ステップS903において、スイッチ処理部C130はタイマー部C150を参照して、通信パケットを送信するための1サイクルが終了したか否かを判定する。TSNでは通信システム1000のすべての中継器で同期が取れているので、各中継器で通信パケットを送信するための1サイクルの開始時刻と終了時刻を認識することが可能になっている。通信パケットを送信するための1サイクルが終了した場合(ステップS903:YES)には、スイッチ処理部C130は処理を終了する。通信パケットを送信するための1サイクルが終了していない場合(ステップS903:NO)には、スイッチ処理部C130はステップS902に戻り、通信パケットの入力を待機する。
ステップS904において、スイッチ処理部C130は高優先度通信専用時間か否かを判定する。高優先度通信専用時間に送信できる通信パケットは最高優先番号を有する通信パケットであるため、ステップS904からステップS905の処理に進む通信パケットは最高優先番号を有する通信パケットである。通信パケットが高優先度通信専用時間の中にある場合(ステップS904:YES)には、スイッチ処理部C130はステップS905に進む。高優先度通信専用時間ではない通信パケットである場合(ステップS904:NO)には、スイッチ処理部C130はステップS918に進む。
ステップS905において、スイッチ処理部C130はタイマー部C150を参照して、高優先度通信専用時間の中の制限時間内であるか否かを判定する。制限時間内である場合(ステップS905:YES)には、通信パケットの通信処理に余裕がないためにスイッチ処理部C130はステップS906に進む。制限時間内ではない場合(ステップS905:NO)には、通信パケットの通信処理に余裕があるためにスイッチ処理部C130はステップS915に進む。
ステップS906において、スイッチ処理部C130は通信パケットを優先用バッファ部C141に格納する。制限時間内であっても、優先用バッファ部C141から出力された通信パケットが高優先度通信専用時間の間に通信が完了する場合があるので、スイッチ処理部C130は通信パケットを優先用バッファ部C141に格納する。次に、スイッチ処理部C130はステップS907に進む。
ステップS907において、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットのコピーを作成する。次に、スイッチ処理部C130はステップS908に進む。
ステップS908において、スイッチ処理部C130はコピーされた通信パケットの優先番号の書き換えを実施する。例えば、スイッチ処理部C130はVLANプライオリティ番号を最高優先度から次の優先度に書き換える。優先番号の書き換え処理の一例の詳細については、図11等を参照して後述する。次に、スイッチ処理部C130はステップS909に進む。
ステップS909において、スイッチ処理部C130は優先番号が書き換えられた通信パケットを専用バッファ部C145に格納する。優先用バッファ部C141から出力された通信パケットが高優先度通信専用時間の間に通信が完了しない場合に、スイッチ処理部C130は優先番号が書き換えられた通信パケットを専用バッファ部C145から出力するために専用バッファ部C145に格納する。次に、スイッチ処理部C130はステップS910に進む。
ステップS910において、制限時間内であっても通信が完了する場合があるので、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットを出力ポート部C112に出力する。次に、スイッチ処理部C130はステップS911に進む。
ステップS911において、ステップS910で出力された通信パケットが高優先度通信専用時間の間に通信が完了したか否かを判定する。高優先度通信専用時間の間に通信パケットの通信が完了した場合(ステップS911:YES)には、スイッチ処理部C130はステップS912に進む。高優先度通信専用時間の間に通信パケットの通信が完了しない場合(ステップS911:NO)には、スイッチ処理部C130はステップS913に進む。
ステップS912において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた専用バッファ部C145に格納されている通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。次に、スイッチ処理部C130はステップS901に戻る。
ステップS913において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しなかったので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた専用バッファ部C145に格納されている通信パケットを出力する。高優先度通信専用時間の次の時間帯の最初に専用バッファ部C145から優先度が書き換えられた通信パケットが出力ポート部C112に出力される。次に、スイッチ処理部C130はステップS914に進む。
ステップS914において、高優先度通信専用時間の次の時間帯に通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換える前の最高優先度の優先用バッファ部C141に格納されている通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。次に、スイッチ処理部C130はステップS901に戻る。
ステップS915において、スイッチ処理部C130は優先用バッファ部C141に前のサイクルにおいて記憶された通信パケットが存在するか否かを判定する。優先用バッファ部C141に前のサイクルの通信パケットが存在する場合(ステップS915:YES)には、スイッチ処理部C130はステップS917に進む。優先用バッファ部C141に前のサイクルの通信パケットが存在しない場合(ステップS915:NO)には、スイッチ処理部C130はステップS916に進む。
ステップS916において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを入力バッファ部C120から優先用バッファ部C141に格納する。次に、スイッチ処理部C130はステップS917に進む。
ステップS917において、スイッチ処理部C130は最高優先度のVLANプライオリティ番号を有する通信パケットを優先用バッファ部C141から出力ポート部C112に出力する。次に、スイッチ処理部C130はステップS901に戻る。
ステップS918において、スイッチ処理部C130は入力バッファ部C120から抽出した通信パケットのVLANプライオリティ番号を抽出する。次に、スイッチ処理部C130はステップS919に進む。
ステップS919において、スイッチ処理部C130は最高優先度ではないVLANプライオリティ番号を有する通信パケットを通常用バッファ部C142または低速用バッファ部C143に格納する。例えば、VLANプライオリティ番号7から降順に通信優先度が下がる場合には、通常用バッファ部C142はVLANプライオリティ番号6〜4に対応し、低速用バッファ部C143はVLANプライオリティ番号3〜0に対応する。しかし、通常用バッファ部C142または低速用バッファ部C143とVLANプライオリティ番号との関係はこれに限定されるわけではない。次に、スイッチ処理部C130はステップS920に進み、処理を継続する。
ステップS920において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143から通信パケットを出力ポート部C112に出力する。一例として、通常用バッファ部C142から通信パケットを出力できる時間帯と、低速用バッファ部C143から通信パケットを出力できる時間帯とが異なる場合がある。次に、スイッチ処理部C130はステップS921に進む。
ステップS921において、スイッチ処理部C130は、現在の通信サイクルが終了したか否かを判定する。現在の通信サイクルが終了した場合(ステップS921:YES)には、スイッチ処理部C130はステップS922に進み、通信パケットの優先番号の書き換えをチェックする。現在の通信サイクルが終了していない場合(ステップS921:NO)には、スイッチ処理部C130はステップS902に進み、処理を継続する。
ステップS922において、スイッチ処理部C130は、通常用バッファ部C142または低速用バッファ部C143に通信パケットが送信されずに残っている場合に、当該通信パケットの優先番号の書き換えの変更履歴が有るか否かを判定する。通信パケットの優先番号の書き換えの変更履歴が有る場合(ステップS922:YES)には、スイッチ処理部C130はステップS923に進む。通信パケットの優先番号の書き換えの変更履歴が無い場合(ステップS922:NO)には、スイッチ処理部C130は現在の通信サイクルの処理を終了し、次の通信サイクルの処理を開始する。
ステップS923において、スイッチ処理部C130は、優先番号の書き換えの変更履歴が有る通信パケットの優先番号を元の優先番号に書き換える。一例として、優先番号が7から6に書き換えられた通信パケットが通常用バッファ部C142または低速用バッファ部C143に有る場合には、スイッチ処理部C130は、当該通信パケットの優先番号を6から7に書き換える。次に、スイッチ処理部C130はステップS924に進む。
ステップS924において、スイッチ処理部C130は、ステップS923において優先番号が書き換えられた通信パケットを、書き換えられた優先番号に対応する出力バッファ部C140に移動させて、格納する。一例として、ステップS923において優先番号が6から7に書き換えられた通常用バッファ部C142に格納されていた通信パケットを、スイッチ処理部C130は優先用バッファ部C141に移動させて、格納する。このように、スイッチ処理部C130は、高優先度通信専用時間で伝送されていた通信パケットが高優先度通信専用時間の時間内で送信できずに優先番号が下がった場合に、次のサイクルにおいて優先的に高優先度通信専用時間で送信されるようにする。
図10(a)は、図9のステップS906からステップS909の動作を説明するための模式図の一例である。ステップS906において、スイッチ処理部C130は通信パケットP81を優先用バッファ部C141に格納する。ステップS907において、スイッチ処理部C130は優先用バッファ部C141に格納した通信パケットP81のコピーをスイッチ処理部C130に作成する。ステップS908において、スイッチ処理部C130はコピーされた通信パケットの優先番号の書き換えを実施する。例えば、図10(a)においては、スイッチ処理部C130はVLANプライオリティ番号を最高優先度の7から次の優先度の6に書き換える。ステップS909において、スイッチ処理部C130は優先番号が書き換えられた通信パケットを専用バッファ部C145に格納する。
図10(b)は、図9のステップS912の動作を説明するための模式図の一例である。ステップS912において、高優先度通信専用時間の間に最高優先度の通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換えた専用バッファ部C145に格納されている通信パケットを削除する。図10(b)では、優先用バッファ部C141に格納した優先度が7の通信パケットP81の通信が成功すると、送信完了の割り込み通知が、出力バッファ部C140からスイッチ処理部C130に伝送される。送信完了の割り込み通知を受信したスイッチ処理部C130は、当該通信パケットの優先度が7から6に書き換えられた専用バッファ部C145に格納されている通信パケットを削除する命令を専用バッファ部C145に伝送する。専用バッファ部C145は、優先度が7から6に書き換えられた通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。
図10(c)は、図9のステップS914の動作を説明するための模式図の一例である。ステップS914において、高優先度通信専用時間の次の時間帯に通信パケットの通信が完了しているので、スイッチ処理部C130は当該通信パケットの優先度を書き換える前の最高優先度の優先用バッファ部C141に格納されている通信パケットを削除する。図10(c)では、専用バッファ部C145に格納した優先度が6の通信パケットP81の通信が成功すると、送信完了の割り込み通知が、出力バッファ部C140からスイッチ処理部C130に伝送される。送信完了の割り込み通知を受信したスイッチ処理部C130は、当該通信パケットの優先度が書き換えられる前の優先用バッファ部C141に格納されている通信パケットを削除する命令を優先用バッファ部C141に伝送する。優先用バッファ部C141は、優先度が6に書き換えられ前の優先度が7の通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。
図11は、通信パケット内に元の優先度情報を格納する方法の一例を示し、MAC-in-MAC(IEEE802.1ah)で通信フレームのカプセル化を行う手法を利用する例である。図11の通信フレームのカプセル化によって、通信パケットの優先度情報の書き換えの有無および元の優先度情報の判定をスイッチ処理部C130が行うことが可能になる。しかし、優先度情報の書き換えの有無および元の優先度情報の判定処理は、通信フレームのカプセル化に限定されるわけではない。
図11において、通信パケットの優先度情報を7から6に引き下げた場合の通信フレームの構成例を示す。優先度情報の書き換えは、元の優先度情報が格納されているヘッダーでは行わず、新たに優先度情報が格納されるヘッダーを追加する。新たな優先度情報が格納されるヘッダーの前には、元の通信フレームの宛先アドレスと送信先アドレスが書き込まれ、カプセル化が実行される。通信パケットの優先度は新たな優先度情報が格納されているヘッダーで判定される。また、優先度の変更履歴の有無は、新たな優先度情報が格納されているヘッダーの次の宛先アドレスの有無によって判定される。新たな優先度情報が格納されているヘッダーの次に宛先アドレスが存在する場合には、宛先アドレスの隣の送信先アドレスの隣の優先度情報が格納されているヘッダーの優先度情報によって、通信パケットの元の優先度が判定される。なお、図11の実施態様は第一実施形態にも適用される。
以上のように、第二実施形態の構成によれば、高優先度通信専用時間内の制限時間になった場合には、スイッチ処理部C130は、当該通信パケットを優先用バッファ部C141に格納するとともに、VLANプライオリティ番号を1つ下げる。そして、スイッチ処理部C130は、VLANプライオリティ番号を7から6に1つ下げた通信パケットを専用バッファ部C145に格納する。スイッチ処理部C130は、優先用バッファ部C141からVLANプライオリティ番号7の通信パケットを通信し、通信が失敗した場合は専用バッファ部C145からVLANプライオリティ番号を7から6に1つ下げた通信パケットを通信する。スイッチ処理部C130は、いずれかの通信が成功したら、通信に成功していない優先用バッファ部C141または専用バッファ部C145に格納されている通信パケットを削除する。これによって、スイッチ処理部C130は同一のデータを有する通信パケットが二重に送信されることを防止する。また、スイッチ処理部C130は高優先度通信専用時間が終了する前に、上記処理を実行するために、第一実施形態による一時退避用バッファ部C144への退避処理等の遅延が発生しないので、リアルタイム性を改善することが可能になる。
また、最上位から次の優先順位に書き換えられた通信パケットが専用バッファ部C145を介して出力された場合であっても、中継器C100が複数接続されている場合の後段の中継器C100では、サイクル内で送信できない場合も想定される。この場合には、他の通信等の影響が原因として考えられる。優先順位が書き換えられた通信パケットが現在のサイクル内で送信できない場合は、次の通信サイクルの高優先度通信専用時間の後の時間帯に送信されることになるので、リアルタイム性が損なわれてしまう。そこで、上記第二実施形態によれば、優先順位が書き換えられた通信パケットの優先順位を元の優先順位に書き換え、元の優先順位が例えば最高順位であれば、通信パケットを優先用バッファ部C141に移動させて、格納する。したがって、次の通信サイクルで、当該通信パケットは高優先度通信専用時間において優先的に送信されることが可能になる。
図12は、通信端末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の改良された機能は車載ネットワークにおいても利用することが可能である。
図13は車載ネットワークの一例を図示するものである。図8の構成には、カメラS100、ECU(Electronic Control Unit:E100、E200、E300、E400)、センサS200、SW(車載スイッチングハブ:A100、A200)が含まれる。さらに、図13の構成には、GW(車載ゲートウェイ:A300)、RT(車載ルータ:A400)、通信モジュールT100、GWに接続されるCAN(Controller Area Network:N100)が含まれる。
図13の車載ネットワークでは、当該TSNの改良された機能は、車載スイッチングハブA100、A200、車載ゲートウェイA300および車載ルータA400に実装することが可能である。
したがって、ECU(E100、E200、E300、E400)、通信モジュールT100およびCAN(N100)間で高優先度に設定された通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、以下の処理を実行する。すなわち、高優先度に設定された通信パケットの優先度を一段下げる処理を実行することで、遅延を最小限にすることが可能になる。また、TSNの高優先度通信専用時間帯において通信パケットの数および通信間隔を調節する必要がなくなるので、通信資源を効率的に使用することが可能となる。
なお、上述した実施形態では、VLANプライオリティ番号が7である通信パケットの優先度を1つ下げる例について説明したが、VLANプライオリティ番号が6〜1の通信パケットの優先度を1つ下げる構成とすることも可能である。この場合には、VLANプライオリティ番号ごとに専用の通信時間帯が設定されていてもよい。また、複数のVLANプライオリティ番号ごとに専用の通信時間帯が設定されていてもよい。
なお、各通信パケットには、VLANプライオリティ番号の他にサイクル番号を特定するためのサイクル番号識別子が含まれる構成とすることも可能である。
(比較例)
次に、本実施形態が適用されない比較例について、図14から図18を用いて説明する。図14は比較例に係る通信システム1000’の一例を図示する。通信システム1000’には、通信端末1〜N+1(Nは1以上の自然数)と、通信端末1〜N+1間で送受信される通信パケットを中継する中継器C’100、中継器C’200および中継器C’300が含まれる。図14では、中継器が3台開示されているが1台以上であれば任意の数の中継器が配置されてよい。なお、通信パケットは有線または無線で伝送されることが可能である。
図15はTSNとしての通信システム1000’の時間分割方法の説明として、VLAN(Virtual Local Area Network)プライオリティ番号(PCP: Priority Code Point)で優先度を定めた例を示している。ここでは図15に示したように、優先度がもっとも高い通信を、VLANプライオリティ番号を7とし、6、5、4と番号の降順に優先度が下がり、VLANプライオリティ番号0がもっとも優先度が低い通信としている。
また、VLANプライオリティ番号は任意の数字を取ることができ、高優先度通信専用のVLANプライオリティ番号は7に限定されるわけではない。
図16は、通信端末Nから通信端末N+1にVLANプライオリティ番号7の通信パケットP1sおよびVLANプライオリティ番号0〜6のいずれかの通信パケットP2sを送信する場合の比較例の動作を示した図である。
通信端末NからVLANプライオリティ番号7を有する通信パケットP1sが中継器C’100に送信され、中継器C’100は通信パケットP1sを通信パケットP1s’として中継器C’200に送信する。中継器C’200は通信パケットP1s’を通信パケットP1s’’として中継器C’300に送信する。中継器C’300は通信パケットP1s’’を通信パケットP1s’’’として通信端末N+1に送信しようとするが、高優先度通信専用時間帯に通信できないことを認識する。すると、中継器C’300は通信パケットP1s’’を次の通信サイクルである通信サイクルN+1の高優先度通信専用時間帯で通信パケットP1s’’’として通信端末N+1に送信する。
なお、図16のteは、中継器C’300が通信パケットP1s’’の受信直後に通信パケットP1s’’を通信パケットP1s’’’として送信した場合に通信端末N+1で予想される受信時刻である。また、図16のtrは、中継器C’300が通信パケットP1s’’の受信後に、次の通信サイクルで通信パケットP1s’’を通信パケットP1s’’’として送信した場合に通信端末N+1が当該通信パケットP1s’’’を受信する時刻である。このように、最高優先度で送信した通信パケットに伝搬遅延が発生する場合がある。
図17は、プライオリティ7の高優先度通信専用時間帯に通信パケットを送信する場合の比較例におけるさまざまな状態を示す図である。
図17(a)は、プライオリティ7の高優先度通信専用時間帯に通信パケットを均等な間隔で送信する例を示している。図17(b)は、データ量が多い場合を示しており、プライオリティ7の高優先度通信専用時間帯に通信パケット数が増加している状況を示している。この場合に何らかの原因で通信パケットの伝送に遅延が発生すると、伝搬遅延が重なり、例えば、通信パケットP22’が高優先度通信専用時間帯に送信することができない状況が発生する。この場合の対策としては、図17(c)に示すように、高優先度通信専用時間帯に送信する通信パケットの数を減らして、高優先度通信専用時間帯に送信するデータ量を減らす必要がある。このように、図17(c)に示すように、高優先度通信専用時間帯に送信するデータ量を減らすことによって、伝搬遅延が重なった通信パケットP16’を高優先度通信専用時間帯に送信することが可能になる。しかし、通信パケットの間隔を広げてデータ量を減らすことになるので、本来の通信ネットワーク帯域を十分に活用することができない。
図18は、スイッチングHUBやルータ、ゲートウェイ等の比較例の中継器C’100の構成イメージをブロック図で示したものである。なお、中継器C’200および中継器C’300も中継器C’100と同一の構成を有する。中継器C’100は入力ポート部C’111、入力バッファ部C’120、スイッチ処理部C’130、出力バッファ部C’140、出力ポート部C’112を含んで構成される。なお、ネットワークの使用状況や中継器の処理の状況により、中継器ではすぐにスイッチ処理やネットワークへの通信パケットの出力ができないこともあるため、中継器内に入出力用にバッファを持つ構成としている。さらに、出力バッファ部C’140については、1つの出力ポート部C’112に対して複数のバッファを持ち、バッファからの出力順を調整することで、通信パケットの優先制御を行う構成としている。
入力ポート部C’111には前段の電子機器から送信される通信パケットが随時入力される。
入力バッファ部C’120には、入力ポート部C’111に入力された通信パケットが中継器C’100で処理が実行されるまでバッファリングされる。
スイッチ処理部C’130は、入力バッファ部C’120にバッファリングされた通信パケットの宛先アドレスを抽出し、当該宛先アドレスを有する端末に対する接続先である出力ポート部C’112の出力バッファ部C’140に通信パケットを出力する。
この場合に、スイッチ処理部C’130は通信パケットのVLANプライオリティ番号も抽出し、VLANプライオリティ番号に対応した出力バッファ部C’140のバッファに当該通信パケットを出力する。
出力バッファ部C’140には、一例として、優先用バッファ部C’141、通常用バッファ部C’142、低速用バッファ部C’143が含まれる。優先用バッファ部C’141は、VLANプライオリティ番号の優先度が最も高い通信パケットが格納されるバッファ部である。例えば、VLANプライオリティ番号7の通信パケットが格納される。通常用バッファ部C’142および低速用バッファ部C’143に格納される通信パケットは、その他のVLANプライオリティ番号に対応する。例えば、通常用バッファ部C’142はVLANプライオリティ番号6〜4に対応し、低速用バッファ部C’143はVLANプライオリティ番号3〜0に対応するが、これに限定されるわけではない。
したがって、スイッチ処理部C’130は、VLANプライオリティ番号7の通信パケットを検出した場合には、当該通信パケットを優先用バッファ部C’141に出力する。
出力バッファ部C’140は、通信フレームの各サイクルの先頭にある高優先度通信専用時間帯に優先用バッファ部C’141に格納されている通信パケットを出力ポート部C’112に出力する。また、出力バッファ部C’140は、各サイクルの高優先度通信専用時間帯以外の時間帯に、通常用バッファ部C’142および低速用バッファ部C’143に格納される通信パケットを優先度順に出力ポート部C’112に出力する。
なお、各サイクルで送信できなかった通信パケットは次のサイクルで送信する。例えば、高優先度通信専用時間帯に通信パケットの送信が完了しない場合には、当該通信パケットは、次のサイクルの高優先度通信専用時間帯に送信される。また、高優先度通信専用時間帯以外の時間帯送信されるべき通信パケットの送信が当該時間帯で完了しない場合には、当該通信パケットは、次のサイクルの高優先度通信専用時間帯以外の時間帯で送信される。
以下に、本実施形態の中継器C100および通信システム1000の特徴について記載する。
本開示の第1の態様に係る中継器C100は、通信パケットを優先度順に伝送するための優先度情報を有する通信パケットに対して、優先度情報に対応する専用の通信時間帯を通信サイクルに含む通信方式を用いる。通信パケットを中継する中継器C100は、入力された通信パケットから通信パケットの優先度情報を抽出し、優先度情報に対応する、出力バッファ部C140のバッファ部に通信パケットを出力するスイッチ処理部C130を含む。スイッチ処理部C130は、優先度情報を有する通信パケットが優先度情報に対応する専用の通信時間帯に送信完了するか否かを判定する。通信パケットが優先度情報に対応する専用の通信時間帯に送信完了できない場合には、スイッチ処理部C130は、通信パケットの優先度情報を下げ、通信パケットを下げられた優先度情報に対応する、出力バッファ部C140のバッファ部に移動させる。
上記構成によれば、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にし、高優先度通信専用時間帯の通信資源を効率的に使用することが可能となる。
本開示の第2の態様に係る中継器C100は、第1の態様に係る中継器C100に関し、出力バッファ部C140は、下げられた優先度に対応する専用の時間帯に優先度情報が下げられた通信パケットを送信する。
上記構成によれば、異なる優先度に対応する専用の時間帯が通信サイクルに複数含まれる場合に、下げられた優先度に対応する専用の時間帯が存在する。したがって、所定の条件の場合に通信パケットの優先度を下げて通信遅延を低減させるように通信を継続することが可能になる。
本開示の第3の態様に係る中継器C100は、第2の態様に係る中継器C100に関し、スイッチ処理部C130は、下げられた優先度情報に対応する通信パケットが複数存在する場合には、優先度情報が下げられた通信パケットを優先して送信する。
上記構成によれば、通信パケットの優先度が下げられた場合にも、下げられた優先度を有する通信パケットの中で、優先度が下げられた通信パケットが優先的に送信されるので、高優先度に設定した通信パケットの伝搬遅延を最小限にすることが可能になる。また、上記構成によれば、高優先度に設定した専用の時間帯の通信資源を効率的に使用することが可能となる。
本開示の第4の態様に係る中継器C100は、第2の態様に係る中継器C100に関し、スイッチ処理部C130は、最高の優先度情報を有する通信パケットが自中継器から送信宛の通信端末に転送される制限時間を演算する。スイッチ処理部C130は、最高の優先度情報に対応する専用の通信時間帯の終了時刻から制限時間までさかのぼった時間帯に、最高の優先度情報を有する通信パケットを転送する場合には、以下の処理を実行する。スイッチ処理部C130は、最高の優先度情報を有する通信パケットを前記出力バッファ部C140の優先用バッファ部C141に格納する。さらに、スイッチ処理部C130は、通信パケットの優先度情報を最高の優先度情報の次の優先度を有する優先度情報に書き換えて出力バッファ部C140の専用バッファ部C145に格納する。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットを送信する場合には、優先用バッファ部C141に格納し、最高の優先度情報の次の優先度に優先度情報に書き換えて、専用バッファ部C145にも格納する。したがって、最高の優先度情報を有する通信パケットを高優先度通信専用時間または高優先度通信専用時間の次の時間帯に送信できるので、最高の優先度に設定した通信パケットの伝搬遅延を最小限にすることが可能になる。
本開示の第5の態様に係る中継器C100は、第4の態様に係る中継器C100に関し、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットを送信する。スイッチ処理部C130は、最高の優先度情報に対応する専用の通信時間帯に通信パケットが送信完了した場合には、専用バッファ部C145に格納された優先度情報が書き換えられた通信パケットを削除する。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットの送信が完了する場合には、通信パケットの二重送信を防ぐために、専用バッファ部C145に格納された優先度情報が書き換えられた通信パケットを削除する。
上記の制限時間LTは、高優先度通信専用時間内で通信を終了することができない理論的な値となる。つまり、理論的には上記制限時間LTを過ぎた場合は、通信パケットの優先度を下げ、一段下のバッファに格納する処理を行うべきである。しかし、通常、中継器C100の転送時間は常に一定ではなく、処理負荷などによって変化するため、上記制限時間LTを過ぎていても、高優先度通信専用時間内での通信が完了する可能性も考えられる。このため高優先度通信専用時間内での通信は試みるべきであり、通信が成功すれば、遅延時間を最小にして通信を完了させることが可能となる。
本開示の第6の態様に係る中継器C100は、第5の態様に係る中継器C100に関し、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットの送信を送信する。スイッチ処理部C130は、当該通信パケットが最高の優先度情報に対応する専用の通信時間帯に完了しない場合には、専用バッファ部C145に格納された優先度情報が書き換えられた通信パケットを送信する。そして、スイッチ処理部C130は、優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットを削除する。
上記構成によれば、制限時間LT内に最高の優先度情報を有する通信パケットの送信が完了しない場合には、専用バッファ部C145に格納された優先度情報が書き換えられた通信パケットを送信し、優先用バッファ部C141に格納された通信パケットを削除する。この構成によって、通信パケットの二重送信を防ぐことが可能になる。また、高優先度通信専用時間内での通信を試みつつ、通信が完了できなかった場合は、無駄な遅延時間を必要とせず優先度を下げる処理を行えるため、遅延時間を最小にして通信を完了させることが可能となる。
本開示の第7の態様に係る中継器C100は、第1の態様から第6の態様に係る中継器C100のいずれかに関する。スイッチ処理部C130は、1通信サイクルの終了時に、優先度情報が書き換えられた通信パケットが、書き換えられた優先度情報に対応する、出力バッファ部C140のバッファ部に存在するか否かを判定する。優先度情報が書き換えられた通信パケットが、存在する場合には、当該通信パケットの優先度情報を書き換えられる前の優先度情報に戻し、当該通信パケットを書き換えられる前の優先度情報に対応する、出力バッファ部C140のバッファ部に移動させる。
1通信サイクルの終了時に、優先度情報が書き換えられた通信パケットが、出力バッファ部C140の低優先度のバッファ部に存在する場合には、次の通信サイクルにおいて、当該通信パケットの送信タイミングが遅れてしまう。しかし、上記構成によれば、優先度情報を書き換えられる前の優先度情報に戻し、書き換えられる前の優先度情報に対応する高優先度のバッファ部に移動するので、送信タイミングが遅れずにリアルタイム性を損なわないようにすることが可能である。
本開示の第8の態様に係る中継器C100は、第7の態様に係る中継器C100に関する。スイッチ処理部C130は、1通信サイクルの開始時に優先用バッファ部C141に格納された最高の優先度情報を有する通信パケットが存在する場合には、当該最高の優先度情報を有する通信パケットを、最高の優先度情報に対応する専用の通信時間帯に送信する。
上記構成によれば、優先度情報が書き換えられる前の最高の優先度情報に戻った通信パケットは、最高の優先度情報に対応する専用の通信時間帯に送信されるので、送信タイミングが遅れずにリアルタイム性を損なわないようにすることが可能である。
本開示の第9の態様に係る中継器C100は、第1の態様から第8の態様に係る中継器C100のいずれかに関する。通信方式は、最も優先度が高い通信パケットを伝送するための高優先度通信時間帯およびその他の優先度を有する通信パケットを伝送するための通信時間帯を通信サイクルに有し、高優先度通信時間帯は各通信サイクルの先頭に位置する。
上記構成によれば、通信サイクルには、最も優先度が高い通信パケットを伝送するための高優先度通信時間帯が設けられているので、緊急な通信を必要とする通信パケット等の重要な通信パケットの伝送の遅延を低減することが可能になる。また、上記構成によれば、通信サイクルの先頭に緊急な通信を必要とする通信パケット等の重要な通信パケットの通信時間帯が設けられるので、優先的に当該通信パケットが送信されることが可能になる。さらに、当該優先度から優先度を下げられた通信パケットも迅速に送信されることが期待されるので通信性能の向上が可能となる。
本開示の第10の態様に係る通信システム1000は、第1の態様から第9の態様のいずれかに記載の中継器C100と、中継器C100に直接的または間接的に接続される、通信パケットを送受信する少なくとも一つ以上の通信端末Nを含む。
上記構成によれば、高優先度に設定した通信パケットが、伝搬遅延により高優先度通信専用時間内に送れなくなった場合には、中継器で優先度を一段下げることで、遅延を最小限にし、高優先度通信専用時間帯の通信資源を効率的に使用することが可能となる。
以上説明したように、本実施形態によって、TSNの高優先度通信専用時間内で送信できなかった通信パケットの遅延を最小限に抑えることが可能になる。遅延の発生頻度、影響、および、許容時間はネットワークの設計およびアプリケーションによって異なってくるが、本実施形態を導入することによって得られる効果がある。車両関連であれば、ADASや自動運転など、遅延が致命的となるアプリケーションの普及が進むことが想定されるので、本実施形態を導入することによって得られる効果は大きい。
また、以上説明したように、本実施形態によって、TSNの高優先度通信専用時間の帯域を効率的に利用することが可能になる。最適な帯域は、端末数、通信量、それぞれのアプリケーションが必要とする帯域によって異なってくるが、本実施形態を導入することによって効果が得られる。IT系ネットワークおよび車載ネットワーク共に今後も通信量の増加が懸念されるので、本実施形態を導入することによって得られる効果は大きい。特に、車両関連であれば、ADAS、自動運転、および、V2Xによる情報の取得/送信など、これまで搭載されていなかったアプリケーションの普及が進み、通信量の増加が想定されるので、本実施形態を導入することによって得られる効果は大きい。
以上、さまざまな実施例を説明したが、それらの実施例の一部または全部を組み合わせて新たな実施例とすることもできる。