説明

通信ノード、通信システム並びにパケット通信方法

【課題】 障害発生時もパケットの中継を継続でき、通信ネットワークの負荷を低減した冗長通信方式を実現する。
【解決手段】 送信するパケットに、パケットIDとしてとり得る値をサイクリックに順番に該パケットIDとして付与して、相互に接続された1乃至複数の通信ノードに送信する送信手段と、送信元ノードから受信したパケットのパケットIDを記録する記録手段と、受信したパケットのパケットIDと、前記記録手段によって記録されたパケットIDとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードIDを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、自分宛でない若しくは制御パケットである場合は相互に接続された1乃至複数の通信ノードに中継する中継手段とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は通信ネットワークにおける通信ノード、通信システム並びにパケット通信方法に関するものである。
【背景技術】
【0002】
通信ネットワークに接続された2つの通信ノード間に複数の中継経路が存在する場合、通常は、複数の通信ポートを持つ通信ノードにOSPF(Open Shortest Path First)やSTP(Spanning Tree Protocol)といったルーティングプロトコルを実装し、それらの機能により中継経路の1つを選択することで、宛先ノードに同一パケットが複数到着したり、同一パケットが通信ネットワーク内を永久に中継され続けるブロードキャストストームと呼ばれる現象を回避している。このような通信ネットワークで限定された中継経路上で障害が発生した場合、OSPFやSTPが新たな中継経路を選択することで通信が再開されるが、そのためには少なくとも数十秒程度が必要であった。つまり、迂回経路があるにもかかわらす、数十秒もの間、通信が断絶してしまう。このようなことから、障害発生時も通信を継続するための冗長通信方式が考えられた。
【0003】
従来の冗長通信方式は、2つの通信ノード間の経路について、重ならない複数の中継経路を予め用意し、送信側の通信ノードは1つのパケットを複数にコピーしてそれぞれ別の中継経路に送信し、それぞれの中継経路に沿って受信側の通信ノードに到着する複数のパケットのうち、最初に到着したパケットのみ受信処理を行い、他のパケットは廃棄するようにしているので、通信ネットワークで障害が発生しても予め設定した複数の中継経路のうち1つでも中継可能であれば、障害発生中も通信を継続できるようになっていた(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2001−69171号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の冗長通信方式は、パケットは予め決められた複数の中継経路で中継されるため、それら全て中継経路上でそれぞれ障害が発生したとき、予め決められた経路以外の他の中継経路がある場合も、通信が断絶してしまうという問題点があった。
【0006】
この発明は上記のような問題点を解決するためになされたもので、2つの通信ノード間に予め中継経路を決めるのではなく、パケットを中継するその時々に中継可能な経路で中継することで、複数の障害発生時もパケットの中継を継続できる冗長通信方式を実現する通信ノード、通信システム並びにパケット通信方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る通信ノードにおいては、送信するパケットに、宛先ノードIDと送信元ノードIDとパケットIDとしてとり得る値をサイクリックに順番に該パケットIDとして付与して、相互に接続された1乃至複数の通信ノードに送信する送信手段と、送信元ノードから受信したパケットのパケットIDを記録する記録手段と、受信したパケットのパケットIDと、前記記録手段によって記録されたパケットIDとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードIDを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードIDを確認し、自分宛ではない若しくは制御パケットである場合は相互に接続された1乃至複数の通信ノードに中継する中継手段とを備えるものである。
【発明の効果】
【0008】
この発明によれば、通信ネットワークを構成する任意の経路で1乃至複数の障害が発生したとしても、任意の2つの通信ノード間に通信可能な通信経路が1つでも存在すれば通信継続可能となり、重複する内容のパケットの伝送を抑制し、通信ネットワークの負荷を低減した冗長通信方式を実現できる。
【図面の簡単な説明】
【0009】
【図1】この発明の実施の形態1を示す通信ノードの構成図である。
【図2】この発明の実施の形態1を示す通信パケットのフォーマット図である。
【図3】この発明の実施の形態1を示す制御パケットのフォーマット図である。
【図4】この発明の実施の形態1を示す中継テーブルの構成図である。
【図5】この発明の実施の形態1を示す冗長通信部の送信処理のフローチャートである。
【図6】この発明の実施の形態1を示す冗長通信部の受信処理のフローチャートである。
【図7】この発明の実施の形態1における図6に示すフローチャートの内、パケット判定ステップ(ステップ65)の詳細を示すフローチャートである。
【図8】この発明の実施の形態1を示すパケットの遅延発生時に宛先ノードで受信したパケットのパケットIDが重複する場合の模式図である。
【図9】パケット判定ステップ(ステップ65)の条件式を満たすパケットIDの領域を示す模式図である。
【図10】この発明の実施の形態1を示す中継管理周期タイマがタイムアウトした時の処理のフローチャートである。
【図11】この発明の実施の形態1を示す通信ネットワーク障害発生時のパケットの中継を示す模式図である。
【図12】この発明の実施の形態1を示す通信ネットワーク例の構成図である。
【図13】この発明の実施の形態1を示す図12の通信ネットワーク例におけるパケットの中継を示すフロー図である。
【図14】この発明の実施の形態1を示す図12の通信ネットワーク例において障害発生時のパケットの中継を示すフロー図である。
【図15】この発明の実施の形態1を示す図12の通信ネットワーク例において障害回復時のパケットの中継を示すフロー図である。
【図16】この発明の実施の形態1を示す図12の通信ネットワーク例において障害が複数発生した時のパケットの中継を示すフロー図である。
【図17】この発明の実施の形態2を示す中継テーブルの構成図である。
【図18】この発明の実施の形態2における図6に示すフローチャートの内、パケット判定ステップ(ステップ65)の詳細を示すフローチャートである。
【図19】この発明の実施の形態2を示す中継管理周期タイマがタイムアウトした時の処理のフローチャートである。
【図20】この発明の実施の形態2を示す図12の通信ネットワーク例におけるパケットの中継を示すフロー図である。
【発明を実施するための形態】
【0010】
実施の形態1.
【0011】
以下、図面を参照することにより、本発明の実施の形態について説明する。なお、本発明は、以下の実施の形態に限定されるものではない。
【0012】
図1はこの発明の通信ノードを示すノード構成図である。図1は他の通信ノードと通信ネットワークを介してパケットの送受信を行うアプリケーション1、アプリケーション1に対して通信ネットワークを介したパケットの送受信機能を提供する冗長通信部2、パケットの同一性を判断する識別子となるパケットIDを生成するため、パケットIDとしてとり得る値をサイクリックにカウントする送信カウンタ21、受信したパケットについて送信元ノード毎にパケットIDを記録し、パケットの受信と中継を管理するための中継テーブル22、中継テーブル22の記録内容を定期的に更新するための中継管理周期タイマ23、通信ノードが通信ネットワークとパケットを送受信するための通信ポート31〜3nによって構成される。
【0013】
また、図2はこの発明の通信ネットワークにおいて送受信される通信パケットのフォーマット図である。図2において、通信パケット200はアプリケーション1が通信するデータを通信ネットワーク上で運ぶための通信パケットである。宛先ノードID201はアプリケーション1がパケット送信要求時に指定するパケットを受信する通信ノードの識別子、送信元ノードID202はパケットを送信した通信ノードの識別子、パケットID203は送信側の通信ノードの冗長通信部2が送信カウンタ21の値を用いて生成したパケットの識別子、アプリケーション通信データ204はアプリケーション1が冗長通信部2に送信要求した通信データである。
【0014】
また、図3はこの発明の通信ネットワークにおいて送受信される制御パケットのフォーマット図である。図3において、制御パケット300は冗長通信部2が通信ネットワーク上の他の通信ノードの中継テーブル22の記録内容を同期するためのパケットである。このパケットを受信した通信ノードでは、中継テーブル22の送信元ノードIDに対応する受信済みパケットID42と前回受信済みパケットID43が0に設定される。宛先ノードID301は図2の宛先ノードID201と同じくパケットを受信するノードの識別子であるが、制御パケット300ではID値は同報を示す値、例えば0に固定されている。送信元ノードID302は図2の送信元ノードID202と同じく、パケットを送信した通信ノードの識別子である。パケットID303は図2のパケットID203と同じくパケットの識別子であるが、ID値は制御パケットを示す値、例えば0に固定されている。
【0015】
また、図4はこの発明の中継テーブル22の構成図である。図4において、送信元ノードID41は受信したパケットの送信元ノードID202が格納される。受信済パケットID42は通信ポート31〜3nから受信したパケットのうち、送信元ノードID41毎に最新に送信元ノードが送信したパケットのパケットID203が逐次更新されて格納される。前回受信済パケットID43は、中継管理周期タイマ23が前回タイムアウトしたときの受信済パケットID42の値が格納される。尚、受信済パケットIDに格納されるパケットIDは最新のものだけでなく、複数のパケットIDを記録することも可能である。これによって、例えば、パケットの追い越しが発生した場合にも対応することが可能となる。また、図4のように送信元ノード毎に記録する構成は必須ではなく、送信元ノード毎に情報を取り出すことができればよい。
【0016】
また、図5はこの発明の冗長通信部2の送信処理のフローチャートである。図5において、ステップ51は制御パケット300によって自分の送信カウンタ21と通信ネットワーク上の他の通信ノードの中継テーブル22を同期させる初期化ステップ、ステップ52はアプリケーション1からの通信要求を待つ要求待ちステップ、ステップ53は通信パケット200を生成し通信ネットワークに送信する送信ステップ、ステップ54は送信カウンタ21の更新を行うカウンタ更新ステップである。
【0017】
また、図6はこの発明の冗長通信部2の受信処理のフローチャートである。図6において、ステップ61は中継テーブル22を初期化し、中継管理周期タイマ23を起動する初期化ステップ、ステップ62は通信ポート31〜3nでパケットが通信ネットワークから受信されるのを待つ受信待ちステップ、ステップ63は受信した通信パケット200の送信元ノードID202と一致するエントリを中継テーブル22で検索する検索ステップ、ステップ64は中継テーブル22に新しいエントリを作成するエントリ作成ステップ、ステップ65は受信したパケットのパケットIDと中継テーブル22に記録されているパケットIDとを比較し、送信元の通信ノードでの送信順序を判定し、受信したパケットが送信元の通信ノードにおいて後から送信された新しいパケットであるかを判定するパケット判定ステップ、ステップ66はパケットの宛先ID201からアプリケーション1に渡すパケットかどうかを判定する宛先判定ステップ、ステップ67はパケットのアプリケーション通信データ204のコピーをアプリケーション1に渡すアプリケーション受信ステップ、ステップ68はパケットを通信ネットワークに送信する中継ステップである。
【0018】
また、図7はこの発明の図6のパケット判定ステップ(ステップ65)の詳細を示すフローチャートである。図7において、ステップ71はパケットが通信パケット200か制御パケット300かを判定する制御パケット判定ステップ、ステップ72は受信パケットがその送信元の通信ノードから受信した最初のパケットかを判定する先頭パケット判定ステップ、ステップ73は通信パケット200のパケットID203と中継テーブル22のエントリの受信済パケットID42の値を比較することで前回受信したパケットと今回受信したパケットが送信元の通信ノードにおいてどちらが先に送信されたのかを判断する送信順序判定ステップ、ステップ74は中継テーブル22の記録内容を受信パケットのパケットID203で更新する記録ステップである。ステップ75はステップ71で制御パケットと判定されたパケットについて、その送信元IDに対応する受信済パケットIDが0であるかを判断する制御パケット受信可否判定ステップである。
【0019】
また、図8はパケットの遅延発生時における宛先ノードで受信したパケットのパケットIDが重複した場合の模式図である。横軸は時間を表し、T1〜T4は中継テーブル22の更新周期時間である(更新周期時間T1からT4は一定である。)。送信元ノードと宛先ノード間をパケットID(X)を付与されたパケットと送信カウンタ21の値で1サイクル前の同一のパケットID(X)が付与されたパケットが伝送している状態を示す。
【0020】
また、図9は前述のパケット判定ステップ(ステップ65)において新しいパケットと判定されるパケットIDの領域を表したものである。図において斜線で示された部分が新しいパケットと判定される領域である。
【0021】
また、図10はこの発明の中継管理周期タイマ23がタイムアウトしたときの処理を示すフローチャートである。図9において、ステップ81はその通信ノードからのパケットが一定期間受信されていないエントリを削除するエージングステップ、ステップ82は中継テーブル22の前回受信済パケットID43を更新する定期更新ステップである。
【0022】
また、図11はこの発明の通信ネットワーク障害発生時のパケットの中継を示す模式図である。横軸は時間を表し、T1〜T4は中継テーブルの更新周期時間である。送信元ノードと宛先ノード間をパケットが伝送している状態を示す。ネットワーク障害が発生している間にパケットIDが最大値Mに達し、1に戻っている状態を示す。
【0023】
また、図12はこの発明における通信ノードが複数相互に接続された通信ネットワークの例を示すネットワーク構成図である。図12において、Ns、Nr、N1〜N4は通信ノードであり、各通信ノード間をパケットが中継するために要する時間を時間の単位をtとして、1t、3tというように示している。
【0024】
また、図13はこの発明の図12の通信ネットワークにおけるパケットの中継を示すフロー図である。図13において、Ns、Nr、N1〜N4は図12の対応する通信ノードであり、Nsはパケットの送信元の通信ノード、Nrは宛先の通信ノードである。また、Sndは送信カウンタ21の値、Rcyは中継テーブル22に記録された送信元の通信ノードNsのエントリの受信済パケットID42の値である。0t〜17tは時間経過を示す。
【0025】
また、図14はこの発明の通信ネットワークで障害が発生したときのパケットの中継を示すフロー図である。図中の各記号は図12と同等である。
【0026】
また、図15はこの発明の通信ネットワークの障害が回復したときのパケットの中継を示すフロー図である。図中の各記号は図12と同等である。
【0027】
また、図16はこの発明の通信ネットワークで複数の障害が発生したときのパケットの中継を示すフロー図である。図中の各記号は図12と同等である。
【0028】
次に通信ノードの起動時の動作について説明する。
通信ノードが起動すると、冗長通信部2は図5のステップ51において送信カウンタ21を1に初期化し、制御パケット300を生成して通信ポート31〜3nの全てから送信し、他の通信ノードの中継テーブル22における制御パケットの送信元ノードに対応するエントリに格納された受信済パケットID値を0にする同期が実行される。その後、ステップ52でアプリケーション1からの送信要求を待つ。また、図6のステップ61において中継テーブル22を初期化し、すなわち、中継テーブル22の記録内容がすべて削除された状態となり、中継管理周期タイマ23を起動する。
【0029】
次にパケットの送信動作について説明する。
図5において送信側の通信ノードで、アプリケーション1が冗長通信部2にパケットの送信を要求すると、冗長通信部2は、ステップ53において通信パケット200を作成する。ここで、宛先ノードID201とアプリケーション通信データ204はアプリケーション1が指定する。送信元ノードID202は、冗長通信部2が自分のノードIDを設定する。パケットID203に送信カウンタ21の値が設定される。宛先ノードID201と送信元ノードID202とパケットID203が送信パケットのヘッダ部分に付与されて生成された通信パケット200は、全ての通信ポート31〜3nから通信ネットワークに送信される。尚、ここでは全ての通信ポートから送信されるとしているが、全ての通信ポートから送信することは必須ではない。例えば、パケットの中継のために使用しない通信ポートがある場合や、宛先ノードへの中継が不可能な経路にパケットを送信する通信ポートがある場合等にはそれらの通信ポートを除いて、送信元ノードに相互に接続された1乃至複数の通信ノードに対して送信を行う。
【0030】
次に、ステップ54にて送信カウンタ21の更新を行う。更新は送信カウンタ21の値を1つ進めることによりなされるが、カウンタ値は1から最大値の範囲でサイクリックに、すなわち、カウンタ値を循環させて用いるため、更新前のカウンタ値が最大値であった場合は1に戻す。
【0031】
次に、パケットの受信動作について説明する。
図6においてステップ62で通信ポート31〜3nのいずれか1つからパケットを受信すると、ステップ63において、受信パケットの送信元ノードID202に該当する中継テーブル22のエントリを検索する。該当するエントリが見つからなかった場合は、ステップ64で新たにエントリを作成する。ここで、エントリの送信元ノードID41には、受信パケットの送信元ノードID202を設定する。受信済パケットID42と前回受信済パケットID43には受信したパケットのパケットID203を設定する。そして、受信パケットは新しいパケットとして、ステップ66に移行する。
【0032】
また、ステップ63にて該当するエントリが見つかった場合は、ステップ65に移行する。ステップ65で、受信パケットが、中継テーブル22に記録されている受信済パケットID42を付与されたパケットより送信側の通信ノードで後から送信された新しいパケットかどうかを判定する。
【0033】
この詳細を図7で説明する。まず、ステップ71で受信パケットが制御パケット300かどうかを確認する。受信パケットのパケットID203が0の場合、パケットは制御パケット300であるので、ステップ75に進む。ここで、制御パケット300の送信元ID302に対応する受信済パケットIDが0の場合は、旧パケットと判定し、無視する。一方受信済パケットIDが0でない場合には送信側の通信ノードの送信カウンタ21と中継テーブル22を同期するため、エントリの受信済パケットID42にパケットID203、すなわち0を設定し(ステップ74)、新しいパケットと判定する。
【0034】
受信パケットが通信パケット200であった場合、ステップ72においてエントリの受信済パケットID42が0かどうかを確認する。受信済パケットID42が0であった場合、受信パケットより以前に、該当通信ノードからのパケットは受信していないと考えられるので、この場合も新しいパケットと判定し、ステップ74で受信パケットのパケットID203を受信済パケットID42に設定する。
【0035】
パケットID203と受信済パケットID42のどちらも0でない場合は、ステップ73において、受信パケットがエントリに記録されている受信済パケットより後から送信側の通信ノードで送信されたかを判断する。
【0036】
ステップ73では、受信パケットのパケットID203と受信済パケットID42を比較することで新しいパケットか否かを判定する。ここで、パケットID同士の比較によって送信元ノードでの送信順序の判定を可能とするために、中継管理周期タイマ23の1更新周期時間を、通信ネットワーク内の任意の2つの通信ノード間でパケットが中継されるために要する時間より長く、各通信ノードでの1更新周期時間内に送信可能な最大パケット数(以下、送信可能パケット数)が送信カウンタ21の最大値の1/2を超える時間より短く設定する。この設定の下では、パケットがどのような遅い通信経路を中継したとしても、あるパケットIDをもつパケットと、そのパケットID値と1サイクル以上ずれたパケットIDを付与されたパケットとが、宛先ノードに同一時刻に、または、1サイクル以上ずれたパケットIDを付与されたパケットが先行して到着しないことが保障される。
【0037】
図8によってこれを説明する。簡単の為、以下の説明では送信元ノードと宛先ノードとの更新周期時間は同一であるとする。仮に送信元ノードが1更新周期時間内に送信するパケット数が送信カウンタ21の最大値の1/2を超え、ある周期T1と次の周期T2でそれぞれ送信可能な最大パケット数を送る場合、その超えた部分について周期T1で送信されるパケットのパケットIDと次の周期T2で送信されるパケットのパケットIDに1サイクルずれた重複するパケットIDが生じる。このときの任意の重複するパケットIDをXとしたとき、周期T1でパケット送信時に遅延が発生し、最大で1更新周期時間程度の時間をかけて宛先ノードに到達し、一方、次の周期T2のパケット送信時は遅延なく宛先ノードに到達した場合には、周期T2で送信されたパケットID(X)を持ったパケットと、周期T1で送信された1サイクル前の同一のパケットID(X)を持ったパケットが宛先ノードで同一時刻に、または、周期T2で送信されたパケットが周期T1で送信されたパケットを追い越してしまう可能性がある。従って、このような場合はパケットID値の比較のみでは送信元ノードでの送信順序が判定できなくなる。本発明においては、更新周期時間を上記の設定としているため、送信元ノードで隣接する更新周期において重複するパケットIDは生じない。すなわち、周期T1でパケットID(X)が付与されるパケットが生成されて、次に1サイクル後の同一のパケットID(X)を付与されたパケットが生成されるのは周期T3以降となる。周期T1でパケットID(X)を付与されて送信されたパケットはどんなに遅い通信経路を伝送したとしてもT2周期内には宛先ノードに到達するため、上記の問題は生じ得ない。
【0038】
この場合、パケットID同士の比較で送信元ノードでの送信順序を判定できるため、以下の条件を満たす場合にパケット判定ステップ65にて送信元ノードから後に送信された新しいパケットと判定することができる。図9は以下の条件を満たすパケットIDの領域を示す模式図である。
受信済パケットID42<受信パケットID203の場合、
受信パケットID203−受信済パケットID42≦送信可能パケット数
受信済パケットID42>受信パケットID203の場合、
受信パケットID203≦送信可能パケット数−(送信カウンタ最大値−受信済パケットID42)
上式、および、図9において受信済パケットID42>受信パケットID203の場合となるのは送信元ノードの1更新周期時間中に送信カウンタが最大値に達してカウンタ値が1に戻った場合である。上式を満たさない場合、または、受信済パケットID42と受信パケットID203とが等しい場合には旧パケットと判定される。尚、送信元ノードと宛先ノードで更新周期時間を同一とした場合には、送信元ノードが1更新周期時間内に送信可能な最大パケット数は、宛先ノードが1更新周期時間内に同一の送信元ノードから受信可能な最大パケット数(以下、受信可能パケット数)と等しくなるはずであるので、上記条件式における送信可能パケット数を受信可能パケット数と置き換えても良い。
【0039】
受信パケットが新しいパケットと判断された場合、ステップ74で、受信済パケットID42をパケットID203の値に更新して記録する。
【0040】
以上のように、ステップ65の処理が行われ、受信パケットが新しいパケットと判断された場合、ステップ66で、受信した通信ノードが宛先ノードID201を確認し、自分宛のID、もしくは同報を示すIDであれば受信処理をする。このとき、受信パケットが通信パケット200であれば、ステップ67にて受信パケットのアプリケーション通信データ204のコピーをアプリケーション1に渡す。また受信パケットが制御パケット300の場合は、宛先ノードID301は同報を示すIDとなっているが、アプリケーション通信データ204が存在しないので、アプリケーション1にコピーは渡されない。そして最後に、ステップ68で、通信ポート31〜3nのうちパケットを受信したポート以外の全通信ポートに、受信パケットを送信する中継処理をする。一方、フローチャートには記載していないがステップ65で旧パケットと判断された場合は、そのパケットを無視して廃棄する。尚、通信ポート31〜3nのうちパケットを受信したポート以外の全通信ポートにから送信されるとしているが、全ての通信ポートから送信することは必須ではない。例えば、パケットの中継のために使用しない通信ポートがある場合や、宛先ノードへの中継が不可能な経路にパケットを送信する通信ポートがある場合等にはそれらの通信ポートとパケットを受信した通信ポートを除いて、パケットを受信した通信ノードに相互に接続された1乃至複数の通信ノードに対して送信する中継処理を行う。尚、ここでの中継とは受信した通信ポートからパケットを送り返しても中継にはならないため、受信した通信ポート以外の通信ポートからパケットを送信することを示す。
【0041】
次に、図10において中継管理周期タイマ23がタイムアウトしたときの処理について説明する。タイムアウトが発生すると、ステップ81で中継テーブルのうち、受信済パケットID42と前回受信済パケットID43が等しいエントリを検索して全て削除する。次に、ステップ82で、残ったエントリ全てについて、受信済パケットID42を前回受信済パケットID43にコピーする。
【0042】
上記処理はパケットIDを順番にサイクリックに付与していることにより、前述のパケット判定ステップにおいて必要なパケットが誤判定によって廃棄されることを防止することができる。図11は送信元ノードからパケットID(X)を付与されたパケットが宛先ノードに到達してから、送信元ノードから宛先ノード間にネットワーク障害が発生し、更新周期時間より長い期間、送信元ノードと宛先ノード間でパケットが送受信できない状態となった場合である。このとき、障害が復旧するまでの間に送信元ノードが宛先ノードに対してパケットを送信し、送信カウンタのロールアップ処理(送信カウンタの最大値Mに達し、再びカウンタ値が1に戻る処理)が行われたとする。障害復旧後に、送信元ノードからパケットIDとしてX−α(1≦α≦X−1)が付与されたパケットが宛先ノードに到達すると、パケット判定ステップでは障害発生前に最後に受信したパケットID(X)とパケットID(X−α)とを比較し、パケットID(X−α)からパケットID(X)までのパケットIDを付与されたパケットは新しいパケットであるにもかかわらず旧パケットであると誤判定される。これを防止するために、1更新周期期間内に送信元ノードからパケットの受信がない場合はエントリを削除して受信済パケットID42を初期化することで、障害復旧後にパケット到達したパケットを新しいパケットと判定するようにし、必要なパケットが誤判定により廃棄されることを防止している。尚、このように通信ネットワークの全経路が遮断された場合には、送信元ノードからの制御パケットによる同期もできないため、各通信ノードに中継テーブルの記録内容を初期化する手段を与えたものである。
【0043】
以上のように、この発明による通信ノードは動作する。
【0044】
次に、この発明によるパケットの中継フローを図12のネットワークを例に説明する。図12において、NsからNrにパケットを送信するときのパケットの中継動作を図13に示している。図13において、Nsが起動すると、制御パケット300をN1とN2に送信する。N1は、N2,N4,Nrに中継し、N2はN1,N3に制御パケット300を中継する。このとき、N1からN2に中継されたパケットは、N2において、中継テーブル22の受信済パケットID42が既に0なので、それ以上中継されずに無視される。同様にN2からN1に中継されたパケットも同様である。更に、N3はN4に、N4はNrとN3に、NrはN1とN4にパケット中継するが、これらのパケットは全て中継先の通信ノードの受信済パケットID42が既に0なので無視される。このようにして、Nsが送信したパケットは、通信ネットワーク内の全ての通信ノードに到達し、受信済パケットID42を0に同期する。
【0045】
次に、Nsがアプリケーション1の通信データをパケットID203=1の通信パケット200として送信すると、先の制御パケットと同様の中継と無視が各通信ノードで行われる。またNrは最初にパケットID203=1の通信パケット200を受信したとき、つまり、{Ns→N1→Nr}の経路で中継された通信パケット200のアプリケーション通信データ204をアプリケーション1に渡す。
【0046】
次に、図14にてネットワークに障害が発生したときのパケットの中継動作を説明する。図12のN1に障害が発生した場合、それまでの{Ns→N1→Nr}の経路ではパケットはNrに到達できなくなる。しかし、図12に示すように、パケットは{Ns→N2→N3→N4→Nr}の経由でNrに到達し、アプリケーション1ではアプリケーション通信データ204が受信できる。
【0047】
次に、図15にて障害が回復したときのパケットの中継動作を説明する。N1の障害が回復後にNsが最初にパケットを送信したとき、N1の中継テーブル22のエントリは、障害時間が中継管理周期タイマ23の周期より長い場合もしくはN1が再起動した場合は削除されており、障害時間が中継管理周期タイマ23の周期以下の場合はパケットID203より古い値が設定されている。そのため、障害回復後のN1はどちらの場合も、Nsが送信したパケットを新しいパケットと判断して中継を再開する。従って、NsからNrへの通信は、障害発生以前の{Ns→N1→Nr}の経路で再び行われるようになる。
【0048】
次に、図16で通信ネットワークに複数の障害が発生したときのパケットの中継動作を説明する。Ns−N1間で障害が発生した場合、パケットは{Ns→N1→Nr}の経路ではNrに到達できなくなり、{Ns→N2→N1→Nr}の経路で中継される。この状態で更にN1−Nrで障害が発生すると、パケットは{Ns→N2→N3→Nr}の経路で中継される。
【0049】
以上のように、パケットは送信側の通信ノードで1乃至複数の通信ポートから送信され、また、通信ネットワーク内の他の通信ノードは、パケットを受信した通信ポートを除く1乃至複数の通信ポートに中継するようにしているので、通信ノードが通信ネットワーク内の障害発生や構成変更を通信ノードが検出して中継経路を変更するなど、中継経路に複雑な設定をする必要がなく、常にその時点での中継可能な経路でパケットは送信側の通信ノードから受信側の通信ノードに中継される。これにより通信ネットワークを構成する任意の経路で1乃至複数の障害が発生したとしても、任意の2つの通信ノード間に通信可能な通信経路が1つでも存在すれば通信継続可能となる冗長通信方式を実現することができる。
【0050】
また、アプリケーション1の通信データ204に送信側の通信ノードが1乃至複数の通信ポートから送信し、受信側の通信ノードは、複数回受信されるパケットのうち、最初に受信したときにのみ中継およびアプリケーション1への受信処理を行うようにしているので、既に中継済みの旧パケットを再度中継することや、重複したアプリケーション通信データ204をアプリケーション1に渡すことを確実に防止し、通信ネットワークの負荷を低減した運用を可能とする。
【0051】
また、通信ノードの送信カウンタ21が再起動等でリセットされた場合は制御パケット300を送信して他の通信ノードの中継テーブル22に格納された受信済パケットID42を同期すること、および、通信ネットワーク上の障害等でパケットの中継を行うべき通信ノードが更新周期時間内にパケットを受信できなかった場合は中継管理周期タイマ23で中継テーブル22のエントリを削除していることによって、障害復旧後に必要なパケットが誤って旧パケットと判定されて廃棄されることを回避できる。
【0052】
中継管理周期タイマの更新周期時間は通信ネットワーク内の任意の2つの通信ノード間でパケットが中継されるために要する時間より長く、通信ノードが更新周期時間内に送信可能なパケット数がパケットID値の最大値の1/2を超える時間より短く設定されている。そのため、受信したパケットのパケットIDの値と受信済パケットID42の値は送信カウンタ21の値で1サイクル以上のずれが生じることがない。前述の制御パケット300による中継テーブル22の同期手段と、更新周期経過後の中継テーブル22の未更新のエントリの削除手段と、更新周期時間の設定とによって、パケットID値を順番にサイクリックに付与したとしても、受信済パケットID42の値とパケットID203のパケットIDのみの比較から、送信側の通信ノードによる送信順序を確定することができる。これによって、パケットID以外の情報を含めて送信順序を判定している場合と比べて、例えば、パケットの受信時刻や受信間隔などを記録する手段が必要無くなり、送信順序の判別手段が簡易になる。また、例えば、パケットを中継する伝送速度が速い経路と遅い経路が通信経路上にある場合であっても、伝送速度および伝送経路に依存することなく各通信ノードで送信元ノードでのパケット送信順序を判定することができる。
【0053】
実施の形態2.
以上の実施の形態1では、中継テーブル22には受信したパケットのうち、最新のパケットIDを記録するようにしたものであるが、次に、通信ネットワーク内でパケットの追い越しが発生した場合に、追い越されたパケットも中継テーブル22に記録して中継を行えるようにする実施形態を示す。
【0054】
図17はこのような場合の、中継テーブル22の構成図である。図17において、送信元ノードID41は受信したパケットの送信元ノードID202が格納される。受信済パケットID42は通信ポート31〜3nから受信したパケットのうち、送信元ノードID41毎に最も新しく送信元ノードが送信したパケットのパケットID203が格納される。前回受信済パケットID43は、中継管理周期タイマ23が前回タイムアウトしたときの受信済パケットID42の値が格納される。追越フラグ44は、受信したパケットが順序正しく受信されず、途中のパケットが抜けて新しいパケットが受信されたこと、すなわち追い越しが発生したことを検出して中継テーブル中に示すフラグである。追越先頭パケットID45は、連続して受信が完了したパケットの最後のパケットIDで、受信されていないパケットのパケットIDの1つ前のパケットIDである。追越末尾パケットID46は、追い越しにより受信されていない最後のパケットのパケットIDを記録する。前回追越パケットID47は、中継管理周期タイマ23が前回タイムアウトしたときの追越先頭パケットID45の値が記録される。
【0055】
図18はこのような場合の、図6のパケット判定ステップ(ステップ65)の詳細を示すフローチャートである。図18において、ステップ151はパケットが通信パケット200か制御パケット300かを判定する制御パケット判定ステップ、ステップ152は受信パケットがその送信元の通信ノードから受信した最初のパケットかを判定する先頭パケット判定ステップ、ステップ153は通信パケット200のパケットID203と中継テーブル22のエントリの受信済パケットID42の値を比較することで前回受信したパケットと今回受信したパケットが送信元の通信ノードにおいてどちらが先に送信されたのかを判断する送信順序判定ステップ、ステップ154は追越検出時に追越情報を中継テーブル22に記録する、追越情報記録ステップ、ステップ155は中継テーブル22のデータを受信パケットのパケットID203で更新する中継テーブル更新ステップ、ステップ156は旧パケットが受信された場合に追い越し後に初めて受信されたパケットであるかを判断する追越パケット判定ステップ、ステップ157はパケットが追越された最後のパケットであるかどうかを判定する追越末尾判定ステップ、ステップ158は追越解消時に追越情報をクリアする追越情報クリアステップ、ステップ159は追越パケット受信時に追越情報を更新する追越情報更新ステップである。ステップ160はステップ151で制御パケットと判定されたパケットについて、その送信元IDに対応する受信済パケットIDが0であるかを判断する制御パケット受信可否判定ステップである。
【0056】
図19はこのような場合の、中継管理周期タイマ23のタイムアウト時の処理を示すフローチャートである。図19において、ステップ161はその通信ノードからのパケットが一定期間受信されていないエントリを削除するエージングステップ、ステップ162は中継テーブル22の前回受信済パケットID43を更新する定期更新ステップ、ステップ163はその通信ノードからの追越パケットが一定期間受信されていない追越情報をクリアする追越情報エージングステップ、ステップ164は前回追越パケットID47を更新する前回追越情報更新ステップである。
【0057】
図20はこのような場合の、図12の通信ネットワークにおける追越パケットの中継を示すパケットの中継を示すフロー図である。図中の各記号は図12と同等である。
【0058】
次に動作について説明する。
実施例2の通信ノードは、実施例1の通信ノードと同様に、図5のフローチャートに従い、図2および図3のフォーマットの通信パケット200と制御パケット300を送信する。また、実施例2の通信ノードは、実施例1の通信ノードと同様に、図6のフローチャートに従って受信したパケットの処理を行うが、ステップ65により行われる、受信済パケットの新旧の判断とそれに伴う中継テーブル22の処理が異なる。
ステップ65で、受信パケットが、中継テーブル22に記録されている既に受信済のパケットより送信側の通信ノードで後から送信されたかどうかを判定するとき、まず、ステップ151で受信パケットが制御パケット300かどうかを確認する。受信パケットのパケットID203が0の場合、パケットは制御パケット300であるので、ステップ160に進む。ここで、制御パケット300の送信元ID302に対応する受信済パケットIDが0の場合は、旧パケットと判定し、無視する。一方受信済パケットIDが0でない場合には送信側の通信ノードの送信カウンタ21と中継テーブル22を同期するため、エントリの受信済パケットID42にパケットID203、すなわち0を設定し(ステップ155)、新しいパケットと判定する。
【0059】
受信パケットが通信パケット200であった場合、ステップ152においてエントリの受信済パケットID42が0かどうかを確認する。受信済パケットID42が0であった場合、受信パケットより以前に、該当通信ノードからのパケットは受信していないので、この場合も新しいパケットと判定し、ステップ155で受信パケットのパケットID203を受信済パケットID42に設定する。
【0060】
パケットID203と受信済パケットID42のどちらも0でない場合は、ステップ153において、パケットID203が受信済パケットID42の次のパケットIDと等しい、つまり、順序正しく受信されたパケットか、または新しい、つまり、受信パケットは1乃至それ以上のパケットを追い越して受信されたパケットか、または旧パケットであるかを判定する。尚、パケットID203と受信済パケットID42の値が異なる場合、そのパケットが新しいパケットは、実施例1と同様に、以下の条件式を満たす場合にパケット判定ステップ65にて新しいパケットと判定される。
受信済パケットID42<受信パケットID203の場合、
受信パケットID203−受信済パケットID42≦送信可能パケット数
受信済パケットID42>受信パケットID203の場合、
受信パケットID203≦送信可能パケット数−(送信カウンタ最大値−受信済パケットID42)
【0061】
等しいパケットの場合、追い越しにより受信が抜け落ちているパケットは存在しないので、実施例1と同様にステップ155で受信済パケットID42にパケットID203を設定し、新しいパケットとする。
【0062】
ステップ153にて新しいパケットと判定された場合、つまり、1乃至複数のパケットを追い越して受信されたパケットの場合、追越が発生したことを示す追越フラグに1が設定される。また、追越先頭パケットID45に受信済パケットID42の1つ次の値(受信済パケットID42<送信カウンタ21の最大値のときは受信済パケットID42+1、受信済パケットID42=送信カウンタ21の最大値のときは1)を設定し、追越末尾パケットID46にパケットID203の1つ前の値(パケットID203=1のときは送信カウンタ21の最大値、それ以外のときはパケットID203−1)を設定し、前回追越パケットID47には0を設定する。このように、パケットの追い越しによりまだ受信されていないパケットのパケットIDの情報を追越情報として中継テーブル22に記録した後、実施例1と同様にステップ155で受信済パケットID42にパケットID203を設定し、新しいパケットとする。
【0063】
旧パケットの場合、ステップ156でパケットID203と追越先頭パケットID45を比較し、既に受信済の旧パケットか、追い越しによりまだ受信されていないパケットかを判断する。パケットID203と追越先頭パケットID45が一致しない場合、受信パケットは受信済の旧パケットと判断する。このとき、中継テーブル22は実施例1と同様に更新されない。
【0064】
一方、パケットID203と追越先頭パケットID45が一致する場合、受信パケットはこれまでに受信されていない新しいパケットと判断する。このとき、ステップ157でパケットID203と追越末尾パケットID46を比較し、追越により受信が漏れていた最後のパケットかどうかを判断する。パケットID203と追越末尾パケットID46が一致する場合、追越によるパケットの受信漏れは解消されたため、ステップ158で追越フラグ44と追越先頭パケットID45に0を設定することで追越情報をクリアし、新しいパケットと判断する。パケットID203と追越末尾パケットID46が一致しない場合、追い越しによりパケットの受信漏れは解消されていないため、ステップ159で追越先頭パケットID45にパケットID203の次の値(パケットID203=送信カウンタ21の最大値のときは1、それ以外のときはパケットID203+1)を設定し、新しいパケットと判断する。尚、本実施の形態では追い越しが発生したパケットIDの範囲の内、その範囲の先頭と末尾のパケットIDを記録しているが、追い越されたパケットIDの範囲の全パケットIDを個別にそれぞれ記録することも可能である。その場合は、旧パケットと判定されたパケットのパケットIDと追越情報に記録された全パケットIDとを逐次照合し、一致するパケットIDが記録されていた場合は追い越されたパケットであると判断する。そして、そのパケットIDを追越情報の記録から削除し、新パケットと判定する。追い越されたパケットIDの全範囲のパケットを受信した場合には追い越しが解消したものと判断する。例えば、追い越されたパケットの範囲の数を中継テーブル22に記載し、追い越されたパケットの受信数に応じて、その数を減らして、それが0になれば追い越しが解消すると判断する。
【0065】
以上のようにステップ151からステップ160でパケットの新旧の判定が完了後は、実施例1と同様にステップ66からステップ68でアプリケーション1への受信処理と通信ネットワークへの中継処理が行われる。
【0066】
また、中継管理周期タイマ23のタイムアウト時の処理を図19で説明する。中継管理周期タイマ23がタイムアウトすると、ステップ161で中継テーブルのうち、受信済パケットID42と前回受信済パケットID43が等しいエントリを検索して全て削除する。次に、ステップ162で、残ったエントリ全てについて、受信済パケットID42を前回受信済パケットID43にコピーする。更に、ステップ163で残りのエントリのうち、追越先頭パケットID45と前回追越パケットID47が等しいエントリは、中継管理周期タイマ23の周期内に追い越されたパケットが受信されなかった、つまり、今後も追い越されたパケットが受信されないと判断できるので、追越フラグ44、追越先頭パケットID45に0を設定することで、追越情報をクリアする。最後に、ステップ164で追越先頭パケットID45を前回追越パケットID47にコピーして、次の中継管理周期タイマ23のタイムアウトに備える。
【0067】
次に、このような場合のパケットの中継動作を図20で説明する。NsがパケットA〜Cを送信するとき、N1の障害が回復すると、送信と障害回復のタイミングにより、障害により迂回経路で中継されているパケットAより、障害回復により最短経路で中継されるパケットBのほうが先に通信ノードに到着する、パケットの追い越しが発生する。この図20の場合、N4においてパケットAが受信されたとき、先にパケットBが受信されているため、受信済パケットID42はパケットBを示す3となっているが、図18のフローチャートに示す処理により、無視されずに中継され、また、Nrでも同様に新しいパケットと判断されてアプリケーション1にアプリケーション通信データ204を送信する。
【0068】
以上のように、通信ネットワークの状態により、中継されるパケットに追い越しが発生した場合、受信した通信ノードでパケットの追い越しを検出し、まだ受信されていないパケットのパケットID203の情報を中継テーブル22に記録しておき、該当するパケットID203の通信パケット200が受信された場合は、受信済パケットID42より古い場合でも中継処理とアプリケーション1へのアプリケーション通信データ204の送信処理を行うので、障害発生時のパケット落ちを回避できる。
【0069】
なお、本発明は光ファイバにて相互に接続された通信ノードからなる光通信ネットワークに限定されて適用されるものではなく、無線通信などの他の伝送技術による通信ネットワークにも適用可能である。
【符号の説明】
【0070】
1 アプリケーション
2 冗長通信部
21 送信カウンタ
22 中継テーブル
23 中継管理周期タイマ
31〜3n 通信ポート
41 送信元ノードID
42 受信済パケットID
43 前回受信済パケットID
44 追越フラグ
45 追越先頭パケットID
46 追越末尾パケットID
47 前回追越パケットID
200 通信パケット
201 宛先ノードID
202 送信元ノードID
203 パケットID
204 アプリケーション通信データ
300 制御パケット
301 宛先ノードID
302 送信元ノードID
303 パケットID

【特許請求の範囲】
【請求項1】
通信ネットワーク上の他の通信ノードと相互に接続された通信ノードであって、
送信するパケットに、宛先ノードIDと送信元ノードIDとパケットIDとしてとり得る値をサイクリックに順番に該パケットIDとして付与して、相互に接続された1乃至複数の通信ノードに送信する送信手段と、
送信元ノードから受信したパケットのパケットIDを記録する記録手段と、
受信したパケットのパケットIDと、前記記録手段によって記録されたパケットIDとを比較し、前記送信元ノードでの送信順序を判定するパケット判別手段と、
前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードIDを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、
前記パケット判別手段で新しいパケットと判定されたパケットについて、前記宛先ノードIDを確認し、自分宛ではない若しくは制御パケットである場合は相互に接続された1乃至複数の通信ノードに中継する中継手段とを備える通信ノード。
【請求項2】
前記記録手段は、記録内容を更新する更新周期時間を有し、該更新周期時間内に、記録内容が更新されなかった送信元ノードの記録を削除する削除手段と、
受信したパケットに対応する送信元ノードの記録がない場合は、該送信元ノードの記録を新たに作成し、該受信したパケットのパケットIDを記録する作成手段と、
を備える請求項1に記載の通信ノード。
【請求項3】
前記記録手段において、前記更新周期時間は通信ネットワーク内の任意の2つの通信ノード間でパケットが中継されるために要する時間より長く、送信元ノードが該更新周期時間内に送信可能な最大パケット数がパケットID値の最大値の1/2を超える時間より短く設定されている請求項2に記載の通信ノード。
【請求項4】
前記パケット判別手段は、受信したパケットIDの値が前記記録手段によって記録されたパケットIDの値よりも大きい場合には、該受信したパケットIDの値と該記録手段に記録されたパケットIDの値との差が、更新周期時間内に同一の送信元ノードが送信可能な最大パケット数以下となる条件で、
受信したパケットIDの値が前記記録手段によって記録されたパケットIDの値よりも小さい場合には、該受信したパケットIDの値が、パケットIDとしてとり得る値の最大値と該記録手段に記録されたパケットIDとの値の差を、更新周期周期内に同一の送信元ノードが送信可能な最大パケット数から減算した値以下となる条件で比較し、前記送信元ノードでの送信順序を判定する請求項1に記載の通信ノード。
【請求項5】
前記送信手段は通信ノードが起動したとき、各通信ノードの前記記録手段における記録内容を同期する制御パケットを送信する送信手段を備える請求項1に記載の通信ノード。
【請求項6】
請求項1に記載の前記通信ノードであって、
前記記録手段に記録されたパケットIDと受信したパケットのパケットIDが連続していない場合にはパケットの追い越しが発生したと判断する追越検出手段と、
追い越しが発生したパケットIDの範囲のパケットIDを記録する追越記録手段と、
受信したパケットのパケットIDと前記追越記録手段によって記録されたパケットIDとを比較し、追い越されたパケットであるかを判定する追越パケット判別手段と、
前記追越パケット判別手段にて、追い越されたパケットと判定されたパケットについて、宛先パケットIDを確認し、自分宛若しくは制御パケットである場合は受信する受信手段と、
前記追越パケット判別手段にて、追い越されたパケットと判定されたパケットについて、宛先パケットIDを確認し、自分宛ではない若しくは制御パケットである場合は1乃至複数の相互に接続された通信ノードに中継する中継手段と、をさらに備える通信ノード。
【請求項7】
前記記録手段は追い越しが発生したパケットIDの範囲について、その範囲の先頭と末尾のパケットIDを記録し、
前記追越パケット判定手段は、受信したパケットのパケットIDと前記先頭と末尾のパケットIDとを比較して、該受信したパケットのパケットIDが該先頭のパケットIDと一致すれば追い越されたパケットであると判定する手段と、
該受信したパケットのパケットIDが該末尾のパケットIDと一致すればパケットの追い越しが解消されたことを判定する手段を備える請求項6に記載の通信ノード
【請求項8】
請求項1乃至7に記載の通信ノードが通信ネットワーク上で相互に複数接続された通信システム。
【請求項9】
通信ネットワーク上の相互に接続された通信ノード間のパケット通信方法であって、
送信するパケットに、パケットIDとしてとり得る値をサイクリックに順番に付与して送信する送信ステップと、
前記送信手段から受信したパケットのパケットIDを記録する記録ステップと、
受信したパケットのパケットIDと、前記記録手段によって記録されたパケットIDとを比較し、前記送信手段でのパケット送信順序を判定するパケット判別ステップとを含むパケット通信方法。
【請求項10】
前記パケット判別ステップは、受信したパケットIDの値が前記記録手段によって記録されたパケットIDの値よりも大きい場合には、該記録されたパケットIDの値と該パケットIDの値の差が、更新周期時間内に同一の前記送信手段が送信可能なパケット数以下となる条件で、
受信したパケットIDの値が前記記録手段によって記録されたパケットIDの値よりも小さい場合には、該受信したパケットIDの値が、パケットIDの最大値と該記録されたパケットIDとの値の差を、更新周期周期内に同一の前記送信手段が送信可能なパケット数から減算した値以下となる条件で判定を行う請求項9に記載のパケット通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2011−109232(P2011−109232A)
【公開日】平成23年6月2日(2011.6.2)
【国際特許分類】
【出願番号】特願2009−259853(P2009−259853)
【出願日】平成21年11月13日(2009.11.13)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】