JP4646812B2 - 1対多型メッセージ伝送システム - Google Patents

1対多型メッセージ伝送システム Download PDF

Info

Publication number
JP4646812B2
JP4646812B2 JP2006006774A JP2006006774A JP4646812B2 JP 4646812 B2 JP4646812 B2 JP 4646812B2 JP 2006006774 A JP2006006774 A JP 2006006774A JP 2006006774 A JP2006006774 A JP 2006006774A JP 4646812 B2 JP4646812 B2 JP 4646812B2
Authority
JP
Japan
Prior art keywords
message
receiving node
node
receiving
matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006006774A
Other languages
English (en)
Other versions
JP2007189560A (ja
Inventor
英嗣 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Data Corp
Original Assignee
NTT Data Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Data Corp filed Critical NTT Data Corp
Priority to JP2006006774A priority Critical patent/JP4646812B2/ja
Publication of JP2007189560A publication Critical patent/JP2007189560A/ja
Application granted granted Critical
Publication of JP4646812B2 publication Critical patent/JP4646812B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明は、1対多のメッセージ伝送システムに関する。
複数のコンピュータ(ノード)を使用する分散アプリケーションにおいては、ノード間でメッセージ(アプリケーションデータ)を送受信する必要がある。そして、メッセージを、確実に届けること(高信頼なメッセージ送受信)が要求される。インターネット上で1対1のノード間で高信頼なメッセージ送受信を実現するための技術として、HTTPR(HTTP Reliable)、ebXML Message Service、WS-ReliableMessaging、WS-Reliability等が提案されている。
これらの技術の基本原理は、図12に示すように、受信ノードがメッセージの応答確認(ACKと呼ばれる)を送信ノードに送信し、それをもとに送信ノードがメッセージ送達を確認するというポジティブ応答確認である。
一方、アプリケーションによっては、1対多のノード間での高信頼なメッセージ送受信が望まれる場合がある。この場合に、ポジティブ応答確認を原理とする上述の技術を使用すると、図13に示すように、受信ノードの数が増加すると送信ノードへのACKの送信数が爆発的に増加するという「応答爆発」という問題が発生する。つまり、ACKの増加により、送信ノードの負荷が激増し、受信ノード数に対してスケーラブルでなくなってしまうという問題が発生する。
応答爆発の問題を解決しうる技術として、(1)木構造ACK方式、(2)ネガティブ応答確認〈NACK)方式、(3)冗長送信/前方誤り訂正(FEO=Forward Error Correction)方式等が知られている。
木構造ACK方式は、図14に示すように、受信ノードを木構造に配置し、各階層の上位ノードが下位ノードからの応答確認を集約することによって、送信ノードへの応答確認の数を減少させる方法である。各送信ノードは、一定時間ACKを受信できなかった場合には、その受信ノードに、木構造に従ってメッセージを再送する(例えば、非特許文献1参照)。
また、ネガティブ応答確認〈NACK)方式は、受信ノードがメッセージを受信できなかったことを、送信ノードまたは他の受信ノードに通知する方法である(非特許文献2)。この方法は、一般にNACKの発生頻度がACKに比べて低いことを考慮しており、確率的に応答爆発を抑えることができる。各送信ノードは、NACKを受信した場合にのみ、その受信ノードに、メッセージを再送する。
冗長送信/前方誤り訂正(FEO=Forward Error Correction)方式は、送信ノードが同一のメッセージを複数回送信したり、オリジナルメッセージと前方誤り訂正符号とを一緒に送受信することにより、受信したメッセージから受信できなかったメッセージを再構成できるようにし、メッセージの再送をなくす方法である(非特許文献3)。
TRAM: A Tree-based Reliable Multicast Protocol, Sun Microsystems Laboratory, 1998http://research.sun.com/technical-reports/1998/abstract-66.html Negative-ACKnowledgment (NACK)-Oriented Reliable Multicast (NORM)Protocol, lETF RFC3940, 2004http=//www.ietf.org/rfc/rfc3940.txt The Use of Forward Error Correction (FEC) in Reliable Multicast, IETF RFC3453,2002http://www.ietf.org/rfc/rfc3453.txt
上記木構造ACK方式では、送信ノードに近い受信ノードで障害が発生すると、多くの受信ノードに影響する。また、障害が発生していない正常なノードに対してもメッセージ送受信が途絶えることとなる。また、送信ノードはACKが帰ってこない木構造のリーフを構成するノードグループ全体の受信状況を把握することはできるが、すべての受信ノード個々の受信状況を把握できない。
また、ネガティブ応答確認(NACK)方式では、ポジティブ応答確認(ACK)が明示的に送信されないため、NACKが送受信できなかった場合には、正常に送受信がされていないにもかかわらず、送受信されたとみなされてしまう。よって、NACKの送受信自体を確実に行える仕組みが必要となる。また、送信ノードは、一定時間NACKが来ないことで受信ノードの受信状況を把握することになるが、NACKでは確実に受信ノードがメッセージを受信したことを確認することはできない。
冗長送信/前方誤り訂正(FEC)方式では、いくら冗長に送信したとしても、確実にメッセージが送受信されたことを保証することはできない。メッセージ送受信が「確実に」行われることを考えた場合においても、受信側がメッセージ受信できるほどの冗長な送信をする必要があり、効率的とは言えない。また、送信ノードが受信ノードの受信状況を把握することもできない。
本発明は、上記問題に鑑みてなされたものであり、1対多のメッセージ伝送において、[a]応答爆発を起こすことなくメッセージを複数の受信ノードに送信でき、[b]受信ノードのメッセージ受信状況を把握でき、[c]ノード障害発生時にもその影響を小さく抑えることが可能なメッセージ伝送を可能とすることを目的とする。
上記目的を達成するため、この発明の第1の観点に係る管制指示生成装置は、
送信ノードを構成するコンピュータ装置と、受信ノードを構成する複数のコンピュータ装置とから構成される、1対多型メッセージ伝送システムであって、
前記受信ノードは論理的にマトリックスに配列されており、
前記送信ノードは、第1のメッセージを前記マトリックスの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックスの各行の先頭の受信ノードに送信し、前記マトリックスの各列の最後の受信ノードから成功応答信号を受信し、前記マトリックスの各行の最後の受信ノードから成功応答信号を受信し、ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信し、
前記受信ノードは、受信した第1のメッセージを同一列の次の受信ノードに転送し、各列の最後の受信ノードが前記送信ノードに成功応答信号を送信し、受信した第2のメッセージを同一行の次の受信ノードに転送し、各行の最後の受信ノードが前記送信ノードに成功応答信号を送信する、
ことを特徴とする。
前記送信ノードは、例えば、ある列の受信ノードとある行の受信ノードから成功応答信号を受信できないときに、その行と列の交点にある受信ノードが故障していると判別する。
前記送信ノードは、例えば、ある列の受信ノードとある行の受信ノードとの一方のみから成功応答信号を受信できず、他の列及び行の受信ノードから成功応答信号を受信できた場合において、前記ある列の受信ノードから該成功応答信号を受信できないときは、前記第1又は第2のメッセージを前記マトリックスの各行の先頭又は最後の受信ノードに再送信して、該成功応答信号を受信できない行と前記ある列との交点にある受信ノードを、障害の発生した受信ノードとして特定する手段と、前記ある行の受信ノードから該成功応答信号を受信できないときは、前記第1の又は第2のメッセージを前記マトリックスの各列の先頭又は最後の受信ノードに再送信して、該成功応答信号を受信できない列と前記ある行との交点にある受信ノードを、障害の発生した受信ノードとして特定する手段を備えてもよい。
例えば、前記送信ノードは、論理的マトリックスの構造を定義する定義情報を格納しており、前記第1のメッセージの伝送ルートを定義する第1のルート情報を前記第1のメッセージに付加して前記受信ノードに供給し、前記第2のメッセージの伝送ルートを定義する第2のルート情報を第2のメッセージに付加して受信ノードに供給し、前記受信ノードは、受信した第1又は第2のメッセージに付加されている第1又は第2のルート情報に従って、第1又は第2のメッセージを伝送する。
前記送信ノードは、送信対象のメッセージを分割して第1と第2のメッセージを生成する手段又は送信対象のメッセージを分類して、第1と第2のメッセージを生成する手段を備えてもよい。
上記目的を達成するため、この発明の第2の観点に係るコンピュータ装置は、
論理的にマトリックス状に配列されたコンピュータにメッセージを伝送するためのコンピュータ装置であって、
第1のメッセージを論理的にマトリックス状に配列されている受信ノードのうちの各列の先頭の受信ノードに送信する手段と、
第2のメッセージを前記マトリックス状の配列されている受信ノードのうちの各行の先頭の受信ノードに送信する手段と、
前記マトリックスの各列の最後の受信ノードから成功応答信号を受信する手段と、
前記マトリックスの各行の最後の受信ノードから成功応答信号を受信する手段と、
ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信する手段と、
ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する手段と、
を備える。
上記目的を達成するため、この発明の第3の観点に係る1対多型メッセージ伝送方法は、
第1のメッセージを論理的にマトリックス状に配列された受信ノードのうちの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックス状に配列された受信ノードのうちの各行の先頭の受信ノードに送信し、
前記論理的マトリックスの各列を構成する受信ノード間で、受信した第1のメッセージを順次転送し、各列の最後の受信ノードがメッセージの受信に成功したときに、成功応答信号を出力し、
前記論理的マトリックスの各行を構成する受信ノード間で、受信した第2のメッセージを順次転送し、各行の最後の受信ノードがメッセージの受信に成功したときに、成功応答信号を出力し、
ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、
ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する、
ことを特徴とする。
上記目的を達成するため、この発明の第4の観点に係るコンピュータプログラムは、
コンピュータを、
第1のメッセージを論理的にマトリックス状に配列されている受信ノードの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックス状に配列されている受信ノードの各行の先頭の受信ノードに送信し、前記マトリックスの各行と各列の最後の受信ノードから成功応答信号を受信し、ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する、
送信ノードとして機能させる、ことを特徴とする。
上記構成とすることにより、[a]応答爆発を起こすことなくメッセージを複数の受信ノードに送信でき、[b]受信ノードのメッセージ受信状況を成功応答信号から把握でき、[c]ノード障害発生時に、メッセージを再送信する等して、影響を小さく抑えることが可能となる。
以下、この発明の実施の形態に係る高信頼メッセージマルチキャストシステムについて説明する。
本発明の実施の形態に係る高信頼メッセージマルチキャスト送受信システムは、図1に示すように、通信ネットワークN1により相互に接続されたコンピュータ装置11から構成される。
コンピュータ装置11は、通信ネットワークN1により相互に接続され、それぞれ、通信ノードとして機能する。
このうちの任意の1台のコンピュータ装置11が、メッセージを送信する送信ノードとなり、残りの任意の複数台のコンピュータ装置11が送信ノードからメッセージを受信する受信ノードとなる。
各コンピュータ装置11は、メッセージや作業の内容に応じて、適宜、送信ノードとなることも受信ノードとなることもあり、送信ノードと受信ノードの組み合わせも台数も適宜変更・設定される。
次に、上記構成のメッセージマルチキャストシステムにおける、メッセージ送受信のシステム全体の手順を説明する。
コンピュータ装置11の物理的な接続・配置構成とは別に、
複数のコンピュータ装置11のうちの1台が送信ノード、他の任意の複数台数のコンピュータ装置11が受信ノードとなる。
ここでは、理解を容易にするため、受信ノードを25台とする。
送信ノードは、物理的な構成とは別に、受信ノードの論理的なメッシュ構成を保持する。論理的な構成なので物理的な構成には依存しない。
図2(a)はメッシュ構成の例を示しており、25個の受信ノードを、5行×5列の二次元のメッシュ状(マトリックス)に配置する。
このメッシュ状の横軸のグルーピングをXグループ(行列の列)とよび、個別には、グループa〜e(a列〜e列)とする。また、縦軸のグルーピングをYグループ(行列の行)と呼び、個別には、グループA〜E(A〜E行)とする。
送信ノードは、図2(b)に示すように、このメッシュ構成を定義するテーブルを保持している。
送信ノードは、送信するメッセージ2つを1組とし、1つをXグループの各グループに、もう1つをYグループの各グループに送信する。このとき、送信する1つのメッセージを2つに分割して送信してもよい。
[メッセージの送受信]
2つのメッセージをそれぞれMSG-1、MSG-2とした場合、送信ノードは、図 3(a)に例示するように、メッセージMSG-1をXグループの各グループa〜e(列)に送信し、図3(b)に示すように、メッセージMSG-2をYグループの各グループA〜E(行)に送信する。
各グループのノードは、バケツリレー式に同一グループに属する受信ノード間でメッセージを配達していく。各グループの最後の受信ノードは、配達されたメッセージ(MSG-1またはMSG-2)を送信ノードに配達する。
これが各グループのポジティブ応答確認(受信応答;ACK)の役割を果たす。なお、配達されたメッセージをACKの代用とするのではなく、最後の受信ノードが別途ACKメッセージを送信ノードに送信してもよい。
送信ノードは、送信するメッセージに、ノード配置テーブルTNをもとにバケツリレーするルートを示す情報を付加する。たとえば、SOAP(Simple Object Access Protocol)仕様に基づくメッセージでは、SOAPへッダ要素にルーテイング情報として辿るノードリストを付加する。
例えば、送信ノードは、グループa〜eに送信するメッセージMSG-1に図4(a)に示すルート情報を付加する。
また、送信ノードは、グループA〜Eに送信するメッセージMSG-2に図4(b)に示すルート情報を付加する。
各受信ノードは、受信したメッセージに付加されているルート情報に従って、受信したメッセージを次のノードに送信する。例えば、受信ノードR2は、送信ノードより、メッセージMSG-1を直接受信し、付加されているルート情報「R2→R7→R12→R17→R22→S」より、自己(R2)の次の受信ノードR7を特定し、ノードR7にメッセージMSG-1を送信する。同様に、受信ノードR2は、ノードR2ノードより、メッセージMSG-2を受信し、付加されているルート情報「R1→R2→R3→R4→R5→S」より、自己(R2)の次の受信ノードR3を特定し、ノードR3にメッセージMSG-1を送信する。
同様に、例えば、受信ノードR25は、メッセージMSG-1とMSG-2を受信すると、ヘッダに付加されているルート情報、自己(R25)の次のノードが送信ノードSであることを特定し、送信ノードSにメッセージMSG-1とMSG-2を送信する。
[送信ノードによる受信ノードの受信状況の把握]
送信ノードにおいて、受信ノードのメッセージの受信状況を把握する。
上記のようなメッセージ送信形態をとった際に、1つのメッセージ(MSG-1)のみでは、受信ノードの受信状況を把握することができない。例えば、図5に示すように、ノードR18において、障害が発生したとする。その場合、MSG-1の送信において、グループcの応答確認メッセージ(受信ノードR23から送信ノードSに送られるメッセージ)が送られない。よって、グループcの各受信ノードにはMSG-1が(完全には)届いていないということが送信ノードで把握できる。
同様に、送信ノードは、他のメッセージMSG-2に関するACKから、グループDにはMSG-2が届いていないということを把握できる。この関係により、グループcとグループDに属するノードR18が故障していることも把握できる。即ち、送信ノードは、各受信ノードがメッセージを受信できたかどうかを、各グループの最終ノードからのメッセージを受信することのみで判断できる。
なお、メッセージMSG-1の送信とメッセージMSG-2の送信の間にノード障害が発生した場合は、受信確認ができなかった未送信メッセージを再送することにより、受信状況が把握できる。この点は後述する。
また、未送信メッセージの再送受信ノードで障害が発生した場合、障害が発生していないノード(グループc、グループDのノードでR18以外のノード)へのメッセージ送信が必要である。図5に示したノードR18の障害の例では、障害が発生していないノードR23へのメッセージMSG-1、ノードR19とR20へのメッセージの送信が必要となる。よって、ノードR19,R20にはメッセージMSG-2を、ノードR23にはメッセージMSG-1を再送する必要がある。ただし、送信ノードSは、グループc内のすべてのノードにメッセージMSG-1が届けられておらず、グループD内のすべてのノードにメッセージMSG-2が届けられていないとして受信状況を把握する。
そこで、送信ノードSは、故障ノードをルーテイングから外すと共に、組となっているメッセージ(MSG-1、MSG-2)を、最初に送ったグループとは逆のグループに対してかつ、逆の方向からメッセージを再送する。つまり、MSG-1をYグループの各グループに、MSG-2をXグループの各グループに前回とは逆の方向に送信する。そうすることにより、ノードR19, R20にはMSG-2が、ノードR23にはMSG-1が配達され、障害のないノードにはメッセージが配達される。
具体的に説明すると、メッセージMSG-1に、グループAの受信ノードを逆順に辿るための「R5→R4→R3→R2→R1→S」という付加情報を付加し、グループAの受信ノードR5に送信する。同様に、メッセージMSG-2に、グループBの受信ノードを逆順に辿るための「R5→R4→R3→R2→R1→S」という付加情報を付加し、グループBの受信ノードR10に送信する。グループC〜Eについても同様である。また、メッセージMSG-2に、グループaの受信ノードを逆順に辿るための「R21→R16→R11→R6→R1→S」という付加情報を付加し、グループaの受信ノードR5に送信する。グループb〜eについても同様である。なお、送信ノードは、図4(c)、(d)に示すように、この異常発生時用の、ルート情報を予め用意しておく。
そして、各グループの最終ノードが送信側にメッセージを送信するため、送信ノードは、故障していないノードへのメッセージMSG-1, MSG-2の送信(到着)が確認できる。また、この間、すでにMSG-1やMSG-2を受信しているノードは、ルーティング情報に合わせてメッセージをリレーするのみである。
このようなメッセージの送受信方法により、最初に送信したメッセージMSG-1の送信と次のメッセージMSG-2の送信の間でノード障害が発生した場合でも、再送が可能となる。たとえばメッセージMSG-1はすべてのグループに対して送信が成功し、その後メッセージMSG-2を送信して、このメッセージのグループDの送信が失敗した場合、ノードR16, R17, R18, R19, R20のうちのすべてか一部に送信ができていないことになる。この場合においても、Xグループ単位でも逆方向からのメッセージ再送により、障害ノード以外のノードへのメッセージ送信が行え、さらに、再送の結果から障害ノードを特定することができる。以上の方法により、高信頼な1対多のメッセージ送受信が実現できる。
以上説明したように、本実施の形態のメッセージ伝送システムにより、(1)応答爆発を起こすことなく同一メッセージを複数の受信ノードに確実に送信でき、(2)送信ノードが受信ノードのメッセージ受信状況(送信できたかどうか)を把握でき、(3)ノード障害発生時にもその影響を最小限に抑え、メッセージ送受信を続けることができる。さらに、1対多の高信頼メッセージ送受信においても、システム全体で負荷が分散でき、送信ノードに高性能が要求されない。
次に、上記の全体の送受信としてのメッセージの伝送処理を可能とするための、各送信ノード及び受信ノードの構成と動作を説明する。
コンピュータ装置11は、物理的には、図6に示すように、通信装置21と、制御装置22と、記憶装置23と、入力装置24と、出力装置25とから構成される。
通信装置21は、他のコンピュータ装置11と通信ネットワークN1を介して通信を行うためのインターフェイスである。例えば、NIC(Network Interface Card)等から構成される。
制御装置22は、例えば、CPU(Central Processing Unit:中央演算処理装置)やワークエリアとなるRAM(Random Access Memory)などから構成され、後述する各通信制御処理を実行する。
記憶装置23は、内蔵ハードディスク装置等から構成され、制御装置22の処理プログラムや各種のデータを保管する。
記憶装置23には、このコンピュータ装置11が送信ノードとなる際の、受信ノードのマトリックス情報(図3(b))とルート情報(図4(a)〜(d))が登録されている。
入力装置24は、キーボード、マウスなどを含み、種々の情報を制御装置22に供給する。
出力装置25は、表示装置やプリンタから構成、種々の情報を画面に表示し、或いは、ハードコピーを生成する。
図1に示す通信ネットワークN1は、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)などといった所定の通信プログラムに基づいてデータ伝送をおこなうネットワークであり、例えばLAN(Local Area Network)等から構成される。
次に、送信ノードとして機能するコンピュータ装置11の動作を図7を参照して説明する。
まず、制御装置22は、送信対象のメッセージを第1のメッセージMSG-1と第2のメッセージMSG-2に分割(分類)する(ステップS11)。例えば、送信メッセージが1つだけの場合には、1つのメッセージを分割して、第1のメッセージMSG-1と第2のメッセージMSG-2とを生成する。また、送信メッセージが複数ある場合には、第1のメッセージMSG-1と第2のメッセージMSG-2とにグループ分けする。
続いて、制御装置22は、記憶装置23から、通常時Xグループ用ルート情報を読み出し、第1のメッセージMSG-1のヘッダ情報に付加して送信する(ステップS12)。具体的には、第1のメッセージMSG-1のヘッダ情報にグループa用のルート情報を付加して、受信ノードR1に送信し、第1のメッセージMSG-1のヘッダ情報にグループb用のルート情報を付加して、受信ノードR2に送信し、...第1のメッセージMSG-1のヘッダ情報にグループe用のルート情報を付加して、受信ノードR5に送信する。その後、タイムアウト用の計時を開始する。
続いて、制御装置22は、記憶装置23から、通常時Yグループ用ルート情報を読み出し、第2のメッセージMSG-2のヘッダ情報に付加して送信する(ステップS13)。具体的には、第2のメッセージMSG-2のヘッダ情報にグループA用のルート情報を付加して、受信ノードR1に送信し、第2のメッセージMSG-2のヘッダ情報にグループB用のルート情報を付加して、受信ノードR6に送信し、...第2のメッセージMSG-2のヘッダ情報にグループE用のルート情報を付加して、受信ノードR21に送信する。その後、タイムアウト用の計時を開始する。
続いて、制御装置22は、各グループからのACK(送信した第1のメッセージMSG-1又は第2のメッセージMSG-2)の受信を待機する(ステップS14,S15)。
この間、送信したメッセージは、受信ノードを順次転送され、各グループの最後の受信ノードから送信ノードに返送される。
規定時間内に、全てのACKを受信すると(ステップS14;Yes)、正常にメッセージの全受信ノードへの送信が完了したと判別される(ステップS16)。
一方、規定時間内に、少なくとも1つのACKを受信できなかった場合(ステップS14;No、ステップS15;Yes)、まず、異常状態の(故障した)ノードを特定する(ステップS17)。
具体的に説明すると、制御装置22は、図8に示すように、受信できないACKが、第1のメッセージMSG-1に対応するもの(Xグループからのもの)と、第2のメッセージMSG-2に対応するもの(Yグループからのもの)を両方をであるか否かを判別する(ステップS21)。
ACKを受信できないグループがXグループとYグループの両方であると判別した場合(ステップS21;Yes)、ACKを受信できないXグループと、ACKを受信できないYグループとの交点に位置するノードが故障(異常)であると判別する(ステップS22)。例えば、Xグループのうちのグループbと、YグループのうちのグループbからACKを受信できていない場合には、その交点に位置するノードR7が異常(故障)であると判別する。
ACKを受信できないグループがXグループとYグループの一方であると判別した場合(ステップS21;No)、そのグループ内のいずれかのノードが異常(故障)であると判別する(ステップS23)。
なお、上述のように、Xグループ内のグループa〜eと、Yグループ内のグループA〜E、のいずれかのみからACKを受信できない場合は、あるノードが一方のメッセージを転送した後に、故障した場合であると想定される。この場合には、例えば、図9の処理を行って、故障したノードを特定してもよい。
即ち、ACKを受信できないグループがXグループ内のグループa〜eであるか、Yグループ内のグループA〜Eのいずれかであるかを判別する(ステップS31)。
ACKを受信できないグループがXグループ内のグループa〜eのいずれかである場合には、改めて、Yグループ内のグループA〜Eにメッセージを送信し(ステップS32)、ACKを受信できないグループがYグループ内のグループA〜Eのいずれかである場合には、改めて、Xグループ内のグループa〜eにメッセージを送信する(ステップS33)。
制御装置22は、この処理により、送信されてくるACKを受信し、Xグループ内のACKを受信できないグループとYグループ内のACKを受信できないグループとを特定し、故障箇所の判別を行う。
一方、図7のステップS17で異常ノードを特定した後、制御装置22は、ACKを受信できななかったメッセージを再送信する処理を行う(ステップS18)。
この処理の詳細を図10を参照して説明する。
まず、制御装置22は、Xグループ内のグループa〜eからACKを受信できていないかを判別する(ステップS41)。
Xグループ内のグループa〜eのいずれかからACKを受信できていない場合(ステップS41;Yes)、ステップS42に進む。一方、Xグループ内の全てのグループa〜eからACKを受信できている場合(ステップ41;No)、ステップS42をスキップする。
ステップS42では、記憶装置23から、異常時用Yグループルート情報を読み出し、メッセージMSG-1のヘッダに付加して送信する(ステップS42)。
具体的には、第1のメッセージMSG-1のヘッダ情報に、グループA用のルート情報(R5→R4→R3→R2→R1→S)を付加して、受信ノードR5に送信し、第1のメッセージMSG-1のヘッダ情報にグループB用のルート情報(R10→R9→R8→R7→R6→S)を付加して、受信ノードR10に送信する。グループC〜Eについても同様である。
次に、制御装置22は、Yグループ内のいずれかのグループA〜EのいずれかからACKを受信できていないかを判別する(ステップ43)。
Yグループ内のいずれかのグループA〜EのいずれかからACKを受信できていない場合(ステップS43;Yes)、ステップS44に進む。一方、Yグループ内の全てのグループA〜EからACKを受信できている場合(ステップ43;No)、ステップS44をスキップする。
ステップS44では、記憶装置23から、異常時用Xグループルート情報を読み出し、メッセージMSG-2のヘッダに付加して送信する(ステップS42)。
具体的には、第2のメッセージMSG-2のヘッダ情報に、グループa用のルート情報(R21→R16→R11→R6→R1→S)を付加して、受信ノードR21に送信する。また、第2のメッセージMSG-2のヘッダ情報に、グループb用のルート情報(R22→R17→R12→R7→R2→S)を付加して、受信ノードR22に送信する。グループc〜eについても同様である。
このようにして、故障したノード以外に確実にメッセージを伝送できる。
一方、受信ノードは、メッセージを受信すると、図11に示す転送処理を開始する。まず、受信したメッセージを記憶装置23に格納する(ステップS51)。
次に、このメッセージを転送すべき次のノードを判別する(ステップS52)。これは、受信したメッセージのヘッダ情報を分析すること等により求められる。
次に、判別した転送先ノードにこのメッセージを転送する(ステップS53)。
以上説明したように、本実施の形態のメッセージ伝送システムは、高信頼メッセージマルチキャストシステムであり、(A)論理的に受信ノードをメッシュ状に配置し、その一部の(全体数よりも十分少数の)受信側ードにのみポジティブ応答確認をさせることにより応答爆発を防ぐことができる。さらに、一定時間ACKを受信できなかった受信ノードにはメッセージを再送することにより、確実なメッセージ送受信ができる。また、(B)メッセージを2個1組とし、その2個のメッセージをメッシュ状の受信ノードに、異なるパスを使って送信することにより、メッセージが受信できなかった受信ノードを、送信ノードが把握できる。さらに、(C)送信ノードが、ノード障害を検知した際、最初に送信したパスとは逆の送信パスでメッセージを再送することにより、ノード障害発生時にも、故障しているノード以外のノードには可能な限りメッセージを送達させることができる。
なお、この発明は、上記実施の形態に限定されず、種々の変形及び応用が可能である。
例えば、上記実施の形態では、受信ノードを25台として、マトリックスを5×5としたが、マトリックスの形状は任意である。例えば、6×4のマトリックスと1×1のマトリックスを想定して、ルート情報を設定してもよい。ルート情報が全ノードをX方向とY方向に通過するようにルート情報を定義できるならば、ノードの数やマトリックスの形状などは任意である。
また、上記実施の形態のマトリックスと他の従来の手法とを組み合わせて使用すること等も可能である。例えば、図2のマトリックス内の送信ノードに他の従来の手法を用いてメッセージを送信し、これを送信ノードが受信ノードに配信する等してもよい。
また、上記実施の形態においては、メッセージの配信順序を定義するルート情報を送信ノードが生成し、メッセージに付加して送信したが、ルート情報を各受信ノードが予め記憶しておいて、各受信ノードがメッセージ内の適当な識別情報により、メッセージの転送先を判別してメッセージを転送するようにしてもよい。
また、上記実施の形態においては、異常が生じたい場合に、図6に示すように通常とは別のルートで且つ逆向きにメッセージを送信したが、異常が生じた場合に、図6に示すように通常とは別のルート(行と列が逆)であるが行と列内では順方向にメッセージを送信するようにしてもよい。
本発明の実施の形態に係るメッセージ伝送システムのブロック図である。 (a)は、送信ノードSと受信ノードRが論理的に構成するマトリックスの構成図であり、(b)は、受信ノードが構成する論理的マトリックスを定義するデータの例である。 図2のマトリックス状のノードでのメッセージの伝送経路を説明するための図である。 送信ノードに格納されるルート情報の例を示す図であり、(a)と(b)は通常時用、(c)と(d)は異常(障害)時用、(a)と(c)はXグループ用、(b)と(d)はYグループ用である。 マトリックスを構成する受信ノードR18に障害が発生した場合の動作を説明するための図である。 図1に示すコンピュータ装置の構成を示すブロック図である。 送信ノードの動作を説明するためのフローチャートである。 図7のフローチャートにおける故障ノード判別処理の詳細を示すフローチャートである。 故障ノードを判別するために、図8の処理に加えて適宜実行される処理の詳細を示すフローチャートである。 図7のフローチャートにおけるメッセージの再送信処理の詳細を示すフローチャートである。 受信ノードの処理を説明するためのフローチャートである。 1対1のノード間でのポジティブ応答確認を説明するための図である。 1対多のノード間でのポジティブ応答確認を説明するための図である。 木構造ACK方式を説明するための図である。
符号の説明
11 コンピュータ装置
21 通信装置
22 制御装置
23 記憶装置
24 入力装置
25 出力装置
N1 通信ネットワーク

