JPH11161622A - 通信システム - Google Patents

通信システム

Info

Publication number
JPH11161622A
JPH11161622A JP10243659A JP24365998A JPH11161622A JP H11161622 A JPH11161622 A JP H11161622A JP 10243659 A JP10243659 A JP 10243659A JP 24365998 A JP24365998 A JP 24365998A JP H11161622 A JPH11161622 A JP H11161622A
Authority
JP
Japan
Prior art keywords
message
state
server
messages
user
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.)
Pending
Application number
JP10243659A
Other languages
English (en)
Inventor
Richard C Waters
リチャード・シー・ウォーターズ
David Anderson
デビッド・アンダーソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
Original Assignee
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Information Technology Corp, Mitsubishi Electric Research Laboratories Inc filed Critical Mitsubishi Electric Information Technology Corp
Publication of JPH11161622A publication Critical patent/JPH11161622A/ja
Pending legal-status Critical Current

Links

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/1863—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1868—Measures taken after transmission, e.g. acknowledgments
    • 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/131—Protocols for games, networked simulations or virtual reality
    • 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164—Adaptation or special uses of UDP protocol
    • 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

(57)【要約】 【課題】 1グループのプロセスの間でオブジェクト状
態情報を高速で効率的に及び高い信頼性で通信するシス
テムを提供する。 【解決手段】 システムは、高速ではあるが損失が多く
従って信頼性の低い通信チャネルの使用と、1グループ
のプロセス及びそのグループと結合したサーバを組み合
わせて、マルチキャスティングにおいて失われたデータ
を提供する。中央サーバが、信頼性及び迅速な参加を支
援する一方で、UDPのマルチキャストのメッセージン
グを用いて、迅速な相互作用と小さい帯域幅が達成され
る。損失の多いチャネルを通じて示差メッセージが送ら
れ、いくつかの前の状態のうちのいずれかからどのよう
にオブジェクトの新しい状態を計算するかをコンパクト
に記述する。このような記述は、前の記述のうちのいく
つかが受け取られていなくとも解釈することができるの
で、明示の往復メッセージの修理の必要が非常に低減
し、帯域幅も保存される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ネットワークシ
ステムに関し、より詳細には、それぞれのプロセスが実
行されているネットワークの1つのノードから他のノー
ドに、オブジェクトに関するデータを高速で高い信頼性
で転送する通信システムに関するものである。
【0002】
【従来の技術】ネットワーク上の多数のユーザが、バー
チャル・リアリティのシーンでグラフィックのオブジェ
クト等のデータを共有しようと思い、そういったオブジ
ェクトにおける変更をそれぞれのノードにおいて実行さ
れているプロセスに通信しようと思う場合、1人のユー
ザがどのような変更を送信したいと思っているかを、そ
れぞれのユーザが素早く高い信頼性で知ることができる
ように、高速で信頼性の高い更新システムが必要とされ
る。例えば、分散共有メモリの共有データ−オブジェク
トモデルまたはプロセスがオブジェクトを共有する何か
同様の共有モデルを経由した1グループの非対称プロセ
ス相互作用があると仮定すれば、そしてさらに、このグ
ループがネットワークを通じて通信しているかもしれ
ず、地理的に離れていて、分散バーチャル環境に参加し
ているかもしれないと仮定すれば、目的は、次のことを
同時に達成する、ということである。すなわち、第1
に、ほぼリアルタイムの相互作用を達成するために、迅
速な相互作用を行ってオブジェクトの変更の通信速度を
最大にする。第2に、帯域幅を小さくして、使用する通
信帯域幅を最小にする。第3に、信頼性を高くして、オ
ブジェクトの変更が、低速のときもあるとしても結局
は、新しいユーザが通信グループに参加し他のすべての
プロセスが知っていることについて最新の情報を迅速に
得ることができるようにする。
【0003】以下の説明において、双方向で取り組まれ
るべきデータは、いかなる与えられた瞬間においても共
有されているすべてのオブジェクトの組を記述するのに
用いられる世界モデル(world model)にある、と仮定
する。
【0004】上記目的をどのように達成するかを考える
上で、オブジェクトが以下の多様な方法で変化すること
ができるということを考慮することが重要である。通信
の解決策は、この多様なもののすべての点において受け
入れられる程度に機能しなければならず、ある特定のア
プリケーションで一番適当な点が何であっても、その点
において特にうまく機能するべきである。
【0005】一方の極端では、非常に頻繁に、例えば1
秒間に何十回もまたはそれ以上、変化するオブジェクト
がある。多くのアプリケーションについて、1つの変更
を記述するある特定の失われたメッセージを回復する、
ということはあまり重要ではない、というのも、その変
更が古いものになる前にそのようにすることはできない
だろうからである。むしろ、常に最新の情報を到着する
とすぐに利用することができる、ということに焦点を合
わせるべきである。さらに、無用の修理の試みに用いる
資源はできるだけ少なくするべきである。アプリケーシ
ョンに特有の知識を用いて、いくつかの失われたメッセ
ージが修理する値打ちがないと判断される、というの
も、それらは次の変更によって古いものになってしまっ
ているからである、ということが、オブジェクトをベー
スにした修理、と呼ばれる戦略にとって主要なことであ
る。
【0006】他方の極端では、非常にめったに、例えば
数分または数時間ごとに1回しか、変化しないオブジェ
クトがある。この状態では、変化が起こるその正確な瞬
間は重要であるかもしれないし重要でないかもしれない
が、変化が起こったという事実は確かに重要である。そ
れぞれの個々の変更が通信される、ということが非常に
重要である。ある特定の変更について情報が失われる場
合には、次の変化が起こるよりもずっと前にそのことが
検出される、ということも重要である。この状態では、
失われたメッセージを検出するのに、ある種の積極的な
認識体系が必要である。
【0007】この両者の中間にあるのは、適度の速度
で、例えば数秒ごとに1回程度、変化するオブジェクト
である。ここでは、修理することが重要であり、その修
理は比較的適時に行わなければならない。これは、この
多様なもののうちでうまく支援するのが特に困難な部分
である。幸いにも、この多様なもののうちの中間のもの
よりも、両極端の方をよく利用するアプリケーションが
多いと思われる。
【0008】単一のオブジェクトは、しばらくの間迅速
に変化し、次に少しの間変化が低速であったりあるいは
全く変化しないかもしれない、ということが理解される
べきである。従って、汎用の方法では、前もってどのオ
ブジェクトがどの種の挙動を示すかを知っておく、とい
うことに依存することはできない。それどころか、起こ
っていることが何であろうともそれに動的に適応しなけ
ればならない。
【0009】分散データベースおよび共有メモリ技術に
関して、上記目的に取り組む方法の1つは、標準の(sta
ndard)分散データベースまたは共有メモリ技術を用い
る、というものである。これらの方法においては、何に
もまして重要な目的は、1つの与えられた共有オブジェ
クトに2つのプロセスがアクセスするいかなる瞬間にお
いても、この2つのプロセスが常に同じ値を得る、とい
うことを保証する、ということである。この目的を満た
すために、ロックを用いて、各プロセスが誤った時にオ
ブジェクトにアクセスできないようにしなければならな
い。
【0010】例えば、プロセスP1がオブジェクトAを
修正したいと仮定する。これを行うためには、P1は以
下のことを行わなければならない。
【0011】1.必要であれば、ロックが解除されるま
で待機し、他のプロセスがどれもAをロックしていない
ということをチェックする。
【0012】2.Aをロックして、他のプロセスがAに
アクセスできないようにする。
【0013】3.グループ内の他のプロセスすべてに、
ロックが設定されていることを通知するメッセージを送
る。
【0014】4.ロックを認識する戻りメッセージを他
のプロセスすべてから受け取るまで待機する。これによ
って、どれか他のプロセスがロックを最初に取っている
ということを発見する結果になるかもしれない、という
ことに注意されたい。その場合には、P1は上のステッ
プ1に戻らなければならない。
【0015】5.Aに所望の変更を行う。
【0016】6.他のプロセスすべてに、その変更を指
定するメッセージを送る。
【0017】7.変更のメッセージの受け取りを認識す
る戻りメッセージを他のプロセスすべてから受け取るま
で待機する。
【0018】8.Aにかけたロックを解除する。
【0019】9.ロックが解除されたというメッセージ
を他のプロセスすべてに送る。
【0020】このハンドシェーキングでは、帯域幅が浪
費され、相互作用が劇的に低速になる。Aにロックを設
定したり解除したりするには、P1とグループ内の他の
プロセスの間で多数のメッセージが送られなければなら
ない。このように行ったり来たりの通信を行うと、P1
がAを変更しようと判断してから、他のプロセスのうち
のどれかがその変更にアクセスできるようになる最も早
い待ち時間が、非常に増大する。それぞれのメッセージ
は完全に高い信頼性で送られねばならず、それによって
帯域幅の使用量と待ち時間がさらに増大する。
【0021】最後に、待ち時間は、1グループ内のプロ
セス数が増大するにつれて、急激に増大する。その結
果、標準の分散データベースまたは共有メモリの方法
は、ある程度数の多いプロセスがほぼリアルタイムで相
互作用するのには用いることができない。
【0022】適度の数のプロセスの間でもほぼリアルタ
イムの相互作用を達成するためには、1つの与えられた
共有オブジェクトに2つのプロセスがアクセスするとき
にはこの2つのプロセスが常に同じ値を得る、という、
別の状況では望ましい要求事項を、捨てなければならな
い。むしろ、プロセス間のロックなしで済ませねばなら
ず、オブジェクトに関連する値についてプロセス間で一
時的に不一致があっても許容しなければならない。特
に、プロセスP1がオブジェクトAを修正する場合に
は、他のプロセスP2がこの変更について知るまでには
短い時間があり、その時間の間に、P1およびP2がA
にアクセスするときに得る値が異なってしまう。
【0023】また、それぞれのオブジェクトが自分のプ
ロセスを有しておりそのプロセスのみがそのオブジェク
トを修正することができる、と仮定することが都合がよ
い。これによって、書き出しプログラム間の問題が回避
され、同時に行われる変更の間で調停する手段が一切必
要ないということが意味される。1つのアプリケーショ
ンが、1つの与えられたオブジェクトを変更することが
できるプロセスをいくつか有したい場合には、そのオブ
ジェクトの所有権をあるプロセスから他のプロセスに移
転することができる。または、単一のプロセスを、その
オブジェクトの変更の各要求の調停者として指定し、そ
ういった要求をベースにした変更を実際に行うプロセス
となるようにしてもよい。これは本質的に、多数のプロ
セスが直接オブジェクトを変更するということが行われ
る場合には起こるであろうことを正確に模倣している、
というのも、その場合には、何らかの調停方法がなけれ
ばならないからである。説明のために、以下では、いか
なる与えられた瞬間においても、それぞれのオブジェク
トは自身を変更することができるプロセスは1つしか有
していない、と仮定する。
【0024】平等性の制約を緩めて、いくつかの方法、
すなわち、中央サーバシステム、分散対話型シミュレー
ション(Distributed Interacti
veSimulation:DIS)、および信頼性の
高いマルチキャスト、を用いて、上記目的の達成が図ら
れてきた。
【0025】中央サーバの方法では、グループ内のそれ
ぞれのプロセスに、自らが行う変更を中央サーバに通信
させ、中央サーバは他のプロセスに通知する。この方法
では、各プロセスが知る情報をそのプロセスにできるだ
け接近して保つ、ということがうまく行われる。
【0026】この方法ではまた、迅速な参加をさせる、
ということもうまく行われる、というのも、新しいプロ
セスは中央サーバから自らが知っているものと考えられ
ているすべてのことについての迅速なダウンロードを受
け取ることができるからである。さらに、TCP等の信
頼性の高いプロトコルを用いてメッセージをサーバへお
よびサーバから送ることによって、中央サーバの方法
は、情報の信頼性の高い到着を容易に保証することがで
きる。
【0027】しかし、この中央サーバの方法には、2つ
の問題がある。第1に、相互作用の速度がかなり制限さ
れる、というのも、すべてのメッセージは、まず中央サ
ーバに行き、次にグループ内の他のプロセスに行かなけ
ればならないからである。この方法では、メッセージを
あるプロセスから他のプロセスに直接送るのと比較し
て、メッセージの伝達時間(flight time)が長くなり、
サーバが入メッセージを解釈し、それに対してどうする
べきかを判断し、出メッセージを生成するのに必要な時
間も余分にかかる。
【0028】第2に、グループ内の他のプロセスだけで
なく中央サーバにもメッセージを送らなければならない
ということのために、必要な帯域幅がいくぶん増大す
る。
【0029】分散対話型シミュレーション基準、DI
S、Standard for Information Technology, Protocols
for Distributed Interactive Simulation, DIS ANSI/
IEEE Standard 1278-1993, American National Standar
ds Institute, 1993に適合するシステムは、UDPプロ
トコルを用いて効率的にメッセージをマルチキャストす
るものを用いて、オブジェクトの変更に関するメッセー
ジをあるプロセスから他のプロセスに直接に送る。実際
には、初期のDISシステムは、メッセージをあるサブ
ネットワークから他のサブネットワークに転送する特別
な橋渡しをするハードウェア/ソフトウェアを有する専
用サブネットワーク内での同報を用いているが、これは
本質的に、マルチキャストが可能なネットワークのルー
タ(routers)が行うことである。
【0030】DISの方法の主な長所は、できる限り最
大の速度でプロセス間で情報を通信する、ということで
ある。さらに、マルチキャストであれば、多数のポイン
トツーポイント接続よりも、用いるシステムの帯域幅が
かなり小さい。しかし、UDPメッセージの到着を保証
するのもではない。従ってDISは、1つのプロセスが
行う変更が常に、1つの与えられた他のプロセスによっ
て知られるようになる、ということを保証するものでは
ない。
【0031】この信頼性の問題に対処するために、DI
Sは2つのことを行う。第1に、送られるそれぞれのメ
ッセージは、1つのオブジェクトに関するフルの情報を
含んでおり、そのオブジェクトに関する前のメッセージ
が失われている場合であっても、常にすべての情報を理
解することができる。第2に、DISシステムは、それ
ぞれのオブジェクトの現在の状態を指定する「キープア
ライブ」メッセージを、頻繁に、通常5秒ごとに1回、
送出する。これは、失われた情報が通常5〜10秒内に
修理される、ということを意味している。これはまた、
新しいプロセスは、知らなければならないすべてのこと
を5−10秒内に知らされる、ということも意味してい
る。
【0032】上記のことにもかかわらず、DISにはま
だ4つの重要な問題が残っている。第1に、示差メッセ
ージを用いることはできず、従ってそれぞれのメッセー
ジはオブジェクトをフルに記述しなければならない、と
いう事実のために、多くの帯域幅が浪費される、という
のも、あるオブジェクトのごく一部のみが変化している
場合であっても、そのオブジェクト全体の記述が頻繁に
送られているからである。
【0033】第2に、キープアライブのメッセージは多
くの帯域幅を浪費する、というのも、あるオブジェクト
が全く変化していない場合であっても、そのオブジェク
ト全体を記述するメッセージが繰り返し送られるからで
ある。
【0034】第3に、キープアライブのメッセージによ
って結果として修理がされることになるが、速い修理が
されるようにするものではない。従って、そのグループ
内の各プロセスは、それらが共有しているデータについ
て信じていることについて(in what they believe abou
t the data they share)同期からかなり外れ得、ほぼリ
アルタイムの相互作用は損なわれる。
【0035】第4に、迅速に参加することができない、
というのも、新しいプロセスが、他のプロセスが知って
いることを知るには、5−10秒かかるからである。
【0036】DISの優れた部分は、中央サーバのプロ
セスが全くなく、いかなるプロセスも他のプロセスがど
んな情報を受け取っているかを理解する必要がない、と
いうことである。それどころか、すべてのプロセスは、
他のプロセスを知らずに猛烈に進む(forge ahead)だけ
である。失われるメッセージがほとんどない場合には、
かなりのさらなる帯域幅を犠牲にしてではあるが、物事
は非常にうまく行く。かなりの数のメッセージが失われ
る場合にも、リアルタイムの相互作用が低減はするが、
帯域幅の使用量が増大することなく、物事はなおもうま
く行く。
【0037】関連する従来技術のうちの最後のものは、
信頼性の高いマルチキャストのプロトコルについての研
究である。この技術において、主要な目的は、マルチキ
ャストのメッセージを用いて帯域幅の小さい動作を達成
することであるが、信頼性を保証するハンドシェーキン
グを組み込むことである。これを行うには、2つの基本
的な方法がある。すなわち、肯定応答のメッセージ、A
CKを用いるもの、または、否定応答のメッセージ、N
AKを用いるもの、である。
【0038】ACKをベースにした方法においては、そ
れぞれの受け取り手が、自らに送られたメッセージの受
け取りの明示のACKを送る。TCP等のプロトコルに
おいては、これによって、何を誰に再送しなければなら
ないかを送り手が正確に知ることができる。しかし、こ
の問題点は、「ACKの爆発(explosion)」と呼ばれる
ものである。
【0039】プロセスPがN個の他のプロセスにメッセ
ージを送っていると仮定する。Pが1つメッセージを送
るごとに、N個のACKが生成される。これによってか
なりの帯域幅が使用され、Pは、1つメッセージを送出
するごとに、処理しなければならないメッセージをN個
受け取ることになる。このグループ全体では、データを
保持するメッセージの個数のN倍のACKメッセージが
ある、ということに注意されたい。その結果、グループ
が大きくなってくると、ACKメッセージがすぐにすべ
ての通信を支配してしまう。ACK自体がマルチキャス
トによって送られる場合には、すべてのプロセスがすべ
てのACKを処理しなければならない。ACKが様々な
プロセスから直接送信元のプロセスに送り返される場合
には、これは、Nの2乗の1対1のチャネルが開いてい
ることを意味しており、ACKを通信するのに必要な帯
域幅は増大する。
【0040】NAKをベースにした方法においては、メ
ッセージが失われたときのみに制御メッセージが送られ
る。具体的には、プロセスP2が、他のプロセスPから
のメッセージMを受け取らなかったということに気づい
た場合、プロセスP2は、そのメッセージの再送を要求
するNAKを送る。この方法の利点は、メッセージが受
け取られる場合には、ACKを送って帯域幅が浪費され
ることがない、ということである。しかし、それでもま
だ重要な問題がある。
【0041】第1に、P2がMを受け取らなかったとい
うことを知る主要な方法は、Mの後にPが送る異なった
メッセージを受け取る、ということである。ACKを用
いる場合と比較すると、本方法では、Mの損失を検出し
従って修理することができる時間が遅れる。この問題
は、PがMの後に何らメッセージを送らない場合には、
特に深刻となる。その場合、P2はMが失われたという
ことにずっと気づかないかもしれない。この問題に対処
するために、各プロセスが受け取っておくべきであるも
のを指定するような、ある種のメッセージが送られなけ
ればならない。純粋なNAKをベースにした方法は、そ
れぞれのプロセスが規則正しくメッセージを送り続ける
場合にのみ可能である。
【0042】第2に、ACKと同様に、NAK自体がマ
ルチキャストによって送られる場合には、すべてのプロ
セスがすべてのNAKを処理しなければならない。NA
Kが様々なプロセスから直接送信元のプロセスに送り戻
される場合には、これは、Nの2乗の1対1のチャネル
が開いていることを意味しており、NAKを通信するの
に必要な帯域幅は増大する。いずれにせよ、あるメッセ
ージが全く失われた場合に送信元に集中するN個のNA
Kは、「NAKの爆縮(implosion)」と呼ばれている。
このトラヒックが存在することによって、通信をそもそ
も失敗させた原因がなんにせよ、その原因以外にさらに
通信を妨げ得る困難が送信元において引き起こされる。
【0043】
【発明が解決しようとする課題】このような視野から、
信頼性の高いマルチキャストのプロトコルには、いくつ
か重大な問題がある。第1に、これらの大部分は、ほぼ
リアルタイムの相互作用や迅速な参加については、支援
を図ろうともしておらず、その代わりに、信頼性および
帯域幅が小さいことに焦点を当てている。
【0044】第2に、これらの多くは、到着の順番等、
信頼性の特徴を保証するのにかなりの資源を費やしてい
るが、そういったものは、上述の問題の解決には有用で
はない。
【0045】第3に、ACKを用いる場合には、それに
よって、失われているメッセージがほとんどない場合で
あっても、かなりの量の帯域幅が用いられてしまう。か
なりの数のメッセージが失われている場合には、失われ
たメッセージを再送しなければならないために、帯域幅
の使用量は更に増す。NAKが用いられる場合には、物
事がうまく行っている場合には、帯域幅の使用量はAC
Kを用いる場合よりもずっと小さいが、メッセージが失
われるにつれて、メッセージの再送に加えて多くのNA
Kを送り始めなければならないために、帯域幅の使用量
の増加の勾配はずっと急である。
【0046】どちらの場合においても、メッセージが失
われている場合にはより多くの帯域幅を必要とする、と
いう基本的な挙動は、不利である、というのも、帯域幅
が制限されるということは、メッセージが失われる主な
原因の1つだからである。特に、NAKをベースにした
方法においては、このことが、最初に起こった問題が次
々と問題を呼ぶ悪循環を引き起こし得る。
【0047】第4に、これが最も大きい問題かもしれな
いが、マルチキャストのメッセージ自体の信頼性を直接
高くしようと努力しても、上述の問題の核心をつかんだ
ことにはならない。例えば、プロセスP1が時間T1に
おいてオブジェクトAを変更し、この変更を記述するメ
ッセージMを送ると仮定する。NAKをベースにした方
法において、T1よりも後のある時T2において、プロ
セスP2がMを受け取っていないことを発見すると仮定
する。するとP2は、Mの再送信を要求するNAKを送
る。これは仕方がないことではあるが、P2が本当に得
たいのは、Mではなく、T2におけるAの状態である。
すなわち、所望される信頼性とは、必ずしもそれぞれの
メッセージを受け取ることではなく、むしろAについて
可能な限り最新の情報を常に得る、ということである。
【0048】
【課題を解決するための手段】上述の問題の基本的な解
決策は、中央サーバを用いて、信頼性および迅速な参加
を支援する一方で、UDPマルチキャストメッセージン
グを用いて、迅速な相互作用と小さい帯域幅が達成され
る。示差メッセージを用いて、さらに小さい帯域幅が達
成され、オブジェクトをベースにした修理を用いて、不
必要な修理が回避される。
【0049】具体的には、1グループのプロセスの間で
オブジェクト状態情報を高速で効率的におよび高い信頼
性で通信するシステムは、高速ではあるが損失が多く従
って信頼性の低いマルチキャストのリンクと、1グルー
プのプロセスおよびそれらのプロセスと結合したサーバ
を組み合わせて、マルチキャスティングにおいて失われ
たデータを提供する。一実施例において、中央サーバが
信頼性および迅速な参加を支援する一方で、UDPのマ
ルチキャストのメッセージングを用いて迅速な相互作用
と小さい帯域幅が達成される。示差メッセージを用いて
変更および失われたデータの検出ができ、示差メッセー
ジにおいては、いくつか前の状態のうちのいずれかから
どのようにオブジェクトの新しい状態を計算するかを記
述する、示差記述が作り出され、前の記述のうちのいく
つかが受け取られていなくとも、記述を解釈することが
できるようになっており、さらに小さい帯域幅が達成さ
れる。一実施例において、中央サーバが送出する、いつ
情報が失われたかを高い信頼性で知るためのメッセージ
によって、キープアライブのメッセージが必要ないよう
にしている。
【0050】本システムの一実施例において、いつ情報
が失われたかを高い信頼性で知るために、サーバは、そ
れぞれのプロセスが受け取っておくべきであるものを指
定するメッセージを送る。
【0051】キープアライブのメッセージは、適時に修
理したり真に迅速な参加を可能にすることなく帯域幅を
浪費するので、避けられる。予想される状況では、オブ
ジェクトは何度も変化するがそれぞれは小さな変更に過
ぎないので、オブジェクトのフルの状態ではなく変更自
体のみを記述する示差オブジェクト記述を用いることに
よって、帯域幅は大幅に減少する。
【0052】最も簡単な示差オブジェクト記述では、オ
ブジェクトの新しい状態を前の状態からどのように計算
するかを指定する。この種の記述を用いる場合には、プ
ロセスは、前の記述を受け取っていなければ示差記述D
を解釈することができない。しかし、いくつか前の状態
のうちのどれかからオブジェクトの新しい状態を計算す
る示差記述を作り出すことができる。もしこれができる
ならば、直前の記述が受け取られていなくとも、記述D
を解釈することができる。
【0053】帯域幅は、信頼性が高いレベルで導入され
て、低レベルでの強い力(brute force)を用いるよりも
その特定のドメインの制約を最大限に利用することがで
きる場合に、最も低減することができる。
【0054】特に、信頼性は、各プロセスが実際にすべ
ての低レベルのメッセージを受け取ることを保証するよ
うようにではなく、各プロセスがそれぞれのオブジェク
トについて最新の状態の値で終わることを保証するよう
に追加される。例えば、失われてはいるが次のオブジェ
クト状態メッセージによってすぐに古いものになるオブ
ジェクト状態メッセージは、再送される必要がなく、従
って再送されるべきではない。
【0055】大域共有環境(global shared environmen
t)において高い信頼性で相互作用するために、オブジェ
クトはグローバリ・ユニーク・ID(Globally Unique I
Ds)すなわちGUIDによって識別される。空間におい
ても時間においても真に唯一であるためには、GUID
は例えば100またはそれより多くのビットを有しなけ
ればならない。
【0056】あいにく、これに対抗することを何もしな
ければ、このようなGUIDを用いるとメッセージに多
くの帯域幅を使い尽くし得る。本発明においては、GU
IDは、1つの与えられたメッセージにおいて用いられ
るGUIDの間で共用するビットが多くなるように割り
当てられる。従って、GUIDは、コンパクトで圧縮さ
れた形式で表すことができる。
【0057】一実施例において、コンパクトな示差メッ
セージは、オブジェクトの現在の状態を、いくつかの前
の状態のうちのどれかからの最新版として記述する。こ
れによって、システム内でメッセージは失われたり順番
が狂って到着したりしてもよくなり、システム内での待
ち時間が低減する。これによって、順番が狂ったメッセ
ージが到着したり失われたメッセージが修理または再送
されるのを待機する必要がなく、メッセージは到着する
とすぐに解釈され用いられることができる。また、これ
によって、メッセージが失われた場合には、失われたメ
ッセージを修理する必要さえない粗い挙動も許される、
というのも、メッセージレベルではなくオブジェクトを
ベースにして修理をすることができるからである。
【0058】この技術は、メッセージが順番に到着する
ような信頼性の高い通信チャネルについて用いても利益
にならない、ということに注意されたい。そのような状
況では、普通のデルタで十分である。他方で、本システ
ムでは、メッセージが失われたり順番が狂って到着する
かもしれない場合に価値がある冗長性がいくらか導入さ
れる。
【0059】本システムにおいては、それぞれのサイク
ルで変化したビットマスクまたは語の論理和をとること
によって、変化したものを効率的に計算する技術が用い
られている。1つまたはそれより多いフィールドが繰り
返し変化している場合、これは普通であるが、この場合
には、我々の符号化では、多くの前の状態に関してさか
のぼるコストは、直前の状態までのデルタを記述するコ
ストと比較して、余分にかかることはない。
【0060】このようにISTPにおいて示差メッセー
ジを用いることにおいて、圧縮性を増大するために、メ
ッセージは、同じメッセージにおいてGUID間で多く
の冗長性がみられるように配置される。
【0061】以下では、本システムのベースである、領
域をベースにした通信への全体的な手引きを説明する。
1つまたはそれより多いノードが、制御するオブジェク
トについての情報を更新し、1つまたはそれより多いノ
ードがそういった更新を受け取る必要がある、ネットワ
ーク化したコンピュータシステムにおいては、本システ
ムは、そういった更新を、以前の技術よりも速く小さな
帯域幅で送るという方法で、高い信頼性で通信する。
【0062】重要な点に関しては、マルチキャストで、
グループをベースにした、ピア間での通信であって、サ
ーバがその通信を聞いている。この中央サーバは信頼性
の中心であって、マルチキャストは、待ち時間が短く帯
域幅の小さい相互作用に用いられる。
【0063】メッセージレベルの修理と対立するものと
してのオブジェクトをベースにした信頼性によって、不
要な修理が回避される。修理が必要な場合、失われた情
報よりも最新の情報が今では入手可能なときには、それ
を代わりに提供することができる。
【0064】本システムにおいて、除去されたオブジェ
クトについて参加者が覚えておかなければならない情報
量は、遅すぎるメッセージをすべて自動的に拒絶し、オ
ブジェクトをベースにした修理を用いていかなる失われ
た情報も回復することによって、制限されている。
【0065】セッションへの入力は、すべての現在のセ
ッション状態の即時のダウンロードを、進行中の更新が
送られているマルチキャストのグループに新しいクライ
エントを参加させることと組み合わせることによって、
できるだけ迅速に行われる。このダウンロードには、す
べての最近除去されたオブジェクトについての情報が含
まれているので、新しいクライエントは、そういったオ
ブジェクトについての後から到着してくるマルチキャス
トの更新に惑わされることはない。
【0066】サーバは、そのグループが用いるマルチキ
ャストのアドレスを選択する責任があり、干渉を回避し
たり態度の悪い参加者を駆逐するためにチャネルを次々
と替えることができる。これは、コードレス電話が干渉
を回避するためにチャネルを選択する機構を拡張したも
のである。
【0067】本発明のこれらのおよび他の特徴は、図面
と共に、詳細な説明を考慮すると、よりよく理解されよ
う。
【0068】
【発明の実施の形態】実施の形態1.次に図1を参照し
て、ネットワーク16につながれた一連のコンピュータ
10、12、14上で、ネットワーク化された一連のプ
ロセスが実行されており、一実施例において、プロセス
は、モニタ20、22、24に表示されたバーチャル・
リアリティーのシーン18を含む。それぞれのコンピュ
ータ10、12、14のユーザA、B、Cは、バーチャ
ル・リアリティーのシーンを作り出すのに参加してお
り、それぞれのユーザ、従ってそれぞれのコンピュータ
は、関連する世界モデル26、28、30を有してい
る。それぞれの世界モデルは、いくつかの部分に分割さ
れていて、それらについてはそれぞれのユーザに責任が
ある。
【0069】わかるように、それぞれの世界モデルは、
従って、セクションA、B、Cに分割されており、ユー
ザAは、グラフィック要素、この場合は犬32、を付け
加えることによって、このバーチャル・リアリティーの
シーンを修正しようとしている。変更34は、28’お
よび30’で示すように、それぞれのユーザの世界モデ
ルに送信されることになる。
【0070】本実施の形態は、多数のユーザによるバー
チャル・リアリティーのシーンの創作の点から説明する
ということが理解されようが、多数のユーザの間ででの
いかなる修正または変更されることになるデータの送信
も、好ましくは、信頼性の高い、待ち時間の短い、帯域
幅の小さい送信が必要である。
【0071】このような送信は、これまで、データおよ
び/またはその変更をサーバに送信してそれをすべての
ユーザに再送信することによって、試みられてきた。こ
れは、中央サーバシステムと呼ばれ、図2を参照して後
に説明する。
【0072】このデータおよび/またはその変更を送信
する第2の一般的な方法は、同報またはマルチキャスト
のネットワーキングの利用によるものであり、データま
たは変更は直接それぞれのユーザに通信される。前述の
分散対話型シミュレーション基準、DISは、この方法
を用いるプロトコルであり、図3を参照して後に説明す
る。
【0073】次に図2を参照して、ユーザによって指定
された世界モデル40への変更が、サーバ42に送信さ
れ、サーバ42は単に変更されたデータまたは変更をネ
ットワーク上の様々なユーザに送信する。前述したよう
に、このような方法の主な問題は、変更をサーバを通じ
てそれぞれのユーザに送るのに必要な時間が増大すると
いうことと、このようなシステムを多数のユーザに大規
模化する(scaling)とサーバが隘路を作ってしまうとい
うことである。
【0074】次に図3を参照して、世界モデル40への
変更は、直接それぞれのコンピュータ10、12、14
とピアツーピアの方法で通信され、適切なアドレスに申
し込む(subscribing)すべてのプロセスが新しいデータ
を受け取る。これまでは、図3に説明したタイプのマル
チキャストシステムは、データへの変更を示す示差メッ
セージではなく、オブジェクト全体を送信することに依
存してきた、ということに注意されたい。
【0075】次に図4を参照して、本システムにおい
て、ユーザAが自らの世界モデル26を変更したいと仮
定すると、この変更は同時に、サーバ50に、そして直
接コンピュータ12、14に送信される。この送信は、
いかなる従来技術の同報またはマルチキャストのプロト
コルの形式をとってもよい。送信されるのは、ユーザA
がユーザB、Cに有してもらいたいと思う変更されたデ
ータである。上述のとおり、マルチキャスティングでは
一般的に、送信は比較的適時であるが、データが失われ
たりデータの順番が狂う結果になり得る。
【0076】それぞれのコンピュータ10、12、14
には、未着データ検出装置52がつながれており、2つ
の機能を果たす。第1の機能は、ユーザからのデータを
サーバが受け取っていない場合を検出する、というもの
である。第2の機能は、与えられたコンピュータに保存
されたデータが、他のユーザが指定した変更を含んでい
ない場合を検出する、というものである。
【0077】次に図5を参照して、未着データ検出装置
52の2つの機能を説明する。サーバ50からそれぞれ
のコンピュータに、前回そのようなオブジェクト状態要
約を送ってからサーバが処理した一連のオブジェクト状
態の更新を記述するオブジェクト状態要約メッセージ5
8が送られる。この場合、ユーザAは、データA’にお
ける変更を指定している。サーバは、いったんこの変更
を受け取ると、この変更を自らの次のオブジェクト状態
要約メッセージに含める。オブジェクト状態要約のこの
予想される部分がない場合には、未着データ検出装置5
2’が、更新が失われたと判定することができる。一実
施例において、これは次に、56で示すように、示差メ
ッセージを直接サーバに送ることによって修理される。
【0078】ユーザB、Cに関して、ユーザAからユー
ザB、Cに直接送られたメッセージが失われている場合
には、サーバ50からの要約58が、失われたデータの
存在をユーザB、Cに知らせる。失われたメッセージに
おいて記述されたデータのバージョンがコンピュータ1
2または14にないと判定して、サーバ50には、その
更新が失われたオブジェクトに関連する最新のデータを
供給せよという要求60が行われる。
【0079】その結果、本システムは、第1にそれぞれ
のユーザに直接変更を同報し、次にその変更を提供され
た中央サーバを利用することによって失われたメッセー
ジが修理できるようにすることによって、信頼性が高く
適時のデータ変更を多くのネットワーク化されたユーザ
に送信することができる。
【0080】一般的に、オブジェクトはオブジェクト状
態を含む多数のフィールドを有しており、普通の場合に
は、与えられたある時間には、1つまたは少数のフィー
ルドしか変化しない、ということが理解されよう。しか
し、今述べた様々な困難のために、図3と共に言及した
DISプロトコルでは、変化の性質にかかわらず、常に
完全なオブジェクト状態を送っている。これは、簡単だ
という長所があるが、多くのアプリケーションにおいて
は、順番が狂ったメッセージを到着したときに処理する
ことができるようにすることによって、帯域幅を温存す
ると共に変更の処理のスピードアップも図ることができ
るような方法で、オブジェクト変更を符号化することが
できるのが好ましい、ということは明らかである。図4
および5は、中央サーバをどのように利用して本システ
ムが高い信頼性で動作するかを要約している。図6ない
し図11では、オブジェクトの更新を符号化する体系の
詳細を説明する。
【0081】この図5に示すネットワークのアーキテク
チャを、示差メッセージおよびオブジェクトをベースに
した修理と結びつけることによって、さらなる利点が得
られる。データへの変更は、そのオブジェクトのどのフ
ィールドが変更されたかを記述するメッセージの形で送
信してもよい、ということが理解されよう。しかし、普
通のオブジェクトのデルタに行う改良は、マルチをベー
スにした示差メッセージング技術を利用することによっ
て達成することができ、その技術においては、それぞれ
のメッセージに十分な冗長情報が含まれており、間にあ
る更新がいくつか失われてしまっている場合であっても
完全なオブジェクト状態を再構成することができるよう
になっている。
【0082】次に図6を参照して、従来技術において、
あるオブジェクトが、それぞれの段階においてオブジェ
クト変更のフィールドを1つまたはそれより多く有して
おり、それぞれのメッセージが直前の段階からの状態の
変更のみを記述していると仮定すると、単一のメッセー
ジM2が失われると、オブジェクトの状態全体を再構成
することができなくなる。この、最も簡単な場合の示差
メッセージングは、シングルベースの示差メッセージと
呼ばれる。シングルベースの示差メッセージが順番が狂
って到着する場合には、それぞれのメッセージはそれよ
り前のメッセージがすべて処理されるまで処理できない
ので、早く到着したものを到着したときに処理するとい
う機会は失われてしまう、ということに注意されたい。
シングルベースの示差メッセージは、TCP等の信頼性
の高いネットワークのプロトコルを背景にしているとき
にのみ有用である。
【0083】次に図7を参照して、単一のメッセージの
損失は何ら問題を起こさない、デュアルベースの示差メ
ッセージを説明する。例えば、M2が失われているまた
は遅れている場合であっても、M3は処理することがで
きる、というのも、M3は、M1における状態とM2に
おける状態の両方に関してその段階におけるそのオブジ
ェクトの状態を記述しているからである。
【0084】次に図8を参照して、F1ないしF6の6
つのフィールドを有するオブジェクトが時間T1ないし
T5における一連の変更を受けている、ということがわ
かる。この表では、それぞれの時間段階におけるこのオ
ブジェクトの完全な状態がわかる。
【0085】次に図9を参照して、これは、図8のオブ
ジェクトの、時間T4における、完全な記述である。そ
れぞれのフィールドの値は指定されている。
【0086】次に図10を参照して、これは、図8のオ
ブジェクトの、時間T4における、時間T3に関する、
シングルベースの示差記述である。この場合、新しい状
態は、フィールドF3が値Cに設定されていること以外
は、直前の状態である。
【0087】次に図11を参照して、図8のオブジェク
トの示差状態記述を示し、これは、時間T4における、
これより前の時間T1、T2、またはT3のうちのどれ
かに関する状態を記述している。これらの前の3つの状
態のうちのいずれかを記述するメッセージを受け取った
いかなるコンピュータも、この記述を適切に復号するこ
とができる。この記述のこういった受け取り手は、それ
によって、そのコンピュータにおいて前の状態としてど
れがあろうとも、そこからスタートして、フィールドF
3をCに設定し、フィールドF5をHに設定することに
よって、新しい状態に達する、と教えられる。この示差
状態記述は、図9のフルの状態記述よりもはるかにコン
パクトであり、信頼性の低いネットワークでの送信に
は、図10のシングルベースの示差記述よりもはるかに
有用である、ということが理解されよう。
【0088】一実施例においておよびより詳細には、参
加者は、サーバSおよびn個の通信するプロセスP1・
・・Pnである。本システムが用いるメッセージングの
プロトコルは、本明細書においては、対話型共有転送プ
ロトコル(Interactive Sharing
Transfer Protocol:ISTP)、と
呼ぶことに注意されたい。それぞれのプロセスPjは、
多数のオブジェクトを所有しており、Pjがそれらのオ
ブジェクトを変更するときはいつでも、そのオブジェク
トの記述を送出する。
【0089】それぞれのプロセスは、他のプロセスか
ら、他のプロセスが所有しているオブジェクトについて
のメッセージを受け取る。
【0090】それぞれのプロセスPjは、サーバSとの
1対1のTCP接続を有している。これは、制御情報を
高い信頼性で通信するために用いられる。さらに、マル
チキャスト通信グループ内のプロセスPjは、Sが選択
したアドレスを用いてマルチキャスト通信に参加する。
【0091】この解決策には、いくつか重要な部分があ
る。すなわち、オブジェクト状態に関する情報の通信方
法、マルチキャストのメッセージの送出および受け取り
方法、各プロセスが知っておくべきものを知る方法、メ
ッセージ損失の修理方法、各プロセスの通信グループへ
の参加方法、各プロセスの通信グループからの退出方
法、である。
【0092】これらの各部分のそれぞれを、以下に別個
に説明する。説明の一部として、以下の3種類のメッセ
ージを用いる。 1.オブジェクト状態 − オブジェクトの状態を記述 2.オブジェクト状態要約 − 各プロセスが知ってお
くべきものを指定 3.場所入力 − 新しいプロセスがグループに参加す
るときの各種セットアップ
【0093】a.オブジェクト状態に関する情報の通信
方法 1つまたはそれより多いオブジェクトの状態は、オブジ
ェクト状態メッセージ内で通信される。オブジェクト状
態メッセージのフォーマットは、以下のとおりである。
オブジェクト状態メッセージフィールド:Messag
eTypeID:16ビット − 値1は、これがオブ
ジェクト状態メッセージであることを示す。
【0094】SenderID:32ビット − 送り
手のspComを識別する圧縮GUID。
【0095】SendTime:32ビット − 1週
間を法とする、ミリ秒での送られる時間メッセージ。
【0096】NumberOfGUIDPrefixe
s:16ビット − GUIDTableにおける接頭
部Gの数。
【0097】NumberOfDescription
s:16ビット − メッセージの本体(body)の記述D
の数。
【0098】GUIDTable:G個のGUIDPr
efix入力 − それぞれ96ビット。
【0099】TableEntryIndex:16ビ
ット − 圧縮GUIDに用いる。
【0100】GUIDPrefix:80ビット −
メッセージにおいて多くのGUIDに潜在的に共有され
ている接頭部。
【0101】Descriptions:D個のオブジ
ェクト記述 − 長さはまちまち。
【0102】それぞれのISTPメッセージは、与えら
れたメッセージがどの種類のISTPメッセージかを指
定する16ビットのメッセージのタイプで始まる。さら
なるタイプを用いてISTPプロトコルの拡張バージョ
ンを支援することができるように、十分なビット数が設
けられている。
【0103】SenderIDは、そのメッセージの送
り手を識別する、spComオブジェクト(以下参照)
のGUID(以下参照)である。すべてのISTPメッ
セージは、自らがどんな通信接続上で受け取られたかを
知る必要なしに十分に解釈できるという特性を有してい
る、ということに注意されたい。
【0104】SendTimeは、1週間、すなわち6
04,800,000ミリ秒、を法とする、そのメッセ
ージが送られたときのミリ秒での局所時間である。Nu
mberOfGUIDPrefixesは、GUIDT
ableにおける入力数を指定する。
【0105】NumberOfDescription
sは、記述されるオブジェクトの数を指定する。
【0106】GUIDTableは、そのメッセージの
残りの部分における、SenderIDを含む、GUI
Dのコンパクトな表示ができる(allow for)入力を含
む。
【0107】Descriptionsは、絶対または
相対のどちらかの記述を用いてオブジェクトの現在の状
態を記述する(以下参照)。
【0108】オブジェクト記述を理解するためには、ま
ず、ISTPにおけるオブジェクトについての以下の事
実を理解しなければならない。様々なアプリケーション
は、多くの種類のオブジェクトを用いると思われる。特
に、新しい種類のオブジェクトを規定することができる
ようになっている。しかし、ISTPにとって重要なオ
ブジェクトのタイプはほんの少しである。spオブジェ
クトとspClassオブジェクトは、最も重要なもの
のうちの2つである。
【0109】b.GUID ISTPにおけるすべてのオブジェクトは、グローバリ
・ユニーク・IDすなわちGUIDによって識別され
る。ISTPは、空間においても時間においても唯一で
ある、96ビット、すなわち12バイト、3語のGUI
Dを用いている。これは、IPv6の下では192ビッ
トに拡張することができる。GUIDは、以下の2つの
部分から成っている。
【0110】PROCESS ID:ISTPプロセス
に対応して80ビット。これは、IPv6の下では17
6ビットに拡張することができる。この値は、新しいプ
ロセスがスタートするときにはいつでも割り当てられ、
例えば1世紀の間、空間においても時間においても唯一
であることが保証されている。この値は、不透明(opaqu
e)である。プロセス識別子しか有していなければ、ある
プロセスについて何らかの情報を得るのにいかなる方法
も指定されない。
【0111】プロセス識別子0、ゼロ、は、組み込みオ
ブジェクト−−−すなわち、組み込みクラス、を指示す
るのに割り当てられている。
【0112】OBJECT ID:16ビット。IST
Pプロセスは新しいオブジェクトを作り出すので、プロ
セス識別子を一定にしておいて名前のオブジェクトID
部分を変更することによって、新しいオブジェクトの名
前を生成する。名前は再使用されることはない。いった
ん2^16個の名前が生成されると、プロセスIDが変
更される。
【0113】ISTPは、GUIDのプロセスID部分
がどのように生成されるべきかを特定するものではな
い。しかし、妥当と思われる方法の1つは、以下のよう
にインターネットアドレスを用いて80ビットのプロセ
スIDを作り上げることである。これは、IPv6の下
では176ビットに拡張することができる。
【0114】INTERNET ADDRESS −
ISTPプロセスがその上で実行されているマシンのも
の。現在は32ビットである。これは、IPv6の下で
は128ビットに拡張される。
【0115】PORT NUMBER − 16ビッ
ト。ISTPプロセスは、始動するときには、ポートに
取り付けられる。このポートは、マシン上の多数のプロ
セスを識別するのに用いられる。
【0116】GENERATION COUNTER
− ISTPプロセスが1つの与えられたマシン上でス
タートするごとに異なっていることが保証される32ビ
ット。最初は近似値(approximation)として、これに秒
での時間を用いるかもしれない。しかし、後には、信頼
されるサーバとのファイルシステムの相互作用および/
または通信をも含む何かを用いるべきである、というの
も、時計は止まったり逆向きに設定されたりし得るから
である。
【0117】生成カウンタは秒での時間であるので、プ
ロセスが再スタートする場合に名前が思いがけなく衝突
してしまう危険を冒すことなく、1秒につき1回インク
リメントすることができる。これによって、プロセス
は、1秒につき2^16個のオブジェクトの名前を用い
ることができる。
【0118】メモリおよび通信の効率を向上させるため
に、GUIDは常に以下の圧縮された形式で表される。
【0119】PROCESS ID TABLE PO
INTER:プロセスIDのテーブルへの入力を示す1
6ビット。プロセスIDテーブルポインタ0、ゼロ、
は、組み込みオブジェクトを指示するのに割り当てられ
ている。
【0120】OBJECT ID:オブジェクトの16
ビットのオブジェクトID。
【0121】プロセスIDのテーブルは、圧縮されたオ
ブジェクトの名前におけるプロセスIDテーブルポイン
タを解釈するのに用いられる。世界モデルのコピーにお
いて、プロセスIDテーブルポインタは、このテーブル
へのインデックスである。メッセージにおいて、テーブ
ル全体のうちでそのメッセージにおける圧縮されたオブ
ジェクトの名前を理解するために必要な部分は、プロセ
スIDテーブルポインタ/プロセスIDのペアのベクト
ルとして、散在して(sparsely)表される。
【0122】いくつかのオブジェクトメッセージを含む
オブジェクト状態メッセージにおいては、プロセスID
テーブルポインタ/プロセスIDのペアを統一するベク
トルは1つしかない、ということに注意されたい。
【0123】上記GUIDは、名前が衝突しないか心配
する必要なく1つを無限に用いることができるように設
計されている。しかし、そうしないことが実際的には重
要である。GUIDをISTPにおいて用いる方法の重
要な利点の1つは、概ね非常に大きいものであったとし
ても、実際の通信に必要な帯域幅は大きくない、という
ことである。この利点は、1つの与えられたプロセスが
所有する名前はほとんど全部が同じプロセスIDを有し
ているという前提に決定的に依存している。
【0124】極端な話として、もしすべてのオブジェク
トがそれぞれ異なるプロセスIDを有しているとするな
らば、帯域幅の使用量は、必要な量よりもはるかに大き
くなるであろう。もし名前が永久的に使用されるとする
ならば、時間が経過すると共に、プロセスIDの使用中
の名前に対する割合は1.0に向かって激しく上昇し、
結果が不利なものになる。このようにはせずに、可能な
ときにはいつでも、機会を利用して、古いオブジェクト
を除去して新しいオブジェクトを作り出し、それに現在
活動状態の名前のスペースからの新しい名前を付けるべ
きである。
【0125】c.共有オブジェクトのフィールド それぞれの共有オブジェクトは、クラスspのサブクラ
スの1例である。クラスspは、それぞれの共有オブジ
ェクトが以下のフィールドを含んでいるということを指
定しており、これらのフィールドはオブジェクト記述の
基礎である。すべての共有オブジェクトは、プロセス間
で共有される以下のフィールドを有している。
【0126】Counter:16ビット − オブジ
ェクトが変化するときにはいつでもインクリメントされ
る。
【0127】DescriptionLength:1
6ビット − バイトでの共有データの全大きさ。
【0128】Name:32ビット − そのオブジェ
クトについての圧縮GUID。
【0129】Class:32ビット − そのオブジ
ェクトのクラスについての圧縮GUID。
【0130】Owner:32ビット − 所有者であ
るプロセスを識別する圧縮GUID。
【0131】ShareBits:16ビット − 論
理値を表す。
【0132】IsRemoved:最低位の桁のビッ
ト、ビットゼロ − 1である場合には、そのオブジェ
クトが除去されてしまっていることを示す。
【0133】カウンタ値は、オブジェクトAの状態の識
別子として用いられる。Aの何らかの共有部分が修正さ
れる時ごとに、Aのカウンタがインクリメントされる。
【0134】DescriptionLengthは、
そのオブジェクト内のデータのフルの記述がどれくらい
長くなければならないかを指定する。以下で明らかにな
るとおり、これは、13ビットの無署名の(unsigned)整
数に限定されている。記述の長さが13ビットであるの
で、オブジェクトの長さは4kバイトにすることができ
る。フルの記述は、単一のUDPパケットにぴったり入
るように限定されているので、この長さで全く十分であ
る。
【0135】他のオブジェクトのフィールドから、およ
び様々なISTPメッセージにおいて、1つのオブジェ
クトを一意的に(uniquely)指すのに用いられるオブジェ
クトの名前は、GUIDである。
【0136】それぞれのオブジェクトは、上述のものに
加えて多くのフィールドを有している。Classは、
そのオブジェクトのフィールド全体がどんなものである
かを記述する、マシンが操作可能なspClassのオ
ブジェクトである、以下参照。ISTPは、任意のアプ
リケーションに特有のオブジェクトを、そのspCla
ss記述を参照して操作することができる。
【0137】オブジェクトの所有者は、そのオブジェク
トを所有しているプロセスを一意的に指すのに用いられ
るGUIDである。ここでの説明の見方からは、この唯
一の重要な面は、それぞれのプロセスがどのオブジェク
トを所有しており、そして所有していないかを判定する
ことができるようにしている、ということである。
【0138】ShareBitsは、様々な論理値をコ
ンパクトに表すのに用いられる。こういった値のうち、
ここで関連するのは、最低位の桁のビットただ1つであ
り、これは、オブジェクトが除去されてしまったかどう
かを指定する。
【0139】カウンタのインクリメントおよび比較は、
2^16を法とする算術を用いて行われ、正のカウンタ
値の最大のものから最小値に戻るようになっている。こ
れに対応するために、すべての比較は合同算術を用いて
行われる。すなわち、0<D−C<2^15またはD−
C<−2^15であれば、カウンタCはDよりも小さ
い、すなわち、C<Dである。カウンタ値ゼロは、オブ
ジェクトAについて何も知られていない状態を意味する
のに割り当てられる。1つのオブジェクトについてのカ
ウンタは、1からスタートし、最後までカウントして元
に戻るときには値ゼロをスキップする。
【0140】16ビットの状態カウンタによって、2^
15=32kのオブジェクト状態を正確に配列すること
ができる。1つのオブジェクトについて1秒当たり30
回状態が変化する速度では、これは16分間の変化の値
打ちがある(is 16 minutes worth of changes)。これ
は、ISTPのオブジェクト通信の時間範囲が数秒程度
であることを考えると、非常に長い時間である。
【0141】d.spClassオブジェクト オブジェクトのクラスは、spClassオブジェクト
を用いて記述される。ここではその詳細については説明
せず、spClassオブジェクトはオブジェクトにお
けるすべてのフィールドの位置およびタイプを指定する
というにとどめておく。クラスは、組み込まれているも
のもあるが、大部分はアプリケーションによって規定さ
れている。フィールドのうちの2つのタイプのものは、
特に注意するのに値する。
【0142】他のオブジェクトを指すフィールドは、上
述のようにそういったオブジェクト用の圧縮GUIDを
含む。時間を含むフィールドは、そういった時間を、3
2ビットの整数を用いて表し、その単位は1週間を法と
するミリ秒である。
【0143】それぞれの受け取るプロセスPkは、プロ
セスPjがメッセージMを送る時間からPkがそのメッ
セージを処理する時間の間に通常過ぎ去ってしまう、全
時間の推定値DTjを維持する。
【0144】これは、それぞれの受け取られたメッセー
ジのSendTimeと、そのメッセージが処理される
Pkの場所時間の間の差を観測して、移動平均を計算
し、異常値を無視することによって、計算される。この
推定値DTjは、第1に、PjからPkへのメッセージ
の伝達時間、第2に、メッセージが処理される前のPk
における平均遅延、第3に、PjおよびPkの時計のセ
ッティングにおける絶対差、を意識的に融合している、
ということに注意されたい。最後の要因があるため、D
Tjは負になり得る。
【0145】時間の推定値DTjは、R. C. Waters, Ti
me Synchronization In Spline, MERL TR 96-09, MERL
Cambridge MA, April 1996において説明されているよう
に、Pjの時間枠からPkの時間枠までのオブジェクト
記述において指定された各時間を調整するのに用いられ
る。
【0146】e.フルのオブジェクト記述 フルのオブジェクト記述は、そのオブジェクトについて
のいかなる他の情報にも言及することなく、単独で理解
されることができる。以下の形式を有しているが、すべ
ての記述が、その記述の種類を指定する3ビットでスタ
ートすることに注意されたい。
【0147】フルの記述は、以下のものを含む。
【0148】DescriptionFormatCo
de:3ビット − フルの記述については0に等し
い。
【0149】DescriptionLength:1
3ビット − 記述、従って共有データ、におけるバイ
ト。
【0150】Counter:15ビット − オブジ
ェクトについてのカウンタ値。
【0151】Name:32ビット − オブジェクト
の名前である圧縮GUID。
【0152】Class:32ビット − オブジェク
トのspClassについての圧縮GUID。
【0153】Data:バイト[] − オブジェクト
における他のデータフィールド。
【0154】フルの記述は、問題のオブジェクトからす
べての共有データを単にコピーすることによって構成さ
れる、トリビアルなものである(trivial)。それらは、
反対方向にコピーすることによって解釈しても等しくト
リビアルである。ただ1つ複雑なのは、上述のとおりG
UIDおよび時間を経由して他のオブジェクトへの参照
を処理する(dealing with reference to)、ということ
である。
【0155】f.示差オブジェクト記述 示差記述は、オブジェクトの、1つの状態から他の状態
への変更を記述する。
【0156】示差記述は、以下のものを含む。
【0157】DescriptionFormatCo
de:3ビット − 示差記述については、1。
【0158】BaseCounterDelta:5ビ
ット − 基準オブジェクト状態からのデルタ。
【0159】FirstCode:8ビット − 変化
が起こったところを記述する第1のバイト。
【0160】Counter: 16ビット − オブ
ジェクトについてのカウンタ値。
【0161】Name:32ビット − オブジェクト
の名前である圧縮GUID。
【0162】OtherCodes:バイト[] −
変更の位置を示す残りのバイト。整列を保存するために
4つのグループにする。
【0163】Data:ロング(long)[]: − 変更
を表す新しい語データ。
【0164】BaseCounterDeltaは、ど
のような前の状態に関して、示差記述を復号することが
できるかを指定する。
【0165】BaseCounterDelta =
0の場合には、その記述は単独で解釈することができ
る。
【0166】BaseCounterDelta =
1の場合には、その記述は、直前のオブジェクト状態が
入手可能でなければ、理解することができない。
【0167】BaseCounterDelta =
Nの場合には、その記述は、最後のN個のオブジェクト
状態のうちのいずれかをベースにして解釈することがで
きる。この方法を用いることに伴う不利益は、符号化が
より困難になり、最終サイクルにおいては変化しておら
ずもっと前のサイクルにおいてのみ変化しているデータ
が含まれているかもしれない、ということである。しか
し、利益は、待ち時間が低減され、メッセージの流れ
が、いくつかの記述を損失してしまうということに対し
て強靱である(robust)、ということである。これは、オ
ブジェクトが迅速に動き回っている場合等に用いること
ができるであろう。X−Y−Zの位置のみが変化する場
合には、記述の長さを増大することなく、BaseCo
unterDeltaを非常に大きくすることができ
る。
【0168】バイト変更コードは、以下の形式を有す
る。正のバイトは、最初のものについての開始から残り
のものについての最後の変更後までのオフセットを示
す。負のバイトは、それらの絶対値によって、実行長さ
(run length)を示す。ゼロバイトは、変更バイトの終わ
りを知らせる。1行に2つの負でないバイトがある場合
には、第1のオフセットと関連する長さは1である。特
別な場合として、まさに最初のバイトが負の場合には、
それはまだオフセットとして扱われ、長さは1であり、
変更コードの組は、この1バイトのみから成る。この特
別な場合によって、1語の変更をたった3語で指定する
ことができる。それぞれの変更は、最後の変更の後の語
に関するオフセットとして指定される。データの各語
は、記述内で整列し、バイトコードによって指定される
とおりオブジェクト内にコピーされる。
【0169】例えば、<1 3,−30,1203><
88088><A>は、オブジェクト88088の状態
1203は、状態1200、1201、または1202
から語Aを30*4=120のオフセットで書き込むこ
とによって計算することができるということを指定して
いる。この12バイトのメッセージは、最小示差記述の
一例であり、4バイトの変更を指定する。
【0170】より複雑な例としては、<1 1, 8
0; 1203> <88088><−3,10,0,
0><A><B><C><D>は、オブジェクト880
088の状態1203は、状態1202から、語Aを8
0*4=320のオフセットで書き込み、語Bを81*
4=324のオフセットで書き込み、語Cを82*4=
328のオフセットで書き込み、語Dを93*4=37
2のオフセットで書き込むことによって、計算すること
ができる、ということを指定している。
【0171】この28バイトのメッセージは、16バイ
トの変更を指定する。第1の変更が1つのオブジェクト
内への127語よりも多いものである場合には、実変更
の途中でダミー変更を用いなければならない。同様に、
1語の変更の後の変更は、そのオブジェクトの下に12
7語をさらに動かすことができるのみである。しかし、
各オブジェクトが、なお送らなければならないことが多
いフルの記述が単一のUDPパケットにぴったり入るこ
とができるよう、十分短くなければならないとすれば、
ここには問題はほとんどないであろう。
【0172】示差記述を構成することは、フルの記述を
計算するよりも困難である、というのも、そのオブジェ
クト内のどの語が変化したかを正解に知る必要があるか
らである。BaseCounterDeltaが1の場
合の記述を計算するには、どの語が変化したか、例えば
ビットマップ内に記録されたか(変更された語が示され
る)、を直接知るか、あるいは、直前の状態の記録を得
て、比較することによってどの語が変化したかを明らか
にするか、のどちらかを行わなければならない。上記の
うちのどちらかが与えられれば、示差記述の構成は簡単
で(straightforward)ある。
【0173】BaseCounterDeltaが2の
場合の記述を計算するには、最後の2つの状態変更のう
ちのどちらかによってどの語が変化したかを知らなけれ
ばならない。ある語が変化したがその後その元の値に戻
った場合には、受け取り手が最後から2つ目の状態では
なく最後の状態を入手しているといけないので、そのこ
とはなお記述に含まなければならないということに注意
されたい。
【0174】Nおよびそれより小さいBaseCoun
terDeltaを支援する簡単な方法の1つは、N個
の前の状態変更を要約するビットマップを保管する、と
いうことである。そうすれば、これらは一緒に論理和が
とられて、Nよりも小さいかNに等しいいかなるBas
eCounterDeltaについても、どの語を送る
かの仕様が与えられる。与えられた瞬間に、もっと大き
いBaseCounterDeltaが必要な場合に
は、フルの記述の仕様に頼ることができる。1つのオブ
ジェクトが変更されるごとに、新しいビットマップが計
算されてオブジェクト当たりの待ち行列に保管され、N
個よりも多いビットマップがある場合には、最も古いビ
ットマップが廃棄される。
【0175】示差メッセージを有することによって、記
述におけるGUIDおよび時間の取り扱いが複雑にな
る、というのも、記述内のどこにそれらがあるかを計算
するのがより困難であるからである。しかし、帯域幅を
節約することができるということは、このように余分に
複雑になることを補って余りある。
【0176】示差メッセージの重要な場合の1つは、オ
ブジェクトが除去されたということを指定する、という
ものである。その状況では、重要なのは、IsRemo
vedビットが設定されるということだけである。他の
フィールドの値は無関係である。その結果、BaseC
ounterDeltaが0である短い示差メッセージ
を構成することができる。
【0177】差を示す性質の、特別な種類のフルの記述
を既に有している、ということに注意すべきである。除
去されたオブジェクトに関するメッセージは、オブジェ
クトの破壊を求めるので、フルの状態を含む必要はな
い。そのオブジェクトが除去されるということを指定す
るビットを示せばよいだけである。従って、この情報の
みを含む示差メッセージを送ることができる。
【0178】g.マルチキャストのメッセージの送出お
よび受け取り方法 頻繁なベースで、例えば30〜100ミリ秒ごとに1
回、プロセスPjは、自らが最後にメッセージを送った
ときから変更したすべてのオブジェクトを記述する、1
つまたはそれより多いオブジェクト状態メッセージを送
出する。同じ速度で、プロセスPjは、他のプロセスが
送るオブジェクト状態メッセージを処理する。
【0179】各メッセージは、UDPマルチキャストパ
ケットを用いて送出される。それぞれのメッセージは、
単一のパケットに入れて送られ、それぞれのパケット
は、1つのメッセージのみを含む。用いるアドレスは、
以下に説明するとおり、サーバSによって指定される。
【0180】重要な要求事項の1つは、それぞれのオブ
ジェクト状態メッセージは、単一のUDPパケットにぴ
ったり入らなければならない、ということである。言い
換えれば、最大送信ユニットすなわちMTUよりも小さ
くなくてはならない。MTUの大きさは、送信媒体によ
って決まる。現在MTUは、モデムについての数百バイ
トから、イーサネットについての1,500バイト、そ
してそれ以上までと、様々に幅広い。IPv6の下で
は、最小MTUは600バイトとなろう。
【0181】与えられた瞬間において、どのオブジェク
トも修正されていない場合には、メッセージは送られな
い。変化したオブジェクトがいくつかある場合には、そ
れぞれのメッセージにできるだけ多くの記述が詰め込ま
れる。グルーピング記述では帯域幅の使用量がかなり増
大し、受け取り手における処理性能が改良される、とい
うことに注意されたい。
【0182】帯域幅を最小にするために、可能なときに
はいつでも、示差記述が用いられる。1つのオブジェク
トが最初にそのグループと通信する、すなわち、そのオ
ブジェクトが最初に作り出される、ときには、フルの記
述を用いなければならない。示差記述が可能になった後
は、実用的な場合にはいつでも、そのオブジェクトの最
後の状態のみに関するのではなく、最初のフルのメッセ
ージまでずっとさかのぼって、またはそれができない場
合には、少なくともいくつかの状態までさかのぼって関
するような、示差メッセージが構成される。
【0183】最後から2つ目の状態をベースにして解釈
することができる示差記述を有することは、すべてのメ
ッセージを受け取る必要があるようなただ1つの状態の
みにさかのぼることと比べて、メッセージが失われるこ
とを許容することができるという点で、明らかに大きな
進歩である。2つよりも多い状態にさかのぼることに
は、利点もあるが、明らかな収穫逓減がある。とは言っ
ても、1つのオブジェクトのある小さな部分が迅速に変
化している場合には、余分にコストがかかることなし
に、多くの状態にわたって解釈することができる示差記
述を有することができるかもしれない。
【0184】UDPは信頼性の高いプロトコルではない
ので、Pjによって送られる1つの与えられたメッセー
ジMは、Pkに、全く到着しないかもしれないし、何度
も到着するかもしれないし、および/またはPjが送る
他のメッセージに関して順番が狂って到着するかもしれ
ない。Pkは、こういった状況のすべてを処理すること
ができなければならない。これは主に、メッセージ当た
りのベースではなく、オブジェクト当たりの記述をベー
スにして行われるが、1つ重要なことが、全体としての
メッセージについて行われる。
【0185】受け取り手のプロセスPkは、それぞれの
他のプロセスPjから受け取るメッセージの送りおよび
受け取りの時間の経過を追っている。PkがPjから、
Pjから既に受け取っている何か他のメッセージよりも
早いSendTimeを有するメッセージMを受け取る
場合には、Mは順番が狂って受け取られている。2つの
メッセージが同じSendTimeを有している場合に
は、同じ時に送られており、ISTPにとっては両者の
順番は問題ではない。
【0186】ISTPのパラメータの1つは、最大遅延
MaxDelayであり、これは通常数秒程度である。
遅れて到着するメッセージMが、MよりもSendTi
meが遅い同じ源から何らかのこれまでに到着したメッ
セージからMaxDelay秒よりも遅れて到着する場
合には、Mは処理されることなく廃棄される。メッセー
ジの遅れについてこのように制限を課すことは、以下に
説明する多くの理由により重要である。
【0187】一例として、以下の表を検討する。
【0188】 表1 Pjにおけるメッセージの 	Pkにおけるメッセージの SendTime 	到着時間 1 11 2 17 3 13 4 17 5 15 6 16
【0189】2および4において送られたメッセージは
順番が狂って到着する。MaxDelay=3の場合に
は、4において送られたメッセージは、到着するとまだ
用いることができる。しかし、2において送られたメッ
セージは、3において送られたメッセージよりも4秒後
に到着するので、廃棄される。MaxDelay=5の
場合には、両方のメッセージを用いることができる。
【0190】MaxDelay=1の場合には、両方の
メッセージを拒絶しなければならない。メッセージにお
ける時間は、1週間を法として表されるので、上記を検
出することができるのは、3.5日以上遅れて到着する
メッセージはないという仮定にかかっている。これは、
測定される遅れが通常数秒に過ぎないとすれば、非常に
無難な仮定である。
【0191】この遅れによって、MaxDelayが限
定され、入メッセージについて履歴情報を記録するのに
必要なテーブルの大きさが限定される、ということに注
意されたい。特に、MaxDelay秒よりも前に受け
取ったメッセージは、このテーブルに1つよりも多く存
在する必要はない。
【0192】1つのメッセージNがMaxDelay秒
よりも前に受け取られた場合には、そのことによって、
Nよりも前に送られたいかなるメッセージも、到着時に
廃棄される。Nよりも遅れて送られ、これもまたMax
Delay秒よりも前に受け取られた何か他のメッセー
ジN’がある場合には、Nはテーブルから外してもよ
い、というのも、Nによってなされるいかなるメッセー
ジ廃棄も、N’によってもまたなされるからである。例
えば、上の例でMaxDelay=3の場合には、時間
16において保持される必要のある情報は、3、5、6
において送られたメッセージについての情報のみであ
る。
【0193】1つのメッセージが、遅れすぎているとい
う理由によって廃棄されない場合には、その中のオブジ
ェクト記述が、以下のとおり個別に処理される。
【0194】与えられた記述Dが、Pkにおけるオブジ
ェクトについての現在のカウンタ値よりも小さいか、ま
たはそれと等しいカウンタ値を有する場合には、Dは無
視される。通常これは、Dが順番が狂って到着したり1
回よりも多く到着したメッセージの中にある場合に起こ
る。
【0195】Dにおけるカウンタ値が、Pkにおけるオ
ブジェクトについての現在のカウンタ値よりも大きい場
合には、またはそのようなオブジェクトがない場合に
は、D内の情報が以下のとおり用いられる。Dがフルの
記述の場合には、常に即座に処理して、問題のオブジェ
クトを更新したり作り出したり除去することができる。
示差記述の場合には、現在既知のオブジェクト状態に関
して解釈可能である限りは、即座に処理することができ
る。そうでない場合には、まだ到着していない何か間に
入る記述がなければならない。即座に解釈可能でない記
述は、オブジェクト当たりの待ち行列に保管され、後に
欠けている間に入る記述が到着すると用いられる。
【0196】いったん1つの記述が用いられると、関連
するオブジェクト記述の待ち行列が調査され、現在用い
ることができる記述が他にないか調べられる。即座に用
いることができない示差記述は、単に廃棄する、という
ことを選択することもできる。このほうが簡単であろう
が、本システムの、順番が狂ったメッセージを利用する
能力が低減しよう。示差記述がいくつかの状態にわたっ
ている場合には、このようにしても問題がないかもしれ
ない。
【0197】示差記述がいくつかの状態にわたると、1
つの記述を、その直前の記述が失われたり遅延したメッ
セージ内にある場合であっても、用いて即座に行動する
ことが可能なことが多い。こうすることによって、失わ
れたおよび遅延したメッセージについて欠けていること
を検出したり再送する必要なしに、そういったメッセー
ジによる被害が制限される。
【0198】特に説明が必要な問題の1つは、共有オブ
ジェクトが除去される時に起こる事柄である。1つのオ
ブジェクトが除去される場合には、常に解釈することが
できる示差記述を用いることができる、というのも、そ
のオブジェクトに関して関連する唯一の事実は、それが
除去されるということだからである。いったんオブジェ
クトが除去されると、潜在的な問題が起こり得る。
【0199】除去されたオブジェクトAのすべての形跡
が、プロセスPkから除去されてしまったと仮定する。
もしそうなら、次にAの順番の狂ったフルの記述が受信
されると、Aの創造を指定するメッセージのように見
え、AがPkのメモリ内に誤って再び現れてしまうであ
ろう。これを避けるために、MaxDelay秒の間、
Aの除去についての記録が維持され、そのように遅れて
到着してきた記述があっても、うまく無視することがで
きるようになっている。もし遅れを制限するMaxDe
layがないとすると、順番の狂った記述の拒絶を支援
するために、Pkは、除去されたすべてのオブジェクト
を永久に覚えておかなければならないであろう。
【0200】上記のマルチキャストのオブジェクト状態
メッセージは、グループ内の他のプロセスだけではな
く、サーバSも受信する、ということに注意されたい。
【0201】様々なプロセスとちょうど同じように、S
はこのメッセージを用いて、すべてのオブジェクトの現
在の状態の記録を維持する。
【0202】h.各プロセスが知っておくべきものを知
る方法 プロセスPkが知っておくべきものを知らせるために、
サーバは、MaxDelay秒ごとに1回、定期的なオ
ブジェクト状態要約メッセージを送出する。
【0203】オブジェクト状態要約メッセージのフィー
ルドは、以下のとおりである。
【0204】MessageTypeID:16ビット
− 値2が、これがオブジェクト状態要約であるとい
うことを示す。
【0205】SenderID:32ビット − 受け
取り手のspComを識別する圧縮GUID。
【0206】SendTime:32ビット − 1週
間を法とする、ミリ秒での送られる時間メッセージ。
【0207】NumberOfGUIDPrefixe
s:16ビット − GUIDTableにおける接頭
部Gの数。
【0208】NumberOfNewEntries:
16ビット − 本体における新しいオブジェクト入力
の数N。
【0209】NumbeOfObjectChange
s:16ビット − オブジェクトの変更の数C。
【0210】GUIDTable:G個のGUIDPr
efix入力 − それぞれ96ビット。
【0211】GUIDTableEntryInde
x:16ビット − 圧縮GUIDに用いる。
【0212】GUIDPrefix:80ビット −
メッセージにおいて多くのGUIDに潜在的に共有され
ている接頭部。
【0213】NewEntries:N個の新しいオブ
ジェクト要約 − それぞれ64ビット。
【0214】ObjectTableIndex:16
ビット − オブジェクトについてのテーブル位置を指
定。
【0215】CounterValue: 16ビット
− オブジェクトについてのカウンタ値。
【0216】CompressedGUID:32ビッ
ト − 新しいオブジェクトを識別。
【0217】ObjectChanges:ショー
ト[] − C個のオブジェクト変更要約。
【0218】メッセージのタイプ、SenderID、
SendTime、NumberOfGUIDPref
ixes、GUIDTableは、以下のことを除けば
オブジェクト状態メッセージと全く同じである。すなわ
ち、メッセージのタイプの有する値が異なり、Send
erIDが、オブジェクト状態要約メッセージを受け取
るプロセスPkが最初にサーバSとコンタクトしたとき
にPkが用いたspComである。従って、Sende
rIDは、送り手を間接的に識別するに過ぎない。
【0219】NumberOfNewEntries
は、メッセージのNewEntriesの部分において
記述されている新しいテーブル入力の数を指定する。
【0220】NumberOfObjectChang
esは、メッセージのObjectChangesの部
分において記述されているオブジェクト変更の数を指定
する。
【0221】NewObjectのフィールドは、Sか
らの最後のオブジェクト状態要約メッセージの後どのよ
うな新しいオブジェクトが現れてきたかを記述する。
【0222】ObjectChangesは、Sからの
最後のオブジェクト状態要約メッセージの後どのような
オブジェクトが変化したかを記述する。これについては
以下で詳細に説明する。オブジェクト状態要約メッセー
ジのペイロードを説明する前に、それぞれのプロセスP
kにおいて維持されているオブジェクトテーブルを説明
することが必要である。このテーブルは、存在するそれ
ぞれのオブジェクトの圧縮GUIDおよびその関連する
現在のカウンタ値をリストしている。このテーブルは、
どのオブジェクトが存在するか、および、それらのオブ
ジェクトについて送出された最後のオブジェクト状態要
約メッセージ内のカウンタを、正確にコンパクトに要約
している。
【0223】同一のテーブルが、通信グループにおける
サーバSおよびそれぞれのプロセスPk内に維持されて
いる。後のセクションで説明するように、1つのプロセ
スPkについてのオブジェクトテーブルは、最初は、P
kが通信グループに参加するときにどのようなオブジェ
クトが存在するかを知ることの一部として構成される。
Sは、そのオブジェクトテーブルの自らのマスターコピ
ーを、オブジェクトについての新しい情報を知る度ごと
に更新することによって、インクリメントして構成す
る。
【0224】オブジェクト状態要約メッセージは、オブ
ジェクトテーブルにおける変更を指定する、示差タイプ
のメッセージである。要約メッセージを用いて、それぞ
れのPkにおけるオブジェクトテーブルの、Sにおける
テーブルとの同期が保たれ、従って、それぞれのPk
に、オブジェクトすべてについて最新情報を有していな
いかが尋ねられる。
【0225】NewEntriesのフィールドは、オ
ブジェクトテーブルのインデックス、CounterV
alues、およびCompressedGUIDsの
3倍量(triples)を含んでいる。これは、示されたデー
タで新しい入力が作り出されるということを指定してい
る。前に廃棄された入力は、できるだけ多く再使用され
る。動的テーブル拡張が必要であるかもしれない。
【0226】新しいオブジェクトが現れるのは、オブジ
ェクトが変化するよりも頻度がずっと低い事象であると
思われる。1つのオブジェクトが単一の時間間隔内で現
れて消えていく、ということは、可能性としてはある
が、非常にまれなことである。その状況では、除去され
たオブジェクトに対応するカウンタ値を指定する新しい
オブジェクト入力があるであろう。
【0227】なんらかの理由で、新しい入力が指定する
ものが、現在のエントリーの1つと衝突してしまう場合
には、新しい方の入力情報が、現在の入力に取って代わ
る。サーバがこれを用いて、1つのプロセス内で−−−
例えば、再初期化の間に、オブジェクトテーブルにおい
て任意に変更を行うことができる。
【0228】ObjectChangesのフィールド
は、最もコンパクトになるように設計されている。一連
のバイトコードを用いて、オブジェクトについてのCo
unterValuesにおける変更を指定する。バイ
トは、以下のように復号される。
【0229】コードには、コンパクトコードとフルコー
ドという、2つの基本的な種類がある。
【0230】事例A:1つのコードの最高位の桁のビッ
トが0である場合には、第1のバイトを用いて、インデ
ックスされたオブジェクトと関連するカウンタがインク
リメントされる。用いるインデックスは、第2の無署名
のバイトを、用いる最後のテーブルインデックスに加え
ることによって、計算される。テーブルインデックスは
ゼロからスタートする、ということに注意されたい。
【0231】事例B:1つのインデックスコードの最高
位の桁のビットが1である場合には、第1の2つのバイ
トは、用いる最後のテーブルインデックスから減じるデ
ィクレメントとして解釈される。そして、次の2つのバ
イトは、インデックスされたオブジェクト入力について
の絶対カウンタ値として用いられる。テーブル内の2^
15個以上の入力をスキップするために、2つのフルの
入力を一緒につなぎ合わさなければならない。その第1
のものは、関連するCounterValueを変化さ
せずにおく。上のAとBのいずれの事例においても、コ
ードのカウンタ部がゼロである場合には、オブジェクト
テーブル内のインデックスされた入力は廃棄されるべき
であるということが示されている。
【0232】事例Bが有用であるためには、通常1つの
テーブル内のオブジェクトの少なくとも数パーセントは
変化しており、変更されなければならない入力は合理的
に互いに近くにあるという事実に依存している、という
ことに注意されたい。さらに、2つのオブジェクト状態
要約メッセージ間で127より多くカウンタが増加する
ことはありそうにない、という事実にも依存している。
1秒当たり30個の変更がある場合には、255個の変
更を行うには、8秒以上必要である。
【0233】事例Bが適用可能であり、作られなければ
ならない新しいオブジェクト入力がない場合には、オブ
ジェクト状態要約メッセージは、28バイトのヘッダを
有し、−SenderIDについて1つのGUIDPr
efixが必要である−従って、28+2Nバイトのみ
を使ってN個の変更されたオブジェクトを記述すること
ができる。
【0234】もし、100個のオブジェクトが頻繁に変
化しており、オブジェクト状態要約メッセージが1秒に
1回送出されているとすると、これによって、Sからそ
れぞれのプロセスPjに1.8kbpsのトラヒックが
生じることになる。
【0235】オブジェクト変更符号化の一例として、以
下の<2 8,0 5,20 100,−1000 4
4555>を検討する。
【0236】これは、8番目のテーブル入力はカウンタ
を2だけインクリメントするべきであり、13番目のテ
ーブル入力は廃棄されるべきであり、113番目のテー
ブル入力はカウンタを20だけインクリメントするべき
であり、1113番目のテーブル入力はカウンタを45
55に設定するべきである、ということを指定してい
る。オブジェクト要約メッセージは、以下のように処理
される。Pkは、新しいオブジェクト入力がもしあれば
それを処理する。これらの入力によって、新しいオブジ
ェクトテーブル入力を作り出すことが指定される。S
は、これらの入力の位置を探し出し、可能なときにはフ
リーのスロットを再利用できるように、しかしながらま
だ使用中の以前から存在する入力とは衝突しないように
する。新しい入力は、指定されたインデックス、カウン
タ、およびGUIDで作り出される。
【0237】次に、それぞれのオブジェクト変更入力
が、以下のように処理される。その入力が、オブジェク
トAが変化したということを指定している場合には、局
所オブジェクトテーブルにおけるCounterVal
ueが更新される。または、オブジェクト変更が、その
入力が廃棄されるべきであるということを指定している
場合には、その入力は廃棄される。
【0238】廃棄される入力は、ゼロのGUIDおよび
CounterValuesを与えられることによって
タグがつく、ということに注意されたい。また、テーブ
ル入力を廃棄することは、オブジェクトを除去すること
とは非常に異なる、ということにも注意されたい。オブ
ジェクトAが排除される場合には、このことは、Aが排
除されるということを指定するオブジェクト記述によっ
て指定される。この除去の次に、サーバは結局、関連す
るオブジェクトテーブル入力を廃棄するが、そうするま
でにサーバはかなりの時間待機するべきである。特にサ
ーバは十分長い時間待機して、プロセスPkがAが除去
されたことを知ることができるようにするべきである。
【0239】特に、Sが、1つのオブジェクトが除去さ
れた後そのテーブル入力を再利用するまでに10*Ma
xDelay程度の時間待機する、ということが提案さ
れる。このようにすると、かなりの確率で、そのテーブ
ル入力が再使用される前にそれぞれのプロセスPkがそ
のオブジェクトが除去されたということを知ることが保
証されるであろう。しかし、この情報を得ていないプロ
セスがあるとしても、以下で説明する、オブジェクトテ
ーブル入力を有しないオブジェクトを除去する機構のた
めに、そのオブジェクトはいずれにせよ結局は排除され
る。
【0240】場所オブジェクトテーブルにおけるCou
nterValueが変更される度ごとに、以下のチェ
ックが行われる。Pkが、そのCounterValu
eCが変化していないオブジェクトAを所有していない
場合には、Pkは、自らがAについての最新情報を有し
ているかどうかをチェックして調べる。PkがAについ
て全く知らない、またはAについてもっと小さいカウン
タ値しか有していない場合には、PkはSに、次のセク
ションにおいて記述された最新情報を求める要求を送
る。Pkは、もっと大きいカウンタ値を有しているかも
しれない、ということに注意されたい、というのも、A
の所有者から、Sからの要約にはまだ含まれていない情
報を有しているかもしれないからである。
【0241】PkがAについて状態Cであるオブジェク
ト状態要約メッセージMを受け取るためには、Aを所有
するプロセスPjは、Sが受け取り処理した、Aが状態
CであるメッセージNを送出していなければならない。
Pkは、メッセージをPjからSへ、そして次にSから
Pkへと送るには、常にメッセージをPjから直接Pk
に送るよりも長い時間がかかるという仮定の下に、Mを
受け取る前にNを受け取って処理できているはずであ
る。
【0242】Pkが、そのCounterValue
Cが変化してしまったオブジェクトAを所有している場
合には、オブジェクト状態要約は、PkによってSに送
られた情報の受け取りの肯定応答としての役割をする。
Pkは、Aが除去されているとしても、C以上または同
等のCounterValueを知っていなければなら
ない。
【0243】Pkがもっと大きいCounterVal
ueを有している場合には、Aについて送出された最新
のメッセージが失われてしまい、従ってSに達しなかっ
たかもしれない。または、そのメッセージは送られてい
る途中であるが、オブジェクト状態要約メッセージが作
り出されるよりも前にはSには到着していなかっただけ
なのかもしれない。Pkは、これら2つの状況のうちの
どちらが一番可能性があるかを判断しなければならな
い。Pkは、自らとSの間のメッセージの伝達時間を推
定してそれをベースにしてこれを行うことができる。現
在のインターネット上では、この伝達時間は非常に長い
ものになり得る、ということに注意されたい。Pkが、
メッセージが失われていると結論を出した場合には、P
kは次のセクションにおいて説明するとおりそのメッセ
ージを再送する。Pkはまた、自らが所有するオブジェ
クトについてオブジェクトテーブルに全く入らない情報
を有している場合にも、メッセージが失われていないか
どうかを検討しなければならない、ということに注意さ
れたい。
【0244】PkがオブジェクトAを除去する場合に
は、Aが除去されたということをSが知っているという
肯定応答を受け取るのにどれだけ長い時間が必要であっ
ても、この事実を覚えておかなければならない、という
ことに注意されたい。このことは通常、Pkが順番の狂
った記述を拒絶することのみを行っているとするならば
その場合に必要なよりもずっと長い間、Aが除去された
ということを覚えておくということを必要とする。Pk
が、肯定応答を得る前にAについて忘れてしまったり、
除去を指定するメッセージがどういうわけかSに到着し
なかった場合には、次のオブジェクト状態要約メッセー
ジがAが誤って再び現れるようにしてしまい得る。
【0245】オブジェクトテーブルが用いられる最後の
方法は、Pkの世界モデル内にはあるがテーブル内には
ないオブジェクトに関する。オブジェクトAが存在する
が、テーブル入力は有していないと仮定する。これは、
AがPkまたは他のプロセスによって作り出されたばか
りであって、まだAがオブジェクト状態要約メッセージ
内に存在していない場合には、普通に起こることであ
る。しかし、この状況は長くは続かないであろう。
【0246】PkがAを所有している場合には、Pkは
結局はAについての情報をSにTCPを経由して送るの
で、問題は解決されよう。
【0247】PkがAを所有しておらず、しかしながら
かなりの時間、例えば10*MaxDelay、の間オ
ブジェクトテーブルにないままである場合には、Aはど
ういうわけか誤った方法で生じている。このようなこと
になり得る一連の事柄は込み入っており、どのようなプ
ロセスがどのようなオブジェクトを所有しているかにつ
いて矛盾した情報を様々なプロセスが有する瞬間の間に
プロセスがクラッシュする等のことが含まれている。い
ずれにせよ、Pkは、Aを自らの世界モデルから除去す
ることによってこの状況を修正する。何らかの理由によ
って、Aが本当にその世界モデル内にあるべきである場
合には、Aは結局はオブジェクト状態要約に入り、再び
現れる。
【0248】上記の機構は、すべてのプロセスが結局は
どのようなオブジェクトが存在しているかについて同意
することを確かめる最後の手段として、ISTPに含ま
れている。
【0249】上記のものの重要なパラメータの1つは、
オブジェクト状態要約メッセージが送られる頻度であ
る。修理の素早さと使用する帯域幅の間にトレードオフ
がある。
【0250】要約の間隔が非常に小さい、例えば1秒の
何分の1かである、場合には、修理は非常に素早く行わ
れるが、その要約を送るのにはかなりの量の帯域幅が用
いられ、おそらくさらに悪いことには、しないほうが具
合がよい修理、というのもすぐに古くなるからである、
を行うために、資源が拡張される。
【0251】オブジェクト状態要約自体に用いられる帯
域幅は、変化したり新しく付け加えられたオブジェクト
がないとサーバが考える場合には全く要約を送らないよ
うにすることによって、低減することはできる。しか
し、これを行うと、各プロセスは、オブジェクト状態要
約メッセージがないことから自らが送っている情報がS
に達していないのではないかと推測する準備ができてい
なければならない。
【0252】要約の間隔が非常に大きい、例えば何秒も
であるばあいには、修理は適時にはならないが、要約メ
ッセージと修理の両方に用いられる帯域幅は最小にな
る。
【0253】パラメータであるMaxDelayを用い
て、要約の間隔が制御される、というのも、両方の間隔
が同じであることは道理にかなっているからである。順
番が狂ったメッセージについて情報を覚えておく見方か
ら、MaxDelayを大きくしてもコストはほとんど
かからない。一方で、明示の修理が行われるよりも長い
待ち時間で順番の狂ったメッセージを取り扱っても、そ
れにはもしあるとしてもほとんど価値がない。特定のネ
ットワークおよびアプリケーション環境における実験の
みが、MaxDelayの最適値を生み出すことができ
る。しかし、すべてのものが1から数秒の値であるのが
最良であると思われる。オブジェクト状態要約メッセー
ジはインクリメンタルであるので、自らが100%の信
頼性で通信される場合にのみ信頼性を保証する。
【0254】TCP輸送を行うコードは、十分留意して
これを保証しなければならない。TCP通信に何らかの
割り込みが起これば、これは通信におけるブレークとし
て報告されて続いて完全な再スタートおよび再初期化が
行われるようにしなければならない。
【0255】i.メッセージ損失の修理方法 プロセスPjが送るUDPメッセージは、途中で失われ
るかもしれないし、他のプロセスPkに向かっているか
もしれない。この2つの場合では、損失の修理方法が異
なる。
【0256】上で触れたように、プロセスPjは、自ら
が所有するオブジェクトAについて自らが送出した1つ
またはそれより多い記述が、そういった記述がSからの
オブジェクト状態要約メッセージ内に反映されないまま
時間が経過し過ぎる場合には、Sによって受け取られて
いないと判定する。以下の2つのうちの1つが一般に行
われている。
【0257】1番目は、オブジェクトテーブル内のAに
ついての最高のカウンタ値がCであり、PjはAが状態
Dにあることを知っていて、D>Cであるということで
ある。これには、Aが除去されているということを状態
Dが指定している場合が含まれる、ということに注意さ
れたい。その場合には、Pjは、Aの、状態Cが与えら
れた状態で理解することができる記述を、Sに送る。こ
れは、PjからSへのTCP接続を通じてオブジェクト
状態メッセージに入れて送られ、取っておくことが保証
される。
【0258】2番目は、Aがオブジェクトテーブル内に
なく、PjはAが状態Dにあることを知っている、とい
うことである。これにはまた、考えてみれば、Aが既に
除去されている状態も含まれる可能性がある、というこ
とに注意されたい。その場合には、Pjは、Aの、以前
の情報が全く与えられない状態で理解することができる
フルの記述を、Sに送る。ここでもまた、これは、Pj
からSへのTCP接続を通じてオブジェクト状態メッセ
ージに入れて送られ、取っておくことが保証される。
【0259】これもまた上で触れたように、プロセスP
kは、オブジェクト状態要約メッセージを経由して、自
らが所有していないオブジェクトAについての1つまた
はそれより多い記述を受け取っていないと判定する。要
約において、そのオブジェクトが削除されているという
ことを発見する場合には、要約内の情報のみをベースに
してこれを処理することができる。そうでない場合に
は、Pkは、TCPを経由して、Pkが既に知っている
ことを述べるオブジェクト状態要約メッセージをSに送
る。Sは、TCPを経由して、適切な示差メッセージを
含むオブジェクト状態メッセージで返答する。すべての
失われた情報を更新するのに、1対のメッセージで十分
である。
【0260】Pkが送るオブジェクト状態要約メッセー
ジは、構文的にSが送るものと同一である。これはま
た、Pkが自らが所有していないオブジェクトについて
知っていることを正確に要約しているという意味におい
て、意味的に同一である。しかし、これは異なる方法で
用いられる、というのも、Sにおいてオブジェクトテー
ブルを更新するのに用いられるのではないからである。
それどころか、SはPkにメッセージを送って、Pkに
おける世界モデルのコピーを更新する。Pkが送るオブ
ジェクト状態要約内のSenderIDは、Pkのsp
Comオブジェクトであり、新しいオブジェクト入力も
Pkが所有するオブジェクトへの参照も全くない、とい
うことにも注意されたい。
【0261】オブジェクトAについてSが知っている最
も最近の状態が、カウンタEに対応していると仮定す
る。さらに、SがPkから、PkがAの状態C(C<
E)についてのみ知っているということを指定するオブ
ジェクト状態要約メッセージを受け取ると仮定する。そ
の場合、Sは、Aの、状態Eの、Cに関して理解するこ
とができる記述を、Pkに送る。Pkは、状態C=0を
用いて、Aについて何も知らないということを示すこと
ができる。これによって、SがSのフルの記述を送るよ
うにされる。
【0262】各メッセージがSとPkの間を伝わると
き、到着する各UDPメッセージから、SとPkの両方
がAについてより知るようになっているかもしれない。
もしそうなら好都合なことである。いかなる瞬間におい
ても、SおよびPkは、自らが持っている最良の情報を
ベースに応答する。
【0263】上記はISTPにおける明示のメッセージ
の修理の方法であるが、これが唯一の修理方法ではな
く、多くの状況においては最も重要な修理方法でさえも
ない、ということを理解することが重要である。特に、
迅速に変化するオブジェクトについての情報は、失われ
たメッセージを参照せずに理解することができる記述に
よって古くなってしまうことが多い。これによって、い
くつかの前の状態をベースにして理解することができる
示差メッセージを作り出す以外に余分な行動をとらず
に、多くの修理を効率的に行うことができる。
【0264】j.各プロセスの通信グループへの参加方
法 Pjは、ある通信グループのサーバへのTCP接続を、
まだ存在していない場合には、開き、自らが接続を希望
していることを表すspComオブジェクトを含むオブ
ジェクト状態メッセージを送ることによって、そのグル
ープに参加する。他の世界モデルのオブジェクトとは異
なり、spComオブジェクトはマルチキャストで通信
されることはなく、各プロセスとサーバの間のTCP接
続を経由してのみ通信される、ということに注意された
い。
【0265】spComオブジェクトは、プロセス間で
共有される以下のフィールドを有する。
【0266】・・・何らかの共有オブジェクト内のすべ
てのフィールドであって、以下のものを含む。
【0267】ShareBits:16ビット − 論
理値を表す。
【0268】Initialize:最低位から2番目
の桁のビット、ビット1 − 1である場合には、初期
化を強制する。
【0269】Disconnect:ビット2 − 1
である場合には、そのプロセスが切断していることを示
す。
【0270】ProcAddress:32+16ビッ
ト − プロセスのインターネットアドレスおよびポー
ト番号。
【0271】MaxDelay:32ビット − 1週
間を法とする、ミリ秒での要求されたMaxDelay
時間。
【0272】以下に説明するとおり、Initiali
zeビットは、そのグループ内の通信を初期化または再
初期化するのに必要なすべての情報をサーバが送ること
を要求する、以下参照。
【0273】以下で説明するように、切断ビットは、そ
のプロセスが切断していることを示す。
【0274】ProcAddressは、そのプロセス
に情報を送るときにそのサーバが用いる通信アドレスを
指定している。これは、用いるTCP通信リンクを識別
するのに役立つ。
【0275】MaxDelayフィールドを用いて、1
つのプロセスにある特定のMaxDelay値を要求す
ることができる。または、ゼロに設定して、その選択を
サーバに全く委ねることができる。ISTPにおいて
は、すべてのプロセスがクライエントとサーバの両方に
なることができる、ということに注意されたい。プロセ
スは、自らが所有していないspComオブジェクトが
自らに送られるので、サーバになることを要求されてい
るということを発見する。この場合、そのプロセスは、
その要求を拒絶する決定をすることができ、その場合に
は、さらなる行動は不要である。そうでない場合には、
以下に説明するようにそのグループへの接続を開始す
る。プロセスは、TCP接続を求める最初の要求もま
た、拒絶または応じる(forward)ことができる、という
ことに注意されたい。
【0276】あるグループ内での通信を求める要求に応
じるためには、サーバはまずそのプロセスに、場所入力
メッセージを送る。
【0277】場所入力メッセージのフィールドは、以下
のとおりである。
【0278】MessageTypeID:16ビット
− 値3は、これが場所入力メッセージであることを
示す。
【0279】SenderID:32ビット − 接続
を要求するspComの圧縮GUID。
【0280】SendTime:32ビット − 1週
間を法とする、ミリ秒での送られる時間メッセージ。
【0281】Bits:16ビット − 論理値を表
す。
【0282】Initialize:最低位から2番目
の桁のビット、ビット1 − 1である場合には、初期
化を強制する。
【0283】Disconnect:ビット2 − 1
である場合には、切断を強制する。
【0284】NumberOfGUIDPrefixe
s:16ビット − GUIDTableにおける接頭
部Gの数。
【0285】GUIDTable:G個のGUIDPr
efix入力 − それぞれ96ビット。
【0286】GUIDTableEntryInde
x:16ビット − 圧縮GUIDに用いる。
【0287】GUIDPrefix:80ビット −
メッセージにおいて多くのGUIDに潜在的に共有され
ている接頭部。
【0288】MulticastAddress:32
+16ビット − インターネットアドレスおよびポー
ト番号。
【0289】MaxDelay:32ビット − 1週
間を法とする、ミリ秒でのMaxDelay時間。
【0290】MessageTypeID、Sende
rID、SendTime、NumberOfGUID
Prefixes、およびGUIDTableは、他の
メッセージのタイプと同様である。要求を開始したsp
Comオブジェクトを用いて、その要求に応じる場所入
力メッセージが識別される。
【0291】Initializeビットは、そのグル
ープ内の通信を初期化または再初期化するのに必要なす
べての情報をそのプロセスPjが送るかまたは再送する
べきであるということを指定する、以下参照。
【0292】Disconnectビットは、そのプロ
セスができるだけ速く切断するべきであるということを
示す。そのようにしない場合には、サーバが強制的にそ
のプロセスを駆逐するかもしれない。
【0293】このメッセージにおける重要なフィールド
は、MulticastAddressである。これ
は、オブジェクトの変更についての情報を送ったり受け
取ったりするときに用いるアドレスを指定する。
【0294】MaxDelayフィールドは、Mult
icastAddress上で通信されるメッセージに
ついてPjが用いるべきであるMaxDelay値を指
定する。
【0295】サーバは、そのグループが用いるべきマル
チキャストのアドレスを選択する。このアドレスで他の
トラヒックからの干渉を検出する場合には、新しいアド
レスを選択して、そのグループのメンバーが用いている
アドレスを変更するべきであるということを指定する新
しい場所入力メッセージを送ることができる。
【0296】このチャネルを飛ばす方法は、劣悪なプロ
セスをそのグループから駆逐するのにも用いることがで
きる。
【0297】サーバはまた、用いるMaxDelayを
選択する。単一のサーバは、グループ全体についての1
つの固定値を選択することができる。または、サーバは
個々のプロセスの必要を評価してプロセスごとの遅延を
選択することができる。いずれにせよ、サーバがこうい
った決定を行って、あるプロセスについてのMaxDe
layと対応するオブジェクト状態要約メッセージの速
度が適切な同期をとるようにすることが重要である。
【0298】場所入力メッセージの直後に、サーバは、
そのグループが共有しているそれぞれのオブジェクトの
フルの記述を含む、オブジェクト状態メッセージを送
る。この、潜在的に非常に大きいメッセージが、Pjに
おける世界モデルを現在の状態に初期化する。いったん
これが行われると、Pjはあたかも常にこのグループ内
にいたかのように動き始めることができる。
【0299】オブジェクト状態メッセージの次に、サー
バは、Pjにおけるオブジェクトテーブルを適切に初期
化するオブジェクト状態要約メッセージを送る。このメ
ッセージは、テーブル内のすべてのオブジェクトが新し
いので、やや大きい。
【0300】場所入力メッセージを受け取るとすぐに、
プロセスは自らが所有するオブジェクトについての情報
を送出したり、他のオブジェクトについての情報を聞い
たりすることを開始することができる。しかし、サーバ
からダウンロードされた現在の状態を得るまでは、入っ
てくる示差メッセージを理解することはできない。
【0301】場所入力メッセージが初期化ビットを有し
ている場合には、Pjは、指定されたアドレス上の、自
らが所有しているすべてのオブジェクトについてのフル
のメッセージを送出しなければならない。
【0302】上記のグループ接続方法について、特に触
れておく価値があるものがいくつかある。第1に、参加
は、実際的にできる限り速い。特に、ダウンロードは、
できるだけ速い信頼性の高い手段によって行われる。参
加にかかる完全な時間には、指定されたマルチキャスト
のアドレスへの接続も含まれる。これは、関連するルー
タがどのように動くかによってかなりの時間がかかる可
能性があるが、これはISTPの支配下にはないことで
ある。
【0303】第2に、最初の情報のダウンロードが、過
去にMaxDelay秒たたないうちに除去されたすべ
てのオブジェクトの記述を含み、これらのオブジェクト
についての遅れたメッセージによってPj内にこれらが
誤って現れることがないようにしなければならない。
【0304】k.各プロセスの通信グループからの退出
方法 通信グループから退出するには、プロセスPjはまず、
自らが所有するいかなるオブジェクトを変更することも
中止し、従ってグループのアドレスにメッセージを送る
ことを中止しなければならない。次に待機して、サーバ
が、これらのオブジェクトの最終状態についての情報を
得ていることを確認し、必要であればこの情報をTCP
によってSに送る。いったんSが必要な情報を得ると、
PjはSに、切断ビットを有する適切なspComオブ
ジェクトを含むオブジェクト状態メッセージを送り、そ
の後単にSとの接続をブレークする。
【0305】通常Pjは、グループから退出する前に、
自らのすべてのオブジェクトを除去するか、自らの所有
権を他のプロセスに譲渡すると思われる。実行する所有
者がいない状態でオブジェクトが残ってしまう場合に
は、ISTPはそれらがどうなるべきかを指定すること
はない。サーバは、それらのオブジェクトの存在を維持
するか、または除去するかを選択することができる。
【0306】プロセスPjがクラッシュしたり別の方法
でSから切断される場合には、これはサーバSによって
比較的速く検出することができる、というのも、サーバ
はもはやPjにオブジェクト状態要約を送ることができ
なくなるからである。ここでもまた、ISTPは、この
状況においてはどうなるべきかを正確に指定することは
ない。上記のように、サーバは、PjがすぐにSに再接
続すると考えてPjのオブジェクトの存在を維持する
か、または除去するかを選択することができる。
【0307】l.信頼性制御 ISTPにおける信頼性のレベル対速度の詳細なアプリ
ケーションレベル制御を行うために、それぞれの共有オ
ブジェクトには、以下の2つのさらなる共有制御ビット
が与えられる。
【0308】すべての共有オブジェクトは、プロセス間
で共有される以下のフィールドを有する。
【0309】ShareBits:16ビット − 論
理値を表す。
【0310】ForceReliable:最低位から
2番目の桁のビット、ビット1 −1である場合には、
変更がTCPによってサーバを経由して通信されるよう
強制する。
【0311】InhibitReliability:
ビット2 − 1である場合には、サーバが、変更が高
い信頼性で通信されるということを保証することが禁止
される。
【0312】ForceReliableビット、これ
はデフォールトによって非設定である、が、変更がこれ
から通信される時に1つのオブジェクト内に設定される
場合には、その変更はTCPによってサーバに通信さ
れ、サーバはその変更を、TCPを用いてグループ内の
他のプロセスに通信する。これは、マルチキャストがシ
ミュレーションされなければならないときに用いられる
のと同種の通信である、以下参照。ForceReli
ableビットは共有されなければならない、というこ
とに注意されたい、というのも、サーバはそれがオンで
ある時を知る必要があるからである。これは、マルチキ
ャストを用いて情報を通信するよりも時間がかかり、必
要な帯域幅も大きくなるが、グループ内のすべてのプロ
セスがその変更が起こったということを知るまでの時間
は最小になる。この通信の以下のいくつかの面は、わか
りにくいが重要である。
【0313】第1に、一般的に、この特徴はなるべく使
わないようにするということが意図されている。ある意
味では、ISTP全体の目的は、この種の通信を不要に
するということである。
【0314】第2に、Richard C. Watersによる199
5年11月9日出願の、その参照により本明細書に組み
込まれる、米国特許出願番号第08/556,227号
の主題であるビーコンは、ビーコンサーバを経由してこ
のスタイルで常に通信される。多くの状況において、ビ
ーコンは、プロセス間で信頼性の高い通信を行うのによ
りえり抜きの方法を提供する。
【0315】第3に、クライエントまたはサーバが、T
CPを用いてオブジェクトの変更を通信するときにはい
つでも、通信される必要のあるすべてのオブジェクト
は、単一のオブジェクト状態メッセージ内に置くことに
よって、同時に一緒に通信される。これによって、すべ
ての変更が同時に受け取られるということが保証され
る。その結果、ForceReliableビットは同
期用に用いることができる。
【0316】いくつかのオブジェクトが一緒に変更さ
れ、ForceReliableビットがそれぞれのオ
ブジェクト内でオンに設定される場合には、すべての変
更は一緒に通信され、他のプロセスはすべて、それらの
変更を、ばらばらなものとしてではなく1グループとし
てみなす。もしUDPが用いられているとすると、これ
を保証することは困難であろう、ということに注意され
たい、というのも、変更の中には他の変更よりも前に受
け取られるものがあり得、そういった変更を有するメッ
セージは失われ得るからである。
【0317】第4に、ForceReliableビッ
トによってTCPが強制される場合には、帯域幅を最小
にするために、示差メッセージが用いられる。しかし、
それらのメッセージが常に受け取り手によって復号され
るということを保証するためには、単に最後のメッセー
ジだけではなく、もしあれば最後のForceReli
ableメッセージに関して示差的でなければならな
い。この理由は、もし最後のメッセージが信頼性が低い
とすると、最後のメッセージを得ていない受け取り手が
あるかもしれないから、ということである。
【0318】その結果、ForceReliableビ
ットが、しばらくの間オフであった後オンに設定される
場合には、フルのオブジェクトメッセージを送らなけれ
ばならない可能性が高い。これによって、ForceR
eliableビットを設定するコストが非常に高くな
り得る。オブジェクトは、最も最近高い信頼性で送られ
たカウンタ値が何かを指定する、関連するフィールドを
有さなければならない、または、システムのコアが、直
前のメッセージが高い信頼性で送られなかった場合には
いつでも、フルのメッセージを用いなければならない。
【0319】第5に、ForceReliableビッ
トがオンに設定される場合には、自動的にオフになるの
ではなくオンのままである。再びオフにしたい場合に
は、明示的に行わなければならない。
【0320】ForceReliableビット、これ
はデフォールトによって非設定である、が、1つのオブ
ジェクト内に設定される場合には、そのオブジェクトに
おける変更についての情報はマルチキャストによって通
信され、システムは、メッセージが受け取られることを
保証するのに費やす努力を最小にする。特に、Inhi
bitReliableビットを設定した変更について
サーバが発見する場合には、オブジェクト状態要約メッ
セージ内には新しいカウンタ値を含まない。Inhib
itReliableビットは共有されなければならな
い、ということに注意されたい、というのも、サーバは
それがオンである時を知る必要があるからである。これ
は、各プロセスはマルチキャストの変更メッセージを得
るが、InhibitReliableビットがオンで
ある変更についてのメッセージをたまたま捕らえそこな
ったプロセスは、自らが何かを捕らえ損なったというこ
とを知ることはなく、従ってこの情報を得ようとして資
源を費やすことはない、ということを意味する。この通
信の以下のいくつかの面は、わかりにくいが重要であ
る。
【0321】第1に、一般的に、この特徴はなるべく使
わないようにするということが意図されている。ある意
味では、ISTPの重要な目的は、信頼性の高い通信を
安価にして、信頼性の低い通信を不要にするということ
である。それでも、非常に迅速な位置の更新等を送る場
合であって、情報が非常に迅速に古くなってしまい、情
報を信頼性の高いものにしても無駄である場合には、I
nhibitReliableビットを設定することが
適切である。
【0322】第2に、サーバがいくつかの変更を得て、
そのうち最後のもののみにInhibitReliab
leが設定されている場合には、サーバの次のオブジェ
クト状態要約メッセージに最後から2番目の変更のカウ
ンタを含まなければならない、という点において複雑で
ある。サーバは、InhibitReliableが設
定された変更を受け取る時には自らのオブジェクトテー
ブルを更新しない、ということによってこれを達成する
ことができる。
【0323】第3に、InhibitReliable
を用いる場合には、きっと示差メッセージも用いたいと
思われている、ということにおいても複雑である。しか
し、こういったメッセージは、最後の信頼性の高いメッ
セージにずっとさかのぼって高い信頼性で示差的である
はずであり、常に復号できるはずである。または、各プ
ロセスは、変更が起こっているということを知らせるオ
ブジェクト状態要約メッセージを得ていない時であって
も、復号できない示差メッセージを得ているときには、
サーバからの更新を求めることができるようにならなけ
ればならない。後者の方はISTPによって確かに容認
されているが、誤りが起きやすく、支援できない。
【0324】第4に、1つのオブジェクトについてIn
hibitReliableが常に設定されている場合
であっても、高い信頼性で送らなければならない変更が
ある。特に、1つのオブジェクトの最初の創造およびそ
れを結局除去するときには、常に高い信頼性で通信され
る。もしこれらの変更が高い信頼性で送られないとする
と、各プロセスは完全に混乱してしまうかもしれない。
【0325】第5に、InhibitReliable
ビットがオンに設定される場合には、自動的にオフにな
るのではなくオンのままである。再びオフにしたい場合
には、明示的に行わなければならない。
【0326】第6に、単にカウンタ値を変更しないだけ
でも、InhibitReliableビットには同様
の影響があるが、そうすると、示差メッセージが正しく
働くことも、各プロセスが、重複するメッセージから来
る重複するカウンタ値を有する記述を扱うこともできな
くなる。
【0327】ForceReliableおよびInh
ibitReliableビットが共に1つのオブジェ
クト内に設定されている場合には、変更はTCPおよび
マルチキャストのUDPの両方によって送られる。これ
は帯域幅の点ではコストが高いが、通信の待ち時間が最
小になること、および最小時間内でのフルの信頼性が保
証される。
【0328】m.所有権の譲渡 ISTPの見方から、比較的小さなことではあるが、オ
ブジェクトの所有権は変更することができる。これは、
現在所有しているプロセスPjに、所有者のフィールド
がどれか他のプロセスPkに変更されたメッセージを送
出させることによって行われる。しかし、以下のいくつ
かのことを覚えておく必要がある。
【0329】第1に、所有権の変更後は、Pjはそのオ
ブジェクトについていかなる他のメッセージも送出する
ことはできない。ただし、Pjは、必要な限り長く、所
有権が変化したオブジェクトの状態を覚えておいて、サ
ーバSがその変更またはその後の状態について知ること
を保証しなければならない。
【0330】いったんそうなると、Pjのそのオブジェ
クトについてのすべての責任は終わる。これが進行中お
よびその後、Pkがそのオブジェクトについてのメッセ
ージを送出することができる。
【0331】第2に、上記説明において、1つのオブジ
ェクトを所有しているプロセスPjについて述べるとき
にはいつでも、その意味するところは、プロセスPjが
自らがオブジェクトを所有していると「思う」とき、と
いうことである。すなわち、プロセス内の世界モデル
が、そのプロセスがそのオブジェクトを所有していると
指定しているときである。これは、所有権の何かグロー
バルな概念とは別個のものである。
【0332】プロセスPjがPkに所有権を引き渡す場
合には、Pjは、Pkまたはいかなる他のプロセスがP
kが所有者であるということを知ることができるよりも
前に、自らがもはや所有者ではないということを知って
いる、ということに注意されたい。従って、どのプロセ
スも自らが1つの与えられたオブジェクトの所有者であ
ると考えていない短い期間が存在する。しかし、2つの
プロセスが両方とも1つのオブジェクトの所有者である
と考える、ということは起こり得ない。
【0333】もし、MaxDelayよりも後の、順番
の狂ったメッセージが処理されるとすると、その結果と
して、所有者が多数、同時に存在する、等の異様なこと
が生じる可能性がある、ということに注意されたい。
【0334】n.模擬マルチキャスト 簡単のために、上記では、1つのグループ内のすべての
プロセスが互いにマルチキャスト通信をすることができ
ると仮定した。しかし、インターネットの現在の状態で
は、これは多くの理由で不可能である。理由の1つは、
マルチキャストが可能でないルータが多く、マルチキャ
ストのトラヒックが通過できない「防火壁」が多い、と
いうことである。従って、ISTPには、実際のUDP
マルチキャストではなくTCPを用いた模擬マルチキャ
ストを経由して通信を行うことができる、ということが
含まれる。
【0335】模擬マルチキャストモードにおいては、プ
ロセスPjは、自らのすべての通信を、他のプロセスP
kと直接ではなく、サーバSと行う。特に、上記仮定で
はUDPマルチキャストによって送ることになっている
オブジェクト状態メッセージはすべて、その代わりに、
TCP接続を通じて直接サーバに送られる。同様に、上
記仮定ではマルチキャストによってPjが受け取ること
になっているメッセージはすべて、その代わりに、TC
P接続を通じて受け取られる。これを促進するために、
各メッセージが、どのような通信チャネルに到着しよう
とも正確に解釈されるように、ISTPにおいてすべて
が手配されている。
【0336】模擬マルチキャストモードにおいては、I
STPは本質的には中央サーバモードで動作し、他の中
央サーバの設計よりも優れた通信速度上の利点はない。
このモードは、与えられたプロセスがグループ内の他の
プロセスとマルチキャスト通信をすることができない場
合に、劣化が適切なものになるようにとのためだけに、
ISTPに含まれている。
【0337】プロセスの1グループが与えられたとする
と、マルチキャストの可能性を含む状況は、非常に複雑
である、ということに注意されたい。すなわち、サブグ
ループ内でマルチキャストが可能な多数の接続されてい
ないサブグループ、マルチキャストを送ることはできる
が受け取ることはできない、そして、受け取ることはで
きるが送ることはできない、プロセス、および、各プロ
セスがある瞬間にはマルチキャスト通信が可能であるが
他の瞬間には不可能な、動的な変更、が存在している。
ISTPは、この状況すべてにおいてマルチキャストを
最適に用いようとするものではなく、すべての状況にお
いて正確に働きつつ、いくつかのよくある状況において
うまく働こうとするものである。
【0338】特に、通信グループは以下の2つの部分に
分割される。1つは、サーバを含まなければならない部
分であり、すべてのプロセスが、他のそれぞれにおよび
他のそれぞれからマルチキャストで送り受け取ることが
できる部分である。残りのもう1つは、すべての通信に
TCPが用いられる部分である。従って、それぞれのプ
ロセスPjには、マルチキャスト通信を用いるかそうで
ないかのどちらかのタグがついている。マルチキャスト
可能から不可能への自動切り替えは支援されるが、その
逆の自動支援はない。
【0339】以下では、模擬マルチキャストの方法、模
擬マルチキャストの使用のトリガの方法、および、1つ
のプロセスが模擬マルチキャストに切り替えられた後マ
ルチキャスト動作を再開する方法、を詳細に正確に説明
する。
【0340】場所入力オブジェクトは、上で説明してい
ない以下のさらなるビットフィールドを有している。
【0341】場所入力メッセージのフィールドは、以下
のとおりである。
【0342】Bits:16ビット − 論理値を表
す。
【0343】UseTCP:ビット3 − 1である場
合には、すべての通信をTCP経由に強制する。
【0344】プロセスPjが、UseTCPビットがオ
ンの状態で場所入力メッセージを受け取る場合には、自
らの関連する出力をマルチキャストを経由して送ること
を中止し、その代わりに、そのすべてを、TCPを経由
して直接サーバに送る。UseTCPビットがオンであ
る場合には、MulticastAddressのフィ
ールドの値は無関係である。Pjは、そのアドレスへの
接続を開こうとはせず、その上で送ることも受け取るこ
ともしない。マルチキャスト接続が開いていた場合に
は、Pjはそれを閉じる。
【0345】UseTCPがオンの状態の場所入力メッ
セージが到着して通信が開始されたり、通信の真っ最中
に到着するかもしれない、ということに注意されたい。
Pjが次にUseTCPがオフの状態の場所入力メッセ
ージを受け取る場合には、Pjはマルチキャストの使用
を再開しようとする。
【0346】サーバSが、プロセスPjに、マルチキャ
ストを使用しないように命令している場合には、Sは他
のプロセスPkから生じたPjへの情報をすべて、TC
Pを経由して送り、Pjから情報を取って、グループ内
のマルチキャストが可能な各プロセスにそれをマルチキ
ャストする。
【0347】1つのプロセスPjがマルチキャストを用
いるかどうかの判断は、PjとサーバSが一緒になって
行う。直接の要求によって、どちらかの当事者が一方的
に判断してもよい。特に、Sは、上述のように、Pjに
マルチキャストを用いないように命令することができ
る。同様に、Pjは、マルチキャストが用いられないよ
うに要求することができる。この目的のために、spC
omオブジェクトにおいて、上では説明していないさら
なるビットが存在する。
【0348】spComオブジェクトは、プロセス間で
共有される以下のフィールドを有する。
【0349】ShareBits:16ビット − 論
理値を表す。
【0350】UseTCP:ビット3 − 1である場
合には、すべての通信をTCP経由に強制する。
【0351】サーバが、UseTCPビットがオンの状
態でspComオブジェクトを受け取る場合には、サー
バはこれを、UseTCPビットがオンでもある場所入
力メッセージで応答せよという非常に強い要求であると
みなすべきである。プロセスPjは、自らがマルチキャ
スト可能ではないということを知る相当の理由がある場
合には、このビットの初期設定をオンにしておくべきで
ある。さもなければ、以下で説明するように、ISTP
がPjを自動的にTCPモードに切り替える前に、低品
質の通信の期間が存在してしまう。
【0352】このようなspComを送って、通信を開
始したり、通信中に変更をトリガすることができる、と
いうことに注意されたい。spComが、TCPに、そ
の後にマルチキャスト通信の再開を要求するものが続く
よう要求することが可能である。上記の各ビットを用い
て、Pjがそのグループに参加した瞬間から、Pjまた
はSのいずれかが、TCPの使用を指定することができ
る。しかし、もっと楽天的に、最初はマルチキャストを
試みて、マルチキャストができない場合にのみTCPに
切り替えるようにしたいと思うことが多いかもしれな
い、と思われる。これを行うには、PjおよびSがマル
チキャストでスタートして、通信におけるエラー率を観
測する。
【0353】Pjが、Sからのオブジェクト状態要約メ
ッセージをベースにして、そのマルチキャスト出力がS
に到着する割合が低いということに気づく場合には、P
jは、TCPへの切り替えを要求する新しいspCom
を送るべきである。
【0354】Sが、Pjからのオブジェクト更新の要求
をベースにして、他のプロセスからPjに送られるデー
タがPjに到着する割合が低いということに気づく場合
には、Sは、PjをTCPモードに切り替える新しい場
所入力メッセージを送るべきである。性能を最適化する
ためには、Sは、グループ内のプロセスのそれぞれの1
対の間で行われている通信を個々に監視するべきである
が、大部分の状況においてはこれはおそらく不要であろ
う。
【0355】上記のことを用いれば、マルチキャストか
らTCPモードに動的に切り替えるのは容易である。し
かし、いったん1つのプロセスPjがTCPモードにな
ると、Pjとのマルチキャスト通信の試みはそれ以上は
なくなってしまい、従って、マルチキャストモードに切
り替え戻してもうまくいくと判断するベースがなくなっ
てしまう。しかし、このような判断を行うのに用いるこ
とができる様々な方法がある。
【0356】第1に、サーバが時々Pjをマルチキャス
トモードに切り替え戻してうまく行くかどうかを確認す
ることが可能である。これを行うことの代償は、通信の
有効性が低減する期間が長くなる、ということであろ
う。従って、Sがこの方法をとる場合には、一貫して失
敗(failure)する場合には、確認の試みの頻度を下げる
べきである。
【0357】第2に、TCP動作の間、Pjのマルチキ
ャストポートを開いたままにしておいて、何か実験的な
トラヒックを特に作り出して、マルチキャスト通信がう
まく行きだしているかどうかを評価することが可能であ
る。第1のものよりもこちらの方が複雑ではあるが、ア
プリケーションに低品質の通信になる期間ができるのを
強制することなく、マルチキャスト接続を評価すること
ができる。
【0358】マルチキャストがうまくいっていたのに突
然うまく行かなくなった場合には、上の方法のうちの1
つを用いるのがよい考えかもしれない。しかし、マルチ
キャストがうまく行くことがなかった場合には、これら
の方法をわざわざ用いてみる価値はおそらくないであろ
う。
【0359】o:場所(Locales) 簡単のために、上記では、それぞれのプロセスPjが単
一の通信グループのみに参加すると仮定した。しかし、
このグループの大きさは、サーバが扱う(serve)ことが
できるプロセスの数によって制限されてしまう。これ
は、大規模化可能性(scalability)に対する基本的な制
限である。ISTPの重要な面の1つは、1995年8
月28日に出願されその参照によって本明細書に組み込
まれる、Barrus J. W.およびWaters R. C.による米国特
許出願番号第08/520,099号、「場所を利用し
てバーチャル環境を設計するシステム」に説明されてい
るように、1つのバーチャル世界を「場所」と呼ばれる
多くの塊(chunks)に分けることによって、大規模化可能
性を達成する、ということである。それぞれの場所は、
別個のマルチキャスト通信グループと関連しており、1
つの与えられたプロセスは、これらグループのうちのい
くつかに属すると思われる。
【0360】場所の重要な面は、上述のすべてのもの
が、1回だけではなく、場所当たりで動作する、という
ことである。例えば、1つの与えられたプロセスは、1
つのサーバへの接続を1つ有しているだけではなく、い
くつかのサーバへの接続をいくつか有している。
【0361】同様に、1つのプロセスは1つのspCo
mを有しているだけではなく、いくつか有している。世
界モデル内のそれぞれのオブジェクトは、明示のフィー
ルドによって、多くても1つの場所内にあるものとして
識別される。1つのオブジェクトに関するすべての通信
は、そのオブジェクトが入っている場所に関連する通信
グループ内で起こる。通信グループを支配する、マルチ
キャストのアドレスを含む情報は、関連する場所オブジ
ェクト内にキャッシュされる。
【0362】spComオブジェクトは、他のいかなる
ものとも同様に、場所内にある。それらによって、この
場所と関連する通信グループ内の通信がトリガされる。
【0363】それぞれの場所は、1つのサーバと関連し
ている。1つの与えられたサーバは、いくつかの場所を
扱ってもよい。場所オブジェクトは、とりわけ、どのよ
うなサーバのプロセスがその場所を扱うかを指定する。
【0364】一般的に、場所通信グループを多数同時に
有しても、基本的に複雑になることはない。しかし、取
り組まなければならない重要な問題が1つある−−−1
つのオブジェクトが1つの場所から別の場所に動くとき
に何が起こるか、ということである。
【0365】第1に、1つのオブジェクトが場所を変更
するときにはいつでも、そのオブジェクトを記述するフ
ルのメッセージを新しい方の場所に送らねばならず、そ
のオブジェクトが古い方の場所を離れたということを指
定するひょっとしたら示差のメッセージを、古い方の場
所に送らなければならない。
【0366】第2に、オブジェクトの除去についてMa
xDelay時間の間覚えておかなければならないのと
同様に、1つの場所から1つのオブジェクトが離れると
いうことも、MaxDelay時間の間覚えておいて、
順番の狂ったメッセージによって誤ってオブジェクトが
その場所に再び現れることがないようにしなければなら
ない。
【0367】第3に、1つの場所内のオブジェクトにつ
いての情報の最初のダウンロードには、最近除去された
オブジェクトについての情報が含まれなければならない
のと同様に、その場所を最近離れたオブジェクトについ
ての情報も含まれなければならない。
【0368】第4に、提案されるMaxDelay間隔
は、場所オブジェクトの一部として指定されることがで
きる。
【0369】本発明のいくつかの実施の例およびその修
正や変形を説明したが、当業者には、前述のことは単に
例示的であるに過ぎず、限定的なものではなく、例とし
てのみ述べられたものである、ということが明らかであ
ろう。当業者であれば、多くの修正および他の実施の例
を考えることが可能であり、それらは本発明の範囲内に
あると考えられる。本発明の範囲は、添付の特許請求の
範囲およびそれらの同等物によってのみ限定される。
【0370】
【発明の効果】この発明に係る通信システムは、以上説
明したとおり、1グループのユーザの間でオブジェクト
状態情報を高速で効率的におよび高い信頼性で通信する
通信システムにおいて、ネットワーク及びそれぞれが前
記ネットワークとつながれたコンピュータを有し前記ネ
ットワークのノードにおける複数のユーザと、前記ユー
ザのそれぞれにおいて記憶されそれぞれのコンピュータ
につながれたオブジェクトを含む世界モデルと、前記世
界モデルのオブジェクトが変化するように、該世界モデ
ルのオブジェクトを変更することによって、前記ユーザ
において前記世界モデルを変更する手段と、変化したオ
ブジェクトの現在の状態を損失の多い直接のリンクを通
じて他のユーザに通信するメッセージを含む、前記オブ
ジェクトの現在の状態を前記他のユーザに迅速に通信す
る手段と、ユーザにおいてオブジェクト状態を記述する
メッセージが失われた時を検出する手段と、前記損失の
多い直接のリンクにつながれて、前記オブジェクト状態
を記憶し、ユーザが要求した場合にはそのユーザに最新
のオブジェクト状態を損失のないリンクを通じて送信す
るサーバとを備え、それによって、前記損失の多いリン
クを通じて送信され失われた情報は、前記サーバからの
情報によって回復することができるので、高速で効率的
におよび高い信頼性で通信することができるという効果
を奏する。
【0371】また、この発明に係る通信システムは、以
上説明したとおり、前記サーバが、オブジェクト状態要
約メッセージを前記ユーザに送る手段を含み、オブジェ
クト状態を記述するメッセージが失われた時を検出する
前記手段が、前記要約メッセージをユーザにおける現在
のオブジェクト状態と比較する手段を含み、情報の再送
信が、すべての失われたメッセージを再送信することで
はなく、オブジェクトについて最も最新の情報を得るこ
とをベースに行われるようになっているので、高速で効
率的におよび高い信頼性で通信することができるという
効果を奏する。
【0372】また、この発明に係る通信システムは、以
上説明したとおり、前記要約メッセージが、それぞれの
オブジェクトについて、前記サーバが知っている状態の
最新版を識別するカウンタ値を指定するので、高速で効
率的におよび高い信頼性で通信することができるという
効果を奏する。
【0373】また、この発明に係る通信システムは、以
上説明したとおり、前記要約メッセージが、最後の要約
メッセージから変化したオブジェクトのみの状態を指定
する示差メッセージであるので、高速で効率的におよび
高い信頼性で通信することができるという効果を奏す
る。
【0374】また、この発明に係る通信システムは、以
上説明したとおり、前記オブジェクト状態メッセージ
が、直前の状態から異なっている状態の部分のみを指定
する示差メッセージであるので、高速で効率的におよび
高い信頼性で通信することができるという効果を奏す
る。
【0375】また、この発明に係る通信システムは、以
上説明したとおり、前記オブジェクト状態メッセージ
が、前のN(Nは1よりも大きい数)個の状態のうちの
いずれかから異なっている状態の部分のみを示す示差メ
ッセージであり、それによって、直前のメッセージが失
われた時であっても示差メッセージを解釈することがで
き、すべての失われたメッセージを再送信する必要がな
いようになっているので、高速で効率的におよび高い信
頼性で通信することができるという効果を奏する。
【0376】また、この発明に係る通信システムは、以
上説明したとおり、前記サーバが、前記オブジェクト状
態における変更の要約を前記ユーザに送信する手段を含
み、それぞれのユーザにおいて前記サーバからの要約を
前記損失の多い直接のリンクの結果として前記ユーザに
おいて記憶されている同様の要約と比較し、従って失わ
れたメッセージを検出し、前記失われたメッセージの検
出に応答して更新されたメッセージを前記サーバに送信
させる手段をさらに含むので、高速で効率的におよび高
い信頼性で通信することができるという効果を奏する。
【0377】また、この発明に係る通信システムは、以
上説明したとおり、前記オブジェクトが、グラフィック
のオブジェクトであるので、高速で効率的におよび高い
信頼性で通信することができるという効果を奏する。
【0378】この発明に係る通信システムは、以上説明
したとおり、1グループのプロセスの間でオブジェクト
状態情報を高速で効率的におよび高い信頼性で通信する
通信システムにおいて、ネットワーク及びそれぞれが前
記ネットワークとつながれたコンピュータを有し前記ネ
ットワークのノードにおける複数のユーザと、前記ユー
ザのそれぞれにおいて記憶されそれぞれのコンピュータ
につながれたオブジェクトを含む世界モデルと、前記世
界モデルのオブジェクトが変化するように、該世界モデ
ルのオブジェクトを変更することによって、前記ユーザ
において前記世界モデルを変更する手段と、変化したオ
ブジェクトの現在の状態を損失の多い直接のリンクを通
じて他のユーザに通信するメッセージを含む、前記オブ
ジェクトの現在の状態を前記他のユーザに迅速に通信す
る手段とを備え、前記オブジェクト状態メッセージが、
前のN(Nは1よりも大きい数)個の状態のうちのいず
れかから異なっている状態の部分のみを示す示差メッセ
ージであり、それによって、直前のメッセージが失われ
た時であっても示差メッセージを解釈することができ、
すべての失われたメッセージを再送信する必要がないよ
うになっているので、高速で効率的におよび高い信頼性
で通信することができるという効果を奏する。
【0379】また、この発明に係る通信システムは、以
上説明したとおり、ユーザにおいて、順番が狂って所定
量の時間よりも大きく遅延して到着するオブジェクト状
態を記述するメッセージを拒絶し、それによって前記ユ
ーザがオブジェクトが除去されたという記録を維持して
おかなければならない期間を限定し、該オブジェクトに
ついての順番が狂ったメッセージを拒絶することができ
るようにする手段をさらに含むので、高速で効率的にお
よび高い信頼性で通信することができるという効果を奏
する。
【0380】また、この発明に係る通信システムは、以
上説明したとおり、ユーザの前記グループが動的に変化
することができ、前記サーバが、ユーザが要求した場合
にはそのユーザに世界モデルにおけるすべてのオブジェ
クトの現在の状態をダウンロードする手段を含むので、
高速で効率的におよび高い信頼性で通信することができ
るという効果を奏する。
【0381】また、この発明に係る通信システムは、以
上説明したとおり、前記損失の多い直接の通信リンク
が、マルチキャストを利用しているので、高速で効率的
におよび高い信頼性で通信することができるという効果
を奏する。
【0382】また、この発明に係る通信システムは、以
上説明したとおり、前記サーバが、直接的なマルチキャ
スト通信が不可能な前記ユーザにマルチキャスト通信を
シミュレーションする手段を含むので、高速で効率的に
および高い信頼性で通信することができるという効果を
奏する。
【0383】また、この発明に係る通信システムは、以
上説明したとおり、前記オブジェクトがGUIDによっ
て識別され、GUIDのオブジェクトへの割り当てが、
与えられたユーザによって修正されたすべてのオブジェ
クトについてのGUIDが多くのビットを共通に有する
ようにし、それによって、表されるべきオブジェクト状
態を記述するメッセージがより完成するようにする手段
を含むので、高速で効率的におよび高い信頼性で通信す
ることができるという効果を奏する。
【0384】さらに、この発明に係る通信システムは、
以上説明したとおり、オブジェクト状態を記述する前記
示差メッセージを作り出す前記手段が、前記N個の前の
状態のそれぞれの間での送信においてオブジェクトのど
の構成要素が変化したかを表すビットマスクを含み、そ
れによって、該ビットマスクを論理和演算と組み合わせ
ることによって、オブジェクト状態を記述する前記示差
メッセージにどのような情報を含む必要があるかを迅速
およびコンパクトに判定することができるので、高速で
効率的におよび高い信頼性で通信することができるとい
う効果を奏する。
【図面の簡単な説明】
【図1】 この発明の実施の形態1に係る、参加してい
るノードのうちの1つによって共有バーチャル世界に付
け加えらている新しいオブジェクトの概略図である。
【図2】 共有世界モデルを実施する中央サーバの方法
の概略図である。
【図3】 ピアツーピアのメッセージング、すなわちマ
ルチキャスト、を用いて、フルに分散された世界モデル
をDISのスタイルで実行する概略図である。
【図4】 マルチキャストを用いてオブジェクト更新情
報を1つのグループのピアの間で共有し、サーバがそれ
を聞いていることを示す、本発明の概略図である。
【図5】 サーバがどのようにそれぞれのクライエント
のノードと相互動作してオブジェクトレベルでシステム
全体の信頼性を保証しているかを示す、本発明の概略図
である。
【図6】 1つのメッセージが直前のメッセージに依存
してオブジェクト状態の変更の従来技術による符号化を
形成する、一連の示差メッセージを示す、概略図であ
る。
【図7】 前のメッセージが失われたり遅れている場合
に、示差メッセージが1つより多い前のメッセージをベ
ースにして、データが再構成できるようにする、本シス
テムの概略図である。
【図8】 それぞれの時間段階においてオブジェクトの
フィールドが変化する、オブジェクトの一連の経時変化
を示す図である。
【図9】 図8のオブジェクトのT4におけるフルの状
態の記述のリスティングであり、時間T4において存在
するフィールドを示す図である。
【図10】 図8のオブジェクトの、時間T4におけ
る、直前の、時間T3における状態に関する状態を示す
リスティングであって、変更を示す図である。
【図11】 図8のオブジェクトの、時間T4におけ
る、3つの前の状態のうちのどれかに関する状態を示す
リスティングであって、フィールドF3およびフィール
ドF5の変更を示す図である。
【符号の説明】
10、12、14 コンピュータ、20、22、24
モニタ、26、28、30、40 世界モデル、42、
50 サーバ、52 未着データ検出装置、56 示差
メッセージ、58 オブジェクト状態要約メッセージ。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597067574 201 BROADWAY, CAMBRI DGE, MASSACHUSETTS 02139, U.S.A. (72)発明者 リチャード・シー・ウォーターズ アメリカ合衆国、マサチューセッツ州、コ ンコード、ディーコン・ヘインズ・ロード 266 (72)発明者 デビッド・アンダーソン アメリカ合衆国、マサチューセッツ州、ベ ルモント、フェアビュー・レイン 70

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 1グループのユーザの間でオブジェクト
    状態情報を高速で効率的におよび高い信頼性で通信する
    通信システムにおいて、 ネットワーク及びそれぞれが前記ネットワークとつなが
    れたコンピュータを有し前記ネットワークのノードにお
    ける複数のユーザと、 前記ユーザのそれぞれにおいて記憶されそれぞれのコン
    ピュータにつながれたオブジェクトを含む世界モデル
    と、 前記世界モデルのオブジェクトが変化するように、該世
    界モデルのオブジェクトを変更することによって、前記
    ユーザにおいて前記世界モデルを変更する手段と、 変化したオブジェクトの現在の状態を損失の多い直接の
    リンクを通じて他のユーザに通信するメッセージを含
    む、前記オブジェクトの現在の状態を前記他のユーザに
    迅速に通信する手段と、 ユーザにおいてオブジェクト状態を記述するメッセージ
    が失われた時を検出する手段と、 前記損失の多い直接のリンクにつながれて、前記オブジ
    ェクト状態を記憶し、ユーザが要求した場合にはそのユ
    ーザに最新のオブジェクト状態を損失のないリンクを通
    じて送信するサーバとを備え、 それによって、前記損失の多いリンクを通じて送信され
    失われた情報は、前記サーバからの情報によって回復す
    ることができる通信システム。
  2. 【請求項2】 前記サーバは、オブジェクト状態要約メ
    ッセージを前記ユーザに送る手段を含み、オブジェクト
    状態を記述するメッセージが失われた時を検出する前記
    手段が、前記要約メッセージをユーザにおける現在のオ
    ブジェクト状態と比較する手段を含み、情報の再送信
    が、すべての失われたメッセージを再送信することでは
    なく、オブジェクトについて最も最新の情報を得ること
    をベースに行われるようになっている請求項1記載の通
    信システム。
  3. 【請求項3】 前記要約メッセージは、それぞれのオブ
    ジェクトについて、前記サーバが知っている状態の最新
    版を識別するカウンタ値を指定する請求項2記載の通信
    システム。
  4. 【請求項4】 前記要約メッセージは、最後の要約メッ
    セージから変化したオブジェクトのみの状態を指定する
    示差メッセージである請求項2記載の通信システム。
  5. 【請求項5】 前記オブジェクト状態メッセージは、直
    前の状態から異なっている状態の部分のみを指定する示
    差メッセージである請求項1記載の通信システム。
  6. 【請求項6】 前記オブジェクト状態メッセージは、前
    のN(Nは1よりも大きい数)個の状態のうちのいずれ
    かから異なっている状態の部分のみを示す示差メッセー
    ジであり、それによって、直前のメッセージが失われた
    時であっても示差メッセージを解釈することができ、す
    べての失われたメッセージを再送信する必要がないよう
    になっている請求項1記載の通信システム。
  7. 【請求項7】 前記サーバは、前記オブジェクト状態に
    おける変更の要約を前記ユーザに送信する手段を含み、
    それぞれのユーザにおいて前記サーバからの要約を前記
    損失の多い直接のリンクの結果として前記ユーザにおい
    て記憶されている同様の要約と比較し、従って失われた
    メッセージを検出し、前記失われたメッセージの検出に
    応答して更新されたメッセージを前記サーバに送信させ
    る手段をさらに含む請求項6記載の通信システム。
  8. 【請求項8】 前記オブジェクトは、グラフィックのオ
    ブジェクトである請求項1記載の通信システム。
  9. 【請求項9】 1グループのプロセスの間でオブジェク
    ト状態情報を高速で効率的におよび高い信頼性で通信す
    る通信システムにおいて、 ネットワーク及びそれぞれが前記ネットワークとつなが
    れたコンピュータを有し前記ネットワークのノードにお
    ける複数のユーザと、 前記ユーザのそれぞれにおいて記憶されそれぞれのコン
    ピュータにつながれたオブジェクトを含む世界モデル
    と、 前記世界モデルのオブジェクトが変化するように、該世
    界モデルのオブジェクトを変更することによって、前記
    ユーザにおいて前記世界モデルを変更する手段と、 変化したオブジェクトの現在の状態を損失の多い直接の
    リンクを通じて他のユーザに通信するメッセージを含
    む、前記オブジェクトの現在の状態を前記他のユーザに
    迅速に通信する手段とを備え、 前記オブジェクト状態メッセージは、前のN(Nは1よ
    りも大きい数)個の状態のうちのいずれかから異なって
    いる状態の部分のみを示す示差メッセージであり、それ
    によって、直前のメッセージが失われた時であっても示
    差メッセージを解釈することができ、すべての失われた
    メッセージを再送信する必要がないようになっている通
    信システム。
  10. 【請求項10】 ユーザにおいて、順番が狂って所定量
    の時間よりも大きく遅延して到着するオブジェクト状態
    を記述するメッセージを拒絶し、それによって前記ユー
    ザがオブジェクトが除去されたという記録を維持してお
    かなければならない期間を限定し、該オブジェクトにつ
    いての順番が狂ったメッセージを拒絶することができる
    ようにする手段をさらに含む請求項1記載の通信システ
    ム。
  11. 【請求項11】 ユーザの前記グループが動的に変化す
    ることができ、前記サーバが、ユーザが要求した場合に
    はそのユーザに世界モデルにおけるすべてのオブジェク
    トの現在の状態をダウンロードする手段を含む請求項1
    記載の通信システム。
  12. 【請求項12】 前記損失の多い直接の通信リンクが、
    マルチキャストを利用している請求項1記載の通信シス
    テム。
  13. 【請求項13】 前記サーバは、直接的なマルチキャス
    ト通信が不可能な前記ユーザにマルチキャスト通信をシ
    ミュレーションする手段を含む請求項1記載の通信シス
    テム。
  14. 【請求項14】 前記オブジェクトがGUIDによって
    識別され、GUIDのオブジェクトへの割り当てが、与
    えられたユーザによって修正されたすべてのオブジェク
    トについてのGUIDが多くのビットを共通に有するよ
    うにし、それによって、表されるべきオブジェクト状態
    を記述するメッセージがより完成するようにする手段を
    含む請求項9記載の通信システム。
  15. 【請求項15】 オブジェクト状態を記述する前記示差
    メッセージを作り出す前記手段は、前記N個の前の状態
    のそれぞれの間での送信においてオブジェクトのどの構
    成要素が変化したかを表すビットマスクを含み、それに
    よって、該ビットマスクを論理和演算と組み合わせるこ
    とによって、オブジェクト状態を記述する前記示差メッ
    セージにどのような情報を含む必要があるかを迅速およ
    びコンパクトに判定することができる請求項9記載の通
    信システム。
