(57)【要約】【課題】  障害発生時もパケットの中継を継続でき、通信ネットワークの負荷を低減した冗長通信方式を実現する。【解決手段】  送信するパケットに、パケットＩＤとしてとり得る値をサイクリックに順番に該パケットＩＤとして付与して、相互に接続された１乃至複数の通信ノードに送信する送信手段と、送信元ノードから受信したパケットのパケットＩＤを記録する記録手段と、受信したパケットのパケットＩＤと、前記記録手段によって記録されたパケットＩＤとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードＩＤを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、自分宛でない若しくは制御パケットである場合は相互に接続された１乃至複数の通信ノードに中継する中継手段とを備える。【選択図】  図６
2011109232.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワーク上の他の通信ノードと相互に接続された通信ノードであって、
送信するパケットに、宛先ノードＩＤと送信元ノードＩＤとパケットＩＤとしてとり得る値をサイクリックに順番に該パケットＩＤとして付与して、相互に接続された１乃至複数の通信ノードに送信する送信手段と、
送信元ノードから受信したパケットのパケットＩＤを記録する記録手段と、
受信したパケットのパケットＩＤと、前記記録手段によって記録されたパケットＩＤとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、
前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードＩＤを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、
前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードＩＤを確認し、自分宛ではない若しくは制御パケットである場合は相互に接続された１乃至複数の通信ノードに中継する中継手段とを備える通信ノード。
【請求項２】
前記記録手段は、記録内容を更新する更新周期時間を有し、該更新周期時間内に、記録内容が更新されなかった送信元ノードの記録を削除する削除手段と、
受信したパケットに対応する送信元ノードの記録がない場合は、該送信元ノードの記録を新たに作成し、該受信したパケットのパケットＩＤを記録する作成手段と、
を備える請求項１に記載の通信ノード。
【請求項３】
前記記録手段において、前記更新周期時間は通信ネットワーク内の任意の２つの通信ノード間でパケットが中継されるために要する時間より長く、送信元ノードが該更新周期時間内に送信可能な最大パケット数がパケットＩＤ値の最大値の１／２を超える時間より短く設定されている請求項２に記載の通信ノード。
【請求項４】
前記パケット判別手段は、受信したパケットＩＤの値が前記記録手段によって記録されたパケットＩＤの値よりも大きい場合には、該受信したパケットＩＤの値と該記録手段に記録されたパケットＩＤの値との差が、更新周期時間内に同一の送信元ノードが送信可能な最大パケット数以下となる条件で、
受信したパケットＩＤの値が前記記録手段によって記録されたパケットＩＤの値よりも小さい場合には、該受信したパケットＩＤの値が、パケットＩＤとしてとり得る値の最大値と該記録手段に記録されたパケットＩＤとの値の差を、更新周期周期内に同一の送信元ノードが送信可能な最大パケット数から減算した値以下となる条件で比較し、前記送信元ノードでの送信順序を判定する請求項１に記載の通信ノード。
【請求項５】
前記送信手段は通信ノードが起動したとき、各通信ノードの前記記録手段における記録内容を同期する制御パケットを送信する送信手段を備える請求項１に記載の通信ノード。
【請求項６】
請求項１に記載の前記通信ノードであって、
前記記録手段に記録されたパケットＩＤと受信したパケットのパケットＩＤが連続していない場合にはパケットの追い越しが発生したと判断する追越検出手段と、
追い越しが発生したパケットＩＤの範囲のパケットＩＤを記録する追越記録手段と、
受信したパケットのパケットＩＤと前記追越記録手段によって記録されたパケットＩＤとを比較し、追い越されたパケットであるかを判定する追越パケット判別手段と、
前記追越パケット判別手段にて、追い越されたパケットと判定されたパケットについて、宛先パケットＩＤを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、
前記追越パケット判別手段にて、追い越されたパケットと判定されたパケットについて、宛先パケットＩＤを確認し、自分宛ではない若しくは制御パケットである場合は１乃至複数の相互に接続された通信ノードに中継する中継手段と、をさらに備える通信ノード。
【請求項７】
前記記録手段は追い越しが発生したパケットＩＤの範囲について、その範囲の先頭と末尾のパケットＩＤを記録し、
前記追越パケット判定手段は、受信したパケットのパケットＩＤと前記先頭と末尾のパケットＩＤとを比較して、該受信したパケットのパケットＩＤが該先頭のパケットＩＤと一致すれば追い越されたパケットであると判定する手段と、
該受信したパケットのパケットＩＤが該末尾のパケットＩＤと一致すればパケットの追い越しが解消されたことを判定する手段を備える請求項６に記載の通信ノード
【請求項８】
請求項１乃至７に記載の通信ノードが通信ネットワーク上で相互に複数接続された通信システム。
【請求項９】
通信ネットワーク上の相互に接続された通信ノード間のパケット通信方法であって、
送信するパケットに、パケットＩＤとしてとり得る値をサイクリックに順番に付与して送信する送信ステップと、
前記送信手段から受信したパケットのパケットＩＤを記録する記録ステップと、
受信したパケットのパケットＩＤと、前記記録手段によって記録されたパケットＩＤとを比較し、前記送信手段でのパケット送信順序を判定するパケット判別ステップとを含むパケット通信方法。
【請求項１０】
前記パケット判別ステップは、受信したパケットＩＤの値が前記記録手段によって記録されたパケットＩＤの値よりも大きい場合には、該記録されたパケットＩＤの値と該パケットＩＤの値の差が、更新周期時間内に同一の前記送信手段が送信可能なパケット数以下となる条件で、
受信したパケットＩＤの値が前記記録手段によって記録されたパケットＩＤの値よりも小さい場合には、該受信したパケットＩＤの値が、パケットＩＤの最大値と該記録されたパケットＩＤとの値の差を、更新周期周期内に同一の前記送信手段が送信可能なパケット数から減算した値以下となる条件で判定を行う請求項９に記載のパケット通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信ネットワークにおける通信ノード、通信システム並びにパケット通信方法に関するものである。
【背景技術】
【０００２】
通信ネットワークに接続された２つの通信ノード間に複数の中継経路が存在する場合、通常は、複数の通信ポートを持つ通信ノードにOSPF（Open Shortest Path First）やSTP（Spanning Tree Protocol）といったルーティングプロトコルを実装し、それらの機能により中継経路の１つを選択することで、宛先ノードに同一パケットが複数到着したり、同一パケットが通信ネットワーク内を永久に中継され続けるブロードキャストストームと呼ばれる現象を回避している。このような通信ネットワークで限定された中継経路上で障害が発生した場合、OSPFやSTPが新たな中継経路を選択することで通信が再開されるが、そのためには少なくとも数十秒程度が必要であった。つまり、迂回経路があるにもかかわらす、数十秒もの間、通信が断絶してしまう。このようなことから、障害発生時も通信を継続するための冗長通信方式が考えられた。
【０００３】
従来の冗長通信方式は、２つの通信ノード間の経路について、重ならない複数の中継経路を予め用意し、送信側の通信ノードは１つのパケットを複数にコピーしてそれぞれ別の中継経路に送信し、それぞれの中継経路に沿って受信側の通信ノードに到着する複数のパケットのうち、最初に到着したパケットのみ受信処理を行い、他のパケットは廃棄するようにしているので、通信ネットワークで障害が発生しても予め設定した複数の中継経路のうち１つでも中継可能であれば、障害発生中も通信を継続できるようになっていた（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−６９１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の冗長通信方式は、パケットは予め決められた複数の中継経路で中継されるため、それら全て中継経路上でそれぞれ障害が発生したとき、予め決められた経路以外の他の中継経路がある場合も、通信が断絶してしまうという問題点があった。
【０００６】
この発明は上記のような問題点を解決するためになされたもので、２つの通信ノード間に予め中継経路を決めるのではなく、パケットを中継するその時々に中継可能な経路で中継することで、複数の障害発生時もパケットの中継を継続できる冗長通信方式を実現する通信ノード、通信システム並びにパケット通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る通信ノードにおいては、送信するパケットに、宛先ノードＩＤと送信元ノードＩＤとパケットＩＤとしてとり得る値をサイクリックに順番に該パケットＩＤとして付与して、相互に接続された１乃至複数の通信ノードに送信する送信手段と、送信元ノードから受信したパケットのパケットＩＤを記録する記録手段と、受信したパケットのパケットＩＤと、前記記録手段によって記録されたパケットＩＤとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードＩＤを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードＩＤを確認し、自分宛ではない若しくは制御パケットである場合は相互に接続された１乃至複数の通信ノードに中継する中継手段とを備えるものである。
【発明の効果】
【０００８】
この発明によれば、通信ネットワークを構成する任意の経路で１乃至複数の障害が発生したとしても、任意の２つの通信ノード間に通信可能な通信経路が１つでも存在すれば通信継続可能となり、重複する内容のパケットの伝送を抑制し、通信ネットワークの負荷を低減した冗長通信方式を実現できる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１を示す通信ノードの構成図である。
【図２】この発明の実施の形態１を示す通信パケットのフォーマット図である。
【図３】この発明の実施の形態１を示す制御パケットのフォーマット図である。
【図４】この発明の実施の形態１を示す中継テーブルの構成図である。
【図５】この発明の実施の形態１を示す冗長通信部の送信処理のフローチャートである。
【図６】この発明の実施の形態１を示す冗長通信部の受信処理のフローチャートである。
【図７】この発明の実施の形態１における図６に示すフローチャートの内、パケット判定ステップ（ステップ６５）の詳細を示すフローチャートである。
【図８】この発明の実施の形態１を示すパケットの遅延発生時に宛先ノードで受信したパケットのパケットＩＤが重複する場合の模式図である。
【図９】パケット判定ステップ（ステップ６５）の条件式を満たすパケットＩＤの領域を示す模式図である。
【図１０】この発明の実施の形態１を示す中継管理周期タイマがタイムアウトした時の処理のフローチャートである。
【図１１】この発明の実施の形態１を示す通信ネットワーク障害発生時のパケットの中継を示す模式図である。
【図１２】この発明の実施の形態１を示す通信ネットワーク例の構成図である。
【図１３】この発明の実施の形態１を示す図１２の通信ネットワーク例におけるパケットの中継を示すフロー図である。
【図１４】この発明の実施の形態１を示す図１２の通信ネットワーク例において障害発生時のパケットの中継を示すフロー図である。
【図１５】この発明の実施の形態１を示す図１２の通信ネットワーク例において障害回復時のパケットの中継を示すフロー図である。
【図１６】この発明の実施の形態１を示す図１２の通信ネットワーク例において障害が複数発生した時のパケットの中継を示すフロー図である。
【図１７】この発明の実施の形態２を示す中継テーブルの構成図である。
【図１８】この発明の実施の形態２における図６に示すフローチャートの内、パケット判定ステップ（ステップ６５）の詳細を示すフローチャートである。
【図１９】この発明の実施の形態２を示す中継管理周期タイマがタイムアウトした時の処理のフローチャートである。
【図２０】この発明の実施の形態２を示す図１２の通信ネットワーク例におけるパケットの中継を示すフロー図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
【００１１】
以下、図面を参照することにより、本発明の実施の形態について説明する。なお、本発明は、以下の実施の形態に限定されるものではない。
【００１２】
図１はこの発明の通信ノードを示すノード構成図である。図１は他の通信ノードと通信ネットワークを介してパケットの送受信を行うアプリケーション１、アプリケーション１に対して通信ネットワークを介したパケットの送受信機能を提供する冗長通信部２、パケットの同一性を判断する識別子となるパケットＩＤを生成するため、パケットＩＤとしてとり得る値をサイクリックにカウントする送信カウンタ２１、受信したパケットについて送信元ノード毎にパケットＩＤを記録し、パケットの受信と中継を管理するための中継テーブル２２、中継テーブル２２の記録内容を定期的に更新するための中継管理周期タイマ２３、通信ノードが通信ネットワークとパケットを送受信するための通信ポート３１〜３ｎによって構成される。
【００１３】
また、図２はこの発明の通信ネットワークにおいて送受信される通信パケットのフォーマット図である。図２において、通信パケット２００はアプリケーション１が通信するデータを通信ネットワーク上で運ぶための通信パケットである。宛先ノードＩＤ２０１はアプリケーション１がパケット送信要求時に指定するパケットを受信する通信ノードの識別子、送信元ノードＩＤ２０２はパケットを送信した通信ノードの識別子、パケットＩＤ２０３は送信側の通信ノードの冗長通信部２が送信カウンタ２１の値を用いて生成したパケットの識別子、アプリケーション通信データ２０４はアプリケーション１が冗長通信部２に送信要求した通信データである。
【００１４】
また、図３はこの発明の通信ネットワークにおいて送受信される制御パケットのフォーマット図である。図３において、制御パケット３００は冗長通信部２が通信ネットワーク上の他の通信ノードの中継テーブル２２の記録内容を同期するためのパケットである。このパケットを受信した通信ノードでは、中継テーブル２２の送信元ノードＩＤに対応する受信済みパケットＩＤ４２と前回受信済みパケットＩＤ４３が０に設定される。宛先ノードＩＤ３０１は図２の宛先ノードＩＤ２０１と同じくパケットを受信するノードの識別子であるが、制御パケット３００ではＩＤ値は同報を示す値、例えば０に固定されている。送信元ノードＩＤ３０２は図２の送信元ノードＩＤ２０２と同じく、パケットを送信した通信ノードの識別子である。パケットＩＤ３０３は図２のパケットＩＤ２０３と同じくパケットの識別子であるが、ＩＤ値は制御パケットを示す値、例えば０に固定されている。
【００１５】
また、図４はこの発明の中継テーブル２２の構成図である。図４において、送信元ノードＩＤ４１は受信したパケットの送信元ノードＩＤ２０２が格納される。受信済パケットＩＤ４２は通信ポート３１〜３ｎから受信したパケットのうち、送信元ノードＩＤ４１毎に最新に送信元ノードが送信したパケットのパケットＩＤ２０３が逐次更新されて格納される。前回受信済パケットＩＤ４３は、中継管理周期タイマ２３が前回タイムアウトしたときの受信済パケットＩＤ４２の値が格納される。尚、受信済パケットＩＤに格納されるパケットＩＤは最新のものだけでなく、複数のパケットＩＤを記録することも可能である。これによって、例えば、パケットの追い越しが発生した場合にも対応することが可能となる。また、図４のように送信元ノード毎に記録する構成は必須ではなく、送信元ノード毎に情報を取り出すことができればよい。
【００１６】
また、図５はこの発明の冗長通信部２の送信処理のフローチャートである。図５において、ステップ５１は制御パケット３００によって自分の送信カウンタ２１と通信ネットワーク上の他の通信ノードの中継テーブル２２を同期させる初期化ステップ、ステップ５２はアプリケーション１からの通信要求を待つ要求待ちステップ、ステップ５３は通信パケット２００を生成し通信ネットワークに送信する送信ステップ、ステップ５４は送信カウンタ２１の更新を行うカウンタ更新ステップである。
【００１７】
また、図６はこの発明の冗長通信部２の受信処理のフローチャートである。図６において、ステップ６１は中継テーブル２２を初期化し、中継管理周期タイマ２３を起動する初期化ステップ、ステップ６２は通信ポート３１〜３ｎでパケットが通信ネットワークから受信されるのを待つ受信待ちステップ、ステップ６３は受信した通信パケット２００の送信元ノードＩＤ２０２と一致するエントリを中継テーブル２２で検索する検索ステップ、ステップ６４は中継テーブル２２に新しいエントリを作成するエントリ作成ステップ、ステップ６５は受信したパケットのパケットＩＤと中継テーブル２２に記録されているパケットＩＤとを比較し、送信元の通信ノードでの送信順序を判定し、受信したパケットが送信元の通信ノードにおいて後から送信された新しいパケットであるかを判定するパケット判定ステップ、ステップ６６はパケットの宛先ＩＤ２０１からアプリケーション１に渡すパケットかどうかを判定する宛先判定ステップ、ステップ６７はパケットのアプリケーション通信データ２０４のコピーをアプリケーション１に渡すアプリケーション受信ステップ、ステップ６８はパケットを通信ネットワークに送信する中継ステップである。
【００１８】
また、図７はこの発明の図６のパケット判定ステップ（ステップ６５）の詳細を示すフローチャートである。図７において、ステップ７１はパケットが通信パケット２００か制御パケット３００かを判定する制御パケット判定ステップ、ステップ７２は受信パケットがその送信元の通信ノードから受信した最初のパケットかを判定する先頭パケット判定ステップ、ステップ７３は通信パケット２００のパケットＩＤ２０３と中継テーブル２２のエントリの受信済パケットＩＤ４２の値を比較することで前回受信したパケットと今回受信したパケットが送信元の通信ノードにおいてどちらが先に送信されたのかを判断する送信順序判定ステップ、ステップ７４は中継テーブル２２の記録内容を受信パケットのパケットＩＤ２０３で更新する記録ステップである。ステップ７５はステップ７１で制御パケットと判定されたパケットについて、その送信元ＩＤに対応する受信済パケットＩＤが０であるかを判断する制御パケット受信可否判定ステップである。
【００１９】
また、図８はパケットの遅延発生時における宛先ノードで受信したパケットのパケットＩＤが重複した場合の模式図である。横軸は時間を表し、Ｔ１〜Ｔ４は中継テーブル２２の更新周期時間である（更新周期時間Ｔ１からＴ４は一定である。）。送信元ノードと宛先ノード間をパケットＩＤ(Ｘ)を付与されたパケットと送信カウンタ２１の値で１サイクル前の同一のパケットＩＤ（Ｘ）が付与されたパケットが伝送している状態を示す。
【００２０】
また、図９は前述のパケット判定ステップ（ステップ６５）において新しいパケットと判定されるパケットＩＤの領域を表したものである。図において斜線で示された部分が新しいパケットと判定される領域である。
【００２１】
また、図１０はこの発明の中継管理周期タイマ２３がタイムアウトしたときの処理を示すフローチャートである。図９において、ステップ８１はその通信ノードからのパケットが一定期間受信されていないエントリを削除するエージングステップ、ステップ８２は中継テーブル２２の前回受信済パケットＩＤ４３を更新する定期更新ステップである。
【００２２】
また、図１１はこの発明の通信ネットワーク障害発生時のパケットの中継を示す模式図である。横軸は時間を表し、Ｔ１〜Ｔ４は中継テーブルの更新周期時間である。送信元ノードと宛先ノード間をパケットが伝送している状態を示す。ネットワーク障害が発生している間にパケットＩＤが最大値Ｍに達し、１に戻っている状態を示す。
【００２３】
また、図１２はこの発明における通信ノードが複数相互に接続された通信ネットワークの例を示すネットワーク構成図である。図１２において、Ｎｓ、Ｎｒ、Ｎ１〜Ｎ４は通信ノードであり、各通信ノード間をパケットが中継するために要する時間を時間の単位をｔとして、１ｔ、３ｔというように示している。
【００２４】
また、図１３はこの発明の図１２の通信ネットワークにおけるパケットの中継を示すフロー図である。図１３において、Ｎｓ、Ｎｒ、Ｎ１〜Ｎ４は図１２の対応する通信ノードであり、Ｎｓはパケットの送信元の通信ノード、Ｎｒは宛先の通信ノードである。また、Ｓｎｄは送信カウンタ２１の値、Ｒｃｙは中継テーブル２２に記録された送信元の通信ノードＮｓのエントリの受信済パケットＩＤ４２の値である。０ｔ〜１７ｔは時間経過を示す。
【００２５】
また、図１４はこの発明の通信ネットワークで障害が発生したときのパケットの中継を示すフロー図である。図中の各記号は図１２と同等である。
【００２６】
また、図１５はこの発明の通信ネットワークの障害が回復したときのパケットの中継を示すフロー図である。図中の各記号は図１２と同等である。
【００２７】
また、図１６はこの発明の通信ネットワークで複数の障害が発生したときのパケットの中継を示すフロー図である。図中の各記号は図１２と同等である。
【００２８】
次に通信ノードの起動時の動作について説明する。
通信ノードが起動すると、冗長通信部２は図５のステップ５１において送信カウンタ２１を１に初期化し、制御パケット３００を生成して通信ポート３１〜３ｎの全てから送信し、他の通信ノードの中継テーブル２２における制御パケットの送信元ノードに対応するエントリに格納された受信済パケットＩＤ値を０にする同期が実行される。その後、ステップ５２でアプリケーション１からの送信要求を待つ。また、図６のステップ６１において中継テーブル２２を初期化し、すなわち、中継テーブル２２の記録内容がすべて削除された状態となり、中継管理周期タイマ２３を起動する。
【００２９】
次にパケットの送信動作について説明する。
図５において送信側の通信ノードで、アプリケーション１が冗長通信部２にパケットの送信を要求すると、冗長通信部２は、ステップ５３において通信パケット２００を作成する。ここで、宛先ノードＩＤ２０１とアプリケーション通信データ２０４はアプリケーション１が指定する。送信元ノードＩＤ２０２は、冗長通信部２が自分のノードＩＤを設定する。パケットＩＤ２０３に送信カウンタ２１の値が設定される。宛先ノードＩＤ２０１と送信元ノードＩＤ２０２とパケットＩＤ２０３が送信パケットのヘッダ部分に付与されて生成された通信パケット２００は、全ての通信ポート３１〜３ｎから通信ネットワークに送信される。尚、ここでは全ての通信ポートから送信されるとしているが、全ての通信ポートから送信することは必須ではない。例えば、パケットの中継のために使用しない通信ポートがある場合や、宛先ノードへの中継が不可能な経路にパケットを送信する通信ポートがある場合等にはそれらの通信ポートを除いて、送信元ノードに相互に接続された１乃至複数の通信ノードに対して送信を行う。
【００３０】
次に、ステップ５４にて送信カウンタ２１の更新を行う。更新は送信カウンタ２１の値を１つ進めることによりなされるが、カウンタ値は１から最大値の範囲でサイクリックに、すなわち、カウンタ値を循環させて用いるため、更新前のカウンタ値が最大値であった場合は１に戻す。
【００３１】
次に、パケットの受信動作について説明する。
図６においてステップ６２で通信ポート３１〜３ｎのいずれか１つからパケットを受信すると、ステップ６３において、受信パケットの送信元ノードＩＤ２０２に該当する中継テーブル２２のエントリを検索する。該当するエントリが見つからなかった場合は、ステップ６４で新たにエントリを作成する。ここで、エントリの送信元ノードＩＤ４１には、受信パケットの送信元ノードＩＤ２０２を設定する。受信済パケットＩＤ４２と前回受信済パケットＩＤ４３には受信したパケットのパケットＩＤ２０３を設定する。そして、受信パケットは新しいパケットとして、ステップ６６に移行する。
【００３２】
また、ステップ６３にて該当するエントリが見つかった場合は、ステップ６５に移行する。ステップ６５で、受信パケットが、中継テーブル２２に記録されている受信済パケットＩＤ４２を付与されたパケットより送信側の通信ノードで後から送信された新しいパケットかどうかを判定する。
【００３３】
この詳細を図７で説明する。まず、ステップ７１で受信パケットが制御パケット３００かどうかを確認する。受信パケットのパケットＩＤ２０３が０の場合、パケットは制御パケット３００であるので、ステップ７５に進む。ここで、制御パケット３００の送信元ＩＤ３０２に対応する受信済パケットＩＤが０の場合は、旧パケットと判定し、無視する。一方受信済パケットＩＤが０でない場合には送信側の通信ノードの送信カウンタ２１と中継テーブル２２を同期するため、エントリの受信済パケットＩＤ４２にパケットＩＤ２０３、すなわち０を設定し（ステップ７４）、新しいパケットと判定する。
【００３４】
受信パケットが通信パケット２００であった場合、ステップ７２においてエントリの受信済パケットＩＤ４２が０かどうかを確認する。受信済パケットＩＤ４２が０であった場合、受信パケットより以前に、該当通信ノードからのパケットは受信していないと考えられるので、この場合も新しいパケットと判定し、ステップ７４で受信パケットのパケットＩＤ２０３を受信済パケットＩＤ４２に設定する。
【００３５】
パケットＩＤ２０３と受信済パケットＩＤ４２のどちらも０でない場合は、ステップ７３において、受信パケットがエントリに記録されている受信済パケットより後から送信側の通信ノードで送信されたかを判断する。
【００３６】
ステップ７３では、受信パケットのパケットＩＤ２０３と受信済パケットＩＤ４２を比較することで新しいパケットか否かを判定する。ここで、パケットＩＤ同士の比較によって送信元ノードでの送信順序の判定を可能とするために、中継管理周期タイマ２３の１更新周期時間を、通信ネットワーク内の任意の２つの通信ノード間でパケットが中継されるために要する時間より長く、各通信ノードでの１更新周期時間内に送信可能な最大パケット数（以下、送信可能パケット数）が送信カウンタ２１の最大値の１／２を超える時間より短く設定する。この設定の下では、パケットがどのような遅い通信経路を中継したとしても、あるパケットＩＤをもつパケットと、そのパケットＩＤ値と１サイクル以上ずれたパケットＩＤを付与されたパケットとが、宛先ノードに同一時刻に、または、１サイクル以上ずれたパケットＩＤを付与されたパケットが先行して到着しないことが保障される。
【００３７】
図８によってこれを説明する。簡単の為、以下の説明では送信元ノードと宛先ノードとの更新周期時間は同一であるとする。仮に送信元ノードが１更新周期時間内に送信するパケット数が送信カウンタ２１の最大値の１／２を超え、ある周期Ｔ１と次の周期Ｔ２でそれぞれ送信可能な最大パケット数を送る場合、その超えた部分について周期Ｔ１で送信されるパケットのパケットＩＤと次の周期Ｔ２で送信されるパケットのパケットＩＤに１サイクルずれた重複するパケットＩＤが生じる。このときの任意の重複するパケットＩＤをＸとしたとき、周期Ｔ１でパケット送信時に遅延が発生し、最大で１更新周期時間程度の時間をかけて宛先ノードに到達し、一方、次の周期Ｔ２のパケット送信時は遅延なく宛先ノードに到達した場合には、周期Ｔ２で送信されたパケットＩＤ（Ｘ）を持ったパケットと、周期Ｔ１で送信された１サイクル前の同一のパケットＩＤ（Ｘ）を持ったパケットが宛先ノードで同一時刻に、または、周期Ｔ２で送信されたパケットが周期Ｔ１で送信されたパケットを追い越してしまう可能性がある。従って、このような場合はパケットＩＤ値の比較のみでは送信元ノードでの送信順序が判定できなくなる。本発明においては、更新周期時間を上記の設定としているため、送信元ノードで隣接する更新周期において重複するパケットＩＤは生じない。すなわち、周期Ｔ１でパケットＩＤ（Ｘ）が付与されるパケットが生成されて、次に１サイクル後の同一のパケットＩＤ（Ｘ）を付与されたパケットが生成されるのは周期Ｔ３以降となる。周期Ｔ１でパケットＩＤ（Ｘ）を付与されて送信されたパケットはどんなに遅い通信経路を伝送したとしてもＴ２周期内には宛先ノードに到達するため、上記の問題は生じ得ない。
【００３８】
この場合、パケットＩＤ同士の比較で送信元ノードでの送信順序を判定できるため、以下の条件を満たす場合にパケット判定ステップ６５にて送信元ノードから後に送信された新しいパケットと判定することができる。図９は以下の条件を満たすパケットＩＤの領域を示す模式図である。
受信済パケットＩＤ４２＜受信パケットＩＤ２０３の場合、
受信パケットＩＤ２０３−受信済パケットＩＤ４２≦送信可能パケット数
受信済パケットＩＤ４２＞受信パケットＩＤ２０３の場合、
受信パケットＩＤ２０３≦送信可能パケット数−（送信カウンタ最大値−受信済パケットＩＤ４２）
上式、および、図９において受信済パケットＩＤ４２＞受信パケットＩＤ２０３の場合となるのは送信元ノードの１更新周期時間中に送信カウンタが最大値に達してカウンタ値が１に戻った場合である。上式を満たさない場合、または、受信済パケットＩＤ４２と受信パケットＩＤ２０３とが等しい場合には旧パケットと判定される。尚、送信元ノードと宛先ノードで更新周期時間を同一とした場合には、送信元ノードが１更新周期時間内に送信可能な最大パケット数は、宛先ノードが１更新周期時間内に同一の送信元ノードから受信可能な最大パケット数（以下、受信可能パケット数）と等しくなるはずであるので、上記条件式における送信可能パケット数を受信可能パケット数と置き換えても良い。
【００３９】
受信パケットが新しいパケットと判断された場合、ステップ７４で、受信済パケットＩＤ４２をパケットＩＤ２０３の値に更新して記録する。
【００４０】
以上のように、ステップ６５の処理が行われ、受信パケットが新しいパケットと判断された場合、ステップ６６で、受信した通信ノードが宛先ノードＩＤ２０１を確認し、自分宛のＩＤ、もしくは同報を示すＩＤであれば受信処理をする。このとき、受信パケットが通信パケット２００であれば、ステップ６７にて受信パケットのアプリケーション通信データ２０４のコピーをアプリケーション１に渡す。また受信パケットが制御パケット３００の場合は、宛先ノードＩＤ３０１は同報を示すＩＤとなっているが、アプリケーション通信データ２０４が存在しないので、アプリケーション１にコピーは渡されない。そして最後に、ステップ６８で、通信ポート３１〜３ｎのうちパケットを受信したポート以外の全通信ポートに、受信パケットを送信する中継処理をする。一方、フローチャートには記載していないがステップ６５で旧パケットと判断された場合は、そのパケットを無視して廃棄する。尚、通信ポート３１〜３ｎのうちパケットを受信したポート以外の全通信ポートにから送信されるとしているが、全ての通信ポートから送信することは必須ではない。例えば、パケットの中継のために使用しない通信ポートがある場合や、宛先ノードへの中継が不可能な経路にパケットを送信する通信ポートがある場合等にはそれらの通信ポートとパケットを受信した通信ポートを除いて、パケットを受信した通信ノードに相互に接続された１乃至複数の通信ノードに対して送信する中継処理を行う。尚、ここでの中継とは受信した通信ポートからパケットを送り返しても中継にはならないため、受信した通信ポート以外の通信ポートからパケットを送信することを示す。
【００４１】
次に、図１０において中継管理周期タイマ２３がタイムアウトしたときの処理について説明する。タイムアウトが発生すると、ステップ８１で中継テーブルのうち、受信済パケットＩＤ４２と前回受信済パケットＩＤ４３が等しいエントリを検索して全て削除する。次に、ステップ８２で、残ったエントリ全てについて、受信済パケットＩＤ４２を前回受信済パケットＩＤ４３にコピーする。
【００４２】
上記処理はパケットＩＤを順番にサイクリックに付与していることにより、前述のパケット判定ステップにおいて必要なパケットが誤判定によって廃棄されることを防止することができる。図１１は送信元ノードからパケットＩＤ（Ｘ）を付与されたパケットが宛先ノードに到達してから、送信元ノードから宛先ノード間にネットワーク障害が発生し、更新周期時間より長い期間、送信元ノードと宛先ノード間でパケットが送受信できない状態となった場合である。このとき、障害が復旧するまでの間に送信元ノードが宛先ノードに対してパケットを送信し、送信カウンタのロールアップ処理（送信カウンタの最大値Ｍに達し、再びカウンタ値が１に戻る処理）が行われたとする。障害復旧後に、送信元ノードからパケットＩＤとしてＸ−α（１≦α≦Ｘ−１）が付与されたパケットが宛先ノードに到達すると、パケット判定ステップでは障害発生前に最後に受信したパケットＩＤ（Ｘ）とパケットＩＤ（Ｘ−α）とを比較し、パケットＩＤ（Ｘ−α）からパケットＩＤ（Ｘ）までのパケットＩＤを付与されたパケットは新しいパケットであるにもかかわらず旧パケットであると誤判定される。これを防止するために、１更新周期期間内に送信元ノードからパケットの受信がない場合はエントリを削除して受信済パケットＩＤ４２を初期化することで、障害復旧後にパケット到達したパケットを新しいパケットと判定するようにし、必要なパケットが誤判定により廃棄されることを防止している。尚、このように通信ネットワークの全経路が遮断された場合には、送信元ノードからの制御パケットによる同期もできないため、各通信ノードに中継テーブルの記録内容を初期化する手段を与えたものである。
【００４３】
以上のように、この発明による通信ノードは動作する。
【００４４】
次に、この発明によるパケットの中継フローを図１２のネットワークを例に説明する。図１２において、ＮｓからＮｒにパケットを送信するときのパケットの中継動作を図１３に示している。図１３において、Ｎｓが起動すると、制御パケット３００をＮ１とＮ２に送信する。Ｎ１は、Ｎ２，Ｎ４，Ｎｒに中継し、Ｎ２はＮ１，Ｎ３に制御パケット３００を中継する。このとき、Ｎ１からＮ２に中継されたパケットは、Ｎ２において、中継テーブル２２の受信済パケットＩＤ４２が既に０なので、それ以上中継されずに無視される。同様にＮ２からＮ１に中継されたパケットも同様である。更に、Ｎ３はＮ４に、Ｎ４はＮｒとＮ３に、ＮｒはＮ１とＮ４にパケット中継するが、これらのパケットは全て中継先の通信ノードの受信済パケットＩＤ４２が既に０なので無視される。このようにして、Ｎｓが送信したパケットは、通信ネットワーク内の全ての通信ノードに到達し、受信済パケットＩＤ４２を０に同期する。
【００４５】
次に、Ｎｓがアプリケーション１の通信データをパケットＩＤ２０３＝１の通信パケット２００として送信すると、先の制御パケットと同様の中継と無視が各通信ノードで行われる。またＮｒは最初にパケットＩＤ２０３＝１の通信パケット２００を受信したとき、つまり、｛Ｎｓ→Ｎ１→Ｎｒ｝の経路で中継された通信パケット２００のアプリケーション通信データ２０４をアプリケーション１に渡す。
【００４６】
次に、図１４にてネットワークに障害が発生したときのパケットの中継動作を説明する。図１２のＮ１に障害が発生した場合、それまでの｛Ｎｓ→Ｎ１→Ｎｒ｝の経路ではパケットはＮｒに到達できなくなる。しかし、図１２に示すように、パケットは｛Ｎｓ→Ｎ２→Ｎ３→Ｎ４→Ｎｒ｝の経由でＮｒに到達し、アプリケーション１ではアプリケーション通信データ２０４が受信できる。
【００４７】
次に、図１５にて障害が回復したときのパケットの中継動作を説明する。Ｎ１の障害が回復後にＮｓが最初にパケットを送信したとき、Ｎ１の中継テーブル２２のエントリは、障害時間が中継管理周期タイマ２３の周期より長い場合もしくはＮ１が再起動した場合は削除されており、障害時間が中継管理周期タイマ２３の周期以下の場合はパケットＩＤ２０３より古い値が設定されている。そのため、障害回復後のＮ１はどちらの場合も、Ｎｓが送信したパケットを新しいパケットと判断して中継を再開する。従って、ＮｓからＮｒへの通信は、障害発生以前の｛Ｎｓ→Ｎ１→Ｎｒ｝の経路で再び行われるようになる。
【００４８】
次に、図１６で通信ネットワークに複数の障害が発生したときのパケットの中継動作を説明する。Ｎｓ−Ｎ１間で障害が発生した場合、パケットは｛Ｎｓ→Ｎ１→Ｎｒ｝の経路ではＮｒに到達できなくなり、｛Ｎｓ→Ｎ２→Ｎ１→Ｎｒ｝の経路で中継される。この状態で更にＮ１−Ｎｒで障害が発生すると、パケットは｛Ｎｓ→Ｎ２→Ｎ３→Ｎｒ｝の経路で中継される。
【００４９】
以上のように、パケットは送信側の通信ノードで１乃至複数の通信ポートから送信され、また、通信ネットワーク内の他の通信ノードは、パケットを受信した通信ポートを除く１乃至複数の通信ポートに中継するようにしているので、通信ノードが通信ネットワーク内の障害発生や構成変更を通信ノードが検出して中継経路を変更するなど、中継経路に複雑な設定をする必要がなく、常にその時点での中継可能な経路でパケットは送信側の通信ノードから受信側の通信ノードに中継される。これにより通信ネットワークを構成する任意の経路で１乃至複数の障害が発生したとしても、任意の２つの通信ノード間に通信可能な通信経路が１つでも存在すれば通信継続可能となる冗長通信方式を実現することができる。
【００５０】
また、アプリケーション１の通信データ２０４に送信側の通信ノードが１乃至複数の通信ポートから送信し、受信側の通信ノードは、複数回受信されるパケットのうち、最初に受信したときにのみ中継およびアプリケーション１への受信処理を行うようにしているので、既に中継済みの旧パケットを再度中継することや、重複したアプリケーション通信データ２０４をアプリケーション１に渡すことを確実に防止し、通信ネットワークの負荷を低減した運用を可能とする。
【００５１】
また、通信ノードの送信カウンタ２１が再起動等でリセットされた場合は制御パケット３００を送信して他の通信ノードの中継テーブル２２に格納された受信済パケットＩＤ４２を同期すること、および、通信ネットワーク上の障害等でパケットの中継を行うべき通信ノードが更新周期時間内にパケットを受信できなかった場合は中継管理周期タイマ２３で中継テーブル２２のエントリを削除していることによって、障害復旧後に必要なパケットが誤って旧パケットと判定されて廃棄されることを回避できる。
【００５２】
中継管理周期タイマの更新周期時間は通信ネットワーク内の任意の２つの通信ノード間でパケットが中継されるために要する時間より長く、通信ノードが更新周期時間内に送信可能なパケット数がパケットＩＤ値の最大値の１／２を超える時間より短く設定されている。そのため、受信したパケットのパケットＩＤの値と受信済パケットＩＤ４２の値は送信カウンタ２１の値で１サイクル以上のずれが生じることがない。前述の制御パケット３００による中継テーブル２２の同期手段と、更新周期経過後の中継テーブル２２の未更新のエントリの削除手段と、更新周期時間の設定とによって、パケットＩＤ値を順番にサイクリックに付与したとしても、受信済パケットＩＤ４２の値とパケットＩＤ２０３のパケットＩＤのみの比較から、送信側の通信ノードによる送信順序を確定することができる。これによって、パケットＩＤ以外の情報を含めて送信順序を判定している場合と比べて、例えば、パケットの受信時刻や受信間隔などを記録する手段が必要無くなり、送信順序の判別手段が簡易になる。また、例えば、パケットを中継する伝送速度が速い経路と遅い経路が通信経路上にある場合であっても、伝送速度および伝送経路に依存することなく各通信ノードで送信元ノードでのパケット送信順序を判定することができる。
【００５３】
実施の形態２．
以上の実施の形態１では、中継テーブル２２には受信したパケットのうち、最新のパケットＩＤを記録するようにしたものであるが、次に、通信ネットワーク内でパケットの追い越しが発生した場合に、追い越されたパケットも中継テーブル２２に記録して中継を行えるようにする実施形態を示す。
【００５４】
図１７はこのような場合の、中継テーブル２２の構成図である。図１７において、送信元ノードＩＤ４１は受信したパケットの送信元ノードＩＤ２０２が格納される。受信済パケットＩＤ４２は通信ポート３１〜３ｎから受信したパケットのうち、送信元ノードＩＤ４１毎に最も新しく送信元ノードが送信したパケットのパケットＩＤ２０３が格納される。前回受信済パケットＩＤ４３は、中継管理周期タイマ２３が前回タイムアウトしたときの受信済パケットＩＤ４２の値が格納される。追越フラグ４４は、受信したパケットが順序正しく受信されず、途中のパケットが抜けて新しいパケットが受信されたこと、すなわち追い越しが発生したことを検出して中継テーブル中に示すフラグである。追越先頭パケットＩＤ４５は、連続して受信が完了したパケットの最後のパケットＩＤで、受信されていないパケットのパケットＩＤの１つ前のパケットＩＤである。追越末尾パケットＩＤ４６は、追い越しにより受信されていない最後のパケットのパケットＩＤを記録する。前回追越パケットＩＤ４７は、中継管理周期タイマ２３が前回タイムアウトしたときの追越先頭パケットＩＤ４５の値が記録される。
【００５５】
図１８はこのような場合の、図６のパケット判定ステップ（ステップ６５）の詳細を示すフローチャートである。図１８において、ステップ１５１はパケットが通信パケット２００か制御パケット３００かを判定する制御パケット判定ステップ、ステップ１５２は受信パケットがその送信元の通信ノードから受信した最初のパケットかを判定する先頭パケット判定ステップ、ステップ１５３は通信パケット２００のパケットＩＤ２０３と中継テーブル２２のエントリの受信済パケットＩＤ４２の値を比較することで前回受信したパケットと今回受信したパケットが送信元の通信ノードにおいてどちらが先に送信されたのかを判断する送信順序判定ステップ、ステップ１５４は追越検出時に追越情報を中継テーブル２２に記録する、追越情報記録ステップ、ステップ１５５は中継テーブル２２のデータを受信パケットのパケットＩＤ２０３で更新する中継テーブル更新ステップ、ステップ１５６は旧パケットが受信された場合に追い越し後に初めて受信されたパケットであるかを判断する追越パケット判定ステップ、ステップ１５７はパケットが追越された最後のパケットであるかどうかを判定する追越末尾判定ステップ、ステップ１５８は追越解消時に追越情報をクリアする追越情報クリアステップ、ステップ１５９は追越パケット受信時に追越情報を更新する追越情報更新ステップである。ステップ１６０はステップ１５１で制御パケットと判定されたパケットについて、その送信元ＩＤに対応する受信済パケットＩＤが０であるかを判断する制御パケット受信可否判定ステップである。
【００５６】
図１９はこのような場合の、中継管理周期タイマ２３のタイムアウト時の処理を示すフローチャートである。図１９において、ステップ１６１はその通信ノードからのパケットが一定期間受信されていないエントリを削除するエージングステップ、ステップ１６２は中継テーブル２２の前回受信済パケットＩＤ４３を更新する定期更新ステップ、ステップ１６３はその通信ノードからの追越パケットが一定期間受信されていない追越情報をクリアする追越情報エージングステップ、ステップ１６４は前回追越パケットＩＤ４７を更新する前回追越情報更新ステップである。
【００５７】
図２０はこのような場合の、図１２の通信ネットワークにおける追越パケットの中継を示すパケットの中継を示すフロー図である。図中の各記号は図１２と同等である。
【００５８】
次に動作について説明する。
実施例２の通信ノードは、実施例1の通信ノードと同様に、図５のフローチャートに従い、図２および図３のフォーマットの通信パケット２００と制御パケット３００を送信する。また、実施例２の通信ノードは、実施例１の通信ノードと同様に、図６のフローチャートに従って受信したパケットの処理を行うが、ステップ６５により行われる、受信済パケットの新旧の判断とそれに伴う中継テーブル２２の処理が異なる。
ステップ６５で、受信パケットが、中継テーブル２２に記録されている既に受信済のパケットより送信側の通信ノードで後から送信されたかどうかを判定するとき、まず、ステップ１５１で受信パケットが制御パケット３００かどうかを確認する。受信パケットのパケットＩＤ２０３が０の場合、パケットは制御パケット３００であるので、ステップ１６０に進む。ここで、制御パケット３００の送信元ＩＤ３０２に対応する受信済パケットＩＤが０の場合は、旧パケットと判定し、無視する。一方受信済パケットＩＤが０でない場合には送信側の通信ノードの送信カウンタ２１と中継テーブル２２を同期するため、エントリの受信済パケットＩＤ４２にパケットＩＤ２０３、すなわち０を設定し（ステップ１５５）、新しいパケットと判定する。
【００５９】
受信パケットが通信パケット２００であった場合、ステップ１５２においてエントリの受信済パケットＩＤ４２が０かどうかを確認する。受信済パケットＩＤ４２が０であった場合、受信パケットより以前に、該当通信ノードからのパケットは受信していないので、この場合も新しいパケットと判定し、ステップ１５５で受信パケットのパケットＩＤ２０３を受信済パケットＩＤ４２に設定する。
【００６０】
パケットＩＤ２０３と受信済パケットＩＤ４２のどちらも０でない場合は、ステップ１５３において、パケットＩＤ２０３が受信済パケットＩＤ４２の次のパケットＩＤと等しい、つまり、順序正しく受信されたパケットか、または新しい、つまり、受信パケットは１乃至それ以上のパケットを追い越して受信されたパケットか、または旧パケットであるかを判定する。尚、パケットＩＤ２０３と受信済パケットＩＤ４２の値が異なる場合、そのパケットが新しいパケットは、実施例１と同様に、以下の条件式を満たす場合にパケット判定ステップ６５にて新しいパケットと判定される。
受信済パケットＩＤ４２＜受信パケットＩＤ２０３の場合、
受信パケットＩＤ２０３−受信済パケットＩＤ４２≦送信可能パケット数
受信済パケットＩＤ４２＞受信パケットＩＤ２０３の場合、
受信パケットＩＤ２０３≦送信可能パケット数−（送信カウンタ最大値−受信済パケットＩＤ４２）
【００６１】
等しいパケットの場合、追い越しにより受信が抜け落ちているパケットは存在しないので、実施例１と同様にステップ１５５で受信済パケットＩＤ４２にパケットＩＤ２０３を設定し、新しいパケットとする。
【００６２】
ステップ１５３にて新しいパケットと判定された場合、つまり、１乃至複数のパケットを追い越して受信されたパケットの場合、追越が発生したことを示す追越フラグに１が設定される。また、追越先頭パケットＩＤ４５に受信済パケットＩＤ４２の１つ次の値（受信済パケットＩＤ４２＜送信カウンタ２１の最大値のときは受信済パケットＩＤ４２＋１、受信済パケットＩＤ４２＝送信カウンタ２１の最大値のときは１）を設定し、追越末尾パケットＩＤ４６にパケットＩＤ２０３の１つ前の値（パケットＩＤ２０３＝１のときは送信カウンタ２１の最大値、それ以外のときはパケットＩＤ２０３−１）を設定し、前回追越パケットＩＤ４７には０を設定する。このように、パケットの追い越しによりまだ受信されていないパケットのパケットＩＤの情報を追越情報として中継テーブル２２に記録した後、実施例１と同様にステップ１５５で受信済パケットＩＤ４２にパケットＩＤ２０３を設定し、新しいパケットとする。
【００６３】
旧パケットの場合、ステップ１５６でパケットＩＤ２０３と追越先頭パケットＩＤ４５を比較し、既に受信済の旧パケットか、追い越しによりまだ受信されていないパケットかを判断する。パケットＩＤ２０３と追越先頭パケットＩＤ４５が一致しない場合、受信パケットは受信済の旧パケットと判断する。このとき、中継テーブル２２は実施例１と同様に更新されない。
【００６４】
一方、パケットＩＤ２０３と追越先頭パケットＩＤ４５が一致する場合、受信パケットはこれまでに受信されていない新しいパケットと判断する。このとき、ステップ１５７でパケットＩＤ２０３と追越末尾パケットＩＤ４６を比較し、追越により受信が漏れていた最後のパケットかどうかを判断する。パケットＩＤ２０３と追越末尾パケットＩＤ４６が一致する場合、追越によるパケットの受信漏れは解消されたため、ステップ１５８で追越フラグ４４と追越先頭パケットＩＤ４５に０を設定することで追越情報をクリアし、新しいパケットと判断する。パケットＩＤ２０３と追越末尾パケットＩＤ４６が一致しない場合、追い越しによりパケットの受信漏れは解消されていないため、ステップ１５９で追越先頭パケットＩＤ４５にパケットＩＤ２０３の次の値（パケットＩＤ２０３＝送信カウンタ２１の最大値のときは１、それ以外のときはパケットＩＤ２０３＋１）を設定し、新しいパケットと判断する。尚、本実施の形態では追い越しが発生したパケットＩＤの範囲の内、その範囲の先頭と末尾のパケットＩＤを記録しているが、追い越されたパケットＩＤの範囲の全パケットＩＤを個別にそれぞれ記録することも可能である。その場合は、旧パケットと判定されたパケットのパケットＩＤと追越情報に記録された全パケットＩＤとを逐次照合し、一致するパケットＩＤが記録されていた場合は追い越されたパケットであると判断する。そして、そのパケットＩＤを追越情報の記録から削除し、新パケットと判定する。追い越されたパケットＩＤの全範囲のパケットを受信した場合には追い越しが解消したものと判断する。例えば、追い越されたパケットの範囲の数を中継テーブル２２に記載し、追い越されたパケットの受信数に応じて、その数を減らして、それが０になれば追い越しが解消すると判断する。
【００６５】
以上のようにステップ１５１からステップ１６０でパケットの新旧の判定が完了後は、実施例１と同様にステップ６６からステップ６８でアプリケーション１への受信処理と通信ネットワークへの中継処理が行われる。
【００６６】
また、中継管理周期タイマ２３のタイムアウト時の処理を図１９で説明する。中継管理周期タイマ２３がタイムアウトすると、ステップ１６１で中継テーブルのうち、受信済パケットＩＤ４２と前回受信済パケットＩＤ４３が等しいエントリを検索して全て削除する。次に、ステップ１６２で、残ったエントリ全てについて、受信済パケットＩＤ４２を前回受信済パケットＩＤ４３にコピーする。更に、ステップ１６３で残りのエントリのうち、追越先頭パケットＩＤ４５と前回追越パケットＩＤ４７が等しいエントリは、中継管理周期タイマ２３の周期内に追い越されたパケットが受信されなかった、つまり、今後も追い越されたパケットが受信されないと判断できるので、追越フラグ４４、追越先頭パケットＩＤ４５に０を設定することで、追越情報をクリアする。最後に、ステップ１６４で追越先頭パケットＩＤ４５を前回追越パケットＩＤ４７にコピーして、次の中継管理周期タイマ２３のタイムアウトに備える。
【００６７】
次に、このような場合のパケットの中継動作を図２０で説明する。ＮｓがパケットＡ〜Ｃを送信するとき、Ｎ１の障害が回復すると、送信と障害回復のタイミングにより、障害により迂回経路で中継されているパケットＡより、障害回復により最短経路で中継されるパケットＢのほうが先に通信ノードに到着する、パケットの追い越しが発生する。この図２０の場合、Ｎ４においてパケットＡが受信されたとき、先にパケットＢが受信されているため、受信済パケットＩＤ４２はパケットＢを示す３となっているが、図１８のフローチャートに示す処理により、無視されずに中継され、また、Ｎｒでも同様に新しいパケットと判断されてアプリケーション１にアプリケーション通信データ２０４を送信する。
【００６８】
以上のように、通信ネットワークの状態により、中継されるパケットに追い越しが発生した場合、受信した通信ノードでパケットの追い越しを検出し、まだ受信されていないパケットのパケットＩＤ２０３の情報を中継テーブル２２に記録しておき、該当するパケットＩＤ２０３の通信パケット２００が受信された場合は、受信済パケットＩＤ４２より古い場合でも中継処理とアプリケーション１へのアプリケーション通信データ２０４の送信処理を行うので、障害発生時のパケット落ちを回避できる。
【００６９】
なお、本発明は光ファイバにて相互に接続された通信ノードからなる光通信ネットワークに限定されて適用されるものではなく、無線通信などの他の伝送技術による通信ネットワークにも適用可能である。
【符号の説明】
【００７０】
１          アプリケーション
２          冗長通信部
２１        送信カウンタ
２２        中継テーブル
２３        中継管理周期タイマ
３１〜３ｎ  通信ポート
４１        送信元ノードＩＤ
４２        受信済パケットＩＤ
４３        前回受信済パケットＩＤ
４４        追越フラグ
４５        追越先頭パケットＩＤ
４６        追越末尾パケットＩＤ
４７        前回追越パケットＩＤ
２００      通信パケット
２０１      宛先ノードＩＤ
２０２      送信元ノードＩＤ
２０３      パケットＩＤ
２０４      アプリケーション通信データ
３００      制御パケット
３０１      宛先ノードＩＤ
３０２      送信元ノードＩＤ
３０３      パケットＩＤ
【図１】
2011109232.tif 000003
【図２】
2011109232.tif 000004
【図３】
2011109232.tif 000005
【図４】
2011109232.tif 000006
【図５】
2011109232.tif 000007
【図６】
2011109232.tif 000008
【図７】
2011109232.tif 000009
【図８】
2011109232.tif 000010
【図９】
2011109232.tif 000011
【図１０】
2011109232.tif 000012
【図１１】
2011109232.tif 000013
【図１２】
2011109232.tif 000014
【図１３】
2011109232.tif 000015
【図１４】
2011109232.tif 000016
【図１５】
2011109232.tif 000017
【図１６】
2011109232.tif 000018
【図１７】
2011109232.tif 000019
【図１８】
2011109232.tif 000020
【図１９】
2011109232.tif 000021
【図２０】
2011109232.tif 000022