Claims (8)

  1. 送信ノードを構成するコンピュータ装置と、受信ノードを構成する複数のコンピュータ装置とから構成される、1対多型メッセージ伝送システムであって、
    前記受信ノードは論理的にマトリックスに配列されており、
    前記送信ノードは、第1のメッセージを前記マトリックスの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックスの各行の先頭の受信ノードに送信し、前記マトリックスの各列の最後の受信ノードから成功応答信号を受信し、前記マトリックスの各行の最後の受信ノードから成功応答信号を受信し、ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信し、
    前記受信ノードは、受信した第1のメッセージを同一列の次の受信ノードに転送し、各列の最後の受信ノードが前記送信ノードに成功応答信号を送信し、受信した第2のメッセージを同一行の次の受信ノードに転送し、各行の最後の受信ノードが前記送信ノードに成功応答信号を送信する、
    ことを特徴とする、1対多型メッセージ伝送システム。
  2. 前記送信ノードは、
    ある列の受信ノードとある行の受信ノードから成功応答信号を受信できないときに、その行と列の交点にある受信ノードが故障していると判別する、
    ことを特徴とする、請求項1に記載の1対多型メッセージ伝送システム。
  3. 前記送信ノードは、
    ある列の受信ノードとある行の受信ノードとの一方のみから成功応答信号を受信できず、他の列及び行の受信ノードから成功応答信号を受信できた場合において、
    前記ある列の受信ノードから該成功応答信号を受信できないときは、前記第1又は第2のメッセージを前記マトリックスの各行の先頭又は最後の受信ノードに再送信して、該成功応答信号を受信できない行と前記ある列との交点にある受信ノードを、障害の発生した受信ノードとして特定する手段と、
    前記ある行の受信ノードから該成功応答信号を受信できないときは、前記第1の又は第2のメッセージを前記マトリックスの各列の先頭又は最後の受信ノードに再送信して、該成功応答信号を受信できない列と前記ある行との交点にある受信ノードを、障害の発生した受信ノードとして特定する手段を備える、
    ことを特徴とする、請求項1又は2に記載の1対多型メッセージ伝送システム。
  4. 前記送信ノードは、論理的マトリックスの構造を定義する定義情報を格納しており、前記第1のメッセージの伝送ルートを定義する第1のルート情報を前記第1のメッセージに付加して前記受信ノードに供給し、前記第2のメッセージの伝送ルートを定義する第2のルート情報を第2のメッセージに付加して前記受信ノードに供給し、
    前記受信ノードは、受信した第1又は第2のメッセージに付加されている第1又は第2のルート情報に従って、第1又は第2のメッセージを伝送する、
    ことを特徴とする、請求項1乃至のいずれか1項に記載の1対多型メッセージ伝送システム。
  5. 前記送信ノードは、送信対象のメッセージを分割して第1と第2のメッセージを生成する手段又は送信対象のメッセージを分類して第1と第2のメッセージを生成する手段を備える、
    ことを特徴とする、請求項1乃至のいずれか1項に記載の1対多型メッセージ伝送システム。
  6. 論理的にマトリックス状に配列されたコンピュータにメッセージを伝送するためのコンピュータ装置であって、
    第1のメッセージを論理的にマトリックス状に配列されている受信ノードのうちの各列の先頭の受信ノードに送信する手段と、
    第2のメッセージを前記マトリックス状の配列されている受信ノードのうちの各行の先頭の受信ノードに送信する手段と、
    前記マトリックスの各列の最後の受信ノードから成功応答信号を受信する手段と、
    前記マトリックスの各行の最後の受信ノードから成功応答信号を受信する手段と、
    ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信する手段と、
    ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する手段と、
    を備えるコンピュータ装置。
  7. 第1のメッセージを論理的にマトリックス状に配列された受信ノードのうちの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックス状に配列された受信ノードのうちの各行の先頭の受信ノードに送信し、
    前記論理的マトリックスの各列を構成する受信ノード間で、受信した第1のメッセージを順次転送し、各列の最後の受信ノードがメッセージの受信に成功したときに、成功応答信号を出力し、
    前記論理的マトリックスの各行を構成する受信ノード間で、受信した第2のメッセージを順次転送し、各行の最後の受信ノードがメッセージの受信に成功したときに、成功応答信号を出力し、
    ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、
    ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する、
    ことを特徴とする、1対多型メッセージ伝送方法。
  8. コンピュータを、
    第1のメッセージを論理的にマトリックス状に配列されている受信ノードの各列の先頭の受信ノードに送信し、第2のメッセージを前記マトリックス状に配列されている受信ノードの各行の先頭の受信ノードに送信し、前記マトリックスの各行と各列の最後の受信ノードから成功応答信号を受信し、ある列の受信ノードから成功応答信号を受信できないときに、前記第1のメッセージを、前記マトリックスの各行の先頭又は最後の受信ノードに送信し、前記マトリックスの各行の最後又は先頭の受信ノードから成功応答信号を受信し、ある行の受信ノードから成功応答信号を受信できないときに、前記第2のメッセージを、前記マトリックスの各列の先頭又は最後の受信ノードに送信し、各列の最後又は先頭の受信ノードから成功応答信号を受信する、
    送信ノードとして機能させる、ことを特徴とするコンピュータプログラム。