JP10243659A 1997-08-29 1998-08-28 通信システム Pending JPH11161622A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/920585 1997-08-29
US08/920,585 US6006254A (en) 1997-08-29 1997-08-29 System for the reliable, fast, low-latency communication of object state updates over a computer network by combining lossy and lossless communications

Publications (1)

Publication Number Publication Date
JPH11161622A true JPH11161622A (ja) 1999-06-18

Family

ID=25444005

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10243659A Pending JPH11161622A (ja) 1997-08-29 1998-08-28 通信システム

Country Status (3)

Country Link
US (1) US6006254A (ja)
EP (1) EP0909069A3 (ja)
JP (1) JPH11161622A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002342250A (ja) * 2001-05-14 2002-11-29 K-Plex Inc オブジェクト指向技術を用いた情報共有方法及び装置
JPWO2002027521A1 (ja) * 2000-09-28 2004-02-05 エヌ・ティ・ティ・コムウェア株式会社 コンピュータシステム、コンピュータシステムの制御方法、端末装置および記録媒体
US7533185B2 (en) 2002-03-22 2009-05-12 Ricoh Company, Ltd. Data communication method, system and program using unicast and multicast communications

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11154178A (ja) * 1997-11-19 1999-06-08 Fujitsu Ltd 通信管理装置及び記録媒体
JP3620010B2 (ja) * 1998-05-22 2005-02-16 富士通株式会社 無線通信システムで用いられる装置とプログラム記録媒体
US6952829B1 (en) * 1998-06-29 2005-10-04 International Business Machines Corporation Dynamically adapting between pessimistic and optimistic notifications to replicated objects
US6697869B1 (en) * 1998-08-24 2004-02-24 Koninklijke Philips Electronics N.V. Emulation of streaming over the internet in a broadcast application
CN1222902C (zh) * 1999-05-10 2005-10-12 艾利森电话股份有限公司 通信网中的方法和设备
AU5289000A (en) 1999-05-24 2000-12-12 Hewlett-Packard Company Reliable datagram
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
US6957346B1 (en) 1999-06-15 2005-10-18 Ssh Communications Security Ltd. Method and arrangement for providing security through network address translations using tunneling and compensations
US6628287B1 (en) * 2000-01-12 2003-09-30 There, Inc. Method and apparatus for consistent, responsive, and secure distributed simulation in a computer network environment
WO2001071512A1 (en) * 2000-03-23 2001-09-27 Fraunhofer Center For Research In Computer Graphics, Inc. Extensible information distribution mechanism for session management
US8463839B2 (en) 2000-03-28 2013-06-11 Cybernet Systems Corporation Distributed computing environment
US6993587B1 (en) 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
US6748447B1 (en) * 2000-04-07 2004-06-08 Network Appliance, Inc. Method and apparatus for scalable distribution of information in a distributed network
US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US6618752B1 (en) * 2000-04-18 2003-09-09 International Business Machines Corporation Software and method for multicasting on a network
US7171484B1 (en) 2000-05-24 2007-01-30 Krause Michael R Reliable datagram transport service
GB0015621D0 (en) * 2000-06-27 2000-08-16 Koninkl Philips Electronics Nv Multicast radio communication system and apparatus
WO2002003597A1 (en) * 2000-06-30 2002-01-10 Kanad Ghose System and method for fast, reliable byte stream transport
US6950845B2 (en) * 2000-10-23 2005-09-27 Amdocs (Israel) Ltd. Data collection system and method for reducing latency
US7244181B2 (en) * 2000-11-14 2007-07-17 Netamin Communication Corp. Multi-player game employing dynamic re-sequencing
US7035911B2 (en) 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
US7188145B2 (en) * 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US20020192623A1 (en) * 2001-06-15 2002-12-19 Brad Sather Method and apparatus for delivering educational training and assessment via the internet
KR100377853B1 (ko) * 2001-06-18 2003-03-29 주식회사 미라콤아이앤씨 차분 데이터 전송 기능을 갖는 메시지 전송 시스템 및 그방법
US20030093435A1 (en) * 2001-11-05 2003-05-15 Bandekar Vijay R. Method and system for application level data object synchronization between two or more processes
US7065137B2 (en) * 2002-01-24 2006-06-20 Hewlett-Packard Development Company, L.P. Difference messaging protocol that uses prior state information
US7376754B2 (en) * 2003-02-27 2008-05-20 Bea Systems, Inc. System and method for communications between servers in a cluster
FR2862835B1 (fr) * 2003-11-24 2006-04-14 Medialive Diffusion securisee et personnalisee de flux audiovisuels par un systeme hybride unicast/multicast
US8930579B2 (en) * 2004-09-13 2015-01-06 Keysight Technologies, Inc. System and method for synchronizing operations of a plurality of devices via messages over a communication network
US20060056403A1 (en) * 2004-09-13 2006-03-16 Pleasant Daniel L System and method for robust communication via a non-reliable protocol
US7561598B2 (en) * 2004-09-13 2009-07-14 Agilent Technologies, Inc. Add-on module for synchronizing operations of a plurality of devices
US7940875B2 (en) * 2004-09-13 2011-05-10 Agilent Technologies, Inc. System and method for coordinating the actions of a plurality of devices via scheduling the actions based on synchronized local clocks
US20060135259A1 (en) * 2004-12-17 2006-06-22 Nokia Corporation System, game server, terminal, and method for game event notification in a multiplayer game
US20060135258A1 (en) * 2004-12-17 2006-06-22 Nokia Corporation System, network entity, client and method for facilitating fairness in a multiplayer game
US20060136584A1 (en) * 2004-12-17 2006-06-22 Nokia Corporation System, network entity, client, method and computer program product for managing a contact list
JP4541992B2 (ja) 2005-08-02 2010-09-08 キヤノン株式会社 ネットワーク機器及びその制御方法、及びプログラム
JP4541994B2 (ja) * 2005-08-11 2010-09-08 キヤノン株式会社 制御装置、制御方法及びプログラム
US7831554B2 (en) * 2005-08-31 2010-11-09 Sap Ag Mobile data management using association table
US20070265043A1 (en) * 2006-04-12 2007-11-15 Wang Andy Y Team-based networked video gaming and automatic event management
US8819565B2 (en) * 2008-05-14 2014-08-26 International Business Machines Corporation Describing elements in a virtual world based on changes since a previous encounter
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US8588108B2 (en) * 2011-02-21 2013-11-19 Cisco Technology, Inc. Method and apparatus to trigger DAG reoptimization in a sensor network
US10270719B2 (en) * 2013-09-10 2019-04-23 Illinois Tool Works Inc. Methods for handling data packets in a digital network of a welding system
WO2016061658A1 (en) * 2014-10-20 2016-04-28 Tsx Inc. Database updating with latency tolerance
WO2018011054A1 (en) * 2016-07-15 2018-01-18 Koninklijke Kpn N.V. Streaming virtual reality video
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2088753C (en) * 1992-02-04 1999-02-16 Tomoki Osawa Point-to-multipoint communication network capable of retransmitting a multicast signal
EP0598969B1 (en) * 1992-11-27 1999-02-10 International Business Machines Corporation Inter-domain multicast routing
US5761433A (en) * 1995-11-13 1998-06-02 Billings; Roger E. System for communicating data in a network using both a daisy chain link and separate broadcast links
US5790772A (en) * 1996-04-30 1998-08-04 International Business Machines Corporation Communications method involving groups of processors of a distributed computing environment
US5838909A (en) * 1996-05-23 1998-11-17 Sandcastle, Inc. Reducing latency when synchronizing access to a multi-user database over a network
US5898679A (en) * 1996-12-30 1999-04-27 Lucent Technologies Inc. Wireless relay with selective message repeat and method of operation thereof
US5899810A (en) * 1997-01-24 1999-05-04 Kaon Interactive Corporation Distributed game architecture to overcome system latency

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2002027521A1 (ja) * 2000-09-28 2004-02-05 エヌ・ティ・ティ・コムウェア株式会社 コンピュータシステム、コンピュータシステムの制御方法、端末装置および記録媒体
JP2002342250A (ja) * 2001-05-14 2002-11-29 K-Plex Inc オブジェクト指向技術を用いた情報共有方法及び装置
US7533185B2 (en) 2002-03-22 2009-05-12 Ricoh Company, Ltd. Data communication method, system and program using unicast and multicast communications

