(57)【特許請求の範囲】
【請求項１】
外部から入力された複数種類のパケットを中継する通信装置であって、
周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１パケット入力部と、
低遅延での中継処理が要求されない第２のパケットが入力される第２パケット入力部と、
前記第１パケット入力部で受信されたのち前記第２パケット入力部で受信された前記第２のパケットとの多重化処理を経ていない前記第１のパケットに基づいて、当該第１パケット入力部への次の前記第１のパケットの到着時刻を予測する到着時刻予測手段と、
前記第２パケット入力部で受信されたのち前記第１パケット入力部で受信された前記第１のパケットとの多重化処理を経ていない前記第２のパケットを蓄積するパケット蓄積手段と、
前記到着時刻予測手段による前記第１のパケットの到着時刻の予測結果および前記パケット蓄積手段に保持された前記第２のパケットの長さに基づいて、前記第１パケット入力部に入力された前記第１のパケットと前記パケット蓄積手段に蓄積された前記第２のパケットのいずれかのパケットを通信路へ送信するパケットに決定する送信パケット決定手段と、
前記送信パケット決定手段の前記決定に基づいて、前記第１パケット入力部で受信され前記第２のパケットとの多重化処理を経ていない前記第１のパケットと前記パケット蓄積手段に蓄積された前記第２のパケットの多重化を行う多重部と、を備え、
前記到着時刻予測手段は、
前記第１のパケットの到着を検出するパケット検出部と、
前記第１のパケットの到着が検出された場合にリセットするアップカウンタと、
前記第１のパケットの到着が検出された場合に前記アップカウンタがリセットする直前の前記アップカウンタのカウント値をプリセットするダウンカウンタと、
を備え、
前記ダウンカウンタのカウント値を前記第１のパケットの到着時刻の予測結果として前記送信パケット決定手段に出力する
ことを特徴とする通信装置。
【請求項２】
外部から入力された複数種類のパケットを中継する通信装置であって、
周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１パケット入力部と、
低遅延での中継処理が要求されない第２のパケットが入力される第２パケット入力部と、
前記第１パケット入力部で受信されたのち前記第２パケット入力部で受信された前記第２のパケットとの多重化処理を経ていない前記第１のパケットに基づいて、当該第１パケット入力部への次の前記第１のパケットの到着時刻を予測する到着時刻予測手段と、
前記第２パケット入力部で受信されたのち前記第１パケット入力部で受信された前記第１のパケットとの多重化処理を経ていない前記第２のパケットを蓄積するパケット蓄積手段と、
前記到着時刻予測手段による前記第１のパケットの到着時刻の予測結果および前記パケット蓄積手段に保持された前記第２のパケットの長さに基づいて、前記第１パケット入力部に入力された前記第１のパケットと前記パケット蓄積手段に蓄積された前記第２のパケットのいずれかのパケットを通信路へ送信するパケットに決定する送信パケット決定手段と、
前記送信パケット決定手段の前記決定に基づいて、前記第１パケット入力部で受信され前記第２のパケットとの多重化処理を経ていない前記第１のパケットと前記パケット蓄積手段に蓄積された前記第２のパケットの多重化を行う多重部と、を備え、
前記到着時刻予測手段は、
前記第１のパケットを送信したことを示す信号が前記第１のパケットの送信元の装置から入力されるとリセットするアップカウンタと、
前記信号が入力されると前記アップカウンタがリセットする直前の前記アップカウンタのカウント値をプリセットするダウンカウンタと、
を備え、
前記ダウンカウンタのカウント値を前記第１のパケットの到着時刻の予測結果として前記送信パケット決定手段に出力する
ことを特徴とする通信装置。
【請求項３】
前記送信パケット決定手段は、
前記予測結果に基づいて次に前記第１のパケットが到着するまでの時間である第１の時間を算出し、さらに、前記パケット蓄積手段が保持している前記第２のパケットの長さに基づいて当該パケットの送信を開始してから送信完了となるまでの所要時間である第２の時間を算出し、
前記第１の時間よりも前記第２の時間の方が短い場合に前記パケット蓄積手段が保持している前記第２のパケットを送信することに決定する
ことを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記送信パケット決定手段は、
前記パケット蓄積手段が複数のキューを備える場合で、前記複数のキューの中の２つ以上のキューに前記第２のパケットが蓄積されている場合、
前記第２のパケットが蓄積されている各キューの先頭の前記第２のパケットそれぞれについて前記第２の時間を算出し、算出した複数の前記第２の時間の中に前記第１の時間よりも短い前記第２の時間が存在していれば、その前記第２の時間に対応するパケットを送信することに決定する
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記送信パケット決定手段は、
算出した複数の前記第２の時間の中に前記第１の時間よりも短いものが複数存在する場合、前記第１の時間よりも短い前記第２の時間に対応するパケットの中のいずれか一つを選択して前記通信路へ送信するパケットに決定する
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１の入力インタフェースと低遅延での中継処理が要求されない第２のパケットが入力される第２の入力インタフェースとを備えた、外部から入力された複数種類のパケットを中継する通信装置において実行されるパケット中継方法であって、
前記第１の入力インタフェースに入力された前記第１のパケットを受信する第１パケット受信ステップと、
前記第１パケット受信ステップで受信され当該通信装置内で前記第２のパケットとの多重化処理を経ていない前記第１のパケットに基づいて、次に前記第１のパケットが入力される時刻を予測する到着時刻予測ステップと、
前記第２の入力インタフェースに入力された前記第２のパケットを受信する第２パケット受信ステップと、
前記第２パケット受信ステップで受信され当該通信装置内で前記第１のパケットとの多重化処理を経ていない前記第２のパケットをキューに蓄積する蓄積ステップと、
前記キューに蓄積された前記第２のパケットの長さと前記到着時刻予測ステップにおける予測結果に基づいて、前記第１のパケットと前記キューに蓄積された前記第２のパケットのどちらのパケットを送信するかを判断する判断ステップと、
前記判断ステップの判断結果に基づいて、前記第１パケット受信ステップで受信され前記第２のパケットとの多重化処理を経ていない前記第１のパケットと前記キューに蓄積された前記第２のパケットの多重化を行って送信するパケット送信ステップと、を含み、
前記到着時刻予測ステップは、
前記第１のパケットの到着を検出する到着検出ステップと、
前記第１のパケットの到着が検出された場合にアップカウンタをリセットするリセットステップと、
前記第１のパケットの到着が検出された場合にリセットされる直前の前記アップカウンタのカウント値をダウンカウンタに設定するプリセットステップと、
前記ダウンカウンタのカウント値を前記予測結果とする予測ステップと、
を含むことを特徴とするパケット中継方法。
【請求項７】
周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１の入力インタフェースと低遅延での中継処理が要求されない第２のパケットが入力される第２の入力インタフェースとを備えた、外部から入力された複数種類のパケットを中継する通信装置において実行されるパケット中継方法であって、
前記第１の入力インタフェースに入力された前記第１のパケットを受信する第１パケット受信ステップと、
前記第１パケット受信ステップで受信され当該通信装置内で前記第２のパケットとの多重化処理を経ていない前記第１のパケットに基づいて、次に前記第１のパケットが入力される時刻を予測する到着時刻予測ステップと、
前記第２の入力インタフェースに入力された前記第２のパケットを受信する第２パケット受信ステップと、
前記第２パケット受信ステップで受信され当該通信装置内で前記第１のパケットとの多重化処理を経ていない前記第２のパケットをキューに蓄積する蓄積ステップと、
前記キューに蓄積された前記第２のパケットの長さと前記到着時刻予測ステップにおける予測結果に基づいて、前記第１のパケットと前記キューに蓄積された前記第２のパケットのどちらのパケットを送信するかを判断する判断ステップと、
前記判断ステップの判断結果に基づいて、前記第１パケット受信ステップで受信され前記第２のパケットとの多重化処理を経ていない前記第１のパケットと前記キューに蓄積された前記第２のパケットの多重化を行って送信するパケット送信ステップと、を含み、
前記到着時刻予測ステップは、
前記第１のパケットを送信したことを示す信号を前記第１のパケットの送信元の装置から受信してアップカウンタをリセットするリセットステップと、
前記信号を受信してリセットされる直前の前記アップカウンタのカウント値をダウンカウンタに設定するプリセットステップと、
前記ダウンカウンタのカウント値を前記予測結果とする予測ステップと、
を含むことを特徴とするパケット中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、許容される伝送遅延時間が異なる複数種類のパケットを多重化して通信路に出力する通信装置に関する。
【背景技術】
【０００２】
複数の入力パケットを多重化して通信路に出力する通信装置において、パケットの多重化の制御（どのような順番でパケットを送信するか）は、スケジューリング方式と呼ばれる。従来のスケジューリング方式は、たとえば下記非特許文献１に記載されている。この方式では、パケットを一旦、キューに蓄積した後、優先度等に従ってキューから読み出すようにしている。
【０００３】
また、例えば、スケジューリング方式の一つであるプライオリティキューイングの場合、パケットを優先度別に分けて、優先度毎にキューを設け、優先度の高いキューに入っているパケットから読み出して、送信する。パケットを多重化して送信する通信装置に対し、優先度をそれぞれhigh(高)、medium(中)、normal(通常)、low(低)としたキューを設けた場合について考えると、通信装置は、パケットが入力されると、この入力パケットの優先度をデータ種別等によって識別し、識別結果（パケットの優先度）に対応する優先度のキューに書き込む。また、通信装置は、パケットを送信する際、high(高)キューにあるパケットを最優先で読み出して送信する。medium(中)キューにあるパケットについては、high(高)キューにパケットが無ければ読み出して送信する。同様に、normal(通常)キューおよびlow(低)キューのパケットは、より高い優先度のパケットが存在しない場合（より高い優先度のキューにパケットが存在していない場合）に読み出して送信する。この機構により、リアルタイム性の高いパケット（以下、リアルタイム性パケットと称す）は、high(高)に割り当てることにより、他のパケットよりも低遅延で送信される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】シスコシステムズ株式会社  次世代ルータワーキンググループ著、「Cisco  ISRルータ教科書」インプレス出版、２００６年３月１日発行、p.86〜94
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した従来の通信装置では、パケットの多重化のためのスケジューリング方式として、パケットを一旦、キューに蓄積した後、優先度等に従ってキューから読み出す制御方式が採られている。リアルタイム性パケットは、優先度を高くすることにより、他のパケットよりも低遅延で送信される。しかしながら、リアルタイム性パケットが通信装置に到着し高優先キューに蓄積された時に、低優先キューからパケットを送信中の場合はこのパケットの送信が完了した後に、ようやく高優先キューからリアルタイム性パケットが読み出されて送信される。つまり、リアルタイム性パケットは、低優先キューからのパケットの読み出しが開始されてから送信が完了するまでの間はキューに蓄積され、この蓄積時間が中継遅延となる。一例として、１０Ｍｂ/ｓの速度で１５００バイトのパケットを送信している場合は、最大１．２ｍ秒の遅延となる。例えばこの遅延は、プラント制御を行う計装制御システムでの制御データの中継では、制御の処理遅延となり、きめ細かな制御ができなくなるという問題につながる。
【０００６】
本発明は、上記に鑑みてなされたものであって、複数の入力パケットを多重化して通信路に出力する通信装置において、優先的に取り扱う必要のあるパケットの中継を低遅延で行う通信装置およびパケット中継方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明の通信装置は、外部から入力された複数種類のパケットを中継する通信装置であって、周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１パケット入力部と、低遅延での中継処理が要求されない第２のパケットが入力される第２パケット入力部と、第１パケット入力部で受信されたのち第２パケット入力部で受信された第２のパケットとの多重化処理を経ていない第１のパケットに基づいて、第１パケット入力部への次の第１のパケットの到着時刻を予測する到着時刻予測手段と、第２パケット入力部で受信されたのち第１パケット入力部で受信された第１のパケットとの多重化処理を経ていない第２のパケットを蓄積するパケット蓄積手段と、到着時刻予測手段による第１のパケットの到着時刻の予測結果およびパケット蓄積手段に保持された第２のパケットの長さに基づいて、第１パケット入力部に入力された第１のパケットとパケット蓄積手段に蓄積された第２のパケットのいずれかのパケットを通信路へ送信するパケットに決定する送信パケット決定手段と、送信パケット決定手段の決定に基づいて、第１パケット入力部で受信され第２のパケットとの多重化処理を経ていない第１のパケットとパケット蓄積手段に蓄積された第２のパケットの多重化を行う多重部と、を備え、到着時刻予測手段は、第１のパケットの到着を検出するパケット検出部と、第１のパケットの到着が検出された場合にリセットするアップカウンタと、第１のパケットの到着が検出された場合にアップカウンタがリセットする直前のアップカウンタのカウント値をプリセットするダウンカウンタと、を備え、ダウンカウンタのカウント値を第１のパケットの到着時刻の予測結果として送信パケット決定手段に出力することを特徴とする。
また、本発明の別の通信装置は、外部から入力された複数種類のパケットを中継する通信装置であって、周期的に入力されかつ低遅延での中継処理が要求される第１のパケットが入力される第１パケット入力部と、低遅延での中継処理が要求されない第２のパケットが入力される第２パケット入力部と、第１パケット入力部で受信されたのち第２パケット入力部で受信された第２のパケットとの多重化処理を経ていない第１のパケットに基づいて、第１パケット入力部への次の第１のパケットの到着時刻を予測する到着時刻予測手段と、第２パケット入力部で受信されたのち第１パケット入力部で受信された第１のパケットとの多重化処理を経ていない第２のパケットを蓄積するパケット蓄積手段と、到着時刻予測手段による第１のパケットの到着時刻の予測結果およびパケット蓄積手段に保持された第２のパケットの長さに基づいて、第１パケット入力部に入力された第１のパケットとパケット蓄積手段に蓄積された第２のパケットのいずれかのパケットを通信路へ送信するパケットに決定する送信パケット決定手段と、送信パケット決定手段の決定に基づいて、第１パケット入力部で受信され第２のパケットとの多重化処理を経ていない第１のパケットとパケット蓄積手段に蓄積された第２のパケットの多重化を行う多重部と、を備え、到着時刻予測手段は、第１のパケットを送信したことを示す信号が第１のパケットの送信元の装置から入力されるとリセットするアップカウンタと、その第１のパケットを送信したことを示す信号が入力されるとアップカウンタがリセットする直前のアップカウンタのカウント値をプリセットするダウンカウンタと、を備え、ダウンカウンタのカウント値を第１のパケットの到着時刻の予測結果として送信パケット決定手段に出力することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、リアルタイム処理が必要なパケットを低遅延で中継することができる、という効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明にかかる通信装置を適用したパケット伝送システムの構成例を示す図である。
【図２】図２は、実施の形態１の通信装置の内部構成例を示す図である。
【図３】図３は、実施の形態１のＲＴパケット到着時刻予測部の内部構成例を示す図である。
【図４】図４は、送信スケジューラの動作を示した擬似コード例を示す図である。
【図５】図５は、実施の形態１の通信装置の動作を説明するための図である。
【図６】図６は、実施の形態２の通信装置の内部構成例を示す図である。
【図７】図７は、実施の形態２のＲＴパケット到着時刻予測部の内部構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明にかかる通信装置を適用したパケット伝送システムの構成例を示す図である。このパケット伝送システムは、本発明にかかる通信装置１と、リアルタイムデータを発生させるデータ発生器２０と、非リアルタイムデータを発生させるデータ発生器２１と、通信装置１の通信相手先であるデータ処理装置３０と、を含み、通信装置１とデータ処理装置３０は通信ネットワーク２００経由で通信を行う。
【００１２】
データ発生器２０は、リアルタイムで処理すべきデータを通信パケットとして発生するものである。例えば、計装制御システムにおける制御のためのセンサ（図示せず）を収容する装置が相当する。また、データ発生器２１は、リアルタイム処理を必要としないデータを通信パケットとして発生するものである。例えば、計装制御システムにおける監視機器（図示せず）を収容する装置が相当する。図１では、データ発生器２１が２つの場合の例を示しているが、１つまたは３つ以上であってもよい。以下の説明では、データ発生器２０が発生させた通信パケット（リアルタイムで処理すべきデータ）をＲＴパケットと表現し、データ発生器２１が発生させた通信パケット（リアルタイムで処理する必要のないデータ）をＮＲＴパケットと表現する。
【００１３】
通信装置１は、データ発生器２０およびデータ発生器２１から入力されたデータ（ＲＴパケット，ＮＲＴパケット）を多重化して通信ネットワーク２００へ送信する。なお、データ発生器２０と通信装置１は通信路１０１で接続され、各データ発生器２１と通信装置１は通信路１０２ａ，１０２ｂで接続されている。また、通信装置１は通信路１０３を介して通信ネットワーク２００に接続されている。通信路１０１，１０２ａ，１０２ｂ，１０３は有線通信路であってもよいし無線通信路であってもよい。
【００１４】
データ処理装置３０は、データ発生器２０および２１から出力され、通信装置１で多重化されたデータを処理する装置である。データ発生器２０および２１とデータ処理装置３０は通信ネットワーク２００を介して遠隔に設置される。データ処理装置３０は、データ発生器２０および２１が発生したデータを処理すると、処理結果に応じた制御指示を制御対象機器（図示せず）に行う。データ処理装置３０でのきめ細かな制御のために、データ発生器２０は、収容するセンサ（図示せず）の値をデータ処理装置３０に向けて周期的に送信する。
【００１５】
図２は、図１に示した通信装置１の内部構成例を示す図である。図２においては、図１にも示されている部分に図１と同一の符号を付している。
【００１６】
図示したように、通信装置１は、入力Ｉ／Ｆ部１１、キュー１２、キュー管理部１３、多重部１４、送信スケジューラ１５、出力Ｉ／Ｆ部１６およびＲＴパケット到着時刻予測部１７を備える。
【００１７】
通信装置１において、入力Ｉ／Ｆ部１１は、通信路１０１、１０２ａおよび１０２ｂから入力されるパケットの受信処理、具体的には、物理層における処理、パケットの先頭の識別、およびパケットの最後尾の識別を行う。
【００１８】
キュー１２は、対応するデータ発生器２１（通信路１０２ａまたは１０２ｂを介して接続されている発生器２１）から受信したＮＲＴパケットを一時的に蓄積しておくためのバッファであり、先に入力されたパケットを先に出力するＦＩＦＯ動作を行う。
【００１９】
キュー管理部１３は、キュー１２に蓄積されているパケット（ＮＲＴパケット）を管理し、ＮＲＴパケットの蓄積状態（ＮＲＴパケットの有無）、および格納されている先頭のＮＲＴパケットの長さを送信スケジューラ１５に通知するとともに、送信スケジューラ１５の指示に従ってキュー１２からＮＲＴパケットを読み出し、多重部１４へ出力する。送信スケジューラ１５への通知は、たとえば、キュー１２の状態が変化した場合（パケットが新たに書き込まれた場合，パケットが読み出された場合）に通知する。送信スケジューラ１５からの要求に応じて通知するようにしてもよい。
【００２０】
ＲＴパケット到着時刻予測部１７は、通信路１０１からＲＴパケットが入力される周期（ＲＴパケットの到着周期）を測定し、次にパケットが入力される時刻を予測する。また、予測結果を送信スケジューラ１５に出力する。
【００２１】
多重部１４は、各キューから入力されたＮＲＴパケット（ＮＲＴ＃１、ＮＲＴ＃２）および通信路１０１に接続された入力Ｉ／Ｆ部１１から入力されたＲＴパケット（ＲＴ）のいずれかを選択して出力Ｉ／Ｆ部１６へ出力する。選択は、送信スケジューラ１５から指示され、パケット単位に実行される。
【００２２】
送信スケジューラ１５は、ＲＴパケット到着時刻予測部１７における予測結果および各キュー管理部１３から通知されたＮＲＴパケットの長さの情報に基づいて、キュー管理部１３に対するＮＲＴパケットの読み出し指示および多重部１４に対するパケット出力指示を行う。具体的には、ＮＲＴパケットの送信を行うかどうかを判断し、送信すると判断した場合には、送信することとしたＮＲＴパケットをキュー１２から多重部１４へ出力するようキュー管理部１３に指示を行う。また、多重部１４に対してはＲＴパケットまたはいずれかのキュー１２から読み出されたＮＲＴパケットを選択して出力するよう指示を行う。この送信スケジューラ１５は、周期的に入力されるＲＴパケットの到着タイミングとＮＲＴパケットの送信処理の実行タイミングが衝突しないようにスケジューリングを行う。すなわち、ＮＲＴパケットの送信処理を実行中にＲＴパケットが到着するかどうかを予測し、到着すると判断した場合には、そのＮＲＴパケットの送信処理を開始しないことに決定して次のＲＴパケットが到着するのを待つ。これにより、リアルタイム処理が要求されないＮＲＴパケットの中継処理にかかる遅延時間は増大するが、リアルタイム処理が要求されるＲＴパケットについては低遅延で中継できる。スケジューリングを実施するタイミングは、たとえば、ＲＴパケットまたはＮＲＴパケットが新たに入力されたことを検出した時点とする。また、ＲＴパケットまたはＮＲＴパケットの送信が完了した時点でキュー１２の状態を確認し、ＮＲＴパケットが存在していればスケジューリングを行う。
【００２３】
出力Ｉ／Ｆ部１６は、物理層における処理を実施してパケットを送信する。
【００２４】
図３は、ＲＴパケット到着時刻予測部１７の内部構成例を示す図である。ＲＴパケット到着時刻予測部１７は、パケット検出部１７１、アップカウンタ１７２およびダウンカウンタ１７３を備える。
【００２５】
ＲＴパケット到着時刻予測部１７において、パケット検出部１７１は、データ発生器２０から入力されるＲＴパケットの先頭を検出する。また、検出するとアップカウンタ１７２にパルスを出力する。アップカウンタ１７２は、クロック（図示せず）毎に値を計数する（インクリメントする）カウンタであり、パケット検出部１７１からＲＴパケットの先頭検出を示すパルスが入力されるとカウント値をリセットする。カウント値はダウンカウンタ１７３へ出力する。ダウンカウンタ１７３は、クロック毎に値をデクリメントするカウンタであり、パケット検出部１７１からパルスが入力されると、その時点のアップカウンタ１７２のカウント値（リセットされる直前のカウント値）をカウント値にプリセットする。ダウンカウンタ１７３のカウント値は送信スケジューラ１５へ出力する。
【００２６】
図４は、送信スケジューラ１５の動作を示した擬似コード例を示す図である。送信スケジューラ１５は、図４に示したラインＣ１では、ＲＴパケット到着時刻予測部１７から入力された情報に基づきＲＴパケット到着までの時間が最大かどうか判定する。最大であればラインＣ２の動作を選択し（スケジューリング結果とし）、最大でなければさらにラインＣ３の判定を行う。
【００２７】
ここで、ＲＴパケットの到着までの時間は、ＲＴパケット到着時刻予測部１７から通知されるダウンカウンタ１７３のカウント値から次式により求める。
【００２８】
（ＲＴパケットの到着までの時間）
＝ダウンカウンタ１７３のカウント値×ダウンカウンタ１７３のクロック周期
【００２９】
ＲＴパケットの到着までの時間が最大かどうかはダウンカウンタ１７３のカウント値がプリセットされたかどうかで判断できる。すなわちＲＴパケットが到着した場合を示している。
【００３０】
ラインＣ２では、多重部１４に対して、ＲＴ（ＲＴパケット）を選択して出力するよう指示を出す。ラインＣ３では、キュー１２内の先頭パケットをキューから読み出す時間（先頭パケット読出時間）と次のＲＴパケットの到着までの時間を比較する。先頭パケット読出時間は、キュー管理部１３から通知されるキュー１２内の先頭のパケットの長さから次式により求める。
【００３１】
（先頭パケット読出し時間）
＝先頭のパケットの長さ(バイト)×キューから１バイトを読み出す時間
【００３２】
ラインＣ３の説明に戻り、先頭パケット読出し時間の方がＲＴパケットの到着までの時間より大きい場合はラインＣ４の動作を選択し、そうでない場合はラインＣ６の動作を選択する。なおこの判定（ラインＣ３の判定）は、キュー１２毎に行う。ここで、ラインＣ３の判定が成立するのは、ＮＲＴパケットの送信を開始してしまうと送信完了となる前に次のＲＴパケットが到着するケースである。したがって、ラインＣ３の判定が成立する場合に選択するラインＣ４の動作を、キュー内のＮＲＴパケットを送信しない（送信動作を開始しない）ことにしている。一方、ラインＣ６の動作では、多重部１４に対して、ＮＲＴ（ＮＲＴパケット）＃ｎを選択して出力するよう指示を出す。ここでｎは、Ｃ３の判定において、Ｃ６の動作を行う条件を満たすキュー１２の番号を示す。よって、ＮＲＴパケット＃ｎは、番号がｎのキュー１２に書き込まれているＮＲＴパケットを示す。複数のキュー１２で条件を満たす場合には、いずれかのキューの先頭のＮＲＴパケットを選択して出力するよう指示を出す。この選択手法は、ラウンドロビンや、キュー１２内に蓄積されているパケット数が多い方を選択するなど、どのような手法で行ってもかまわない。
【００３３】
次に、動作について説明する。図５は、通信装置１の動作を説明するための図であり、通信路１０１，１０２ａ，１０２ｂからそれぞれ入力されるパケットと通信路１０３に出力されるパケットの時間軸上での対応関係の一例を示している。図５において、線５１，５２，５３は、それぞれ、通信路１０２ｂからの入力パケットの時間の流れ，通信路１０２ａからの入力パケットの時間の流れ、通信路１０１からの入力パケットの時間の流れを示している。また線５４は、出力Ｉ／Ｆ部１６（図２参照）から通信路１０３への出力パケットの時間の流れを示している。図中、(Ａ)〜(Ｃ)，(ア)，(イ)，(１)〜(５)は、パケットを示している。各パケットにおいて、左端がパケットの先頭、右端がパケットの最後尾である。データ発生器２０（図１参照）から入力されるＲＴパケットは、線５３上に示されたパケット(１)〜(５)であり、時間間隔αで周期的に入力される。データ発生器２１から入力されるＮＲＴパケットは、線５１または線５２上に示されたパケット(Ａ)〜(Ｃ)，(ア)，(イ)であり、非同期に（非周期的に）入力される。ｔ１〜ｔ１２は時刻を示している。  
【００３４】
以下、図５を用いて通信装置１の詳細動作を説明する。なお、図５に示した時刻ｔ１の時点では、いずれのキュー１２にもＮＲＴパケットが格納されていないものとする。
【００３５】
時刻ｔ１においてデータ発生器２０からの入力パケット(１)が入力Ｉ／Ｆ部１１を介して多重部１４およびＲＴパケット到着時刻予測部１７に入力される。これに伴い、ＲＴパケット到着時刻予測部１７では、パケット検出部１７１がＲＴパケットの先頭を検出し、パケット検出（ＲＴパケットの到着）を示すパルスをアップカウンタ１７２およびダウンカウンタ１７３に出力する。その結果、アップカウンタ１７２はカウンタ値をリセットし、ダウンカウンタ１７３はカウンタ値をプリセットする。このプリセットでは、ＲＴパケットの到着時刻の間隔を示す周期α（＝ＲＴパケットの到着までの時間の最大値）に相当するカウンタ値がダウンカウンタ１７３にプリセットされ、データ発生器２０から次のＲＴパケットが入力されるまでの時間を示すカウント値がダウンカウンタ１７３から送信スケジューラ１５に出力される。この例では、ダウンカウンタ１７３は、パケット(２)が入力される時間ｔ３までの時間を示すカウント値を送信スケジューラ１５に出力する。また、送信スケジューラ１５は、ＲＴパケットが到着したことを検出すると、図４に従った動作を実行してスケジューリングを行う。ＲＴパケットの到着は、たとえば、ダウンカウンタ１７３から受け取ったカウント値がプリセットされたかどうかを監視して検出する。時刻ｔ１においてはＲＴパケット到着時刻予測部１７から入力されたカウント値が最大（ＲＴパケット到着までの時間が最大）なので、送信スケジューラ１５は、スケジューリングにおいて、ラインＣ１の判定によりＣ２の処理を実行することに決定する。すなわち、多重部１４に対して、ＲＴパケットを選択して出力するよう指示を出す。この指示に基づいて、多重部１４は、ＲＴパケットである入力パケット(１)を出力Ｉ／Ｆ部１６経由でデータ処理装置３０に向けて送信する。
【００３６】
上記パケット(１)が入力された後、データ発生器２１から到着したＮＲＴパケットであるパケット(Ａ)が入力Ｉ／Ｆ部１１を介してキュー１２に書き込まれる。時刻ｔ２でパケット(Ａ)の最後尾の書き込みを完了すると、キュー管理部１３は、送信スケジューラ１５に対して、パケット(Ａ)のパケット長およびパケット有を示す情報を出力する。この情報を受け取った送信スケジューラ１５は、スケジューリングを開始し、まず、図４のラインＣ１の判定を行い、ＲＴパケット到着時刻予測部１７から入力されたカウント値が最大ではない（ＲＴパケット到着までの時間が最大ではない）ので、次にラインＣ３の判定を行う。この例では、ラインＣ３の判定が成立しない、すなわち、次のＲＴパケット（パケット(２)）が到着する前にキュー１２からのＮＲＴパケット（パケット(Ａ)）の読み出しを完了できるため、送信スケジューラ１５は、さらにラインＣ５およびＣ６の処理を実行する。その結果、送信スケジューラ１５は、多重部１４に対して、ＮＲＴパケット＃２を選択して出力するよう指示を出す。また送信スケジューラ１５は、キュー１２からのパケットの読出しをキュー管理部１３に指示する。キュー管理部１３は指示に従いキュー１２から多重部１４へＮＲＴパケット＃２を出力させる。多重部１４は、送信スケジューラ１５からの上記指示に従い、キュー１２から入力されたＮＲＴパケット＃２であるパケット(Ａ)を出力Ｉ／Ｆ部１６経由で送信する。
【００３７】
なお、上記のパケット(１)の送信が完了した時点においてはキュー１２へのパケット(Ａ)の書き込みが完了していないので、スケジューラ１５は、いずれのキュー１２にもパケットが存在していないと判断してスケジューリングを実施しない。
【００３８】
その後、時刻ｔ３においてデータ発生器２０からのパケット(２)が入力Ｉ／Ｆ部１１を介して多重部１４およびＲＴパケット到着時刻予測部１７に入力される。これに伴い、ＲＴパケット到着時刻予測部１７では、アップカウンタ１７２のカウンタ値のリセットとダウンカウンタ１７３のカウンタ値のプリセットを行う。また、この時点ではＲＴパケット到着時刻予測部１７から入力されたカウント値が最大（ＲＴパケット到着までの時間が最大）なので、送信スケジューラ１５は、上述したパケット(１)が入力された場合と同様の処理を行い、ＲＴパケットを出力するよう多重部１４に指示を出す。多重部１４は、パケット(２)を出力Ｉ／Ｆ部１６経由で送信する。
【００３９】
上記パケット(２)の送信が完了した時点においてはいずれのキュー１２にもパケットが存在していないので、スケジューラ１５は、スケジューリングを実施しない。
【００４０】
その後、データ発生器２１から到着したＮＲＴパケットであるパケット(Ｂ)が入力Ｉ／Ｆ部１１を介してキュー１２に書き込まれる。時刻ｔ４でパケット(Ｂ)の最後尾の書き込みを完了すると、キュー管理部１３は、送信スケジューラ１５に対して、パケット(Ｂ)のパケット長およびパケット有を示す情報を出力する。この情報を受け取った送信スケジューラ１５は、スケジューリングを開始し、まず、図４のラインＣ１の判定を行い、ＲＴパケット到着時刻予測部１７から入力されたカウント値が最大ではないので、次にラインＣ３の判定を行う。この例では、ラインＣ３の判定が成立する、すなわち、次のＲＴパケットであるパケット(２)が到着する前にキュー１２からのパケット(Ｂ)の読み出しを完了できないため、送信スケジューラ１５は、パケット(Ｂ)の読出しを行わないことに決定する。この場合、送信スケジューラ１５は、キュー管理部１３および多重部１４の制御を行わない（パケットの読出し指示，選択・出力指示を出さない）。
【００４１】
その後、上記パケット(Ｂ)に続くパケット(Ｃ)がデータ発生器２１から到着し、キュー１２への書込みを行っている途中の時刻ｔ５においてデータ発生器２０からのパケット(３)が到着する。これに伴い、ＲＴパケット到着時刻予測部１７では、アップカウンタ１７２のカウンタ値のリセットとダウンカウンタ１７３のカウンタ値のプリセットを行う。この場合、ＲＴパケット到着時刻予測部１７から入力されたカウント値が最大なので、送信スケジューラ１５は、上述したパケット(１)，パケット(２)が入力された場合と同様の処理を行い、ＲＴパケットを出力するよう多重部１４に指示を出す。多重部１４は、パケット(３)を出力Ｉ／Ｆ部１６経由で送信する。
【００４２】
パケット(３)の送信が時刻ｔ６において完了すると、送信スケジューラ１５は、スケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。この場合、ラインＣ３の判定が成立しない、すなわち、次のＲＴパケットであるパケット(４)が到着する前にキュー１２からのパケット(Ｂ)の読み出しを完了できるため、送信スケジューラ１５は、さらにラインＣ５およびＣ６の処理を実行する。すなわち、送信スケジューラ１５は、ＮＲＴパケット＃２を送信することに決定し、多重部１４に対して、ＮＲＴパケット＃２を選択して出力するよう指示を出す。また送信スケジューラ１５は、キュー１２からのパケットの読出しをキュー管理部１３に指示する。キュー管理部１３は指示に従いキュー１２から多重部１４へＮＲＴパケット＃２を出力させる。多重部１４は、送信スケジューラ１５からの上記指示に従い、キュー１２から入力されたＮＲＴパケット＃２であるパケット(Ｂ)を出力Ｉ／Ｆ部１６経由で送信する。
【００４３】
また、パケット(Ｂ)の送信動作を開始し、キュー１２からパケット(Ｂ)を読み出している最中に、通信路１０２ａからパケット(ア)が到着し、このパケット(ア)のキュー１２への書き込みとそれ以前に通信路１０２ｂから到着したパケット(Ｃ)のキュー１２への書込みが完了する。
【００４４】
その後、時刻ｔ７においてパケット(Ｂ)の送信（キュー１２からの読み出し）が完了すると、送信スケジューラ１５は、スケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。ラインＣ３では各キュー１２の先頭パケット（ここではパケット(Ｃ)およびパケット(ア)となる）について判定を行うが、パケット(Ｃ)については判定が成立し、パケット(ア)については判定が成立しない。よって、パケット(Ｃ)についてはラインＣ４の動作を選択し、パケット(ア)についてはラインＣ６の動作を選択する。すなわち、パケット(ア)を送信することに決定する。その結果、送信スケジューラ１５は、多重部１４に対して、ＮＲＴパケット＃１を選択して出力するよう指示を出す。また送信スケジューラ１５は、パケット(ア)が書き込まれているキュー１２からのパケットの読出しをキュー管理部１３に指示する。キュー管理部１３は指示に従いキュー１２から多重部１４へＮＲＴパケット＃１であるパケット(ア)を出力させる。多重部１４は、送信スケジューラ１５からの上記指示に従い、キュー１２から入力されたＮＲＴパケット＃１（パケット(ア)）を出力Ｉ／Ｆ部１６経由で送信する。
【００４５】
なお、上記のスケジューリングにおいて、パケット(Ｃ)およびパケット(ア)の両者に対してラインＣ３の判定が成立しない場合もあり得るが、このような場合、送信スケジューラ１５は、いずれか一方のパケットを選択して送信することに決定する。または、まずパケット(Ｃ)の読出時間とパケット(ア)の読出時間の合計値とＲＴパケット到着までの時間を比較し、ＲＴパケット到着までの時間の方が大きければパケット(Ｃ)およびパケット(ア)の両者を送信することに決定し、ＲＴパケット到着までの時間の方が小さければいずれか一方のパケットを送信することに決定する。ＲＴパケット到着までの時間の方が小さい場合にどちらのパケットを送信するかは、優先度が異なっていれば優先度の高い方とする。優先度が同一の場合には、どちらを選択してもよいが、伝送効率を考えるとデータ量の大きい方を選択するのが望ましい。
【００４６】
パケット(ア)の送信（キュー１２からの読み出し）が完了すると、キュー１２にパケットが存在しているので、送信スケジューラ１５はスケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。この場合、ラインＣ３の判定が成立する、すなわち次にＲＴパケットが到着する前に送信を完了できるＮＲＴパケットが存在しないため、送信を行わないことに決定する。
【００４７】
その後、時刻ｔ８においてデータ発生器２０からのパケット(４)が入力Ｉ／Ｆ部１１を介して多重部１４およびＲＴパケット到着時刻予測部１７に入力される。これに伴い、ＲＴパケット到着時刻予測部１７では、アップカウンタ１７２のカウンタ値のリセットとダウンカウンタ１７３のカウンタ値のプリセットを行う。送信スケジューラ１５は、上述したパケット(１)〜(３)が入力された場合と同様の処理を行い、ＲＴパケットを出力するよう多重部１４に指示を出す。多重部１４は、パケット(４)を出力Ｉ／Ｆ部１６経由で送信する。
【００４８】
パケット(４)の送信が時刻ｔ９において完了すると、キュー１２にパケットが存在しているので、送信スケジューラ１５はスケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。この場合、ラインＣ３の判定が成立しない、すなわち、次のＲＴパケット（パケット(５)）が到着する前にキュー１２からＮＲＴパケット（パケット(Ｃ)）の読み出しを完了できるため、送信スケジューラ１５は、さらにラインＣ５およびＣ６の処理を実行する。その結果、送信スケジューラ１５は、多重部１４に対して、ＮＲＴパケット＃２を選択して出力するよう指示を出す。また送信スケジューラ１５は、キュー１２からのパケットの読出しをキュー管理部１３に指示する。キュー管理部１３は指示に従いキュー１２から多重部１４へＮＲＴパケット＃２を出力させる。多重部１４は、送信スケジューラ１５からの上記指示に従い、キュー１２から入力されたＮＲＴパケット＃２であるパケット(Ｃ)を出力Ｉ／Ｆ部１６経由で送信する。
【００４９】
また、パケット(Ｃ)の送信動作を開始し、キュー１２からパケット(Ｃ)を読み出している最中に、通信路１０２ａからパケット(イ)が到着し、このパケット(イ)のキュー１２への書き込みが完了する。
【００５０】
その後、時刻ｔ１０においてパケット(Ｃ)の送信（キュー１２からの読み出し）が完了すると、送信スケジューラ１５は、スケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。この場合、ラインＣ３の判定が成立する、すなわち、次のＲＴパケット（パケット(５)）が到着する前にキュー１２からのＮＲＴパケット（パケット(イ)）の読み出しを完了できないため、送信を行わないことに決定する。
【００５１】
その後、時刻ｔ１１においてデータ発生器２０からのパケット(５)が入力Ｉ／Ｆ部１１を介して多重部１４およびＲＴパケット到着時刻予測部１７に入力されると、ＲＴパケット到着時刻予測部１７では、アップカウンタ１７２のカウンタ値のリセットとダウンカウンタ１７３のカウンタ値のプリセットを行う。送信スケジューラ１５は、上述したパケット(１)〜(４)が入力された場合と同様の処理を行い、ＲＴパケットを出力するよう多重部１４に指示を出す。多重部１４は、パケット(５)を出力Ｉ／Ｆ部１６経由で送信する。
【００５２】
その後、時刻ｔ１２においてパケット(５)の送信が完了すると、送信スケジューラ１５は、スケジューリングを行い、図４のラインＣ１、続いてラインＣ３の判定を行う。この場合、ラインＣ３の判定が成立しない、すなわち、次のＲＴパケット（図示していないパケット(６)）が到着する前にキュー１２からのＮＲＴパケット（パケット(イ)）の読み出しを完了できるため、さらにラインＣ５およびＣ６の処理を実行してパケット(イ)を送信することに決定する。そして、送信スケジューラ１５は、多重部１４に対して、ＮＲＴパケット＃１を選択して出力するよう指示を出す。また送信スケジューラ１５は、パケット(イ)が書き込まれているキュー１２からのパケットの読出しをキュー管理部１３に指示する。キュー管理部１３は指示に従いキュー１２から多重部１４へＮＲＴパケット＃１であるパケット(イ)を出力させる。多重部１４は、送信スケジューラ１５からの上記指示に従い、キュー１２から入力されたＮＲＴパケット＃１（パケット(イ)）を出力Ｉ／Ｆ部１６経由で送信する。
【００５３】
このように、本実施の形態の通信装置においては、データ発生器２０から入力されるＲＴパケットの次の到着時刻をＲＴパケット到着時刻予測部１７が送信スケジューラ１５に出力し、送信スケジューラ１５はこのパケット到着時間にぶつからないようにキュー１２からのＮＲＴパケットの読出しを制御するとともに、多重部１４での出力パケットを選択するようにしているので、データ発生器２０からの入力されるＲＴパケットは、通信装置内で遅延することなく出力Ｉ／Ｆ部１６を介して通信ネットワーク２００に出力される。このため、データ発生器２０で発生したデータが遅延なく、データ処理装置３０に伝わり、その値によりデータ処理装置３０が制御対象機器（図示せず）に指示を出せるので、きめ細かな制御が可能となる。
【００５４】
実施の形態２．
先の実施の形態１では、ＲＴパケット到着時刻予測部１７において、パケットの到着時刻の予測を、パケットの先頭を検出することによりアップカウンタ１７２のリセットおよびダウンカウンタ１７３のプリセットにより実現するようにしたものであるが、次に、ＲＴパケットの到着を通信装置１の外部から入力される場合の実施の形態を示す。なお、パケット伝送システムの構成は実施の形態１と同様である（図１参照）。
【００５５】
図６は、実施の形態２の通信装置の内部構成例を示す図である。図６においては、実施の形態１で説明した通信装置１（図２参照）と同じ構成要素に同一の符号を付している。すなわち、本実施の形態の通信装置１ａは、実施の形態１で説明した通信装置１のＲＴパケット到着時刻予測部１７をＲＴパケット到着時刻予測部１７ａに置き換えたものである。本実施の形態では、実施の形態１と異なる構成要素であるＲＴパケット到着時刻予測部１７ａの動作について説明する。
【００５６】
図６において、ＲＴパケット到着周期入力は、ＲＴパケットの到着時刻を示すパルスの入力を示している。ＲＴパケット到着時刻予測部１７ａは、このパルスの入力に基づいて、次にパケットが入力される時刻を予測する。
【００５７】
図７は、ＲＴパケット到着時刻予測部１７ａの内部構成例を示す図であり、実施の形態１のＲＴパケット到着時刻予測部１７と同じ構成要素に同一の符号を付している。このＲＴパケット到着時刻予測部１７ａは、ＲＴパケット到着時刻予測部１７からパケット検出部１７１を削除し、アップカウンタ１７２およびダウンカウンタ１７３に対してＲＴパケットの到着時刻を示すパルスを入力させるように構成したものである。
【００５８】
通信装置１ａには、例えば、データ発生器２０から、ＲＴパケットの到着時刻を示すパルスであるＲＴパケット到着パルスが、パケット出力に同期して入力される（図示せず）。実施の形態１の通信装置１との動作の違いは、ＲＴパケット到着時刻予測部１７のアップカウンタ１７２のリセットおよびダウンカウンタ１７３のプリセットが、ＲＴパケット到着パルスの入力に応じて実行される点のみである。このため、実施の形態１と同様に、データ発生器２０から入力されるパケットの次の到着時刻をＲＴパケット到着時刻予測部１７ａが送信スケジューラ１５に出力し、送信スケジューラ１５はこのパケット到着時間にぶつからないようにキュー１２からのパケットの読出しを制御するとともに、多重部１４での出力パケットを選択するようにする。これにより、実施の形態１の通信装置１と同様に、データ発生器２０からの入力されるパケットは、通信装置１ａ内で遅延することなく通信ネットワーク２００に出力される。つまり、データ発生器２０で発生したデータが遅延なく、データ処理装置３０に伝わり、その値によりデータ処理装置３０が制御対象機器に指示を出せるので、きめ細かな制御が可能となる。
【産業上の利用可能性】
【００５９】
以上のように、本発明にかかる通信装置は、複数の通信路から入力されたパケットを多重化して通信路に中継する場合に有用であり、特に、低遅延での中継が要求されるパケットと低遅延での中継が要求されないパケットを取り扱う通信装置に適している。
【符号の説明】
【００６０】
１，１ａ  通信装置
１１  入力Ｉ／Ｆ部
１２  キュー
１３  キュー管理部
１４  多重部
１５  送信スケジューラ
１６  出力Ｉ／Ｆ部
１７，１７ａ  ＲＴパケット到着時刻予測部
２０  データ発生器（リアルタイム）
２１  データ発生器（非リアルタイム）
３０  データ処理装置
１７１  パケット検出部
１７２  アップカウンタ
１７３  ダウンカウンタ
１０１，１０２ａ，１０２ｂ，１０３  通信路
２００  通信ネットワーク
【図１】
0005601906.tif 000002
【図２】
0005601906.tif 000003
【図３】
0005601906.tif 000004
【図４】
0005601906.tif 000005
【図５】
0005601906.tif 000006
【図６】
0005601906.tif 000007
【図７】
0005601906.tif 000008