JP4356693B2 - メッセージ配信装置及びその方法並びにシステム及びプログラム - Google Patents

メッセージ配信装置及びその方法並びにシステム及びプログラム Download PDF

Info

Publication number
JP4356693B2
JP4356693B2 JP2005503478A JP2005503478A JP4356693B2 JP 4356693 B2 JP4356693 B2 JP 4356693B2 JP 2005503478 A JP2005503478 A JP 2005503478A JP 2005503478 A JP2005503478 A JP 2005503478A JP 4356693 B2 JP4356693 B2 JP 4356693B2
Authority
JP
Japan
Prior art keywords
message
node
information
header
message delivery
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.)
Expired - Fee Related
Application number
JP2005503478A
Other languages
English (en)
Other versions
JPWO2004081800A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2004081800A1 publication Critical patent/JPWO2004081800A1/ja
Application granted granted Critical
Publication of JP4356693B2 publication Critical patent/JP4356693B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はメッセージ配信装置及びその方法並びにシステム及びプログラムに関し、特にある通信ノードから通信網を介して複数の関連する通信ノードに対してメッセージを配信するメッセージ配信方式に関するものである。
サン(Sun)社が仕様を定めているジャバメッセージングサービス(Java(R)Messaging Service:JMS;http://java.sun.com/products/jms/)や、その一実装であるソフトワイアード(Softwired)社のアイバス(iBus:http://www.softwired−inc.com)/などのメッセージ指向ミドルウェアは、メッセージにトピックと呼ぶキーワードをつけるようになっている。メッセージ送信者は、メッセージルータに対して、このトピック付メッセージを送信する。
例えば、図21を参照すると、従来のメッセージ配信システムの例が示されている。受信者の通信ノード(以下、単にノードと称す)500,501がネットワーク100を介してメッセージルータ800に接続されており、DB(データベース)900はメッセージルータ800により管理される。
図21において、受信者ノード500は予め自分が受信したいトピックをメッセージルータ800に登録しておく。トピック付メッセージは、メッセージ受信部210で受信され、スプリッタ220に渡される。スプリッタ220はメッセージをヘッダとペイロードとに分割し、前者をヘッダ解釈部230へ、後者を合成部260へ、それぞれ送信する。
ヘッダ解釈部230はヘッダを解釈し、このメッセージが登録要求メッセージであることを把握すると共に、トピックと受信者ノード500のURL(Uniform Resource Locator)を抽出する。また、ヘッダ解釈部230はDB(データベース)書込部290を利用して、データベース900にトピックをキーワードとし、受信者のURL等の位置情報のリストを表として格納しておく。ヘッダ解釈部230はデータベース900への登録に成功すると、応答メッセージメ用ヘッダを作成し、合成部260に渡す。
合成部260はヘッダ解釈部230から受け取ったヘッダと、スプリッタ220から受け取ったペイロードとを合わせて、一つの応答メッセージとする。合成部260はメッセージ転送部270を用いてノード500に対して登録成功応答メッセージを発行する。
ノード500のメッセージ受信部520がこの登録成功応答メッセージを受信して処理部510に渡す。これにより、処理部510は登録成功を確認することになる。なお、ノード501は送信者ノードである。
メッセージルータ800は、メッセージ受信部210により、送信者ノード501からメッセージを受信したとき、メッセージはスプリッタ220に渡される。スプリッタ220はメッセージをヘッダとペイロードに分割し、前者をヘッダ解釈部230に、また後者を合成部260に、それぞれ送信する。ヘッダ解釈部230はヘッダを解釈し、このメッセージがルーティング対象メッセージであることを把握すると共に、送信対象のトピックを抽出する。ヘッダ解釈部230はDB読出部240を利用して、メッセージのトピックでデータベース900を検索し、その結果得られたノードの位置情報、例えばノード500等のURLの集合を得る。
ヘッダ解釈部230はこの得られた位置情報のリストに対して、それぞれヘッダを作成し、合成部260に渡す。合成部260はヘッダ解釈部230から受け取ったヘッダ各々に対して、スプリッタ220から受け取ったペイロードをコピーしてメッセージを作成し、メッセージ転送部270に渡す。メッセージ転送部270はノード501などの受信者ノードにメッセージを送信する。送信されたメッセージは、例えばノード500のメッセージ受信部520で受信され、処理部510に渡される。処理部510は受け取ったメッセージに応じた処理を行う。
例えば、営業部所属メンバへのメッセージをトピック”Sales Div”とする。また、営業1課のトピックを”1st sec”とする。トピック”Sales Div”のメッセージは、トピック”Sales Div”を欲する受信者にも送信されるべきである。JMSのように階層的なトピック構造を有しない場合、営業1課の所属メンバは”Sales Div”と”1st sec”の両トピックに受信者を登録する必要がある。
また、複数の受信者に渡るメッセージをJMSでは実現することができないため、あるメッセージを受信したノードがさらに他のノードにメッセージを転送することが困難である。例えば、あるサービス提供ノードと認証ノードとが存在する場合に、認証ノードが認証したメッセージのみを、サービス提供ノードのみにに流す必要がある。しかし、サービス提供ノードが設定したトピックを使ってメッセージを流すと、認証ノードの有無にかかわらずサービス提供ノードにメッセージが流れてしまい、認証不可のメッセージのサービスも利用が可能となってしまうことになる。このように、認証サーバのような、例えば、ある処理の前に認証処理を行うフロント処理サービスを追加することが困難となる。
「エックスラング:ウェブサービシズフォービジネスプロセスデザイン(XLANG:Web Services for Business Process Design)」で定義されているXLANGでは、ウェブサービスで利用されるシンプルオブジェクトアクセスプロトコル(Simple Object−Access Protocol:SOAP)のヘッダにルーティング情報を導入することで、サービス間の連携を可能としている。サービス提供者はSOAPメッセージのペイロードをみてサービスを提供する。また、ヘッダをみて、メッセージの次の転送先を決定する。XLANGでは、転送先一つ一つをヘッダに明示する。そのために、サービス連携ノードが多数存在する場合、ヘッダのサイズが大きくなってしまい効率的ではない。
メッセージ指向ミドルウェアで構築されたシステムやクライアント−サーバシステムでは、サービス提供者がインタネット中に存在する場合、不特定のサービス利用者からアクセスされる。そのため、悪意を持つサービス利用者が一度に多数回、サービス提供者にアクセスすることで、他のサービス利用者がサービスを利用することを妨害するサービス拒否攻撃が知られている。
イングレスフィルタリング技術は、サービス利用者が限定される場合、そのサービス利用者以外の送信者アドレスを有するパケットを、サービス提供者に届く前に、物理的・論理的にフィルタリングすることで、サービス拒否攻撃を防止するようになっている。しかしながら、サービス利用者が特定できない場合、イングレスフィルタリングを利用することはできない。
特開2001−273209号公報に開示の発明では、サービス提供者の接続要求数に制限を設けて、それを越す接続要求は拒否をする。この場合、悪意のあるサービス利用者が制限数を超える要求をしている場合、正規のサービス利用者がサービスを利用することは困難である。
特開2002−158699号公報に開示の発明では、送信元で安全性を保障する印をメッセージに添付し、サービス提供側は安全性に応じて優先度を付けて、サービスを提供するものであり、この発明では、送信元に安全性を保障する印を付ける機構が備わっていることが必要である。これは、サービス利用者が特定のISP(Internet Service Provider)を通じてアクセスする場合には、実現できるが、一般的にインターネット利用者は必ずしも安全性を示す印を付ける機構を有するISPを通してアクセスするとは限らず、実現が困難である。
分散サービス拒否攻撃とは、悪意を有するノードが直接サービス提供者を攻撃するのではなく、他の悪意のないノードを利用して、サービス提供者を攻撃することをいう。悪意を有するノードに利用されるノードを踏み台ノードと呼ぶ。特開2002−158660号公報に開示の発明では、踏み台ノードにそれぞれ攻撃遮断機能を設置するものであり、攻撃検出機能が分散サービス拒否攻撃を検出すると、攻撃遮断機能に命じて、踏み台ノードからサービス提供者へのアクセスを拒絶する。しかし、踏み台ノードにされるノードを予め特定することは困難であるので、攻撃遮断機能を設置することは現実的でない。
よって、従来の技術には次のような問題点がある。第1の問題点は、インターネットのように、サービスや情報を提供するサービス提供者であるノードが多数存在するシステムにおいて、効率的にノードが協調するメッセージ指向ミドルウェアがないことである。例えば、既存のサービス提供ノードに手を加える必要なく、認証サービス提供ノードを設け、サービス提供ノードへのアクセスを制限する方法を実現することは困難である。
その理由は、従来のメッセージ指向ミドルウェアでは、該当する受信対象者にメッセージを同時に配信していたためである。そのため、認証サーバで認証が成功したら、サービス提供ノードでサービスを提供するように順序がある処理を実現することができなかった。
第2の問題点は、メッセージが有するトピックに対して、それを包含するトピックに興味があるノードに対してメッセージ送信をすることが困難であることである。トピック”Sales Div”を有するメッセージは、”Sales Div”をトピックとして登録したノードに送信するだけではなく、”Sales Div”に包含されるトピック”1st sec”で登録したノードにも送信すべきである。
このようなことが困難である理由は、トピックが包含関係を有しないことである。そのため、”Sales Div”が”1st sec”を包含するトピックであることを指定できない。
第3の問題点は、インターネットなど開かれたネットワークでは、サービス提供者がサービス拒否攻撃をうける可能性がある。その理由は、サービス提供者であるノードは、インターネットに接続されている可能性があり、その場合、あらゆるノードからもアクセス可能であるためである。そのため、悪意を有するノードがサービス提供者に対して過大な負荷をかけて、正常なサービス提供を困難にさせる。
第4の問題点は、インターネットなど開かれたネットワークでは、サービス提供者が分散サービス拒否攻撃を受ける可能性がある。その理由は、サービス利用者であるノードは、あらゆるノードからもアクセス可能であるためである。そのため、悪意を有するノードがサービス利用者を使い、サービス提供者に対して過大な負荷をかけて、正常なサービス提供を困難にさせる。
本発明の第1の目的は、メッセージ配送手順を処理可能なメッセージ指向ミドルウェアを有するメッセージ配信装置及びその方法並びにシステム及びプログラムを提供することである。
本発明の第2の目的は、包含関係を有するトピックによる配信先の指定が可能なメッセージ指向ミドルウェアを有するメッセージ配信装置及びその方法並びにシステム及びプログラムを提供することである。
本発明の第3の目的は、インターネット環境など開かれたネットワーク環境においても、サービス提供者に対するサービス拒否攻撃を防止することが可能なメッセージ配信装置及びその方法並びにシステム及びプログラムを提供することである。
本発明の第4の目的は、インターネット環境など開かれたネットワーク環境においても、サービス提供者に対する分散サービス拒否攻撃を防止するが可能なメッセージ配信装置及びその方法並びにシステム及びプログラムを提供することである。
このような目的を達成するために、本発明によるメッセージ配信装置は、メッセージをネットワークに接続されたノードへ配信するメッセージ配信装置であって、メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースと、メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にデータベースのツリーデータ構造をアクセスして、受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索する検索手段と、検索された全てのノード情報に対応する配信先へメッセージを転送する転送手段とを備えることを特徴とする。ここで、データベースには、ノード情報と、メッセージ配信先を決定するための方針を定めたポリシ情報との対がツリーデータ構造として格納され、検索手段は、ノード情報とポリシ情報との対を検索し、転送手段は、検索された情報に従ってメッセージを転送するようにしてもよい。
また、本発明によるメッセージ配信方法は、メッセージをネットワークに接続されたノードへ配信するメッセージ配信方法であって、メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースを、メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にアクセスして、受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索するステップと、検索された全てのノード情報に対応する配信先へメッセージを転送するステップとを備えることを特徴とする。
また、本発明によるメッセージ配信システムは、ネットワークに接続されかつメッセージを送信及び受信する複数のノードと、ネットワークに接続されかつノードから送信されたメッセージを別のノードに配信するメッセージ配信装置とを備え、メッセージ配信装置は、メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースと、メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にデータベースのツリーデータ構造をアクセスして、受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索する検索手段と、検索された全てのノード情報に対応する配信先へメッセージを転送する転送手段とを備えることを特徴とする。ここで、これらのノード、メッセージ配信装置、ノード管理装置の各々とネットワークとの間にファイヤウォールを設けてもよい。
また、本発明によるプログラムは、メッセージをネットワークに接続されたノードへ配信するメッセージ配信方法をコンピュータに実現させるためのプログラムであって、メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースを、メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にアクセスして、受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索するステップと、検索された全てのノード情報に対応する配信先へメッセージを転送するステップとを実現させるためのプログラムである。
図1は、本発明の第1の実施例の構成を示すブロック図である。
図2は、本発明の第1の実施例の動作を示すフローチャートである。
図3は、本発明の第1の実施例の送信メッセージに関する動作を示すフローチャートである。
図4は、本発明の第1の実施例の送信メッセージの例を示す図である。
図5は、本発明の第1の実施例のエラーメッセージの例を示す図である。
図6は、本発明の第1の実施例のノード離脱要求メッセージの例を示す図である。
図7は、本発明の第1の実施例のノード離脱要求メッセージに関する動作を示すフローチャートである。
図8は、本発明の第1の実施例のエラーメッセージに関する動作を示すフローチャートである。
図9は、本発明の第1の実施例のノード登録要求メッセージに関する動作を示すフローチャートである。
図10は、本発明の第1の実施例のノード登録要求メッセージの例を示す図である。
図11は、本発明の第2の実施例の構成を示すブロック図である。
図12は、本発明の第2の実施例のポリシエンジンの構成を示すブロック図である。
図13は、本発明の第2の実施例のポリシエンジンの動作を示すフローチャートである。
図14は、本発明の第2の実施例のノード登録要求メッセージに関する動作を示すフローチャートである。
図15は、本発明の第2の実施例のノード登録要求メッセージの例を示す図である。
図16は、本発明の第2の実施例の送信メッセージに関する動作を示すフローチャートである。
図17は、本発明の第2の実施例の具体例を示すブロック図である。
図18は、本発明の第3の実施例の具体例を示すブロック図である。
図19は、本発明の第3の実施例のノード登録要求メッセージに関する動作を示すフローチャートの一部である。
図20は、本発明の第3の実施例のノード登録要求メッセージに関する動作を示すフローチャートの一部である。
図21は、従来技術を説明するためのブロック図である。
以下に図面を参照しつつ本発明の実施例について詳細に説明する。
第1の実施例
図1を参照すると、本発明の第1の実施例のブロック図が示されている。図1において、ネットワーク100を介して、メッセージルータ(メッセージ配信装置)200、ノードマネージャ(ノード管理装置)400、メッセージを送受信するための複数のノード500〜502等が接続されている。ノード間はメッセージルータ200を介して、お互いメッセージを送受信し合うものとする。ノード500〜502等は、処理部510〜512が、詳細は後述する図4で示すようなメッセージを作成し、メッセージ送信部530〜532を使って、他のノードへのメッセージを送信する。尚、他のノードからのメッセージ受信はメッセージ受信部520〜522により行う。
このメッセージはHTTP(Hyper Text Transfer Protocol)メッセージやSIP(Session Initial Protocol)などのアプリケーションプロトコルであり、ヘッダ部分とペイロードに分かれる。ヘッダ部分は、HTTPで規定されたヘッダ以外に、本実施例の特有のヘッダ(たとえば、message:send)を有する。
ネットワーク100に接続されたメッセージルータ200のメッセージ受信部210がメッセージを受信する。メッセージ受信部210は受信したメッセージをスプリッタ220に渡す。スプリッタ(分離手段)220はメッセージをヘッダ部分とペイロード部分に分割し、メッセージ部分をヘッダ解釈部230に、ペイロード部分を合成部260に、それぞれ渡す。ヘッダ解釈部(解釈手段)230はメッセージのヘッダ部分のうち、0個以上の受信者群を示す属性(例えば,receivers属性)の値を使って、DB読出部(検索手段)240を介して、データベース300が格納するドメインツリー310から適切なノード情報を取り出す。
ここで、ノード情報とは、ノード500等のURL(Uniform Rsource Locator)などの位置情報である。ドメインツリーとはノード情報や、ドメインと呼ぶノード情報の集合を節とするツリー構造である。節には名前がつけられており、ツリーのルートから「/」を区切り子として節の名前を連ねることで、ノード情報、もしくはドメインを一意に指定することができる。この名前をドメインパスと呼ぶ。receivers属性の値はドメインパスである。上記「適切なノード情報」とは、receivers属性値のドメインパスで指定したノード情報、もしくはドメインパスで指定したドメインを頂点とするサブツリーに含まれるノード情報の全てである。
ヘッダ解釈部230はそのノード情報の集合と、ヘッダ部分をヘッダ書換部250に渡す。ヘッダ書換部(書換手段)250は、メッセージからreceivers属性及びその値を取り除き、その代わりに、メッセージルータの位置情報を示す属性(例えば、routerUrl属性)とその値としてメッセージルータのURLなどの位置情報を付け加え、合成部260に送る。合成部(合成手段)260はヘッダ書換部250からのヘッダの後ろに、スプリッタ220から受けたペイロードをつけ足して、新しいメッセージとする。合成部260は、メッセージとヘッダ書換部250から受けたノードを表すURLなどの位置情報を、メッセージ転送部270に送る。メッセージ転送部(転送手段)270は合成部260から受けたURLなどの位置情報で指定されたノードにメッセージを送信する。メッセージ転送部270から送信されたメッセージは、例えば、ノード501のメッセージ受信部521に到着し、処理部511に渡されて処理がなされる。
ノード500等のノードに関するノード情報は、予めデータベース300に登録しておく必要がある。ノードマネージャ400はノードの登録要求を受理する。つまり、ノードの登録要求メッセージを登録要求受付部420が受信し、メッセージ解釈部410に伝える。メッセージ解釈部410は、メッセージルータ表440に登録されているメッセージルータのURLなどの位置情報を得る。メッセージ解釈部410は、メッセージ送信部(転送手段)430を介して、メッセージルータ200に当該メッセージを送信する。
応答受信部450は、メッセージルータ200に出した登録要求の結果を受ける。応答部460は、応答受信部450から応答結果を示すメッセージを受け、それを登録要求者に応答メッセージとして送信する。
図2は、本発明の第1の実施例の動作のうち、メッセージ送信を示すフローチャートである。まず、ノード500の処理部510がメッセージ送信部530に依頼し、ネットワーク100にメッセージルータ200宛てメッセージを投げる(ステップD10)。
メッセージルータ200のメッセージ受信部210がそのメッセージを受信する(ステップD20)。スプリッタ220がメッセージをヘッダとペイロードに分割し、ヘッダをヘッダ解釈部230に、ペイロードを合成部260に、それぞれ渡す(ステップD30)。
ヘッダ解釈部230はヘッダを解釈し、メッセージの種類を表す属性(例えば、message属性)の値を得る(ステップD40)。message属性の値は、メッセージ送信メッセージ(例えば、message属性の値が「send」)か、ノードの離脱要求メッセージ(例えば、「leave」)か、エラーメッセージ(例えば、「error」)である。その値により、処理が分岐される(ステップD50)。
図3は、本発明の第1の実施例の動作のうち、message属性の値がメッセージ送信メッセージであることを示す値、つまり「send」の場合の処理を示す。ヘッダ解釈部230はヘッダを解釈し、ヘッダの受信者を表す属性(例えば、receivers属性)の値に応じて、DB読出部240に適切なノード情報の取得を依頼する。DB読出部240はその結果であるノード情報の集合をヘッダ解釈部230に返す(ステップB40)。その集合が空になるまで、次の処理を繰り返す(ステップB60)。
ヘッダ解釈部230はヘッダ情報の集合の要素の1つをヘッダ書換部250に渡す(ステップB70)。ヘッダ書換部250はヘッダを書き換える。つまり、ヘッダからreceivers属性を削除し、現在使用しているメッセージルータ200のURLなどの位置情報を示す属性(例えば,routerUrl属性)を追加する。routerUrl属性の値は、現在使用しているメッセージルータ200のURLなどの位置情報である。書き換えたヘッダを合成部260に渡す(ステップB80)。
合成部260はヘッダ書換部250から受けたヘッダとスプリッタ220からのペイロードとを合成し、メッセージ転送部270に渡す(ステップB90)。メッセージ転送部270はノード情報で示されているノードに対してメッセージを送信する(ステップB100)。ノード情報から、今回、受信者となったノード情報をノード情報の集合から削除し、ステップB60に戻り、ノード情報の集合が空になるまで、ステップB70〜B100の処理を繰り返す。ノード情報の集合が空のとき、処理は終了する。
図7は本発明の第1の実施例の動作のうち、図2のフローチャートの後続として、message属性の値がノードの離脱要求を示す値、つまり「leave」の場合の処理を示す。ヘッダ解釈部230はヘッダを解釈し、DB書込部290にヘッダの送信ノードを示す属性(例えば、sender属性)の値が指定するノードの削除を依頼する(ステップE40)。DB書込部290はデータベース300から指定したノード情報を削除する(ステップE50)。
図8は、本発明の第1の実施例の動作のうち、図2のフローチャートの後続として、message属性の値がエラーメッセージを示す値、つまり「error」の場合の処理を示す。メッセージの受信者であるノードやメッセージルータがmessage属性の値が「send」である受信メッセージに関する処理でエラーが発生した場合に、errorメッセージを発する。たとえば、受信者ノード500でエラーを発生した場合、処理部510でエラーメッセージを作成する。
message属性は「error」で、sender属性の値は、エラーが発生した元のメッセージの送信者を示すドメインパスで、メッセージ識別子を値にもつ属性(例えば,messageid属性)の値は元のメッセージのmessageid属性の値と同一の値で、receivers属性はエラーを発見したノード(つまり、受信者ノード500)のドメインパスである。元のメッセージのrouterUrl属性の値であるメッセージルータのURLなどの位置情報に、作成したエラーメッセージを送信する。
ヘッダ解釈部230はヘッダを解釈し、ヘッダの送信ノードを示す属性(例えば、sender属性)の値に応じてDB読出部240に適切なノード情報の取得を依頼する。DB読出部240はその結果をヘッダ解釈部240に返す(ステップF40)。ヘッダ解釈部230は応答部280にノード情報からURLなどの位置情報を取得し、エラーメッセージをURLなどの位置情報で指定されたノードに送信する(ステップF50)。
図9は、本発明の第1の実施例の動作のうち、ノード情報をデータベース300に登録する動作を示す。ノード500の追加依頼メッセージが、ネットワーク100を介して、ノードマネージャ400宛てに、図10を例とするようなメッセージとして送出される(ステップA10)。ノードマネージャ400の要求受信部420がメッセージを受信し、メッセージ解釈部410に伝える。
メッセージ解釈部410がメッセージを解釈する(ステップA20)。解釈する過程でメッセージにエラーがあるかを判定する(ステップA30)。メッセージにエラーが発見されたら、メッセージ解釈部410は応答部460に依頼し、ノード500の追加依頼者にエラーメッセージを返す(ステップA35)。
エラーがなければ、メッセージ解釈部410はメッセージルータ表440を参照し、sender属性値に対応するメッセージルータのURLなどの位置情報を得る(ステップA40)。この第1の実施例では、メッセージルータ表440に登録されているメッセージルータは1つと仮定しているため、常に同じURLなどの位置情報が返される。メッセージ解釈部410はメッセージルータにノード500の登録要求メッセージを転送する(ステップA50)。メッセージルータ200のメッセージ受信部210がメッセージを受信し、スプリッタ220に投げる(ステップA60)。
スプリッタ220はメッセージをヘッダとペイロードに分離し、ヘッダをヘッダ解釈部230に、ペイロードを合成部260に、それぞれ渡す(ステップA70)。ヘッダ解釈部230はヘッダの中身を解釈し、DB書込部(登録手段)290を使用し、送信ノードの位置情報を示す属性(例えば、senderURL属性)でURLなどの位置情報をノード情報として、ドメインツリー310中のsender属性で指定したドメインに追加する(ステップA80)。ヘッダ解釈部230は応答部280を介して、メッセージルータ200のURLなどの位置情報を含む追加成功メッセージを応答受信部450に送信する(ステップA90)。
応答受信部450は応答部460に依頼し、追加成功メッセージをノード500に転送する(ステップA100)。このメッセージにはメッセージルータ200のURLなどの位置情報を含む。以降、ノード500はこのURLなどの位置情報が指すメッセージルータにmessage属性値が「send」のメッセージを送信する。
次に、具体的な実施例を用いて本実施例の動作を説明する。先ず、メッセージルータ200のURLを“http://distributor.company.com/servlet/distributor”とし、ノードマネージャ400のURLを“http://nodemanager.company.com/servlet/distributor”とする。また、ノード500のURLを“http://node500.portia.com/app”とする。
先ず、ノード500をメッセージルータ200にドメインパス/nodes/senders/node500として登録すると考える。このとき、ノード登録要求者は図10で示すようなメッセージをノードマネージャ400に発行する。図10(図4〜図6においても同様)の1行目から4行目がHTTPヘッダ、5行目から9行目が本実施例で定義した属性である。10行目(空行)がヘッダとペイロードのセパレータで、11行目以降がペイロードである。なお、本実施例では、HTTPヘッダと属性を、ヘッダと称するものとする。
message属性はメッセージの種類を表し、その値として「join」、「leave」、「send」、「error」が定義されている。「join」はノードの登録要求メッセージ(図10)、「leave」は登録済みノードを登録から取り除く作業(離脱)要求メッセージ(図6)、「send」はデータ通信用メッセージ(図4)、「error」は「send」メッセージでエラーが発生した場合のエラー通知用メッセージ(図5)となる。
登録要求メッセージは、ノード登録要求者がノードマネージャ400に対して要求メッセージを発行する。「leave」メッセージは、離脱対象ノード500がメッセージルータ200に対して「leave」メッセージを発行する。「send」メッセージ、「leave」メッセージは、登録済みノードがメッセージルータ200に対してメッセージを発する。
登録要求メッセージでは、sender属性は、登録対象ノードの登録先をドメインパスで指定する。messageidは、登録要求者が、その責任で、グローバルにメッセージを一意に保障できるようにつけた識別子である。senderUrl属性はノード500のメッセージ受信部520を指定するURLである。ノード500つまり、/nodes/senders/node500へのメッセージは、このURLに送信される。送信モードを表す属性(例えば、mode属性)は、ノード500へのメッセージ送信モードを指定する。
受信ノードがサーバソケットを開設している場合のmode属性値(例えば、「active」)の場合、ノード500のメッセージ受信部520はサーバとしてサーバソケットを開いてメッセージを待っている。受信ノードがサーバソケットを開設できない場合のmode属性値(例えば、「passive」)の場合、メッセージ受信部520は定期的にメッセージルータ200にポーリングし、ノード500宛てのメッセージが届いていないかを調べる。「passive」は、ファイヤウォール内にいるときや、グローバルIPアドレスを有しないため、ノード500がサーバソケットを開設できない場合に使用する。
この登録要求メッセージは要求受付部420で受信され、メッセージ解釈手410に伝えられる。メッセージルータ表440からメッセージルータのURL“http://distributor.company.com/servlet/distributor”を得る。本実施例では、メッセージルータ表440に登録されているメッセージルータは、ルータ200の1つだけであるとする。メッセージ送信部430は、URL“http://distributor.company.com/servlet/distributor”、つまり、メッセージルータ200に、登録要求メッセージを送信する。メッセージルータ200のメッセージ受信部210が本メッセージを受理し、スプリッタ220がメッセージのヘッダ部分である図10の1行目から9行目を切り出して、ヘッダ解釈部230に渡す。
ヘッダ解釈部230は、DB書込部290を使用し、ドメインツリーのドメイン/nodes/sendersの要素としてノード500のノード情報“http://node500.portia.com/app”をデータベース300に登録する。ヘッダ解釈部230は応答部280を使って、応答受信部450に成功応答を返し、応答受信部450は応答部460を介して、登録要求メッセージ送信者に応答を返す。
次に、ノード501、ノード502に対し、ノード500がメッセージを送信する具体的な実施例を示す。ノード501はドメイン/company/salesDiv/node501に登録され、そのURLは“http://node501.portia.com/app”とする。ノード502はドメイン/company/salesDiv/1stSec/node502に登録され、そのURLは“http://node502.portia.com/app”とする。
ノード500の処理部510は、図4で示すメッセージを送信する。receivers属性の値は、受信者(メッセージ配信先)の集合を表すドメインパスである。receivers属性値が/company/salesDivなので、ドメイン/company/salesDivをルート(root:根)とするサブツリーに含まれるノード501,502が送信対象となる。このメッセージはメッセージ送信部530より送信され、メッセージ受信部210で受信される。
スプリッタ220は、図4で示すメッセージのヘッダ(1行から8行)をヘッダ解釈部230に渡す。ヘッダ解釈部230はreceivers属性の値/nodes/recieversを取り出し、DB読込部240にドメイン/nodes/recieversをルートするサブツリーのすべてのノードを返すよう依頼する。ヘッダ解釈部230には、ノード情報として、“http://node501.portia.com/app”と“http://node502.portia.com/app”を得る。ヘッダ書換部250は、それぞれのURLに対して、まず、routerUrl属性として、属性値“http://distributor.company.com/servlet/distributor”を加え、receivers属性をそれぞれ/company/salesDiv/node501,/company/salesDiv/1stSec/node502となるようヘッダを変換する。
ヘッダ書換部250は変換したヘッダを合成部260に渡し、合成部260はヘッダにペイロード(図4の10行目以降)を取り付けて、メッセージ転送部270にノード501及び502に、それぞれのメッセージを送信するよう依頼する。
以上の説明からも分かる様に、データベース300のドメインツリー310の例としては、会社組織であれば、部、課、係、班等の組織を、大組織から小組織へと順次枝が分かれて伸びるように、また予め互いに関連するようにツリー構造として組み立てたものであり、上記例の様に、受信者(メッセージ配信先)の集合を表すドメインパスであるreceivers属性値により当該会社組織(company)の営業部(salesDiv)が指定されると、この会社組織(company)の営業部(salesDiv)をルート(根)とするサブツリーに含まれる全てのノード(受信者群)が送信対象となるのである。
次に、このメッセージがノード502においてエラーが発生した場合の例を示す。ノード502の処理部512が、たとえば、メッセージ受信部522で受信に失敗したことを検出したとする。そのとき、処理部512は図5で示すメッセージを作成する。この場合、message属性は「error」であり、sender属性は元のメッセージの送信者であるノード500のドメインパス/node/senders/node500であり、receivers属性の値はノード502のドメインパス/company/salesDiv/1stSec/node502であり、messageid属性の値は元のメッセージと同じmessageidである。
処理部512はメッセージ送信部532を使って、元メッセージのrouterUrl属性で示されたメッセージルータ200にメッセージを送信する。メッセージ受信部210で受信されたメッセージはスプリッタ220を通り、ヘッダ受信部230がsender属性のドメインパスで指定されたノード500のノード情報URL“http://node500portia.com/app”を得る。ヘッダ書換部250を通し、このヘッダ及びURLは合成部260に伝えられ、ペイロードと合成されて、メッセージ転送部270を介してノード500に送信される。
次に、ノード500がleaveメッセージを発信する具体例を示す。ノード500の処理部510は、図6で示すleaveメッセージを作成する。このメッセージのsender属性はノード500のドメインパス/node/senders/node500である。メッセージ送信部530を使って、メッセージルータ200にメッセージが送信される。メッセージルータ200では、メッセージ受信部210が受信したメッセージをスプリッタ220がヘッダを切り出し、ヘッダ解釈部230に渡す。ヘッダ解釈部230はsender属性の値/node/senders/node500を取り出し、DB書込部290を使って、/node/senders/node500のノード情報を削除する。ここでは、leaveメッセージがノード500から直接メッセージルータ200に送信される例を示したが、ノード500からノードマネージャ400を経由してメッセージルータ200に送信されるようにしてもよい。
本実施例では、データベースには、ツリーデータ構造でノード情報を格納する。ツリーのノードを指定するドメインパスにより、サブツリーに含まれるノードすべてを指定することが可能になる。よって、指定したトピック間の包含関係を反映したノードを指定することが可能となる。
第2の実施例
次に、本発明の第2の実施例について説明する。図11は本発明の第2の実施例を表すブロック図である。メッセージルータ600は図1のメッセージルータ200のヘッダ書換部250の代わりにポリシエンジン610を搭載している。ポリシエンジン(照合手段)610は、送信対象候補のノードの位置情報(例えば、URL)とそれに添付されたポリシ(方針)のペアの集合と、ヘッダを入力とし、送信対象の位置情報とヘッダのペアを出力とする。ポリシエンジン610は、送信対象候補ノードのポリシがヘッダにマッチするか検査し、マッチするならば、新たなヘッダを作成し、それが他のポリシにマッチするかを判断する。
ポリシエンジンの構造を図12に示す。ノード情報であるノードの位置情報(例えば、URL)と、そのノードを登録するときに設定するポリシの組が複数あるとする(680)。順序付け部650はこれらのノード情報の集合を一定規則で取り出し、FIFOキュー640に順番に入れていく。ここで、一定規則とは、例えば、乱数により無作為に取り出す方式でも良く、これに限定されない。FIFOキュー640はノード情報を格納する行列で、行列に入力した順番で、ノード情報を取り出すことができる。
バッファ670はメッセージ送信メッセージのヘッダ691を高々1個格納することができる。よって、バッファ670からヘッダを取り出すと、格納ヘッダ数は0個となる。ポリシは照合部と書き換え部から構成される記述である。照合部はメッセージのヘッダのパターンを記述し、ヘッダが照合部に照合可能か否かが判別可能である。書き換え部は照合部の照合状況を考慮した上で、ヘッダの内容を書き換える。
例えば、照合部はヘッダ属性値を正規表現で記述し、ヘッダが有する属性値が正規表現に照合するかで、照合可能かを判別し、書き換え部は照合した属性値を指定したある特定の文字列に置き換えるというポリシが考えられる。
更に述べると、ポリシとは、ノードが受信すべきメッセージを定めた方針を意味するものであり、換言すれば、ノードが受信すべきメッセージの性質を示すものである。例えば、ノード501がポリシ“sender=/nodes/senders/|*”として「join」メッセージにより登録されていたとする。この場合、ノード501はsender属性を有し、その値が”/nodes/senders/”で始まるあるメッセージ、例えば、図4で示す送信メッセージを受信する。ポリシは、メッセージ配信先の決定に用いられる。
更に、複数のノードが受信するメッセージパターンを記述するために、当該ポリシは照合部に加えて、書き換え部をも有している。この書き換え部は、ノードが受信可能な場合に、すなわち、そのノードのポリシに照合(合致)した場合に、他のノードが受信条件に合致することを記述するものである。
ポリシ照合検査部630はノード情報とヘッダを順次入力とし、ノード情報のポリシの照合部がノードに照合可能かを判定し、照合不可能ならば停止し、照合可能ならば、ノード情報、つまり、位置情報とヘッダの組と、照合情報とヘッダの組を出力する。ヘッダ書換部250は、図1の書換部250と同様であり、ヘッダと位置情報の組を入力とする。ヘッダの受信者を示す属性(例えば,receivers属性)の値をノード情報が格納されているドメインパスとし、メッセージルータの位置情報を示す属性(例えば、routerUrl属性)の値としてメッセージルータ600の位置情報を設定し、この位置情報とヘッダとを組690で出力する。
書換部660はポリシ照合検査部630が行なった照合作業の情報と、ポリシと、ヘッダとを入力として、ポリシの書き換え部の内容を調べ、ヘッダを書き換えて出力する。
ポリシエンジン610の動作を図13を用いて説明する。バッファ670がヘッダ691を外部から1つ取り込む(ステップP10)。ノードのURLとポリシの組であるノード情報の集合680を順序付け部650がある一定の規則に従い、順番付けし、FIFOキュー640に格納する(ステップP20)。ここで、一定規則とは、例えば、上述したように、ランダムに順番付けする方法を使用しても良い。
ポリシ照合検査部630がFIFOキュー640からURLとポリシを、またバッファ670からヘッダを取り出す(ステップP50)。このとき、ノード情報がFIFOキュー640に存在していなければ、処理を停止する(ステップP30)。また、バッファ670にヘッダが存在しなければ、処理を停止する(ステップP40)。
ポリシ照合検査部630はポリシの照合部が、ヘッダと照合可能か検査する(ステップP60)。照合不可ならば、ヘッダをバッファ670に戻し、ステップP50から再開する(ステップP80,P85)。
ポリシ照合検査部630からURLとヘッダを渡され、書換部250がヘッダの受信ノードを示す属性(例えば,receivers属性)をノード情報が格納されているドメインのドメインパスに書き換え、メッセージルータの位置情報を示す属性(routerUrl属性)をその値をメッセージルータの位置情報として追加し、位置情報とヘッダの組690を出力する(ステップP90)。次に、ポリシに書き換え部があるかをチェックする。もしなければ、ポリシエンジンの動作を終了する(ステップP100)。
ポリシ照合検査部630から、照合情報とポリシとヘッダの組を受け取り、書換部660がポリシの書き換え部に従い、ヘッダを書き換えてバッファ670に置く(ステップP110)。ステップP110の後、ステップP50に戻り、処理を繰り返す。
このようなポリシエンジンを使った本発明の第2の実施例において、ノード登録要求メッセージに対する動作を図14を使って説明する。図15が本発明の第2の実施例におけるノード登録要求メッセージである。図10で示した本発明の第1の実施例でのノード登録要求メッセージとの違いは、ポリシを示す属性(例えば、policy属性)が存在することである。
図9で示した本発明の第1の実施例でのノード登録要求メッセージの動作との違いは、ステップAP80において、ヘッダ解釈部230が送信ノードの位置情報を示す属性(例えば、senderUrl属性)の値だけではなく、ポリシ320を示す属性の値も加えて組とし、データベース300が格納するドメインツリーに登録していることである。図14におけるステップAP80以外の他のステップAP10,AP20などは、図9の各ステップA10,A20などと同じである。
次に、図16を用いて、本発明の第2の実施例において、メッセージ送信方法の動作を説明する。第2の実施例においても、図2で示すフローチャートと同様の動作を行なう。そこで、図2の継続の処理として図16のフローチャートで示す動作を説明する。
ヘッダ解釈部230はヘッダを解釈し、ヘッダの受信者を示す属性(例えば、receivers属性)の値に応じてDB読出部240に適切なノード情報の取得を依頼する。DB読出部240はその結果であるノード情報の集合をヘッダ解釈部230に返す(ステップC60)。ヘッダ解釈部230はノード情報の集合とヘッダをポリシエンジン610に渡す(ステップC70)。ポリシエンジン610はURLとヘッダの組を出力する(ステップC80)。ポリシエンジン610が位置情報とヘッダの組を出力することを停止したら、処理が終了である(ステップC85)。
ポリシエンジン610はヘッダを合成部260に渡す(ステップC90)。合成部260はヘッダ書換部250から受けたヘッダとスプリッタ220からのペイロードを合成し、メッセージ転送部270に渡す(ステップC95)。メッセージ転送部270はノード情報で示されているノードに対してメッセージを送信する(ステップC100)。ステップC100からステップC70に処理を繰り返す。
次に、具体的な例を用いて、本実施例の動作を説明する。ノード501がポリシ“sender=/nodes/senders/|*”で、ノード502が、図15に示す様に、ポリシ“sender=/nodes/receivers/|*”で登録されていたとする。ノード500が「send」メッセージを送信すると、図4で示すメッセージが送信される。これには、sender属性の値は“/nodes/senders/node500”である。メッセージのreceivers属性からノード501に関するノード情報と、ノード502に関するノード情報の集合が得られる。
ポリシエンジン610の順序付け部650はランダムにノード502のノード情報、ノード501のノード情報という順番で、FIFOキュー640に入れるとする。ポリシ照合検査部630は、まず、ノード502のURL”http://node502.portia.com/app”とポリシ”sender=/nodes/receivers/|*”を得る。照合部はsender属性の値が正規表現で”/nodes/receivers/”なので、ヘッダのsender属性値とは照合しない。
そこで、次にノード501のURL”http://node50 1.portia.com/app”とポリシ”sender=/nodes/senders/|*”を得る。これはヘッダのsender属性値と照合する。そこで、書換部250はreceivers属性の値をノード501のURL”http://node50 1.portia.com/app”に書き換え、routerUrl属性をメッセージルータ600のURL”http://distributor.company.com/servlet/distributor”とし、ヘッダを合成部260に渡す。合成部260はヘッダとペイロードを合わせて、メッセージ転送部270からノード510へ送信する。
同時に、ポリシ照合部630は、書換部660にポリシとヘッダを渡す。ポリシの書き換え部は、”|”より後部の”*”で、これはヘッダをすべてコピーしてそのまま出力することを意味するので、バッファ670にヘッダをそのまま置く。ポリシ照合部630は次のノード情報をFIFOキュー640より取得しようとするが、すでに空なので、処理を停止する。
次に、図17で示す他の具体例を用いて、本実施例の動作を説明する。サービス利用ノード505とサービス提供ノード507に加えて認証サーバ506が存在するシステムを考える。サービス提供ノード507はドメインパス/serviceProviderにポリシ”PoS−Auth=true|”で登録されているものとする。このポリシは、照合部のPoS−Auth属性の値が”true”の場合、メッセージを受け付ける。”|”の右側が空なので、書き換え部は存在しない。
一方、認証サーバ506は、メインパス/authorizationにポリシ”!PoS−Auth|”で登録されているものとする。このポリシは、照合部にPoS−Auth属性が存在しない場合、メッセージを受け付ける。”|”の右側が空なので、書き換え部は存在しない。
サービス利用ノード505はその送信メッセージにユーザ名とパスワードを、認証方法BasicでAuthorization属性の値としているとする。サービス提供ノード507の送信メッセージには属性PoS−Authが存在しない。そのため、認証サーバ506のポリシの照合部“!Pos−Auth”に合致し、認証サーバ506にメッセージが転送される。認証サーバ506はAuthorization属性値に含まれるユーザ名とパスワードを取り出し、認証を行う。認証に成功したら、ヘッダに”PoS−Auth:true”を、失敗したら”PoS−Auth:false”を加えて、メッセージルータ600に転送する。転送されたメッセージは、認証に成功していれば、PoS−Auth属性の値が”true”なので、サービス提供ノード507のポリシに合致し、サービス利用ノード505に転送され、サービスが提供される。
本実施例では、ポリシエンジン610を用いることで、ドメインパスのみで指定していた受信者を限定することが可能になる。これにより、メッセージヘッダ内の属性値により配信先を決定することが可能になり、属性値を変えることで、メッセージの状態を表すことになり、配信先を変更できる。つまり、メッセージの状態に応じてまず、最初に配送すべきノードが定まり、メッセージの状態変化で、順次配送先が定まり、ノード間連携が可能となる。
第3の実施例
次に、図面を使って、本発明の第3の実施例について説明する。図18は本発明の第3の実施例を表すブロック図である。図11に示した第2の実施例との差異は、メッセージルータ600とネットワーク100の間に、ファイヤウォール700を置き、ノード500〜502の各々とネットワーク100との間に、ファイヤウォール701〜703を夫々置いたことである。他の構成は図11のそれと同一である。また図1に示した第1の実施例にも同様に適用される。
ファイヤウォール700にはノードマネージャ400からどのIPアドレスからのアクセスを許すかを設定可能である。一方、ファイヤウォール701はノード500から設定可能である。ファイヤウォール702,703も同様である。なお、ノードマネージャ400に認証表470を設けている。認証表470はメッセージ解釈部410からのユーザ名やパスワードが正しいかを検査する。認証方法としては、HTTPで定義されたAuthorization属性によるBasic認証方法等がある。
図19及び図20は本発明の第3の実施例の動作を示すフローチャートである。図14のフローチャートに対して、ノード登録要求メッセージを受信したメッセージ解釈部410が認証表に認証情報が正しいか確認する点(ステップAS35,AS37)、メッセージ解釈部410がファイヤウォール700に送信ノードの位置情報を示す属性(例えば、senderUrl属性)で指定したノードも通過可能に設定する点(ステップAS45)、そして、処理終了時に登録ノード500がファイヤウォール701に処理が正しいことを確認する点(ステップAS120)が追加されている。他の処理は図14のそれと同一であり、同等符号により示されている。
具体的な例を用いて、本実施例の動作を説明する。ノード500を登録する際、HTTPのAuthorization属性の値として、認証方法(例えば、Basic)とユーザ情報とパスワードを取る。ノードマネージャ400は本発明の第2の実施例と同様の処理を行ない、更に、ユーザ情報とパスワードが認証表470上に掲載されていることを確認する。その後メッセージ解釈部410はファイヤウォール700にメッセージのsender属性値”http://node500.portia.com/appのnode500.portia.com”からメッセージルータ600へのアクセス許可を追加する。そして、登録成功後、ノード500は、返されたメッセージルータのURL”http://distributor.company.com/servlet/distributor”を見て、ファイヤウォール701を”distributor.company.com”からのアクセスのみを許可するように設定する。
このようにした場合、悪意のサーバは認証されないので、登録できない。登録していないサーバはメッセージルータへアクセスしようとしてもファイヤウォール700がアクセスを拒否する。またノード500へのアクセスはファイヤウォール701が拒否する。そのため、ノード500など登録したサーバを踏み台にした攻撃を防御できる。また、登録していないサーバを踏み台にしても登録していないサーバからのアクセスをファイヤウォールで拒否できるので、分散サービス拒否攻撃を防止できる。
以上の各実施例におけ動作フローは、予めプログラムとして記録媒体に格納しておき、これをCPU(コンピュータ)に読み取らせて、順次実行させるようにすることができることは明白である。また、上記各実施例におけるデータベース300は、メッセージルータ200,600とは別に分離して設ける様に図示しているが、メッセージルータ200,600内に設けても良い。また、メッセージルータは一つとして示しているが、実際には複数存在するものであり、図を簡単化するためのものである。
上述した実施例の第1の効果は、メッセージ受信対象者を定めるトピックに包含関係が含意されている場合においても、包含関係に従って、適切なノードにメッセージを送信することができることである。その理由は、ノード情報をドメインと呼ぶツリーデータ構造で管理しており、ドメインで包含関係を表すことができるからである。
第2の効果は、複数のノード間での連携を実現可能な点である。例えば、あるサービスを提供するノードにメッセージを送信してから、他のサービスを提供するノードにメッセージを送信することができる点である。その理由は、ポリシによりメッセージの状態をヘッダの属性として管理し、その状態に応じて、適切な配信先を指定できるからである。例えば、あるサービスを提供するノードがヘッダの属性値を書き換えてメッセージを転送することで、ポリシはそのサービスが完了したとみなし、次のサービスを提供するノードに転送するような配信を記述できる。
第3の効果は、登録されたノードやメッセージルータに対するサービス拒否攻撃を防止できる点である。その理由は、ノードは登録することで、メッセージルータとのみ通信することに限定されることを利用し、ファイヤウォールを設け、それ以外のノードとの通信を拒否することができるからである。また、メッセージルータは登録したノードとのみ通信するので、ファイヤウォールにより、登録したノードとのみ通信するように設定することで、サービス拒否攻撃を防止できる。
第4の効果は、登録されたノードやメッセージルータに対する分散サービス拒否攻撃を防止できる点である。その理由は、ノードは、登録することによって、メッセージルータとのみ通信することに限定されることを利用し、ファイヤウォールを設け、それ以外のノードとの通信を拒否することができるからである。これにより、登録したノードを踏み台にすることができない。また、メッセージルータは登録したノードとのみ通信するので、ファイヤウォールにより、登録したノードとのみ通信するように設定することで、メッセージルータを踏み台にすることはできない。

Claims (21)

  1. メッセージをネットワークに接続されたノードへ配信するメッセージ配信装置であって、
    メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースと、
    前記メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基に前記データベースのツリーデータ構造をアクセスして、前記受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索する検索手段と、
    検索された全てのノード情報に対応する配信先へ前記メッセージを転送する転送手段と
    を備えることを特徴とするメッセージ配信装置。
  2. 請求の範囲第1項に記載のメッセージ配信装置において、
    前記メッセージのヘッダ部とペイロード部とを分離する分離手段と、
    分離された前記ヘッダ部を解釈して前記検索手段に検索を指示する解釈手段と、
    前記検索手段により検索されたメッセージ配信先に応じて前記ヘッダ部を書換える書換手段と、
    書換えられたヘッダ部と前記分離手段により分離された前記ペイロード部とを合成して前記転送手段へ送出する合成手段と
    を更に備えることを特徴とするメッセージ配信装置。
  3. 請求の範囲第1項に記載のメッセージ配信装置において、
    前記データベースには、前記ノード情報と、前記メッセージ配信先を決定するための方針を定めたポリシ情報との対が前記ツリーデータ構造として格納され、
    前記検索手段は、前記ノード情報とポリシ情報との対を検索し、
    前記転送手段は、検索された情報に従って前記メッセージを転送することを特徴とするメッセージ配信装置。
  4. 請求の範囲第3項に記載のメッセージ配信装置において、
    前記転送手段は、検索されたポリシ情報と前記メッセージのヘッダ部情報との照合結果に応じて前記メッセージを転送することを特徴とするメッセージ配信装置。
  5. 請求の範囲第4項に記載のメッセージ配信装置において、
    検索された前記ポリシ情報と前記メッセージのヘッダ部情報とを照合し、前記照合結果として配信先のノード情報とヘッダ部情報との対を出力する照合手段を更に備えることを特徴とするメッセージ配信装置。
  6. メッセージをネットワークに接続されたノードへ配信するメッセージ配信方法であって、
    メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースを、前記メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にアクセスして、前記受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索するステップと、
    検索された全てのノード情報に対応する配信先へ前記メッセージを転送するステップと
    を備えることを特徴とするメッセージ配信方法。
  7. 請求の範囲第6項に記載のメッセージ配信方法において、
    前記メッセージのヘッダ部とペイロード部とを分離するステップと、
    分離された前記ヘッダ部を解釈して検索を指示するステップと、
    検索されたメッセージ配信先に応じて前記ヘッダ部を書換えるステップと、
    書換えられたヘッダ部と分離された前記ペイロード部とを合成するステップとを更に備え、
    転送するステップは、合成された前記ヘッダ部及び前記ペイロード部に従って前記メッセージを転送するステップを備えることを特徴とするメッセージ配信方法。
  8. 請求の範囲第6項に記載のメッセージ配信方法において、
    前記データベースに前記ノード情報と、前記メッセージ配信先を決定するための方針を定めたポリシ情報との対を前記ツリーデータ構造として格納するステップを更に備え、
    検索するステップは、前記ノード情報とポリシ情報との対を検索するステップを備え、
    転送するステップは、検索された情報に従って前記メッセージを転送するステップを備えることを特徴とするメッセージ配信方法。
  9. 請求の範囲第8項に記載のメッセージ配信方法において、
    転送するステップは、検索されたポリシ情報と前記メッセージのヘッダ部情報との照合結果に応じて前記メッセージを転送するステップを備えることを特徴とするメッセージ配信方法。
  10. 請求の範囲第9項に記載のメッセージ配信方法において、
    検索された前記ポリシ情報と前記メッセージのヘッダ部情報とを照合し、前記照合結果として配信先のノード情報とヘッダ部情報との対を出力するステップを更に備えることを特徴とするメッセージ配信方法。
  11. ネットワークに接続されかつメッセージを送信及び受信する複数のノードと、
    前記ネットワークに接続されかつノードから送信されたメッセージを別のノードに配信するメッセージ配信装置とを備え、
    前記メッセージ配信装置は、
    メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースと、
    前記メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基に前記データベースのツリーデータ構造をアクセスして、前記受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索する検索手段と、
    検索された全てのノード情報に対応する配信先へ前記メッセージを転送する転送手段とを備えることを特徴とするメッセージ配信システム。
  12. 請求の範囲第11項に記載のメッセージ配信システムにおいて、
    前記ネットワークに接続されかつ前記ノードの前記データベースへの登録要求を受付管理するノード管理装置を更に備えることを特徴とするメッセージ配信システム。
  13. 請求の範囲第12項に記載のメッセージ配信システムにおいて、
    前記ノード管理装置は、前記登録要求を前記メッセージ配信装置へ転送する転送手段を備え、
    前記メッセージ配信装置は、転送された前記登録要求に含まれる前記ノードの位置情報をノード情報として前記データベースのツリーデータ構造に追加することにより前記ノードを登録する登録手段を備えることを特徴とするメッセージ配信システム。
  14. 請求の範囲第11項に記載のメッセージ配信システムにおいて、
    前記メッセージ配信装置と前記ネットワークとの間に設けられたファイヤウォールを備えることを特徴とするメッセージ配信システム。
  15. 請求の範囲第11項に記載のメッセージ配信システムにおいて、
    前記ノードと前記ネットワークとの間に設けられたファイヤウォールを備えることを特徴とするメッセージ配信システム。
  16. 請求の範囲第11項に記載のメッセージ配信システムにおいて、
    前記ノード管理装置と前記ネットワークとの間に設けられたファイヤウォールを備えることを特徴とするメッセージ配信システム。
  17. メッセージをネットワークに接続されたノードへ配信するメッセージ配信方法をコンピュータに実現させるためのプログラムであって、
    メッセージ配信先のノード情報が予め定められた関係に従ったツリーデータ構造として格納されたデータベースを、前記メッセージのヘッダ部に付加されたこのメッセージの受信ノード情報を基にアクセスして、前記受信ノード情報をルートとするサブツリーに含まれる全てのノード情報を検索するステップと、
    検索された全てのノード情報に対応する配信先へ前記メッセージを転送するステップと
    をコンピュータに実現させるためのプログラム。
  18. 請求の範囲第17項に記載のプログラムにおいて、
    前記メッセージのヘッダ部とペイロード部とを分離するステップと、
    分離された前記ヘッダ部を解釈して検索を指示するステップと、
    検索されたメッセージ配信先に応じて前記ヘッダ部を書換えるステップと、
    書換えられたヘッダ部と分離された前記ペイロード部とを合成するステップと、
    転送するステップにおいて、合成された前記ヘッダ部及び前記ペイロード部に従って前記メッセージを転送するステップと
    を更にコンピュータに実現させるためのプログラム。
  19. 請求の範囲第18項に記載のプログラムにおいて、
    前記データベースに前記ノード情報と、前記メッセージ配信先を決定するための方針を定めたポリシ情報との対を前記ツリーデータ構造として格納するステップと、
    検索するステップにおいて、前記ノード情報とポリシ情報との対を検索するステップと、
    転送するステップにおいて、検索された情報に従って前記メッセージを転送するステップと
    を更にコンピュータに実現させるためのプログラム。
  20. 請求の範囲第19項に記載のプログラムにおいて、
    転送するステップにおいて、検索されたポリシ情報と前記メッセージのヘッダ部情報との照合結果に応じて前記メッセージを転送するステップをコンピュータに実現させるためのプログラム。
  21. 請求の範囲第20項に記載のプログラムにおいて、
    検索された前記ポリシ情報と前記メッセージのヘッダ部情報とを照合し、前記照合結果として配信先のノード情報とヘッダ部情報との対を出力するステップを更にコンピュータに実現させるためのプログラム。
JP2005503478A 2003-03-12 2004-02-27 メッセージ配信装置及びその方法並びにシステム及びプログラム Expired - Fee Related JP4356693B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003065862 2003-03-12
JP2003065862 2003-03-12
PCT/JP2004/002333 WO2004081800A1 (ja) 2003-03-12 2004-02-27 メッセージ配信装置及びその方法並びにシステム及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2004081800A1 JPWO2004081800A1 (ja) 2006-06-15
JP4356693B2 true JP4356693B2 (ja) 2009-11-04

Family

ID=32984518

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005503478A Expired - Fee Related JP4356693B2 (ja) 2003-03-12 2004-02-27 メッセージ配信装置及びその方法並びにシステム及びプログラム

Country Status (4)

Country Link
US (1) US20060090007A1 (ja)
JP (1) JP4356693B2 (ja)
TW (1) TW200426592A (ja)
WO (1) WO2004081800A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467399B2 (en) * 2004-03-31 2008-12-16 International Business Machines Corporation Context-sensitive confidentiality within federated environments
US7454479B2 (en) * 2004-05-28 2008-11-18 Microsoft Corporation Flexible teleport architecture
EP1856621A4 (en) * 2005-01-05 2013-05-29 Barclays Capital Inc TECHNOLOGY MANAGEMENT PORTAL
US7583662B1 (en) * 2005-04-12 2009-09-01 Tp Lab, Inc. Voice virtual private network
WO2007027679A2 (en) * 2005-08-29 2007-03-08 Rhysome, Inc. Method and system for reliable message delivery
CN100563203C (zh) * 2005-11-11 2009-11-25 华为技术有限公司 通信网络中组播树叶子节点网元信号传送的方法
US8005000B1 (en) * 2007-04-06 2011-08-23 Cisco Technology, Inc. Effective measurement/notification of SLA in a service oriented networked environment
US9264342B2 (en) * 2009-12-24 2016-02-16 Samsung Electronics Co., Ltd. Terminal device based on content name, and method for routing based on content name
US8996728B2 (en) * 2010-10-01 2015-03-31 Telcordia Technologies, Inc. Obfuscating network traffic from previously collected network traffic
US20130091192A1 (en) * 2011-10-11 2013-04-11 Mohammed Saleem Shafi Asynchronous messaging bus
CN105721334B (zh) * 2014-12-04 2020-02-18 中国移动通信集团公司 确定传输路径和更新acl的方法及设备
US10789301B1 (en) * 2017-07-12 2020-09-29 Groupon, Inc. Method, apparatus, and computer program product for inferring device rendered object interaction behavior

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3688830B2 (ja) * 1995-11-30 2005-08-31 株式会社東芝 パケット転送方法及びパケット処理装置
JP3716578B2 (ja) * 1997-10-29 2005-11-16 富士通株式会社 共用ファイル管理装置
JP3574372B2 (ja) * 2000-03-14 2004-10-06 Kddi株式会社 Dnsサーバ、端末および通信システム
US7337910B2 (en) * 2000-10-04 2008-03-04 Verisign, Inc. Methods and devices for responding to request for unregistered domain name to indicate a predefined type of service
JP2002335274A (ja) * 2001-03-06 2002-11-22 Fujitsu Ltd パケット中継装置およびパケット中継方法
EP1244042A1 (en) * 2001-03-21 2002-09-25 Ricoh Company System for and method of facilitating sales activities
US7401148B2 (en) * 2001-11-16 2008-07-15 At&T Mobility Ii Llc System for customer access to messaging and configuration data
US7855972B2 (en) * 2002-02-08 2010-12-21 Enterasys Networks, Inc. Creating, modifying and storing service abstractions and role abstractions representing one or more packet rules

Also Published As

Publication number Publication date
TWI295779B (ja) 2008-04-11
US20060090007A1 (en) 2006-04-27
JPWO2004081800A1 (ja) 2006-06-15
TW200426592A (en) 2004-12-01
WO2004081800A1 (ja) 2004-09-23

Similar Documents

Publication Publication Date Title
US7428590B2 (en) Systems and methods for reflecting messages associated with a target protocol within a network
KR101203331B1 (ko) 전자 통신 처리 시스템, 액세스 제어 시스템, 이메일 처리 시스템, 클라이언트측 하드웨어 시스템, 서버측 하드웨어 시스템, 및 컴퓨터 판독가능 저장 매체
JP3443529B2 (ja) ファイアウォールサービスを提供する方法と、ファイアウォールサービスを提供するコンピュータシステム
US7664822B2 (en) Systems and methods for authentication of target protocol screen names
US6185613B1 (en) System and method for global event notification and delivery in a distributed computing environment
US7707401B2 (en) Systems and methods for a protocol gateway
US7409425B2 (en) Selective transmission of an email attachment
JP3459183B2 (ja) パケット検証方法
US7818565B2 (en) Systems and methods for implementing protocol enforcement rules
US20040064537A1 (en) Method and apparatus to enable efficient processing and transmission of network communications
US8990573B2 (en) System and method for using variable security tag location in network communications
US20060064469A1 (en) System and method for URL filtering in a firewall
JP2002511961A (ja) ユニバーサルドメインルーティング及び発行制御システム
MX2011003223A (es) Acceso al proveedor de servicio.
JP4356693B2 (ja) メッセージ配信装置及びその方法並びにシステム及びプログラム
US20080104688A1 (en) System and method for blocking anonymous proxy traffic
JP3961112B2 (ja) パケット通信制御システム及びパケット通信制御装置
CN1521993A (zh) 网络控制方法和设备
US20070297408A1 (en) Message control system in a shared hosting environment
JP2005217757A (ja) ファイアウオール管理システム、ファイアウオール管理方法、およびファイアウオール管理プログラム
JP2006293708A (ja) コンテンツアクセス制御装置、コンテンツアクセス制御方法およびコンテンツアクセス制御プログラム
JP2001350677A (ja) メタ情報を利用した通信の監視,検査システムおよび通信の監視,検査方法、ならびにこれらの方法を記録した記録媒体
KR200349700Y1 (ko) 웹서비스를 기반으로 하는 가상 라우팅 장치
Chanson Internet: History, impact, enabling technologies and potential problems
Tamrakar Impact of Social networking sites on Local DNS server

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070115

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: 20090714

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: 20090727

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

Free format text: PAYMENT UNTIL: 20120814

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130814

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees