本実施の形態では、図1に示すようなネットワークを想定する。本実施の形態では、中継装置としてスイッチを想定している。スイッチSW1には、ノードN1、N2及びN3が接続されており、さらに他のスイッチSW2にも接続されている。スイッチSW2には、スイッチSW5、SW4及びSW3が接続されている。スイッチSW3には、ノードN4、N5及びN6が接続されている。スイッチSW2、SW4及びSW5にもノードが接続されているが、ここでは図示及び説明を省略している。そして、本実施の形態では、ノードN6は、センサ及びアクチュエータとして機能して、例えば定期的に又は要求に応じて測定値などを出力するものとする。また、ノードN2は、コントローラとして機能して、測定値をセンサとして機能するノードN6から取得し、当該測定値に応じた制御値を生成してアクチュエータとして機能するノードN6に当該制御値を送信するものとする。
ノードN2は、例えば図2に示すような構成を有する。ノードN2は、通信制御部100と、通信制御部100が制御パケットを送信する際等に用いるデータを格納する第1データ格納部110と、所定の制御処理を実施するコントローラ130と、コントローラ130の出力データ及び他のノードから受信したデータを格納する第2データ格納部120とを有する。
また、ノードN6は、例えば図3に示すような構成を有する。ノードN6は、通信制御部200と、通信制御部200が制御パケットを送信する際等に用いるデータを格納する第1データ格納部210と、所定の物理量等を計測するセンサ230と、コントローラ130からの指示に応じて所定の動作を行うアクチュエータ240と、センサ230の出力データ及び他のノードから受信したデータを格納する第2データ格納部220とを有する。
図4に、スイッチの機能ブロック図を示す。スイッチSWは、複数の入力ポート301(図4では301a及び301b)と、複数の検出部303(図4では303a及び303b)と、スイッチ部307と、複数の出力ポート309(図4では309a及び309b)と、制御パケット処理部305と、遅延DB311と、遅延演算部313とを有する。
各検出部303は、入力ポートの何れかに対応付けられており、その入力ポートで受信したパケットの中で以下で説明する制御パケットを検出すると、当該制御パケットのデータを制御パケット処理部305に出力する。また、検出部303は、受信した他のパケットをスイッチ部307に出力する。スイッチ部307は、受信したパケットの宛先アドレスから出力すべき出力ポートを特定し、その出力ポートにそのパケットを出力する。出力ポート309は、スイッチ部307からパケットを受信すると、キュー(バッファなどの記憶装置)に格納し、その後所定のタイミングでキューから読み出して出力する。
制御パケット処理部305は、検出部303から制御パケットを受信すると、以下で述べる処理を実施して、スイッチ部307に出力する。なお、制御パケット処理部305は、宛先アドレス等から、該当する出力ポートの識別子(例えば番号)を特定可能になっているものとする。さらに、制御パケット処理部305は、出力ポート309の制御をも行う。
なお、制御パケット処理部305は、遅延DB311に格納されているデータを用いて処理を実施する場合もある。また、遅延演算部313は、遅延DB311に格納するデータを生成する。
図5に、遅延DB311に格納されるデータの一例を示す。図5の例では、出力ポート毎に、リンクスピード(例えばMbps)と、MTU(バイト)と、当該出力ポートから出力する際に生じ得る予測遅延時間とを登録するようになっている。例えば、予測遅延時間以外のデータについては、予め格納しておき、遅延演算部313が、MTU/リンクスピード/8により予測遅延時間を算出して、遅延DB311に登録する。なお、遅延時間演算部313が、出力ポート毎に、リンクスピード及びMTUを収集して、遅延DB311に登録するようにしても良いし、管理者が設定するようにしても良い。
さらに、遅延DB311には、図6に示すようなデータも格納されている。図6の例では、送信元ノードと宛先ノードとの組み合わせ毎に、伝送遅延時間が登録されるようになっている。伝送遅延時間は、送信元ノードから宛先ノードまでパケットを送信した場合に、経路途中のスイッチで全く衝突などが生じなかった場合にかかる時間である。これはケーブルの伝送遅延とスイッチの最小転送遅延との総和である。例えば、図6に示すように、送信元ノードと宛先ノードとの組み合わせ毎に、測定を行って設定するようにしても良いし、場合によっては各組み合わせでの測定結果のうち最大値を、1つだけ設定するようにしても良い。
また、スイッチSWの各出力ポート309は、図7に示すような構成を有する。出力ポート309は、例えば優先度毎に設けられた出力キュー3093(図7では3093a及び3093b)と、出力ポート309についての制御を行う出力制御部3091と、出力キュー3093に接続されており且つ出力キュー3093から出力されるデータを出力する出力部3029とを有する。例えば、本実施の形態では、実時間で送信すべき優先度の高いパケットを格納する出力キュー3093aと、それ以外の優先度の低いパケットを格納する出力キュー3093bとが設けられている。但し、さらに多い優先度に対応するように出力キューを設けるようにしても良い。
出力制御部3091は、出力キュー3093からのパケットの出力を制御すると共に、以下で述べるように低い優先度のパケットを格納する出力キュー3093bからのパケット出力を停止するような制御を行う。なお、例えば出力制御部3091は、制御パケットを送出する場合には、以下で述べるように制御パケットに含まれる制御時間(以下で述べる前方予測遅延時間又は後方予測遅延時間)から所定の時間差し引くような演算を実施した上で、制御パケット中の数値(制御時間)を更新するような処理を実施することもある。
次に、図8乃至図44を用いて、図1に示したネットワークの動作を説明する。まず、制御パケットの1つである要求パケットをノードN2からノードN6へ送信する処理について説明する。ノードN2の通信制御部100は、ノードN6宛の要求パケットを生成して、スイッチSW1に送信する(図8:ステップS1)。要求パケットは、例えば図9に示すようなフォーマットのパケットである。図9の例では、宛先ノード(Dest)N6と、送信元ノード(Src)N2と、制御パケットの型(Type)であり、要求パケットを表すInquireと、送信元ノードN2から宛先ノードN6までの前方予測遅延時間Rml1と、宛先ノードN6から送信元ノードN2までの後方予測遅延時間Rml2とが含まれる。なお、ノードN2から送出された段階では、Rml1及びRml2は共に0である。
スイッチSW1の入力ポート301は、ノードN2から要求パケットを受信すると、検出部303に出力する(ステップS3)。検出部303は、要求パケットであることを検出すると、制御パケット処理部305に出力する。制御パケット処理部305は、検出部303から要求パケットを受信すると、要求パケット処理を実施する(ステップS5)。要求パケット処理については、図10及び図11を用いて説明する。
まず、制御パケット処理部305は、要求パケットの宛先アドレスから、当該要求パケットを出力する出力ポートの出力ポート番号を特定する(図10:ステップS31)。例えばスイッチ部307から宛先アドレスに対応する出力ポートの番号を得るようにしても良い。そして、制御パケット処理部305は、遅延DB311から、特定された出力ポートの予測遅延時間を読み出す(ステップS33)。その後、制御パケット処理部305は、要求パケットに含まれている前方予測遅延時間Rml1に、取得された予測遅延時間を加算する(ステップS35)。例えば、図9のような状態でRml1=0であって、図5に示すように出力ポートのポート番号が「2」で予測遅延時間が「120」であれば、加算結果は「120」となる。
そして、制御パケット処理部305は、加算後の前方予測遅延時間を要求パケットに設定する(ステップS37)。この例であれば、図11に示すように、Rml1が120と設定される。そして図8の処理に戻る。
図8の処理の説明に戻って、制御パケット処理部305は、処理後の要求パケットをスイッチ部307に出力し、スイッチ部307は処理後の要求パケットを該当する出力ポート309に出力する。そうすると、出力ポート309は、通常の優先度のパケットとして要求パケットを出力キュー3093に格納する。その後、出力制御部3091は、通常どおり出力キュー3093に指示を出力して、要求パケットを出力する(ステップS7)。ここではスイッチSW2が出力先のスイッチとなる。
スイッチSW2は、スイッチSW1から要求パケットを受信し(ステップS9)、当該要求パケットについて要求パケット処理を実施し(ステップS11)、処理後の要求パケットを、該当する出力ポートから出力する(ステップS13)。ステップS9乃至S13については、スイッチSW1についての処理と同様であるので、詳細な説明については省略する。スイッチSW2の出力先スイッチは、スイッチSW3である。
スイッチSW3は、スイッチSW2から要求パケットを受信する(ステップS15)。処理は端子Aを介して図12の処理に移行する。
図12の処理の説明に移行して、スイッチSW3は、受信した要求パケットについて要求パケット処理を実施し(ステップS17)、処理後の要求パケットを、該当する出力ポートから出力する(ステップS19)。ステップS15乃至S19についても、スイッチSW1についての処理と同様であるので、詳細な説明については省略する。スイッチSW3の出力先はノードN6である。
ノードN6は、要求パケットを受信すると(ステップS21)、ノードN6の通信制御部200は、受信した要求パケットに含まれている前方予測遅延時間Rml1の値を、宛先ノードの識別子に対応付けて後方予測遅延時間として第1データ格納部210に格納する(ステップS23)。処理は端子Bを介して図15の処理に移行する。
なお、例えば図13に示すように、通信相手のノードと、方向と、予測遅延時間(最大予測遅延時間とも呼ぶ)とを第1データ格納部210に格納する。要求パケットを受信したノードにとっては、要求パケットの送信元ノードから実時間パケットを受信する際の予測遅延時間を得たことになるので、方向の列にはバックワードを表す「B」を設定して、後方予測遅延時間であることを表すものとする。図13の2行目のレコードは、この段階では登録されない。但し、逆方向のデータについては、方向の列にはフォーワードを表す「F」を設定して、前方予測遅延時間であることを表すものとする。
ここまでの処理について再度図14を用いて概観しておく。ノードN2から出力された要求パケットには、前方予測遅延時間Rml1=0、後方予測遅延時間Rml2=0と設定されている。要求パケットがスイッチSW1に到達すると、予測遅延時間Delay=120が前方予測遅延時間Rml1に加算されて、加算後の前方予測遅延時間Rml1=120が要求パケットに設定され、要求パケットは出力される。次に、要求パケットがスイッチSW2に到達すると、予測遅延時間Delay=72が前方予測遅延時間Rml1=120に加算されて、加算後の前方予測遅延時間Rml1=192が要求パケットに設定され、要求パケットは出力される。さらに、要求パケットがスイッチSW3に到達すると、予測遅延時間Delay=72が前方予測遅延時間Rml1=192に加算されて、加算後の前方予測遅延時間Rml1=264が要求パケットに設定され、要求パケットは出力される。このようにして、前方予測遅延時間Rml1=264が、ノードN6に通知されるので、ノードN6の通信制御部200は、ノードN2についての後方予測遅延時間として上で述べたように第1データ格納部210に格納する。
図15の処理の説明に移行して、ノードN6の通信制御部200は、受信した要求パケットに含まれる前方予測遅延時間Rml1が設定された、制御パケットである応答パケットを、要求パケットの送信元ノードであるノードN2宛に送信する(ステップS41)。具体的にはスイッチSW3へ送信する。例えば、応答パケットのヘッダフォーマットの一例を図16に示す。図16の例では、宛先ノード(Dest)N2と、送信元ノード(Src)N6と、制御パケットの型(Type)であるResponseと、宛先ノードN2から送信元ノードN6までの前方予測遅延時間Rml1と、送信元ノードN6から宛先ノードN2までの後方予測遅延時間Rml2とが含まれる。なお、ノードN6から送出された段階では、Rml1=264であり、Rml2=0である。
その後スイッチSW3の入力ポート301は、応答パケットを受信すると、検出部303に出力する(ステップS43)。検出部303は、応答パケットを受信したことを検出すると、制御パケット処理部305に応答パケットのデータを出力する。制御パケット処理部305は、応答パケットを受信すると、当該応答パケットについて応答パケット処理を実施する(ステップS45)。応答パケット処理については、図17及び図18を用いて説明する。
まず、制御パケット処理部305は、応答パケットの宛先アドレスから、当該応答パケットを出力する出力ポートの出力ポート番号を特定する(図17:ステップS71)。例えばスイッチ部307から宛先アドレスに対応する出力ポートの番号を得るようにしても良い。そして、制御パケット処理部305は、遅延DB311から、特定された出力ポートの予測遅延時間を読み出す(ステップS73)。その後、制御パケット処理部305は、応答パケットに含まれている後方予測遅延時間Rml2に、取得された予測遅延時間を加算する(ステップS75)。例えば、Rml2=0であって、予測遅延時間が「72」であれば、加算結果は「72」となる。
そして、制御パケット処理部305は、加算後の後方予測遅延時間を応答パケットに設定する(ステップS77)。この例であれば、図18に示すように、Rml2が72と設定される。そして図15の処理に戻る。
図15の処理の説明に戻って、制御パケット処理部305は、処理後の応答パケットをスイッチ部307に出力し、スイッチ部307は処理後の応答パケットを該当する出力ポート309に出力する。そうすると、出力ポート309は、通常の優先度のパケットとして応答パケットを出力キュー3093に格納する。その後、出力制御部3091は、通常どおり出力キュー3093に指示を出力して、応答パケットを出力する(ステップS47)。ここではスイッチSW2が出力先のスイッチとなる。
スイッチSW2は、スイッチSW3から応答パケットを受信し(ステップS49)、当該応答パケットについて応答パケット処理を実施し(ステップS51)、処理後の応答パケットを、該当する出力ポートから出力する(ステップS53)。ステップS49乃至S53については、スイッチSW3についての処理と同様であるので、詳細な説明については省略する。スイッチSW2の出力先スイッチは、スイッチSW1である。
スイッチSW1は、スイッチSW2から応答パケットを受信する(ステップS55)。処理は端子Cを介して図19の処理に移行する。
図19の処理の説明に移行して、スイッチSW1は、受信した応答パケットについて応答パケット処理を実施し(ステップS81)、処理後の応答パケットを、該当する出力ポートから出力する(ステップS83)。ステップS55、S81及びS83についても、スイッチSW3についての処理と同様であるので、詳細な説明については省略する。スイッチSW1の出力先はノードN2である。
ノードN2は、応答パケットを受信すると(ステップS85)、ノードN2の通信制御部100は、受信した応答パケットに含まれている前方予測遅延時間Rml1の値及び後方予測遅延時間Rml2の値を、送信元ノードの識別子に対応付けて第1データ格納部110に格納する(ステップS87)。
なお、例えば図20に示すように、通信相手のノードと、方向と、予測遅延時間(最大予測遅延時間とも呼ぶ)とを第1データ格納部110に格納する。応答パケットに含まれるRml1の値は、ノードN6へパケットを送信する際に生じ得る遅延時間である前方予測遅延時間となり、方向はフォーワードを表す「F」となる。また、応答パケットに含まれるRml2の値は、ノードN6からパケットを受信する際に生じ得る遅延時間である後方予測遅延時間となり、方向はバックワードを表す「B」となる。
ここまでの処理について再度図21を用いて概観しておく。ノードN6から出力された応答パケットには、後方予測遅延時間Rml2=0、前方予測遅延時間Rml1=264と設定されている。応答パケットがスイッチSW3に到達すると、予測遅延時間Delay=72が後方予測遅延時間Rml2に加算されて、加算後の後方予測遅延時間Rml2=72が応答パケットに設定され、当該応答パケットは出力される。次に、応答パケットがスイッチSW2に到達すると、予測遅延時間Delay=120が後方予測遅延時間Rml2=72に加算されて、加算後の後方予測遅延時間Rml2=192が応答パケットに設定され、応答パケットは出力される。さらに、応答パケットがスイッチSW1に到達すると、予測遅延時間Delay=120が後方予測遅延時間Rml2=192に加算されて、加算後の後方予測遅延時間Rml2=312が応答パケットに設定され、応答パケットは出力される。このようにして、前方予測遅延時間Rml1=264及び後方予測遅延時間Rml2=312が、ノードN2に通知されるので、ノードN2の通信制御部100は、ノードN6についての前方予測遅延時間及び後方予測遅延時間として上で述べたように第1データ格納部110に格納する。
その後、ノードN2の通信制御部100は、後方予測遅延時間Rml2を含む応答確認パケットを生成して、ノードN6宛に送信する(ステップS89)。具体的には、スイッチSW1に出力する。例えば、図22に示すような応答確認パケットが出力される。図22の例では、宛先ノード(Dest)N6と、送信元ノード(Src)N2と、制御パケットの型(Type)であり、応答確認パケットを表すAckと、送信元ノードN2にとっての前方予測遅延時間Rml1(宛先ノードN6にとっての後方予測遅延時間)と、送信元ノードN2にとっての後方予測遅延時間Rml2(宛先ノードN6にとっての前方予測遅延時間)とが含まれる。
そうすると、スイッチSW1の入力ポート301は、応答確認パケットを受信すると、検出部303に出力する。検出部303は、応答確認パケットを検出すると、制御パケット処理部305に出力する。制御パケット処理部305は、応答確認パケットであると判断すると、応答確認パケットに対しての処理はないのでそのままスイッチ部307に出力する。そうすると、スイッチ部307は、応答確認パケットを該当する出力ポート309に出力する。出力ポート309は、通常の優先度のパケットとして応答確認パケットを出力キュー3093に格納する。その後、出力制御部3091は、通常どおり出力キュー3093に指示を出力して、応答確認パケットを出力部3092から出力する(ステップS91)。ここではスイッチSW2が出力先のスイッチとなる。なお、応答確認パケットについては制御パケット扱いをしないようにしても良い。
スイッチSW2は、応答確認パケットを受信するとスイッチSW1と同様に、次のスイッチSW3に送信する(ステップS93)。スイッチSW3は、応答確認パケットを受信するとスイッチSW1と同様に、次の宛先であるノードN6に送信する(ステップS95)。ノードN6の通信制御部200は、応答確認パケットを受信すると(ステップS97)、当該応答確認パケットに含まれる後方予測遅延時間Rml2の値を、ノードN2にとっての前方予測遅延時間であるとして送信元ノードN2に対応付けて第1データ格納部210に格納する(ステップS99)。図13の例では、第2行目のデータが登録されるようになる。
ここまでの処理について再度図23を用いて概観しておく。すなわち、図23において矢印で示される経路で、応答確認パケットが送信され、ノードN6には、後方予測遅延時間Rml2のデータが新たに通知されるようになる。なお、応答確認パケットの通信経路上のスイッチでは特別な処理は行われない。
以上のような処理を実施することによって、ノードN2からノードN6へ実時間パケットを送信する際に用いられる前方予測遅延時間Rml1と、ノードN6からノードN2へ実時間パケットを送信する際に用いられる後方予測遅延時間Rml2とが双方のノードで共有されることになる。
次に、図24乃至図34を用いて、実時間パケットを送信する際の処理を説明する。例えば、コントローラ130から、アクチュエータ240に制御値を実時間パケットで出力するような場合に行われる前方通知を実施する場合について、最初に説明する。
本実施の形態では、前方通知を実施する場合には、実時間パケットを送信するタイミングから前方予測遅延時間前に、予告パケット(ならしパケットとも呼ぶ)を送信する。すなわち、ノードN2の通信制御部100は、実時間パケットを送信するタイミングから前方予測遅延時間前に、前方予測遅延時間を含む予告パケットを生成し、ノードN6宛に送信する(ステップS101)。具体的な宛先はスイッチSW1である。なお、前方予測遅延時間に伝送遅延時間を加算した値を制御時間として設定する場合もあるが、このことについては後に詳しく述べる。
予告パケットは、以下で説明するように、経路上の各スイッチに実時間パケット転送の準備を行わせるもので、実時間パケット送信より前方予測遅延時間前に送信される。これは、この予告パケットが優先度の高いパケットであったとしても最も遅延する場合には宛先のノードN6に到達するまでに前方予測遅延時間かかる可能性があるためである。予告パケットの送信と実時間パケットの送信との間隔が前方予測遅延時間未満になると、経路上のスイッチのうち宛先ノードに近いスイッチの方で準備が完了していない可能性が出てくるので、これを避けるためである。
例えば、図25に示すような予告パケットが送出される。図25の例では、宛先ノードN6(Dest)と、送信元ノード(Src)N2と、制御パケットの型(Type)であり、予告パケットを表すForwardと、これから行われる実時間パケットの送信方向を表すフラグFdir=0(0は前方通知であり1は後方通知を表す)と、経路上のスイッチに対する制御時間であるPause=264とが含まれる。Pauseの値は、ここでは前方予測遅延時間となる。但し、以下で述べるように、経路上で変更される場合もある。また、送信元ノードで調整されることもある。
そして、ノードN2の通信制御部100は、上で述べたように前方予測遅延時間だけ待機する(ステップS103)。前方予測遅延時間経過すると、通信制御部100は、例えばコントローラ130によって生成され且つ第2データ格納部120に格納されているデータから実時間パケットを生成して、ノードN6宛に送信する(ステップS105)。具体的な宛先はスイッチSW1である。
次に、図26乃至図29を用いて、予告パケットについての処理を説明する。スイッチSW1の入力ポート301が、予告パケットを受信すると(ステップS111)、検出部303に出力し、検出部303は、制御パケットである予告パケットであることを検出すると、予告パケットのデータを制御パケット処理部305に出力する。制御パケット処理部305は、検出部303から予告パケットのデータを受信すると、当該予告パケットのデータに対して予告パケット処理を実施する(ステップS113)。予告パケット処理については、図27を用いて説明する。
制御パケット処理部305は、予告パケットのFdirフラグから前方通知か否かを判断する(ステップS131)。前方通知ではあれば、制御パケット処理部305は、予告パケットの宛先アドレス(又は宛先ノードの識別情報の場合もある)から該当する出力ポートを特定し、制御対象出力ポートCPに設定する(ステップS133)。そして、ステップS137に移行する。一方、ここでは後方通知については詳しく述べないが、後方通知であれば、制御パケット処理部305は、予告パケットを受信した入力ポートに対応する出力ポート(又は、送信元アドレス(又は送信元ノードの識別情報)から該当する出力ポートを特定しても良い。)を、制御対象出力ポートCPに設定する(ステップS135)。そしてステップS137に移行する。
ステップS137では、制御パケット処理部305は、制御対象出力ポートCPに対して、低優先度のパケットのための出力キューからパケット出力を停止するように制御する(ステップS137)。基本的な方式の場合、制御パケット処理部305は、制御対象出力ポートCPに対して、送信元ノードと宛先ノードとの組み合わせに対応付けて遅延DB311に登録されている伝送遅延時間に、予告パケットに含まれる前方予測遅延時間を加算した時間の間、低優先度パケットのための出力キュー3093bからのパケットの出力を停止するように、出力制御部3091に指示する。出力制御部3091は、このような指示に応じて出力キュー3093bからのパケットの出力を、伝送遅延時間+前方予測遅延時間の間停止させる。この後、処理は、呼出元の処理に戻る。なお、出力制御部3091は、この時間が経過すれば、通常の状態に戻す。
図26の処理の説明に戻って、スイッチSW1の制御パケット処理部305は、予告パケットをスイッチ部307に出力し、スイッチ部307は、該当する出力ポート309に出力する。該当する出力ポート309は、優先度の高いパケットのための出力キュー3093aに格納し、送信の順番になると出力キュー3093aから読み出して、出力部3092から出力する(ステップS115)。ここでは、予告パケットはスイッチSW2へ送信される。
スイッチSW2は、スイッチSW1と同様に、予告パケットを受信すると(ステップS117)、予告パケット処理を実施し(ステップS119)、その後、予告パケットをスイッチSW3に送信する(ステップS121)。スイッチSW2でもスイッチSW1と同様に、伝送遅延時間+前方予測遅延時間の間、低優先度パケットのための出力キュー3093bからのパケット出力を停止させる。
さらに、スイッチSW3は、スイッチSW2と同様に、予告パケットを受信すると(ステップS123)、予告パケット処理を実施し(ステップS125)、その後、予告パケットをノードN6に出力する(ステップS127)。スイッチSW3でもスイッチSW1と同様に、伝送遅延時間+前方予測遅延時間の間、低優先度パケットのための出力キュー3093bからのパケット出力を停止させる。ノードN6は、予告パケットをスイッチSW3から受信し(ステップS129)、予告パケットのFdirフラグから、もうすぐ実時間パケットが送信されてくることを認識できる。
図24でも述べたように、ノードN2は、予告パケット送信後、前方予測遅延時間経過すると、データパケットである実時間パケットをノードN6宛に送信する。実時間パケットは優先度の高いパケットとして送信される。その場合には、図28に示すように、ノードN2は、実時間パケットを送信し(ステップS141)、スイッチSW1の入力ポート301は、この実時間パケットを受信する。実時間パケットはデータパケットであるから、検出部303は、スイッチ部307に出力し、スイッチ部307は、宛先アドレス等から出力ポートを特定し、実時間パケットを該当する出力ポート309に出力する。該当する出力ポートは、予告パケットと同一である。出力ポート309は、実時間パケットを受信すると、高優先度パケットのための出力キュー3093aに格納する。出力キュー3093aからのパケット出力は優先的に行われるので、実時間パケット到達時には、出力キュー3093aは空になっている可能性が高い。そこで、出力キュー3093aから実時間パケットは直ぐに読み出されて、出力部3092から出力される。すなわち、スイッチSW2に送信される(ステップS143)。
スイッチSW2は、実時間パケットを受信すると、スイッチSW1と同様に処理を行って、実時間パケットをスイッチSW3に転送する(ステップS145)。さらに、スイッチSW3は、実時間パケットを受信すると、スイッチSW1と同様に処理を行って、実時間パケットをノードN6に転送する(ステップS147)。ノードN6の通信制御部200は、実時間パケットを受信すると、当該実時間パケットのデータを第2データ格納部220に格納する(ステップS149)。この後、例えばアクチュエータ240は、第2データ格納部220に格納されている実時間パケットのデータを用いて、所定動作を実施する。
このように、各スイッチにおいて低優先度パケットのための出力キュー3093bからの出力が停止されている間に実時間パケットを転送することができるようになるので、非実時間パケットとの衝突を完全に回避できるようになる。すなわち、非常に短い伝送時間で実時間パケットを宛先ノードに届けることができるようになる。
なお、上で述べた処理のタイミングについて、図29を用いて説明する。図29では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケット及び実時間パケットが送信され、左から右の方向で時間が経過する状態を示している。また、矢印501は、予告パケットを表しており、矢印503は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケット及び実時間パケットが送信される前方通知であることを表している。ノードN2では、上でも述べたように、実時間パケット503を送信する前方予測遅延時間T1前に、予告パケット501を出力する。予告パケット501は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。また、各スイッチでは、予告パケットを受信すると、上で述べた処理を行って、前方予測遅延時間+ノードN2からノードN6への伝送遅延時間=T2だけ、低優先度パケットのための出力キュー3093bからのパケット出力を停止する。スイッチSW1では、信号505で示すように、ローとなっている時間T2だけ、低優先度パケットのパケット出力が停止される。同様に、スイッチSW2では、信号507で示すように、ローとなっている時間T2だけ、低優先度パケットのパケット出力が停止される。さらに、スイッチSW3では、信号509で示すように、ローとなっている時間T2だけ、低優先度パケットのパケット出力が停止される。そうすると、実時間パケット503が、各スイッチに到達するタイミングは、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。すなわち、実時間パケット503は、時間T3程度の低遅延時間でノードN6まで到達するようになる。なお、T3は、ノードN2からノードN6までの伝送遅延時間に相当する。
次に、例えば単位時間毎にノードN6のセンサ230で物理量等を計測して計測データを、ノードN2のコントローラ130側から取得するような場合、すなわち後方通知について図30乃至図33を用いて説明する。まず、ノードN2の通信制御部100は、例えばノードN6が実時間パケットを送信するタイミングより後方予測遅延時間だけ前に、当該後方予測遅延時間を含む予告パケットを生成し、ノードN6宛に送信する(図30:ステップS151)。例えば、図31に示すようなヘッダを有する予告パケットを送信する。図31の例では、宛先ノードN6(Dest)と、送信元ノード(Src)N2と、制御パケットの型(Type)であるForward(予告パケットを表す)と、これから行われる実時間パケットの送信方向を表すフラグFdir=1と、経路上のスイッチに対する制御時間であるPause=312とが含まれる。Pauseの値は、ここでは後方予測遅延時間となる。但し、後に述べるように、経路上で変更される場合もある。さらに、後に述べるように、後方予測遅延時間+ノードN6からノードN2までの伝送遅延時間として送信されることもある。
そして、ノードN2の通信制御部100は、実時間パケットの受信を待機する(ステップS153)。その後、ノードN2の通信制御部100は、スイッチSW1から実時間パケットを受信し、当該実時間パケットのデータを第2データ格納部120に格納する(ステップS155)。ノードN2のコントローラ130は、第2データ格納部120から、受信した実時間パケットのデータを処理する。
スイッチでの処理の流れ自体は、図26に示したとおりであり、各スイッチ内における処理についても、図27に示したとおりであるが、ステップS137では、前方予測遅延時間の代わりに後方予測遅延時間を用いて、低優先度パケットのパケット出力の停止時間を設定する。
さらに、図28の代わりに、図32に示すような、実時間パケットの伝送が実施される。後方通知の場合には、ノードN6は、例えば予め定められたタイミングで、データパケットである実時間パケットをノードN2宛に送信する。実時間パケットは優先度の高いパケットとして送信される。その場合には、図32に示すように、ノードN6は、実時間パケットを送信し(ステップS161)、スイッチSW3の入力ポート301は、この実時間パケットを受信する。実時間パケットはデータパケットであるから、検出部303は、スイッチ部307に出力し、スイッチ部307は、宛先アドレス等から出力ポートを特定し、特定された出力ポート309にこの実時間パケットを出力する。該当する出力ポートは、予告パケットを受信した入力ポート301に対応する出力ポートである。出力ポート309は、実時間パケットを受信すると、高優先度パケットのための出力キュー3093aに格納する。出力キュー3093aからのパケット出力は優先的に行われるので、実時間パケット到達時には、出力キュー3093aは空になっている可能性が高い。そこで、出力キュー3093aから実時間パケットは直ぐに読み出されて、出力部3092から出力される。すなわち、スイッチSW2に送信される(ステップS163)。
スイッチSW2は、実時間パケットを受信すると、スイッチSW3と同様に処理を行って、実時間パケットをスイッチSW1に転送する(ステップS165)。さらに、スイッチSW1は、実時間パケットを受信すると、スイッチSW3と同様に処理を行って、実時間パケットをノードN2に転送する(ステップS167)。ノードN2の通信制御部100は、実時間パケットを受信すると、当該実時間パケットのデータを第2データ格納部120に格納する(ステップS169)。この後、例えばコントローラ130は、第2データ格納部120に格納されている実時間パケットのデータを用いて、所定の処理を実施する。
このように、各スイッチにおいて低優先度パケットのための出力キュー3093bからの出力が停止されている間に実時間パケットを転送することができるようになるので、非実時間パケットとの衝突を完全に回避できるようになる。すなわち、非常に短い伝送時間で実時間パケットを宛先ノードに届けることができるようになる。
なお、後方通知の場合における処理のタイミングについて、図33を用いて説明する。図33では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケットは送信され、左から右の方向で時間が経過する状態を示している。また、矢印511は、予告パケットを表しており、矢印513は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケットは送信されるが、実時間パケットはノードN6からノードN2へ送信されるので、後方通知であることが分かる。ノードN2では、上でも述べたように、実時間パケット513が送信される後方予測遅延時間T4前に、予告パケット511を出力する。予告パケット511は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。また、各スイッチでは、予告パケットを受信すると、上で述べた処理を行って、後方予測遅延時間+ノードN6からノードN2への伝送遅延時間=T5だけ、低優先度パケットのための出力キュー3093bからのパケット出力を停止する。スイッチSW1では、信号515で示すように、ローとなっている時間T5だけ、低優先度パケットのパケット出力が停止される。同様に、スイッチSW2では、信号517で示すように、ローとなっている時間T5だけ、低優先度パケットのパケット出力が停止される。さらに、スイッチSW3では、信号519出示すように、ローとなっている時間T5だけ、低優先度パケットのパケット出力が停止される。そうすると、実時間パケット513が各スイッチに到達するタイミングは、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。すなわち、実時間パケット513は、時間T6程度の低遅延時間でノードN2まで到達するようになる。なお、T6は、ノードN6からノードN2までの伝送遅延時間に相当する。
このような処理を実施することで、実時間パケットを低遅延で宛先ノードに伝送することができるようになる。
なお、経路上の各スイッチでは低優先度パケットのパケット出力を停止するため、例えばIEEE802.1Qauに定義されている輻輳通知CN(Congestion Notification)を、出力停止にかかる低優先度パケットの送信元に送信するようにしても良い。そうすると、輻輳通知CNは、最終的に送信元のノードまで伝播されるので、このようなパケット出力停止中の出力ポートに係る宛先へのパケット送信を控えて、その分他の宛先へ送信するようにする。これによって、無駄なパケット送信を削減して、ネットワーク帯域を有効に活用できるようになる。
また、出力停止の時間が長くなるとネットワークにおける通信効率が低下する。従って、可能な限り出力停止の時間を短縮する方が好ましい。例えば、第1の変形例として、予告パケットに含まれる前方予測遅延時間又は後方予測遅延時間を、本スイッチにおいて予告パケットを受信してから送信するまでの差分時間だけ減算して送信するようにすることも可能である。この理由は以下のとおりである。
そもそも前方予測遅延時間又は後方予測遅延時間は、予告パケットを送信してから実時間パケットを送信するまでの時間であるが、予告パケットの宛先ノードに近いスイッチほど実時間パケットの送信時刻までの時間は短くなる。どれだけ短くなるかというとスイッチSW2では、スイッチSW1における差分時間だけ短くなり、スイッチSW3では、スイッチSW1及びSW2における差分時間の和だけ短くなる。実時間パケットに完全に遅延がない場合には、実時間パケットの送信時刻において低優先度パケットのパケット出力が停止されれば良いので、前方予測遅延時間又は後方予測遅延時間から各スイッチにおいて前段までのスイッチにおける差分時間を差し引いた時間だけ短い時間、低優先度パケットのパケット出力を停止させればよい。但し、実時間パケットの伝送には遅延があるので、この遅延については、伝送遅延時間で補償する。
例えば図34を用いて前方通知の場合におけるタイミングについて説明する。図34では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケット及び実時間パケットが送信され、左から右の方向で時間が経過する状態を示している。また、矢印501は、予告パケットを表しており、矢印503は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケット及び実時間パケットが送信される前方通知であることを表している。ノードN2では、上でも述べたように、実時間パケット503を送信する前方予測遅延時間T1前に、予告パケット501を出力する。予告パケット501は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。ここまでは図29と同じである。
なお、スイッチSW1は、図29と同じで、予告パケットを受信すると、上で述べた処理を行って、前方予測遅延時間+ノードN2からノードN6への伝送遅延時間=T2だけ、低優先度パケットのための出力キュー3093bからのパケット出力を停止する。スイッチSW1では、信号505で示すように、ローとなっている時間T2だけ、低優先度パケットのパケット出力が停止される。
この第1の変形例では、スイッチSW1は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T11を、受信した予告パケット501に含まれる制御時間(=前方予測遅延時間)から差し引いた値を、新たな制御時間として、予告パケット501に設定してスイッチSW2に当該予告パケット501を送信する。
そうすると、スイッチSW2では、信号521で示すように、ローとなっている時間は、T2−T11となり、この時間だけ低優先度パケットのパケット出力が停止される。
また、この変形例では、スイッチSW2は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T12を、受信した予告パケット501に含まれる制御時間から差し引いた値を、新たな制御時間として、予告パケット501に設定してスイッチSW3に当該予告パケット501を送信する。
さらに、スイッチSW3では、信号523で示すように、ローとなっている時間は、T2−T11−T12となり、この時間だけ低優先度パケットのパケット出力が停止される。
さらに、この第1の変形例では、スイッチSW3は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T13を、受信した予告パケット501に含まれる制御時間から差し引いた値を、新たな制御時間として、予告パケット501に設定してノードN6に当該予告パケット501を送信する。
そうすると、実時間パケット503が、各スイッチに到達する時には、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。
次に、この第1の変形例で後方通知を行う場合における処理のタイミングについて、図35を用いて説明する。図35では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケット511が送信され、左から右の方向で時間が経過する状態を示している。また、矢印511は、予告パケットを表しており、矢印513は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケットは送信されるが、実時間パケットはノードN6からノードN2へ送信されるので、後方通知であることが分かる。ノードN2では、上でも述べたように、実時間パケット513が送信される後方予測遅延時間T4前に、予告パケット511を出力する。予告パケット511は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。ここまでは図34と同じである。
なお、スイッチSW1は、図34と同じで、予告パケット511を受信すると、上で述べた処理を行って、後方予測遅延時間+ノードN6からノードN2への伝送遅延時間=T5だけ、低優先度パケットのための出力キュー3093bからのパケット出力を停止する。スイッチSW1では、信号515で示すように、ローとなっている時間T5だけ、低優先度パケットのパケット出力が停止される。
この第1の変形例では、スイッチSW1は、予告パケット511の予測送信時刻TSout−受信時刻TSin=差分時間T21を、受信した予告パケット511に含まれる制御時間(=後方予測遅延時間)から差し引いた値を、新たな制御時間として予告パケット511に設定し、当該予告パケット511をスイッチSW2に送信する。
そうすると、スイッチSW2では、信号525で示すように、ローとなっている時間は、T5−T21となり、この時間だけ低優先度パケットのパケット出力が停止される。
また、この第1の変形例では、スイッチSW2は、予告パケット511の予測送信時刻TSout−受信時刻TSin=差分時間T22を、受信した予告パケット511に含まれる制御時間から差し引いた値を、新たな後方予測遅延時間として、予告パケット511に設定し、当該予告パケット511をスイッチSW3に送信する。
さらに、スイッチSW3では、信号527で示すように、ローとなっている時間は、T5−T21−T22となり、この時間だけ低優先度パケットのパケット出力が停止される。
さらに、この第1の変形例では、スイッチSW3は、予告パケット511の予測送信時刻TSout−受信時刻TSin=差分時間T23を、受信した予告パケット511に含まれる制御時間から差し引いた値を、新たな制御時間として予告パケット511に設定してノードN6に当該予告パケット511を送信する。
そうすると、実時間パケット513が、各スイッチに到達する時には、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。
このような変形例を実施するために、図27に示した予告パケット処理に代わりに図36の予告パケット処理を実施する。
まず、例えば検出部303は、受信したパケットが予告パケットであれば、受信時刻TSinを取得して、当該受信時刻TSinと予告パケットのデータとを制御パケット処理部305に出力する(図36:ステップS171)。
これに対して、制御パケット処理部305は、予告パケットのFdirフラグから前方通知か否かを判断する(ステップS173)。前方通知ではあれば、制御パケット処理部305は、予告パケットの宛先アドレス(例えば宛先ノードの識別情報の場合もある)から該当する出力ポートを特定し、制御対象出力ポートCPに設定する(ステップS175)。そして、ステップS179に移行する。一方、後方通知であれば、制御パケット処理部305は、予告パケットを受信した入力ポートに対応する出力ポート(又は、送信元アドレス(例えば送信元ノードの識別情報)から該当する出力ポートを特定しても良い。)を、制御対象出力ポートCPに設定する(ステップS177)。そしてステップS179に移行する。
ステップS179では、制御パケット処理部305は、制御対象出力ポートCPに対して、低優先度のパケットのための出力キューからパケット出力を停止するように制御する(ステップS179)。第1の変形例であっても、基本的な方式の場合と同様に、制御パケット処理部305は、制御対象出力ポートCPに対して、送信元ノードと宛先ノードとの組み合わせに対応付けて遅延DB311に登録されている伝送遅延時間に、予告パケットに含まれる制御時間を加算した時間の間、低優先度パケットのための出力キュー3093bからのパケットの出力を停止するように、出力制御部3091に指示する。出力制御部3091は、このような指示に応じて出力キュー3093bからのパケットの出力を、伝送遅延時間+制御時間の間停止させる。
この後、制御パケット処理部305は、予告パケットをスイッチ部307に出力する。そして、スイッチ部307は、予告パケットの宛先ノードに応じて該当する出力ポート309を特定して、予告パケットを出力する。出力ポート309は、予告パケットを高優先度の出力キュー3093aに格納する。なお、制御パケット処理部305は、当該予告パケットの受信時刻TSinを出力制御部3091に出力する。
この際、制御対象出力ポートCPの出力制御部3091は、この第1の変形例のように、予告パケットにおける制御時間を変更する設定がなされているか判断する(ステップS181)。予告パケットにおける制御時間を変更する設定がなされていない場合には、呼出元の処理に戻る。一方、予告パケットにおける制御時間を変更する設定がなされているか場合には、出力制御部3091は、予告パケットの出力スケジュール決定時に予測出力時刻TSoutを算出して、さらに予告パケットに含まれる制御時間から差分時間[TSout−TSin]を差し引いて、新たな制御時間として予測パケットに設定する(ステップS183)。この後、制御時間が更新された予告パケットは、次のスイッチなどに送信される。
このようにすれば、第1の変形例についても対処することができるようになる。
さらに、低優先度パケットのパケット出力の停止時間を短縮することも可能である。上で述べた第1の変形例でも述べたように、前段のスイッチから受信した予告パケットに含まれる制御時間だけ当該予告パケット受信時から経過すると、実時間パケットが送信される。この実時間パケットは、実時間パケット送信時刻から伝送遅延時間後までの間で、経路上の各スイッチを通過する。従って、誤差を考慮したとしても、実時間パケットの送信時刻を基準に前後伝送遅延時間だけ、低優先度パケットのパケット出力を停止するだけでも十分である。
例えば図37を用いて前方通知の場合におけるタイミングについて説明する。図37では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケット及び実時間パケットが送信され、左から右の方向で時間が経過する状態を示している。また、矢印501は、予告パケットを表しており、矢印503は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケット及び実時間パケットが送信される前方通知であることを表している。ノードN2では、上でも述べたように、実時間パケット503を送信する前方予測遅延時間T1前に、予告パケット501を出力する。予告パケット501は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。ここまでは図34と同じである。
ところが、スイッチSW1は、予告パケットを受信して出力ポート309に指示を行った後、前方予測遅延時間T1−ノードN2からノードN6への伝送遅延時間Tdだけ待機する。そして、T1−Tdが経過すると、信号531(ローアクティブ)で示すように、2Tdの期間だけ、低優先度パケットのパケット出力が停止される。
この第2の変形例でも、スイッチSW1は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T11を、受信した予告パケット501に含まれる制御時間(=前方予測遅延時間)から差し引いた値を、新たな制御時間として、予告パケット501に設定してスイッチSW2に送信する。
そうすると、スイッチSW2は、予告パケットを受信して出力ポート309に指示を行った後、受信した予告パケットに含まれる(前方予測遅延時間T1−T11)−ノードN2からノードN6への伝送遅延時間Tdだけ待機する。そして、T1−T11−Tdが経過すると、信号533(ローアクティブ)で示すように、2Tdの期間だけ、低優先度パケットのパケット出力が停止される。
また、この第2の変形例では、スイッチSW2は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T12を、受信した予告パケット501に含まれる制御時間から差し引いた値を、新たな制御時間として、予告パケット501に設定してスイッチSW3に送信する。
さらに、スイッチSW3は、予告パケットを受信して出力ポート309に指示を行った後、受信した予告パケットに含まれる(前方予測遅延時間T1−T11−T12)−ノードN2からノードN6への伝送遅延時間Tdだけ待機する。そして、T1−T11−T12−Tdが経過すると、信号535(ローアクティブ)で示すように、2Tdの期間だけ、低優先度パケットのパケット出力が停止される。
さらに、この第2の変形例では、スイッチSW3は、予告パケット501の予測送信時刻TSout−受信時刻TSin=差分時間T13を、受信した予告パケット501に含まれる制御時間から差し引いた値を、新たな制御時間として、予告パケット501に設定してノードN6に送信する。
そうすると、実時間パケット503が、各スイッチに到達する時には、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。
次に、この第2の変形例で後方通知を行う場合における処理のタイミングについて、図38を用いて説明する。図38では、上からノードN2、スイッチSW1、スイッチSW2、スイッチSW3、ノードN6の順番で予告パケットが送信され、左から右の方向で時間が経過する状態を示している。また、矢印511は、予告パケットを表しており、矢印513は、実時間パケットを表している。矢印の方向はパケットの送信方向を示しており、ノードN2からノードN6へ予告パケットは送信されるが、実時間パケットはノードN6からノードN2へ送信されるので、後方通知であることが分かる。ノードN2では、上でも述べたように、実時間パケット513が送信される後方予測遅延時間T4前に、予告パケット511を出力する。予告パケット511は、他のパケットとの衝突もあり得るので、各スイッチである程度の遅延が発生する。ここまでは図35と同じである。
ところが、スイッチSW1は、予告パケットを受信して出力ポート309に指示が行われた後、後方予測遅延時間T4−ノードN6からノードN2への伝送遅延時間Td2だけ待機する。そして、T4−Td2が経過すると、信号541(ローアクティブ)で示すように、2Td2の期間だけ、低優先度パケットのパケット出力が停止される。
この第2の変形例でも、スイッチSW1は、予告パケット511の予測送信時刻TSout−受信時刻TSin=差分時間T21を、受信した予告パケット511に含まれる制御時間(=後方予測遅延時間)から差し引いた値を、新たな制御時間として、予告パケット511に設定してスイッチSW2に送信する。
そうすると、スイッチSW2は、予告パケットを受信して出力ポート309に指示が行われた後、受信した予告パケットに含まれる(後方予測遅延時間T4−T21)−ノードN6からノードN2への伝送遅延時間Td2だけ待機する。そして、T4−T21−Td2が経過すると、信号543(ローアクティブ)で示すように、2Td2の期間だけ、低優先度パケットのパケット出力が停止される。
また、この第2の変形例では、スイッチSW2は、予告パケット511の予測送信時刻TSout−受信時刻TSin=差分時間T22を、受信した予告パケット511に含まれる制御時間から差し引いた値を、新たな制御時間として、予告パケット511に設定してスイッチSW3に送信する。
さらに、スイッチSW3は、予告パケットを受信して出力ポート309に指示が行われた後、受信した予告パケットに含まれる(後方予測遅延時間T4−T21−T22)−ノードN6からノードN2への伝送遅延時間Td2だけ待機する。そして、T4−T21−T22−Td2が経過すると、信号545(ローアクティブ)で示すように、2Td2の期間だけ、低優先度パケットのパケット出力が停止される。
そうすると、実時間パケット513が、各スイッチに到達する時には、低優先度パケットのパケット出力の停止時間を表す信号がローとなっている時間内に収まっており、非実時間パケットとの衝突が回避されている。
このような2つの変形例と基本的な方式を実施するために、出力ポート309の出力制御部3091の処理についてまとめると、図39に示すようになる。出力制御部3091は、制御パケット処理部305から停止指示を受信すると(ステップS191)、低優先度パケットのパケット出力の停止時間のシフトを行う設定になっているか判断する(ステップS193)。具体的には、第2の変形例を実施するか否かを判断する。基本的な方式及び第1の変形例の場合には、停止時間のシフトは行われない。停止時間のシフトを行わない場合には、出力制御部3091は、停止指示に含まれる(制御時間+伝送遅延時間)の間、低優先度パケットの出力キュー3093bからのパケット出力を停止する(ステップS195)。そして次の停止指示を待機する。
一方、停止時間のシフトを行う場合には、出力制御部3091は、停止指示に含まれる制御時間と伝送遅延時間を用いて、(制御時間−伝送遅延時間)を計測する(ステップS197)。例えばタイマに、この時間を設定してカウントダウンさせる。そして、タイマの値が0になると、出力制御部3091は、伝送遅延時間の2倍の時間の間、低優先度パケットの出力キュー3093bからのパケット出力を停止する(ステップS199)。そして、次の停止指示を待機する。
なお、出力制御部3091は、上で述べた処理の他に、予告パケット処理の一部(図36:S183)も行う場合もある。
このようにすれば、基本的な方式に加えて2つの変形例にも対処できる。
さらに、基本的な方式及び第1の変形例の場合については、スイッチにおいて伝送遅延時間を加算するのではなく、予め予告パケットの送信元ノードN2で前方予測遅延時間又は後方予測遅延時間に加算した上で、予告パケットのPause値として設定するようにしても良い。
また、例えばノードN2の第1データ格納部110に、図6に示したようなデータを保持する。すなわち、送信元ノードと宛先ノードとの組み合わせ毎に、伝送遅延時間を格納する。上でも述べたように、各組み合わせでの測定結果のうち最大値を、1つだけ設定しておき、送信元ノードと宛先ノードの組み合わせに共通の値を用いるようにしても良い。さらに、初期的には、最大値を設定しておいて、前方通知であれば、送信元ノードの通信制御部100が、実時間パケット送信時に送信時刻を記録しておき、宛先ノードから別途制御パケットなどで実時間パケットの受信時刻を通知してもらい、受信時刻−送信時刻を算出して、次回以降の伝送遅延時間として第1データ格納部110に格納しておくようにしても良い。また、後方通知であれば、例えば実時間パケットに送信時刻を含むようにして、予告パケットの送信元ノードの受信時刻と、実時間パケットに含まれる送信時刻との差を算出して、第1データ格納部110に格納しておくようにしても良い。
このような前提の下、具体的には、図24の処理の代わりに、図40Aの処理を実施する。具体的には、前方通知を実施する場合には、実時間パケットを送信するタイミングから前方予測遅延時間前に、予告パケットを送信する。すなわち、ノードN2の通信制御部100は、実時間パケットを送信するタイミングから前方予測遅延時間前に、(前方予測遅延時間+ノードN2からノードN6間での伝送遅延時間)を含む予告パケットを生成し、ノードN6宛に送信する(ステップS301)。具体的な宛先はスイッチSW1である。図25のような予告パケットのパケットフォーマットにおいてPause(制御時間)の値は、(前方予測遅延時間+ノードN2からノードN6間での伝送遅延時間)となる。但し、上で述べたように、第1の変形例では経路上で変更される。
そして、ノードN2の通信制御部100は、前方予測遅延時間だけ待機する(ステップS303)。前方予測遅延時間経過すると、通信制御部100は、例えばコントローラ130によって生成され且つ第2データ格納部120に格納されているデータから実時間パケットを生成して、ノードN6宛に送信する(ステップS305)。具体的な宛先はスイッチSW1である。
また、図30の処理の代わりに、図40Bの処理を実施する。まず、ノードN2の通信制御部100は、例えばノードN6が実時間パケットを送信するタイミングより後方予測遅延時間だけ前に、当該後方予測遅延時間+ノードN6からノードN2間での伝送遅延時間を含む予告パケットを生成し、ノードN6宛に送信する(ステップS311)。図31に示すような予告パケットのパケットフォーマットにおいてPause(制御時間)の値は、(後方予測遅延時間+ノードN6からノードN2間での伝送遅延時間)となる。上で述べたように、第1の変形例では経路上で変更される。
そして、ノードN2の通信制御部100は、実時間パケットの受信を待機する(ステップS313)。その後、ノードN2の通信制御部100は、スイッチSW1から実時間パケットを受信し、当該実時間パケットのデータを第2データ格納部120に格納する(ステップS315)。ノードN2のコントローラ130は、第2データ格納部120から、受信した実時間パケットのデータを処理する。
また、図27及び図36に示した予告パケット処理の代わりに、図40Cのような第3予告パケット処理を実施する。
まず、例えば検出部303は、受信したパケットが予告パケットであれば、受信時刻TSinを取得して、当該受信時刻TSinと予告パケットのデータとを制御パケット処理部305に出力する(ステップS321)。
これに対して、制御パケット処理部305は、予告パケットのFdirフラグから前方通知か否かを判断する(ステップS323)。前方通知ではあれば、制御パケット処理部305は、予告パケットの宛先アドレス(例えば宛先ノードの識別情報の場合もある)から該当する出力ポートを特定し、制御対象出力ポートCPに設定する(ステップS324)。そして、ステップS326に移行する。一方、後方通知であれば、制御パケット処理部305は、予告パケットを受信した入力ポートに対応する出力ポート(又は、送信元アドレス(例えば送信元ノードの識別情報)から該当する出力ポートを特定しても良い。)を、制御対象出力ポートCPに設定する(ステップS325)。そしてステップS326に移行する。
ステップS326では、制御パケット処理部305は、制御対象出力ポートCPに対して、制御時間の間だけ、低優先度のパケットのための出力キュー3093bからパケット出力を停止するように出力ポート309を制御する(ステップS326)。このように、各スイッチで伝送遅延時間の加算を実施しないので、制御時間の間だけパケット出力を停止させる。
この後、制御パケット処理部305は、予告パケットをスイッチ部307に出力する。そして、スイッチ部307は、予告パケットの宛先ノードに応じて該当する出力ポート309を特定して、予告パケットを出力する。出力ポート309は、予告パケットを高優先度の出力キュー3093aに格納する。なお、制御パケット処理部305は、当該予告パケットの受信時刻TSinを出力制御部3091に出力する。
この際、制御対象出力ポートCPの出力制御部3091は、第1の変形例のように、予告パケットにおける制御時間を変更する設定がなされているか判断する(ステップS327)。予告パケットにおける制御時間を変更する設定がなされていない場合には、呼出元の処理に戻る。一方、予告パケットにおける制御時間を変更する設定がなされている場合には、出力制御部3091は、予告パケットの出力スケジュール決定時に予測出力時刻TSoutを算出して、さらに予告パケットに含まれる制御時間から差分時間[TSout−TSin]を差し引いて、新たな制御時間として予測パケットに設定する(ステップS329)。この後、制御時間が更新された予告パケットは、次のスイッチなどに送信される。
なお、第2の変形例においても、このようなさらなる変形を行うようにしても良いが、制御時間−伝送遅延時間から制御時間+伝送遅延時間まで、低優先度パケットの出力キュー3093bからのパケット出力を停止するのではなく、制御時間−2×伝送遅延時間から制御時間まで、低優先度パケットの出力キュー3093bからのパケット出力を停止する。
なお、上で述べた例では、前方通知と後方通知とを両方を行う場合を想定しているが、後方通知を行わないような実施の形態も可能である。すなわち、センサ230が計測を実施した場合には、センサ230を有するノードN6が予告パケットをコントローラ130を有するノードN2に送信して、さらにノードN6が実時間パケットを送信するようにしても良い。
このような場合には、図12の端子Bの後に実施される処理(図15)の代わりに、図41の処理を実施する。ここでは、ノードN2からノードN6へ要求パケットを送信する場合を示しているが、ノードN6からノードN2に要求パケットを送信する場合も同様である。
ノードN6の通信制御部200は、前方予測遅延時間Rml1を含む応答確認パケットを生成して、ノードN2宛に送信する(ステップS201)。具体的には、スイッチSW3に出力する。例えば、図42に示すような応答確認パケットが出力される。図42の例では、宛先ノード(Dest)N2と、送信元ノード(Src)N6と、制御パケットの型(Type)であり、応答確認パケットを表すAckと、送信元ノードN2にとっての前方予測遅延時間Rml1とが含まれる。図22とは異なり、後方予測遅延時間Rml2については含まれない。前方通知を行わないような場合には、応答パケットは使用されない。
そうすると、スイッチSW3の入力ポート301は、応答確認パケットを受信すると、検出部303に出力する。検出部303は、応答確認パケットを検出すると、制御パケット処理部305に出力する。制御パケット処理部305は、応答確認パケットであると判断すると、応答確認パケットに対しての処理はないのでそのままスイッチ部307に出力する。そうすると、スイッチ部307は、応答確認パケットを該当する出力ポート309に出力する。出力ポート309は、通常の優先度のパケットとして応答確認パケットを出力キュー3093に格納する。その後、出力制御部3091は、通常どおり出力キュー3093に指示を出力して、応答確認パケットを出力する(ステップS203)。ここではスイッチSW2が出力先のスイッチとなる。
スイッチSW2は、応答確認パケットを受信するとスイッチSW3と同様に、次のスイッチSW1に送信する(ステップS205)。スイッチSW1は、応答確認パケットを受信するとスイッチSW3と同様に、次の宛先であるノードN2に送信する(ステップS207)。ノードN2の通信制御部100は、応答確認パケットを受信すると(ステップS209)、当該応答確認パケットに含まれる前方予測遅延時間Rml1の値を、前方予測遅延時間であるとして宛先ノードN6に対応付けて第1データ格納部110に格納する(ステップS211)。
このような処理を実施すれば、前方通知だけを行う場合にも、予告パケットを送信するのに用いられる前方予測遅延時間を取得することができるようになる。
なお、上ではスイッチが行う処理については、場合分けを予め行った上で説明しておいたので、ここでスイッチが行う処理を図43にまとめておく。スイッチの入力ポート301は、パケットを受信すると(ステップS221)、検出部303は、受信したパケットが制御パケットであるか判断する。受信したパケットが制御パケットであれば、制御パケット処理部305に出力する。但し、制御パケットのうち応答確認パケットについては、特別な処理はないので通常のパケットとして扱うようにしても良い。
制御パケット処理部305は、受信したパケットが要求パケットであるか判断する(ステップS223)。受信したパケットが要求パケットであれば(ステップS223:Yesルート)、制御パケット処理部305は、上で述べた要求パケット処理(図10)を実施する(ステップS225)。そして処理はステップS237に移行する。一方、受信したパケットが要求パケットでない場合には(ステップS223:Noルート)、制御パケット処理部305は、受信したパケットが応答パケットであるか判断する(ステップS227)。受信したパケットが応答パケットであれば(ステップS227:Yesルート)、制御パケット処理部305は、応答パケット処理(図17)を実施する(ステップS229)。そして処理はステップS237に移行する。さらに、受信したパケットが応答パケットでない場合には(ステップS227:Noルート)、制御パケット処理部305は、受信したパケットが予告パケットであるか判断する(ステップS231)。受信したパケットが予告パケットである場合には(ステップS231:Yesルート)、制御パケット処理部305は、予告パケット処理(図27/図36/図40C)を実施する(ステップS233)。そして処理はステップS237に移行する。受信したパケットが予告パケットでない場合には(ステップS231:Noルート)、確認応答パケット又は通常のパケットであるから、スイッチは、通常の中継処理を実施する(ステップS235)。
このような処理を電源がオフになるといった処理終了まで繰り返される(ステップS237)。
このような処理を実施すれば、実時間パケットが、非実時間パケットとの衝突を回避して低遅延で目的のノードに伝送されるようになる。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図2乃至4及び図7の機能ブロック図は一例であって、実際の部品構成とは一致しない場合もある。特に、制御パケット処理部305は、専用の半導体装置にて実装される場合もあれば、図44に示すように、スイッチコアに接続される別のプロセッサに上で述べたような処理を実施するプログラムを実行させることで実現するようにしても良い。図2及び図3で示したノードの機能ブロック図についても同様に、実際のプログラムモジュール構成とは一致しない場合もある。また、検出部303についても、専用の回路で実装するようにしても良いし、既存のACL(Access Control List)のようなフィルタを活用するようにしても良い。
また、スイッチに接続されている各ノードは、コンピュータ装置であって、図45に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
第1の態様に係る通信制御方法は、1又は複数の中継装置を介して第1のノードと第2のノードとの間で行われる通信を制御する通信制御方法である。この通信制御方法は、(A)1又は複数の中継装置で中継される他のパケットより優先度の高い第1のパケットより前に、第1のノードから制御パケットを第2のノードへ送信する第1送信ステップと、(B)第1のノードから第2のノードへの経路上の中継装置が、制御パケットに応じて、当該制御パケットに含まれる制御時間から特定される期間、当該中継装置における複数の出力ポートのうち第1のパケットを出力する1つの出力ポートにおける、上記他のパケットのためのパケット格納部からのパケット出力を停止するステップと、(C)上記期間中に、第1のノードから第2のノードへ又は第2のノードから第1のノードへ第1のパケットを送信する第2送信ステップとを含む。
このようにすれば、低優先度のパケットとの衝突が中継装置で発生しなくなるため、低遅延で第1のパケットを伝送できるようになる。
なお、本通信制御方法は、(D)第1のノードから第2のノードへ、第1のノードから第2のノードまでの予測遅延時間を収集するための第2の制御パケットを送信するステップと、(E)第2の制御パケットに応じて、第1のノードから第2のノードへの経路上の中継装置が、第2のノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、第2の制御パケットに含まれている第1の予測遅延時間との和を、第2の制御パケットに新たな第1の予測遅延時間として設定して送信するステップとをさらに含むようにしてもよい。このようにすれば、制御時間を自動的に収集することができるようになる。
さらに、本通信制御方法は、(F)第2のノードから第1のノードへ、第1の予測遅延時間を通知し且つ第2のノードから第1のノードまでの第2の予測遅延時間を収集するための第3の制御パケットを送信するステップと、(G)第3の制御パケットに応じて、第2のノードから第1のノードへの経路中の中継装置が、第1のノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、第3の制御パケットに含まれている第2の予測遅延時間との和を、第3の制御パケットに新たな第2の予測遅延時間として設定するステップとをさらに含むようにしても良い。このようにすれば、双方向で実時間パケットのやりとりを低遅延で行うことができるようになる。
また、本通信制御方法は、(H)第1のノードから第2のノードへ、第2の予測遅延時間を通知するための第4の制御パケットを送信するステップをさらに含むようにしてもよい。
さらに、上で述べた期間が、(a)制御パケット受信後、制御時間経過後までと、(b)制御パケット受信後、制御パケットの後に送信される第1のパケットの送信元から送信先までの伝送遅延時間に相当する時間と制御時間との和の時間経過後までと、(c)制御パケット受信後に制御時間から伝送遅延時間に相当する時間を引いた時間経過後、伝送遅延時間に相当する時間の2倍の時間経過後までと、(d)制御パケット受信後に制御時間から伝送遅延時間に相当する時間の2倍の時間を引いた時間経過後、伝送遅延時間に相当する時間の2倍の時間経過後までとのうちのいずれかであることもある。(a)及び(b)であれば機構が簡単になり、(c)及び(d)であればネットワークにおける通信効率を上げることができるようになる。なお、制御時間には、伝送遅延時間が含まれることもあれば、含まれないこともある。
また、本通信制御方法は、(I)第1のノードから第2のノードへの経路中の中継装置が、制御パケットに含まれる制御時間から、当該中継装置における当該制御パケットの送信予定時刻と当該制御パケットの受信時刻との差を差し引いた時間を新たな制御時間として当該制御パケットに設定して送信するステップをさらに含むようにしてもよい。このようにすることで、ネットワークにおける通信効率を上げることができるようになる。
さらに、上で述べた第1送信ステップが、第2送信ステップより、第1のノードから送信される制御パケットに含まれる制御時間前に行われるようにしてもよい。確実に実時間パケットが低優先度パケットと衝突するのを避けるためである。
第2の態様に係る中継装置は、(A)第1の優先度を有する第1のパケットを格納する第1のパケット格納部と第1の優先度より低い優先度である第2の優先度を有する第2のパケットを格納する第2のパケット格納部とを各々有する複数の出力ポートと、(B)複数の入力ポートの各々について、第1のパケットを送信する前に送信され且つ複数の出力ポートのうちの1つの出力ポートにおける第2のパケット格納部からのパケット出力の停止を制御するために用いられる制御時間を含む制御パケットの受信を検出する検出部と、(C)検出部が制御パケットを検出した場合、当該制御パケットから特定され且つ第1のパケットを出力する、複数の出力ポートのうちの1つの出力ポートに対して、当該制御パケットに含まれる制御時間から特定され且つ第1のパケットの到着が予定される期間、第2のパケット格納部からのパケット出力を停止するように上記1つの出力ポートを制御する処理部とを有する。
これによって優先度の高い第1のパケットが優先度の低い第2のパケットと衝突せずに、低遅延で伝送できるようになる。
なお、上で述べた期間が、制御時間に基づき、制御パケットの後に送信される第1のパケットが中継装置に到達する時刻を包含するように設定されるようにしてもよい。期間については様々な調整が可能である。
第2の態様においても、上で述べた期間は、(a)制御パケット受信後、制御時間経過後までと、(b)制御パケット受信後、制御パケットの後に送信される第1のパケットの送信元から送信先までの伝送遅延時間に相当する時間と制御時間との和の時間経過後までと、(c)制御パケット受信後に制御時間から伝送遅延時間に相当する時間を引いた時間経過後、伝送遅延時間に相当する時間の2倍の時間経過後までと、(d)制御パケット受信後に制御時間から伝送遅延時間に相当する時間の2倍の時間を引いた時間経過後、伝送遅延時間に相当する時間の2倍の時間経過後までとのうちのいずれかであることもある。(a)及び(b)であれば機構が簡単になり、(c)及び(d)であればネットワークにおける通信効率を上げることができるようになる。なお、制御時間には、伝送遅延時間が含まれることもあれば、含まれないこともある。
なお、上で述べた複数の入力ポートの各々が、制御パケットの受信時刻を記録し、複数の出力ポートの各々が、制御時間から制御パケットの送信予定時刻と受信時刻との差を差し引いた時間を新たな制御時間として当該制御パケットに設定して送出するようにしてもよい。このようにすれば、停止時間を適切に設定でき且つネットワークにおける通信効率を上げることができるようになる。
また、上で述べた制御パケットが、当該制御パケットの後に送信される第1のパケットの方向に関するデータを含む場合もある。この場合、上で述べた処理部は、(a)第1の方向に関するデータが、制御パケットの送信元ノードから宛先ノードへの方向を示している場合には、当該宛先ノードのアドレスから上記1つの出力ポートを特定し、(b)第1の方向に関するデータが、制御パケットの宛先ノードから送信元ノードへの方向を示している場合には、制御パケットを受信した入力ポートに対応する出力ポートを前記第1の出力ポートとして特定してもよい。なお、この(a)のみを実施する場合もある。
さらに、上で述べた検出部が、制御パケットの送信元ノードから宛先ノードまでの予測遅延時間を収集するための第2の制御パケットを検出した場合、制御部が、宛先ノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、第2の制御パケットに含まれている予測遅延時間との和を、第2の制御パケットに新たな予測遅延時間として設定するようにしてもよい。自動的に制御時間を測定する場合に対処できるようになる。
また、上で述べた検出部が、制御パケットの宛先ノードから送信元ノードまでの予測遅延時間を収集するための第3の制御パケットを検出した場合、制御部が、送信元ノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、第3の制御パケットに含まれている予測遅延時間との和を、第3の制御パケットに新たな予測遅延時間として設定するようにしてもよい。自動的に制御時間を測定する場合に対処できるようになる。
なお、上で述べたような処理をコンピュータ又はプロセッサに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
1又は複数の中継装置を介して第1のノードと第2のノードとの間で行われる通信を制御する通信制御方法であって、
前記1又は複数の中継装置で中継される他のパケットより優先度の高い第1のパケットより前に、前記第1のノードから制御パケットを前記第2のノードへ送信する第1送信ステップと、
前記第1のノードから前記第2のノードへの経路上の中継装置が、前記制御パケットに応じて、当該制御パケットに含まれる制御時間から特定される期間、当該中継装置における複数の出力ポートのうち前記第1のパケットを出力する1つの出力ポートにおける、前記他のパケットのためのパケット格納部からのパケット出力を停止するステップと、
前記期間中に、前記第1のノードから前記第2のノードへ又は前記第2のノードから前記第1のノードへ前記第1のパケットを送信する第2送信ステップと、
を含む通信制御方法。
(付記2)
前記第1のノードから前記第2のノードへ、前記第1のノードから前記第2のノードまでの予測遅延時間を収集するための第2の制御パケットを送信するステップと、
前記第2の制御パケットに応じて、前記第1のノードから前記第2のノードへの経路上の中継装置が、前記第2のノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、前記第2の制御パケットに含まれている第1の予測遅延時間との和を、前記第2の制御パケットに新たな第1の予測遅延時間として設定して送信するステップと、
をさらに含む付記1記載の通信制御方法。
(付記3)
前記第2のノードから前記第1のノードへ、前記第1の予測遅延時間を通知し且つ前記第2のノードから前記第1のノードまでの第2の予測遅延時間を収集するための第3の制御パケットを送信するステップと、
前記第3の制御パケットに応じて、前記第2のノードから前記第1のノードへの経路中の中継装置が、前記第1のノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、前記第3の制御パケットに含まれている第2の予測遅延時間との和を、前記第3の制御パケットに新たな第2の予測遅延時間として設定するステップと、
をさらに含む付記2記載の通信制御方法。
(付記4)
前記第1のノードから前記第2のノードへ、前記第2の予測遅延時間を通知するための第4の制御パケットを送信するステップ
をさらに含む付記3記載の通信制御方法。
(付記5)
前記期間が、
前記制御パケット受信後、前記制御時間経過後までと、
前記制御パケット受信後、前記制御パケットの後に送信される前記第1のパケットの送信元から送信先までの伝送遅延時間に相当する時間と前記制御時間との和の時間経過後までと、
前記制御パケット受信後に前記制御時間から前記伝送遅延時間に相当する時間を引いた時間経過後、前記伝送遅延時間に相当する時間の2倍の時間経過後までと、
前記制御パケット受信後に前記制御時間から前記伝送遅延時間に相当する時間の2倍の時間を引いた時間経過後、前記伝送遅延時間に相当する時間の2倍の時間経過後まで
のうちのいずれかである付記1乃至4のいずれか1つ記載の通信制御方法。
(付記6)
前記第1のノードから前記第2のノードへの経路中の中継装置が、前記制御パケットに含まれる制御時間から、当該中継装置における当該制御パケットの送信予定時刻と当該制御パケットの受信時刻との差を差し引いた時間を新たな制御時間として当該制御パケットに設定して送信するステップ
をさらに含む付記1乃至4のいずれか1つ記載の通信制御方法。
(付記7)
前記第1送信ステップが、前記第2送信ステップより、前記第1のノードから送信される前記制御パケットに含まれる制御時間前に行われる
付記1乃至6の何れか1つ記載の通信制御方法。
(付記8)
第1の優先度を有する第1のパケットを格納する第1のパケット格納部と前記第1の優先度より低い優先度である第2の優先度を有する第2のパケットを格納する第2のパケット格納部とを各々有する複数の出力ポートと、
複数の入力ポートの各々について、前記第1のパケットを送信する前に送信され且つ前記複数の出力ポートのうちの1つの出力ポートにおける前記第2のパケット格納部からのパケット出力の停止を制御するために用いられる制御時間を含む制御パケットの受信を検出する検出部と、
前記検出部が制御パケットを検出した場合、当該制御パケットから特定され且つ前記第1のパケットを出力する、前記複数の出力ポートのうちの1つの出力ポートに対して、当該制御パケットに含まれる制御時間から特定され且つ前記第1のパケットの到着が予定される期間、前記第2のパケット格納部からのパケット出力を停止するように前記1つの出力ポートを制御する処理部と、
を有する中継装置。
(付記9)
前記期間が、
前記制御パケット受信後、前記制御時間経過後までと、
前記制御パケット受信後、前記制御パケットの後に送信される前記第1のパケットの送信元から送信先までの伝送遅延時間に相当する時間と前記制御時間との和の時間経過後までと、
前記制御パケット受信後に前記制御時間から前記伝送遅延時間に相当する時間を引いた時間経過後、前記伝送遅延時間に相当する時間の2倍の時間経過後までと、
前記制御パケット受信後に前記制御時間から前記伝送遅延時間に相当する時間の2倍の時間を引いた時間経過後、前記伝送遅延時間に相当する時間の2倍の時間経過後まで
のうちのいずれかである付記8記載の中継装置。
(付記10)
前記複数の入力ポートの各々が、前記制御パケットの受信時刻を記録し、
前記複数の出力ポートの各々が、前記制御時間から前記制御パケットの送信予定時刻と前記受信時刻との差を差し引いた時間を新たな制御時間として当該制御パケットに設定して送出する
付記8又は9記載の中継装置。
(付記11)
前記制御パケットが、当該制御パケットの後に送信される前記第1のパケットの方向に関するデータを含み、
前記処理部は、
前記第1の方向に関するデータが、前記制御パケットの送信元ノードから宛先ノードへの方向を示している場合には、当該宛先ノードのアドレスから前記1つの出力ポートを特定し、
前記第1の方向に関するデータが、前記制御パケットの宛先ノードから送信元ノードへの方向を示している場合には、前記制御パケットを受信した入力ポートに対応する出力ポートを前記第1の出力ポートとして特定する
付記8乃至10のいずれか1つ記載の中継装置。
(付記12)
前記検出部が、前記制御パケットの送信元ノードから宛先ノードまでの予測遅延時間を収集するための第2の制御パケットを検出した場合、前記制御部が、前記宛先ノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、前記第2の制御パケットに含まれている予測遅延時間との和を、前記第2の制御パケットに新たな予測遅延時間として設定する
付記8乃至11のいずれか1つ記載の中継装置。
(付記13)
前記検出部が、前記制御パケットの宛先ノードから送信元ノードまでの予測遅延時間を収集するための第3の制御パケットを検出した場合、前記制御部が、前記送信元ノードのアドレスから特定される出力ポートに対応付けて保持している当該中継装置における予測遅延時間と、前記第3の制御パケットに含まれている予測遅延時間との和を、前記第3の制御パケットに新たな予測遅延時間として設定する
付記12記載の中継装置。
(付記14)
第1の優先度を有する第1のパケットを格納する第1のパケット格納部と前記第1の優先度より低い優先度である第2の優先度を有する第2のパケットを格納する第2のパケット格納部とを各々有する複数の出力ポートを有する中継装置に、
複数の入力ポートの各々について、前記第1のパケットを送信する前に送信され且つ前記複数の出力ポートのうちの1つの出力ポートにおける前記第2のパケット格納部からのパケット出力の停止を制御するために用いられる制御時間を含む制御パケットの受信を検出したことを表すデータを受信し、
当該制御パケットから特定され且つ前記第1のパケットを出力する、前記複数の出力ポートのうちの1つの出力ポートに対して、当該制御パケットに含まれる制御時間から特定され且つ前記第1のパケットの到着が予定される期間、前記第2のパケット格納部からのパケット出力を停止するように前記1つの出力ポートを制御する
処理を実行させるためのプログラム。