(57)【要約】【課題】メッセージの転送効率を高め、リング内でのメッセージ共有に要する全体的な通信時間の短縮を図る。【解決手段】複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする。自己のノードを起点としてメッセージを送信する場合、メッセージを順方向および逆方向に送信する。一方、ある起点によって送信されたメッセージを順方向および逆方向のいずれかの転送方向で受信した場合、このメッセージが受信済みであるか否かを判定し、その判定結果に応じて、メッセージの転送を実行する。【選択図】図５
2008118272.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器において、
他のノードとの間でメッセージの送受信を行う通信部と、
リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノード管理部と、
自己のノードを起点として第１のメッセージを送信する場合、前記通信部を介して、前記第１のメッセージをリング内で順方向および逆方向に送信する起点制御部と、
ある起点によって送信された第２のメッセージが前記通信部によって順方向および逆方向のいずれかの転送方向で受信された場合、前記ノード管理部にアクセスして、前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する転送判定部と、
前記第２のメッセージが受信済みでないと判定された場合、前記通信部を介して、前記第２のメッセージをリング内で前記転送方向に送信し、前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる転送制御部と
を有することを特徴とするネットワーク通信機器。
【請求項２】
前記ノード管理部は、リング内で転送されるメッセージを識別するための識別情報を、メッセージの起点となったノード毎に管理することを特徴とする請求項１に記載されたネットワーク通信機器。
【請求項３】
前記起点制御部は、前記第１のメッセージに付与するための第１の識別情報を採番し、当該第１の識別情報を付与した前記第１のメッセージを順方向および逆方向に送信することを特徴とする請求項２に記載されたネットワーク通信機器。
【請求項４】
前記転送判定部は、ある起点によって送信された前記第２のメッセージより抽出された第２の識別情報と、前記ノード管理部における当該起点に関する識別情報とを比較することによって、前記第２のメッセージが受信済みであるか否かを判定することを特徴とする請求項３に記載されたネットワーク通信機器。
【請求項５】
前記転送制御部は、前記第２のメッセージが受信済みでないと判定された場合、前記ノード管理部における当該起点に関する識別情報を前記第２の識別情報に更新することを特徴とする請求項４に記載されたネットワーク通信機器。
【請求項６】
前記識別情報は、個々のメッセージに対してノード単位で採番されるメッセージＩＤと、ノード固有のノードＩＤとを含むことを特徴とする請求項２から５のいずれかに記載されたネットワーク通信機器。
【請求項７】
送信対象メッセージとしての前記第１のメッセージまたは前記第２のメッセージが第１の送信先に到達したか否かを判定する到達確認部をさらに有し、
前記起点制御部または前記転送制御部は、前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記送信対象メッセージの新たな送信先として、リング内の転送経路における前記第１の送信先以降の第２の送信先を選択するとともに、前記通信部を介して、当該第２の送信先に前記送信対象メッセージを送信することを特徴とする請求項１に記載されたネットワーク通信機器。
【請求項８】
前記起点制御部は、前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記第１の送信先が切断状態になった旨をリング内の各ノードに対して通知することを特徴とする請求項７に記載されたネットワーク通信機器。
【請求項９】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器にインストールされる通信プログラムにおいて、
リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノードリストを用意する第１のステップと、
通信ネットワーク機器にインストールされているアプリケーションから、自己のノードを起点として送信すべき第１のメッセージを受け取る第２のステップと、
自己のノードを起点として、前記第１のメッセージをリング内で順方向および逆方向に送信する第３のステップと、
ある起点によって送信された第２のメッセージを順方向および逆方向のいずれかの転送方向で受信する第４のステップと、
前記転送方向の受信に応じて、前記ノードリストにおける前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する第５のステップと、
前記第２のメッセージが受信済みでないと判定された場合、前記第２のメッセージをアプリケーションに引き渡すとともに、前記第２のメッセージをリング内で前記転送方向に送信する第６のステップと、
前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる第７のステップと
を有する方法をネットワーク通信機器に実行させることを特徴とする双方向リング型ネットワーク用通信プログラム。
【請求項１０】
前記ノードリストは、リング内で転送されるメッセージを識別するための識別情報を、メッセージの起点となったノード毎に管理することを特徴とする請求項９に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１１】
前記第３のステップは、
前記第１のメッセージに付与するための第１の識別情報を採番するステップと、
当該第１の識別情報を前記第１のメッセージに付加するステップと
を含むことを特徴とする請求項１０に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１２】
前記第５のステップは、
ある起点によって送信された前記第２のメッセージより抽出された第２の識別情報と、前記ノードリストにおける当該起点に関する識別情報とを比較することによって、前記第２のメッセージが受信済みであるか否かを判定するステップであることを特徴とする請求項１１に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１３】
前記第６のステップは、
前記ノードリストにおける当該起点に関する識別情報を前記第２の識別情報に更新するステップを含むことを特徴とする請求項１２に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１４】
前記識別情報は、個々のメッセージに対してノード単位で採番されるメッセージＩＤと、ノード固有のノードＩＤとを含むことを特徴とする請求項１０から１３のいずれかに記載された双方向リング型ネットワーク用通信プログラム。
【請求項１５】
送信対象メッセージとしての前記第１のメッセージまたは前記第２のメッセージが第１の送信先に到達したか否かを判定する第８のステップと、
前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記送信対象メッセージの新たな送信先として、リング内の転送経路における前記第１の送信先以降の第２の送信先を選択する第９のステップと、
前記通信部を介して、当該第２の送信先に前記送信対象メッセージを送信する第１０のステップと
をさらに有することを特徴とする請求項９に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１６】
前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記第１の送信先が切断状態になった旨をリング内の各ノードに対して通知する第１１のステップをさらに有することを特徴とする請求項１５に記載された双方向リング型ネットワーク用通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードがリング状に構成されており、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークに関する。
【背景技術】
【０００２】
例えば、特許文献１，２に開示されているように、複数のノードをリング状に構成し、リング内でメッセージを単方向に転送することで、メッセージをマルチキャストする単方向リング型ネットワークが従来より知られている。また、特許文献３には、アドホックネットワークにおける通信経路の障害対策について開示されている。具体的には、ある通信端末が、メッセージの上流側となる通信経路の切断兆候を検出し、これを切断前触れ状態として上流側の通信端末に通知する。この通知を受けた上流側の通信端末は、切断前触れ状態に該当する経路以外の経路で、送信先に対してメッセージを送信する。
【０００３】
【特許文献１】特開平５−２１９０８４号公報
【特許文献２】特開２０００−４２４６号公報
【特許文献３】特開２００５−６４７２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の単方向リング型ネットワークでは、以下のような２つの問題がある。第１に、リング内でのメッセージ共有に要する通信時間に関する問題である。リング内のノード数がｎ（ｎ≧３）の場合、隣接したノード間でメッセージを一方向で順次転送すると、その転送回数はｎ回となる。ノード間のメッセージ到達時間がすべてのノード間で等しいと仮定した場合、通信時間は転送回数に比例する。そのため、メッセージをリアルタイムで共有する必要があるアプリケーション（例えば、リアルタイム対戦型ネットワークゲーム）への適用を想定した場合、リアルタイム性を損なう要因としてこの問題が顕在化する可能性がある。第２に、通信経路の信頼性に関する問題である。単方向リング型ネットワークでは、メッセージを一方向、すなわち単一の通信経路（パス）で転送する関係上、通信経路の一部に切断が生じると、これ以降の下流ノードに対するメッセージ転送が滞ってしまう。固定端末と比較して通信経路の切断が生じる可能性が高い携帯電話において、これは大きな問題となる。
【０００５】
そこで、本発明の目的は、メッセージの転送効率を高め、リング内でのメッセージ共有に要する全体的な通信時間の短縮を図ることである。
【０００６】
また、本発明の別の目的は、リング内における通信経路の信頼性を高めることである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するために、第１の発明は、複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、ノードとして用いられるネットワーク通信機器を提供する。このネットワーク通信機器は、通信部と、ノード管理部と、起点制御部と、転送判定部と、転送制御部とを有する。通信部は、他のノードとの間でメッセージの送受信を行う。ノード管理部は、リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理する。起点制御部は、自己のノードを起点として第１のメッセージを送信する場合、通信部を介して、第１のメッセージをリング内で順方向および逆方向に送信する。転送判定部は、ある起点によって送信された第２のメッセージが通信部によって順方向および逆方向のいずれかの転送方向で受信された場合、ノード管理部にアクセスして、第２のメッセージの起点となったノードに関して、第２のメッセージが受信済みであるか否かを判定する。転送制御部は、第２のメッセージが受信済みでないと判定された場合、通信部を介して、第２のメッセージをリング内で転送方向に送信する。また、転送制御部は、第２のメッセージが受信済みと判定された場合、第２のメッセージを送信せずに、転送方向における第２のメッセージの転送を自己のノードにて終端させる。
【０００８】
ここで、第１の発明において、ノード管理部は、リング内で転送されるメッセージを識別するための識別情報を、メッセージの起点となったノード毎に管理してもよい。この場合、起点制御部は、第１のメッセージに付与するための第１の識別情報を採番し、この第１の識別情報を付与した第１のメッセージを順方向および逆方向に送信することが好ましい。また、転送判定部は、ある起点によって送信された第２のメッセージより抽出された第２の識別情報と、ノード管理部におけるこの起点に関する識別情報とを比較することによって、第２のメッセージが受信済みであるか否かを判定することが好ましい。さらに、転送制御部は、第２のメッセージが受信済みでないと判定された場合、ノード管理部におけるこの起点に関する識別情報を第２の識別情報に更新することが望ましい。
【０００９】
第１の発明において、送信対象メッセージとしての第１のメッセージまたは第２のメッセージが第１の送信先に到達したか否かを判定する到達確認部をさらに設けてもよい。この場合、起点制御部または転送制御部は、第１の送信先に送信対象メッセージが到達していないと判定された場合、送信対象メッセージの新たな送信先として、リング内の転送経路における第１の送信先以降の第２の送信先を選択するとともに、通信部を介して、この第２の送信先に送信対象メッセージを送信することが好ましい。また、起点制御部は、第１の送信先に送信対象メッセージが到達していないと判定された場合、第１の送信先が切断状態になった旨をリング内の各ノードに対して通知することが望ましい。
【００１０】
第２の発明は、複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、ノードとして用いられるネットワーク通信機器にインストールされる通信プログラムを提供する。この通信プログラムは、以下のステップを有する方法をネットワーク通信機器に実行させる。
【００１１】
（１）ステップ１
リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノードリストを用意する。
（２）ステップ２
通信ネットワーク機器にインストールされているアプリケーションから、自己のノードを起点として送信すべき第１のメッセージを受け取る。
（３）ステップ３
自己のノードを起点として、第１のメッセージをリング内で順方向および逆方向に送信する。
（４）ステップ４
ある起点によって送信された第２のメッセージを順方向および逆方向のいずれかの転送方向で受信する。
（５）ステップ５
転送方向の受信に応じて、ノードリストにおける第２のメッセージの起点となったノードに関して、第２のメッセージが受信済みであるか否かを判定する。
（６）ステップ６
第２のメッセージが受信済みでないと判定された場合、第２のメッセージをアプリケーションに引き渡すとともに、第２のメッセージをリング内で転送方向に送信する。
（７）ステップ７
第２のメッセージが受信済みと判定された場合、第２のメッセージを送信せずに、転送方向における第２のメッセージの転送を自己のノードにて終端させる。
【００１２】
ここで、第２の発明において、ノードリストは、リング内で転送されるメッセージを識別するための識別情報を、メッセージの起点となったノード毎に管理してもよい。この場合、第３のステップは、第１のメッセージに付与するための第１の識別情報を採番するステップと、この第１の識別情報を第１のメッセージに付加するステップとを含むことが好ましい。また、第５のステップは、ある起点によって送信された第２のメッセージより抽出された第２の識別情報と、ノードリストにおける当該起点に関する識別情報とを比較することによって、第２のメッセージが受信済みであるか否かを判定するステップであることが好ましい。さらに、第６のステップは、ノードリストにおけるこの起点に関する識別情報を第２の識別情報に更新するステップを含むことが望ましい。
【００１３】
第２の発明において、送信対象メッセージとしての第１のメッセージまたは第２のメッセージが第１の送信先に到達したか否かを判定する第８のステップと、第１の送信先に送信対象メッセージが到達していないと判定された場合、送信対象メッセージの新たな送信先として、リング内の転送経路における第１の送信先以降の第２の送信先を選択する第９のステップと、通信部を介して、当該第２の送信先に送信対象メッセージを送信する第１０のステップとをさらに設けてもよい。また、第１の送信先に送信対象メッセージが到達していないと判定された場合、第１の送信先が切断状態になった旨をリング内の各ノードに対して通知する第１１のステップをさらに設けてもよい。
【００１４】
また、第１または第２の発明において、識別情報は、個々のメッセージに対してノード単位で採番されるメッセージＩＤと、ノード固有のノードＩＤとを含むことが好ましい。
【発明の効果】
【００１５】
第１または第２の発明によれば、自己のノードを起点として送信されるメッセージは、リング内で順方向および逆方向に転送される。このような双方向転送を行うことで、単方向転送と比較して、メッセージの転送効率が高まり、リング内でのメッセージ共有に要する全体的な通信時間の短縮を図ることができる。また、一方の転送方向における通信経路の一部が切断されたとしても、他方の転送方向における通信経路が維持されている限り、リング全体にメッセージが確実に行き渡る。したがって、リング内における通信経路の信頼性を高めることができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本実施形態にかかる双方向リング型ネットワークの構成図である。このネットワークは、ｎ（ｎ≧３）個のノード１(1)〜１(n)がリング状に構成されている。個々のノードは、単一のネットワーク通信機器に相当し、本実施形態では、ＴＣＰ／ＩＰによるＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）通信機能を備えた携帯電話を用いている。このネットワークの特徴は、メッセージの発信源（以下、「起点」という）より送信されたメッセージをリング内で双方向で、すなわち、順方向および逆方向でリレー転送することによって、リング内でメッセージをマルチキャストする点にある。なお、以下の説明では、「順方向」を時計回りの方向とし、「逆方向」を反時計回りの方向と呼ぶが、順逆に本質的な意味はなく、説明の便宜上定めたものに過ぎない（したがって、順逆を反対の意味で定めてもよい）。
【００１７】
このリング型ネットワークでは、任意のノード１(1)〜１(n)が起点となって、メッセージの起点送信が行われるが、一例として、ノード１(1)を起点としたメッセージ転送手順について、図２から図４を参照しながら概略的に説明する。まず、図２に示すように、起点ノード１(1)は、順方向で隣接したノード１(2)に対してメッセージを送信するとともに、これと同じメッセージを逆方向で隣接したノード１(n)に対しても同時に送信する。これにより、リング内において、順方向にて送信されたメッセージの転送と、逆方向にて送信されたメッセージの転送とが併存することになる。
【００１８】
順方向送信されたメッセージは、図３に示すような通信経路を経て順次転送される。まず、起点ノード１(1)からのメッセージを受信したノード１(2)は、これを次ノード、すなわち、メッセージ転送での下流側ノードに転送するか否かを判定する（転送判定）。メッセージの順方向転送は、自己のノードが逆方向から同一メッセージを未だ受信していないことを条件として行われ、受信済みの場合には、自己のノードにて順方向転送が終了する。ノード１(2)に関して、自己が順方向のメッセージを受信した時点では、逆方向からのメッセージを未だ受信していない。したがって、ノード１(2)は、受信したメッセージを取り込んだ上で、順方向で隣接したノード１(3)に対してメッセージを転送する。それ以降、メッセージは、各ノード１(3)〜１(5)の判定結果が逆方向未受信である限り、ノード１(3)→１(4)→１(5)→１(6)の通信経路で順次転送されていく。このような順方向転送の推移と同時に、これとは別の通信経路で逆方向転送も推移している。そのため、いずれかのノードにおいて、自己が順方向からのメッセージを受信するよりも前に、逆方向から同一メッセージを受信している状態（転送判定＝逆方向受信済み）が生じる。この受信済ノードに該当するノード１(6)は、受信したメッセージの送信は行わないので、一連の順方向転送はノード１(6)を以て終端することになる。
【００１９】
一方、逆方向送信されたメッセージは、図４に示すような通信経路を経て順次転送される。まず、起点ノード１(1)からのメッセージを受信したノード１(n)は、これを次ノードに転送するか否かを判定する。メッセージの逆方向転送は、自己のノードが順方向から同一メッセージを未だ受信していないことを条件として行われ、受信済みの場合には、自己のノードにて逆方向転送が終了する。ノード１(n)に関して、自己が逆方向のメッセージを受信した時点では、順方向からのメッセージを未だ受信していない。したがって、ノード１(n)は、受信したメッセージを取り込んだ上で、逆方向で隣接したノード１(n-1)に対してメッセージを転送する。それ以降、メッセージは、各ノード１(n-1)〜１(n-4)の判定結果が順方向未受信である限り、ノード１(n-1)→１(n-2)→１(n-3)→１(n-4)の通信経路で順次転送されていく。この逆方向転送は、順方向転送にて同一のメッセージを受信済みのノード１(n-4)に至った時点で終端する。
【００２０】
順方向転送の終端となるノード１(6)以降については、逆方向にてメッセージが行き渡っていることが保証されているので、順方向転送を継続する必要はない。また、逆方向転送の終端となるノード１(n-4)以降については、順方向にてメッセージが行き渡っていることが保証されているので、逆方向転送を継続する必要はない。つまり、順方向転送および逆方向転送の双方が終端に至った時点で、リング全体にメッセージが行き渡ったということになる。このような双方向転送では、順方向転送および逆方向転送が同時並行的に行われるので、単方向転送と比較してメッセージの転送回数が半分程度で済む。
【００２１】
図５は、個々のノードに相当する単一のネットワーク通信機器１の構成図であり、すべてのノード１(1)〜１(n)で共通の構成となっている。このネットワーク通信機器１は、通信部に相当する４つの送受信部２〜５と、ノード管理部６と、起点制御部７と、転送判定部８と、転送制御部９と、到達確認部１０とで構成される。また、ネットワーク通信機器１には、これらと連係して動作するアプリケーション１１が予めインストールされている。このネットワーク通信機器１は、メッセージの起点としての機能と、メッセージを転送する機能（転送終端機能を含む）とを備えている。
【００２２】
順方向受信部２は、リング内での順方向のメッセージ転送時にメッセージの転送元となるノードからメッセージを受信する。順方向送信部３は、順方向転送時にメッセージの転送先となるノードにメッセージを送信する。一方、逆方向受信部４は、リング内での逆方向のメッセージ転送時にメッセージの転送元となるノードからメッセージを受信する。逆方向送信部５は、逆方向転送時にメッセージの転送先となるノードにメッセージを送信する。他のノードに送信すべきメッセージは、送信部３，５によってＴＣＰ／ＩＰ準拠のフォーマットにパケット化した上で送信されるが、メッセージとパケットとが必ずしも１対１の関係になるとは限らず、複数のメッセージが１パケット化されることもある。同様に、他のノードから受信したパケットからメッセージを抽出する処理は、受信部２，４によって行われるが、１つのパケットから複数のメッセージが抽出される場合もある。なお、これらの送受信部２〜５は、ハードウェア的には、他のノードとの間でメッセージの送受信を行う通信ユニット（通信部）の一機能として実現される。
【００２３】
ノード管理部６は、リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理する。具体的には、リング内で転送されるメッセージを識別するための固有の識別情報が、メッセージの起点毎に記憶・管理されている。ノード管理部６は、上述した転送判定、すなわち、自己のノードが受信メッセージと同一のものを受信済みであるか否かを判定する上で重要な役割を担っており、以下に述べるノードリストを有している。なお、本実施形態では、受信メッセージ以外に、自己のノードが起点となって送信するメッセージについてもノード管理部６にて管理しているが、本発明の主たる特徴に鑑みたとき、これは必須ではない。
【００２４】
図６は、一例としてのノードリストの説明図である。このノードリストは、ノードＩＤに関連づけて、リスト順位と、ＩＰアドレスと、ステータスと、シーケンス番号とが記述されている。ここで、「ノードＩＤ」とは、リング内の個々のノードを識別するために、個々のノードに割り当てられたノード固有の情報である。「ＩＰアドレス」には、個々のノードに相当するネットワーク通信機器１がＴＣＰ／ＩＰネットワーク上で通信する際に用いられるアドレスが記述される。ネットワーク通信機器１の移動等によってＩＰアドレスが変更された場合、これに応じて「ＩＰアドレス」の記述内容も変更される。「リスト順位」は、リング内におけるノード間の通信経路を規定しており、リスト順位が隣り合ったもの同士で通信が行われることを示す。例えば、リスト順位”１”であるノードＩＤ”１００００１”は、リスト順位”２”であるノードＩＤ”１００００２”と通信するといった如くである。なお、リスト順位が最下位のノードについては、最上位のノードと通信するものとして取り扱われる。このようなノード間の通信経路の集合によって、リングが定義される。「ステータス」は、該当欄のノードの接続状態を示しており、現在接続されているノードについては”接続”にセットされ、何らかの理由で切断されてしまったノードについては”切断”にセットされる。「シーケンス番号」には、該当欄のノードが起点となって送信した最新メッセージに関するシーケンス番号が記述される。シーケンス番号は、個々のメッセージに対してノード単位で個別に採番されるメッセージＩＤの一つであって、番号が連続するように昇順で採番される。この採番はノード単位で独立して行われるので、複数のノードで同一番号の重複採番が許容されている。本実施形態では、識別情報として、メッセージＩＤとしてのシーケンス番号と、起点となるノードＩＤを特定する起点ノードＩＤとのセットを用いており、これによって、起点ノードの特定と、メッセージの識別とが可能になっている。
【００２５】
ノードリストは、リング型ネットワークに参加する全ノードが確定した際、図示しないマッチングサーバによって、全ノードに配布・共有される。初期状態では、全ノードの「ステータス」が”接続”にセットされており、ノードの切断が事後的に生じた際にこれが”切断”に変更される。また、初期状態では、すべての「シーケンス番号」が”０”（如何なるメッセージも起点送信していないことを示す）にセットされており、メッセージの起点送信毎にインクリメントされる。また、転送によるメッセージ受信時においても、必要に応じて、メッセージより抽出されたシーケンス番号に随時更新される。「ＩＰアドレス」についても同様であり、ノードのエリア移動等によりノードのＩＰアドレスが変更された際に随時変更される。これらの記述内容の変更を検出したノードは、他のすべてのノードに対して、ノードリストの変更内容を示す更新情報をメッセージ形式で通知する。これにより、リング内において、リングを維持するために必要な情報（ステータス等）が共有される。なお、マッチングサーバは、当初のマッチングのみ関与し、ノードリストの配布後におけるリング内通信には関与しない。
【００２６】
起点制御部７は、起点送信時、すなわち、自己のノードが起点となってメッセージを送信する場合に動作する。この場合、ノード管理部６における自己のノードに関する識別情報の管理内容が、メッセージに付与すべく採番された識別情報に更新される。そして、順方向送信部３および逆方向送信部５が起点制御部７によって制御され、識別情報を伴うメッセージが双方向に送信される。
【００２７】
転送判定部８および転送制御部９は、転送受信時、すなわち、自己のノードがメッセージを受信した場合に動作する。この場合、転送判定部８によって、ある起点からのメッセージに含まれる識別情報が、ノード管理部６におけるこの起点に関する識別情報の管理内容と比較され、メッセージが受信済みであるか否かが判定される。そして、この判定結果に応じて、順方向送信部３および逆方向送信部５のうちの転送方向に対応する一方が転送制御部９によって制御される。具体的には、メッセージが受信済みでないと判定された場合（未だ受信していない新しいメッセージの場合）、ノード管理部６にアクセスされ、このメッセージを送信した起点に関する識別情報が、今回受信したメッセージの識別情報に更新される。これにより、このメッセージは、以後、自己のノードにおいて受信済みとして取り扱われる。そして、この転送方向における当該メッセージの転送が許可される。これに対して、同一のメッセージが受信済みと判定された場合、この転送方向における当該メッセージの転送が禁止される。
【００２８】
到達確認部１０は、自己のノードにおける起点制御部７または転送制御部９からメッセージが送信された場合に動作し、送信対象となったメッセージが送信先に到達したか否かを判定する(到達確認）。後述するように、この送信先に送信対象メッセージが到達しなかった場合には、当該送信先をスキップして、リング内の転送経路における当該送信先以降のノードに対して、メッセージの送信が試みられる。
【００２９】
図７は、ネットワーク通信機器１において実行される通信制御のフローチャートである。まず、図５に示したアプリケーション１１からメッセージの発信要求があった場合には、このメッセージの起点送信を行うべく、ステップ１の分岐を経てステップ２の起点制御が実行される。アプリケーション１１としては、例えば、リアルタイムでメッセージを共有する必要がある対戦型ネットワークゲーム等を用いることができ、ネットワーク通信機器１に予めインストールされている。なお、起点制御は、アプリケーションによるメッセージの発信要求をトリガとして実行されるケースもあるが、リングを維持する上で必要な管理情報（ノードリストの更新情報）をリング内で共有する場合においても実行される。また、アプリケーション１１からのメッセージの受け取りは、アプリケーション１１からの発信要求をトリガとする手法以外に、起点制御部７によるバッファへの定期的なアクセスであってもよい。この場合、まず、アプリケーション１１がバッファ（図示せず）に送信すべきメッセージを書き込む。起点制御部７は、このバッファにメッセージが存在するか否かを定期的に確認する。そして、バッファにメッセージが存在する場合には、起点制御が実行される。一方、メッセージの発信要求がない状態で他のノードからメッセージを受信した場合には、ステップ１，３の分岐を経てステップ４の例外付転送制御が実行される。ここで、例外付転送制御の「例外」とは、転送判定の結果によってメッセージ転送が行われないケース（転送終端となる場合）が存在することを意味する。
【００３０】
（起点制御）
図８は、図７のステップ２、すなわち、起点送信時に実行される起点制御の詳細なフローチャートである。まず、ステップ１１において、起点制御部７は、今回、送信対象となる新たなメッセージに付与するためのシーケンス番号を昇順にて採番する。自己のノードにおける採番は、他のノードの採番状況と無関係に行われる。続くステップ１２において、起点制御部７は、ノードリストにおける自己のノードに関するシーケンス番号（記述内容）を、ステップ１１で採番されたシーケンス番号に更新する。例えば図６において、ノードＩＤ”１００００３”が起点送信を行う場合、このノードＩＤに対応するシーケンス番号”１１２３”に、新たに採番された”１１２４”が上書きされる。
【００３１】
ステップ１３において、起点制御部７は、ノードリストを参照して、メッセージの送信先を双方向で特定する。すなわち、順方向の送信先として、リスト順位の昇順側で自己のノードに最も近く、かつ、ステータスが”接続”であるノードが特定される。それとともに、逆方向の送信先として、リスト順位の降順側で自己のノードに最も近く、かつ、ステータスが”接続”であるノードが特定される。例えば、リスト順位”３”のノードＩＤ”１００００３”が図６に示したノードリストを保有している場合、順方向の送信先は、リスト順位”４”のノードＩＤ”１００００４”となり、逆方向の送信先は、リスト順位”１”のノードＩＤ”１００００１”となる（リスト順位”２”のノードＩＤ”１００００２”は切断状態なのでスキップされる）。そして、メッセージは、所定のフォーマットに変換された上で、順方向送信部３および逆方向送信部５に出力される。このメッセージは、図９において太線で囲まれたデータセットに相当する。メッセージのヘッダは、ステップ１１で採番されたシーケンス番号、メッセージ種別（アプリケションメッセージ／リング管理用メッセージの区別）、起点ノードＩＤ（自己のノードＩＤ）、宛先ノードＩＤ（全ノードを宛先とする場合にはその旨の指定）等を含む。また、ペイロードは、例えば、アプリケーションから引き渡されたメッセージの具体的な内容に相当する。なお、本発明とは直接関係しないので詳細については省略するが、宛先ノードＩＤによって特定の宛先が指定されている場合には、この宛先に対して双方向でメッセージが転送され、宛先のノードにて転送が終端する。
【００３２】
なお、本実施形態では、ＴＣＰ／ＩＰを前提としているが、ＴＣＰにおいて接続先を特定する必要が生じるのは、実際には、以下の２つのタイミングのみである。これら以外の送信時には、既に確立されたＴＣＰストリーム（通信路）に対して読み書きを行うだけなので、ノードリストの都度参照を行う必要はない。
【００３３】
（１）初回接続のとき（リング構築時）
（２）前後のノードが切断されたとき
【００３４】
ステップ１４において、順方向送信部３および逆方向送信部５は、図９に示したＴＣＰ／ＩＰに準拠したパケットを生成する。具体的には、起点制御部７から受けたメッセージをペイロードとし、これにＩＰヘッダ、ＴＣＰヘッダ等のヘッダが付加される。そして、順方向送信部３は、起点制御部７によって指定された順方向の送信先に対して、ＴＣＰ／ＩＰパケットを送信する。それとともに、逆方向送信部５は、起点制御部７によって指定された逆方向の送信先に対して、ＴＣＰ／ＩＰパケットを送信する。
【００３５】
ステップ１５において、到達確認部１０は、順方向送信部３および逆方向送信部５によって送信されたパケットのそれぞれが送信先に到達したか否かを判定する。到達確認の手法については様々なものが知られており、その内容については詳述しないが、典型的には、以下の手法が周知である。なお、起点制御の場合、順方向の送信先および逆方向の送信先のそれぞれに対して、到達確認が別個に行われる。
【００３６】
（１）ＴＣＰプロトコルの送信情報を取得する方法
起点制御部７からの通知（送信部３，５からの通知でも可）をトリガとして時間をカウントし、所定時間内にＴＣＰプロトコルの送信情報を自己のノードが取得できなかった場合、パケットが送信先に到達しなかったものとみなす。
（２）ＰＰＰ（Point to Point Protocol）等のデータリンク層プロトコルの送信情報を取得する方法
上記所定時間内に、ＰＰＰ等のデータリンク層プロトコルの送信情報を自己のノードが取得できなかった場合、パケットが送信先に到達しなかったものとみなす。
（３）定期的に送信先から送信されている生存確認ＰＩＮＧ（Packet INternet Groper）を用いる方法
上記所定時間内に生存確認ができなかった場合に、パケットが送信先に到達しなかったものとみなす。
【００３７】
ステップ１５で肯定判定された場合、すなわち、パケットが送信先に到達した場合にはステップ１６に進み、メッセージの送信が完了した旨が起点制御部７からアプリケーション１１に通知される。これによって、今回の送信対象であるメッセージに関する一連の起点制御が終了する。これに対して、ステップ１５で否定判定された場合、すなわち、パケットが送信先に到達しなかった場合にはステップ１７に進む。起点制御部７は、到達確認部１０からの判定結果を受けて、ノードリストにおける未到達の送信先に関するステータスを”接続”から”切断”に変更する。そして、ステップ１３に戻り、起点制御部７は、ノードリストを参照して、未到達とされた方向に関して新たな送信先を選択・特定した上で、この新たな送信先に対するメッセージの送信を試みる。先のステップ１７でのステータス更新によって、当初の送信先は切断状態として取り扱われるので、当初の送信先はスキップされ、これ以降でステータスが”接続”となっているノードが新たな送信先として選択される。
【００３８】
（例外付転送制御）
図１０は、図７のステップ４、すなわち、転送受信時に実行される例外付転送制御の詳細なフローチャートである。まず、ステップ２１において、転送判定部８は、今回受信したメッセージが受信済みであるか否かを判定する。具体的には、受信メッセージより抽出されたシーケンス番号が、受信メッセージより抽出されたノードＩＤに関するノードリストの記述内容（シーケンス番号）と比較される。両者が一致するということは、今回、ある転送方向で受信したメッセージは、これとは逆の転送方向にて受信済みであることを意味する。したがって、ステップ２１の判定結果が肯定の場合（受信済みメッセージの再受信時）、重複転送を避けるべく、受信メッセージの送信を行うことなく処理を終了する。これに対して、ステップ２１の判定結果が否定の場合（未受信メッセージの初回受信時）、受信メッセージの転送を行うべく、ステップ２２に進む。
【００３９】
ステップ２２において、転送制御部９は、ノードリストにおいて、起点ノードに関するシーケンス番号の記述内容を受信メッセージより抽出されたシーケンス番号に更新する。例えば図６において、ノードＩＤ”１００００３”が受信したメッセージより抽出された起点ノードＩＤが”１００００１”で、シーケンス番号が”９２０”の場合、このノードＩＤに対応するシーケンス番号”９１９”に”９２０”が上書きされる。これによって、ノードＩＤ”１００００３”では、以後、起点ノードＩＤ”１００００１”からのメッセージに関して”９２０”までが受信済みとして取り扱われる。そして、続くステップ２３において、転送制御部９は、他ノードから新たなメッセージを受信した旨をアプリケーション１１に通知する。その際、受信メッセージが格納されたバッファのアドレスもアプリケーション１１に通知される。アプリケーション１１へのメッセージの引き渡しは、アプリケーション１１への通知をトリガとする手法以外に、アプリケーション１１によるバッファへの定期的なアクセスであってもよい。この場合、まず、転送制御部９がバッファに受信したメッセージを書き込む。アプリケーション１１は、バッファ内にメッセージが存在するか否かを定期的に確認する。そして、バッファにメッセージが存在する場合には、それがアプリケーション１１に引き渡される。
【００４０】
ステップ２４において、転送制御部９は、ノードリストを参照して、メッセージの転送先（送信先）を特定する。メッセージ転送では、受信メッセージの転送方向がそのまま維持される。順方向転送の場合には、順方向の転送先として、リスト順位の昇順側で自己のノードに最も近く、かつ、ステータスが”接続”であるノードが特定される。これに対して、逆方向転送の場合には、逆方向の転送先として、リスト順位の降順側で自己のノードに最も近く、かつ、ステータスが”接続”であるノードが特定される。そして、メッセージは、所定のフォーマットに変換された上で、順方向送信部３および逆方向送信部５のうちの転送方向に対応する一方に出力される。このメッセージのフォーマットは、起点制御部７が生成するそれと同様である。そして、ステップ２５において、順方向送信部３および逆方向送信部５の一方（転送方向に対応する方）は、ＴＣＰ／ＩＰに準拠したパケットを生成し、このＴＣＰ／ＩＰパケットを送信する。
【００４１】
ステップ２６において、到達確認部１０は、上述した到達確認手法を用いて、転送方向にて送信されたパケットが転送先に到達したか否かを判定する。ステップ２６で肯定判定された場合、すなわち、パケットが転送先に到達した場合には、今回の送信対象であるメッセージに関する一連の転送制御が終了する。これに対して、ステップ２６で否定判定された場合、すなわち、パケットが転送先に到達しなかった場合にはステップ２７に進む。転送制御部９は、到達確認部１０からの判定結果を受けて、ノードリストにおける未到達の転送元に関するステータスを”接続”から”切断”に変更する。そして、ステップ２４に戻って、ステップ２４〜２６の手順が再度実行される。これにより、未到達とされた転送方向に関して、新たな転送先が選択・特定され、この転送先に対するメッセージの送信を試みられる。この新たな転送先は、当初の転送先ではなく、これ以降でステータスが”接続”となっているノードである。
【００４２】
なお、図８のステップ１７または図１０のステップ２７において、ノードリストの記述内容が変更された場合、起点制御部７は、メッセージ種別を”リング管理用”としたメッセージを新規に生成し、上述した起点制御によって、ノードリストの変更内容を示す更新情報を他のノードに通知する。これによって、リングを維持するために必要な情報がリング内で共有される。
【００４３】
このように、本実施形態では、自己のノードが起点送信する場合には、ノード管理部６における自己のノードに関する識別情報の管理内容が新規に採番された識別情報に更新された上で、順方向および逆方向でメッセージが送信される。一方、自己のノードが転送受信した場合には、受信メッセージに含まれる識別情報と、ノード管理部６におけるこの起点に関する識別情報の管理内容とが比較される。受信メッセージの転送を行うか否かは、識別情報の比較結果によって決定される。これにより、一方の転送方向におけるメッセージ転送は、同一メッセージを他方の転送方向で受信済みのノードにおいて終端し、それ以降のノードに対しては重複して転送されない。したがって、リング内でのメッセージ共有に必要な転送回数は、単方向リング型ネットワークのそれと比較して半分程度で済む。その結果、リング内におけるメッセージの転送効率が向上しリング内でのメッセージ共有に要する全体的な通信時間の短縮を図ることが可能になる。
【００４４】
また、本実施形態によれば、単方向リング型ネットワークと比較して、通信経路の信頼性を高めることができる。なぜなら、メッセージが双方向で転送されるので、一方の転送方向における通信経路の一部が切断された場合でも、他方の転送方向における通信経路が維持されている限り、リング全体にメッセージが確実に行き渡るからである。
【００４５】
なお、上述した実施形態では、ネットワーク通信機器として、Ｐ２Ｐ通信可能な携帯電話を例に説明した。携帯電話のキャリアが現在提供しているサービスでは、単位時間当たりの送信回数に制約があり、これがマルチキャストを行う上でのボトルネックになっている。本発明は、このような制約を伴う携帯電話でマルチキャストを容易に実現できる有効な技術の一つである。しかしながら、本発明の適用対象は、携帯電話に限定されるものではなく、各種の移動体端末、さらには一般的なコンピュータ（通常は固定的に設置される）に対しても広く適用可能である。 
【００４６】
また、上述した実施形態では、リング内で転送されるメッセージを識別するための識別情報として、シーケンス番号とノードＩＤとのセットを用いるケースについて説明した。このシーケンス番号は、以下の２つの性格を有している。
【００４７】
（１）個々のメッセージに対してノード単位で採番
（２）番号が連続するように採番（シーケンシャル採番）
【００４８】
上記（１）に関して、ノード単位とした理由は、リング単位とした場合に必要となる、採番状況を照会するための通信をなくすためである。リング内で一意となるように番号を採番する場合（複数ノードで重複番号の採番を認めない場合）、新規に採番しようとするノードは、他のノードにおける現在の採番状況を照会しなければならない。この照会のための通信は、通信リソースに大きな制約を伴う携帯電話において大きなボトルネックになる。これに対して、ノード単位として場合には、各ノードが他のノードの採番状況とは無関係に任意に採番できるので、このような通信をなくすことができる。もちろん、通信リソースの制約が殆ど問題にならないのであれば、リング単位で採番してもよく、本発明は、このような形態を排除するものではない。
【００４９】
ノード単位で採番する場合には、メッセージを受信したノードが起点ノードを特定することができる仕組みを取り入れる必要がある。この仕組みとしては、上述した実施形態のように、メッセージに起点ノードＩＤも付加する手法もあるが、それ以外に、シーケンス番号の採番自体に一定の規則を設けることで、起点ノードを特定できるようにしてもよい。例えば、シーケンス番号の剰余と、起点ノードとを対応付けるといった如くである。具体的には、リングのノード数が４の場合、リスト順位”１”のノードは、１，５，９，１３，・・・といった如く、剰余１の昇順でシーケンス番号を採番する。同様に、リスト順位”２”のノードは剰余２、リスト順位”３”のノードは剰余３、リスト順位”４”のノードは剰余０で、シーケンス番号をそれぞれ採番する。これにより、各ノードは、メッセージから抽出されたシーケンス番号の剰余から起点ノードを特定できる。また、別の手法として、ノードリストのリスト順位をシーケンス番号の適当な数ビットにセットすることにより、ノードを識別するようにしてもよい。
【００５０】
また、上記（２）に関して、シーケンシャルで採番する理由は、ノードリストのデータ量を抑制するためである。本実施形態のようにシーケンシャル採番を採用した場合、ノードリストにおけるメッセージの進捗状況は、最新のシーケンス番号の記述のみで管理でき、過去のすべてのシーケンス番号を履歴（起点送信履歴・受信済み履歴）として記述しておく必要はない（それゆえに、上書きしてしまって構わない）。最新のシーケンス番号以前のメッセージは、受信済みとして取り扱うことができるからである。もちろん、ノードリストのデータ量を考慮しないのであれば、すべてのシーケンス番号を履歴として管理することも可能であり、本発明は、このような形態を排除するものではない。なお、履歴形式で管理する場合には、シーケンス番号にする必要はなく、メッセージ固有の単なるメッセージＩＤを用いれば足りる（このメッセージＩＤはノード単位またはリング単位で採番される）。
【００５１】
さらに、上述した実施形態では、ネットワーク通信機器１の機能的な構成および動作を中心に説明したが、ネットワーク通信機器１にこのような機能を実現させるための双方向リング型ネットワーク用通信プログラムも本発明の別の形態を構成するものである。この通信プログラムをインストールすることで、概略的には、ネットワーク通信機器１は以下のようなステップを実行可能となる。なお、これらのステップは、時系列的な順序を示すものではなく、機能別に並べたものに過ぎない点に留意されたい。
【００５２】
（１）ノードリストの用意
ネットワーク通信機器１のメモリにノードリスト用の記憶領域を確保し、この記憶領域にノードリストを生成する。
（２）アプリケーションとの連係
通信ネットワーク機器にインストールされているアプリケーションから、自己のノードを起点としてメッセージを送信すべき旨の発信要求を受け取る。そして、この発信要求に対応したメッセージの送信が完了したことをアプリケーションに通知する。また、他のノードから新しいメッセージを受信した場合には、その旨をアプリケーションに通知する。
（３）ノードリストの更新
自己のノードが起点となってメッセージを送信する場合には、ノードリストにおける自己のノードに関する識別情報の記述を、メッセージに付与すべく採番された識別情報に更新する。また、他ノードから新たなメッセージを受信した場合には、このメッセージの起点となったノードに関する識別情報を更新する。
（４）メッセージの起点制御
自己のノードが起点となってメッセージを送信する場合には、順方向および逆方向の双方の送信先に対して、識別情報を伴うメッセージを送信する。
（５）メッセージの転送制御
他のノードからメッセージを受信した場合、自己のノードにとって新しいメッセージ（すなわち未受信）ならば転送先に転送し、そうでなければ転送を禁止する。新しいメッセージであるか否かの判定は、受信メッセージに含まれる識別情報と、ノードリストにおける識別情報の記述（本メッセージの起点となったノードに関するもの）とを比較することによって行われる。
【図面の簡単な説明】
【００５３】
【図１】双方向リング型ネットワークの構成図
【図２】起点によるメッセージ送信の説明図
【図３】順方向転送におけるメッセージ転送の説明図
【図４】逆方向転送におけるメッセージ転送の説明図
【図５】ネットワーク通信機器の構成図
【図６】一例としてのノードリストの説明図
【図７】通信制御のフローチャート
【図８】起点制御の詳細なフローチャート
【図９】ＴＣＰ／ＩＰ準拠のパケットの説明図
【図１０】例外付転送制御の詳細なフローチャート
【符号の説明】
【００５４】
１  ネットワーク通信機器
２  順方向受信部
３  順方向送信部
４  逆方向受信部
５  逆方向送信部
６  ノード管理部
７  起点制御部
８  転送判定部
９  転送制御部
１０  到達確認部
１１  アプリケーション
【図１】
2008118272.tif 000003
【図２】
2008118272.tif 000004
【図３】
2008118272.tif 000005
【図４】
2008118272.tif 000006
【図５】
2008118272.tif 000007
【図６】
2008118272.tif 000008
【図７】
2008118272.tif 000009
【図８】
2008118272.tif 000010
【図９】
2008118272.tif 000011
【図１０】
2008118272.tif 000012
【手続補正書】
【提出日】平成19年2月20日(2007.2.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器において、
他のノードとの間でメッセージの送受信を行う通信部と、
リング内で転送されるメッセージを識別するために個々のメッセージに対してノード単位で採番され、かつ、メッセージを受信したノードが当該メッセージの起点となったノードを特定することができる仕組みによって採番された識別情報に基づいて、リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノード管理部と、
自己のノードを起点として第１のメッセージを送信する場合、前記通信部を介して、前記第１のメッセージをリング内で順方向および逆方向に送信する起点制御部と、
ある起点によって送信された第２のメッセージが前記通信部によって順方向および逆方向のいずれかの転送方向で受信された場合、前記ノード管理部にアクセスして、前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する転送判定部と、
前記第２のメッセージが受信済みでないと判定された場合、前記通信部を介して、前記第２のメッセージをリング内で前記転送方向に送信し、前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる転送制御部と
を有することを特徴とするネットワーク通信機器。
【請求項２】
前記識別情報は、個々のメッセージに対してノード単位で採番されるメッセージＩＤと、ノード固有のノードＩＤとを含むことを特徴とする請求項１に記載されたネットワーク通信機器。
【請求項３】
前記起点制御部は、前記第１のメッセージに付与するための第１の識別情報を採番し、当該第１の識別情報を付与した前記第１のメッセージを順方向および逆方向に送信することを特徴とする請求項１または２に記載されたネットワーク通信機器。
【請求項４】
前記転送判定部は、ある起点によって送信された前記第２のメッセージより抽出された第２の識別情報と、前記ノード管理部における当該起点に関する識別情報とを比較することによって、前記第２のメッセージが受信済みであるか否かを判定することを特徴とする請求項３に記載されたネットワーク通信機器。
【請求項５】
前記転送制御部は、前記第２のメッセージが受信済みでないと判定された場合、前記ノード管理部における当該起点に関する識別情報を前記第２の識別情報に更新することを特徴とする請求項４に記載されたネットワーク通信機器。
【請求項６】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器において、
他のノードとの間でメッセージの送受信を行う通信部と、
リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノード管理部と、
自己のノードを起点として第１のメッセージを送信する場合、前記通信部を介して、前記第１のメッセージをリング内で順方向および逆方向に送信する起点制御部と、
ある起点によって送信された第２のメッセージが前記通信部によって順方向および逆方向のいずれかの転送方向で受信された場合、前記ノード管理部にアクセスして、前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する転送判定部と、
前記第２のメッセージが受信済みでないと判定された場合、前記通信部を介して、前記第２のメッセージをリング内で前記転送方向に送信し、前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる転送制御部と、
送信対象メッセージとしての前記第１のメッセージまたは前記第２のメッセージが第１の送信先に到達したか否かを判定する到達確認部とを有し、
前記起点制御部または前記転送制御部は、前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記送信対象メッセージの新たな送信先として、リング内の転送経路における前記第１の送信先以降の第２の送信先を選択するとともに、前記通信部を介して、当該第２の送信先に前記送信対象メッセージを送信することを特徴とするネットワーク通信機器。
【請求項７】
前記起点制御部は、前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記第１の送信先が切断状態になった旨をリング内の各ノードに対して通知することを特徴とする請求項６に記載されたネットワーク通信機器。
【請求項８】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器にインストールされる通信プログラムにおいて、
リング内で転送されるメッセージを識別するために個々のメッセージに対してノード単位で採番され、かつ、メッセージを受信したノードが当該メッセージの起点となったノードを特定することができる仕組みによって採番された識別情報に基づいて、リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノードリストを用意する第１のステップと、
通信ネットワーク機器にインストールされているアプリケーションから、自己のノードを起点として送信すべき第１のメッセージを受け取る第２のステップと、
自己のノードを起点として、前記第１のメッセージをリング内で順方向および逆方向に送信する第３のステップと、
ある起点によって送信された第２のメッセージを順方向および逆方向のいずれかの転送方向で受信する第４のステップと、
前記転送方向の受信に応じて、前記ノードリストにおける前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する第５のステップと、
前記第２のメッセージが受信済みでないと判定された場合、前記第２のメッセージをアプリケーションに引き渡すとともに、前記第２のメッセージをリング内で前記転送方向に送信する第６のステップと、
前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる第７のステップと
を有する方法をネットワーク通信機器に実行させることを特徴とする双方向リング型ネットワーク用通信プログラム。
【請求項９】
前記識別情報は、個々のメッセージに対してノード単位で採番されるメッセージＩＤと、ノード固有のノードＩＤとを含むことを特徴とする請求項８に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１０】
前記第３のステップは、
前記第１のメッセージに付与するための第１の識別情報を採番するステップと、
当該第１の識別情報を前記第１のメッセージに付加するステップと
を含むことを特徴とする請求項８または９に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１１】
前記第５のステップは、
ある起点によって送信された前記第２のメッセージより抽出された第２の識別情報と、前記ノードリストにおける当該起点に関する識別情報とを比較することによって、前記第２のメッセージが受信済みであるか否かを判定するステップであることを特徴とする請求項１０に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１２】
前記第６のステップは、
前記ノードリストにおける当該起点に関する識別情報を前記第２の識別情報に更新するステップを含むことを特徴とする請求項１１に記載された双方向リング型ネットワーク用通信プログラム。
【請求項１３】
複数のノードがリング状に構成されているとともに、任意のノードを起点として送信されたメッセージをリング内で順方向および逆方向に転送することによって、リング内でメッセージをマルチキャストする双方向リング型ネットワークで、前記ノードとして用いられるネットワーク通信機器にインストールされる通信プログラムにおいて、
リング内での転送によって自己のノードが受信したメッセージを、メッセージの起点となったノード毎に管理するノードリストを用意する第１のステップと、
通信ネットワーク機器にインストールされているアプリケーションから、自己のノードを起点として送信すべき第１のメッセージを受け取る第２のステップと、
自己のノードを起点として、前記第１のメッセージをリング内で順方向および逆方向に送信する第３のステップと、
ある起点によって送信された第２のメッセージを順方向および逆方向のいずれかの転送方向で受信する第４のステップと、
前記転送方向の受信に応じて、前記ノードリストにおける前記第２のメッセージの起点となったノードに関して、前記第２のメッセージが受信済みであるか否かを判定する第５のステップと、
前記第２のメッセージが受信済みでないと判定された場合、前記第２のメッセージをアプリケーションに引き渡すとともに、前記第２のメッセージをリング内で前記転送方向に送信する第６のステップと、
前記第２のメッセージが受信済みと判定された場合、前記第２のメッセージを送信せずに、前記転送方向における前記第２のメッセージの転送を自己のノードにて終端させる第７のステップと、
送信対象メッセージとしての前記第１のメッセージまたは前記第２のメッセージが第１の送信先に到達したか否かを判定する第８のステップと、
前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記送信対象メッセージの新たな送信先として、リング内の転送経路における前記第１の送信先以降の第２の送信先を選択するとともに、当該第２の送信先に前記送信対象メッセージを送信する第９のステップと
を有する方法をネットワーク通信機器に実行させることを特徴とする双方向リング型ネットワーク用通信プログラム。
【請求項１４】
前記第１の送信先に前記送信対象メッセージが到達していないと判定された場合、前記第１の送信先が切断状態になった旨をリング内の各ノードに対して通知する第１０のステップをさらに有することを特徴とする請求項１３に記載された双方向リング型ネットワーク用通信プログラム。