(57)【要約】【課題】ブローカが維持するルーティングテーブルを介してメッセージルーティングを効率的に処理する方法を提供することを目的とする。【解決手段】本発明に係るバス型ネットワーク構造では、各サーバが1つのブローカとの連結のみを維持すれば良く、ネットワークが拡張しても中間連結はブローカを介して行われるため、サーバを追加して連結しても全体ネットワーク観点における連結数は大きく増加しない。したがって、本発明のバス型ネットワーク構造を採用した通信ネットワークシステムは、新しいサービス連係が容易であり、維持および管理面においても極めて便利である。【選択図】図４
2008526085.tif 000002
【特許請求の範囲】
【請求項１】
バス型ネットワーク構造の通信ネットワークシステムでメッセージルーティングを処理する方法において、
前記通信ネットワークシステムは、メッセージルーティングを処理するブローカと、
コネクタと、
前記コネクタを介して前記ブローカと連結する通信可能なターミナルノードである多数のサービスと、
を含み、
前記通信ネットワークシステム上の各ブローカをフルメッシュ形態で相互連結する段階（前記各ブローカは所定のルーティングテーブルを維持する）と、
前記コネクタを前記ブローカと連結し、前記コネクタを媒介として前記サービスと前記ブローカ間の連結を設定する段階と、
前記連結設定された各サービスにネットワークアドレスを割り当て、前記ルーティングテーブルに前記ネットワークアドレスと前記各サービスと連結したブローカのソケットIDを対応させて維持する段階と、
前記ルーティングテーブルに維持された前記ネットワークアドレスおよび前記ソケットIDを用いて前記各サービス間のメッセージルーティングを処理する段階と、
を含むことを特徴とするメッセージルーティング方法。
【請求項２】
前記ネットワークアドレスは、前記通信ネットワークシステム全体で該当するサービスを唯一に識別するアドレス値であることを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項３】
前記ネットワークアドレスはユニキャストアドレスであり、
前記各サービス間のメッセージルーティングを処理する前記段階は、
第1ブローカが自身と連結設定された第1サービスから宛先をユニキャストアドレスとして有するメッセージメッセージの伝達要請を受信する段階と、
前記第1ブローカが前記ルーティングテーブルを参照して前記宛先に対応するソケットIDを有する第2ブローカを識別する段階と、
前記第1ブローカと前記第2ブローカが同じ場合には、前記第1ブローカが前記宛先に該当する第2ブローカに前記メッセージを直接伝達し、前記第1ブローカと前記第2ブローカが相違した場合には、前記第1ブローカが前記第2ブローカに前記メッセージを伝達し、前記第2ブローカが前記第2サービスに前記メッセージを伝達する段階と、
を含むことを特徴とする請求項2に記載のメッセージルーティング処理方法。
【請求項４】
前記各サービスのうち少なくとも一部を該当するサービスが提供する機能によってエニーキャストグループまたはマルチキャストグループに加入させ、前記加入したグループによってエニーキャストアドレスまたはマルチキャストアドレスを割り当てる段階と、
前記ルーティングテーブルに前記エニーキャストアドレスまたは前記マルチキャストアドレスを前記ソケットIDに対応させて維持する段階と、
を含むことを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項５】
前記各サービス間のメッセージルーティングを処理する前記段階は、
第1ブローカが自身と連結設定された第1サービスから宛先をエニーキャストアドレスとして有するメッセージの伝達要請を受信する段階と、
前記第1ブローカが前記ルーティングテーブルを参照して前記宛先に対応するソケットIDを有する1つ以上の第2ブローカを識別し、そのうち1つを選択する段階と、
前記第1ブローカと前記選択された第2ブローカが同じ場合には、前記第1ブローカが前記宛先に該当する1つ以上の第2サービスのうち1つを任意で選択して前記メッセージを直接伝達し、前記第1ブローカと前記選択された第2ブローカが相違した場合には、前記第1ブローカが前記第2ブローカに前記メッセージを伝達し、前記第2ブローカが前記第2サービスのうち1つを任意で選択して前記メッセージを伝達する段階と、
を含むことを特徴とする請求項4に記載のメッセージルーティング処理方法。
【請求項６】
前記各サービス間のメッセージルーティングを処理する前記段階は、
第1ブローカが自身と連結設定された第1サービスから宛先をマルチキャストアドレスとして有するメッセージの伝達要請を受信する段階と、
前記第1ブローカが前記ルーティングテーブルを参照して前記宛先に対応するソケットIDを有する1つ以上の第2ブローカを識別する段階と、
前記第1ブローカと第2ブローカが同じ場合には、前記第1ブローカが前記宛先に該当する1つ以上の第2サービスすべてに前記メッセージを直接伝達し、前記第1ブローカと前記第2ブローカが相違した場合には、前記第1ブローカが前記第2ブローカに前記メッセージを伝達し、前記第2ブローカが前記第2サービスすべてに前記メッセージを伝達する段階と、
を含むことを特徴とする請求項4に記載のメッセージルーティング処理方法。
【請求項７】
第1ブローカが自身のルーティングテーブルが更新された場合、前記第1ブローカとフルメッシュ形態で連結した第2ブローカすべてに前記更新によって変更されたルーティング情報を送信する段階と、
前記第2ブローカが前記更新されたルーティング情報を受信して自身のルーティングテーブルを更新する段階と、
をさらに含むことを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項８】
前記通信ネットワークシステムに新たなブローカが追加される場合において、
前記新たなブローカが前記通信ネットワークシステム上でフルメッシュ形態で連結している既存のブローカと連結を設定する段階と、
前記既存のブローカのうち1つのブローカを任意で選択する段階と、
前記新たなブローカが前記選択されたブローカにルーティングテーブルを要請し、これを受信して自身のルーティングテーブルに反映する段階と、
をさらに含むことを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項９】
前記新たなブローカがコネクタとの連結のための準備完了事実を前記既存のブローカに通報する段階と、
前記既存のブローカそれぞれが自身と連結したコネクタのうち前記新たなブローカに移る再設定コネクタの数を計算し、前記計算された数に該当する再設定コネクタを選択する段階と、
前記選択された再設定コネクタに前記新たなブローカとの連結再設定命令を通報し、前記選択された再設定コネクタが前記新たなブローカと連結を設定する段階と、
をさらに含むことを特徴とする請求項8に記載のメッセージルーティング処理方法。
【請求項１０】
前記新たなブローカと前記選択された再設定コネクタ間の連結設定が完了した後に、前記新たなブローカおよび前記既存のブローカのルーティングテーブルが更新されることを特徴とする請求項9に記載のメッセージルーティング処理方法。
【請求項１１】
第1ブローカと第2ブローカが同時に互いに連結要請をして、前記第1ブローカと前記第2ブローカ間に複数の連結が設定された場合において、
前記第1ブローカと前記第2ブローカそれぞれのIPアドレスを比較する段階と、
前記比較結果に基づいて前記複数の連結のうち1つの連結を終了する段階と、
をさらに含むことを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項１２】
前記比較結果に基づいて前記いずれか1つの連結を終了する前記段階は、
前記それぞれのIPアドレスを4バイトのDWORD値で判断し、その値が小さいIPアドレスに該当するブローカが要請した連結を終了することを特徴とする請求項11に記載のメッセージルーティング処理方法。
【請求項１３】
各コネクタは1つのブローカとだけ連結し、
各サービスは1つのコネクタを介して前記ブローカと連結し、
前記コネクタと前記サービスは、同じプロセス内に含まれることを特徴とする請求項1に記載のメッセージルーティング処理方法。
【請求項１４】
前記コネクタは1つのプロセス内に1つだけ存在し、前記サービスは1つのプロセス内に少なくとも1つ以上が存在することを特徴とする請求項13に記載のメッセージルーティング処理方法。
【請求項１５】
請求項1〜14のいずれか一項の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
バス型ネットワーク構造の通信ネットワークシステムにおいて、
メッセージルーティングを処理するブローカと、
コネクタと、
前記コネクタを介して前記ブローカと連結する多数のサービスと、
を含み、
前記サービスは通信可能なターミナルノードであって、各サービスは唯一に識別するネットワークアドレスが前記各サービスごとに割り当てられ、
前記コネクタは前記サービスと前記ブローカ間の連結を媒介するモジュールであり、
前記ブローカはメッセージルーティングを処理するためにルーティング経路を設定したり、前記コネクタとの連結関係を設定したりするモジュールであって、各ブローカはフルメッシュ形態で相互連結し、所定のルーティングテーブルに前記ネットワークアドレスと前記各サービスと連結したブローカのソケットIDを対応させて維持し、前記ルーティングテーブルに維持された前記ネットワークアドレスおよび前記ソケットIDを用いて前記各サービス間のメッセージルーティングを処理することを特徴とする通信ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス型ネットワーク構造の通信ネットワークシステムおよび前記通信ネットワークシステムでメッセージルーティングを処理する方法に関し、より詳細には、ある1つのプロセス内に存在する1つ以上のサービスを1つのコネクタを介してメッセージルーティングを処理するブローカと連結し、ネットワーク上のすべてのブローカをフルメッシュ形態で相互連結するバス型ネットワーク構造の通信ネットワークシステムにおいて、各サービスにネットワークアドレスを割り当て、ブローカが維持するルーティングテーブルに前記ネットワークアドレスと前記各サービスと連結したブローカのソケットIDを対応させて維持し、前記ルーティングテーブルに維持された前記ネットワークアドレスおよび前記ソケットIDを用いて前記各サービス間のメッセージルーティングを処理することを特徴とする通信ネットワークシステムおよびこれを用いたメッセージルーティング処理方法に関する。
【背景技術】
【０００２】
従来技術では、ゲームサービスを提供するすべてのゲームサーバがメッシュ型構造
で連結している。図1は、このような従来技術に係るゲームサーバ間のネットワーク
連結を示した図である。
【０００３】
図1に示すように、従来技術によれば、ゲームサーバの連結が追加するたびに、全
体ネットワーク観点における連結数は幾何級数的に増加せざるを得ない。図2は、従
来技術においてゲームサーバ数が増加し続けることによって生じ得るゲームサーバ間
のネットワーク連結を示した図である。
【０００４】
このように、ゲームサーバがメッシュ型構造で相互連結する従来技術によれば、ゲ
ームサーバ数の増加によって連結構造が極めて複雑になり、その結果、ゲームユーザ
の増加によるゲームサーバの拡張が困難になるという問題点が生じていた。特に、ゲ
ームサーバ間の連結を世界的に拡張する場合には、管理がより一層困難にならざるを
得なかった。
【０００５】
さらに、1つのサーバと連結する相手サーバ数が多いほど、全体の連結数は幾何級
数的に増加するようになるが、従来技術において、1つのゲームサーバは、ログイン
サーバ、ランキングサーバ、データベースサーバと連結し、これに追加してチャンネ
ルリストサーバおよび公知サーバとが1つのマルチキャストグループとして結ばれて
いる。したがって、全体ネットワークに存在する連結数は、実際のゲームサーバ間の
連結数を大きく超過することになるため、管理が極めて困難な実情にある。
【０００６】
これにより、すべてのゲームサーバがメッシュ形態で連結する従来技術に係るネッ
トワーク構造から脱し、サーバ間の連結構造の単純化により管理が容易かつ効率的な
サービス拡張が可能な新しい通信ネットワーク構造の出現が求められており、このよ
うな新たな通信ネットワーク構造でメッセージルーティングを効率的に処理する方法
が求められている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、前記のような従来技術の問題点を解決するために案出されたものであっ
て、バス型ネットワーク構造を介してサーバ間の連結構造が単純化した新たな通信ネ
ットワークシステムにおいて、ブローカが維持するルーティングテーブルを介してメ
ッセージルーティングを効率的に処理する方法を提供することを目的とする。
【０００８】
また、本発明は、バス型ネットワーク構造を介してサーバ間の連結構造が単純化し
た新たな通信ネットワークシステムにおいて、各ブローカが維持するルーティングテ
ーブルに各サービスのネットワークアドレスと前記各サービスと連結設定されたブロ
ーカのソケットIDを互いに対応するように含ませることで、このようなルーティン
グテーブルを介してブローカがメッセージルーティングを効率的に遂行することがで
きるようにすることを目的とする。
【０００９】
また、本発明は、バス型ネットワーク構造を介してサーバ間の連結構造が単純化し
た新たな通信ネットワークシステムにおいて、特定のブローカが維持するルーティン
グテーブルに変更が生じる場合、これを自動的に他のブローカすべてに通報すること
で、すべてのルーティングテーブルが最新に維持されるようにすることを目的とする。
【００１０】
また、本発明は、バス型ネットワーク構造を介してサーバ間の連結構造が単純化し
た新たな通信ネットワークシステムにおいて、新たなブローカが追加される場合、既
存のブローカと連結したコネクタのうち適切な数のコネクタが前記新たなブローカに
その連結を移動することで自然な負荷分散（load balancing）を具現し、これによっ
てルーティングテーブルが自動的に更新されるようにすることを目的とする。
【００１１】
また、本発明は、バス型ネットワーク構造を介してサーバ間の連結構造が単純化し
た新たな通信ネットワークシステムにおいて、ブローカ相互間に複数の連結が設定さ
れた場合、所定の基準によって一方の連結を終了させることで非正常的な連結を迅速
に終了させ、全体ネットワーク観点における連結数を効率的に維持することを目的と
する。
【００１２】
また、本発明は、すべてのゲームサーバがメッシュ形態で連結する従来技術に係る
ネットワーク構造から脱し、サーバ間の連結構造を単純化することで管理が容易かつ
効率的なサービス拡張が可能な新しい通信ネットワーク構造を提示することを目的と
する。
【課題を解決するための手段】
【００１３】
前記の目的を達成し、上述した従来技術の問題点を解決するために、本発明の一実
施形態に係るバス型ネットワーク構造の通信ネットワークシステムでメッセージルー
ティングを処理する方法は、前記通信ネットワークシステムは、メッセージルーティ
ングを処理するブローカと、コネクタと、前記コネクタを介して前記ブローカと連結
する通信可能なターミナルノードである多数のサービスと、を含み、前記通信ネット
ワークシステムの各ブローカをフルメッシュ形態で相互連結する段階（前記各ブロー
カは所定のルーティングテーブルを維持する）と、前記コネクタを前記ブローカと連
結し、前記コネクタを媒介として前記サービスと前記ブローカ間の連結を設定する段
階と、前記連結設定された各サービスにネットワークアドレスを割り当て、前記ルー
ティングテーブルに前記ネットワークアドレスと前記各サービスと連結したブローカ
のソケットIDを対応させて維持する段階と、前記ルーティングテーブルに維持され
た前記ネットワークアドレスおよび前記ソケットIDを用いて前記各サービス間のメ
ッセージルーティングを処理する段階と、を含むことを特徴とする。
【００１４】
本発明の一側によれば、前記ネットワークアドレスはユニキャストアドレスであり、
前記各サービス間のメッセージルーティングを処理する前記段階は、第1ブローカが
自身と連結設定された第1サービスから宛先をユニキャストアドレスとして有するメ
ッセージの伝達要請を受信する段階と、前記第1ブローカが前記ルーティングテーブ
ルを参照して前記宛先に対応するソケットIDを有する第2ブローカを識別する段階
と、前記第1ブローカと前記第2ブローカが同じ場合には前記第1ブローカが前記宛
先に該当する第2サービスに前記メッセージを直接伝達し、前記第1ブローカと前記
第2ブローカが相違する場合には前記第1ブローカが前記第2ブローカに前記メッセ
ージを伝達し、前記第2ブローカが前記第2サービスに前記メッセージを伝達する段
階と、を含むことを特徴とするメッセージルーティング処理方法が提供される。
【００１５】
本発明の他の側面によれば、第1ブローカが自身のルーティングテーブルが更新さ
れた場合、前記第1ブローカとフルメッシュ形態で連結した第2ブローカすべてに前
記更新によって変更されたルーティング情報を送信する段階と、前記第2ブローカが
前記変更されたルーティング情報を受信して自身のルーティングテーブルを更新する
段階と、をさらに含むことを特徴とするメッセージルーティング処理方法が提供され
る。
【００１６】
本発明のさらに他の側面によれば、前記通信ネットワークシステムに新たなブロー
カが追加される場合において、前記新たなブローカが前記通信ネットワークシステム
上でフルメッシュ形態で連結している既存のブローカと連結を設定する段階と、前記
既存のブローカのうち1つのブローカを任意で選択する段階と、前記新たなブローカ
が前記選択されたブローカにルーティングテーブルを要請し、これを受信して自身の
ルーティングテーブルに反映する段階と、をさらに含むことを特徴とするメッセージ
ルーティング処理方法が提供される。
【００１７】
一方、本発明の一実施形態に係るバス型ネットワーク構造の通信ネットワークシス
テムは、メッセージルーティングを処理するブローカと、コネクタと、前記コネクタ
を介して前記ブローカと連結する多数のサービスと、を含み、前記サービスは通信可
能なターミナルノードであって、各サービスを唯一に識別するネットワークアドレス
が前記各サービスごとに割り当てられ、前記コネクタは前記サービスと前記ブローカ
間の連結を媒介するモジュールであって、前記ブローカはメッセージルーティングを
処理するためにルーティング経路を設定したり、前記コネクタとの連結関係を設定し
たりするモジュールであって、各ブローカはフルメッシュ形態で相互連結し、所定の
ルーティングテーブルに前記ネットワークアドレスと前記各サービスと連結するブロ
ーカのソケットIDを対応させて維持し、前記ルーティングテーブルに維持された前
記ネットワークアドレスおよび前記ソケットIDを用いて前記各サービス間のメッセ
ージルーティングを処理することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、バス型ネットワーク構造を介してサーバ間の連結構造が単純化し
た新たな通信ネットワークシステムにおいて、ブローカが維持するルーティングテー
ブルを介してメッセージルーティングを効率的に処理する方法を提示する。
【００１９】
また、本発明によれば、バス型ネットワーク構造を介してサーバ間の連結構造が単
純化した新たな通信ネットワークシステムにおいて、各ブローカが維持するルーティ
ングテーブルに各サービスのネットワークアドレスと前記各サービスと連結設定され
たブローカのソケットIDを互いに対応するように含ませることで、このようなルー
ティングテーブルを介してブローカがメッセージルーティングを効率的に遂行する効
果を得ることができる。
【００２０】
また、本発明によれば、バス型ネットワーク構造を介してサーバ間の連結構造が単
純化した新たな通信ネットワークシステムにおいて、特定のブローカが維持するルー
ティングテーブルに変更が生じる場合、これを自動的に他のブローカすべてに通報し、
すべてのルーティングテーブルが常に最新の情報を維持することができるようにする
効果を得ることができる。
【００２１】
また、本発明によれば、バス型ネットワーク構造を介してサーバ間の連結構造が単
純化した新たな通信ネットワークシステムにおいて、新たなブローカが追加される場
合、既存のブローカと連結したコネクタのうち適切な数のコネクタが前記新たなブロ
ーカにその連結が移動することで自然な負荷分散を具現し、これによってルーティン
グテーブルが自動的に更新される効果を得ることができる。
【００２２】
また、本発明によれば、バス型ネットワーク構造を介してサーバ間の連結構造が単
純化した新たな通信ネットワークシステムにおいて、ブローカ相互間に複数の連結が
設定された場合、所定の基準によって一方の連結を終了させることで非正常的な連結
を迅速に終了させ、全体ネットワーク観点における連結数を効率的に維持する効果を
得ることができる。
【００２３】
また、本発明よれば、すべてのゲームサーバがメッシュ形態で連結する従来技術に
係るネットワーク構造から脱し、サーバ間の連結構造を単純化することで管理が容易
かつ効率的なサービス拡張が可能な新しい通信ネットワーク構造が提示される。
【発明を実施するための最良の形態】
【００２４】
以下、添付の図面を参照して、本発明に係る通信システムおよびこれを用いたデー
タ送受信方法について詳しく説明する。
【００２５】
図3は、本発明に係るバス型ネットワーク構造を概略的に示した図である。
【００２６】
図1に示すように、従来技術では、ゲームサーバを始めとしたすべてのゲーム関連
サーバがメッシュ型構造で連結している。しかし、図3に示すように、本発明に係る
バス型ネットワーク構造では、すべてのサーバがバス構造を介して連結しているため、
連結構造の単純化が可能となる。
【００２７】
図4は、本発明に係るバス型ネットワーク構造の通信ネットワークシステムの連結
を概略的に示した図である。
【００２８】
図1に示すような従来技術によれば、図2に示すように、ゲームサーバの連結が追
加するたびに、全体ネットワーク観点における連結数を幾何級数的に増加せざるを得
なかった。しかし、図4に示すように、本発明に係るバス型ネットワーク構造では、
各サーバが1つのブローカとの連結のみを維持すれば良く、ネットワークが拡張して
も中間連結はブローカを介して行われるため、サーバを追加して連結しても全体ネッ
トワーク観点における連結数は大きく増加しない。したがって、図3および図4のよ
うな本発明のバス型ネットワーク構造を採用した通信ネットワークシステムは、新し
いサービス連係が容易であり、維持および管理面においても極めて便利である。
【００２９】
図5は、本発明に係る通信ネットワークシステムでブローカ、コネクタおよびサー
ビスの連結を示した図である。
【００３０】
図5に示すように、本発明に係る通信ネットワークシステムは、メッセージルーテ
ィングを処理するブローカ501と、コネクタ502と、コネクタ502を介してブローカ
501と連結する多数のサービス503と、を含んで構成される。
【００３１】
サービス503は、通信可能なターミナルノードであって、各サービス503は1つの
コネクタ502を介してブローカ501に連結および登録させる。
【００３２】
本発明に係る通信ネットワークシステムにおいて、各サービス503を個々に識別す
るネットワークアドレスが各サービス503ごとに割り当てられる。このとき、前記ネ
ットワークアドレスは、本発明に係る通信ネットワークシステム全体で各サービス
503を唯一に識別することができるアドレス値に該当する。
【００３３】
コネクタ502は、サービス503及びブローカ501間の連結を媒介するモジュールで
あって、各コネクタ502は1つのブローカ501とだけ連結し、サービス503はコネク
タ502を介してブローカ501に登録される。
【００３４】
本発明の一実施形態によれば、コネクタ502とサービス503は同じプロセス内に含
まれる。コネクタ502は1つのプロセス内に1つだけ存在し、サービス503は1つの
プロセス内に少なくとも1つ以上が存在する。すなわち、プロセス別に1つのコネク
タ502が存在し、コネクタ502は自身が属するプロセス内に存在するすべてのサービ
ス503とブローカ501間の連結を媒介することができる。
【００３５】
本実施形態によれば、コネクタ５０２とプロセスが1：1で対応することで通信ネ
ットワークシステムの統一性を図ることができ、互いに属するプロセスにおける異な
るサービス503が1つの同じコネクタ502を介して同じブローカ501と連結すること
で非効率的なルーティングを予防することができ、データ送受信上の混乱を避けるこ
とができる。
【００３６】
ブローカ501は、効率的なメッセージルーティングを処理するためにルーティング
経路を設定したり、コネクタ502との連結関係を設定したりするモジュールである。
また、各ブローカ501は、フルメッシュ形態で相互連結する。
【００３７】
このように、本明細書では、ブローカ501がフルメッシュ形態で相互連結して形成
されたネットワークをMRS（Message Routing Server）ネットワーク500と定義する。
したがって、MRSネットワーク500とは、通信しようとする多様なシステム間でメッ
セージを効率的に送受信するためのネットワークサービスプラットホームを意味する
ものである。コネクタ502は、このようなMRSネットワーク500を用いてメッセージ
送受信を行うために用いられるプログラミングインターフェースを提供するモジュー
ルである。また、サービス503は、コネクタ502が提供する前記プログラミングイン
ターフェースを介してMRSネットワーク500を用いる。
【００３８】
一方、図5に示すように、本発明に係る通信ネットワークシステムにおいて、コネ
クタ502とブローカ501間の連結は1つに限られており、各サービス503がブローカ
501と通信するときには、前記1つの連結を介して順に通信する。
【００３９】
一方、MRSネットワーク500上においてフルメッシュ形態で連結するブローカ501
相互間には、1つの連結だけが設定されなければならないが、多数のブローカ501が
同時に互いに連結要請をして複数の連結が設定される場合が問題となることがある。
【００４０】
本発明の一実施形態によれば、第1ブローカ501と第2ブローカ501が同時に互い
に連結要請をし、前記第1ブローカ501と前記第2ブローカ501間に複数の連結が設
定された場合には、前記第1ブローカ501と前記第2ブローカ501それぞれのIPア
ドレスを比較し、前記比較結果に基づいて前記複数の連結のうちどの連結を終了する
のかを決定することができる。このため、前記それぞれのIPアドレスを4バイトの
DWORD値で判断し、その値が小さいIPアドレスに該当するブローカ501が要請した連
結を終了する方式が用いられている。
【００４１】
本実施形態によれば、ブローカ501相互間に複数の連結が設定された場合、明確な
基準によって一方の連結を終了させることで非正常的な連結を迅速に終了させ、全体
ネットワーク観点において連結数を効果的に維持する効果を得ることができる。
【００４２】
上述して説明したように、ブローカ501は効率的なメッセージルーティングを処理
するためにルーティング経路を設定する役割を遂行するが、このためにMRSネットワ
ーク500上のすべてのブローカ501は、メッセージルーティング処理のためのルーテ
ィングテーブルを維持する。
【００４３】
このため、ブローカ501は、自身と連結したコネクタ502を媒介としてサービス
503との連結を設定した後にサービス503からサービス登録要請を受信し、該当する
サービス503へのルーティング情報を自身のルーティングテーブルに含ませて維持す
ることができる。
【００４４】
後述するように、本発明における各サービス503には、全体ネットワーク上で該当
するサービス503を唯一に識別することができるネットワークアドレスが割り当てら
れる。ルーティングテーブルは、このような各サービス503のネットワークアドレス
と各サービス503と連結したブローカ501のソケットID（ソケットアドレス）を対応
させて含むことができる。
【００４５】
また、MRSネットワーク500上のブローカは、自身のルーティングテーブルに維持
された各サービス503のネットワークアドレスと各サービス503と連結したブローカ
501のソケットID（ソケットアドレス）を用いて、各サービス503間のメッセージル
ーティングを処理するようになる。
【００４６】
図6は、本発明に係るMRSネットワークを介して各種サーバと連結した一例を示し
た図である。
【００４７】
図6に示すように、ゲームストリームサーバ、チャンネルリストサーバ、ゲームサ
ーバ、公知サーバ、管理サーバ、データベースサーバを始めとした各種ゲーム関連サ
ーバが、MRSネットワーク600を介して連結されている。各サーバは、フルメッシュ
形態で相互連結した複数のブローカのいずれか1つのブローカと1つの連結だけを維
持するようになる。
【００４８】
従来技術では、すべてのゲーム関連サーバがメッシュ型構造で連結されるため、1
つのサーバと連結する相手サーバ数が多いほど、全体連結数は幾何級数的に増加する
ようになる。一方、本発明によれば、図6に示すように、各サーバは1つのブローカ
との連結だけを維持すれば良く、ネットワークが拡張しても中間連結はブローカを介
して行われるため、サーバが追加で連結されても全体ネットワーク観点における連結
数は大きく増加しないという長所がある。
【００４９】
図7は、本発明に係る通信ネットワークシステム上で用いられるメッセージの構造
を説明するための図である。図7を参照して、本発明に係る通信ネットワークシステ
ムのサブシステムであるコネクタとブローカおよびブローカとブローカ間で送受信さ
れるメッセージの構造を説明する。
【００５０】
本明細書では、各メッセージのフィールドを定義するための資料型としてオクテッ
ト（octet）表記法に固守せずに、一般的にウィンドウズ（登録商標）で広く用いられている資料型に基づいてメッセージの構造を説明する。この場合、ウィンドウズ（登録商標）資料型とオクテット表記は「BYTE：octet（8）」、「WORD：octet（16）」、「DWORD：octe（32）」のようにマッピングされる。
【００５１】
本発明に係る通信ネットワークシステム上で用いられるメッセージは、
MRMSGHeaderとMRCMPHeaderとの2つに大別される。各メッセージは、共通的なフィ
ールドであるMRHeaderと、各メッセージごとに特化したフィールドとに区分される。
【００５２】
MRHeaderは、本発明に係る通信ネットワークシステム上で相互交換されるすべての
メッセージが共通して有するべきメッセージヘッダー情報である。MRHeaderメッセー
ジは単独で用いることができす、プロトコルタイプフィールドで記述した値と追加的
なメッセージ情報をMRHeader後に追加して送受信しなければならない。
【００５３】
【表１】
2008526085.tif 000003
【００５４】
MRMSGHeaderの構造で伝達されるメッセージは、MRSネットワークと連結した多数
のサービス間にサービスが指定したペイロード値を伝達するための構造を有している。
【００５５】
ここには、メッセージを送信する送信者のアドレスであるソースアドレスと、メッ
セージを受信する受信者のアドレスである宛先アドレスが記述され、MRSネットワー
クは宛先アドレスの形態と連結情報に基づいてルーティングを試みる。各フィールド
についての詳しい説明は下記表2に示す。
【００５６】
【表２】
2008526085.tif 000004
【００５７】
MRCMPHeaderの構造で伝達されるメッセージは、本発明に係る通信ネットワークシ
ステムのサブシステムであるコネクタとブローカ、ブローカとブローカ間の信号を送
受信するために定義されたメッセージである。各フィールドについての詳しい説明は
下記表3に示す。
【００５８】
【表３】
2008526085.tif 000005
【００５９】
以下、本発明で採用したアドレス体系について説明する。
【００６０】
本発明では、MRSネットワークを用いてデータを送受信するためにソースアドレス
および宛先アドレスを指称するとき、IPアドレスではなく本発明に係る新しいアドレ
ス体系を用いる。MRSネットワークでは、特定したサービスを識別するために、ユニ
キャスト（unicast）、エニーキャスト（anycast）、マルチキャスト（multicast）
という3種類のアドレス類型を支援する。該アドレスはキャストタイプとアドレス類
型別のアドレスで成され、16バイトの長さを有する。
【００６１】
オンラインゲームの場合、多数のサービスインスタンスが相互連動して動作するた
め、サービスインスタンス間の通信が増加せざるを得ないが、従来技術にはこのよう
なサービスインスタンスに対してネットワークアドレスを割り当てた例がなかったた
め、同じネットワークアドレスを有する1つのプロセスが多くのサービスインスタン
スを含んで多数のサービスインスタンス通信を処理しなければならないという問題点
があった。
【００６２】
これにより、本発明では、新しいアドレス体系を導入して個別のサービスインスタ
ンスごとに独自的なアドレスを割り当てることで、サービスインスタンス間の通信処
理が効率的に成されるようにした。この場合、既存のようにゲームサーバで多数のゲ
ームセンターそれぞれにメッセージを分配しなくても良いため、管理費用が著しく減
少するという効果が生じる。
【００６３】
このため、本発明では、各サービスを唯一に識別するネットワークアドレスを前記
各サービスごとに割り当て、前記ネットワークアドレスを本発明に係る通信ネットワ
ークシステム全体で前記各サービスを唯一に識別することができるアドレス値で定義
する。本発明では、前記のようなネットワークアドレスに基づいてコネクタおよびブ
ローカを介してメッセージをルーティングし、MRSネットワークに登録されたサービ
ス間のデータ送受信が遂行されるようにする。
【００６４】
本発明では、ユニキャスト以外にもエニーキャストとマルチキャストという3種類
のアドレス類型を支援する。
【００６５】
本発明に係る通信ネットワークシステムは、各サービスごとに割り当てられたネッ
トワークアドレスであるユニキャストアドレスを用いてサービスをコネクタを介して
ブローカに登録し、前記登録されたサービスのいずれか一部を該当するサービスが提
供する機能によってエニーキャストグループまたはマルチキャストグループに加入さ
せ、MRSネットワーク上におけるメッセージルーティングを介して前記登録されたサ
ービスとエニーキャストグループまたはマルチキャストグループに加入したサービス
間のデータ送受信を遂行することができる。すなわち、本発明では、メッセージを送
信するソースのユニキャストアドレスからメッセージを受信する宛先のエニーキャス
トアドレスにデータを送信したり受信することができる。
【００６６】
このため、本発明に係る通信ネットワークシステムのコネクタは、サービスをブロ
ーカに登録し、前記登録されたサービスの少なくとも一部を該当するサービスが提供
する機能によってエニーキャストグループまたはマルチキャストグループに加入させ
る役割をすることができ、MRSネットワーク上のブローカは、特定のサービスから受
信されたメッセージをルーティングしてエニーキャストグループまたはマルチキャス
トグループに加入した第2サービス間のデータ送受信を遂行する役割をすることがで
きる。
【００６７】
また、ブローカには、各サービスのユニキャストアドレスとともにエニーキャスト
グループまたはマルチキャストグループに加入したサービスのエニーキャストアドレ
スまたはマルチキャストアドレスが登録される。
【００６８】
一例として、ゴーストップゲームサーバを提供する1つのサービスAが生成された
場合、コネクタはサービスAのユニキャストアドレスをブローカに登録した後、サー
ビスAをゴーストップゲームサービス提供に関するマルチキャストグループに加入さ
せることができる。この後、あるサービスBがゴーストップゲームサーバに対して、
現在ゲームに参加しているユーザ数を質疑するパケットを送信すれば、ブローカはこ
れを受信してサービスAを始めとしたマルチキャストグループに加入しているすべてのサービスのマルチキャストアドレスに送信することができ、サービスAは前記質疑
に対する回答をブローカを介して受信することができるようになる。
【００６９】
このように、本発明において、各サービスは、その属性によってエニーキャストグ
ループまたはマルチキャストグループにグルーピングされるが、前記グルーピングは
各サービスごとに割り当てられたネットワークアドレスであるユニキャストアドレス
を介して成されることができる。したがって、前記グルーピングされるサービスは、
相違した物理的サーバで動作するサービスである。
【００７０】
図8は、本発明に係るアドレス体系を説明するための図である。
【００７１】
図8において、キャストタイプはアドレスの類型を示し、CT_UNICAST、CT_MULTICASTおよびCT_ANYCASTうち1つの値を有する。
【００７２】
各サービスごとに割り当てられるネットワークアドレスであるユニキャストアドレ
スは、MRSネットワークを用いるすべてのサービスを唯一に区分することができるア
ドレスである。ユニキャストアドレスは、本発明に係る通信ネットワークシステムの
全体ネットワークで特定のサービスが駆動されているサーバを区分するサーバ名と、
同じサーバ内で該当のサービスを唯一に区分するインスタンスIDと、を含んで構成
される。
【００７３】
サーバ名とは、MRSネットワークを用いるサービスが駆動されているコンピュータ
ハードウェアであるサーバに対する区分を示す11バイトの唯一な値を意味する。ま
た、全体ネットワークでサービスが駆動されているサーバを区分する11バイトの唯
一な値としてコンピュータ名が用いられる。
【００７４】
インスタンスIDとは、同じサーバ内でサービスを唯一に区分する識別子である。
サービスのうち一部サービスにはインスタンスIDに所定の予約値が割り当てられ、
残りのサービスにはインスタンスIDにサーバで動的に生成される値が割り当てられ
る。
【００７５】
例えば、1〜65535までの値は固定されたユニキャストアドレスが必要なサービスの
ために予約されており、65536以後の値に対してはサーバ内で唯一に動的に割り当て
て用いることができるようにする。ここで、固定されたユニキャストアドレスが必要
なサービスには、本発明に係る通信ネットワークシステムの開始時から終了時まで持
続的に動作するサービスなどが含まれる。
【００７６】
このようなユニキャストアドレスは下記表4のように整理される。
【００７７】
【表４】
2008526085.tif 000006
【００７８】
マルチキャストアドレスとエニーキャストアドレスは単純に15バイト長さの値を
用いるため、サービス間で自由に設定して用いることができる。該値は全体ネットワ
ーク上で唯一でなければならず、事前に公知されなければならない。
【００７９】
マルチキャスト／エニーキャストアドレスは下記表5のように整理される。
【００８０】
【表５】
2008526085.tif 000007
【００８１】
本発明に係るMRSネットワークを用いる場合として、（1）サービスが他のサービ
スで提供される機能を用いるためにMRSネットワークに接続する場合と、（2）サー
ビスが他のサービスから要請された事項を処理する機能を提供するためにMRSネット
ワークに接続する場合と、がある。
【００８２】
サービスが他のサービスで提供される機能を用いるためにMRSネットワークに接続
する前記（1）の場合に対する一例として、ユーザログイン情報を確認するためにロ
グインサーバに要請を送信して回答を得るというサービスがある。このように、他の
サービスで提供される機能を用いるためのサービスは、MRSネットワークとサービス
とを媒介するモジュールであるコネクタを介して次のように動作する。
【００８３】
まず、プロセスを開始するときに、サービスとコネクタ間のデータ送受信のために
プログラミングインターフェースを初期化し、MRSネットワークにサービスのネット
ワークアドレスであるユニキャストアドレスを登録した後、他のサービスに要請メッ
セージを送信して回答メッセージを受信する。また、他のサービスで提供される機能
をすべて用いた場合には、MRSネットワークからサービスのユニキャストアドレスを
解除し、プロセスが終了するときに前記プログラミングインターフェースを終了する。
【００８４】
サービスが他のサービスから要請された事項を処理する機能を提供するためにMRS
ネットワークに接続する前記（2）の場合に対する一例として、データベース照会機
能を提供するサービスと、ユーザのログイン情報または位置情報を提供するサービス
と、がある。このような他のサービスに特定の機能を提供するためのサービスは、
MRSネットワークとサービスとを媒介するモジュールであるコネクタを介して次のよ
うに動作する。
【００８５】
まず、プロセスが開始するときに、サービスとコネクタ間でデータを送受信するた
めにプログラミングインターフェースを初期化し、MRSネットワークにサービスのユ
ニキャストアドレスを登録した後、該当するサービスが提供する機能によってエニー
キャストまたはマルチキャストアドレスに加入し、他のサービスから要請メッセージ
を受信して回答メッセージを送信する。また、他のサービスに特定の機能をすべて提
供した場合には、加入したエニーキャストまたはマルチキャストグループから脱退し、
MRSネットワークからサービスのユニキャストアドレスを解除し、プロセスが終了す
るときに前記プログラミングインターフェースを終了する。
【００８６】
このように、本発明において、コネクタは、サービスのユニキャストアドレスを
MRSネットワークに登録し、前記サービスを提供する機能によってエニーキャストま
たはマルチキャストアドレスに加入させ、サービスが終了するときには前記加入した
エニーキャストまたはマルチキャストグループから脱退させることができる。
【００８７】
以下、本発明に係るMRSネットワークが支援するデータの送受信方式について説明
する。
【００８８】
まず、ユニキャストデータの送受信方式について説明する。図9は、本発明の一実
施形態に係るユニキャストデータの処理方法を説明するための図である。
【００８９】
本発明に係るMRSネットワーク上のすべてのブローカは、メッセージルーティング
処理のためのルーティングテーブルを維持する。このようなルーティングテーブルに
は、各サービスごとに割り当てられたユニキャストアドレスと各サービスと連結した
ブローカのソケットID（ソケットアドレス）が相互対応した状態で維持されている。
【００９０】
ブローカはルーティングテーブルに維持されたサービスのユニキャストアドレスおよびブローカのソケットIDを用いて、各サービス間のメッセージルーティングを処
理する。
【００９１】
図9〜12を例とすれば、各ブローカが維持しているルーティングテーブル上において、サービスS1とサービスS2の各ユニキャストアドレスは、ブローカCS4のソケットIDである221.148.17.54またはcs4.platform.nhncorp.comと対応した状態で維持され、サービスS3とサービスS4の各ユニキャストアドレスは、ブローカCS8のソケットIDである221.148.17.51またはcs8.platform.nhncorp.comと対応した状態で維持され、サービスS5とサービスS6のユニキャストアドレスは、ブローカCS6のソケットIDである221.148.17.55またはcs6.platform.nhncorp.comと対応した状態で維持される。
【００９２】
一例として、図9においてブローカCS4は、自身と連結設定されたサーバS1から宛先をユニキャストアドレスとして有するメッセージの伝達要請を受信する場合、自身のルーティングテーブルを参照して前記宛先に対応するソケットIDを有するブローカを識別する。
【００９３】
前記宛先がサービスS2である場合、ルーティングテーブル上においてサービスS2は、ブローカCS4のソケットIDと対応して維持されているため、ブローカCS4は他のブローカを経ずに前記宛先に該当するサービスS2に前記メッセージを直接伝達する。
【００９４】
一方、前記宛先がサービスS3である場合、ルーティングテーブル上においてサービスS3は、ブローカSC8のソケットIDと対応して維持されているため、ブローカCS4はブローカCS8に前記メッセージを伝達し、ブローカCS8が前記宛先に該当するサービスS3に前記メッセージを伝達するようになる。
【００９５】
図10は、本発明の一実施形態に係るマルチキャストデータの処理方法を説明するための図である。
【００９６】
図10〜12において、S1はエニーキャストないしマルチキャストグループに加入していないサービスであり、S2、S4およびS6はエニーキャストグループに加入したサービスであり、S3とS5はマルチキャストグループに加入したサービスであると仮定する。
【００９７】
本発明に係るMRSネットワーク上のブローカは、このように自身のルーティングテーブルに各サービスのユニキャストアドレスと各サービスと連結したブローカのソケットIDを対応させて維持する反面、マルチキャストグループに加入したサービスに対しては、ルーティングテーブルにそれに係るマルチキャストアドレスをさらに含んで維持する。この場合、前記ルーティングテーブルでは、前記マルチキャストアドレスがそれぞれ連結したブローカのソケットIDに対応して維持する。
【００９８】
一例として、図10においてブローカCS4は、自身と連結設定されたサービスS1から宛先をマルチキャストアドレスとして有するメッセージの伝達要請を受信する場合、自身のルーティングテーブルを参照して前記宛先に対応するソケットIDを有する1つ以上のブローカを識別する。
【００９９】
この場合、ルーティングテーブルを介してマルチキャストグループに加入したサービスS3とサービスS5に対応するソケットIDを有するブローカCS8とブローカCS6が識別され、ブローカCS4はブローカCS8とブローカCS6に前記メッセージを伝達する。これにより、ブローカCS8は自身と連結したサービスS3に前記メッセージを伝達し、ブローカCS6は自身と連結したサービスS5に前記メッセージを伝達する。
【０１００】
ブローカCS4にマルチキャストグループに加入したサービスS7（図示せず）が連結している場合には、ブローカCS4は自身のルーティングテーブルを介してサービスS7と対応したソケットIDが自身のソケットIDであることを識別し、他のブローカを経ずにそのままサービスS7に前記メッセージを伝達することができる。
【０１０１】
図11と図12は、本発明の一実施形態に係るエニーキャストデータの処理方法を説明するための図である。
【０１０２】
本発明に係るMRSネットワーク上のブローカは、前記のように、自身のルーティングテーブルに各サービスのユニキャストアドレスと各サービスと連結したブローカのソケットIDを対応させて維持する反面、エニーキャストグループに加入したサービスに対しては、ルーティングテーブルにそれに係るエニーキャストアドレスをさらに含んで維持することができる。この場合、前記ルーティングテーブルにおいては、前記エニーキャストアドレスがそれぞれ連結したブローカのソケットIDに対応して維持される。
【０１０３】
一例として、ブローカCS4は、自身と連結したサービスS1から宛先をエニーキャストアドレスとして有するメッセージの伝達要請を受信する場合、自身のルーティングテーブルを参照して前記宛先に対応するソケットIDを有する1つ以上のブローカを識別し、そのうち1つを選択する。
【０１０４】
この場合、ルーティングテーブルを介してエニーキャストグループに加入したサービスS2、サービスS4、サービスS6に対応するソケットIDを有するブローカCS4、CS8、CS6が識別され、ブローカCS4はそのうち1つ（ブローカCS4、CS8、CS6のうち１つ）を選択する。
【０１０５】
図11は、ブローカCS4が前記識別されたブローカから自身のブローカCS4を選択した場合を示した図である。図11に示すように、ブローカCS4は他のブローカを経ずにそのままサービスS2に前記メッセージを伝達する。
【０１０６】
図12は、ブローカCS4が前記識別されたブローカからブローカCS8またはブローカCS6を選択した場合を示した図である。ブローカCS8が選択された場合、ブローカCS4は前記メッセージをブローカCS8に伝達し、これによってブローカCS8はサービスS4に前記メッセージを伝達するようになる。一方、ブローカCS6が選択された場合、ブローカCS4は前記メッセージをブローカCS6に伝達し、これによってブローカCS6はサービスS6に前記メッセージを伝達するようになる。もし、1つのブローカと連結したエニーキャストアドレスが多数である場合には、メッセージを伝達するブローカがそのうち1つを任意で選択してメッセージを伝達することができる。
【０１０７】
本発明の一実施形態によれば、ソースに該当するサービスのユニキャストアドレスから宛先をエニーキャストアドレスとして有するエニーキャストデータを受信したMRSネットワーク上のブローカは、前記エニーキャストデータを送信するためのルーティング距離が最小であるサービスを選択して前記エニーキャストデータを送信することができる。
【０１０８】
本実施形態において、エニーキャストデータを受信したMRSネットワーク上のブローカは、エニーキャストグループに加入しているサービスのうち自身と直接連結しているサービスがある場合には、該サービスにデータを送信するように動作し、直接連結したサービスがない場合には、フルメッシュ形態で連結した他のブローカを介して無作為でデータを送信するサービスを選択することができる。
【０１０９】
すなわち、エニーキャストデータを受信したMRSネットワーク上のブローカは、自身と直接連結したコネクタを介して登録されたサービスが存在する場合には、そのうち1つを前記エニーキャストデータを送信するサービスとして選択するが、存在しない場合には、エニーキャストグループに加入した多数のサービスのうち任意の1つを選択して前記エニーキャストデータを送信することができる。
【０１１０】
本実施形態によれば、前記のようにエニーキャストデータを処理することでルーティング距離を画期的に短縮して迅速なルーティングが可能であり、L4スイッチを用いなくても自然な負荷分散（load balancing）が具現される効果が生じる。
【０１１１】
以下、本発明に係る通信ネットワークシステムのサブシステムであるサービス、コネクタおよびブローカの動作過程を図13〜19を参照して説明する。
【０１１２】
図13は、本発明の一実施形態に係るサービスの登録過程を示したフローチャートである。本発明に係る通信ネットワークシステムで特定のサービスを提供したりサービスを用いようとするシステムは、自身をコネクタを介してMRSネットワークに登録しなければならない。
【０１１３】
サービスはコネクタにサービス登録メッセージを送信し（段階1301）、コネクタは前記サービス登録メッセージを分析して登録済みのサービスであるかを検査する（段階1302）。登録済みのサービスでない場合には、前記サービス登録メッセージを前記ブローカに伝達する（段階1303）。
【０１１４】
ブローカは前記サービス登録メッセージを送信したサービスのルーティング情報を自身のルーティングテーブルに追加してルーティングテーブルを更新し（段階1304）、前記ルーティング情報を他のブローカに送信する（段階1305）。これを受信した他のブローカは、前記ルーティング情報を用いて自身のルーティングテーブルを更新する（段階1306）。
【０１１５】
このように、本発明において、ブローカは、自身のルーティングテーブルが更新された場合、自身とフルメッシュ形態で連結したMRSネットワーク上の他のブローカすべてに前記更新によって変更された情報を送信し、これを受信したブローカは前記変更されたルーティング情報を受信して自身のルーティングテーブルを更新する。その結果、MRSネットワーク上のすべてのブローカは常に最新のルーティング情報を維持することができるようにする。
【０１１６】
図14は、本発明の一実施形態に係るサービスの解除過程を示したフローチャートである。MRSネットワークに自身を登録したシステムは、自身をMRSネットワークから除去するためにコネクタを介してサービス解除過程を遂行する。サービス解除過程が遂行された後には、MRSネットワークを介したすべてのサービス要請は遮断される。
【０１１７】
サービスはコネクタにサービス解除メッセージを送信し（段階1401）、このコネクタは前記サービス解除メッセージを分析して最終解除であるかを検査し（段階1402）、最終解除であれば前記サービス解除メッセージをブローカに伝達する（段階1403）。
【０１１８】
ブローカは前記サービス解除メッセージを送信したサービスのルーティング情報を自身のルーティングテーブルから削除してルーティングテーブルを更新し（段階1404）、前記ルーティング情報の削除を他のブローカに通報する（段階1405）。これを受信した他のブローカは前記ルーティング情報の削除を感知して自身のルーティングテーブルを更新する（段階1406）。
【０１１９】
図15は、本発明の一実施形態に係るメッセージの送受信過程を示したフローチャートであって、本発明において、サービスを用いるためにサービスにメッセージを送信したり、サービス要請のためにメッセージが伝達される過程を示したものである。
【０１２０】
特定のサービスを用いようとするサービスは、まず、連結メッセージをコネクタに伝達して仮想の連結を設定する（段階1501）。このとき、用いようとするサービスのアドレスを規定する。
【０１２１】
メッセージを送信するときに、サービスはコネクタのプログラミングインターフェースを用いてメッセージ送信を遂行する（段階1502）。コネクタはサービスから伝達されたメッセージにMRSネットワークで用いられるメッセージルーティングプロトコルによるMRPHeaderを追加した後、自身と連結したブローカに該当のメッセージを送信する（段階1503）。ブローカはコネクタから受信したメッセージの宛先を検索し（段階1504）、該当のブローカまたはコネクタにメッセージを送信する（段階1505）。
【０１２２】
メッセージを受信するときに、ブローカは他のブローカからメッセージを受信し（段階1506）、受信したメッセージの宛先を検索し（段階1507）、該当のコネクタにメッセージを送信する（段階1508）。コネクタは送信されたメッセージのMRPHeaderを除去してブローカから送信されたメッセージの宛先アドレスとインスタンスを検索し（段階1509）、該当のサービスにメッセージを送信して該当のサービスがメッセージを受信するようになる（段階1510）。
【０１２３】
本発明に係る通信ネットワークシステムでは、前記のような過程を介して、コネクタを介してブローカに伝達されるメッセージが他のブローカやコネクタに透明に送受信されるようになる。また、特定のサービスが伝達したメッセージは、ルーティング経路を介して経路上に存在するブローカ間に透明に送受信されるようになる。
【０１２４】
図16は、本発明の一実施形態において、ブローカがMRSネットワークに新たに追加される場合に進行される過程を示したフローチャートである。
【０１２５】
新たに追加されるブローカは、まず、他のブローカとの連結を待機して連結待機状態を維持しながら（段階1601）、実行済みの既存のブローカと連結を設定する（段階1602）。新たなブローカと連結した既存ブローカは、自身と連結した他のブローカが記録されたブローカリストに新たなブローカを追加して自身のブローカリストを更新する（段階1603）。これと同じ方式で、新たなブローカは実行済みのさらに他の既存のブローカと連結を設定する（段階1604）。この結果、連結した他の既存のブローカのブローカリストも更新される（段階1605）。このように、MRSネットワーク上で実行されているすべてのブローカのブローカリストが更新される。
【０１２６】
新たなブローカは、既存のブローカとすべて連結した後、そのうち1つのブローカを任意に選択する（段階1606）。前記選択されたブローカにルーティングテーブルを要請し（段階1607）、これを受信し（段階1608）、自身のルーティングテーブルに反映した後（段階1609）、自身がコネクタと連結する準備が整ったことを他のブローカに通報する（段階1610）。
【０１２７】
前記準備事実の通報を受けたブローカは、自身と連結したコネクタのうち新しいブローカに移る再設定コネクタ数を計算し、その数に該当するコネクタを選択する（段階1611）。この場合、既存のブローカは、全体ネットワーク上に存在するすべてのコネクタとブローカ間の連結数を全体ブローカ数で割った平均連結数に比べて自身が有しているコネクタとの連結数が多い場合には、その超過分に該当する数のコネクタを再設定コネクタとして選択することができる。
【０１２８】
また、前記準備事実が通報された既存のブローカは、自身と連結したすべてのコネクタに新たなブローカが連結したことを通報し（段階1612）、該通報を受けたコネクタは、自身と連結したブローカが記録されたブローカリストに新しいブローカを追加する（段階1613）。
【０１２９】
一方、前記選択された再設定コネクタには、新たなブローカとの連結の再設定を要請する連結再設定命令を含んだメッセージが伝達される（段階1614）。これが伝達されたコネクタは新たなブローカとの連結を設定し、自身と連結したサービスに対するサービス登録メッセージを、前記のように連結された新たなブローカに伝達する（段階1615）。
【０１３０】
一方、新たなブローカと前記選択された再設定コネクタ間の連結設定の完了による新たなブローカおよび既存のブローカのルーティングテーブルがすべて更新される。
【０１３１】
段階1610〜1615は、MRSネットワーク上で実行されているすべてのブローカに対して遂行されることができる。このような過程を介して、実行済みのブローカと連結していたコネクタおよびこれと連結したサービスの一定部分がMRSネットワークに新たに追加されたブローカに移るようになり、ブローカ間の効率的な負荷分散が成されるようになる。
【０１３２】
図17は、本発明の一実施形態において、ブローカが正常に終了する場合に進行される過程を示したフローチャートである。
【０１３３】
正常に終了するブローカは、自身にコネクタがこれ以上連結しないように設定し（段階1701）、自身が終了するという終了予定事実を他のブローカに通報する（段階1702）。前記終了するブローカと前記終了予定事実が通報されたブローカは、自身と連結したコネクタに前記終了予定事実を通報する（段階1703）。
【０１３４】
前記終了するブローカは、自身と連結したコネクタに他のブローカに移るように要請するコネクタ再設定に関するメッセージを送信し（段階1704）、前記メッセージが送信されたコネクタは他のブローカと連結して、自身と連結したサービスに対するサービス情報メッセージを送信する（段階1705）。
【０１３５】
前記終了するブローカによってコネクタと新たに連結したブローカは、自身のルーティング情報を更新し、前記終了するブローカおよび他のブローカに前記更新されたルーティング情報を送信する（段階1706）。
【０１３６】
前記終了するブローカは、前記送信されたルーティング情報を用いて自身のルーティングテーブルを更新し、前記更新された対象との連結がこれ以上自身のルーティングテーブルに存在しないかを検査し（段階1707）、これ以上存在しなければ連結を終了する。
【０１３７】
一方、前記終了するブローカは、自身と連結したコネクタに他のブローカに移るように要請する連結再設定メッセージを送信した時点から所定の時間が経過したかを検査する（段階1709）。この結果、一定の時間が経過した後にも自身と連結したコネクタが存在する場合は、すべてのコネクタとの連結を終了して自身も終了する（段階1710）。
【０１３８】
図18は、本発明の一実施形態において、ブローカの非正常的な終了を他のブローカが感知する場合に進行される過程を示したフローチャートである。
【０１３９】
非正常的に終了すれば（段階1801）、他のブローカは特定のブローカの非正常的な終了を感知し（段階1802）、それによって自身の最大キャパシティを再調整する（段階1803）。
【０１４０】
例えば、ブローカ1つと連結するコネクタの最大数「50」が本来の最大キャパシティであれば、他のブローカが非正常的に終了することが感知された場合には、ブローカ1つと連結するコネクタの最大数を「60」に再調整し、非正常的に終了するブローカと連結したコネクタが迅速に残りのブローカに動いて連結されるように動作することができる。この場合、サービス連結が中断する時間を画期的に短縮することができる。
【０１４１】
他のブローカの非正常的な終了を感知したブローカは自身のルーティング情報を更新し、これを他のブローカにも通報してルーティングテーブルを更新するようにし（段階1804）、コネクタにブローカの終了事実を通報して、コネクタが自身のブローカリストを更新するようにする（段階1805）。
【０１４２】
図19は、本発明の一実施形態において、ブローカの非正常的な終了をコネクタが感知する場合に進行される過程を示したフローチャートである。
【０１４３】
ブローカが非正常的に終了されれば（段階1901）、前記第1ブローカと連結したコネクタは自身と連結した前記第1ブローカが非正常的に終了した事実を感知し（段階1902）、自身のブローカリストから非正常的に終了したブローカを削除する（段階1903）。
【０１４４】
非正常的に終了したブローカをブローカリストから削除したコネクタは、自身のブローカリスト上にあるブローカの1つを任意で選択し（段階1904）、前記選択したブローカに連結し（段階1905）、自身と連結したすべてのサービスを前記連結したブローカに登録する（段階1906）。
【０１４５】
一方、前記のように、サービスが追加で登録されたブローカは、自身の更新されたルーティング情報を他のブローカに送信して、他のブローカにサービス登録事実を通報する（段階1907）。
【０１４６】
以下、本発明に係る通信ネットワークシステムのサブシステムであるコネクタの構造および各構成要素の機能について説明する。
【０１４７】
図20は、本発明に係るコネクタの構造を示したブロック図である。
【０１４８】
図20に示すように、コネクタ2000は、API2001と、メッセージキュー管理モジュール2002と、サービスプール管理モジュール2003と、サービス管理モジュール2004と、連結管理モジュール2005と、を含んで構成される。
【０１４９】
API2001とは、コネクタ2000が提供する機能をコネクタ2000と連結したサービスに露出するアプリケーションプログラミングインターフェースである。本発明に係るMRSネットワークを用いようとするシステムは、データを送受信するためにAPI2001を用いる。
【０１５０】
図21は、コネクタとサービスのプロセスに対する関係とAPI2001を説明するための図である。
【０１５１】
図21に示すように、本発明の一実施形態によれば、コネクタとサービスは同じプロセス内に含まれている。コネクタは1つのプロセス内に1つだけ存在し、サービスは1つのプロセス内に少なくとも1つ以上が存在する。すなわち、プロセス別に1つのコネクタが存在し、コネクタは自身が属するプロセス内に存在するすべてのサービスとMRSネットワークを構成するブローカ間の連結を媒介することができる。
【０１５２】
本実施形態によれば、コネクタとプロセスが1：1で対応することで通信ネットワークシステムの統一性を図ることができる。また、互いに属するプロセスにて異なるサービスが1つの同じコネクタを介して同じブローカに連結することで非効率的なルーティングを予防することができ、データ送受信上の混乱を避けることができる。
【０１５３】
一方、図21に示すように、1つのプロセス内に存在する1つ以上のサービスは、1つのコネクタ2000を介してMRSネットワークと連結する。ここで、サービスとコネクタ2000間の連結およびデータ送受信は、API2001を介して成される。
【０１５４】
すなわち、MRSネットワークを用いてデータを送受信するために、サービスはMRSネットワークと直接連結を設定してデータを送受信することはできず、コネクタ2000で提供するAPI2001を用いてデータを送受信するようになる。この結果、API2001は、サービスからサービスの登録または解除の要請、ブローカ2010へのデータ送信の要請などを受信するようになる。
【０１５５】
コネクタ2000は、このようなAPI2001を提供するモジュールであって、MRSネットワークを用いる各プロセスに積載され、該当のプロセスで生成されるすべてのサービスに対するMRSネットワークにメッセージを送受信する機能を担当する。
【０１５６】
メッセージキュー管理モジュール2002は、送受信される本発明に係るMRSネットワーク上で用いられるメッセージルーティングプロトコルパケットを管理する役割を行う。ここで、MRPパケットとは、コネクタ2000とブローカ2010間で送受信されるデータの単位を意味する。
【０１５７】
図22は、このようなメッセージキュー管理モジュール2002の構造を示したブロック図である。
【０１５８】
図22に示すように、メッセージキュー管理モジュール2002は、送信キュー2201と、受信キュー2202と、を含む。
【０１５９】
ここで、送信キュー2201はブローカ2010に送信するMRPパケットを管理し、受信キュー2202はブローカ2010から受信されたMRPパケットを管理する役割を担当する。
【０１６０】
サービスプール管理モジュール2003は、サービスをブローカ2010に登録または解除し、登録されたサービスを管理する役割をする。また、サービス管理モジュール2004は、前記登録されたサービスに対する情報を管理する役割をする。
【０１６１】
図23は、このようなサービス管理モジュール2004の構造を示したブロック図である。
【０１６２】
図23に示すように、サービス管理モジュール2004は、受信メッセージキュー2301と、受信バッファキュー2302と、完成状態キュー2303と、を含む。
【０１６３】
ここで、受信メッセージキュー2301はブローカ2010から受信されたメッセージを管理し、受信バッファキュー2302はサービスが登録した受信バッファを管理し、完成状態キュー2303はサービスが要請した入出力に対する完成した結果を管理する役割を担当する。
【０１６４】
連結管理モジュール2005は、MRPパケットを送受信してブローカ2010とのソケット連結を管理する役割をする。
【０１６５】
図24は、このような連結管理モジュール2005の構造を示したブロック図である。
【０１６６】
図24に示すように、連結管理モジュール2005は、メッセージ送信モジュール2401と、連結制御モジュール2402と、を含む。
【０１６７】
ここで、メッセージ送信モジュール2401は、メッセージキュー管理モジュール2002から送信するMRPパケットをローディングしてブローカ2010に送信し、ブローカ2010から受信されたMRPパケットをメッセージキュー管理モジュール2002に伝達する役割を担当する。一方、連結制御モジュール2402は、コネクタ2000とブローカ2010間の制御メッセージを処理して両者の連結を制御する役割を担当する。
【０１６８】
以下、本発明に係る通信ネットワークシステムのさらに他のサブシステムであるブローカの構造および各構成要素の機能について説明する。
【０１６９】
図25は、ブローカの構造を示したブロック図である。
【０１７０】
図25に示すように、ブローカ2500は、リンク管理モジュール2501と、ルーティング情報管理モジュール2502と、メッセージ分類モジュール2503と、メッセージルータ2504と、メッセージデシリアライザ2505と、メッセージトランザクタ2506と、メッセージシリアライザ2507と、自動コンフィギュレータ2508と、を含んで構成される。
【０１７１】
リンク管理モジュール2501は、コネクタまたは他のブローカとの連結を維持および管理し、前記コネクタまたは他のブローカとデータ送受信を遂行する役割をする。
【０１７２】
ルーティング情報管理モジュール2502は、ブローカ2500に登録されたサービスのルーティング情報を維持および管理する役割をし、ブローカ2500と連結したコネクタまたは他のブローカとの連結情報を含む連結プールを維持することができる。
【０１７３】
メッセージ分類モジュール2503は、リンク管理モジュール2501が受信したデータの形態を把握し、所定の基準によって前記受信したデータを単純メッセージと複雑メッセージに分類する役割をする。
【０１７４】
メッセージルータ2504は、メッセージ分類モジュール2503から単純メッセージを受信し、ルーティング情報管理モジュール2502から前記単純メッセージと連関した宛先の位置情報を獲得してリンク管理モジュール2501に伝達する役割をする。
【０１７５】
メッセージデシリアライザ2505は、メッセージ分類モジュール2503から複雑メッセージを受信し、前記複雑メッセージを加工して客体化する役割をする。
【０１７６】
メッセージトランザクタ2506は、メッセージデシリアライザ2505から客体を受信し、前記客体を用いてブローカ2500を制御する役割をする。
【０１７７】
メッセージシリアライザ2507は、メッセージトランザクタ2506から前記客体を受信し、前記客体を送信可能な線形データに加工してリンク管理モジュール2501に伝達する役割をする。
【０１７８】
自動コンフィギュレータ2508は、ブローカ2500が属したネットワークの状態を追跡してブローカ2500の状態を自動で調整する役割をする。
【０１７９】
図26は、リンク管理モジュール2501の構造を示したブロック図である。
【０１８０】
図26に示すように、リンク管理モジュール2501は、OSソケットサブシステム2601と、リンクアセプタ2602と、データ受信モジュール2603と、データ送信モジュール2604と、リンクエージェント2605と、を含む。
【０１８１】
OSソケットサブシステム2601は、ブローカ2500と連結したコネクタまたは他のブローカとのデータを送受信するためのインターフェイスの役割を担当する。
【０１８２】
リンクアセプタ2602は、ブローカ2500と連結したコネクタまたは他のブローカからの連結要請をOSソケットサブシステム2601を介して受信し、前記連結要請による連結情報をルーティング情報管理モジュール2502が維持する連結プールに記録する役割を担当する。
【０１８３】
データ受信モジュール2603は、ブローカ2500と連結したコネクタまたは他のブローカからデータをOSソケットサブシステム2601を介して受信し、これをメッセージ分類モジュール2503に伝達する役割を担当する。
【０１８４】
データ送信モジュール2604は、メッセージシリアライザ2507で加工されたデータを受信し、OSソケットサブシステム2601を介してブローカ2500と連結したコネクタまたは他のブローカに送信する役割を担当する。
【０１８５】
リンクエージェント2605は、データ送信モジュール2604の要請によってOSソケットサブシステム2601を介してブローカ2500と連結したコネクタまたは他のブローカとの連結を試みる。この結果、連結が成功すれば、これによって生成された連結情報を用いてルーティング情報管理モジュール2502が維持する連結プールを更新する役割を担当する。
【０１８６】
一方、データ送信モジュール2604は、前記連結プールを照会して送信するデータの宛先に関するコネクタまたは他のブローカとの連結可否を確認し、連結設定がなされていない場合には、リンクエージェント2605にブローカ2500と連結したコネクタまたは他のブローカとの連結設定を要請した後、データ送信を試みるように動作する。
【０１８７】
本発明に係る通信ネットワークにおけるデータの送受信方法は、コンピュータにより具現される多様な動作を実行するためのプログラム命令を含むコンピュータ読み取り可能な媒体を含む。前記媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むこともできる。前記媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。
【０１８８】
コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標）ディスクおよび磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。前記媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光または金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるもののような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。前記したハードウェア要素は、本発明の動作を実行するために一以上のソフトウェアモジュールとして作動するように構成することができ、その逆もできる。
【０１８９】
上述したように、本発明の好ましい実施形態を参照して説明したが、該当の技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【図面の簡単な説明】
【０１９０】
【図１】従来技術に係るゲームサーバ間のネットワーク連結を示した図である。
【図２】従来技術において、ゲームサーバ数が増加し続けることによって生じ得るゲームサーバ間のネットワーク連結を示した図である。
【図３】本発明に係るバス型ネットワーク構造を概略的に示した図である。
【図４】本発明に係るバス型ネットワーク構造の通信ネットワークシステムの連結を概略的に示した図である。
【図５】本発明に係る通信ネットワークシステムでブローカ、コネクタおよびサービスの連結を示した図である。
【図６】本発明に係るMRSネットワークを介して各種サーバと連結した一例を示した図である。
【図７】本発明に係る通信ネットワークシステム上で用いられるメッセージの構造を説明するための図である。
【図８】本発明に係るアドレス体系を説明するための図である。
【図９】本発明の一実施形態に係るユニキャストデータの処理方法を説明するための図である。
【図１０】本発明の一実施形態に係るマルチキャストデータの処理方法を説明するための図である。
【図１１】および
【図１２】本発明の一実施形態に係るエニーキャストデータの処理方法を説明するための図である。
【図１３】本発明の一実施形態に係るサービスの登録過程を示したフローチャートである。
【図１４】本発明の一実施形態に係るサービスの解除過程を示したフローチャートである。
【図１５】本発明の一実施形態に係るメッセージの送受信過程を示したフローチャートである。
【図１６】本発明の一実施形態において、ブローカがMRSネットワークに新たに追加される場合に進行される過程を示したフローチャートである。
【図１７】本発明の一実施形態において、ブローカが正常的に終了する場合に進行される過程を示したフローチャートである。
【図１８】本発明の一実施形態において、ブローカの非正常的な終了を他のブローカが感知する場合に進行される過程を示したフローチャートである。
【図１９】本発明の一実施形態において、ブローカの非正常的な終了をコネクタが感知する場合に進行される過程を示したフローチャートである。
【図２０】本発明に係るコネクタの構造を示したブロック図である。
【図２１】本発明に係るコネクタで提供されるプログラミングインターフェースであるAPIを説明するための図である。
【図２２】本発明に係るコネクタの一構成要素であるメッセージキュー管理モジュールの構造を示したブロック図である。
【図２３】本発明に係るコネクタの一構成要素であるサービス管理モジュールの構造を示したブロック図である。
【図２４】本発明に係るコネクタの一構成要素である連結管理モジュールの構造を示したブロック図である。
【図２５】本発明に係るブローカの構造を示したブロック図である。
【図２６】本発明に係るブローカの一構成要素であるリンク管理モジュールの構造を示したブロック図である。
【図１】
2008526085.tif 000008
【図２】
2008526085.tif 000009
【図３】
2008526085.tif 000010
【図４】
2008526085.tif 000011
【図５】
2008526085.tif 000012
【図６】
2008526085.tif 000013
【図７】
2008526085.tif 000014
【図８】
2008526085.tif 000015
【図９】
2008526085.tif 000016
【図１０】
2008526085.tif 000017
【図１１】
2008526085.tif 000018
【図１２】
2008526085.tif 000019
【図１３】
2008526085.tif 000020
【図１４】
2008526085.tif 000021
【図１５】
2008526085.tif 000022
【図１６】
2008526085.tif 000023
【図１７】
2008526085.tif 000024
【図１８】
2008526085.tif 000025
【図１９】
2008526085.tif 000026
【図２０】
2008526085.tif 000027
【図２１】
2008526085.tif 000028
【図２２】
2008526085.tif 000029
【図２３】
2008526085.tif 000030
【図２４】
2008526085.tif 000031
【図２５】
2008526085.tif 000032
【図２６】
2008526085.tif 000033
【国際調査報告】
2008526085.tif 000034
2008526085.tif 000035