JP4963773B2 - ブロードキャストネットワーク - Google Patents
ブロードキャストネットワーク Download PDFInfo
- Publication number
- JP4963773B2 JP4963773B2 JP2002515774A JP2002515774A JP4963773B2 JP 4963773 B2 JP4963773 B2 JP 4963773B2 JP 2002515774 A JP2002515774 A JP 2002515774A JP 2002515774 A JP2002515774 A JP 2002515774A JP 4963773 B2 JP4963773 B2 JP 4963773B2
- Authority
- JP
- Japan
- Prior art keywords
- computer
- routine
- message
- block
- connection
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 claims description 533
- 230000008569 process Effects 0.000 claims description 398
- 238000012545 processing Methods 0.000 description 102
- 238000004891 communication Methods 0.000 description 72
- 238000010586 diagram Methods 0.000 description 37
- 230000004044 response Effects 0.000 description 36
- 238000012790 confirmation Methods 0.000 description 32
- 230000008439 repair process Effects 0.000 description 19
- 238000012546 transfer Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 238000005295 random walk Methods 0.000 description 7
- 238000012544 monitoring process Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000001629 suppression Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 240000008168 Ficus benjamina Species 0.000 description 1
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 241001310793 Podium Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1822—Conducting the conference, e.g. admission, detection, selection or grouping of participants, correlating users to one or more conference sessions, prioritising transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/189—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast in combination with wireless systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1053—Group management mechanisms with pre-configuration of logical or physical connections with a determined number of other peers
- H04L67/1055—Group management mechanisms with pre-configuration of logical or physical connections with a determined number of other peers involving connection limits
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Glass Compositions (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Studio Devices (AREA)
- Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
Description
(技術分野)
記載の技術は一般にはコンピュータネットワークに関し、より詳細には、基本ネットワークのコンピュータのサブセット(集合)のためのブロードキャストネットワークに関する。
【0002】
(背景)
二地点間ネットワークプロトコル、クライアント/サーバミドルウェア、マルチキャストネットワークプロトコル、およびピアツーピアミドルウェアなど、様々な種類のコンピュータネットワーク通信技術がある。これらの通信技術のそれぞれは利点と不都合点がある。しかし、いずれも広く分散したコンピュータ間で情報を同時に共有するのに非常に適しているとは言えない。例えば、ネットワーク会議プログラムなど協調的な処理を行うアプリケーションでは、地理的に分散している可能性のあるすべての参加者に適切なタイミングで情報を配信する必要がある。
【0003】
UNIX(登録商標)パイプ、TCP/IP、およびUDPなどの二地点間ネットワークプロトコルは、異なるコンピュータ上で処理を行って、二地点間接続を介して通信することができる。二地点間接続を使用して全関係者を相互接続することは、理論的には可能であるが、関係者の数が増加するのにあわせて比例しない。例えば、各関係プロセスは、すべての他の関係プロセスへの直接接続を管理する必要がある。しかしプログラマは単一の接続を管理するのが難しいことを認識しており、複数接続の管理はさらに複雑となる。また、関係するプロセスは、それらがサポートできる直接接続の数に制限されるかもしれない。これにより情報を共有可能な関係者の数も制限される。
【0004】
クライアント/サーバミドルウェアシステムは、情報を共有する種々のクライアント間の通信を調整するサーバを提供する。このサーバは、共有資源へのアクセスを制御する中央機関として機能する。クライアント/サーバミドルウェアシステムの例には、リモートプロシージャコール(「RPC」)、データベースサーバ、および共通オブジェクトリクエストブローカーアーキテクチャ(「CORBA」)がある。クライアント/サーバミドルウェアシステムは、多数の参加者間の情報の共有には特に適してはいない。詳細には、クライアントが共有する情報をサーバに格納すると、他の各クライアントは、サーバにポーリングして新しい情報が共有されていることを判断する必要がある。このようなポーリングは、通信ネットワークに非常に高いオーバーヘッドを課す。あるいは、各クライアントがサーバにコールバックを登録し、新しい情報が共有できる状態になるとサーバがコールバックを起動することもできる。このようなコールバック技術は、新しい情報を共有しようとする際には単一のサーバが各クライアントにコールバックする必要があるため、性能上の妨害を呈する。また、情報の共有全体の信頼性が単一サーバの信頼性に依存する。したがって、単一のコンピュータ(すなわちサーバ)の障害により、いずれのクライアントの間の通信も妨げられることになる。
【0005】
マルチキャストのネットワークプロトコルは、ネットワークの複数の受信者にブロードキャストメッセージを送信可能にする。このようなマルチキャストネットワークプロトコルの現在の実施例では、基となる(基本の)ネットワークに許容範囲を超えるオーバーヘッドを課す傾向にある。例えば、UDPによるマルチキャストでは、すべての参加可能な者を見つけようとすると、インターネットをあふれ(swamp)させてしまう。IPによるマルチキャストには、情報の共有を効率的にサポートするために特殊目的のインフラストラクチャ(例えばルータ)を必要とするなど他の問題がある。
【0006】
ピアツーピアミドルウェア通信システムは、マルチキャストネットワークプロトコル、または二地点間ネットワークプロトコルのグラフに依拠する。このようなピアツーピアミドルウェアは、Data Connection社のD.C.−shareやマイクロソフト社のNetMeetingなどの製品に使用されるT.120インターネット標準によって提供される。こうしたピアツーピアミドルウェアシステムは、情報の共有に使用される接続の二地点間グラフをユーザが組み立てることに依拠する。したがって、少数を超える参加者が必要とされる場合には、ピアツーピアのミドルウェアシステムを使用することは適さず、また望ましくもない。さらにT.120インターネット標準の基礎アーキテクチャはツリー構造であり、ネットワーク全体の信頼性のためにツリーの根ノードに依拠する。つまり、すべての参加者が受信するためには各メッセージは根ノードを通過しなければならない。
【0007】
広く分散した多数のプロセス間で情報を同時に共有するのに適した信頼性のある通信ネットワークを備えることが望ましい。
【0008】
インターネットはベンダーと購入者間の電子通信を促進するので、次第に「電子商取引」を行うのに使用されるようになっている。インターネットは、通信チャネルで相互に接続された膨大な数のコンピュータとコンピュータネットワークからなる。一般に、電子商取引とは、少なくとも部分的に取引関係者のコンピュータシステムを使用して行われる商取引を言う。例えば、購買者はパーソナルコンピュータを使用し、インターネットを介してベンダーのコンピュータに接続することができる。そして購買者はベンダーのコンピュータと対話して取引を行うことができる。現在行われる商取引の多くは電子商取引を介して行うことができるが、電子商取引の受け入れと普及は、主としてそのような電子商取引の実行の使いやすさにかかっている。電子商取引を容易に行うことができれば、コンピュータの初心ユーザでも電子商取引に参加すると思われる。このため、電子商取引の実行を容易にする技術を開発することが重要である。
【0009】
インターネットは他種の商取引にも使用されている。例えば、競売の電子的な実施をサポートするサーバコンピュータシステムが開発されている。競売を電子的に行うには、商品の販売者が、ウェブページを通じてサーバコンピュータシステムにその競売の定義を提供する。この定義には、商品の説明、競売の期間、および任意で最低落札価格が含まれる。そしてサーバコンピュータシステムは指定された期間にその競売を行う。潜在的な買い手は、サーバコンピュータシステムで関心のある競売を検索することができる。そのような競売が見つかると、潜在的な買い手はその競売の入札履歴を閲覧し、その商品の入札額を入力することができる。競売が終了すると、サーバコンピュータシステムはその商品の落札者と販売者に(例えば電子メールで)通知し、両者は取引を完了することができる。
【0010】
このような競売サーバは電子的に競売を行うことを容易にするが、こうした競売の実施にはいくつかの不都合点がある。まず、競売システムの信頼性は競売サーバ自体の信頼性に依存する。競売サーバに障害が起きた場合には競売を実施することができない。このため、1つの障害により競売システム全体が停止する恐れがある。第2に、競売サーバによって行われる競売は、従来のコンピュータによらない競売を正確に模しているとは言えない。具体的には、電子的な競売は固定された時間に終了するのが普通であるのに対し、コンピュータによらない競売は、通例競売人がそれ以上の入札がありそうもないと判断したときに終了する。例えば、電子競売ではある日の午後5時に終了することを通告することができる。入札者はその時刻まで入札を行うことができる。これに対し、従来の競売は開始時刻を設定することはできるが、その終了は入札の動きに左右される。また、こうした電子競売は、特にWebを利用する場合には入札活動の通知を実時間で提供しない。入札者は、自分を上回る入札価格が提示されたことをいくつかの方法で知るだけである。入札者は、競売のウェブページに定期的にアクセスして現在の最高入札額を調べることによりこれを知ることができる。このように繰り返し競売ウェブページにアクセスするのは面倒である。競売サーバには、ある者の入札価格を上回る入札価格が出ると電子メールメッセージを送信できるものがある。しかしこのような電子メールメッセージは、その到着が入札者が新たな入札を行うのに間に合わない可能性がある。
【0011】
こうした現在のサーバベースの競売システムの不都合点を回避し、従来のコンピュータによらない競売をより正確に模した電子競売システムを備えることが望ましい。
【0012】
(詳細な説明)
ブロードキャストチャネルを二地点間通信ネットワークに重ねたブロードキャスト技術を提供する。このブロードキャストチャネルを通じたメッセージのブロードキャストは、事実上、その時点でブロードキャストネットワークに接続されているネットワークのコンピュータへのマルチキャストである。一実施形態では、このブロードキャスト技術は、ホストコンピュータで実行されるプロセスを通じてホストコンピュータを接続することができる論理的なブロードキャストチャネルを提供する。このブロードキャストチャネルに接続された各コンピュータは、ブロードキャストチャネルにメッセージをブロードキャストし、ブロードキャストチャネルからメッセージを受信することができる。ブロードキャストチャネルに接続された各コンピュータは、それが接続されている間にブロードキャストされるメッセージをすべて受信する。論理ブロードキャストチャネルは、基本となるネットワークシステムに接続された各コンピュータが、各コンピュータのアドレスを使用して他の接続された各コンピュータにメッセージを送信することができる基本ネットワークシステム(例えばインターネット)を使用して実装される。このように、このブロードキャスト技術は、実際上、二地点間方式でメッセージを送信する基本ネットワークシステムを使用したブロードキャストチャネルを提供する。
【0013】
このブロードキャスト技術は、基本となるネットワークシステムに、それを通じてブロードキャストチャネルを実装するホストコンピュータ(すなわちノード)間の二地点間接続(すなわちエッジ)のグラフを重ねる。一実施形態では、各コンピュータを隣接コンピュータと称する他の4つのコンピュータに接続する。(実際には、コンピュータで実行されるプロセスを、そのコンピュータあるいは他の4つのコンピュータで実行される他の4つのプロセスに接続する。)メッセージをブロードキャストするには、発信元のコンピュータがその二地点間接続を使用して各隣接コンピュータにメッセージを送信する。そのメッセージを受信するコンピュータはそれぞれ、二地点間接続を使用してそのメッセージを他の3つの隣接コンピュータに送信する。このようにして、基本となるネットワークを使用して各コンピュータにメッセージを伝搬させ、論理ブロードキャストチャネルを通じた各コンピュータへのメッセージのブロードキャストを行う。各ノードが4つの他ノードに接続されたグラフを4正則グラフ(4−regular graph)と呼ぶ。4正則グラフの使用は、隣接コンピュータへの4つの接続すべてが機能しなくなった場合(failの場合)にのみ、コンピュータとブロードキャストチャネルの接続が切断されることを意味する。このブロードキャスト技術で使用するグラフには、4つのコンピュータの障害を受け(take)てグラフを互いに素な部分グラフ、すなわち2つの別個のブロードキャストチャネルに分割するという特性がある。この特性を4連結(4−connected)と呼ぶ。したがってこのグラフは4正則、4連結のグラフである。
【0014】
図1は、ブロードキャストチャネルを表す4正則、4連結のグラフを示す。9つのノードA−Iはそれぞれブロードキャストチャネルに接続されたコンピュータを表し、各エッジは、ブロードキャストチャネルの2つのコンピュータ間の「エッジ」接続を表す。ブロードキャストチャネル上の各コンピュータにメッセージをブロードキャストするのに要する時間は、コンピュータ間の接続の速度と、発信元のコンピュータとブロードキャストチャネル上の他の各コンピュータとの間の接続の数によって決まる。メッセージが各コンピュータペア間を横断するのに必要とする最小の接続数が、それらコンピュータ間の「距離」(すなわちグラフの2ノード間の最短経路)である。例えば、コンピュータAとFの間の距離は、コンピュータAが直接コンピュータFに接続されているので1である。コンピュータAとBの間の距離は、コンピュータAとBの間には直接接続がなく、コンピュータFが直接コンピュータBに接続されているので2になる。したがって、コンピュータAを発信元とするメッセージは直接コンピュータFに送信され、そしてコンピュータFからコンピュータBに送信されることになる。コンピュータ間の最大距離はブロードキャストチャネルの「直径」である。図1に表したブロードキャストチャネルの直径は2である。すなわち、任意のコンピュータによって送信されたメッセージは、すべての他のコンピュータに到達するのに3つ以上の接続を横断することはない。図2は、ブロードキャストチャネルに接続された20台のコンピュータを表すグラフを示す。このブロードキャストチャネルの直径は4である。詳細には、コンピュータ1と3間の最短経路は4つの接続(1−12、12−15、15−18、および18−3)を含む。
【0015】
このブロードキャスト技術には、(1)ブロードキャストチャネルへのコンピュータの接続(すなわちグラフの作成)、(2)ブロードキャストチャネルを通じたメッセージのブロードキャスト(すなわちグラフを通じたブロードキャスト)、(3)グラフを構成するブロードキャストチャネルからのコンピュータの切断(すなわちグラフの分解)、が含まれる。
【0016】
グラフを構成する
ブロードキャストチャネルに接続するには、接続を求めるコンピュータは、まず現在ブロードキャストチャネルに完全に接続されているコンピュータを見つけ、次いですでにブロードキャストチャネルに接続されているコンピュータのうち4つとの接続を確立する。(これは、すでにブロードキャストチャネルに接続されているコンピュータが少なくとも4つあることを前提とする。接続されたコンピュータが4台以下である場合は、ブロードキャストチャネルは4正則グラフになることができない。そのような場合は、ブロードキャストチャネルが「小規模体制」にあるとみなす。小規模体制のためのブロードキャスト技術については下記で詳細に述べる。5台以上のコンピュータが接続されている際には、ブロードキャストチャネルが「大規模体制」にあるとみなす。この説明では、特に指定しない場合は、ブロードキャストチャネルは大規模体制にあることを前提とする。)したがって、ブロードキャストチャネルへの接続プロセスには、ブロードキャストチャネルを見つけ、接続するコンピュータの隣接コンピュータを識別し、そして識別された各隣接コンピュータに接続することが含まれる。各コンピュータは、そのコンピュータがそれを通じてブロードキャストチャネルを見つけることができる1つまたは複数の「ポータルコンピュータ」を認識している。接続を求めるコンピュータは、現在ブロードキャストチャネルに完全に接続されているポータルコンピュータを見つけるまでポータルコンピュータに接触することによりブロードキャストチャネルを見つける。見つかったポータルコンピュータは次いで、接続を求めるコンピュータを接続する4つのコンピュータ(すなわち接続を求めるコンピュータの隣接コンピュータになる)を識別するように指示を出す。それら4つのコンピュータはそれぞれ接続を求めるコンピュータと協働して、接続を求めるコンピュータをブロードキャストチャネルに接続させる。ポータルコンピュータを見つけるプロセスを開始したものの、まだ隣接コンピュータを持たないコンピュータは「接続探索状態」にある。少なくとも1つの隣接コンピュータに接続されたが、まだ4つの隣接コンピュータには接続されていないコンピュータは「部分的に接続された状態」にある。現在4つの隣接コンピュータに接続されている、あるいは以前から接続されているコンピュータは「完全に接続された状態」にある。
【0017】
ブロードキャストチャネルは4正則グラフなので、識別されるコンピュータはそれぞれはすでに4つのコンピュータに接続されている。このため、接続を求めるコンピュータが4つのコンピュータに接続できるように、コンピュータ間の接続の一部を切断する必要がある。一実施形態では、このブロードキャスト技術では、現在相互に接続されている2つのコンピュータペアを識別する。これらコンピュータペアがそれぞれ各自の間の接続を切断し、4つのコンピュータ(各ペアの2つ)がそれぞれ、接続を求めるコンピュータに接続する。図3Aおよび3Bに、新たなコンピュータZがブロードキャストチャネルに接続するプロセスを示す。図3Aは、コンピュータZを接続する前のブロードキャストチャネルを示す。コンピュータBとE、およびコンピュータCとDのペアが、新しいコンピュータZの隣接コンピュータとして識別された2つのペアである。これら各ペア間の接続を切断し、図3Bに示すようにコンピュータZとコンピュータB、C、D、およびEそれぞれとの間に接続を確立する。2つのノード間のエッジを伸ばし、新たなノードにピン留めすると考えられることから、2つの隣接コンピュータ間の接続を切断し、元の隣接コンピュータそれぞれを別のコンピュータに再接続するプロセスを「エッジピンニング(edge pinning)」と呼ぶ。
【0018】
ブロードキャストチャネルに接続された各コンピュータは、他のコンピュータと通信するために5つの通信ポートを割り当てる。このポートの4つは、それを通じてブロードキャストチャネルのメッセージを送信するポートであることから「内部」ポートと呼ぶ。隣接コンピュータ同士の内部ポート間の接続は「内部」接続と呼ぶ。したがって、ブロードキャストチャネルの内部接続は、4正則、4連結のグラフを形成する。5番目のポートは、2つのコンピュータ間で非ブロードキャストメッセージを送信するのに使用されるため、「外部」ポートと呼ばれる。隣接コンピュータは、各自の接続の内部ポートを通じて、または各自の外部ポートを通じて非ブロードキャストメッセージを送信することができる。接続を求めるコンピュータは、ポータルコンピュータを見つける際には外部ポートを使用する。
【0019】
一実施形態では、このブロードキャスト技術は、二地点間プロトコルであるTCP/IP通信プロトコルを使用して基本ネットワークとしてコンピュータ接続を確立する。TCP/IPは、信頼性があり順序付けられたコンピュータ間のメッセージ配信を提供する。TCP/IPプロトコルは、そのコンピュータで実行される可能性のあるすべてのプロセスで共有する「ポート空間」を各コンピュータに提供する。ポートは、0から65,535までの番号で識別される。最初の2056個のポートは、特定アプリケーションのために予約されている(例えばHTTPメッセージはポート80)。残りのポートは、どのプロセスにも利用可能なユーザポートである。一実施形態では、ブロードキャストチャネルに接続されたコンピュータで使用するためにポート番号のセットを確保することができる。代替実施形態では、使用するポート番号は各コンピュータによって動的に識別する。各コンピュータは、着呼ポート(call−inport)として使用するために利用可能なポートを動的に識別する。この着呼ポートは、外部ポートおよび内部ポートとの接続を確立するために使用される。ブロードキャストチャネルに接続された各コンピュータは、その外部ポートを通じて非ブロードキャストメッセージを受信することができる。接続を求めるコンピュータは、ポータルコンピュータがその着呼ポートへの呼出しに「応答する」まで、そのポータルコンピュータのポート番号の「ダイヤル」を試みる。ポータルコンピュータは、それがブロードキャストチャネルに接続されたとき、または接続を試みて、その着呼ポートがダイヤルされたときに応答する。(この説明では電話の比喩を用いて接続を説明する。)コンピュータは、その着呼ポートに呼出しを受信すると、その呼出しを別のポートに転送する。したがって、接続を求めるコンピュータは、実際には、外部ポートであるその転送先ポートを通じて通信することになる。呼出しが転送され、その結果、他のコンピュータがその着呼ポートを通じてそのコンピュータに発呼できるようになる。接続を求めるコンピュータは次いで、その外部ポートを通じて通信して、当該コンピュータをブロードキャストチャネルに接続するのを支援するようにポータルコンピュータに要求する。接続を求めるコンピュータは、ポート番号順に順次各ポートをダイヤルすることにより、ポータルコンピュータの着呼ポート番号を識別することができる。下記で詳細に説明するように、このブロードキャスト技術ではハッシュアルゴリズムを使用してポート番号の順番を選択し、これにより性能が向上する可能性がある。
【0020】
接続を求めるコンピュータは、見つかったポータルコンピュータに直接接続されたコンピュータか、またはその隣接コンピュータの1つに直接接続されたコンピュータに接続することによりブロードキャストチャネルに接続することができる。このような接続を求めるコンピュータの隣接コンピュータを識別する手法に生じうる問題は、接続を求める各コンピュータが発見された同じポータルコンピュータを使用し、直接そのポータルコンピュータを通じてブロードキャストチャネルへの接続を確立する際に、ブロードキャストチャネルの直径が増す可能性があることである。概念的には、新しいノードを追加した地点の方向にグラフが引き伸ばされることになる。図4A−4Cはこの可能性のある問題を表している。図4Aは、図1にコンピュータを追加したブロードキャストチャネルを表す。エッジC−DとエッジE−HをコンピュータJにエッジピンニングすることにより、コンピュータJをブロードキャストチャネルに追加している。図4Bは、図4Aのブロードキャストチャネルにコンピュータを追加した図である。エッジE−JおよびB−CをコンピュータKにエッジピンニングすることによりコンピュータKをブロードキャストチャネルに追加した。コンピュータGからコンピュータKへの最短経路はエッジG−A、A−E、およびE−Kを通るので、このブロードキャストチャネルの直径は3である。図4Cも、図4Aのブロードキャストチャネルにコンピュータを追加した図である。エッジD−GおよびE−JをコンピュータKにエッジピンニングすることにより、コンピュータKをブロードキャストチャネルに接続した。ただしこのブロードキャストチャネルの直径はなお2である。このように、隣接コンピュータの選択がブロードキャストチャネルの直径に影響する。直径を最小にするのを助けるために、このブロードキャスト技術では無作為選択技術を使用して、接続探索状態にあるコンピュータの4つの隣接コンピュータを識別する。無作為選択技術は、接続を求める新たなコンピュータへの接続をブロードキャストチャネルのコンピュータ全体に分散する傾向があり、この結果全体の直径が小さくなる可能性がある。
【0021】
グラフを通じたブロードキャスト
上述のように、ブロードキャストチャネルに接続された各コンピュータは、ブロードキャストチャネルにメッセージをブロードキャストし、ブロードキャストチャネルでブロードキャストされるすべてのメッセージを受信する。ブロードキャストするメッセージを発信するコンピュータは、内部接続を使用してそのメッセージを4つの隣接コンピュータそれぞれに送信する。コンピュータは、ある隣接コンピュータからブロードキャストメッセージを受信すると、そのメッセージを他の3つの隣接コンピュータに送信する。発信元のコンピュータを除くブロードキャストチャネル上の各コンピュータは、したがって各自の4つの隣接コンピュータから各ブロードキャストメッセージのコピーを受信する。しかし、各コンピュータは、それが受信するメッセージの第1のコピーを隣接コンピュータに送信するだけであり、その後受信するコピーは無視する。したがって、コンピュータ間で送信されるメッセージコピーの合計数は3N+1になり、Nはブロードキャストチャネルに接続されたコンピュータの数である。4つのメッセージコピーを送信する発信元コンピュータを除いて、各コンピュータは3つのメッセージコピーを送信する。
【0022】
このメッセージ送信の冗長性は、ブロードキャストチャネルの全体的な信頼性を保証する助けとなる。各コンピュータはブロードキャストチャネルへの接続を4つ有するので、メッセージのブロードキャスト中に1台のコンピュータに障害が起きた場合、その隣接コンピュータには他に3つの接続があり、それを通じてブロードキャストメッセージのコピーを受信する。また、2つのコンピュータ間の内部接続が低速である場合、それぞれのコンピュータは、各メッセージのコピーをより早く受信できる可能性のある接続を他に3つ有する。
【0023】
メッセージを発信する各コンピュータは、それ自体のメッセージに順に番号をつける。ブロードキャストチャネルの動的な性質と、コンピュータ間には多数の可能な接続経路があることにより、メッセージは順序外れで受信される可能性がある。例えば、発信元コンピュータとある受信側コンピュータとの間の距離が4とする。最初のメッセージの送信後、発信元コンピュータと受信側コンピュータが隣接コンピュータ同士となり、したがってその間の距離が1に変化する可能性がある。最初のメッセージは、受信側コンピュータまで到達するのに4の距離を移動しなければならない可能性がある。2番目のメッセージは、1の距離を移動するだけで済む。したがって、2番目のメッセージが最初のメッセージより前に受信側コンピュータに到達する可能性がある。
【0024】
ブロードキャストチャネルが安定した状態にあるとき(すなわち、ブロードキャストチャネルに接続するコンピュータ、あるいはチャネルから切断するコンピュータがない状態)には、各コンピュータは最終的に両メッセージを受信し、またそれよりも順序が前のメッセージをすべて受信するまでメッセージを待ち行列に入れることができるので、順序外れのメッセージは問題とならない。しかし、ブロードキャストチャネルが安定した状態でない場合には問題が生じうる。詳細には、2番目のメッセージがすでにその新しい隣接コンピュータによって受信され、転送された後に、コンピュータがブロードキャストチャネルに接続する可能性がある。新しい隣接コンピュータは、最終的に最初のメッセージを受信するとそのメッセージを新たに接続されたコンピュータに送信する。したがって、この新たに接続されたコンピュータは最初のメッセージは受信するが、2番目のメッセージは受信しない。新たに接続されたコンピュータがメッセージを順番に処理する必要がある場合には、無期限に2番目のメッセージを待つことになる。
【0025】
この問題の解決法の1つは、各コンピュータにそれが受信するすべてのメッセージを、それらを正しい順序で隣接コンピュータに送信できるようになるまで待ち行列に入れさせるものである。しかし、この解決法は、ブロードキャストチャネルのコンピュータを通じたメッセージの伝搬速度を低下させる傾向がある。伝搬速度への影響がより少ない別の解決法は、新しく接続されたコンピュータの隣接コンピュータであるコンピュータでのみメッセージを待ち行列に入れるものである。すでに接続されている各隣接コンピュータは、メッセージを受信すると、そのメッセージを新しく接続されたのではない他の隣接コンピュータに転送するが、新しく接続された隣接コンピュータには転送しない。すでに接続された隣接コンピュータは、その発信元コンピュータからのメッセージに断絶が生じないことを保証できるときだけに、各発信元コンピュータからのメッセージを新しく接続されたコンピュータに転送する。一実施形態では、すでに接続された隣接コンピュータは、各発信元コンピュータからすでに受信し転送したメッセージの最も大きい続き番号を追跡することができる。すでに接続されたコンピュータは、それら発信元コンピュータからのそれよりも番号が大きいメッセージだけを新しく接続されたコンピュータに送信する。すでに接続されたコンピュータは、すべての発信元コンピュータからそれより番号の小さいメッセージをすべて受信すると、新しく接続されたコンピュータを各自の他の隣接コンピュータとして扱い、単に各メッセージを受信すると転送することができる。別の実施形態では、各コンピュータはメッセージを待ち行列に入れることができ、断絶が埋まると新しく接続されたコンピュータに単にそのメッセージを転送する。例えば、コンピュータはメッセージ4および5を受信してからメッセージ3を受信することが考えられる。このような場合、すでに接続されたコンピュータは、キューメッセージ4および5を転送する。最終的にメッセージ3を受信すると、メッセージ3、4、および5を新たに接続されたコンピュータに送信する。新しく接続されたコンピュータにメッセージ3よりも前にメッセージ4および5が送信された場合、新しく接続されたコンピュータはメッセージ4および5を処理し、メッセージ3は無視する。すでに接続されたコンピュータがメッセージ4および5を待ち行列に入れるので、新しく接続されたコンピュータはメッセージ3を処理することができる。新しく接続されたコンピュータが、1つの隣接コンピュータを通じて発信元コンピュータからメッセージのセットを受信し、次いで別の隣接コンピュータを通じて同じ発信元コンピュータから別のメッセージセットを受信することが可能である。2番目のメッセージセットに、受信した最初のメッセージセットよりも前に順序付けられたメッセージが含まれる場合、新しく接続されたコンピュータは、後に順序付けられたメッセージをすでに処理している場合にはその先に順序付けられたメッセージを無視することができる。
【0026】
グラフの分解
接続されたコンピュータは、計画して、または計画せずにブロードキャストチャネルとの接続を切断する。計画された方式で切断する際には、コンピュータはその4つの隣接コンピュータそれぞれに切断メッセージを送信する。切断メッセージは、接続を解除するコンピュータの4つの隣接コンピュータを識別するリストを含む。隣接コンピュータは切断メッセージを受信すると、リスト中のコンピュータの1つに接続を試みる。一実施形態では、リスト中の第1のコンピュータがリスト中の第2のコンピュータへの接続を試み、リスト中の第3のコンピュータがリストの第4のコンピュータへの接続を試みる。コンピュータが接続できない場合(例えば、第1のコンピュータと第2のコンピュータがすでに接続されている場合)、それらのコンピュータは各種の他の組合せで接続を試みることができる。接続を確立できない場合、各コンピュータは、別のコンピュータとの接続を確立する必要がある旨のメッセージをブロードキャストする。利用可能な内部ポートを有するコンピュータがそのメッセージを受信すると、そのコンピュータはそのメッセージをブロードキャストしたコンピュータとの接続を確立することができる。図5A−5Dは、ブロードキャストチャネルからのコンピュータの切断を表す。図5Aは、計画された方式によるブロードキャストチャネルからのコンピュータの切断を表す。コンピュータHが切断を決定すると、その隣接コンピュータのリストを各隣接コンピュータ(コンピュータA、E、F、およびI)に送信し、各隣接コンピュータとの接続を切断する。コンピュータAおよびIは、メッセージを受信すると点線で示すようにそれらの間に接続を確立し、コンピュータEおよびFについても同様である。
【0027】
電源障害によるなど計画されない形でコンピュータが接続を切断する場合は、切断されたコンピュータに接続された隣接コンピュータは、各自の次のメッセージを現在は切断されたコンピュータに送信しようとする際に切断を認識する。切断されたコンピュータの以前の各隣接コンピュータは、各自に1接続が不足している(すなわちホールあるいは空きポートを有する)ことを認識する。接続されたコンピュータは、その隣接コンピュータの1つが切断されたことを検出すると、ポート接続要求をブロードキャストチャネルにブロードキャストし、そのコンピュータに接続を必要とする内部ポートが1つあることを知らせる。ポート接続要求は、要求元コンピュータの着呼ポートを識別する。同じく接続が足りない接続されたコンピュータは、接続要求を受信すると、その外部ポートを通じて要求元コンピュータと通信して2つのコンピュータ間に接続を確立する。図5Bは、計画されない形によるブロードキャストチャネルからのコンピュータの切断を表す。この図では、コンピュータHが計画されない形で接続を切断している。コンピュータHの隣接コンピュータA、E、F、およびIはそれぞれ接続の切断を認識すると、それが空きポートを埋める必要があることを知らせるポート接続要求をブロードキャストする。点線で示すように、コンピュータFとIおよびコンピュータAとEが互いの要求に応答し、接続を確立している。
【0028】
計画された、または計画されない切断の結果、2つの隣接コンピュータそれぞれに空いた内部ポートが生じる場合がある。この場合、それらは隣接コンピュータ同士なので、すでに接続されており、互いと接続することによって各自の空きポートを埋めることができない。このような状態を「隣接コンピュータ同士に空きポートがある」状態と呼ぶ。各隣接コンピュータは、上述のようにそれに空いたポートが生じたことを検出するとポート接続要求をブロードキャストする。隣接コンピュータは、もう一方の隣接コンピュータからポート接続要求を受信すると、その隣接コンピュータにも空きポートがあるという状態を認識する。このような状態は、ブロードキャストチャネルが小規模体制のときにも生じる可能性がある。この状態は、大規模体制の場合にしか補正することができない。小規模体制の場合には、各コンピュータの有する隣接コンピュータは3つ以下になる。修復しないと問題になりかねないこの状態を大規模体制で検出するには、ポート接続要求を受信した最初の隣接コンピュータがこの状態を認識し、状態確認メッセージをもう一方の隣接コンピュータに送信する。状態確認メッセージは、送信元コンピュータの隣接コンピュータのリストを含む。このリストを受信すると、受信側コンピュータは、そのリストと、それ自体の隣接コンピュータのリストを比較する。2つのリストが異なる場合にはこの状態が大規模体制で発生しており、修復が必要となる。この状態を修復するために、受信側コンピュータは、まだ受信側コンピュータの隣接コンピュータになっていない、送信元コンピュータの隣接コンピュータの1つに状態修復要求を送信する。そのコンピュータは、状態修復要求を受信すると、その隣接コンピュータの1つ(この状態に関係している隣接コンピュータを除く)との接続を切断し、状態修復要求を送信したコンピュータに接続する。したがって、この状態に関係する本来の隣接コンピュータの1つでポートが埋まることになる。しかし、なお2つのコンピュータ、すなわち本来の隣接コンピュータのもう一方と、状態修復要求を受信したコンピュータとの接続が切断されたコンピュータが接続を必要としている。これら2つのコンピュータは、ポート接続要求を送信する。この2つのコンピュータが隣接コンピュータ同士でない場合には、要求を受信すると相互に接続する。しかし2つのコンピュータが隣接コンピュータ同士である場合には、隣接コンピュータ同士でない2つのコンピュータに接続が必要となるまで、状態修復プロセスを繰り返す。
【0029】
この状態にある2つの本来の隣接コンピュータ同士が、同じ隣接コンピュータのセットを有する場合がありうる。状態確認メッセージを受信した側の隣接コンピュータは、隣接コンピュータのセットが同一であると判断すると、同じくその状態にある隣接コンピュータ以外の隣接コンピュータの1つに状態二重確認メッセージを送信する。コンピュータは、状態二重確認メッセージを受信すると、その隣接コンピュータのセットが送信元コンピュータと同じであるかどうかを判定する。同じである場合、ブロードキャストチャネルは小規模体制にあり、その状態は問題にならない。隣接コンピュータのセットが異なる場合には、状態二重確認メッセージを受信したコンピュータは、その状態にある本来の隣接コンピュータに状態確認メッセージを送信する。その状態確認メッセージを受信したコンピュータは、状態修復メッセージを送信することにより、隣接コンピュータの1つに、その状態にある本来の隣接コンピュータの1つと接続するように指示する。したがって、その状態にある本来の隣接コンピュータの1つでポートが埋まることになる。
【0030】
図5Cは、隣接コンピュータ同士に空きポートがある状態を表す。この図では、コンピュータHが計画しない形で接続を切断し、コンピュータFおよびIがもう一方からのポート接続要求に応答し、現在相互に接続されている。コンピュータHのこの他の以前の隣接コンピュータAとEはすでに隣接コンピュータ同士であり、これにより隣接コンピュータ同士に空きポートがある状態が発生する。この例では、コンピュータEがコンピュータAからポート接続要求を受信し、この可能性のある状態を認識し、その隣接コンピュータのリストを含む状態確認メッセージを(これらは隣接コンピュータ同士なので内部接続を介して)コンピュータAに送信している。コンピュータAは、リストを受信すると、コンピュータEが異なる隣接コンピュータのセットを有することを認識した(すなわちブロードキャストチャネルは大規模体制である)。コンピュータAは、コンピュータEの隣接コンピュータであるコンピュータDを選択し、状態修復要求を送信した。コンピュータDは、状態修復要求を受信すると、その隣接コンピュータの1つ(コンピュータE以外)、この例ではコンピュータGとの接続を切断した。次いでコンピュータDはコンピュータAに接続した。図5Dは、空きポートのある隣接コンピュータ同士でない2つのコンピュータを示す。コンピュータEとGは空いたポートを有し、現在は隣接コンピュータ同士でない。したがって、コンピュータEとGは互いに接続することができる。
【0031】
図5Eおよび5Fは、隣接コンピュータ同士に空きポートがある状態をさらに示す。図5Eは、小規模体制における隣接コンピュータ同士に空きポートがある状態を表す。この例では、コンピュータEが計画されない形で接続を切断した場合、各コンピュータは、その切断を検出するとポート接続要求をブロードキャストする。コンピュータAはコンピュータBからのポート接続要求を受信すると、隣接コンピュータ同士に空きポートがある状態を検出し、状態確認メッセージをコンピュータBに送信する。コンピュータBは、その隣接コンピュータのセット(コンピュータCおよびD)がコンピュータAと同じであることを認識し、状態二重確認メッセージをコンピュータCに送信する。コンピュータCは、それもコンピュータAおよびBと同じ隣接コンピュータのセットを有することからブロードキャストチャネルが小規模体制にあることを認識し、ブロードキャストチャネルが小規模体制であることを知らせるメッセージをブロードキャストすることができる。
【0032】
図5Fは、大規模体制の場合における図5Eの状況を表す。上述のように、コンピュータCは、コンピュータBから状態二重確認メッセージを受信する。この場合、コンピュータCは、その隣接コンピュータのセットがコンピュータBと異なることから、ブロードキャストチャネルが大規模体制にあることを認識する。コンピュータCおよびDから上に延びるエッジは、他のコンピュータへの接続を意味する。コンピュータCは次いで状態確認メッセージをコンピュータBに送信する。コンピュータBは、状態確認メッセージを受信すると、コンピュータCの隣接コンピュータの1つに状態修復メッセージを送信する。状態修復メッセージを受信したコンピュータは、コンピュータCを除くその隣接コンピュータの1つとの接続を切断してコンピュータBとの接続を試み、そのコンピュータが接続を切断した隣接コンピュータはコンピュータAへの接続を試みる。
【0033】
ポートの選択
上述のように、TCP/IPプロトコルは、番号2056より上のポートをユーザポートに指定している。このブロードキャスト技術では、各コンピュータで、外部ポート1つと内部ポート4つの5つのユーザポート番号を使用する。一般に、同じコンピュータで実行される他の複数のアプリケーションプログラムが重複するポート番号を使用する可能性があるために、ユーザポートは静的にアプリケーションプログラムに割り振ることはできない。この結果、一実施形態では、ブロードキャストチャネルに接続されたコンピュータは動的に各自のポート番号を割り当てる。各コンピュータは、単にそのコンピュータで未使用の番号が最小のポートを見つけることを試み、そのポートを着呼ポートとして使用することができる。しかし、ポート番号が動的に割り当てられる場合には、接続を求めるコンピュータは、ポータルコンピュータの着呼ポート番号を前もって知ることができない。このため、接続を求めるコンピュータがあるポータルコンピュータの着呼ポートを見つける際には、ポータルコンピュータのポートを最小のポート番号からダイヤルしていく必要がある。ポータルコンピュータがブロードキャストチャネルに接続されている(あるいは接続を試みている)場合には、接続を求めるコンピュータは最終的に着呼ポートを見つけることになる。ポータルコンピュータが接続されていない場合、接続を求めるコンピュータは、最終的にはすべてのユーザポートをダイヤルすることになる。さらに、コンピュータ上の各アプリケーションプログラムが低順位のポート番号を割り当てようとする場合、低順位のポート番号の多くは他のアプリケーションによって使用されるので、ポータルコンピュータの着呼ポートは番号の大きいポートになる可能性がある。ポートをダイヤルするのは比較的低速のプロセスなので、接続を求めるコンピュータがポータルコンピュータの着呼ポートを見つけるには長時間を要する。この時間を最短にするために、このブロードキャスト技術ではポートの順序付けアルゴリズムを使用して、ポータルコンピュータがその着呼ポートに利用できるポートを見つける際に使用すべきポート番号の順序を識別する。一実施形態では、このブロードキャスト技術はハッシュアルゴリズムを使用してポートの順番を識別する。このアルゴリズムは、ポート番号の順序付けをユーザポート番号空間全体に無作為に分散し、各ポート番号を1度だけ選択することが好ましい。また、このアルゴリズムは、任意のコンピュータで所与のチャネルタイプおよびチャネルインスタンスについて実行されるたびに同じポートの順序付けを生成する。下記で述べるように、チャネルタイプおよびチャネルインスタンスによって一意に識別される複数のブロードキャストチャネルにコンピュータを接続することが可能である。ブロードキャストチャネルごとに一意のポート番号の順序付けを生成するために、このアルゴリズムは、チャネルタイプとチャネルインスタンスを「蒔きつけ(seed)」ておくことができる。したがって、接続を求めるコンピュータは、ポータルコンピュータがその着呼ポートを割り当てる際に使用したのと同じ順序でポータルコンピュータのポートをダイヤルすることになる。
【0034】
多数のコンピュータが同時に単一のポータルコンピュータを通じてブロードキャストチャネルへの接続を求める場合には、接続を求めるコンピュータによって呼び出される際にポータルコンピュータのポートがビジーになる可能性がある。通例は、接続を求めるコンピュータはビジーなポートを再ダイヤルし続ける必要がある。着呼ポートを見つけるプロセスは、この再ダイヤルによって速度が著しく低下する可能性がある。一実施形態では、接続を求める各コンピュータが、ハッシュアルゴリズムによって生成される最初の数個のポート番号の順序を変えることができる。例えば、接続を求めるコンピュータはそれぞれ、ハッシュアルゴリズムで生成された最初の8個のポート番号の順序を無作為に変えることができる。この無作為の順序付けには重みをつけることもでき、その場合は、ハッシュアルゴリズムによって生成された最初のポート番号は順序の変更で最初になる確率が50%であり、2番目のポート番号は順序の変更で最初になる確率が25%である、などとする。接続を求めるコンピュータは異なる順序付けを使用するので、ビジーなポートに行き当たる可能性が低くなる。例えば、最初の8つのポート番号を無作為に選択する場合には、接続を求める8つのコンピュータが同時に異なる順序でポートにダイヤルし、それによりビジーなポートにダイヤルする確率を低くすることが可能である。
【0035】
ポータルコンピュータを見つける(locating)
ブロードキャストチャネルに接続できる各コンピュータは、それを通じてブロードキャストチャネルに接続できる1つまたは複数のポータルコンピュータのリストを有する。一実施形態では、各コンピュータが同じポータルコンピュータのセットを有する。接続を求めるコンピュータは、アルゴリズムによって指定される順序で連続的に各ポータルコンピュータのポートにダイヤルすることにより、ブロードキャストチャネルに接続したポータルコンピュータを見つける。接続を求めるコンピュータは、最初のポータルコンピュータを選択し、ブロードキャストチャネルに完全に接続されたコンピュータの着呼ポートが見つかるまでそのすべてのポートにダイヤルすることができる。着呼ポートが見つからない場合、接続を求めるコンピュータは、次のポータルコンピュータを選択し、前述のような着呼ポートを持つポータルコンピュータが見つかるまでプロセスを繰り返す。この探索技術に伴う問題は、ブロードキャストチャネルに完全に接続されたコンピュータが見つかるまで各ポータルコンピュータのすべてのユーザポートがダイヤルされる点である。代替実施形態では、接続を求めるコンピュータはアルゴリズムに従ってポート番号を選択し、そのポート番号にある各ポータルコンピュータにダイヤルする。ブロードキャストチャネルへの許容できる着呼ポートが見つからない場合、接続を求めるコンピュータは次のポート番号を選択し、プロセスを繰り返す。着呼ポートには低順位のポート番号が割り当てられる可能性が高いので、接続を求めるコンピュータはまず、ブロードキャストチャネルの着呼ポートである可能性が最も高いポート番号にダイヤルする。接続を求めるコンピュータは、完全に接続されたポータルコンピュータを探す際にダイヤルするポートの数である、最大の検索の深さを有することができる。接続を求めるコンピュータがその検索の深さを検索し尽くした場合は、ブロードキャストチャネルがまだ確立されていないか、または、そのコンピュータもポータルコンピュータである場合には、自身を最初の完全に接続されたコンピュータとしてブロードキャストチャネルを確立することができる。
【0036】
接続を求めるコンピュータが、それ自体完全に接続されていないポータルコンピュータを見つけた場合は、ブロードキャストチャネルがすでに確立されており、別のポータルコンピュータの高順位のポート番号を通じてアクセスできる可能性があるので、2つのコンピュータは、最初に互いを見つけたときに接続しない。接続を求める2つのコンピュータが相互に接続すると、2つの互いに素なブロードキャストチャネルが形成される。接続を求める各コンピュータは、ポータルコンピュータを見つけようとする際に、接続を求める他のコンピュータと各自の経験を共有することができる。詳細には、接続を求めるあるコンピュータがすべてのポータルコンピュータを8の深さまで検索している場合、そのコンピュータはそれが8の深さまで検索を行ったことを接続を求める別のコンピュータに知らせることができる。その接続を求める別のコンピュータが例えば4の深さまでしか検索を行っていない場合には、深さ5から8までの検索を省略し、その検索を9の深さに進めることができる。
【0037】
一実施形態では、各コンピュータが異なるポータルコンピュータのセットと、異なる最大検索深さを有することができる。このような状況では、接続を求めるコンピュータは完全に接続されたポートコンピュータを最高の深さで見つけることができないので、互いに素な2つのブロードキャストチャネルが形成される可能性がある。同様に、ポータルコンピュータのセットが互いに素である場合には、2つの別個のブロードキャストチャネルが形成される。
【0038】
接続を求めるコンピュータの隣接コンピュータを識別する
上述のように、新しく接続するコンピュータの隣接コンピュータは、現在接続されているコンピュータのセットから無作為に選択することが好ましい。ただし、このブロードキャストチャネルの利点の1つは、ブロードキャストチャネルのグローバルな知識を持つコンピュータがないことである。各コンピュータは、それ自体と隣接コンピュータのローカルな知識を有する。この限られたローカルな知識には、すべての接続されたコンピュータが(ブロードキャストに関する限りは)ピアになり、任意の1つのコンピュータ(4正則、4連結の形態の場合には、実際には任意の3つのコンピュータ)の障害によりブロードキャストチャネルの障害が生じないという利点がある。このローカルな知識により、ポータルコンピュータが、接続を求めるコンピュータに4つの隣接コンピュータを無作為に選択することが難しくなる。
【0039】
4つのコンピュータを選択するために、ポータルコンピュータは、無作為に選択したその内部接続の1つを通じてエッジ接続要求メッセージを送信する。受信したコンピュータは、無作為に選択したその内部接続の1つを通じて再度エッジ接続要求メッセージを送信する。このメッセージ送信は、ブロードキャストチャネルを表すグラフのランダムウォークに相当する。最終的に、ある受信コンピュータが、メッセージが無作為に選択されたコンピュータを表すのに十分な距離を移動してきたと判断する。受信コンピュータは、エッジ接続要求メッセージを受信した内部接続を、接続を求めるコンピュータにエッジピンニングのために提供する。言うまでもなく、提供された内部接続の終端にあるコンピュータが両方ともすでに接続を求めるコンピュータの隣接コンピュータである場合には、接続を求めるコンピュータはその内部接続を通じて接続することはできない。メッセージが十分な距離を移動してきたと判断したコンピュータは、すでに隣接コンピュータであるというこの状態を検出し、無作為に選択した隣接コンピュータにこのメッセージを送信する。
【0040】
一実施形態では、エッジ接続要求メッセージが移動する距離は、ポータルコンピュータによって、ブロードキャストチャネルの推定直径の約2倍になるように設定される。このメッセージは、それが移動すべき距離の指示を含む。メッセージを受信した各コンピュータは、この移動距離を減分してからメッセージを送信する。移動すべき距離が0のメッセージを受信したコンピュータを、無作為に選択されたコンピュータとみなす。その無作為に選択されたコンピュータが、(例えばすでにそのコンピュータに接続されているために)接続を求めるコンピュータに接続できない場合、無作為に選択されたコンピュータは新たな移動距離とともにエッジ接続要求を隣接コンピュータの1つに転送する。一実施形態では、転送を行うコンピュータは、この新たな移動距離を0と1の間で切り替えて、2つのコンピュータ間で繰り返しメッセージを送信するのを防ぐ助けとする。
【0041】
ブロードキャストチャネルに接続された各コンピュータが保持する情報がローカルな性質であるため、コンピュータは一般にはブロードキャストチャネルの直径を意識する必要がない。一実施形態では、ブロードキャストチャネルを通じて送信される各メッセージは、移動した距離のフィールドを有する。メッセージを転送する各コンピュータは、移動距離フィールドを増分する。各コンピュータはまた、ブロードキャストチャネルの推定直径を保持する。コンピュータは、移動してきた距離が推定直径が小さすぎることを表すメッセージを受信すると、それが保持する推定直径を更新し、推定直径のメッセージをブロードキャストする。コンピュータは、それが保持する推定直径よりも大きい直径を示す推定直径メッセージを受信すると、それ自体の推定直径を更新する。この推定直径を使用して、エッジ接続要求メッセージが移動すべき距離を設定する。
【0042】
外部データ表現
ブロードキャストチャネルに接続されたコンピュータは、各自のデータを異なる形式で内部に格納することができる。例えば、あるコンピュータは32ビット整数を使用し、別のコンピュータは64ビット整数を使用することができる。別の例として、あるコンピュータはテキストの表現にASCIIを使用し、別のコンピュータはUnicodeを使用することができる。異種のコンピュータ間の通信を可能にするために、ブロードキャストチャネルを通じて送信するメッセージにはXDR(外部データ表現)形式を使用することができる。
【0043】
基本となるピアツーピアの通信プロトコルは、複数のメッセージを単一のメッセージストリームで送信することができる。ストリームからメッセージを取り出すための従来の技術は、オペレーティングシステムルーチンを繰り返し起動してストリーム中の次のメッセージを取り出すものである。各メッセージの取り出しには、オペレーティングシステムを2回呼び出すことが必要となる。すなわち、次のメッセージのサイズを取り出すための呼出しと、取り出したサイズで示されるバイト数を取り出すための呼出しである。しかし、このようなオペレーティングシステムの呼出しは、ローカルルーチンの起動と比べると非常に低速である可能性がある。この呼出しを繰り返す非効率性を克服するために、一実施形態におけるこのブロードキャスト技術ではXDRを使用してメッセージストリーム中のメッセージ境界を識別する。このブロードキャスト技術では、例えば次の1024バイトをストリームから提供するようにオペレーティングシステムに要求することができる。そしてこのブロードキャスト技術では、繰り返しXDRルーチンを起動してメッセージを取り出し、各起動の成功または失敗を使用して、オペレーティングシステムからさらに1024バイトブロックを取り出す必要があるかどうかを判断することができる。XDRルーチンの起動はシステムコールを伴わず、したがってシステムコールを繰り返すよりもはるかに効率的である。
【0044】
M正則
上記の実施形態では、完全に接続されたコンピュータはそれぞれ4つの内部接続を有する。このブロードキャスト技術は、この他の数の内部接続にも使用することができる。例えば、各コンピュータは、6つ、8つ、あるいは任意数の偶数個の内部接続を有することができる。内部接続の数が増すと、ブロードキャストチャネルの直径は縮小する傾向にあり、したがってメッセージの伝搬時間が短縮する傾向にある。しかし、接続を求めるコンピュータをブロードキャストチャネルに接続するのに要する時間は、内部接続の数が増すにつれて増大する可能性がある。内部接続の数が偶数である場合、ブロードキャストチャネルはm正則、m連結として維持することができる(安定状態)。内部接続の数が奇数個である場合には、ブロードキャストチャネルに奇数個のコンピュータが接続されていると、コンピュータの1つはその奇数より少ない数の内部接続を有する。このような状況では、ブロードキャストネットワークはm正則でもm連結でもない。次のコンピュータがブロードキャストチャネルに接続すると、ネットワークは再びm正則、m連結になることができる。したがって、内部接続が奇数個である場合には、ブロードキャストチャネルはm正則かつm連結であるか、そうでないかの間を切り替わることになる。
【0045】
構成要素
図6は、ブロードキャストチャネルに接続されたコンピュータの構成要素を示すブロック図である。上記の説明では概して、ブロードキャストチャネルが1つだけあり、各コンピュータはそのブロードキャストチャネルに1つのみの接続を有するものと仮定した。より一般的には、コンピュータのネットワークは複数のブロードキャストチャネルを有することができ、各コンピュータは複数のブロードキャストチャネルに接続することができ、各コンピュータは、同じブロードキャストチャネルに複数の接続を有することができる。このブロードキャストチャネルは、ネットワーク会議プログラムなど、協調して実行されるコンピュータプロセス(例えばアプリケーションプログラム)に非常に適している。各コンピュータプロセスは、1つまたは複数のブロードキャストチャネルに接続することができる。ブロードキャストチャネルは、チャネルタイプ(例えばアプリケーションプログラム名)と、そのチャネルタイプのための別々のブロードキャストチャネルを表すチャネルインスタンスによって識別することができる。プロセスがあるブロードキャストチャネルへの接続を試みる際には、ポータルコンピュータで実行されている、現在そのブロードキャストチャネルに接続されているプロセスを探す。接続を求めるプロセスは、チャネルタイプとチャネルインスタンスによってブロードキャストチャネルを識別する。
【0046】
コンピュータ600は、個別のプロセスとして実行される複数のアプリケーションプログラム601を含む。各アプリケーションプログラムは、それが接続された、各ブロードキャストチャネル用のブロードキャスタコンポーネント602とインタフェースをとる。ブロードキャスタコンポーネントは、そのアプリケーションプログラムのプロセス空間内にインスタンス化したオブジェクトとして実装することができる。あるいは、ブロードキャスタコンポーネントは、アプリケーションプログラムの別のプロセスあるいはスレッドとして実行してもよい。一実施形態では、ブロードキャスタコンポーネントは、アプリケーションプログラムによって起動できる機能(例えばクラスのメソッド)を提供する。提供される主な機能には、アプリケーションプログラムが起動して、それが接続したいブロードキャストチャネルの指示を渡す接続機能を含むことができる。アプリケーションプログラムは、ブロードキャスタコンポーネントが起動して、接続が完了した、すなわちプロセスが完全に接続された状態に入ったことをアプリケーションプログラムに通知するためのコールバックルーチンを提供することができる。ブロードキャスタコンポーネントは、アプリケーションプログラムが起動してブロードキャストチャネルでブロードキャストされる次のメッセージを取り出すためのメッセージ取得機能も提供することができる。あるいは、アプリケーションプログラムは、ブロードキャスタコンポーネントが起動してブロードキャストメッセージを受信したことをアプリケーションプログラムに通知するコールバックルーチン(アプリケーションプログラムによって提供される仮想機能であってもよい)を提供することもできる。各ブロードキャスタコンポーネントは、ハッシュアルゴリズムを使用して着呼ポートを割り当てる。着呼ポートで呼出しに応答すると、呼出しは、外部ポートおよび内部ポートとして機能する他のポートに転送される。
【0047】
ブロードキャストチャネルに接続するコンピュータは、中央演算処理装置、メモリ、入力装置(例えばキーボードやポインティングデバイス)、出力装置(例えば表示装置)、および記憶装置(例えばディスクドライブ)を含むことができる。メモリおよび記憶装置は、ブロードキャスタコンポーネントを実装するコンピュータ命令を含むことができるコンピュータ可読媒体である。また、データ構造およびメッセージ構造は記憶しておくか、または、通信リンクなどのコンピュータ可読媒体で伝送される信号を介して伝送してもよい。
【0048】
図7は、一実施形態における、ブロードキャスタコンポーネントのサブコンポーネントを示すブロック図である。ブロードキャスタコンポーネントは、接続コンポーネント701、外部ディスパッチャ702、各内部接続のための内部ディスパッチャ703、メッセージ取得コンポーネント704、およびブロードキャストコンポーネント712を含む。アプリケーションプログラムは、ブロードキャスタコンポーネントによって起動される接続コールバックコンポーネント710と応答受信コンポーネント711を提供することができる。アプリケーションプログラムは、接続コンポーネントを起動して指示されたブロードキャストチャネルへの接続を確立する。接続コンポーネントは、外部ポートを識別し、その外部ポートで受信するメッセージを処理する外部ディスパッチャをインストールする。接続コンポーネントは、ポータルコンピュータ探索コンポーネント705を起動して、ブロードキャストチャネルに接続されたポータルコンピュータを識別し、接続要求コンポーネント706を起動して、新しく接続しようとするプロセスの隣接プロセスを選択するように(完全に接続されていれば)ポータルコンピュータに要求する。外部ディスパッチャは外部メッセージを受信し、メッセージタイプを識別し、適切な処理ルーチン707を起動する。内部ディスパッチャは内部メッセージを受信し、メッセージタイプを識別し、適切な処理ルーチン708を起動する。受信したブロードキャストメッセージは、ブロードキャストメッセージキュー709に格納する。メッセージ取得コンポーネントは、ブロードキャストキューからメッセージを取り出すために起動される。ブロードキャストコンポーネントはアプリケーションプログラムによって起動されてブロードキャストチャネルにメッセージをブロードキャストする。
【0049】
情報配信サービス
一実施形態では、ブロードキャストチャネルを使用して情報配信サービスアプリケーションを実装する。この情報配信サービスは、参加者がブロードキャストチャネルにブロードキャストされたメッセージを監視することを可能にする。各参加者は情報の生成側として、情報の消費側として、あるいはその双方として機能することができる。生成側はブロードキャストチャネルにメッセージをブロードキャストし、消費者はそのブロードキャストメッセージを受信する。例えば、スポーツのブロードキャストチャネルを使用してスポーツイベントの結果を配布することができる。National Football Leagueなど特定の組織に、スポーツイベントの結果をブロードキャストチャネルでブロードキャストする権限を与えることができる。ブロードキャストチャネルの運営者は、ブロードキャストチャネルの利用権をスポーツ愛好家に販売することができる。この情報配信サービスを使用して、ニュース記事、株価、天気警報、医療に関する忠告、交通情報などを含む幅広い内容を配信することができる。
【0050】
情報配信サービスは、消費者が興味のあるブロードキャストチャネルを見つけて、利用を申し込むことができるディレクトリウェブサイトを提供することができる。このディレクトリは、各種のブロードキャストチャネルのトピックを階層的に編成したものを提供することができる。ユーザが、あるブロードキャストチャネルの申し込みを決定すると、まだユーザのコンピュータで利用できる状態になっていない場合には、ブロードキャスタコンポーネントと情報配信サービスアプリケーションプログラムをユーザのコンピュータにダウンロードすることができる。また、そのブロードキャストチャネルと関連付けられたチャネルタイプとチャネルインスタンス、およびそのブロードキャストチャネルのためのポータルコンピュータの識別を利用者のコンピュータにダウンロードすることができる。情報配信サービスは、ポータルコンピュータがブロードキャストチャネルへのアクセスを許可する、あるいは誰がブロードキャストチャネルに接続したかを追跡するのに使用できる利用者の識別子も提供することができる。
【0051】
情報配信サービスのウェブサイトは、エンティティが新しいブロードキャストチャネルを作成することも可能にする。例えば、NFLが自身の制御下で情報を配布するのに専用のブロードキャストチャネルを必要とすることが考えられる。この場合には、そのエンティティがウェブサイトと対話してブロードキャストチャネルを作成する。ブロードキャストチャネルの作成には、チャネルタイプとチャネルインスタンスの生成、セキュリティレベルの指定(例えばメッセージの暗号化)、利用者の条件の指定などが必要とされる。
【0052】
ユーザは、階層の葉ノードに相当する個々のトピックについてのブロードキャストチャネルに申し込むか、あるいは、階層中の非葉ノードに相当するあるトピックカテゴリを利用することができる。例えば、ユーザは、スポーツスコアのカテゴリを利用する、あるいはNFLスコアのトピックを利用することができる。一実施形態では、各トピックがそれ自体のブロードキャストチャネルを有する。この結果、あるトピックカテゴリを利用することは、複数のブロードキャストチャネルを利用することを意味する。あるいは、1つのトピックカテゴリが単一のブロードキャストチャネルを備えてもよい。ユーザがそのカテゴリ中の1つのトピックだけを申し込む場合、利用者のコンピュータで実行される情報配信サービスアプリケーションプログラムは、単にそのトピックに関連しないメッセージを無視する。
【0053】
情報配信サービスには、様々な料金体系を使用することができる。利用者には、あるトピックの利用に対して月単位の固定料金を課金することができる。あるいは、実際に接続した時間に基づいて利用者に課金してもよい。例えば、利用者のコンピュータは、接続されると1時間おきなどに識別メッセージをブロードキャストすることができる。課金コンピュータはそのブロードキャストを監視し、識別メッセージに基づいて接続時間を記録する。課金コンピュータが一定期間識別メッセージを受信しない場合は、その利用者のコンピュータの接続が切断されたとみなす。また、ブロードキャストチャネルの運営者は、ブロードキャストチャネルを通じた広告のブロードキャストから収入を得ることができる。ブロードキャストチャネルで広告を流すための料金は、その広告がブロードキャストされている時にブロードキャストチャネルに接続している利用者の数によって変動する。
【0054】
分散会議システム
一実施形態では、ブロードキャストチャネルを使用して会議システムを実装する。会議の各参加者はその会議のブロードキャストチャネルに接続し、ある参加者が発言者に指名される。会議アプリケーションプログラムは、発言者コンポーネントと出席者コンポーネントを含むことができる。発言者コンポーネントは、会議イベントをブロードキャストチャネルでブロードキャストする。各出席者コンポーネントは、会議イベントを受信し、会議イベントの結果を表示する。例えば、発言者は、会議でスライドと各スライドの説明を提示することができる。各出席者は、会議に先立ってそのスライドの電子コピーを受信することができる。予定された会議の時刻に、発言者と各出席者はその会議のブロードキャストチャネルに接続することにより会議に参加する。発言者コンポーネントは、発言者がいつどのスライドを表示するか指示することを可能にする。新しいスライドが表示されると、発言者コンポーネントは新スライドメッセージをブロードキャストする。出席者コンポーネントは、新スライドメッセージを受信すると、その新しいスライドを参加者に表示する。また、発言者コンポーネントは、発言者がスタイラスやその他のポインティングデバイスを使用してスライドに描画することも可能にする。そして発言者コンポーネントは描画メッセージをブロードキャストチャネルにブロードキャストし、出席者コンポーネントはその描画内容を出席者に表示することができる。この会議システムでは、発言者の発言をすべての参加者に配布するために音声−テキスト変換およびテキスト−音声変換を使用することもできる。
【0055】
会議システムは、関係者が興味のある会議を見つけ、参加を申し込むことができるディレクトリウェブサイトを提供することができる。このディレクトリは、予定される会議を階層的に編成したものを提供することができる。ユーザが会議の申し込みを決定すると、ウェブサーバは、まだ参加者のコンピュータに記憶されていない場合にはブロードキャスタコンポーネントと会議アプリケーションプログラムを参加者のコンピュータにダウンロードすることができる。ウェブサーバは、その会議のブロードキャストチャネルに関連付けられたチャネルタイプおよびチャネルインスタンスと、そのブロードキャストチャネルのポータルコンピュータの識別もダウンロードする。ウェブサーバは、会議中に参加者に表示するスライドや他の内容もダウンロードすることができる。
【0056】
会議システムは、エンティティがウェブサイトを使用して会議を予定することを可能にする。例えば、ソフトウェア会社が新製品発表の会議を予定する必要があるとする。会議の作成には、チャネルタイプおよびチャネルインスタンスの生成、セキュリティレベルの指定(例えばメッセージの暗号化)、出席者の条件の指定、会議の説明と予定時刻の提供、参加者に配布する内容の指定などが必要とされる。会議の発言者は、実際の内容(例えばスライド)を事前に公表することを望まない場合がある。このような場合は、出席者に配布する際には内容を暗号化し、その内容を解読するための鍵を会議中に発言者によって配布することができる。例えば、ソフトウェア会社の発表用の各スライドを異なる鍵で暗号化し、各新スライドメッセージとともに適切な鍵をブロードキャストすることができる。
【0057】
この会議システムでは出席者が発言をブロードキャストチャネルにブロードキャストすることができる。出席者が発言をブロードキャストできる時間は発言者によって制御することができる。例えば、発言者コンポーネントは、発言許可メッセージと発言不可メッセージをブロードキャストして発言を許可する時間を定めることができる。その時間外にブロードキャストされる発言は無視することができる。あるいは出席者がいつでも発言をブロードキャストできるようにしてもよいが、発言者が承認メッセージをブロードキャストして、出席者コンポーネントが特定の発言を表示してよいことを知らせるまでは、他の出席者はその発言を無視する。
【0058】
会議システムは、それぞれの出席者が必要に応じて会議中に会議ブロードキャストチャネルに接続し、接続を切断することを可能にする。さらに、会議システムは複数の発言者が「演壇」を共有することも可能にする。発言者はその間で発言者トークンを渡して、現在誰が発言中で、したがって会議を支配しているかを示すことができる。遅れて会議に加わる出席者は、会議監視ウェブサーバにアクセスすることにより、会議を同時進行で追うことができる。監視ウェブサーバは会議ブロードキャストチャネルに接続し、会議の現在の状態を監視することができる。出席者が遅れて加わると、監視ウェブサーバは、その出席者に会議の現在の状況を提供することができる。その後は、出席者はブロードキャストチャネルをリッスンして会議の進行を追うことができる。また、出席者コンポーネントは、出席者が現在提示されているもの以外の提示の一部を見ることも可能にする。このようにして、出席者は提示の他の部分を遡って参照することも、先に参照することもできる。
【0059】
分散ゲーム環境
一実施形態では、ブロードキャストチャネルを使用してゲーム環境を実装する。このゲーム環境は、ブロードキャスタコンポーネントと対話する各プレーヤのコンピュータで実行されるゲームアプリケーションプログラムによって提供される。各プレーヤは、そのゲームがプレーされるブロードキャストチャネルに接続することによりゲーム(例えば一人称形式の射撃ゲーム)に参加する。ゲームでプレーヤが行動を行うたびに、その行動を表すメッセージがそのゲームのブロードキャストチャネルでブロードキャストされる。また、プレーヤは、メッセージをブロードキャストすることにより、1人または複数の他のプレーヤにメッセージ(例えば戦略情報)を送信することができる。ゲームアプリケーションプログラムは、ブロードキャストチャネルで受信された、あるいはそのコンピュータでプレーヤによって生成された行動の指示を受信すると、ゲームの現在の状態を更新する。ゲームは、プレーヤの1人が特定スコアに達したとき、すべての他のプレーヤを負かしたとき、すべてのプレーヤがゲームをやめたときに終了することができる。
【0060】
このゲーム環境のためのゲームの作成を容易にするために、アプリケーションプログラムインタフェース(「API」)を提供してゲーム開発者を支援する。このAPIは、大半のタイプの一人称射撃ゲームで使用される高レベルのゲーム機能を提供することができる。APIは例えば、プレーヤが新しい位置に移動したことを示す、特定の方向に撃つ、スコアを報告する、プレーヤの入退を知らせる、別のプレーヤにメッセージを送信するなどの機能を含むことができる。
【0061】
このゲーム環境は、プレーヤが現在のゲームの状況を見、新しいゲームを登録することができるゲームウェブサイトを提供することができる。ゲームウェブサーバは、各ゲームと、そのゲームをプレーするブロードキャストチャネルの対応付けを含む。ゲームに参加する際、ユーザはウェブサーバからブロードキャスタコンポーネントとゲームアプリケーションプログラムをダウンロードする。ユーザは、そのゲームのグラフィックを含むことができるゲームの説明もダウンロードする。ウェブサーバは、ゲームと関連付けられたチャネルタイプおよびチャネルインスタンスと、そのゲームのポータルコンピュータの識別も提供する。ゲーム環境は、各ゲームに接続してゲームのアクティビティを監視し、そのアクティビティをウェブサーバに報告するゲーム監視コンピュータも備えることができる。このアクティビティ情報により、ウェブサーバは、各ゲームの現在の状態についての情報(例えばプレーヤ数)を提供することができる。
【0062】
このゲーム環境は、一人称形式の射撃ゲーム以外のゲームにも使用することができる。例えば、プレーヤが様々な役のプレーを申し込む社会シミュレーションゲームの変形をプレーすることができる。役が満たされないか、あるいはその役のプレーヤがプレーをしていない場合には、自動化されたプレーヤがその役を引き受けることができる。
【0063】
次の表にブロードキャスタコンポーネントによって送信されるメッセージを挙げる。
【0064】
【表1】
【0065】
【表2】
【0066】
流れ図
図8−34は、一実施形態におけるブロードキャスタコンポーネントの処理を表す流れ図である。図8は、一実施形態における接続ルーチンの処理を表す流れ図である。このルーチンには、このプロセスが接続を必要とするブロードキャストチャネルを識別するチャネルタイプ(例えばアプリケーション名)およびチャネルインスタンス(例えばセッション識別子)が渡される。このルーチンには、ポータルコンピュータのリストを含む補助情報と接続コールバックルーチンも渡される。接続が確立されると、接続コールバックルーチンが起動されてアプリケーションプログラムに通知する。このプロセスがこのルーチンを起動するとき、プロセスは接続探索状態にある。接続されたポータルコンピュータを見つけ、このルーチンが少なくとも1つの隣接プロセスに接続すると、このプロセスは部分的に接続した状態に入り、プロセスが最終的に4つの隣接プロセスに接続すると、完全に接続された状態に入る。小規模体制では、完全に接続されたプロセスが有する隣接プロセスは3つ以下の場合がある。ブロック801で、ルーチンは、プロセスが外部接続と内部接続を確立する際に他のプロセスと通信するための着呼ポートを開く。このポートは、上述のハッシュアルゴリズムを使用して、最初の利用可能ポートとして選択される。ブロック802で、ルーチンは接続時刻を現在の時刻に設定する。この接続時刻を使用して、その外部ポートを通じて接続されるプロセスのインスタンスを識別する。あるプロセスが1つの着呼ポートを使用してあるチャネルタイプおよびチャネルインスタンスのブロードキャストチャネルに接続し、その後切断し、別のプロセスが同じ着呼ポートを使用して同じブロードキャストチャネルに接続することができる。もう一方のプロセスが完全に接続した状態になる前に、別のプロセスがそれが完全に接続された古いプロセスであると考えて、そのプロセスとの通信を試みることができる。このような場合は、接続時刻を使用してこの状況を識別することができる。ブロック803で、ルーチンはポータルコンピュータ探索ルーチンを起動してチャネルタイプとチャネルインスタンスを渡す。ポータルコンピュータ探索ルーチンは、渡されたタイプとインスタンスについて、そのプロセスがブロードキャストチャネルに接続するためのポータルコンピュータを見つけることを試みる。判定ブロック804で、ポータルコンピュータ探索ルーチンがそのポータルコンピュータで完全に接続されたプロセスを見つけることができた場合、ルーチンはブロック805に進み、そうでない場合は失敗の指示を戻す。判定ブロック805でそのプロセスが実行されているポータルコンピュータ以外にポータルコンピュータが見つからない場合は、それがブロードキャストチャネルに完全に接続される最初のプロセスということであり、ルーチンはブロック806に進み、そうでない場合はブロック808に進む。ブロック806でルーチンは接続成立ルーチンを起動して、そのプロセスの状態を完全に接続された状態に変更する。ブロック807で、ルーチンは、渡されたチャネルタイプおよびチャネルインスタンスについて、そのプロセスの外部ポートを通じて受信するメッセージを処理する外部ディスパッチャをインストールする。その外部ポートを通じてメッセージを受信すると、この外部ディスパッチャが起動される。次いでルーチンは戻る(リターンする)。ブロック808で、ルーチンは外部ディスパッチャをインストールする。ブロック809でルーチンは接続要求ルーチンを起動して、接続を求めるコンピュータの隣接コンピュータを識別するプロセスを開始する。この後ルーチンは戻る。
【0067】
図9は、一実施形態におけるポータルコンピュータ探索ルーチンの処理を表す流れ図である。このルーチンには、そのプロセスが接続を求めるブロードキャストチャネルのチャネルタイプとチャネルインスタンスが渡される。このルーチンは、検索の深さ(例えばポート番号)ごとに、その検索の深さにあるポータルコンピュータを調べる。ブロードキャストチャネルに完全に接続されたプロセスを有するポータルコンピュータがその検索の深さで見つかった場合、ルーチンは成功の指示を返す。ブロック902−911で、ルーチンは、プロセスを見つけるまで各検索深さの選択をループで行う。ブロック902で、ルーチンはポート番号順序付けアルゴリズムを用いて次の探索深さを選択する。判定ブロック903で、そのループの実行中、すなわち現在選択されている深さですべての検索深さがすでに選択されている場合、ルーチンは失敗の指示を戻し、そうでない場合はブロック904に進む。ブロック904−911で、ルーチンは、各ポータルコンピュータの選択と、そのポータルコンピュータのプロセスが、渡されたチャネルタイプおよびチャネルインスタンスを有するブロードキャストチャネルに接続されているか(あるいは接続を試みているか)どうかの判定をループで行う。ブロック904でルーチンは次のポータルコンピュータを選択する。判定ブロック905で、すでにすべてのポータルコンピュータが選択されている場合は、ルーチンはループしてブロック902に戻って次の探索深さを選択し、そうでない場合はブロック906に進む。ブロック906で、ルーチンは、その検索の深さで表されるポートを通じて選択されたポータルコンピュータにダイヤルする。判定ブロック907でダイヤルが成功した場合ルーチンはブロック908に進み、そうでない場合はループしてブロック904に戻り次のポータルコンピュータを選択する。ダイヤルは、ダイヤルしたポートが、そのポータルコンピュータで実行されるプロセスの、渡されたチャネルタイプおよびチャネルインスタンスのブロードキャストチャネルの着呼ポートである場合に成功する。ブロック908でルーチンは接触プロセスルーチンを起動し、このルーチンはダイヤルしたポートを通じてポータルコンピュータの応答プロセスに接触し、そのプロセスがブロードキャストチャネルに完全に接続されているかどうかを判定する。ブロック909で、ルーチンは、選択されたポータルコンピュータとの接続を切断する。判定ブロック910で、応答プロセスが完全にブロードキャストチャネルに接続されている場合には、ルーチンは成功の指示を戻し、そうでない場合はブロック911に進む。ブロック911で、ルーチンは、外部呼出し確認ルーチンを起動して、ポータルコンピュータとしてのそのプロセスに外部呼出しが行われたかどうかを判定し、その呼出しを処理する。ルーチンは次いでループしてブロック904に戻り、次のポータルコンピュータを選択する。
【0068】
図10は、一実施形態における接触プロセスルーチンの処理を表す流れ図である。このルーチンは、選択されたポートへの着呼に応答した選択されたポータルコンピュータのプロセスが完全にブロードキャストチャネルに接続されているかどうかを判定する。ブロック1001で、ルーチンは、応答プロセスに外部メッセージ(seeking_connection_call)を送信して、接続を求めるプロセスが、応答プロセスがブロードキャストチャネルに完全に接続されているかどうかを知る必要があることを知らせる。ブロック1002で、ルーチンは、応答プロセスから外部応答メッセージを受信する。判定ブロック1003で、外部応答メッセージ(seeking_connection_resp)の受信に成功した場合、ルーチンはブロック1004に進み、そうでない場合は戻る。ブロードキャストコンポーネントは、外部メッセージの受信を要求する際には必ずタイムアウト期間を設定する。そのタイムアウト期間内に外部メッセージを受信しない場合、ブロードキャスタコンポーネントは、それ自体の着呼ポートを調べて別のプロセスがそのポートを呼び出しているかどうかを確認する。詳細には、ダイヤルされたプロセスがダイヤル側のプロセスを呼び出している可能性があり、この結果デッドロック状態になることがある。ブロードキャスタコンポーネントは、受信要求を数回繰り返すことができる。予期されるメッセージを受信しない場合、ブロードキャスタコンポーネントはそのエラーを適宜処理する。判定ブロック1004で、応答プロセスがその応答メッセージの中でそれが完全にブロードキャストチャネルに接続されていることを示す場合、ルーチンはブロック1005に進み、そうでない場合はブロック1006に進む。ブロック1005で、ルーチンは接続されたポータルコンピュータのリストに選択されたポータルコンピュータを追加し、戻る。ブロック1006で、ルーチンは接続を求める同様プロセスのリストに応答プロセスを追加し、戻る。
【0069】
図11は、一実施形態における接続要求ルーチンの処理を表す流れ図である。このルーチンは、ブロードキャストチャネルに完全に接続されていると識別されたポータルコンピュータのプロセスに、このプロセスとブロードキャストチャネルの接続を開始することを要求する。判定ブロック1101で、ブロードキャストチャネルに完全に接続されたポータルコンピュータの少なくとも1つのプロセスを見つけた場合、ルーチンはブロック1103に進み、そうでない場合はブロック1102に進む。ポータルコンピュータのプロセスは、そのコンピュータが最近ブロードキャストチャネルとの接続を切断した場合にはもはやリストにない可能性がある。一実施形態では、接続を求めるコンピュータは常にその検索深さ全体を検索し、ブロードキャストチャネルに接続するための複数のポータルコンピュータを見つけることができる。ブロック1102で、ルーチンはブロードキャストチャネルへの接続プロセスを再開し、戻る。ブロック1103で、ルーチンは、着呼ポートを通じて、見つかったポータルコンピュータの1つのプロセスにダイヤルする。判定ブロック1104でダイヤルが成功した場合ルーチンはブロック1105に進み、そうでない場合はブロック1113に進む。ダイヤルは、例えばダイヤルされたプロセスが最近ブロードキャストチャネルとの接続を切断している場合に失敗となる。ブロック1105で、ルーチンはダイヤルしたプロセスに外部メッセージ(connection_request_call)を送信して、ブロードキャストチャネルへの接続を要求する。ブロック1106で、ルーチンは応答メッセージ(connection_request_resp)を受信する。判定ブロック1107で応答メッセージを受信した場合ルーチンはブロック1108に進み、そうでない場合はブロック1113に進む。ブロック1108で、ルーチンは、受信した応答に基づいてそのプロセスの予想されるホール(すなわち空の内部接続)の数を設定する。大規模体制の場合、予想ホール数はゼロである。小規模体制の場合、予想ホール数は1から3の範囲である。ブロック1109で、ルーチンは、受信した応答に基づいてブロードキャストチャネルの推定直径を設定する。判定ブロック1111で、ダイヤルしたプロセスがそのプロセスに接続できる状態にあると応答メッセージに示される場合、ルーチンはブロック1112に進み、そうでない場合はブロック1113に進む。ブロック1112でルーチンは隣接プロセス追加ルーチンを起動して、応答プロセスをそのプロセスの隣接プロセスとして追加する。この応答プロセスの追加は、通例、ブロードキャストチャネルが小規模体制の場合に行われる。大規模体制の場合には、隣接プロセスを求めるランダムウォーク検索を行う。ブロック1113で、ルーチンは応答プロセスコンピュータとの外部接続を切断し、戻る。
【0070】
図12は、一実施形態における外部呼出し確認ルーチンの処理を示す流れ図である。このルーチンは、接続を求める同様プロセスがこのプロセスを通じてブロードキャストチャネルへの接続を試みているかどうかを識別するために起動される。ブロック1201で、ルーチンは着呼ポートへの呼出しへの応答を試みる。判定ブロック1202で応答が成功した場合ルーチンはブロック1203に進み、そうでない場合は戻る。ブロック1203で、ルーチンは外部ポートから外部メッセージを受信する。判定ブロック1204で、そのメッセージのタイプが、接続を求めるプロセスが呼出し元であることを示す場合(seeking_connection_call)ルーチンはブロック1205に進み、そうでない場合は戻る。ブロック1205で、ルーチンは接続を求めるもう一方のプロセスに外部メッセージ(seeking_connection_resp)を送信して、このプロセスも接続を要求していることを知らせる。判定ブロック1206で外部メッセージの送信が成功した場合、ルーチンはブロック1207に進み、そうでない場合は戻る。ブロック1207で、ルーチンは、接続を求めるもう一方のプロセスを、接続を求める同様プロセスのリストに追加し、戻る。このリストは、このプロセスが、ブロードキャストチャネルに完全に接続されたプロセスを見つけられない場合に使用することができる。その場合、このプロセスは、接続を求める同様プロセスの中にブロードキャストチャネルへの接続に成功したものがあるかどうかを調べることができる。例えば、接続を求めるある同様プロセスが、ブロードキャストチャネルに完全に接続された最初のプロセスになることができる。
【0071】
図13は、一実施形態における接続成立ルーチンの処理を示す流れ図である。このルーチンは、このプロセスの状態をブロードキャストチャネルに完全に接続された状態に設定し、コールバックルーチンを起動して、プロセスが要求のブロードキャストチャネルに完全に接続された状態になったことをアプリケーションプログラムに通知する。ブロック1301で、ルーチンはこのプロセスの接続状態を完全に接続された状態に設定する。ブロック1302で、ルーチンは、接続状態外部メッセージ(connected_stmt)を送信することにより、プロセスが完全に接続されていることを接続を求める同様プロセスに通知する。ブロック1303で、ルーチンは接続コールバックルーチンを起動してアプリケーションプログラムに通知し、戻る。
【0072】
図14は、一実施形態における外部ディスパッチャルーチンの処理を示す流れ図である。このルーチンは、外部ポートがメッセージを受信した時に起動される。このルーチンはメッセージを取り出し、外部メッセージのタイプを識別し、そのメッセージを処理する適切なルーチンを起動する。このルーチンは、受信したすべてのメッセージを処理するまで各メッセージの処理をループで繰り返す。ブロック1401で、ルーチンは外部ポートに応答し(例えば受信し(pick up))、外部メッセージを取り出す。判定ブロック1402で、メッセージが取り出された場合、ルーチンはブロック1403に進み、そうでない場合はブロック1415で外部ポートを切断して戻る。判定ブロック1403で、そのメッセージタイプが接続を求めるプロセスである場合(seeking_connection_call)、ルーチンはブロック1404で接続探索呼出し処理ルーチンを起動し、そうでない場合はブロック1405に進む。判定ブロック1405で、メッセージタイプが接続要求呼出しである場合(connection_request_call)、ルーチンはブロック1406で接続要求呼出し処理ルーチンを起動し、そうでない場合はブロック1407に進む。判定ブロック1407で、メッセージタイプがエッジ提示呼出し(edge_proposal_call)である場合、ルーチンはブロック1408でエッジ提示呼出し処理ルーチンを起動し、そうでない場合はブロック1409に進む。判定ブロック1409で、メッセージタイプがポート接続呼出し(port_connect_call)である場合、ルーチンはブロック1410でポート接続呼出し処理ルーチンを起動し、そうでない場合はブロック1411に戻る。判定ブロック1411で、メッセージタイプが接続状態ステートメント(connected_stmt)である場合、ルーチンはブロック1112で接続状態ステートメント処理を起動し、そうでない場合はブロック1212に進む。判定ブロック1412で、メッセージタイプが状態修復ステートメント(condition_repair_stmt)である場合、ルーチンはブロック1413で状態修復処理ルーチンを起動し、そうでない場合はブロック1414にループして次のメッセージを処理する。各処理ルーチンを起動すると、ルーチンはブロック1414にループする。ブロック1414で、ルーチンは外部ポートを切断し、ブロック1401に進んで次のメッセージを受信する。
【0073】
図15は、一実施形態における接続探索呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、接続を求めるプロセスが、ブロードキャストチャネルに接続するためのポータルコンピュータを識別するために呼出しを行う際に起動される。判定ブロック1501で、このプロセスが、メッセージ中で識別されるブロードキャストチャネルに現在完全に接続されている場合、ルーチンはブロック1502に進み、そうでない場合はブロック1503に進む。ブロック1502で、ルーチンは、このプロセスがブロードキャストチャネルに完全に接続されていることを示すようにメッセージを設定し、ブロック1505に進む。ブロック1503で、ルーチンはこのプロセスが完全に接続された状態ではないことを示すメッセージを設定する。ブロック1504で、ルーチンは、接続を求めるプロセスの識別を、接続を求める同様プロセスのリストに追加する。このプロセスが完全に接続されていない場合、このプロセスはブロードキャストチャネルへの接続を試みていることになる。ブロック1505で、ルーチンは接続を求めるプロセスに外部メッセージ応答(seeking_connection_resp)を送信し、戻る。
【0074】
図16は、一実施形態における接続要求呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、呼出し側プロセスが、ブロードキャストチャネルへのそのプロセスの接続の開始をこのプロセスに求めるときに起動される。このルーチンは、呼出し側プロセスがこのプロセスとの内部接続を確立することを可能にする(例えば小規模体制の場合)か、または呼出し側プロセスが接続できるプロセスを識別するプロセスを開始する。判定ブロック1601で、このプロセスが現在ブロードキャストチャネルに完全に接続されている場合、ルーチンはブロック1603に進み、そうでない場合はブロック1602で外部ポートを切断し、戻る。ブロック1603で、ルーチンは、呼出し側プロセスの予想ホール数を応答メッセージ中に設定する。ブロック1604で、ルーチンは応答メッセージ中に推定直径を設定する。ブロック1605で、ルーチンはこのプロセスが呼出し側プロセスに接続できる状態であるかどうかを知らせる。このプロセスは、ホール数が1以上で、かつ呼出し側プロセスがこのプロセスの隣接プロセスでないときに接続できる状態となる。ブロック1606で、ルーチンは、接続要求呼出し(connection_request_call)に応答する外部メッセージを呼出し側プロセスに送信する。ブロック1607で、ルーチンは、要求メッセージに示される呼出し側プロセスが埋める必要のあるホールの数を認識する。判定ブロック1608で、このプロセスが呼出し側プロセスに接続できる状態である場合、ルーチンはブロック1609に進み、そうでない場合はブロック1611に進む。ブロック1609で、ルーチンは、隣接プロセス追加ルーチンを起動して呼出し側プロセスを隣接プロセスとして追加する。ブロック1610で、ルーチンは呼出し側プロセスが埋める必要のあるホール数を減分し、ブロック1611に進む。ブロック1611で、ルーチンは外部ポートを切断する。判定ブロック1612で、このプロセスにホールがないか、または推定直径が2以上である(すなわち大規模体制である)場合、ルーチンはブロック1613に進み、そうでない場合はブロック1616に進む。ブロック1613−1615で、ルーチンは、呼出し側プロセスをブロードキャストチャネルに接続するためのエッジを求める要求の転送をループで行う。埋める必要のある呼出し側プロセスのホールの対1つにつき1つの要求を転送する。判定ブロック1613で埋めるべき呼出し側プロセスのホール数が2以上である場合、ルーチンはブロック1614に進み、そうでない場合はブロック1616に進む。ブロック1614で、ルーチンは、接続エッジ探索転送ルーチンを起動する。起動したルーチンは、呼出し側プロセスの指示とランダムウォークの距離に渡される。一実施形態では、この距離はブロードキャストチャネルの推定直径の2倍である。ブロック1614で、ルーチンは埋めるべき残りのホールを2だけ減分し、ブロック1613にループする。判定ブロック1616で、埋めるべきホールがまだある場合、ルーチンはブロック1617に進み、そうでない場合は戻る。ブロック1617で、ルーチンはホールフィルルーチンを起動し、呼出し側プロセスの識別を渡す。ホールフィルルーチンは、呼出し側プロセスがそれを通じてブロードキャストチャネルに接続できる接続されたプロセスのホールを求めて、接続ポート探索ステートメント(connection_port_search_stmt)をブロードキャストする。
【0075】
図17は、一実施形態における隣接プロセス追加ルーチンの処理を示す流れ図である。このルーチンは、外部ポートに呼出しを行うプロセスをこのプロセスの隣接プロセスとして追加する。ブロック1701で、ルーチンは、外部ポートの呼出しプロセスを識別する。ブロック1702で、ルーチンは、フラグをセットしてその隣接プロセスがまだこのプロセスからのブロードキャストメッセージを受信していないことを示す。このフラグを使用して、その新しい隣接プロセスに最初に送信されたメッセージに断絶がないことを保証する。外部ポートは、この接続の内部ポートとなる。判定ブロック1703でこのプロセスが接続探索状態にある場合、このプロセスはその最初の隣接プロセスに接続しようとしており、ルーチンはブロック1704に進み、そうでない場合はブロック1705に進む。ブロック1704で、ルーチンは、このプロセスの接続状態を部分的に接続された状態に設定する。ブロック1705で、ルーチンは、呼出し側プロセスをこのプロセスの隣接プロセスのリストに追加する。ブロック1706で、ルーチンは新しい隣接プロセスのために内部ディスパッチャをインストールする。この内部ディスパッチャは、その内部ポートを通じてその新しい隣接プロセスからメッセージを受信すると起動される。ブロック1707で、このプロセスが完全に接続されていなかった間にメッセージをバッファリングしていた場合には、ルーチンはブロック1708に進み、そうでない場合はブロック1709に進む。一実施形態では、部分的に接続されたプロセスは内部接続を通じて受信するメッセージをバッファリングしておき、新しい隣接プロセスに接続するとそのメッセージを送信することができる。ブロック1708で、ルーチンは、バッファリングされたメッセージを内部ポートを通じて新しい隣接プロセスに送信する。判定ブロック1709で、このプロセスのホール数が予想ホール数と等しい場合には、このプロセスは完全に接続されていることになり、ルーチンはブロック1710に進み、そうでない場合はブロック1711に進む。ブロック1710で、ルーチンは、接続成立ルーチンを起動して、このプロセスが完全に接続されていることを示す。判定ブロック1711で、このプロセスのホール数がゼロである場合、ルーチンはブロック1712に進み、そうでない場合は戻る。ブロック1712で、ルーチンは保留中のエッジがあればそれを削除して戻る。保留中のエッジとはエッジピンニングのためにこのプロセスに提示されたエッジであるが、この場合にはもはや必要でない。
【0076】
図18は、一実施形態における接続エッジ探索転送ルーチンの処理を示す流れ図である。このルーチンは、無作為に選択したこのプロセスの隣接プロセスの内部ポートを通じて要求元のプロセスをその隣接プロセスに接続する要求を送出する役目を担うが、これはランダムウォークの一部である。判定ブロック1801で残りの転送距離が1以上である場合、ルーチンはブロック1804に進み、そうでない場合はブロック1802に進む。判定ブロック1802でこのプロセスの隣接プロセスの数が2以上である場合、ルーチンはブロック1804に進み、そうでない場合はこのブロードキャストチャネルは小規模体制にあることになり、ルーチンはブロック1803に進む。判定ブロック1803で、要求元プロセスがこのプロセスの隣接プロセスである場合ルーチンは戻り、そうでない場合はブロック1804に進む。ブロック1804−1807で、ルーチンは、接続エッジ探索呼出しの内部メッセージ(connection_edge_search_call)を無作為に選択した隣接プロセスに送信することをループで試みる。ブロック1804で、ルーチンはこのプロセスの隣接プロセスを無作為に選択する。判定ブロック1805で、すでにこのプロセスの隣接プロセスがすべて選択されている場合、ルーチンはメッセージを転送することができず、戻り、そうでない場合はブロック1806に進む。ブロック1806で、ルーチンは接続エッジ探索呼出しの内部メッセージを選択された隣接プロセスに送信する。判定ブロック1807でメッセージの送信が成功した場合、ルーチンはブロック1808に進み、そうでない場合はブロック1804にループして次の隣接プロセスを選択する。内部メッセージの送信が成功しないときは、隣接コンピュータが計画しない形でブロードキャストチャネルとの接続を切断している可能性がある。ブロードキャストコンポーネントは、そのような状況を検出したときには、ホールフィルルーチンを起動して1つのホールを埋めるか、または接続エッジ探索転送ルーチンを起動して2つのホールを埋めることにより別の隣接コンピュータを見つけることを試みる。ブロック1808で、ルーチンは、最近送信した接続エッジ探索呼出しがまだ認識されていないことに気付き、残りの転送距離が1以下である場合にはその隣接コンピュータへのエッジが確保されていることを知らせる。このエッジは、選択された隣接プロセスがエッジピンニングのためにそのエッジを要求元プロセスに提供する可能性があるために確保される。そしてルーチンは戻る。
【0077】
図19は、エッジ提示呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、提示側のプロセスとその隣接プロセスの1つとの間のエッジをエッジピンニングのためにこのプロセスに接続することを提案するメッセージを提示側プロセスから受信した際に起動される。判定ブロック1901で、このプロセスのホール数から保留中エッジの数を引いた数が1以上である場合には、このプロセスには埋めるべきホールがまだあることになり、ルーチンはブロック1902に進み、そうでない場合にはブロック1911に進む。判定ブロック1902で、提示側プロセスまたはその隣接プロセスがこのプロセスの隣接プロセスである場合には、ルーチンはブロック1911に進み、そうでない場合はブロック1903に進む。ブロック1903で、ルーチンは、このプロセスと提示側プロセスの間のエッジが保留中であることを知らせる。判定ブロック1904で、提示された隣接プロセスがすでに提示された隣接プロセスとして保留中である場合には、ルーチンはブロック1911に進み、そうでない場合にはブロック1907に進む。ブロック1907で、ルーチンは、エッジ提示応答を外部メッセージ(edge_proposal_resp)として提示側プロセスに送信し、提示されたエッジを承認することを知らせる。判定ブロック1908でメッセージの送信が成功した場合、ルーチンはブロック1909に進み、そうでない場合は戻る。ブロック1909で、ルーチンはそのエッジを保留エッジとして追加する。ブロック1910で、ルーチンは隣接プロセス追加ルーチンを起動して、外部ポートの提示側プロセスを隣接プロセスとして追加する。そしてルーチンは戻る。ブロック1911で、ルーチンは外部メッセージ(edge_proposal_resp)を送信し、その提示されたエッジを承認しないことを知らせる。判定ブロック1912でホール数が奇数である場合、ルーチンはブロック1913に進み、そうでない場合は戻る。ブロック1913で、ルーチンはホールフィルルーチンを起動し、戻る。
【0078】
図20は、一実施形態におけるポート接続呼出し処理ルーチンの処理を示す流れ図である。このルーチンは、送信元プロセスがこのプロセスの1つのホールへの接続を求めることを知らせる外部メッセージを受信したときに起動される。判定ブロック2001で、このプロセスのホール数が1以上である場合は、ルーチンはブロック2002に進み、そうでない場合はブロック2003に進む。判定ブロック2002で、送信元プロセスが隣接プロセスでない場合、ルーチンはブロック2004に進み、そうでない場合はブロック2003に進む。ブロック2003で、ルーチンはポート接続応答の外部メッセージ(port_connection_resp)を送信元プロセスに送信して、このプロセスへの接続は許可できないことを知らせる。次いでルーチンは戻る。ブロック2004で、ルーチンは、ポート接続応答の外部メッセージを送信元プロセスに送信して、このプロセスへの接続を許可することを知らせる。判定ブロック2005で、メッセージの送信が成功した場合ルーチンはブロック2006に進み、そうでない場合はブロック2007に進む。ブロック2006で、ルーチンは、隣接プロセス追加ルーチンを起動して送信元プロセスをこのプロセスの隣接プロセスとして追加し、戻る。ブロック2007で、ルーチンは外部接続を切断する。ブロック2008で、ルーチンは接続要求ルーチンを起動して、このプロセスのホールの1つにプロセスを接続させることを要求する。次いでルーチンは戻る。
【0079】
図21は、一実施形態におけるホールフィルルーチンの処理を示す流れ図である。このルーチンには要求元プロセスの指示が渡される。このプロセスがホールを埋めることを要求している場合、このルーチンは他のプロセスに内部メッセージを送信する。別のプロセスがホールを埋めることを要求している場合、このルーチンは接続ポート探索要求を処理するルーチンを起動する。ブロック2101で、ルーチンは接続ポート探索ステートメントの内部メッセージ(connection_port_search_stmt)を初期化する。判定ブロック2102で、このプロセスが要求元プロセスである場合、ルーチンはブロック2103に進み、そうでない場合はブロック2104に進む。ブロック2103で、ルーチンは内部ポートを通じてこのプロセスの隣接プロセスにメッセージを配信し、戻る。ブロック2104で、ルーチンは接続ポート探索処理ルーチンを起動し、戻る。
【0080】
図22は、一実施形態における内部ディスパッチャルーチンの処理を示す流れ図である。このルーチンには、内部メッセージを送信した隣接プロセスの指示が渡される。ブロック2201で、ルーチンは内部メッセージを受信する。このルーチンはメッセージタイプを識別し、メッセージを処理する適切なルーチンを起動する。ブロック2202で、ルーチンは、受信したメッセージ中の情報に基づいて、ブロードキャストチャネルの推定直径を変更するかどうかを判断する。判定ブロック2203で、このプロセスがメッセージの発信元プロセスであるか、そのメッセージをすでに受信している(すなわち複製である)場合、ルーチンはメッセージを無視してブロック2208に進み、そうでない場合はブロック2203Aに進む。判定ブロック2203Aでプロセスが部分的に接続されている場合、ルーチンはブロック2203Bに進み、そうでない場合はブロック2204に進む。ブロック2203Bで、ルーチンはメッセージを保留中の接続用のバッファに追加し、ブロック2204に進む。判定ブロック2204−2207でルーチンはメッセージタイプを解読し、メッセージを処理する適切なルーチンを起動する。例えば、判定ブロック2204でメッセージのタイプがブロードキャストステートメント(broadcast_stmt)である場合、ルーチンはブロック2205でブロードキャストメッセージ処理ルーチンを起動する。適切な処理ルーチンを起動すると、ルーチンはブロック2208に進む。判定ブロック2208で、部分的に接続された状態用のバッファがいっぱいである場合、ルーチンはブロック2209に進み、そうでない場合はブロック2210に進む。ブロードキャスタコンポーネントは、部分的に接続されている間にすべてのその内部メッセージをバッファに集めておき、新しい隣接プロセスに接続したときにそのメッセージを転送することができる。しかし、このバッファがいっぱいになると、ブロードキャストチャネルはこの時点では小規模体制にあるので、プロセスはそれが完全に接続された状態になっており、予想接続数が多すぎたとみなす。ブロック2209でルーチンは接続成立ルーチンを起動し、ブロック2210に進む。判定ブロック2210でアプリケーションプログラムメッセージキューが空である場合、ルーチンは戻り、そうでない場合はブロック2212に進む。ブロック2212でルーチンは応答受信ルーチンを起動し、取得したメッセージを渡して戻る。応答受信ルーチンは、アプリケーションプログラムのコールバックルーチンである。
【0081】
図23は、一実施形態におけるブロードキャストメッセージ処理ルーチンの処理を示す流れ図である。このルーチンには、発信元プロセスの指示、ブロードキャストメッセージの送信元である隣接コンピュータの指示、およびブロードキャストメッセージ自体が渡される。ブロック2301で、ルーチンはそのメッセージの順序はずれ処理を行う。ブロードキャスタコンポーネントは、通し番号順にアプリケーションプログラムに送れるようになるまで、各発信元プロセスからのメッセージをキューに入れておく。ブロック2302で、ルーチンはブロードキャストメッセージ配信ルーチンを起動して、このプロセスの隣接プロセスにメッセージを転送する。判定ブロック2303で、新しく接続された隣接プロセスがメッセージの受信を待っている場合ルーチンはブロック2304に進み、そうでない場合は戻る。ブロック2304で、ルーチンは可能である場合には各発信元プロセスに正しい順序でメッセージを送信し、そして戻る。
【0082】
図24は、一実施形態におけるブロードキャストメッセージ配信ルーチンの処理を示す流れ図である。このルーチンは、メッセージをこのプロセスに送信した隣接プロセスを除く、このプロセスの各隣接プロセスにブロードキャストメッセージを送信する。ブロック2401で、ルーチンは、メッセージの送信元である隣接プロセス以外の次の隣接プロセスを選択する。判定ブロック2402で、すでにそのような隣接プロセスがすべて選択されている場合、ルーチンは戻る。ブロック2403で、ルーチンは選択した隣接プロセスにメッセージを送信し、ブロック2401にループして次の隣接プロセスを選択する。
【0083】
図26は、一実施形態における接続ポート探索ステートメント処理ルーチンの処理を示す流れ図である。このルーチンには、メッセージの送信元である隣接プロセスの指示とメッセージ自体が渡される。ブロック2601で、ルーチンは内部メッセージ配信を起動し、送信元の隣接プロセス以外の各隣接プロセスにメッセージを送信する。判定ブロック2602でこのプロセスのホール数が1以上である場合、ルーチンはブロック2603に進み、そうでない場合は戻る。判定ブロック2603で要求元プロセスが隣接プロセスである場合、ルーチンはブロック2605に進み、そうでない場合はブロック2604に進む。ブロック2604で、ルーチンは、隣接プロセス接近ルーチンを起動し、戻る。隣接プロセス接近ルーチンは、可能な場合にはこのプロセスを要求元プロセスに接続する。ブロック2605でこのプロセスのホールが1つである場合には、隣接コンピュータ同士に空きポートがある状態が存在することになり、ルーチンはブロック2606に進み、そうでない場合には戻る。ブロック2606で、ルーチンは、このプロセスの隣接プロセスのリストを含む状態確認メッセージ(condition_check)を生成する。ブロック2607で、ルーチンは要求元の隣接プロセスにそのメッセージを送信する。
【0084】
図27は、一実施形態における隣接プロセス接近ルーチンの処理を示す流れ図である。このルーチンには、このプロセスの潜在的な隣接プロセスの指示が渡される。このプロセスが潜在的な隣接プロセスに接続できる場合は、ポート接続呼出しの外部メッセージをその潜在的な隣接プロセスに送信し、その潜在的な隣接プロセスを隣接プロセスとして追加する。判定ブロック2701で潜在的な隣接プロセスがすでに隣接プロセスである場合には、ルーチンは戻り、そうでない場合はブロック2702に進む。ブロック2702で、ルーチンは潜在的な隣接プロセスにダイヤルする。判定ブロック2703でこのプロセスのホール数が1以上である場合、ルーチンはブロック2704に進み、そうでない場合はブロック2706に進む。ブロック2704で、ルーチンは、潜在的な隣接プロセスにポート接続呼出しの外部メッセージ(port_connection_call)を送信し、その応答(port_connection_resp)を受信する。この応答を無事受信したとすると、ルーチンは、ブロック2705で隣接プロセス追加ルーチンを起動することにより、潜在的な隣接プロセスをこのプロセスの隣接プロセスとして追加する。ブロック2706で、ルーチンは潜在的なコンピュータとの接続を切断し、戻る。
【0085】
図28は、一実施形態における接続エッジ探索呼出し処理ルーチンの処理を示す流れ図である。このルーチンには、メッセージの送信元である隣接プロセスの指示とメッセージ自体が渡される。このルーチンは、隣接プロセスにメッセージを転送するか、またはこのプロセスと送信側隣接プロセスとの間のエッジをエッジピンニングのために要求元プロセスに提案する。判定ブロック2801で、このプロセスが要求元プロセスではないか、あるいは要求元プロセスのホール数がなお2以上である場合、ルーチンはブロック2802に進み、そうでない場合はブロック2813に進む。判定ブロック2802で、転送距離が1以上である場合はランダムウォークが完了していないことになり、ルーチンはブロック2803に進み、そうでない場合はブロック2804に進む。ブロック2803で、ルーチンは、接続エッジ探索転送ルーチンを起動して要求元プロセスの指示と減分した転送距離を渡す。ルーチンは次いでブロック2815に進む。判定ブロック2804で、要求元プロセスが隣接プロセスであるか、このプロセスと送信元の隣接プロセスとの間のエッジがあるプロセスにすでに提供されているために確保されている場合、ルーチンはブロック2805に進み、そうでない場合はブロック2806に進む。ブロック2805で、ルーチンは、接続エッジ探索転送ルーチンを起動して、要求元パーティの指示と、二者択一的にあと1つまたは2つのコンピュータにわたってランダムウォークを続けるように指示するトグルインディケータを渡す。ルーチンは次いでブロック2815に進む。ブロック2806で、ルーチンは着呼ポートを介して要求元プロセスにダイヤルする。ブロック2807で、ルーチンはエッジ提示呼出しの外部メッセージ(edge_proposal_call)を送信し、応答(edge_proposal_resp)を受信する。この応答を無事に受信した場合、ルーチンはブロック2808に進む。判定ブロック2808で、エッジが要求元プロセスにとって受容できることを応答が示す場合、ルーチンはブロック2809に進み、そうでない場合はブロック2812に進む。ブロック2809で、ルーチンは、このプロセスと送信元の隣接プロセスの間のエッジを確保する。ブロック2810で、ルーチンは、隣接プロセス追加ルーチンを起動することにより、要求元プロセスを隣接プロセスとして追加する。ブロック2811で、ルーチンは隣接プロセスとしての送信元隣接プロセスを削除する。ブロック2812でルーチンは外部ポートの接続を切断し、ブロック2815に進む。判定ブロック2813で、このプロセスが要求元プロセスであり、かつこのプロセスのホール数が1に等しい場合、ルーチンはブロック2814に進み、そうでない場合はブロック2815に進む。ブロック2814で、ルーチンはホールフィルルーチンを起動する。ブロック2815で、ルーチンは、接続エッジ探索応答メッセージ(connection_edge_search_response)を送信元の隣接プロセスに送信して承認を知らせ、戻る。グラフはパリティに影響される。つまり、あるノードで開始しそのノードで終わるすべての可能な経路は、グラフの周期の長さが奇数でない限り偶数の長さになる。ブロードキャスタコンポーネントは、トグルインディケータを使用して偶数の距離と奇数の距離とでランダムウォークの距離を変える。
【0086】
図29は、一実施形態における接続エッジ探索応答処理ルーチンの処理を示す流れ図である。このルーチンには、要求元プロセスの指示、送信元の隣接プロセス、およびメッセージが渡される。ブロック2901で、ルーチンは接続エッジ探索応答(connection_edge_search_resp)を受信したことに気付き、転送距離が1以下である場合には、このプロセスと送信元の隣接プロセス間に確保されたエッジを解除する。判定ブロック2902で、要求元プロセスがエッジを受容できることがメッセージに示される場合、ルーチンはブロック2903に進み、そうでない場合は戻る。ブロック2903で、ルーチンはこのプロセスと送信元隣接プロセスの間のエッジを確保する。ブロック2904で、ルーチンは隣接プロセスとしての送信元隣接プロセスを削除する。ブロック2905で、ルーチンは隣接プロセス接近ルーチンを起動して要求元プロセスに接続する。判定ブロック2906で起動したルーチンが機能しなかった場合は、ルーチンはブロック2907に進み、そうでない場合は戻る。判定ブロック2907でこのプロセスのホールの数が1以上である場合、ルーチンはブロック2908に進み、そうでない場合は戻る。ブロック2908でルーチンはホールフィルルーチンを起動し、戻る。
【0087】
図30は、一実施形態におけるブロードキャストルーチンの処理を示す流れ図である。このルーチンはアプリケーションプログラムによって起動され、ブロードキャストチャネルでメッセージをブロードキャストする。このルーチンにはブロードキャストするメッセージが渡される。判定ブロック3001で、このプロセスが少なくとも1つの隣接プロセスを有する場合、ルーチンはブロック3002に進み、そうでない場合はそれがブロードキャストチャネルに接続された唯一のプロセスになるのでルーチンは戻る。ブロック3002で、ルーチンはブロードキャストステートメントタイプの内部メッセージ(broadcast_stmt)を生成する。ブロック3003で、ルーチンはメッセージの通し番号を設定する。ブロック3004で、ルーチンは内部メッセージ配信ルーチンを起動して、ブロードキャストチャネルにメッセージをブロードキャストする。ルーチンは戻る。
【0088】
図31は、一実施形態におけるメッセージ取得ルーチンの処理を示す図である。メッセージ取得ルーチンは、アプリケーションプログラム、またはアプリケーションプログラムによって提供されるコールバックルーチンによって起動することができる。このルーチンはメッセージを戻す。ブロック3101で、ルーチンはブロードキャストチャネルのメッセージキューからメッセージをポップする。判定ブロック3102でメッセージを取り出した場合は、ルーチンは成功の指示を戻し、そうでない場合は失敗の指示を戻す。
【0089】
図32−34は、隣接コンピュータ同士に空きポートがある状態と関連付けられたメッセージの処理を示す流れ図である。図32は、一実施形態における状態確認メッセージ処理の処理を示す流れ図である。このメッセージは、ホールが1つあり、このプロセスのホールへの接続を求める要求を受信した隣接プロセスによって送信される。判定ブロック3201で、このプロセスのホール数が1に等しい場合、ルーチンはブロック3202に進み、そうでない場合は隣接コンピュータ同士に空きポートがある状態はもう存在しないことになり、ルーチンは戻る。判定ブロック3202で、送信元の隣接プロセスとこのプロセスが同じ隣接プロセスのセットを有する場合、ルーチンはブロック3203に進み、そうでない場合はブロック3205に進む。ブロック3203で、ルーチンは、このプロセスの隣接プロセスのリストを含む状態二重確認メッセージ(condition_double_check)を初期化する。ブロック3204で、ルーチンは、送信元の隣接プロセスでない隣接プロセスにメッセージを内部的に送信する。そしてルーチンは戻る。ブロック3205で、ルーチンは、同じくこのプロセスの隣接プロセスではない送信元プロセスの隣接プロセスを選択する。ブロック3206で、ルーチンは、選択したプロセスに状態修復メッセージ(condition_repair_stmt)を外部的に送信する。ブロック3207で、ルーチンは隣接プロセス追加ルーチンを起動して、選択した隣接プロセスをこのプロセスの隣接プロセスとして追加し、戻る。
【0090】
図33は、一実施形態における状態修復ステートメント処理ルーチンの処理を示す流れ図である。このルーチンは、既存の隣接プロセスを削除し、メッセージの送信元のプロセスに接続する。判定ブロック3301でこのプロセスにホールがない場合、ルーチンはブロック3302に進み、そうでない場合はブロック3304に進む。ブロック3302で、ルーチンは、隣接コンピュータ同士に空きポートがある状態に関係しない隣接プロセスを選択する。ブロック3303で、ルーチンは、このプロセスの隣接プロセスとしての選択された隣接プロセスを削除する。したがって、ルーチンを実行しているこのプロセスには現在少なくとも1つのホールがあることになる。ブロック3304で、ルーチンは隣接プロセス追加ルーチンを起動して、メッセージの送信元であるプロセスをこのプロセスの隣接プロセスとして追加する。そしてルーチンは戻る。
【0091】
図34は、状態二重確認処理ルーチンの処理を示す流れ図である。このルーチンは、隣接コンピュータ同士に空きポートがある状態が実際に問題となっているかどうか、またはブロードキャストチャネルが小規模体制にあるかどうかを判定する。判定ブロック3401で、このプロセスにホールが1つある場合、ルーチンはブロック3402に進み、そうでない場合はブロック3403に進む。このプロセスのホールが1つでない場合は、このプロセスの隣接プロセスのセットは送信元プロセスの隣接プロセスのセットと同じでない。判定ブロック3402で、このプロセスと送信元プロセスが同じ隣接プロセスのセットを有する場合はブロードキャストチャネルが小規模体制ではないことになり、ルーチンはブロック3403に進み、そうでない場合はブロック3406に進む。判定ブロック3403でこのプロセスにホールがない場合、ルーチンは戻り、そうでない場合はブロック3404に進む。ブロック3404で、ルーチンはこのプロセスの推定直径を1に設定する。ブロック3405で、ルーチンは、直径再設定の内部メッセージ(diameter_reset)をブロードキャストして推定直径が1であることを知らせ、戻る。ブロック3406で、ルーチンはこのプロセスの隣接プロセスのリストを作成する。ブロック3407で、ルーチンは、状態二重確認メッセージの送信元である隣接プロセスに隣接プロセスのリストを含む状態確認メッセージ(condition_check_stmt)を送信し、戻る。
【0092】
上記の説明から、この技術の特定の実施形態について述べたが、本発明の精神および範囲から逸脱せずに各種の変更を行えることが理解されよう。例えば、ブロードキャストチャネルにおける通信は暗号化してもよい。また、チャネルインスタンスまたはセッション識別子は非常に大きな数(例えば128ビット)にして、無許可のユーザが悪意をもってブロードキャストチャネルに侵入するのを妨害する助けとすることができる。ポータルコンピュータは、セキュリティを強化し、無許可ユーザをブロードキャストチャネルに接続させないことも可能である。したがって、本発明は特許請求の範囲以外によっては制限されない。
【0093】
分散競売システム
分散した競売人による電子的な競売を行うための方法およびシステムを提供する。一実施形態では、各参加者のコンピュータは、競売を開始し、入札を受け付け、そして競売を終了する競売人コンポーネントを含む。したがって、この競売システムは、競売で入札を調整する中央競売サーバに依存しない。この競売システムは、ある意味でサーバレスである。この競売システムではブロードキャストチャネルを使用して、競売の参加者間の通信を行う。各参加者のコンピュータはブロードキャストチャネルに接続され、競売参加者プログラムを実行する。競売参加者プログラムは、参加者が競売にかけられている商品に入札し、他の参加者の入札を受信して表示し、競売の終了を調整することを可能にする。参加者が競売にかけられている商品に入札すると、競売参加者プログラムはブロードキャストチャネルに入札メッセージをブロードキャストする。ブロードキャストチャネルに接続された各競売参加者プログラムは、入札メッセージを受信し、現在の最高入札額をその参加者に表示する。その参加者が最高入札額を提示した競売参加者プログラムは、終了の規則に従って競売の終了を調整する。例えば、競売参加者プログラムは、その参加者を上回る入札額が一定の期間出ていないと判断すると、「終了間近(going)」メッセージをブロードキャストすることができる。終了間近メッセージは、競売の終了が近いことを参加者に通告する競売人に相当する。競売参加者プログラムは、終了間近メッセージの送信後に一定期間その参加者を上回る入札が出ていないと判断すると、「終了(gone)」メッセージをブロードキャストすることができる。競売参加者プログラムは、終了メッセージを受信すると、各自の参加者に競売が終了したことを通知する。参加者が落札価格を出した競売参加者プログラムは、競売リッスンサーバと通信してトランザクションを完了する。参加者同士はブロードキャストチャネルを通じて接続されているので、各参加者は各入札が出されるとその通知を受信する。また、この競売システムの信頼性は中央の競売サーバに依存しない。参加者の1人のコンピュータに障害が起こった場合も、他の参加者は競売を続けることができる。一実施形態では、ここに記載するブロードキャストチャネルを使用してこの競売システムを実装する。ただし、当業者は、この競売システムは他の基礎通信ネットワークでも使用できることを理解されよう。
【0094】
競売システムは、競売リッスンサーバコンピュータ、競売モニタコンピュータ、および参加者のコンピュータを含むことができる。競売リッスンサーバコンピュータは、販売者が競売にかける商品をリストするためのウェブサイトを提供することができる。商品をリストする際、販売者は(適切な場合には)競売にかける商品の写真、商品の最低落札価格、競売の開始時間を提供することができる。潜在的な入札者は競売リッスンサーバのウェブページにアクセスしてリストされた競売を見ることができる。潜在的な入札者は、競売リッスンサーバから競売参加者プログラムを各自のコンピュータにダウンロードすることもできる。ユーザがある競売に参加したいときには、参加者は、現在行われている競売のリストと各競売の状況を提供することができる競売参加者プログラムを実行する。参加者は特定の競売を選択し、その競売に入札することができる。2人の参加者がほぼ同時にある商品に同額の入札を出す可能性があるので、競売参加者プログラムは、競売者の競売参加者プログラムによって生成される乱数に基づいてその入札を参加者に与える。入札が出されると、競売参加者プログラムは、自動的に乱数を生成し、それをブロードキャストする際に入札メッセージに含める。競売参加者プログラムは、現在の最高入札額と同額の入札を受信すると、無作為に生成された数が最も大きい参加者にその入札を与える。競売モニタコンピュータもブロードキャストチャネルに接続することができる。競売モニタは、競売で出される入札を監視することにより競売の状態を追跡する。競売モニタは、競売リッスンサーバと、競売に加わると競売参加者プログラムに競売の状態を提供することができる。
【0095】
図35は、一実施形態における競売システムの構成要素を表すブロック図である。競売システムは、競売リッスンサーバ(listing)3501、参加者のコンピュータ3502、および競売モニタ3503を含む。各コンピュータは、中央演算処理装置、メモリ、入力装置(例えばキーボードやポインティングデバイス)、出力装置(例えば表示装置)、および記憶装置(例えばディスクドライブ)を含むことができる。メモリと記憶装置は、競売システムを実装するコンピュータ命令を含むことが可能なコンピュータ可読媒体である。コンピュータ可読媒体は、配線式または無線式の通信機構などのコンピュータデータ伝送媒体も含むことができる。参加者コンピュータは、競売リッスンサーバによって提供されるウェブページにアクセスするためのブラウザを含むことができる。参加者コンピュータと競売モニタはブロードキャストチャネル3505に接続される。参加者コンピュータ、競売モニタコンピュータ、および競売リッスンサーバはインターネット3504を通じて相互に接続される。参加者コンピュータは、ブラウザを使用して競売リッスンサーバによって提供される競売情報にアクセスすることができる。競売リッスンサーバは、ウェブエンジン3506、競売作成コンポーネント3507、競売終了コンポーネント3508、および競売データベース3509を含むことができる。競売作成コンポーネントは、販売者が商品の競売を作成するために使用する。競売終了コンポーネントは、落札者が購買する商品の支払いを行うために使用する。競売リッスンサーバは、参加者を登録するためのコンポーネントと参加者データベースも含むことができる。競売データベースは競売を定義し、競売モニタから提供される競売の現在の状態を保持することができる。当業者は、競売システムには各種の通信機構を使用できることを理解されよう。例えば、ブロードキャストチャネルは実際にはインターネット自体を使用して実装することが可能である。さらに、複数の競売を同時にブロードキャストチャネル上で行うことができる。この場合には、ブロードキャストされる各メッセージは競売識別子を含む。あるいは、各競売が各自のブロードキャストチャネルを備えてもよい。競売リッスンサーバは、各競売参加者プログラムにブロードキャストチャネル情報(例えばアプリケーションとセッションの識別子)を提供することができる。このメッセージは暗号化するか、その他の形でセキュリティを確保して、許可された競売参加者プログラムだけが競売に参加することを保証することができる。
【0096】
図36は、一実施形態における参加者コンピュータの構成要素を表すブロック図である。参加者コンピュータは、ブロードキャスタコンポーネント3601、競売参加者プログラム3602、および競売データベース3603を含む。ブロードキャスタコンポーネントは、ブロードキャストチャネルへの接続、ブロードキャストチャネルへのメッセージのブロードキャスト、およびブロードキャストチャネルからのメッセージの受信を制御する。競売参加者プログラムは、ブロードキャスタコンポーネントを使用して、ブロードキャストチャネルによるメッセージの送信およびメッセージの受信により競売への参加を制御する。競売データベースは、競売の現在の状態に関する情報を含む。競売参加者プログラムは、モニタサブコンポーネント3605、メッセージハンドラ3606、表示状態サブコンポーネント3607、および入札提出コンポーネント3608を含む。モニタサブコンポーネントは、ブロードキャストチャネルで送信されるメッセージを監視し、適切なメッセージハンドラルーチンを起動する。表示状態サブコンポーネントは、競売の現在の状態を表示する。入札提出コンポーネントは、参加者が競売で入札を提出したいときに起動される。
【0097】
図37は、現在定義されている競売の表示を示すブロック図である。ウィンドウ3700は、表示状態ルーチンによって表示される。このウィンドウは、競売ごとにサブウィンドウ3701を含む。各サブウィンドウは、競売を記述する情報を含むことができる。ユーザがサブウィンドウを選択すると、表示状態ルーチンは競売固有のウィンドウを表示する。図38は、購買固有のウィンドウの表示を表す図である。ウィンドウ3800は、商品の写真3801、商品の説明領域3802、競売の説明領域3803、および入札ボタン3804を含む。商品写真の領域は、競売にかけられている商品の写真を含むことができる。商品の説明の流域は、競売にかけられている商品の説明を含む。競売の説明の領域は、競売の現在の状態を表す情報を含む。例えば、実際の競売の状態は、競売の開始時刻、競売が進行中である旨の指示、競売が「終了間近」である旨の指示、および競売が終了した旨の指示などである。競売の説明領域は、最低落札価格、現在の入札額、および無効にすることが可能な提案入札額も含むことができる。参加者が入札ボタンを選択すると、競売参加者プログラムは入札額を提出する。
【0098】
図39−48は、競売参加者プログラムの処理を示す流れ図である。これらの流れ図における処理は、単一の競売を参照して説明している。当業者は、この処理を変更して複数の同時に行われる競売に対応することも可能であることを理解されよう。図39は、競売の現在の状態を要求するルーチンの流れ図である。このルーチンは、競売参加者プログラムが最初に実行を開始するときに起動することができる。競売参加者プログラムが開始する際には、競売リッスンサーバに接触して競売の現在の状態を取り出す。あるいは、ブロック3901に示すように、現在状態要求ルーチンは、ブロードキャストチャネルに現在状態要求メッセージをブロードキャストしてもよい。競売参加者プログラムは、それに対して競売の現在の状態の指示を受信する。競売参加者プログラムは、この状態情報をその競売データベースに格納する。図40は、現在状態要求メッセージを受信し処理するルーチンの流れ図である。各競売参加者プログラムは、競売モニタがこの要求に応答するように構成されている場合はこの要求を無視することができる。あるいは、現在競売で最も高い入札額をつけている競売参加者プログラムは、競売の現在の状態を含むメッセージをブロードキャストすることによって応答してもよい。判定ブロック4001で、この参加者が現在最高の入札額をつけている場合、ルーチンはブロック4002に進み、そうでない場合は戻る。ブロック4002でルーチンは競売の状態をブロードキャストし、戻る。図41は、現在状態メッセージを受信するルーチンの流れ図である。ブロック4101で、ルーチンは競売データベースの競売状態を更新し、戻る。
【0099】
図42は、一実施形態における入札提出ルーチンの処理を示す流れ図である。このルーチンは入札額を確認し、その入札をブロードキャストする。このルーチンは、それを上回る入札額をつける参加者がない場合には競売が終了することを他の参加者に通知するために、終了間近メッセージをいつブロードキャストすべきかを知らせるタイマも設定する。判定ブロック4201で入札が有効である場合、ルーチンはブロック4202に進み、そうでない場合は戻る。ルーチンは、現在の最高入札額よりも入札額が大きいことを保証することにより、入札が有効であるかどうかを判定する。ルーチンは、競売がまだ行われているかどうかも確認することができる。競売は、参加者が入札ボタンを選択した時点から終了している可能性がある。ブロック4202で、ルーチンは入札メッセージに含める乱数を生成する。この乱数は、同額の入札が2人の参加者によって受信された場合に、その受信参加者によって使用される。この場合、参加者は、一番大きい乱数を有する入札者にその入札を与える。ブロック4203で、ルーチンは、参加者の識別、入札額、および乱数を含む入札メッセージを生成する。複数の競売についてのメッセージがブロードキャストチャネルでブロードキャストされている状況では、入札メッセージは競売の識別子も含むことができる。ブロック4204で、ルーチンはブロードキャストチャネルに入札メッセージをブロードキャストする。ブロック4205で、ルーチンは終了間近メッセージを送信するためのタイマを開始する。そしてルーチンは戻る。
【0100】
図43は、一実施形態における入札メッセージ受信ルーチンの処理を示す流れ図である。このルーチンは、競売参加者プログラムがブロードキャストチャネルから入札メッセージを受信した際に起動される。このルーチンは、入札を確認し、競売の状態を更新し、タイマをクリアする。判定ブロック4301で現在競売が開かれている場合、ルーチンはブロック4302に進み、そうでない場合は戻る。判定ブロック4302で、受信した入札が現在の最高入札額よりも大きいか等しい場合、ルーチンはブロック4303に進み、そうでない場合は受信した入札額を上回る入札がすでに出ていることになり、ルーチンは戻る。判定ブロック4303で、受信した入札額が現在の最高入札額と等しい場合は2人の参加者が同額の入札を出していることになり、ルーチンはブロック4304に進み、そうでない場合はブロック4305に進む。判定ブロック4304で、受信した入札メッセージに含まれる乱数が、現在の最高入札額を含む入札メッセージに含まれていた乱数よりも大きい場合は、その入札メッセージを送信した参加者にその入札が与えられ、ルーチンはブロック4305に進み、そうでない場合は戻る。ブロック4305で、ルーチンは、競売データベースの現在の最高入札額を置き換え、表示を更新することができる。ブロック4306で、ルーチンは、競売の終了を知らせるために設定されている可能性のあるタイマがあればクリアする。そしてルーチンは戻る。
【0101】
図44は、終了間近タイマの満了を処理するルーチンを表す流れ図である。ブロック4401で、ルーチンは終了間近メッセージをブロードキャストする。終了間近メッセージは、参加者および現在の最高入札額を識別することができる。ブロック4402で、ルーチンは、競売がすでに終了したことを知らせる終了メッセージを送信するためのタイマを設定する。そしてルーチンは戻る。図45は、受信した終了間近メッセージを処理するルーチンを表す流れ図である。判定ブロック4501で、終了間近メッセージがすでにそれを上回る入札額が出た入札に対応するものである場合、ルーチンは戻り、そうでない場合はブロック4502に進む。ブロック4502でルーチンは競売の状態を更新し、これは表示の更新を含むことができる。そしてルーチンは戻る。
【0102】
図46は、終了タイマの満了を処理するルーチンを表す流れ図である。ブロック4601で、ルーチンは、入札額と併せてメッセージを送信する参加者を識別できる終了メッセージをブロードキャストする。ブロック4602で、ルーチンは、競売のステータスを更新して競売が終了したことを示す。図47は、受信した終了メッセージを処理するルーチンを表すブロック図である。ブロック4701で、ルーチンは競売の状態を更新して競売が終了したことを示す。一実施形態では、競売参加者プログラムは、終了メッセージをブロードキャストする前に抑制メッセージをブロードキャストすることもできる。参加者は抑制メッセージを受信すると、もはやその競売には入札を提出することができない。抑制メッセージをブロードキャストした参加者が一定期間にわたり他の参加者から入札メッセージを受信しない場合、その参加者は終了メッセージをブロードキャストする。ただし、抑制メッセージの受信後一定期間内に参加者が終了メッセージを受信しない場合は、競売がまだ行われているとみなすことができる。
【0103】
図48は、一実施形態における競売エージェントを表す流れ図である。競売エージェントは、参加者がある商品につけたい最大入札額を指定することを可能にするプログラムである。競売エージェントは自動的に競売を監視し、参加者に代わってその最大入札額まで入札する。競売エージェントは、それが自動化されたエージェントであることを他の参加者から隠すために各種の技術を使用することができる。例えば、競売エージェントは、自分を上回る入札額が出たときに新たな入札を遅らせることができる。この遅延期間は、無作為に選択された期間とするか、あるいは参加者から提供される規則で指定することができる。また、競売エージェントは、終了間近メッセージを受信するまで新しい入札を待つこともできる。ブロック4801で、ルーチンは競売データベースから現在の最高入札額を取り出す。判定ブロック4802で現在の最高入札額がこのエージェントに許可された最大入札額よりもすでに大きい場合、ルーチンはブロック4803に進み、そうでない場合はブロック4804に進む。ブロック4803で、ルーチンは競売でその参加者を上回る入札額が出たことを参加者に通知し、戻る。ブロック4804で、ルーチンは、現在の入札額に最小の入札の増分を足した入札額を提出する。提出された入札はブロードキャストチャネルでブロードキャストされる。ブロック4805で、ルーチンはその競売についてメッセージがブロードキャストされるのを待つ。この競売参加者プログラムは、終了間近メッセージおよび終了メッセージも適宜ブロードキャストする。判定ブロック4806で、現在の入札額よりも高い新しい入札が出たことをメッセージが示す場合は、ルーチンはブロック4807に進み、そうでない場合はこの競売参加者プログラムが終了メッセージをブロードキャストしているのでブロック4808に進む。ブロック4807で、ルーチンはオプションで遅延をとり、次いでブロック4802にループして新しい入札を提出する。ブロック4808で、ルーチンは競売で落札したことを参加者に通知し、戻る。
【0104】
上記の説明に基づくと、説明のために本発明の特定の実施形態を説明したが、本発明の精神および範囲から逸脱せずに各種の変更を加えられることが理解されよう。したがって、本発明は頭記の特許請求の範囲以外によっては制限されない。
【0105】
以下の段落でさらに本発明の諸態様について述べる。
【0106】
ブロードキャストネットワーク
1.複数の関係者を含むブロードキャストチャネルであって、各関係者は隣接関係者に接続され、関係者とその間の接続はm正則グラフを形成し、mは3以上であり、関係者の数はmよりも多いことを特徴とするブロードキャストチャネル。
【0107】
2.グラフがm連結であるパラグラフ1のブロードキャストチャネル。
【0108】
3.mが偶数であるパラグラフ1のブロードキャストチャネル。
【0109】
4.mが奇数であり、関係者の数が偶数であるパラグラフ1のブロードキャストチャネル。
【0110】
5.関係者がコンピュータプロセスであるパラグラフ1のブロードキャストチャネル。
【0111】
6.関係者がコンピュータであるパラグラフ1のブロードキャストチャネル。
【0112】
7.TCP/IPプロトコルを使用して接続を確立するパラグラフ1のブロードキャストチャネル。
【0113】
8.発信元の関係者がその各隣接関係者にメッセージを送信し、各関係者は隣接関係者からメッセージを受信するとそのメッセージを各自の他の隣接関係者に送信することにより、ブロードキャストチャネルでメッセージをブロードキャストするパラグラフ1のブロードキャストチャネル。
【0114】
9.複数の関係者を含むブロードキャストチャネルであって、各関係者は隣接関係者に接続され、関係者とその間の接続はm正則グラフを形成し、mは3以上であり、関係者は隣接関係者からデータを受信すると、そのデータを他の隣接関係者に送信することを特徴とするブロードキャストチャネル。
【0115】
10.関係者の数がmよりも大きいパラグラフ9のブロードキャストチャネル。
【0116】
11.グラフがm連結であるパラグラフ9のブロードキャストチャネル。
【0117】
12.mが偶数であるパラグラフ9のブロードキャストチャネル。
【0118】
13.mが奇数であり、関係者の数が偶数であるパラグラフ9のブロードキャストチャネル。
【0119】
14.関係者がコンピュータプロセスであるパラグラフ9のブロードキャストチャネル。
【0120】
15.関係者がコンピュータであるパラグラフ9のブロードキャストチャネル。
【0121】
16.TCP/IPプロトコルを使用して接続を確立するパラグラフ9のブロードキャストチャネル。
【0122】
ブロードキャストチャネルへの参加
1.関係者のネットワークに関係者を追加するコンピュータベースの方法であって、各関係者は3つ以上の他の関係者に接続され、
接続済みのネットワーク関係者のペアを識別し、
識別されたペアの関係者を互いから切断し、
識別された関係者のペアの各関係者を追加した関係者に接続する
ことを特徴とする方法。
【0123】
2.各関係者が4つの関係者に接続されるパラグラフ1の方法。
【0124】
3.対を識別することが、接続された関係者のペアを無作為に選択することを含むパラグラフ1の方法。
【0125】
4.無作為にペアを選択することが、無作為に選択した経路でネットワークを通じてメッセージを送信することを含むパラグラフ3の方法。
【0126】
5.関係者がメッセージを受信すると、無作為に選択した、その関係者が接続されている関係者にそのメッセージを送信するパラグラフ4の方法。
【0127】
6.無作為に選択される経路がネットワークの直径にほぼ比例するパラグラフ4の方法。
【0128】
7.追加する関係者が、関係者のペアの識別を開始するようにポータルコンピュータに要求するパラグラフ1の方法。
【0129】
8.関係者のペアの識別を開始することが、ポータルコンピュータが、接続された関係者にメッセージを送信してエッジ接続を要求することを含むパラグラフ7の方法。
【0130】
9.ポータルコンピュータはメッセージが一定の距離を移動することを指示し、その一定距離を移動した後にメッセージを受信する関係者が、識別される関係者のペアの関係者の1つであるパラグラフ8の方法。
【0131】
10.一定の距離がネットワークの直径のほぼ2倍であるパラグラフ9の方法。
【0132】
11.関係者がインターネットを介して接続されるパラグラフ1の方法。
【0133】
12.関係者がTCP/IP接続を介して接続されるパラグラフ1の方法。
【0134】
13.関係者がコンピュータプロセスであるパラグラフ1の方法。
【0135】
14.m正則かつm連結であるグラフにノードを追加してグラフをm正則に維持するコンピュータベースの方法であって、mは4以上であり、
グラフの接続されたp個のノードペアを識別し、pはmの半分であることと、
識別された各ペアのノードを互いから切断することと、
識別されたノードペアの各ノードを追加したノードに接続することと
を含む方法。
【0136】
15.p個のノードペアを識別することが、接続されたノードのペアを無作為に選択することを含むパラグラフ14の方法。
【0137】
16.ノードがコンピュータであり、接続が二地点間通信接続であるパラグラフ14の方法。
【0138】
17.mが偶数であるパラグラフ14の方法。
【0139】
18.ネットワークへの関係者の追加を開始する方法であって、
追加する関係者から接続メッセージを受信し、
メッセージを受信した関係者の隣接関係者に接続エッジ探索メッセージを送信し、そこでは、接続エッジ探索メッセージは、接続エッジ探索メッセージを受信する関係者が、追加する関係者への接続を決定するまで隣接関係者に転送される ことを特徴とする方法。
【0140】
19.送信される接続エッジ探索メッセージは、その接続エッジ探索メッセージを転送すべき関係者の数の指示を含むパラグラフ18の方法。
【0141】
20.関係者の数がネットワークの直径に基づくパラグラフ19の方法。
【0142】
21.関係者の数が直径のほぼ2倍であるパラグラフ19の方法。
【0143】
22.関係者が追加する関係者への接続を決定すると、接続を決定した関係者に接続エッジ探索メッセージを送信した隣接関係者も追加する関係者への接続を決定するパラグラフ18の方法。
【0144】
23.接続エッジ探索メッセージを受信する関係者は、無作為に選択した隣接関係者に接続エッジ探索メッセージを転送するパラグラフ18の方法。
【0145】
24.コンピュータシステムにおいて新しいネットワーク関係者に接続する方法であって、
関係者で接続エッジ探索メッセージを受信し、
接続エッジ探索メッセージを受信した関係者の隣接関係者を識別し、
その隣接関係者に新しい関係者に接続するように通知し、
識別された隣接関係者から関係者を切断し、
その関係者を新しい関係者に接続する
ことを特徴とする方法。
【0146】
25.その関係者が、接続エッジ探索メッセージが送信された関係者の経路で最後の関係者であるかどうかを判定することを含むパラグラフ24の方法。
【0147】
26.関係者が経路で最後の関係者でないときは、その関係者の隣接関係者に接続エッジ探索メッセージを送信するパラグラフ25の方法。
【0148】
27.接続エッジ探索メッセージを送信する隣接関係者を無作為に選択することを含むパラグラフ26の方法。
【0149】
28.受信される接続エッジ探索メッセージが、その接続エッジ探索メッセージをそれを通じて送信する関係者の数の指示を含むパラグラフ24の方法。
【0150】
29.関係者がすでに新しい関係者の隣接関係者であるときには、その関係者の隣接関係者に接続エッジ探索メッセージを送信することを含むパラグラフ24の方法。
【0151】
30.関係者がコンピュータプロセスであるパラグラフ24の方法。
【0152】
31.接続が二地点間接続であるパラグラフ24の方法。
【0153】
32.接続されているネットワーク関係者のペアを識別し、
識別されたペアの関係者を互いから切断し、
識別された関係者のペアの各関係者を追加する関係者に接続する
方法により、コンピュータシステムを制御して関係者のネットワークに関係者を接続する命令を含むコンピュータ可読媒体であって、各関係者は3つ以上の他の関係者に接続され、ネットワークはブロードキャストチャネルを表し、各関係者は受信したブロードキャストメッセージをその隣接関係者に転送することを特徴とするコンピュータ可読媒体。
【0154】
33.各関係者が4つの関係者に接続されるパラグラフ32のコンピュータ可読媒体。
【0155】
34.ペアを識別することが、接続された関係者のペアを無作為に選択することを含むパラグラフ32のコンピュータ可読媒体。
【0156】
35.無作為にペアを選択することが、無作為に選択した経路でネットワークを通じてメッセージを送信することを含むパラグラフ34のコンピュータ可読媒体。
【0157】
36.関係者がメッセージを受信すると、無作為に選択された、その関係者が接続されている関係者にそのメッセージを送信するパラグラフ35のコンピュータ可読媒体。
【0158】
37.無作為に選択される経路がネットワークの直径のほぼ2倍であるパラグラフ35のコンピュータ可読媒体。
【0159】
38.追加する関係者が、関係者のペアの識別を開始するようにポータルコンピュータに要求するパラグラフ32のコンピュータ可読媒体。
【0160】
39.関係者のペアの識別を開始することが、ポータルコンピュータが、接続された関係者にメッセージを送信してエッジ接続を要求することを含むパラグラフ38のコンピュータ可読媒体。
【0161】
40.ポータルコンピュータが、メッセージが一定距離を移動することを指示し、その一定距離を移動した後にメッセージを受信する関係者が、識別される関係者ペアの1つであるパラグラフ38のコンピュータ可読媒体。
【0162】
41.コンピュータシステムにおいてネットワークの関係者に接続する方法であって、
関係者において要求元関係者によって送信された接続ポート探索メッセージを受信し、
その関係者にそれを通じて要求元関係者に接続することができる利用可能なポートがあるときには、
要求元関係者にポート接続メッセージを送信して、要求元関係者が関係者の利用可能なポートに接続することを提案し、
要求元関係者が利用可能なポートへの接続を受け入れることを示すポート提示応答メッセージを関係者が受信すると、その関係者を要求元関係者に接続する ことを特徴とする方法。
【0163】
42.関係者にそれを通じて要求元関係者に接続することができる利用可能なポートがないときには、隣接関係者に接続ポート探索メッセージを送信することを含むパラグラフ41の方法。
【0164】
43.要求元関係者がまだその関係者に接続されておらず、その関係者に空きポートがあるときにポートが利用可能な状態となるパラグラフ41の方法。
【0165】
44.コンピュータシステムにおいてネットワーク内の隣接関係者同士に空きポートがある状態を検出する方法であって、
第1の関係者で、第2の関係者に空きポートがあることを示す接続ポート探索メッセージを受信し、
第1の関係者がすでに第2の関係者に接続され、第1の関係者に空きポートがあるときに、第1の関係者から第2の関係者に状態確認メッセージを送信し、状態確認メッセージは第1の関係者の隣接関係者を識別する
ことを特徴とする方法。
【0166】
45.第2の関係者が状態確認メッセージを受信すると、
第2の関係者が第1の関係者と同じ隣接関係者を有さない場合は、第1の関係者の隣接関係者であるが第2の関係者の隣接関係者ではない第3の関係者に状態修復メッセージを送信することを含むパラグラフ44の方法。
【0167】
46.第3の関係者が状態修復メッセージを受信すると、
第1の関係者を除く第3の関係者の隣接関係者から切断することと、
第2の関係者に接続することと
を含むパラグラフ45の方法。
【0168】
47.第2の関係者が状態確認メッセージを受信すると、
第2の関係者が第1の関係者と同じ隣接関係者を有する場合は、第2の関係者の隣接関係者である第3の関係者に状態二重確認メッセージを送信することを含むパラグラフ44の方法。
【0169】
48.第3の関係者が状態二重確認メッセージを受信すると、
第3の関係者が第1の関係者と同じ隣接関係者を有さない場合は、第1の関係者または第2の関係者でない第4の関係者に状態確認メッセージを送信することを含むパラグラフ47の方法。
【0170】
49.第4の関係者が状態確認メッセージを受信すると、
第5の関係者に状態修復メッセージを送信して、第5の関係者が第1の関係者または第2の関係者に接続することを指示することを含むパラグラフ48の方法。
【0171】
ブロードキャストチャネルからの退出
1.コンピュータシステムにおいてブロードキャストチャネルの直径を判定する方法であって、ブロードキャストチャネルはコンピュータを備え、各コンピュータは少なくとも3つの隣接コンピュータに接続され、
隣接コンピュータからメッセージを受信し、
受信したメッセージから移動距離を識別し、
識別した移動距離量に基づいて推定直径を設定し、
メッセージ中の移動距離を増分し、
移動距離を増分したメッセージを隣接コンピュータに送信する
ことを特徴とする方法。
【0172】
2.推定直径の設定は、識別された移動距離が現在の推定直径よりも大きいときには必ず推定直径をその移動距離に設定するパラグラフ1の方法。
【0173】
3.ブロードキャストチャネルのコンピュータがm正則かつm連結のグラフを形成するパラグラフ1の方法。
【0174】
4.mが4であるパラグラフ3の方法。
【0175】
5.各コンピュータが二地点間接続を介してその隣接コンピュータに接続されるパラグラフ1の方法。
【0176】
6.推定直径を設定すると、新しい推定直径を知らせるメッセージをブロードキャストすることを含むパラグラフ1の方法。
【0177】
7.新しい推定直径を知らせるメッセージを受信することと、
推定直径が現在推定される直径よりも大きい場合は、推定直径を新しい推定直径に設定することと
を含むパラグラフ1の方法。
【0178】
8.推定直径を新しい推定直径に再設定するように通知するメッセージを受信することと、
推定直径を新しい推定直径に設定することと
を含むパラグラフ1の方法。
【0179】
9.第2のコンピュータから第1のコンピュータを切断する方法であって、第1のコンピュータと第2のコンピュータはブロードキャストチャネルに接続され、
第1のコンピュータが第2のコンピュータからの切断を決定すると、第1のコンピュータは第2のコンピュータに切断メッセージを送信し、
第2のコンピュータが第1のコンピュータから切断メッセージを受信すると、第2のコンピュータは接続ポート探索メッセージをブロードキャストして、それが接続できる第3のコンピュータを見つける
ことを特徴とする方法。
【0180】
10.第2のコンピュータは、第3のコンピュータと第2のコンピュータとの接続を第3のコンピュータが提案していることを示すポート接続メッセージを受信するパラグラフ9の方法。
【0181】
11.第1のコンピュータは、切断メッセージの送信後に第2のコンピュータから切断するパラグラフ9の方法。
【0182】
12.インターネットを使用してブロードキャストチャネルを実装するパラグラフ9の方法。
【0183】
13.ブロードキャストチャネルに接続された各コンピュータは、少なくとも3つの他のコンピュータに接続されるパラグラフ9の方法。
【0184】
14.コンピュータとそれらの接続がm正則グラフを形成するパラグラフ13の方法。
【0185】
15.第1のコンピュータと第2のコンピュータがTCP/IP接続を介して接続されるパラグラフ9の方法。
【0186】
16.第2のコンピュータから第1のコンピュータを切断する方法であって、これらコンピュータはブロードキャストチャネルに接続され、
第1のコンピュータを第2のコンピュータに接続し、
第1のコンピュータから第2のコンピュータにメッセージの送信を試み、
メッセージ送信の試みが成功しない場合は、第1のコンピュータが接続を必要とすることを知らせる接続ポート探索メッセージを第1のコンピュータからブロードキャストする
ことを特徴とする方法。
【0187】
17.第3のコンピュータが接続ポート探索メッセージを受信し、第3のコンピュータも接続を必要とするときに、第3のコンピュータから第1のコンピュータにメッセージを送信して第1のコンピュータと第3のコンピュータとの接続を提案することを含むパラグラフ16の方法。
【0188】
18.第1のコンピュータと第3のコンピュータの接続を提案するメッセージを第1のコンピュータが受信すると、第1のコンピュータから第3のコンピュータに、第1のコンピュータを第3のコンピュータに接続する提案を受け入れることを知らせるメッセージを送信することを含むパラグラフ17の方法。
【0189】
19.ブロードキャストチャネルに接続された各コンピュータは少なくとも3つの他のコンピュータに接続されるパラグラフ16の方法。
【0190】
20.コンピュータとブロードキャストチャネルの接続がm正則グラフを形成するパラグラフ19の方法。
【0191】
21.コンピュータとブロードキャストチャネルの接続がm連結グラフを形成するパラグラフ19の方法。
【0192】
22.ブロードキャストすることが、第1のコンピュータが接続された各コンピュータにメッセージを送信することを含むパラグラフ16の方法。
【0193】
23.コンピュータを別のコンピュータから切断することを制御する命令を含むコンピュータ可読媒体であって、コンピュータともう一方のコンピュータはブロードキャストチャネルに接続され、
コンピュータがもう一方のコンピュータからの切断を決定すると、コンピュータがもう一方のコンピュータに切断メッセージを送信するためのコンポーネントと、
コンピュータが別のコンピュータから切断メッセージを受信すると、コンピュータが接続ポート探索メッセージをブロードキャストしてそのコンピュータが接続できるコンピュータを見つけるためのコンポーネントと
を含むことを特徴とするコンピュータ可読媒体。
【0194】
24.コンピュータが接続ポート探索メッセージを受信し、そのコンピュータが別のコンピュータへの接続を必要とする場合、接続ポート探索メッセージの送信元であるコンピュータに、接続ポート探索メッセージの送信元であるコンピュータがそのコンピュータに接続することをそのコンピュータが提案していることを知らせるポート接続メッセージを送信するためのコンポーネントを含むパラグラフ23のコンピュータ可読媒体。
【0195】
25.コンピュータがポート接続メッセージを受信すると、ポート接続メッセージの送信元であるコンピュータに接続するためのコンポーネントを含むパラグラフ24のコンピュータ可読媒体。
【0196】
26.ブロードキャストチャネルに接続された各コンピュータは少なくとも3つの他のコンピュータに接続されるパラグラフ23のコンピュータ可読媒体。
【0197】
27.コンピュータとそれらの接続がm正則グラフを形成するパラグラフ23のコンピュータ可読媒体。
【0198】
28.TCP/IP接続を介してコンピュータが接続されるパラグラフ23のコンピュータ可読媒体。
【0199】
29.ブロードキャストチャネルに接続されたコンピュータがピアであるパラグラフ23のコンピュータ可読媒体。
【0200】
30.インターネットを使用してブロードキャストチャネルを実装するパラグラフ23のコンピュータ可読媒体。
【0201】
ブロードキャストチャネルによるブロードキャスト
1.コンピュータネットワークを通じてデータをブロードキャストする方法であって、
コンピュータで隣接コンピュータからデータを受信し、
受信したデータがすでに受信側コンピュータからその隣接コンピュータに送信されているかどうかを判定し、
すでにデータが送信されていると判定されると、受信データを無視し、
データがまだ送信されていないと判定されると、受信側コンピュータの隣接コンピュータに受信データを送信する
ことを特徴とする方法。
【0202】
2.コンピュータネットワークが4正則グラフであるパラグラフ1の方法。
【0203】
3.コンピュータネットワークがブロードキャストチャネルを実装し、二地点間接続を使用してコンピュータネットワークの隣接コンピュータ間を接続するパラグラフ1の方法。
【0204】
4.接続がTCP/IP接続であるパラグラフ3の方法。
【0205】
5.コンピュータネットワークが、二地点間接続を使用してコンピュータを接続する基本ネットワークを使用して実装されるブロードキャストチャネルであるパラグラフ1の方法。
【0206】
6.基本ネットワークがインターネットであるパラグラフ5の方法。
【0207】
7.コンピュータネットワークに接続されたコンピュータ中のブロードキャスタコンポーネントであって、
そのコンピュータを発信元とするデータを各隣接コンピュータに送信する発信モジュールと、
別のコンピュータを発信元とするデータの複数のコピーを受信し、各データコピーは異なる隣接コンピュータから受信される受信モジュールと、
受信データのコピーを、そのコピーの送信元である隣接コンピュータ以外の各隣接コンピュータに送信する転送モジュールと
を含むことを特徴とするブロードキャスタコンポーネント。
【0208】
8.受信データのコピーをアプリケーションプログラムに提供する送信モジュールを含むパラグラフ7のブロードキャスタコンポーネント。
【0209】
9.コンピュータネットワークが、基本となる二地点間コンピュータネットワークを使用して実装されたブロードキャストチャネルであるパラグラフ7のブロードキャスタコンポーネント。
【0210】
10.コンピュータネットワークに接続されたポータルコンピュータを見つける発見モジュールを含むパラグラフ7のブロードキャスタコンポーネント。
【0211】
11.コンピュータネットワークにコンピュータを接続する接続モジュールを含むパラグラフ7のブロードキャスタコンポーネント。
【0212】
12.要求元コンピュータをコンピュータネットワークに加えることを開始するポータルモジュールを含むパラグラフ7のブロードキャスタコンポーネント。
【0213】
13.二地点間接続を使用してコンピュータをその隣接コンピュータに接続するパラグラフ7のブロードキャスタコンポーネント。
【0214】
14.コンピュータネットワークでデータをブロードキャストする方法であって、
コンピュータネットワークの各コンピュータと、コンピュータネットワークの少なくとも3つの他のコンピュータとの間に接続を確立し、
コンピュータがデータを発信すると、そのコンピュータが接続された各コンピュータにそのデータを送信し、
コンピュータがデータを受信すると、そのデータの送信元であるコンピュータを除く、そのコンピュータが接続された各コンピュータに受信データの第1のコピーを送信する
ことを特徴とする方法。
【0215】
15.コンピュータとコンピュータネットワークの接続がm正則グラフを形成するパラグラフ14の方法。
【0216】
16.各コンピュータが偶数個のコンピュータに接続されるパラグラフ15の方法。
【0217】
17.コンピュータとコンピュータネットワークの接続がm正則かつm連結のグラフを形成するパラグラフ14の方法。
【0218】
18.mが偶数であるパラグラフ17の方法。
【0219】
19.mが4であるパラグラフ17の方法。
【0220】
20.二地点間接続を使用してコンピュータを接続するパラグラフ14の方法。
【0221】
21.インターネットを使用してコンピュータを接続するパラグラフ14の方法。
【0222】
22.二地点間接続を使用して、ブロードキャストチャネルの各コンピュータとブロードキャストチャネルの3つの他のコンピュータとの間に接続を確立し、
コンピュータがデータを発信すると、そのコンピュータが接続されている各コンピュータにそのデータを送信し、
コンピュータがデータを受信すると、そのデータの送信元であるコンピュータを除くそのコンピュータが接続されている各コンピュータにそのデータのコピーを送信する
方法により、コンピュータシステムを制御してブロードキャストチャネルでデータをブロードキャストする命令を含むコンピュータ可読媒体。
【0223】
23.コンピュータとコンピュータネットワークの接続がm正則グラフを形成することを特徴とするパラグラフ22のコンピュータ可読媒体。
【0224】
24.各コンピュータが偶数個のコンピュータに接続されるパラグラフ23のコンピュータ可読媒体。
【0225】
25.コンピュータとブロードキャストチャネルの接続がm正則かつm連結のグラフを形成するパラグラフ22のコンピュータ可読媒体。
【0226】
26.mが偶数であるパラグラフ25のコンピュータ可読媒体。
【0227】
27.mが4であるパラグラフ25のコンピュータ可読媒体。
【0228】
28.インターネットを使用してコンピュータを接続するパラグラフ22のコンピュータ可読媒体。
【0229】
ブロードキャストチャネルへの接触
1.コンピュータにおいてそれを通じてネットワークに接続するためのコンピュータを見つける方法であって、
ポータルコンピュータの識別を提供し、そこでは、ポータルコンピュータは通信ポートを備え、その通信ポートの1つは、ポータルコンピュータが、接続を求めるコンピュータとネットワークとの接続を調整する状態にあるときに通信が可能となり、
ポータルコンピュータの通信ポートを繰り返し選択し、選択した通信ポートとの通信が成功するまで選択された通信ポートとの通信を試み、
選択された通信ポートを使用して、そのコンピュータとネットワークとの接続を調整するようにポータルコンピュータに要求する
ことを特徴とする方法。
【0230】
2.通信ポートは、ポータルコンピュータが通信ポートを選択した際に使用した順序と同じ順序で選択されるパラグラフ1の方法。
【0231】
3.ハッシュアルゴリズムによる順序付けに基づいて通信ポートが選択されるパラグラフ1の方法。
【0232】
4.ハッシュアルゴリズムによる順序付けは、通信ポートを2度選択することなく各通信ポートが選択される順序付けを提供するパラグラフ3の方法。
【0233】
5.ハッシュアルゴリズムによる順序付けを修正して、同じハッシュアルゴリズムを使用する接続を求める他のコンピュータとの衝突を減少させるパラグラフ3の方法。
【0234】
6.ハッシュアルゴリズムによって順序付けられた複数の第1の通信ポートを再度順序付けするパラグラフ5の方法。
【0235】
7.複数のポータルコンピュータの識別が提供され、通信ポートが選択されると、次の通信ポートを選択する前に、選択された通信ポートを通じて識別された各ポータルコンピュータとの通信を試みるパラグラフ1の方法。
【0236】
8.通信ポートがTCP/IPポートであるパラグラフ1の方法。
【0237】
9.コンピュータシステムにおいて通信ポートを見つける方法であって、各通信ポートはポート番号を有し、
連続したポート番号でない通信ポートの順序付けを提供することと、
それを通じて接続を確立できる通信ポートが見つかるまで、
提供された順序で次の通信ポートを選択することと、
選択された通信ポートを通じて接続を確立できるかどうかを判定することとを含む方法。
【0238】
10.順序付けがハッシュアルゴリズムによって提供されるパラグラフ9の方法。
【0239】
11.通信ポートがTCP/IPポートであるパラグラフ9の方法。
【0240】
12.通信ポートが別のコンピュータのポートであるパラグラフ9の方法。
【0241】
13.もう一方のコンピュータが、その通信ポートを選択する際に提供された同じ通信ポートの順序付けを使用するパラグラフ12の方法。
【0242】
14.提供された通信ポートの順序付けの一部を再度順序付けすることを含むパラグラフ9の方法。
【0243】
15.メッセージのシーケンスを含む、通信チャネルで送信されるデータ構造であって、シーケンス中の各メッセージはコンピュータシステムの通信ポートを識別し、ハッシュアルゴリズムを使用してメッセージシーケンス中の通信ポートの識別を順序付けることを特徴とするデータ構造。
【0244】
16.各メッセージが、識別された通信ポートを介した受信側コンピュータへの接続を要求するパラグラフ15のデータ構造。
【0245】
17.メッセージがTCP/IPメッセージであるパラグラフ15のデータ構造。
【0246】
18.通信チャネルがインターネットであるパラグラフ15のデータ構造。
【0247】
19.メッセージシーケンスを使用して、送信側コンピュータがそれを通じてブロードキャストチャネルへの接続を要求できるポータルコンピュータを見つけるパラグラフ15のデータ構造。
【0248】
20.複数の関係者を有するコンピュータネットワークであって、各関係者は隣接関係者への接続を有し、関係者は、ポータルコンピュータの通信ポートを繰り返し選択し、選択した通信ポートとの通信が成功するまで選択された通信ポートとの通信を試みることにより、ポータルコンピュータの通信ポートを見つけることを特徴とするコンピュータネットワーク。
【0249】
21.通信ポートの選択が関数に従って順序付けされるパラグラフ20のコンピュータネットワーク。
【0250】
22.ポータルコンピュータは同じ関数を使用してその通信ポートの選択を順序付けるパラグラフ21のコンピュータネットワーク。
【0251】
23.発信元の関係者は、その各接続を通じてその隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は隣接関係者から受信するデータを他の隣接関係者に送信するパラグラフ20のコンピュータネットワーク。
【0252】
24.各関係者が4つの他の関係者に接続されるパラグラフ20のコンピュータネットワーク。
【0253】
25.各関係者が偶数個の他の関係者に接続されるパラグラフ20のコンピュータネットワーク。
【0254】
26.ネットワークがm正則であり、mは各関係者の隣接関係者の数であるパラグラフ20のコンピュータネットワーク。
【0255】
27.ネットワークがm連結であり、mは各関係者の隣接関係者の数であるパラグラフ26のコンピュータネットワーク。
【0256】
28.ネットワークがm正則かつm連結であり、mは各関係者の隣接関係者の数であるパラグラフ20のコンピュータネットワーク。
【0257】
29.すべての関係者がピアであるパラグラフ20のコンピュータネットワーク。
【0258】
30.接続がピアツーピア接続であるパラグラフ20のコンピュータネットワーク。
【0259】
31.隣接コンピュータ間の接続が二地点間であるパラグラフ20のコンピュータネットワーク。
【0260】
32.接続がTCP/IP接続であるパラグラフ20のコンピュータネットワーク。
【0261】
33.ポータルコンピュータの通信ポートを見つけるコンピュータシステム中のコンポーネントであって、
他のコンピュータと通信するための動的に選択される通信ポートを有するポータルコンピュータを識別する手段と、
接続の確立に成功するまで、通信ポートを通じて識別されたポータルコンピュータとの接続を確立することを繰り返し試みることにより、識別されたポータルコンピュータの通信ポートを識別する手段と
を含むことを特徴とするコンポーネント。
【0262】
34.通信ポートは、ポータルコンピュータが動的に通信ポートを選択する際に使用する順序と同じ順序で試みられるパラグラフ33のコンポーネント。
【0263】
35.通信ポートが、ハッシュアルゴリズムによる順序付けに基づいて試みられるパラグラフ33のコンポーネント。
【0264】
36.ハッシュアルゴリズムによる順序付けが、2度通信ポートを試みることなく各通信ポートを試みる順序付けを提供するパラグラフ35のコンポーネント。
【0265】
37.ハッシュアルゴリズムによる順序付けを修正して、同じハッシュアルゴリズムを使用する他のコンピュータとの衝突を減少させるパラグラフ35のコンポーネント。
【0266】
38.ハッシュアルゴリズムによって順序付けられる複数の第1の通信ポートを再度順序付けするパラグラフ37のコンポーネント。
【0267】
39.複数のポータルコンピュータを識別する手段と、
次の通信ポートを試す前に、ある通信ポートを通じて識別された各ポータルコンピュータとの接続を確立することを試みる手段と
を含むパラグラフ33のコンポーネント。
【0268】
40.通信ポートがTCP/IPポートであるパラグラフ33のコンポーネント。
【0269】
分散競売システム
1.それを通じて商品の競売を定義することができ、定義された競売についての情報を取り出すことができる競売リッスンサーバと、
各参加者のコンピュータで実行され、ブロードキャストチャネルでブロードキャストされる入札メッセージを受信し、参加者が入札すると入札メッセージをブロードキャストし、参加者が最も高い入札を提出するといつ競売を終了するかを決定する競売参加者プログラムと
を含むことを特徴とする競売システム。
【0270】
2.参加者コンピュータが少なくとも3つの他の参加者コンピュータに接続されるパラグラフ1の競売システム。
【0271】
3.ブロードキャストチャネルで送信されるメッセージに基づいて競売の状態を監視する競売監視コンピュータを含むパラグラフ1の競売システム。
【0272】
4.ブロードキャストチャネル上で複数の競売を同時に行うパラグラフ1の競売システム。
【0273】
5.各競売を個別のブロードキャストチャネルで行うパラグラフ1の競売システム。
【0274】
6.ブロードキャストされる各入札メッセージが、2人以上の参加者が同額を入札した場合に入札を与える際に使用される無作為に生成された数を含むパラグラフ1の競売システム。
【0275】
7.競売参加者プログラムが、競売を間もなく終了することを決定すると終了間近メッセージをブロードキャストするパラグラフ1の競売システム。
【0276】
8.現在の最高入札額を提出した競売参加者プログラムによって終了間近メッセージが送信されるパラグラフ7の競売システム。
【0277】
9.複数のコンピュータシステムを含む競売システムであって、各コンピュータシステムは他の各コンピュータシステムにメッセージを送信可能であり、各コンピュータシステムは、他のコンピュータシステムから入札メッセージを受信し、他のコンピュータシステムに入札メッセージを送信し、入札メッセージに基づいて現在の最高入札額を設定し、コンピュータシステムが現在の最高入札額を提出しているときにいつ競売を終了するかを決定するコンポーネントを含むことを特徴とする競売システム。
【0278】
10.コンピュータシステムがブロードキャストチャネルを介して接続されるパラグラフ9の競売システム。
【0279】
11.コンピュータシステムが相互接続されてm正則グラフを形成し、mは4以上であるパラグラフ9の競売システム。
【0280】
12.コンピュータシステムが、他のコンピュータシステムに終了間近メッセージを送信した後に競売の終了を決定するパラグラフ9の競売システム。
【0281】
13.終了の決定が、終了間近メッセージの送信後一定期間内に行われるパラグラフ12の競売システム。
【0282】
14.コンピュータシステムが競売を終了することを決定すると終了メッセージを送信することを含むパラグラフ12の競売システム。
【0283】
15.各コンピュータシステムが、入札メッセージに含まれる乱数に基づいて同額の入札を解決するパラグラフ9の競売システム。
【0284】
16.コンピュータシステムにおいて競売で同額の入札を解決する方法であって、
第1の入札と第1のタイブレーカーを受信し、
第1の入札が競売において現在の最高入札額であることを知らせ、
第2の入札と第2のタイブレーカーを受信し、
第1の入札と第2の入札が同額である場合は、
第1のタイブレーカーと第2のタイブレーカーを比較し、
比較に基づいて第2の入札が競売において現在の最高入札額であることを知らせる
ことを特徴とする方法。
【0285】
17.第1のタイブレーカーと第2のタイブレーカーが無作為に生成された数であるパラグラフ16の方法。
【0286】
18.コンピュータシステムがブロードキャストチャネルに接続されるパラグラフ16の方法。
【0287】
19.競売が中央競売サーバを備えないパラグラフ16の方法。
【0288】
20.競売の各参加者がピアコンピュータシステムであるパラグラフ16の方法。
【0289】
21.第2のタイブレーカーが第1のタイブレーカーよりも大きいときに第2の入札が現在の最高入札額であると示されるパラグラフ16の方法。
【0290】
22.競売に参加するコンピュータシステムがm正則グラフで相互接続され、mは4以上であるパラグラフ16の方法。
【0291】
情報配信サービス
1.複数の関係者に情報配信サービスを提供するコンピュータネットワークであって、各関係者は少なくとも3つの隣接関係者への接続を有し、発信元の関係者は、その各接続を通じて隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は、隣接関係者から受信するデータを他の隣接関係者に送信することを特徴とするコンピュータネットワーク。
【0292】
2.各関係者が4つの他の関係者に接続されるパラグラフ1のコンピュータネットワーク。
【0293】
3.各関係者が偶数個の他の関係者に接続されるパラグラフ1のコンピュータネットワーク。
【0294】
4.ネットワークがm正則であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0295】
5.ネットワークがm連結であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0296】
6.ネットワークがm正則かつm連結であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0297】
7.すべての関係者がピアであるパラグラフ1のコンピュータネットワーク。
【0298】
8.接続がピアツーピア接続であるパラグラフ1のコンピュータネットワーク。
【0299】
9.接続がTCP/IP接続であるパラグラフ1のコンピュータネットワーク。
【0300】
10.各関係者がコンピュータで実行されるプロセスであるパラグラフ1のコンピュータネットワーク。
【0301】
11.コンピュータが複数の関係者をホストするパラグラフ1のコンピュータネットワーク。
【0302】
12.各関係者が、その各隣接関係者に1つのみのデータコピーを送信するパラグラフ1のコンピュータネットワーク。
【0303】
13.関係者の相互接続が対象トピックのためのブロードキャストチャネルを形成するパラグラフ1のコンピュータネットワーク。
【0304】
14.それぞれがあるトピックに関連する情報を配信する複数のブロードキャストチャネルと、
対象トピックのためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする情報配信サービス。
【0305】
15.対象トピックを識別する手段が、トピックとそれに対応するブロードキャストチャネルを対応付けるウェブサーバにアクセスすることを含むパラグラフ14の情報配信サービス。
【0306】
16.それぞれが少なくとも3つの他の利用者コンピュータに相互接続された利用者コンピュータによってブロードキャストチャネルが形成されるパラグラフ14の情報配信サービス。
【0307】
分散会議システム
1.複数の関係者のための会議システムを提供するコンピュータネットワークであって、各関係者は少なくとも3つの他の隣接関係者への接続を有し、発信元の関係者は、その各接続を通じて各隣接関係者にデータを送信することにより他の関係者にデータを送信し、各関係者は隣接関係者から受信するデータを他の隣接関係者に送信することを特徴とするコンピュータネットワーク。
【0308】
2.各関係者が4つの他の関係者に接続されるパラグラフ1のコンピュータネットワーク。
【0309】
3.各関係者が偶数個の他の関係者に接続されるパラグラフ1のコンピュータネットワーク。
【0310】
4.ネットワークがm正則であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0311】
5.ネットワークがm連結であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0312】
6.ネットワークがm正則かつm連結であり、mは各関係者の隣接関係者の数であるパラグラフ1のコンピュータネットワーク。
【0313】
7.すべての関係者がピアであるパラグラフ1のコンピュータネットワーク。
【0314】
8.接続がピアツーピア接続であるパラグラフ1のコンピュータネットワーク。
【0315】
9.接続がTCP/IP接続であるパラグラフ1のコンピュータネットワーク。
【0316】
10.各関係者がコンピュータで実行されるプロセスであるパラグラフ1のコンピュータネットワーク。
【0317】
11.コンピュータが複数の関係者をホストするパラグラフ1のコンピュータネットワーク。
【0318】
12.各関係者が、その各隣接関係者に1つのみのデータコピーを送信するパラグラフ1のコンピュータネットワーク。
【0319】
13.関係者の相互接続が対象トピックのためのブロードキャストチャネルを形成するパラグラフ1のコンピュータネットワーク。
【0320】
14.それぞれで会議を行うための複数のブロードキャストチャネルと、
対象の会議のためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする分散会議システム。
【0321】
15.対象の会議を識別する手段が、会議とそれに対応するブロードキャストを対応付けるウェブサーバにアクセスすることを含むパラグラフ14の分散会議システム。
【0322】
16.それぞれが少なくとも3つの他のコンピュータに相互接続された出席者コンピュータと発言者コンピュータによってブロードキャストチャネルが形成されるパラグラフ14の分散会議システム。
【0323】
分散ゲーム環境
1.複数の参加者のためのゲーム環境を提供するコンピュータネットワークであって、各参加者は少なくとも3つの他の隣接参加者への接続を有し、発信元の参加者は、その各接続を通じて隣接参加者にデータを送信することにより他の参加者にデータを送信し、各参加者は隣接参加者から受信するデータを他の隣接参加者に送信することを特徴とするコンピュータネットワーク。
【0324】
2.各参加者は4つの他の参加者に接続されるパラグラフ1のコンピュータネットワーク。
【0325】
3.各参加者は偶数個の他の参加者に接続されるパラグラフ1のコンピュータネットワーク。
【0326】
4.ネットワークがm正則であり、mは各参加者の隣接参加者の数であるパラグラフ1のコンピュータネットワーク。
【0327】
5.ネットワークがm連結であり、mは各参加者の隣接参加者の数であるパラグラフ1のコンピュータネットワーク。
【0328】
6.ネットワークがm正則かつm連結であり、mは各参加者の隣接参加者の数であるパラグラフ1のコンピュータネットワーク。
【0329】
7.すべての参加者がピアであるパラグラフ1のコンピュータネットワーク。
【0330】
8.接続がピアツーピア接続であるパラグラフ1のコンピュータネットワーク。
【0331】
9.接続がTCP/IP接続であるパラグラフ1のコンピュータネットワーク。
【0332】
10.各参加者がコンピュータで実行されるプロセスであるパラグラフ1のコンピュータネットワーク。
【0333】
11.コンピュータが複数の参加者をホストするパラグラフ1のコンピュータネットワーク。
【0334】
12.各参加者が、その各隣接参加者に1つのみのデータコピーを送信するパラグラフ1のコンピュータネットワーク。
【0335】
13.参加者の相互接続が対象ゲームのためのブロードキャストチャネルを形成するパラグラフ1のコンピュータネットワーク。
【0336】
14.それぞれでゲームを行うための複数のブロードキャストチャネルと、
対象ゲームのためのブロードキャストチャネルを識別する手段と、
識別されたブロードキャストチャネルに接続する手段と
を含むことを特徴とする分散ゲームシステム。
【0337】
15.対象のゲームを識別する手段が、ゲームとそれに対応するブロードキャストを対応付けるウェブサーバにアクセスすることを含むパラグラフ14の分散ゲームシステム。
【0338】
16.それぞれが少なくとも3つの他のコンピュータに相互接続されたプレーヤコンピュータによってブロードキャストチャネルが形成されるパラグラフ14の分散ゲームシステム。
【図面の簡単な説明】
【図1】 ブロードキャストチャネルを表す4正則、4連結のグラフの図である。
【図2】 ブロードキャストチャネルに接続された20台のコンピュータを表すグラフの図である。
【図3A】 新しいコンピュータZをブロードキャストチャネルに接続するプロセスの図である。
【図3B】 新しいコンピュータZをブロードキャストチャネルに接続するプロセスの図である。
【図4A】 図1のブロードキャストチャネルにコンピュータを追加した図である。
【図4B】 図4Aのブロードキャストチャネルにコンピュータを追加した図である。
【図4C】 図4Aのブロードキャストチャネルにコンピュータを追加した図である。
【図5A】 計画された形によるブロードキャストチャネルとのコンピュータの接続の切断を表す図である。
【図5B】 計画しない形によるブロードキャストチャネルとのコンピュータの接続の切断を表す図である。
【図5C】 隣接コンピュータ同士に空きポートがある状態の図である。
【図5D】 空きポートを有する隣接コンピュータ同士でない2つのコンピュータを示す図である。
【図5E】 小規模体制における隣接コンピュータ同士に空きポートがある状態を示す図である。
【図5F】 大規模体制における図5Eの状況を示す図である。
【図6】 ブロードキャストチャネルに接続されたコンピュータの構成要素を示すブロック図である。
【図7】 一実施形態におけるブロードキャスタコンポーネントのサブコンポーネントを示すブロック図である。
【図8】 一実施形態における接続ルーチンの処理を示す流れ図である。
【図9】 一実施形態におけるポータルコンピュータ探索ルーチンの処理を示す流れ図である。
【図10】 一実施形態における接触プロセスルーチンの処理を示す流れ図である。
【図11】 一実施形態における接続要求ルーチンの処理を示す流れ図である。
【図12】 一実施形態における外部呼出し確認ルーチンの処理を示す流れ図である。
【図13】 一実施形態における接続成立ルーチンの処理を示す流れ図である。
【図14】 一実施形態における外部ディスパッチャルーチンの処理を示す流れ図である。
【図15】 一実施形態における接続探索呼出し処理ルーチンの処理を示す流れ図である。
【図16】 一実施形態における接続要求呼出し処理ルーチンの処理を示す流れ図である。
【図17】 一実施形態における隣接コンピュータ追加ルーチンの処理を示す流れ図である。
【図18】 一実施形態における接続エッジ探索転送ルーチンの処理を示す流れ図である。
【図19】 エッジ提示呼出し処理ルーチンの処理を示す流れ図である。
【図20】 一実施形態におけるポート接続呼出し処理ルーチンの処理を示す流れ図である。
【図21】 一実施形態におけるホールフィルルーチンの処理を示す流れ図である。
【図22】 一実施形態における内部ディスパッチャルーチンの処理を示す流れ図である。
【図23】 一実施形態におけるブロードキャストメッセージ処理ルーチンの処理を示す流れ図である。
【図24】 一実施形態におけるブロードキャストメッセージ配信ルーチンの処理を示す流れ図である。
【図25】
【図26】 一実施形態における接続ポート探索ステートメント処理ルーチンの処理を示す流れ図である。
【図27】 一実施形態における隣接コンピュータ接近ルーチンの処理を示す流れ図である。
【図28】 一実施形態における接続エッジ探索呼出し処理ルーチンの処理を示す流れ図である。
【図29】 一実施形態における接続エッジ探索応答処理ルーチンの処理を示す流れ図である。
【図30】 一実施形態におけるブロードキャストルーチンの処理を示す流れ図である。
【図31】一実施形態におけるメッセージ取得ルーチンの処理を示す流れ図である。
【図32】 一実施形態における状態確認メッセージ処理の処理を示す流れ図である。
【図33】 一実施形態における状態修復ステートメント処理ルーチンの処理を示す流れ図である。
【図34】 状態二重確認処理ルーチンの処理を示す流れ図である。
【図35】 一実施形態における競売システムの構成要素を示すブロック図である。
【図36】 一実施形態における参加者のコンピュータの構成要素を示すブロック図である。
【図37】 ウィンドウ300が表示状態ルーチンによって表示された、現在の競売の表示を示すブロック図である。
【図38】 すべての競売固有のウィンドウの表示を示す図である。
【図39】 競売の現在の状態を要求するルーチンの流れ図である。
【図40】 現在状態要求メッセージを受信するルーチンの流れ図である。
【図41】 現在状態メッセージを受信するルーチンの流れ図である。
【図42】 一実施形態における入札提出ルーチンの処理を示す流れ図である。
【図43】 一実施形態における入札メッセージ受信ルーチンの処理を示す流れ図である。
【図44】 終了間近タイマの満了を処理するルーチンを示す流れ図である。
【図45】 受信した終了間近メッセージを処理するルーチンを示す流れ図である。
【図46】 終了タイマの満了を処理するルーチンを示す流れ図である。
【図47】 受信したonメッセージを処理するルーチンを示す流れ図である。
【図48】 一実施形態における競売エージェントを示す流れ図である。
Claims (8)
- 複数の参加構成要素を有するゲーム環境を提供するコンピュータネットワークであって、各参加構成要素は少なくとも3つの隣接参加構成要素への接続を有し、発信元の参加構成要素は、その各接続を通じてその隣接参加構成要素にデータを送信することにより他の参加構成要素にデータを送信するように構成され、各参加構成要素は、隣接参加構成要素から受信するデータを他の隣接参加構成要素に送信するように構成され、前記ネットワークはm正則かつm連結であり、mは各参加構成要素の隣接参加構成要素の数であり、
各参加構成要素がその各隣接参加構成要素に1つのみのデータコピーを送信することを特徴とするコンピュータネットワーク。 - 各参加構成要素が4つの他の参加構成要素に接続されることを特徴とする請求項1に記載のコンピュータネットワーク。
- 各参加構成要素が偶数個の他の参加構成要素に接続されることを特徴とする請求項1または2に記載のコンピュータネットワーク。
- すべての前記参加構成要素がピアであることを特徴とする請求項1から3のいずれかに記載のコンピュータネットワーク。
- 前記接続がピアツーピア接続であることを特徴とする請求項1から4のいずれかに記載のコンピュータネットワーク。
- 前記接続がTCP/IP接続であることを特徴とする請求項1から5のいずれかに記載のコンピュータネットワーク。
- 各参加構成要素がコンピュータで実行されるプロセスであることを特徴とする請求項1から6のいずれかに記載のコンピュータネットワーク。
- コンピュータが複数の参加構成要素をホストすることを特徴とする請求項1から7のいずれかに記載のコンピュータネットワーク。
Applications Claiming Priority (19)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62957500A | 2000-07-31 | 2000-07-31 | |
US62902400A | 2000-07-31 | 2000-07-31 | |
US62902300A | 2000-07-31 | 2000-07-31 | |
US09/629,572 US6920497B1 (en) | 2000-07-31 | 2000-07-31 | Contacting a broadcast channel |
US09/629,577 US6732147B1 (en) | 2000-07-31 | 2000-07-31 | Leaving a broadcast channel |
US09/629,577 | 2000-07-31 | ||
US09/629,570 | 2000-07-31 | ||
US09/629,572 | 2000-07-31 | ||
US09/629,023 | 2000-07-31 | ||
US09/629,576 US6829634B1 (en) | 2000-07-31 | 2000-07-31 | Broadcasting network |
US09/629,575 | 2000-07-31 | ||
US09/629,024 | 2000-07-31 | ||
US09/629,576 | 2000-07-31 | ||
US09/629,570 US6910069B1 (en) | 2000-07-31 | 2000-07-31 | Joining a broadcast channel |
US09/629,042 | 2000-07-31 | ||
US09/629,043 | 2000-07-31 | ||
US09/629,043 US6714966B1 (en) | 2000-07-31 | 2000-07-31 | Information delivery service |
US09/629,042 US6701344B1 (en) | 2000-07-31 | 2000-07-31 | Distributed game environment |
PCT/US2001/024240 WO2002011366A2 (en) | 2000-07-31 | 2001-07-31 | Broadcasting network |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004505550A JP2004505550A (ja) | 2004-02-19 |
JP4963773B2 true JP4963773B2 (ja) | 2012-06-27 |
Family
ID=27578887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002515774A Expired - Lifetime JP4963773B2 (ja) | 2000-07-31 | 2001-07-31 | ブロードキャストネットワーク |
Country Status (7)
Country | Link |
---|---|
EP (3) | EP2259493B1 (ja) |
JP (1) | JP4963773B2 (ja) |
AT (3) | ATE507627T1 (ja) |
AU (1) | AU2001277241A1 (ja) |
DE (2) | DE60144540D1 (ja) |
IL (1) | IL154200A0 (ja) |
WO (1) | WO2002011366A2 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139468A1 (en) * | 2002-09-03 | 2004-07-15 | Kidd Taylor W. | Framework for maintenance and dissemination of distributed state information |
US7603464B2 (en) | 2003-06-04 | 2009-10-13 | Sony Computer Entertainment Inc. | Method and system for identifying available resources in a peer-to-peer network |
US7596633B2 (en) | 2003-10-20 | 2009-09-29 | Sony Computer Entertainment America Inc. | Island recovery in a peer-to-peer relay network |
US7685301B2 (en) | 2003-10-20 | 2010-03-23 | Sony Computer Entertainment America Inc. | Redundancy lists in a peer-to-peer relay network |
US8010633B2 (en) | 2003-10-20 | 2011-08-30 | Sony Computer Entertainment America Llc | Multiple peer-to-peer relay networks |
US7627678B2 (en) * | 2003-10-20 | 2009-12-01 | Sony Computer Entertainment America Inc. | Connecting a peer in a peer-to-peer relay network |
US7792988B2 (en) | 2003-10-20 | 2010-09-07 | Sony Computer Entertainment America, LLC | Peer-to-peer data relay |
US7610402B2 (en) | 2003-10-20 | 2009-10-27 | Sony Computer Entertainment America Inc. | Spectators in a peer-to-peer relay network |
US7392422B2 (en) | 2003-10-20 | 2008-06-24 | Sony Computer Entertainment America Inc., | Violations in a peer-to-peer relay network |
US7908393B2 (en) | 2007-12-04 | 2011-03-15 | Sony Computer Entertainment Inc. | Network bandwidth detection, distribution and traffic prioritization |
US7856506B2 (en) | 2008-03-05 | 2010-12-21 | Sony Computer Entertainment Inc. | Traversal of symmetric network address translator for multiple simultaneous connections |
JP5340232B2 (ja) * | 2010-07-22 | 2013-11-13 | 日本電信電話株式会社 | グラフの直径のモニタリング装置及び方法及びプログラム |
US9529626B2 (en) * | 2012-09-12 | 2016-12-27 | Salesforce.Com, Inc. | Facilitating equitable distribution of thread resources for job types associated with tenants in a multi-tenant on-demand services environment |
JP6183375B2 (ja) * | 2013-01-08 | 2017-08-23 | 日本電気株式会社 | 通信網制御システム、その制御方法及び制御プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62185435A (ja) * | 1986-02-10 | 1987-08-13 | Hitachi Ltd | ネツトワ−クの伝送制御方式 |
US4912656A (en) * | 1988-09-26 | 1990-03-27 | Harris Corporation | Adaptive link assignment for a dynamic communication network |
US5056085A (en) * | 1989-08-09 | 1991-10-08 | Harris Corporation | Flood-and-forward routing for broadcast packets in packet switching networks |
US5778187A (en) | 1996-05-09 | 1998-07-07 | Netcast Communications Corp. | Multicasting method and apparatus |
-
2001
- 2001-07-31 DE DE60144540T patent/DE60144540D1/de not_active Expired - Lifetime
- 2001-07-31 AT AT06009080T patent/ATE507627T1/de not_active IP Right Cessation
- 2001-07-31 WO PCT/US2001/024240 patent/WO2002011366A2/en active IP Right Grant
- 2001-07-31 DE DE60119331T patent/DE60119331T2/de not_active Expired - Lifetime
- 2001-07-31 EP EP10180127A patent/EP2259493B1/en not_active Expired - Lifetime
- 2001-07-31 AT AT10180127T patent/ATE543288T1/de active
- 2001-07-31 AT AT01955034T patent/ATE325479T1/de not_active IP Right Cessation
- 2001-07-31 EP EP06009080A patent/EP1681797B1/en not_active Expired - Lifetime
- 2001-07-31 IL IL15420001A patent/IL154200A0/xx not_active IP Right Cessation
- 2001-07-31 EP EP01955034A patent/EP1305908B1/en not_active Expired - Lifetime
- 2001-07-31 AU AU2001277241A patent/AU2001277241A1/en not_active Abandoned
- 2001-07-31 JP JP2002515774A patent/JP4963773B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU2001277241A1 (en) | 2002-02-13 |
EP2259493B1 (en) | 2012-01-25 |
EP1305908A2 (en) | 2003-05-02 |
DE60119331D1 (de) | 2006-06-08 |
WO2002011366A2 (en) | 2002-02-07 |
EP1681797A2 (en) | 2006-07-19 |
IL154200A0 (en) | 2003-07-31 |
JP2004505550A (ja) | 2004-02-19 |
ATE325479T1 (de) | 2006-06-15 |
EP1305908B1 (en) | 2006-05-03 |
EP1681797B1 (en) | 2011-04-27 |
EP2259493A1 (en) | 2010-12-08 |
DE60144540D1 (de) | 2011-06-09 |
DE60119331T2 (de) | 2006-09-14 |
ATE507627T1 (de) | 2011-05-15 |
ATE543288T1 (de) | 2012-02-15 |
WO2002011366A3 (en) | 2002-08-08 |
EP1681797A3 (en) | 2008-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4963773B2 (ja) | ブロードキャストネットワーク | |
US6560636B2 (en) | Methods for performing client-hosted application sessions in distributed processing systems | |
US6701344B1 (en) | Distributed game environment | |
US7614081B2 (en) | Managing and sharing identities on a network | |
US7519667B1 (en) | Method and system for integrating instant messaging, streaming audio and audio playback | |
US8296393B2 (en) | Media advertising over peer-to-peer networks | |
US7797375B2 (en) | System and method for responding to resource requests in distributed computer networks | |
US7941540B2 (en) | Method for uniform network access | |
US20040243672A1 (en) | System and method for user interaction in a peer-to-peer environment | |
US8819549B2 (en) | Method and system for mutidimensional virtual online support center | |
US6829634B1 (en) | Broadcasting network | |
US20040243682A1 (en) | System and method for user notification | |
US20030233399A1 (en) | Initializing relationships between devices in a network | |
JP2004532471A (ja) | 分散コンピュータ・ネットワークのスケーラブルなリソース・ディスカバリおよび再構成 | |
US20040243665A1 (en) | System and method for services provision in a peer-to-peer environment | |
TW200818828A (en) | Reliable messaging using redundant message streams in a high speed, low latency data communications environment | |
JP2000092153A (ja) | 通信方法及び通信ネットワ―ク | |
JP6277497B2 (ja) | ソーシャルグループコミュニティ機能を利用してサービスを提供するシステムおよび方法 | |
US7987233B1 (en) | System and methods for facilitating a multiparty communications session with a dynamically designated session manager | |
US20100223320A1 (en) | Data distribution efficiency for online collaborative computing sessions | |
JP6335978B2 (ja) | 通信セッション上の一部の参加者のための仮想の通信セッションを提供するシステムおよび方法 | |
US6910069B1 (en) | Joining a broadcast channel | |
JP2004260244A (ja) | 情報通信方法、プログラム及びシステム | |
JP2007115047A (ja) | 共同購入方法及び共同購入システム | |
Duarte et al. | A case study on event dissemination in an active overlay network environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20071102 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071112 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080709 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20091210 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100217 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100217 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101102 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110202 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110209 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110330 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110406 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110420 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110816 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111212 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20111219 |
|
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: 20120228 |
|
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: 20120327 |
|
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: 20150406 Year of fee payment: 3 |
|
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 |