Also Published As

Publication number Publication date
EP0909069A2 (en) 1999-04-14
US6006254A (en) 1999-12-21
EP0909069A3 (en) 2004-01-07

Similar Documents

Publication Publication Date Title
US6006254A (en) System for the reliable, fast, low-latency communication of object state updates over a computer network by combining lossy and lossless communications
Watson Timer-based mechanisms in reliable transport protocol connection management
CN101573940B (zh) 用于tcp高可用性的方法和装置
JP2825120B2 (ja) マルチキャスト伝送のための方法及び通信ネットワーク
CN101414949B (zh) 一种链式数据传输方法、节点及系统
US20150222444A1 (en) System and method for reliable multicast data transport
US20200412600A1 (en) High availability using multiple network elements
JP2006094510A (ja) レートを同期させたクロックを使用した高信頼メッセージング
US20130054526A1 (en) Multicast database replication
US12563133B2 (en) Point-to-point database synchronization over a transport protocol
Jones et al. Protocol design for large group multicasting: the message distribution protocol
US7496038B2 (en) Method for faster detection and retransmission of lost TCP segments
US20040267960A1 (en) Force master capability during multicast transfers
KR100678956B1 (ko) 네트워크 상에서 컨텐츠 정보를 요청 및 제공하는 장치 및그 방법
Fisher Multicast issues for collaborative virtual environments
Waters et al. The interactive sharing transfer protocol version 1.0
CN100512288C (zh) 基于传输控制协议的报文传输系统及其方法
KR100921491B1 (ko) 링형 통신망에서 손실없는 메시지 전송방법
US8634419B2 (en) Reliable and fast method and system to broadcast data
Jalote Efficient ordered broadcasting in reliable CSMA/CD networks
Gawande Improvements to psync: Distributed full dataset synchronization in named-data networking
CN120185778A (zh) 一种基于vrb的抗丢包数据传输方法
Latha et al. INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY Implementation of Command Transfer Protocol for Cluster in Networking
KR20200036196A (ko) 기록매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081118