JP2006006774A 2006-01-13 2006-01-13 1対多型メッセージ伝送システム Active JP4646812B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006006774A JP4646812B2 (ja) 2006-01-13 2006-01-13 1対多型メッセージ伝送システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006006774A JP4646812B2 (ja) 2006-01-13 2006-01-13 1対多型メッセージ伝送システム

Publications (2)

Publication Number Publication Date
JP2007189560A JP2007189560A (ja) 2007-07-26
JP4646812B2 true JP4646812B2 (ja) 2011-03-09

Family

ID=38344414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006006774A Active JP4646812B2 (ja) 2006-01-13 2006-01-13 1対多型メッセージ伝送システム

Country Status (1)

Country Link
JP (1) JP4646812B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009267846A (ja) * 2008-04-25 2009-11-12 Kyocera Corp 無線通信システム、無線基地局、無線端末および無線通信方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54140437A (en) * 1978-04-24 1979-10-31 Toshiba Corp Parallel process system
JPS60134647A (ja) * 1983-12-23 1985-07-17 Hitachi Ltd 通信ネツトワ−クシステム
JPH0795234A (ja) * 1993-09-20 1995-04-07 Oki Electric Ind Co Ltd 高速格子型ネットワークシステムのノード
JPH07296690A (ja) * 1994-04-28 1995-11-10 ▲高▼橋 靖和 センサー及びそのセンサーを用いた障害物の位置検出 方法並びにゲーム機
JPH0964883A (ja) * 1995-08-24 1997-03-07 Toshiba Corp 多重化端局装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54140437A (en) * 1978-04-24 1979-10-31 Toshiba Corp Parallel process system
JPS60134647A (ja) * 1983-12-23 1985-07-17 Hitachi Ltd 通信ネツトワ−クシステム
JPH0795234A (ja) * 1993-09-20 1995-04-07 Oki Electric Ind Co Ltd 高速格子型ネットワークシステムのノード
JPH07296690A (ja) * 1994-04-28 1995-11-10 ▲高▼橋 靖和 センサー及びそのセンサーを用いた障害物の位置検出 方法並びにゲーム機
JPH0964883A (ja) * 1995-08-24 1997-03-07 Toshiba Corp 多重化端局装置

Also Published As

Publication number Publication date
JP2007189560A (ja) 2007-07-26

Similar Documents

Publication Publication Date Title
EP1747644B1 (en) Method and apparatus for group communication with end-to-end reliability
TWI259674B (en) Method and apparatus for reducing transmission errors in a third generation cellular system
US7318102B1 (en) Reliable datagram
US7346699B1 (en) Reliable multicast
JP4851585B2 (ja) クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置
JP2007531340A (ja) マルチパス伝送を使用したmimoシステムのためのパケット再送
Jones et al. Protocol design for large group multicasting: the message distribution protocol
JP2008017306A (ja) 無線送信装置および無線通信方法
CN101594634B (zh) 一种数据传输方法、相关装置及其***
US20070019677A1 (en) Data processing method and system based on a serial transmission interface
JP4646812B2 (ja) 1対多型メッセージ伝送システム
JP6547973B2 (ja) ストリーム制御の方法およびシステム
JP2009212796A (ja) 送信装置、データ転送システム、データ転送方法およびデータ転送プログラム
JP6182779B1 (ja) 転送装置、転送方法およびプログラム
JP2017011706A (ja) 通信システム、通信方法及び通信プログラム
JP4936469B2 (ja) 通信システム
Qin et al. Throughput comparison of automatic repeat request assisted butterfly networks
JP2007189399A (ja) 自動再送制御方法、送信装置、受信装置及びプログラム
JP2007288428A (ja) 中継装置およびデータ再送方法
US9385840B2 (en) Multicast apparatus and method
KR102279601B1 (ko) Dds를 위한 게이트웨이 구동 방법
JP2009124276A (ja) Raidを用いて分割し且つ冗長化したパケットを送受信する送信装置、受信装置及びプログラム
JP2007257288A (ja) メッセージ回復システムおよび回復方法
KR102339661B1 (ko) Dds를 위한 게이트웨이 장치
JP2013179430A (ja) 装置間同期および切替方法、並びに装置間切替システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4646812

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250