(57)【要約】【課題】  会議データを階層に構成のマルチキャスト会議セッションに参加しているコンピュータに信頼性のある形で配信する。【解決手段】  子コンピュータがマルチキャストパケット（例、ＩＰマルチキャストパケット）を受信しなかった場合、子コンピュータは親コンピュータに否定応答を送信する。これに応答して、親コンピュータはマルチキャストパケット中に収容されていた会議データを子コンピュータに再送信する。会議データはユニキャスト（例、ＴＣＰ）を介して子コンピュータに再送信することができる。したがって、マルチキャストを介して受信されなかったか、または損なわれた会議データを、ユニキャストを介して修復することができる。コンピュータはルートコンピュータと通信する必要なく、既存のマルチキャスト会議セッションに加わることができる。ルートコンピュータは変化したネットワーク条件を補償するようにマルチキャスト送信速度を調整する。【選択図】  図２
2004343762.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の子コンピュータシステムにネットワーク接続可能な親コンピュータシステムにおいて、既存のマルチキャスト会議セッションに加わるように子コンピュータシステムを勧誘するための方法であって、
前記マルチキャスト会議セッションのための指定のマルチキャストアドレスにアクセスする動作と、
少なくとも１つの前記指定のマルチキャストアドレスを含むマルチキャスト勧誘メッセージを子コンピュータシステムに送信する動作と、
前記子コンピュータシステムが前記マルチキャスト会議セッションのためのマルチキャストパケットを受信できることを示すマルチキャストステータスメッセージを受信する動作と、
前記マルチキャストステータスメッセージを受信したことに応答して、次のマルチキャストシーケンス番号を送信する動作であって、前記次のマルチキャストシーケンス番号は、前記マルチキャストセッションのための次のマルチキャストパケットに関連付けられることになるマルチキャストシーケンス番号を示す動作と
を含むことを特徴とする方法。
【請求項２】
マルチキャストアドレスにアクセスする前記動作は、コンピュータシステムの階層ツリーにおいて前記親コンピュータシステムより上のコンピュータシステムから前記マルチキャストアドレスを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
指定のマルチキャストアドレスにアクセスする前記動作は、前記親コンピュータシステムが前記指定のマルチキャストアドレスを割り振る動作を含むことを特徴とする請求項１に記載の方法。
【請求項４】
マルチキャスト勧誘メッセージを子コンピュータシステムに送信する前記動作は、前記指定のマルチキャストアドレス、指定のマルチキャストポート、およびマルチキャスト送信側のネットワークアドレスを含むマルチキャスト勧誘メッセージを送信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項５】
マルチキャストステータスメッセージを受信する前記動作は、前記マルチキャストセッションに参加しているコンピュータシステムに送信されたマルチキャストパケットの受信の成功を確認するメッセージを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項６】
少なくとも１つの親コンピュータシステムにネットワーク接続可能な子コンピュータシステムにおいて、既存のマルチキャスト会議セッションに加わる方法であって、
前記マルチキャスト会議セッションのための少なくとも１つの指定のマルチキャストアドレスを含むマルチキャスト勧誘メッセージを前記親コンピュータシステムから受信する動作と、
前記マルチキャスト会議セッションに参加しているコンピュータシステムによる受信のためにマルチキャスト送信側から送信されているマルチキャストパケットを前記指定のマルチキャストアドレスにおいて受信する動作と、
前記マルチキャストパケットを受信したことに応答して、マルチキャストステータスメッセージを前記親コンピュータシステムに送信する動作であって、前記マルチキャストステータスメッセージは、前記子コンピュータシステムが前記マルチキャスト会議セッションのためのマルチキャストパケットを受信できることを前記親コンピュータシステムに示す動作と、
次のマルチシーケンス番号を前記親コンピュータシステムから受信する動作であって、前記次のマルチキャストシーケンス番号は、前記マルチキャストセッションのための次のマルチキャストパケットに関連付けられることになるマルチキャストシーケンス番号を示す動作と
を含むことを特徴とする方法。
【請求項７】
マルチキャスト勧誘メッセージを前記親コンピュータシステムから受信する前記動作は、前記指定のマルチキャストアドレス、指定のマルチキャストポート、およびマルチキャスト送信側のネットワークアドレスを含むマルチキャスト勧誘メッセージを受信する動作を含むことを特徴とする請求項６に記載の方法。
【請求項８】
マルチキャストパケットを受信する前記動作は、コンピュータシステムの階層ツリーにおいて前記親コンピュータシステムより上のコンピュータシステムによって送信されたマルチキャストパケットを受信する動作を含むことを特徴とする請求項６に記載の方法。
【請求項９】
マルチキャストステータスメッセージを前記親コンピュータシステムに送信する前記動作は、前記マルチキャストセッションに参加しているコンピュータシステムに送信された前記マルチキャストパケットの受信を確認するメッセージを送信する動作を含むことを特徴とする請求項６に記載の方法。
【請求項１０】
少なくとも１つの親コンピュータシステムと１つまたは複数の子コンピュータシステムとを含み、前記親コンピュータシステムは受信バッファを有し、前記１つまたは複数の子コンピュータシステムにネットワーク接続可能であり、前記親コンピュータシステムは前記１つまたは複数の子コンピュータシステムのそれぞれから会議データの受信の確認を受信した後に、前記受信バッファから前記会議データを消去するように構成されている、階層的に構成されたマルチキャスト会議セッションにおいて、少なくとも１つの子コンピュータシステムによって十分に受信されなかった会議データを前記親コンピュータシステムが修復する方法であって、
前記マルチキャスト会議セッションに参加している他のコンピュータシステムに配信するためにルートコンピュータシステムによって最初にマルチキャストされた、前記マルチキャスト会議セッションのための会議データが入っているマルチキャストパケットにアクセスする動作と、
前記会議データを前記受信バッファに格納する動作と、
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出する動作と、
前記マルチキャスト会議セッションにおける前記親コンピュータシステムの位置に少なくとも基づいて前記格納された会議データを前記子コンピュータシステムに再送信するための配信機構を特定する動作と、
前記特定された配信機構に従って前記格納された会議データを前記子コンピュータシステムに再送信する動作と
を含むことを特徴とする方法。
【請求項１１】
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出する前記動作は、前記子コンピュータシステムが前記マルチキャストパケットを受信しなかったことを検出する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出する前記動作は、前記会議データが入っているパケットが受信されなかったことを示すビットマップを受信する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記会議データが入っているパケットが受信されなかったことを示すビットマップを受信する前記動作は、前記パケットが受信されなかったことを前記パケットに対応するシーケンス番号が示す動作を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記パケットが受信されなかったことを前記パケットに対応するシーケンス番号が示す前記動作は、他の１つまたは複数のシーケンス番号が他のパケットが受信されたことを示す動作を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出する前記動作は、前記子コンピュータシステムから否定応答メッセージを受信する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記子コンピュータシステムから否定応答メッセージを受信する前記動作は、最後の連続受信パケットシーケンス番号、最後の受信パケットシーケンス番号、および前記最後の連続受信パケットシーケンス番号と前記最後のパケットシーケンス番号との間の受信された前記マルチキャストパケットのビットマップを含む否定応答メッセージを受信する動作を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出する前記動作は、前記マルチキャストパケットにアクセスする往復時間内に前記子コンピュータシステムから対応する受信確認メッセージを受信していない動作を含み、前記往復時間は、前記親コンピュータシステムと前記子コンピュータシステムとの間でパケットが移動する時間の少なくとも推定値であることを特徴とする請求項１０に記載の方法。
【請求項１８】
前記マルチキャストパケットにアクセスする往復時間内に前記子コンピュータシステムから対応する受信確認メッセージを受信していない前記動作は、先のマルチキャストパケット受信確認メッセージの受信時刻と前記先のマルチキャストパケットの受信時刻の差に少なくとも基づく往復時間内に対応する受信確認メッセージを受信していない動作を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記マルチキャストパケットにアクセスする往復時間内に前記子コンピュータシステムから対応する受信確認メッセージを受信していない前記動作は、受信確認の内破を引き起こす可能性が低下するように複数のマルチキャストパケットの前記子コンピュータシステムによる受信を集合的に確認する対応する受信確認メッセージを受信していない動作を含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
複数のマルチキャストパケットの前記子コンピュータシステムによる受信を集合的に確認する対応する受信確認メッセージを受信していない前記動作は、前記マルチキャスト会議セッションに参加している子コンピュータシステムの数に少なくとも基づいて前記複数のマルチキャストパケットを計算する動作を含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
子コンピュータシステムが前記マルチキャストパケットを受信しなかったことを検出する前記動作は、キープアライブメッセージに応答して前記子コンピュータシステムから対応する受信確認メッセージを受信していない動作を含むことを特徴とする請求項１０に記載の方法。
【請求項２２】
前記格納された会議データを前記子コンピュータシステムに再送信するための配信機構を特定する前記動作は、前記格納された会議データを再送信するためにユニキャスト機構を特定する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項２３】
前記格納された会議データを再送信するためにユニキャスト機構を特定する前記動作は、前記格納された会議データを再送信するための機構としてＴＣＰを特定する動作を含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記格納された会議データを再送信するためにユニキャスト機構を特定する前記動作は、前記マルチキャストパケットを受信しなかった直下の子コンピュータシステムの数が指定の閾値を下回っていることを検出する動作を含むことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記格納された会議データを前記子コンピュータシステムに再送信するための配信機構を特定する前記動作は、前記マルチキャストパケットを受信していない子コンピュータシステムの数が指定の閾値を上回っていることに基づいて前記格納された会議データを再送信するためにマルチキャスト機構を特定する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項２６】
前記格納された会議データを再送信するためにマルチキャスト機構を特定する前記動作は、前記格納された会議データを再送信するためにＩＰマルチキャスト機構を特定する動作を含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記特定された配信機構に従って前記格納された会議データを前記子コンピュータシステムに再送信する前記動作は、修復会議データを前記子コンピュータシステムに提供するために、ユニキャスト機構に従って前記格納された会議データを前記子コンピュータシステムに再送信する動作を含むことを特徴とする請求項１０に記載の方法。
【請求項２８】
修復会議データを前記子コンピュータシステムに提供するためにユニキャスト機構に従って前記格納された会議データを前記子コンピュータシステムに再送信する前記動作は、ＩＰマルチキャストを介して十分に受信されなかった会議データを修復するために、ＴＣＰに従って前記格納された会議データを再送信する動作を含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
少なくとも１つの子コンピュータシステムと１つの親コンピュータシステムとを含み、前記子コンピュータシステムが前記親コンピュータシステムにネットワーク接続可能である階層的に構成されたマルチキャスト会議セッションにおいて、前記マルチキャスト会議セッションに参加しているコンピュータシステムに会議データが当初マルチキャストされたときに十分に受信されなかった前記会議データを修復するために前記子コンピュータシステムが修復会議データを受信する方法であって、
前記マルチキャスト会議セッションに参加している他のコンピュータシステムに配信するためにルートコンピュータシステムによって当初マルチキャストされた最後の連続受信パケットシーケンス番号を有する最後の連続受信マルチキャストパケットを受信する動作と、
前記マルチキャスト会議セッションに参加している他のコンピュータシステムに配信するために前記ルートコンピュータシステムによって当初マルチキャストされた前記最後の受信シーケンス番号を有する最後の受信マルチキャストパケットを受信する動作と、
前記最後の連続受信パケットシーケンス番号と前記最後の受信シーケンス番号との間のシーケンス番号を有する１つまたは複数のマルチキャストパケットが受信されなかったことを検出する動作と、
前記子コンピュータシステムが前記最後の連続受信パケットシーケンス番号と前記最後の受信シーケンス番号との間のシーケンス番号を有する前記１つまたは複数のマルチキャストパケットを受信しなかったことを前記親コンピュータシステムに示す否定応答メッセージを前記親コンピュータシステムに送信する動作と、
前記子コンピュータシステムによって十分に受信されなかった会議データを修復するための修復会議データを前記親コンピュータシステムから受信する動作と
を含むことを特徴とする方法。
【請求項３０】
最後の受信シーケンス番号を有する最後の受信マルチキャストパケットを受信する前記動作は、前記ルートコンピュータシステムからキープアライブメッセージを受信する動作を含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
否定応答メッセージを前記親コンピュータシステムに送信する前記動作は、前記最後の連続受信パケットシーケンス番号、前記最後の受信パケットシーケンス番号、および前記最後の連続パケットシーケンス番号と前記最後のパケットシーケンス番号との間の受信された前記マルチキャストパケットのビットマップを含む否定応答メッセージを送信する動作を含むことを特徴とする請求項２９に記載の方法。
【請求項３２】
修復会議データを前記親コンピュータシステムから受信する前記動作は、マルチキャスト機構を介して前記修復会議データを受信する動作を含むことを特徴とする請求項２９に記載の方法。
【請求項３３】
マルチキャスト機構を介して前記修復会議データを受信する前記動作は、ＩＰマルチキャストを介して修復会議データを受信する動作を含むことを特徴とする請求項３２に記載の方法。
【請求項３４】
修復会議データを前記親コンピュータシステムから受信する前記動作は、ユニキャスト機構を介して前記修復会議データを受信する動作を含むことを特徴とする請求項２９に記載の方法。
【請求項３５】
ユニキャスト機構を介して前記修復会議データを受信する前記動作は、ＴＣＰを介して修復会議データを受信する動作を含むことを特徴とする請求項３４に記載の方法。
【請求項３６】
１つまたは複数の直下の子コンピュータシステムにネットワーク接続可能である少なくとも１つのルートコンピュータシステムを含み、前記ルートコンピュータシステムが、パケットを順序付けるのに使用できるシーケンス番号とともにパケットを伝送するように構成され、さらに、後続のパケットを先のパケットから区別できるようにパケットの送信後に前記シーケンス番号を調整するように構成されている、階層的に構成されたマルチキャスト会議セッションにおいて、前記マルチキャスト会議セッションに参加している前記コンピュータシステムによって使用されるリンク上の輻輳を前記ルートコンピュータシステムが制御する方法であって、
前記ルートコンピュータシステムが前記マルチキャスト会議セッションに参加している他のコンピュータシステムに会議データをマルチキャストすることになる送信速度である現行送信速度を特定する動作と、
次に送信されるマルチキャストパケットに関連付けられることになる次のパケットシーケンス番号を特定する動作と、
前記次のパケットシーケンス番号より指定閾値のシーケンス数だけ大きい速度変更パケットシーケンス番号を選択する動作であって、前記速度変更パケットシーケンス番号は、前記ルートコンピュータシステムが潜在的に前記現行送信速度を調整することができるときのシーケンス番号を示す動作と、
前記次のパケットシーケンス番号を有する少なくとも１つの次のマルチキャストパケットを送信する動作であって、前記少なくとも１つの次のマルチキャストパケットは前記現行送信速度に従って送信される動作と、
前記１つまたは複数の直下の子コンピュータシステムが前記次のマルチキャストパケットの受信を示したかどうかに少なくとも基づいて前記現行送信速度を調整する動作と
を含むことを特徴とする方法。
【請求項３７】
速度変更パケットシーケンス番号を選択する前記動作は、前記速度変更パケットシーケンス番号に達する前に前記１つまたは複数の直下の子コンピュータシステムのそれぞれが受信確認メッセージを送信する機会を有するように前記指定閾値を選択する動作を含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記次のパケットシーケンス番号を有する少なくとも１つの次のマルチキャストパケットを送信する前記動作は、前記次のマルチキャストパケットと前記速度変更パケットシーケンス番号を有するマルチキャストパケットとを含むマルチキャストパケットのシーケンスを送信する動作を含むことを特徴とする請求項３６に記載の方法。
【請求項３９】
前記現行送信速度を調整する前記動作は、直下の子コンピュータシステムが前記次のパケットシーケンス番号と前記速度変更パケットシーケンス番号との間のパケットシーケンス番号を有する１つまたは複数のマルチキャストパケットを受信しなかったことを示す否定応答メッセージを前記直下の子コンピュータシステムから受信したことに応答して、前記現行送信速度を低減させる動作を含むことを特徴とする請求項３６に記載の方法。
【請求項４０】
否定応答メッセージを直下の子コンピュータシステムから受信したことに応答して前記現行送信速度を低減させる前記動作は、受信されなかったマルチキャストパケットの数に基づいて前記低減のサイズを決定する動作を含むことを特徴とする請求項３９に記載の方法。
【請求項４１】
否定応答メッセージを直下の子コンピュータシステムから受信したことに応答して前記現行送信速度を低減させる前記動作は、先の送信速度に適用された調整に基づいて前記低減のサイズを決定して前記現行送信速度を生成する動作を含むことを特徴とする請求項３９に記載の方法。
【請求項４２】
前記現行送信速度を調整する前記動作は、前記１つまたは複数の直下の子コンピュータシステムのそれぞれから受信確認メッセージを受信することに応答して、前記現行送信速度を増加させる動作であって、各受信確認メッセージは対応する直下の子コンピュータシステムが前記次のパケットシーケンス番号と前記速度変更パケットシーケンス番号との間のパケットシーケンス番号を有するすべてのマルチキャストパケットを受信したことを示す動作を含むことを特徴とする請求項３６に記載の方法。
【請求項４３】
受信確認メッセージを前記１つまたは複数の直下の子コンピュータシステムのそれぞれから受信したことに応答して前記現行送信速度を増加させる前記動作は、以前に記録された最高送信速度に基づいて前記増加のサイズを決定する動作を含むことを特徴とする請求項４２に記載の方法。
【請求項４４】
受信確認メッセージを前記１つまたは複数の直下の子コンピュータシステムのそれぞれから受信したことに応答して前記現行送信速度を増加させる前記動作は、前記現行送信速度を生成するために先の送信速度に適用された調整に基づいて前記増加のサイズを決定する動作を含むことを特徴とする請求項４２に記載の方法。
【請求項４５】
１つまたは複数の子コンピュータシステムにネットワーク接続可能な親コンピュータシステムにおける使用のためのコンピュータプログラム製品であって、既存のマルチキャスト会議セッションに加わるよう子コンピュータシステムを勧誘する方法を実装するためのコンピュータプログラム製品であって、プロセッサによって実行されたとき、
前記マルチキャスト会議セッションのための指定のマルチキャストアドレスにアクセスすることと、
少なくとも１つの前記指定のマルチキャストアドレスを含むマルチキャスト勧誘メッセージを子コンピュータシステムに送信することと、
前記子コンピュータシステムが前記マルチキャスト会議セッションのためのマルチキャストパケットを受信できることを示すマルチキャストステータスメッセージを受信することと、
前記マルチキャストステータスメッセージを受信したことに応答して前記マルチキャストセッションのための受信される次のマルチキャストパケットに関連付けられることになるマルチキャストシーケンス番号を示す次のマルチキャストシーケンス番号を前記子コンピュータシステムに送信することと
を前記親コンピュータシステムに実行させるコンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読メディアを備えたことを特徴とするコンピュータプログラム製品。
【請求項４６】
前記１つまたは複数のコンピュータ可読メディアは、物理的記憶メディアを含むことを特徴とする請求項４５に記載の方法。
【請求項４７】
少なくとも１つの親コンピュータシステムにネットワーク接続可能な子コンピュータシステムにおける使用のためのコンピュータプログラム製品であって、マルチキャスト会議セッションに加わるための方法を実装するためのコンピュータプログラム製品であって、プロセッサによって実行されたとき、
前記マルチキャスト会議セッションのための少なくとも１つの指定のマルチキャストアドレスを含むマルチキャスト勧誘メッセージを前記親コンピュータシステムから受信することと、
前記マルチキャスト会議セッションに参加しているコンピュータシステムによる受信のためにマルチキャスト送信側から送信されているマルチキャストパケットを前記指定のマルチキャストアドレスにおいて受信することと、
前記マルチキャストパケットを受信したことに応答して、前記子コンピュータシステムが前記マルチキャスト会議セッションのためのマルチキャストパケットを受信できることを前記親コンピュータシステムに示すマルチキャストステータスメッセージを前記親コンピュータシステムに送信することと、
前記子コンピュータシステムによって受信される次のマルチキャストパケットに関連付けられることになるマルチキャストシーケンス番号を示す次のマルチキャストシーケンス番号を前記親コンピュータシステムから受信することと
を前記子コンピュータシステムに実行させるコンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読メディアを備えたことを特徴とするコンピュータプログラム製品。
【請求項４８】
前記１つまたは複数のコンピュータ可読メディアは、物理的記憶メディアを含むことを特徴とする請求項４７に記載の方法。
【請求項４９】
少なくとも１つの親コンピュータシステムと１つまたは複数の子コンピュータシステムとを含み、前記親コンピュータシステムは受信バッファを有し、前記１つまたは複数の子コンピュータシステムにネットワーク接続可能であり、前記親コンピュータシステムは前記１つまたは複数の子コンピュータシステムのそれぞれから会議データを受信したことの受信確認を受信した後に、前記受信バッファから前記会議データを消去するように構成されている、階層的に構成されたマルチキャスト会議セッションにおける使用のためのコンピュータプログラム製品であって、少なくとも１つの子コンピュータシステムによって十分に受信されなかった会議データを前記親コンピュータシステムが修復するための方法を実装するためのコンピュータプログラム製品であって、プロセッサによって実行されたとき、
マルチキャスト会議セッションに含まれる他のコンピュータシステムに配信するためにルートコンピュータシステムによって当初マルチキャストされた前記マルチキャスト会議セッションのための会議データが入っているマルチキャストパケットにアクセスすることと、
前記会議データを前記受信バッファに格納することと、
子コンピュータシステムが前記マルチキャストパケットを十分に受信しなかったことを検出することと、
前記マルチキャスト会議セッションにおける前記親コンピュータシステムの位置に少なくとも基づいて、前記格納された会議データを前記子コンピュータシステムに再送信するための配信機構を特定することと、
前記特定された配信機構に従って前記子コンピュータシステムに前記会議データを再送信することと
を前記親コンピュータシステムに実行させるコンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読メディアを備えたことを特徴とするコンピュータプログラム製品。
【請求項５０】
前記１つまたは複数のコンピュータ可読メディアは、システムメモリを含むことを特徴とする請求項４９に記載の方法。
【請求項５１】
少なくとも１つの子コンピュータシステムと１つの親コンピュータシステムとを含み、前記子コンピュータシステムが、親コンピュータシステムにネットワーク接続可能である階層的に構成されたマルチキャスト会議セッションにおける使用のためのコンピュータプログラム製品であって、前記マルチキャスト会議セッションに参加しているコンピュータシステムに会議データが当初マルチキャストされたときに十分に受信されなかった会議データを前記子コンピュータシステムが受信するための方法を実装するためのコンピュータプログラム製品であって、プロセッサによって実行されたとき、
最後の連続受信パケットシーケンス番号を有する最後の連続受信マルチキャストパケットを受信することであって、前記最後の連続受信マルチキャストパケットは、前記マルチキャスト会議セッションに参加している他のコンピュータシステムに配信するためにルートコンピュータシステムによって当初マルチキャストされたことと、
最後の受信シーケンス番号を有する最後の受信マルチキャストパケットを受信することであって、前記最後の受信マルチキャストパケットは、前記マルチキャスト会議セッションに参加している他のコンピュータシステムに配信するために前記ルートコンピュータシステムによって当初マルチキャストされたことと、
前記最後の連続受信パケットシーケンス番号と前記最後の受信シーケンス番号との間のシーケンス番号を有する１つまたは複数のマルチキャストパケットが受信されなかったことを検出することと、
前記最後の連続受信パケットシーケンス番号と前記最後の受信シーケンス番号との間のシーケンス番号を有する前記１つまたは複数のマルチキャストパケットを前記子コンピュータシステムが受信しなかったことを前記親コンピュータシステムに示す否定応答メッセージを前記親コンピュータシステムに送信することと、
前記子コンピュータシステムによって十分に受信されなかった会議データを修復するための修復会議データを前記親コンピュータシステムから受信することと
を前記子コンピュータシステムに実行させるコンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読メディアを備えたことを特徴とするコンピュータプログラム製品。
【請求項５２】
前記１つまたは複数のコンピュータ可読メディアは、物理的記憶メディアを含むことを特徴とする請求項５１に記載の方法。
【請求項５３】
１つまたは複数の直下の子コンピュータシステムにネットワーク接続可能である少なくとも１つのルートコンピュータシステムを含み、前記ルートコンピュータシステムはパケットを順序付けるために使用できるシーケンス番号とともに前記パケットを送信するように構成され、前記ルートコンピュータシステムは、さらに、後続のパケットを先のパケットから区別することができるようにパケットの送信後に前記シーケンス番号を調整するように構成されている、階層的に構成されたマルチキャスト会議セッションにおける使用のためのコンピュータプログラム製品であって、前記マルチキャスト会議セッションの前記コンピュータシステムによって使用されるリンク上の輻輳を前記ルートコンピュータシステムが制御する方法を実装するためのコンピュータプログラム製品であって、プロセッサによって実行されたとき、
前記ルートコンピュータシステムが前記マルチキャスト会議セッションに参加している他のコンピュータシステムに会議データをマルチキャストすることになる送信速度である現行送信速度を特定することと、
次に送信されるマルチキャストパケットに関連付けられることになる次のパケットシーケンス番号を特定することと、
前記次のパケットシーケンス番号より指定閾値のシーケンス数だけ大きく、前記ルートコンピュータシステムが潜在的に前記現行送信速度を調整することができるときのシーケンス番号を示す速度変更パケットシーケンス番号を選択することと、
前記次のパケットシーケンス番号を有する少なくとも１つの次のマルチキャストパケットを送信することであって、前記少なくとも１つの次のマルチキャストパケットは前記現行送信速度に従って送信されることと、
前記１つまたは複数の直下の子コンピュータシステムが前記次のマルチキャストパケットの受信を示したかどうかに少なくとも基づいて前記現行送信速度を調整することと
を前記ルートコンピュータシステムに実行させるコンピュータ実行可能命令を格納した１つまたは複数のコンピュータ可読メディアを備えたことを特徴とするコンピュータプログラム製品。
【請求項５４】
前記１つまたは複数のコンピュータ可読メディアは、物理的記憶メディアを含むことを特徴とする請求項５３に記載の方法。
【請求項５５】
修復情報を表すためのデータ構造を格納した１つまたは複数のコンピュータ可読メディアであって、前記データ構造は、
マルチキャスト会議セッションに参加しているコンピュータシステムによって受信された最後の連続受信マルチキャストパケットのシーケンス番号を表す最後の連続受信フィールドと、
前記マルチキャスト会議セッションに参加している前記コンピュータシステムによって受信された最後の受信マルチキャストパケットのシーケンス番号を表す最後の受信フィールドと、
前記最後の連続受信フィールドにて表されるシーケンス番号と前記最後の受信フィールドにて表されるシーケンス番号との間のシーケンス番号を有する１つまたは複数のマルチキャストパケットのビットマップを表すビットマップフィールドと
を含むことを特徴とする１つまたは複数のコンピュータ可読メディア。
【請求項５６】
マルチキャスト会議セッションを識別するためのデータ構造を格納した１つまたは複数のコンピュータ可読メディアであって、前記データ構造は、
前記マルチキャストセッションに参加している他のコンピュータシステムにマルチキャストパケットを送信することになるコンピュータシステムのネットワークアドレスを表すマルチキャスト送信側ネットワークアドレスフィールドと、
前記マルチキャスト送信側ネットワークアドレスフィールドにて表される前記コンピュータシステムによって送信されたマルチキャストパケットを受信するためのアドレスとして指定されているネットワークアドレスを表すマルチキャストネットワークアドレスフィールドと、
前記マルチキャスト送信側ネットワークアドレスフィールドにて表される前記コンピュータシステムによって送信されたマルチキャストパケットを受信するためのポートとして指定されているポートを表すポートフィールドと
を含むことを特徴とする１つまたは複数のコンピュータ可読メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク通信技術に関し、より具体的には、マルチキャスト会議データの信頼性の高い配信に関する。
【背景技術】
【０００２】
コンピュータネットワークは、１つのコンピュータまたは装置（以降、ともに「コンピューティングシステム」と呼ぶ）がネットワークを介して別のコンピューティングシステムと電子メッセージを使用して通信できるようにすることにより、我々が情報を通信し情報にアクセスできる能力を高めている。コンピューティングシステム間で電子メッセージを転送する際、電子メッセージは、多くの場合プロトコルスタックを経由し、それによって電子メッセージ内部のデータに対して操作（例えば、パケット化、ルーティング、フロー制御）が行われる。ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）モデルは、プロトコルスタックを実装するためのネットワーキングフレームワークの例である。
【０００３】
ＯＳＩモデルでは、電子メッセージを転送するための動作を７つの異なる「レイヤ」に分け、それぞれがデータ転送プロセスにおいてある特定の操作を実行するように指定されている。プロトコルスタックは、可能性としてレイヤそれぞれを実装することができるが、多くのプロトコルスタックは、ネットワークを介してデータを転送する使用のために選ばれたレイヤだけを実装する。コンピューティングシステムからデータが送信される場合、データはアプリケーションレイヤから出て中間のレイヤを下に伝ってネットワーク上に送り出される。ネットワークからデータを受信する場合、データは物理レイヤに入り、中間のレイヤを上に伝って、最終的にアプリケーションレイヤにて受け取られる。最上位のレイヤであるアプリケーションレイヤは、例えば、電子会議ソフトウェアなどのアプリケーションおよびエンドユーザプロセスをサポートする責を担う。
【０００４】
しばしば、２つのコンピューティングシステムが互いに通信する場合、２つのコンピューティングシステムはまず、接続（例えば、「ＴＣＰ」（伝送制御プロトコル）接続）を確立することになる。このように、いくつかの異なるコンピューティングシステムが電子会議に参加する場合、異なるコンピューティングシステムが相互間の接続を確立することがある。したがって、電子会議に参加している各コンピューティングシステムは、この場合、電子会議に参加している他のあらゆるコンピューティングシステムと会議データを共有することができる。接続が確立されると、コンピューティングシステムを、例えば、Ｔ．１２０会議セッションの論理階層のような論理階層に構成することができる。論理階層は、１つまたは複数の中間コンピューティングシステムに対する接続を有するルート（ｒｏｏｔ）コンピューティングシステムを含むことができ、中間コンピューティングシステムは、いずれ１つまたは複数のリーフコンピューティングシステムに（場合により、１つまたは複数の他の中間コンピューティングシステムを介して）接続されることになる。したがって、論理階層は、相当な数の確立済みの接続を含むことがある。
【０００５】
電子会議中、会議データは、通常、論理階層の１つのブランチにある中間コンピューティングシステムまたはリーフコンピューティングシステムから出る。この中間コンピューティングシステムまたはリーフコンピューティングシステムは、（例えば、確立されたＴＣＰ接続を利用して）論理階層の上に向かってルートコンピューティングシステムへ会議データを転送する。次に、ルートコンピューティングシステムは、（例えば、確立されたＴＣＰ接続を利用して）論理階層の下に向かって論理階層にあるすべての中間コンピューティングシステムおよびリーフコンピューティングシステムへその会議データを転送する。したがって、会議データが中間コンピューティングシステムまたはリーフコンピューティングシステムに到達するために、会議データはいくつかの確立された接続を介して伝わることがある。例えば、会議データをリーフコンピューティングシステムに配信するのに、会議データが、ルートコンピューティングシステムと第１の中間コンピューティングシステムの間の第１の接続を介し、第１の中間コンピューティングシステムと第２の中間コンピューティングシステムの間の第２の接続を介し、第２の中間コンピューティングシステムとリーフコンピューティングシステムの間の第３の接続を介して伝わることがある。
【０００６】
ＴＣＰなど多くのコネクションオリエンテッドのプロトコルでは、エンドツーエンドのエラー回復、再シーケンス化（ｒｅｓｅｑｕｅｎｃｉｎｇ）、およびフロー制御の機能が提供されている。したがって、コネクションオリエンテッドのプロトコルを利用して会議データを転送することにより、信頼性が高まる。しかし、コネクションオリエンテッドのプロトコルの機能を実現するために、例えば、送信バッファ、受信バッファ、輻輳制御パラメータ、シーケンス番号パラメータ、受信確認番号パラメータなどの状態情報を、各ＴＣＰ接続ごとに維持管理しなければならない。さらに、一部の状態情報は、会議データがコンピューティングシステム間で転送される際に会議データとともに転送しなければならない。状態情報の維持管理および転送により、コンピューティングシステム資源（例えば、システムメモリ）が消費され、ネットワーク帯域幅が消費され、潜在的にネットワーク待ち時間が増大する。多くの中間コンピューティングシステムおよびリーフコンピューティングシステムを有する電子会議では、転送される状態情報によって消費される帯域幅は、比較的大きくなることがある。
【０００７】
結果として、一部の電子会議アプリケーションでは、マルチキャストプロトコル（例えば、マルチキャストＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ））を利用して会議データをルートコンピューティングシステムから論理階層を下に向かって他のコンピューティングシステムに転送している。マルチキャストプロトコルを利用している電子会議では、各中間コンピューティングシステムおよび各リーフコンピューティングシステムが、会議データを同一の指定されたマルチキャストアドレス上で聴取（ｌｉｓｔｅｎ）する。したがって、ルートコンピューティングシステムは、会議データを他のすべてのコンピューティングシステムに配信するのに、この指定マルチキャストアドレスに会議データを送信するだけでよい。その場合、通常の動作中に、指定マルチキャストアドレスで聴取している各コンピューティングシステムが、会議データを受信することになる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、マルチキャストプロトコルは、通常、コネクションオリエンテッドではないので、信頼性のあるメッセージング機能（例えば、エンドツーエンドのエラー回復、再シーケンス化、フロー制御等）を提供していない。このように、マルチキャストデータが失われるかまたは損なわれた場合、失われるかまたは損なわれたデータを回復するためにほとんど何もできない。これは、残念なことである。というのは、会議データが失われるかまたは損なわれたために、電子会議の有用性が大幅に低下することがあるからである。さらに、マルチキャスト会議データは、あらゆるコンピュータシステムに伝送されるので、会議データが失われるかまたは損なわれると、電子会議に参加しているあらゆる中間コンピューティングシステムおよびリーフコンピューティングシステムに影響が及ぶ可能性がある。
【０００９】
そのため、マルチキャスト会議データを信頼性のある形で配信するためのシステム、方法、コンピュータプログラム製品、およびデータ構造は有用であろう。
【課題を解決するための手段】
【００１０】
先行技術の上記の問題は、マルチキャスト会議データを信頼性の高い形で配信するための方法、システム、およびコンピュータプログラム製品を対象とする本発明の原理によって克服される。いくつかのコンピュータシステムが少なくとも１つの親コンピュータシステムと１つまたは複数の対応する子コンピュータシステムとを含む、階層的に構成されたマルチキャスト会議セッションに参加する。親コンピュータシステム（ルートコンピュータシステムであっても、そうでなくてもよい）が、マルチキャスト会議セッションのための会議データが入っているマルチキャストパケット（例えば、ＩＰマルチキャストパケット）にアクセスする。親コンピュータシステムは、１つまたは複数の対応する子コンピュータシステムのそれぞれから会議データの受信を示す受信確認を受け取るまで、受信バッファに会議データを格納する。
【００１１】
子コンピュータシステムは、例えば、シーケンス番号を利用することにより、自らがマルチキャストパケットを受信しなかったことを検出する。子コンピュータシステムは、マルチキャストパケットが受信されなかったことを示す否定応答メッセージを親コンピュータシステムに送信する。これに応答して、親コンピュータシステムは、格納した会議データをその子コンピュータシステムに再送信するための機構を特定する。親コンピュータシステムがルートコンピュータシステムである場合、親コンピュータシステムは、会議データを再送信するために（例えば、「ＴＣＰ」（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｏｒｌ  Ｐｒｏｔｏｃｏｌ）接続を利用して）マルチキャスト機構またはユニキャスト機構を特定することができる。
【００１２】
他方、親コンピュータシステムがルートコンピュータシステムではない場合、親コンピュータシステムは、ユニキャスト機構を特定することができる。このように、会議データは、マルチキャストパケットが受信されていないことが示された場合、ユニキャストを介して子コンピュータシステムに再送信することができる。したがって、本発明の実施形態では、潜在的な帯域幅の節約、およびマルチキャストプロトコルに関連する待ち時間の短縮を実現しつつ、コネクションオリエンテッドのプロトコルによる回復を通じて会議データをより信頼性のある形で配信することができる。さらに、本発明の実施形態により、マルチキャスト対応コンピュータシステムとマルチキャスト対応でないコンピュータの両方が、同一の会議セッションに参加することができるようになる。マルチキャスト対応コンピュータシステムは、マルチキャストを介して会議セッションに参加することができ、マルチキャスト対応でないコンピュータは、ユニキャストを介してその会議セッションに参加することができる。
【００１３】
いくつかの実施形態では、親コンピュータシステムは、既存のマルチキャスト会議セッションに加わるよう子コンピュータシステムを勧誘する。親コンピュータシステムは、マルチキャスト会議セッションのためのマルチキャストアドレスにアクセスし、少なくとも１つのマルチキャストアドレスを含むマルチキャスト勧誘メッセージを子コンピュータシステムに送信する。マルチキャスト勧誘に応答して、子コンピュータシステムは、マルチキャストパケットを受信できることを示すマルチキャストステータスメッセージを親コンピュータシステムに送信する。マルチキャストステータスメッセージに応答して、親コンピュータシステムは、次のマルチキャストシーケンス番号を子コンピュータシステムに送信する。次のマルチキャストシーケンス番号は、子コンピュータシステムにおいて受信される次のマルチキャストパケットに関連付けられることになるマルチキャストシーケンス番号を示す。したがって、子コンピュータシステムは、既存のマルチキャスト会議セッションに既に参加している他のコンピュータシステムに大きな影響を与えずに、既存のマルチキャスト会議セッションに動的に加わることができる。
【００１４】
ルートコンピュータシステムは、随時、マルチキャストパケットの現行送信速度を調整することができる。ルートコンピュータシステムの直下の子コンピュータシステムが、指定時間内にマルチキャストパケットのシーケンスを受信したことを受信確認したとき、現行送信速度を増加させることができる。他方、（例えば、ネットワークの輻輳または待ち時間の結果）直下の子コンピュータシステムが指定時間内にマルチキャストパケットのシーケンスを受信したことを受信確認しなかったときは、マルチキャストパケットの送信速度を低下させることができる。したがって、ルートコンピュータシステムは送信速度を調整して、マルチキャストパケットを配信するのに使用されるネットワークの伝送特性（例えば、利用可能な帯域幅および待ち時間）の変化を補償することができる。
【００１５】
本発明のさらなる特徴および利点は、以下の説明で提示し、部分的には、その説明から明白となり、あるいは本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で具体的に示した手段および組合せによって実現し、達成することができる。本発明の上記およびその他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかとなり、あるいは以下に提示する本発明の実施によって知ることができる。
【発明を実施するための最良の形態】
【００１６】
本発明の上記およびその他の利点および特徴を達成することができる方法を説明するために、上記で手短に述べた本発明のより詳細な説明を付属の図面に示す本発明に係る特定の実施形態を参照して行う。これらの図面は、本発明の代表的な実施形態を示すものにすぎず、したがって、本発明の範囲を限定するものと見なすべきでないとの了解の上で、付随する図面を使って本発明をさらに具体的かつ詳細に記述し説明する。
【００１７】
本発明の原理を用いると、マルチキャスト会議セッションに参加しているコンピュータシステムにマルチキャスト会議データを信頼性のある形で配信することが可能となる。マルチキャスト会議データが配信中に失われまたは損なわれた場合、失われまたは損なわれた会議データをコネクションオリエンテッドのユニキャスト配信を介して修復することができる。コンピュータシステムは、既存のマルチキャスト会議セッションに既に参加している他のコンピュータシステムに大きな影響を与えずに、既存のマルチキャスト会議セッションに加わることができる。ルートコンピュータシステムは、変化したネットワーク条件を補償するようにマルチキャスト送信速度を調整することができる。
【００１８】
本発明の範囲に含まれる実施形態には、コンピュータ実行可能命令またはデータ構造を担持または格納するためのコンピュータ可読メディアが含まれる。そのようなコンピュータ可読メディアは、汎用または専用のコンピュータシステムによってアクセス可能な任意の利用可能なメディアでもよい。限定ではなく例として挙げると、そのようなコンピュータ可読メディアは、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＣＤ−ＲＯＭもしくはその他の光ディスクストレージ、磁気ディスクストレージもしくはその他の磁気記憶装置、またはコンピュータ実行可能命令、コンピュータ可読命令、またはデータ構造の形態の所望のプログラムコード手段を担持または格納するのに使用することができ、汎用または専用のコンピュータシステムからアクセス可能な他の任意のメディアなどの物理的記憶メディアを含むことができる。
【００１９】
本明細書の説明、および添付の特許請求の範囲において、「ネットワーク」とは、コンピュータシステムおよび／またはモジュール間で電子データの移送を可能にする１つまたは複数の論理通信リンクとして定義される。ネットワークまたは別の通信接続（配線、無線、または配線および無線の組合せのいずれか）を介してコンピュータシステムに情報が転送または提供されるとき、その接続は正しくコンピュータ可読メディアと見なされる。このように、そのようないかなる接続も正しくコンピュータ可読メディアと称される。また、これらの組合せも、コンピュータ可読メディアの範囲内に含まれるべきものである。コンピュータ実行可能命令は、例えば、汎用コンピュータシステムまたは専用コンピュータシステムにある機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語など中間形式の命令、さらにはソースコードであってもよい。
【００２０】
本明細書の説明、および添付の特許請求の範囲において、「コンピュータシステム」とは、協働して電子データ上の操作を実行する１つまたは複数のソフトウェアモジュール、１つまたは複数のハードウェアモジュール、またはそれらの組合せとして定義される。例えば、パーソナルコンピュータのハードウェアコンポーネント、ならびにパーソナルコンピュータのオペレーティングシステムなどのソフトウェアモジュールが、コンピュータシステムの定義に含まれる。それらのモジュールの物理的レイアウトは重要ではない。コンピュータシステムには、ネットワークを介して結合された１つまたは複数のコンピュータが含まれ得る。同様に、コンピュータシステムには、内部モジュール（メモリやプロセッサなど）が協働して電子データ上の操作を実行する単一の物理装置（携帯電話機またはパーソナルデジタルアシスタント（ＰＤＡ）など）も含まれ得る。
【００２１】
本明細書の説明、および添付の特許請求の範囲において、「論理通信リンク」とは、コンピュータシステムまたはモジュールなどの２つのエンティティ間で電子データの移送を可能にする任意の通信パスとして定義される。２つのエンティティ間の通信パスの実際の物理的表現は、重要ではなく、例えば、ルーティングパスが変更されるときのように、時間の経過とともに変化することがある。論理通信リンクには、システムバス、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット、これらの組合せ、または電子データの移送を容易にする他の任意のパスの一部も含まれ得る。論理通信リンクは、配線リンク、無線リンク、または配線リンクおよび無線リンクの組合せを含むものと定義される。論理通信リンクには、データの一部を条件付けたりまたはフォーマットしたりして、本発明の原理を実装するコンポーネント（例えば、プロキシ、ルータ、ゲートウェイなど）にデータのその部分をアクセスできるようにするソフトウェアモジュールまたはハードウェアモジュールも含まれ得る。
【００２２】
本明細書の説明、および添付の特許請求の範囲において、「会議データ」とは、電子会議に関連するデータとして定義される。会議データは、電子会議に参加しているコンピュータシステム間で転送することができる。会議データは、送信側コンピュータシステム（例えば、ルートコンピュータシステム）から受信側コンピュータシステム（例えば、中間コンピュータシステムまたはリーフコンピュータシステム）に配信されるオーディオストリームおよび／またはビデオストリーム、ビジュアルデータおよび／または非ビジュアルデータ、ならびに／あるいはデータファイルを含むものと定義される。例えば、会議データには、ボイスオーバＩＰデータ（オーディオストリームデータ）、カメラビデオデータ（ビデオストリームデータ）、アプリケーション共有−ホワイトボードデータ（ビジュアルデータ）、チャットテキストデータ（非ビジュアルデータ）、および／またはファイル転送データ（データファイル）が含まれ得る。会議データは、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＲＴＰ（Ｒｅａｌ−Ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）、ＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）など多種多様なプロトコル、またはプロトコルの組合せを使用して転送することができる。
【００２３】
本明細書の説明、および添付の特許請求の範囲において、「送信速度」とは、会議データが、論理通信リンク上へ、または論理通信リンクを介して転送される（または転送されることになる）速度、あるいは論理通信リンクから受信される速度として定義される。送信速度は、例えば、メガビット毎秒（Ｍｂｐｓ）やメガバイト毎秒（ＭＢｐｓ）など様々な異なる単位で測定することができる。
【００２４】
本発明は、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯電話機、ＰＤＡ、ポケットベルなどを含む、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが、当分野の技術者には理解されよう。本発明はまた、（配線リンク、無線リンク、または配線リンクおよび無線リンクの組合せのいずれかによって）リンクされたローカルコンピュータシステムおよび遠隔コンピュータシステムがネットワークを通してともにタスクを実行する分散システム環境において実施することもできる。分散システム環境では、プログラムモジュールは、ローカルメモリ記憶装置と遠隔メモリ記憶装置の両方に配置することができる。
【００２５】
図１および以下の議論は、本発明を実装することができる適切なコンピューティング環境の簡単な一般的説明を提供するためのものである。必須ではないが、コンピュータシステムによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈において本発明を説明する。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示する方法の動作を実行するためのプログラムコード手段の例である。
【００２６】
図１を参照すると、本発明を実装するための例示的なシステムは、処理ユニット１２１、システムメモリ１２２、およびシステムメモリ１２２を含む様々なシステムコンポーネントを処理ユニット１２１に結合するシステムバス１２３とを含むコンピュータシステム１２０の形態の汎用コンピューティング装置を含んでいる。処理ユニット１２１は、本発明の特徴を含めて、コンピュータシステム１２０の特徴を実装するように設計されたコンピュータ実行可能命令を実行することができる。システムバス１２３は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む数種類のバス構造のどれでもよい。システムメモリは、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２４およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２５を含む。起動中などにコンピュータシステム１２０内の諸要素間で情報を転送する助けとなる基本ルーチンが入っているＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１２６は、ＲＯＭ１２４に格納されることがある。
【００２７】
コンピュータシステム１２０は、磁気ハードディスク１３９に対して読み取りおよび書き込みを行うための磁気ハードディスクドライブ１２７、リムーバブルな磁気ディスク１２９に対して読み取りまたは書き込みを行うための磁気ディスクドライブ１２８、および、例えば、ＣＤ−ＲＯＭまたはその他の光メディアなどのリムーバブルな光ディスク１３１に対して読み取りまたは書き込みを行うための光ディスクドライブ１３０を含むこともできる。磁気ハードディスクドライブ１２７、磁気ディスクドライブ１２８、および光ディスクドライブ１３０は、それぞれ、ハードディスクドライブインターフェース１３２、磁気ディスクドライブインターフェース１３３、および光ドライブインターフェース１３４によってシステムバス１２３に接続される。これらのドライブ、および関連するコンピュータ可読メディアは、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびコンピュータシステム１２０用のその他のデータの不揮発性ストレージを提供する。本明細書にて説明する例示的な実施形態では、磁気ハードディスク１３９、リムーバブルな磁気ディスク１２９、およびリムーバブルな光ディスク１３１を使用しているが、磁気カセット、消去メモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含めて、データを格納するためのその他のタイプのコンピュータ可読メディアを使用することができる。
【００２８】
オペレーティングシステム１３５、１つまたは複数のアプリケーションプログラム１３６、他のプログラムモジュール１３７、およびプログラムデータ１３８を含めて、１つまたは複数のプログラムモジュールからなるプログラムコード手段は、ハードディスク１３９、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、またはＲＡＭ１２５に格納することができる。ユーザは、キーボード１４０、ポインティングデバイス１４２、または、例えば、マイク、ジョイスティック、ゲームパッド、スキャナなどのその他の入力デバイス（図示せず）を通して、コマンドおよび情報をコンピュータシステム１２０に入力することができる。上記およびその他の入力デバイスは、システムバス１２３に結合された入出力インターフェース１４６を通して処理ユニット１２１に接続することができる。入出力インターフェース１４６は、例えば、シリアルポートインターフェース、ＰＳ／２インターフェース、パラレルポートインターフェース、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース、またはＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１３９４インターフェース（すなわち、ＦｉｒｅＷｉｒｅインターフェース）などの多種多様な異なるインターフェースのいずれかを論理的に表現しており、さらには異なるインターフェースの組合せを論理的に表現することができる。
【００２９】
また、モニタ１４７またはその他の表示装置も、ビデオインターフェース１４８を介してシステムバス１２３に接続される。スピーカ１６９またはその他のオーディオ出力装置も、オーディオインターフェース１４９を介してシステムバス１２３に接続される。例えばプリンタなどのその他の周辺出力装置（図示せず）も、コンピュータシステム１２０に接続することができる。
【００３０】
コンピュータシステム１２０は、例えば、オフィス全体もしくは企業全体のコンピュータネットワーク、ホームネットワーク、イントラネット、および／またはインターネットなどのネットワークに接続可能である。コンピュータシステム１２０は、そのようなネットワークを介して、例えば、遠隔コンピュータシステム、遠隔アプリケーション、および／または遠隔データベースなどの外部ソースとデータを交換することができる。
【００３１】
コンピュータシステム１２０は、ネットワークインターフェース１５３を含み、それを介して外部ソースからデータを受信し、そして／または外部ソースにデータを送信する。図１に示すように、ネットワークインターフェース１５３は、論理通信リンク１５１を介して遠隔コンピュータシステム１８３とのデータ交換を容易にする。ネットワークインターフェース１５３は、例えば、ネットワークインターフェースカードおよび対応するＮＤＩＳ（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）スタックなど、１つまたは複数のソフトウェアモジュールおよび／またはハードウェアモジュールを論理的に表現することができる。論理通信リンク１５１は、ネットワークの一部分（例えば、イーサネット（登録商標）セグメント）を表し、遠隔コンピュータシステム１８３は、そのネットワークの１つのノードを表す。例えば、遠隔コンピュータシステム１８３は、会議データをコンピュータシステム１２０に送信するコンピュータシステムとなることができる。他方、遠隔コンピュータシステム１８３は、コンピュータシステム１２０から会議データを受信する受信側コンピュータシステムとなることもできる。
【００３２】
同様に、コンピュータシステム１２０は、入出力インターフェース１４６を含み、それを介して外部ソースからデータを受信し、そして／または外部ソースにデータを送信する。入出力インターフェース１４６は、論理通信リンク１５９を介してモデム１５４（例えば、標準のモデム、ケーブルモデム、またはＤＳＬ（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）モデム）に結合され、このリンクを介してコンピュータシステム１２０が外部ソースからデータを受信し、そして／または外部ソースにデータを送信する。図１に示すように、入出力インターフェース１４６およびモデム１５４は、論理通信リンク１５２を介して遠隔コンピュータシステム１９３とのデータ交換を容易にする。論理通信リンク１５２は、ネットワークの一部分を表し、遠隔コンピュータシステム１９３は、そのネットワークの１つのノードを表す。例えば、遠隔コンピュータシステム１９３は、コンピュータシステム１２０に会議データを送信するコンピュータシステムとなることができる。他方、遠隔コンピュータシステム１９３は、コンピュータシステム１２０から会議データを受信するコンピュータシステムとなることもできる。
【００３３】
図１は、本発明のための適切な動作環境を表しているが、本発明の原理は、必要であれば適切な変更を加えて、本発明の原理を実施することができる任意のシステムにおいて使用することができる。図１に示した環境は、例示にすぎず、本発明の原理を実施することができる多種多様な環境のほんの一部さえも代表するものではない。
【００３４】
図２は、例示的なネットワークアーキテクチャ２００を示している。ネットワークアーキテクチャ２００のコンピュータシステムは、論理通信リンク２４１〜２４７（以下では単に「リンク」と呼ぶ）によって互いに接続され、例えば、Ｔ．１２０電子会議の階層構成のような、ここに図示した階層構成となる。したがって、コンピュータシステムのいくつかは、他のコンピュータシステムの親コンピュータシステムと見なされる。例えば、ルートコンピュータシステム２０２は、中間コンピュータシステム２１２および２１３の親コンピュータシステムと見なすことができる。他方、コンピュータシステムのいくつかは、他のコンピュータシステムの子コンピュータシステムと見なされる。例えば、リーフコンピュータシステム２２２、２２３、および２２４は、中間コンピュータシステム２１２の子コンピュータシステムと見なすことができる。同様に、リーフコンピュータシステム２２６および２２７は、中間コンピュータシステム２１３の子コンピュータシステムと見なすことができる。
【００３５】
コンピュータシステムのいくつかは、子コンピュータシステムと親コンピュータシステムの両方と見なされる。例えば、中間コンピュータシステム２１２は、ルートコンピュータシステム２０２の子、リーフコンピュータシステム２２２、２２３、および２２４の親コンピュータシステムと見なすことができる。同様に、中間コンピュータシステム２１３は、ルートコンピュータシステム２０２の子、リーフコンピュータシステム２２６および２２７の親コンピュータシステムと見なすことができる。
【００３６】
会議境界２７１（実線）内に示されているコンピュータシステムは、電子会議２７０に参加している。参加するコンピュータシステムのうち、マルチキャスト境界２５１（破線）内に示されているコンピュータシステムは、マルチキャストセッション２５０に参加しており、マルチキャスト（例えば、ＩＰマルチキャスト）された（電子会議２７０のため用の）会議データを受信することができる。ルートコンピュータシステム２０２は、指定のマルチキャストアドレス（例えば、ＩＰマルチキャストアドレス）を、会議データが入っているマルチキャストパケットの宛先ネットワークアドレスとして割り振ることができる。コンピュータシステムがマルチキャストセッション２５０に加わるとき、加わるコンピュータシステムに指定のマルチキャストアドレスが知らされる。したがって、加わるコンピュータシステムは、指定のマルチキャストアドレス上で会議データが入っているマルチキャストパケットを聴取することができる。例えば、中間コンピュータシステム２１２および２１３、ならびにリーフコンピュータシステム２２３、２２４、および２２６は、指定のマルチキャストアドレス上でルートコンピュータシステム２０２からのマルチキャストパケットに対して聴取することができる。矢印２６１〜２６５で示すように、会議データ２５２を収容するマルチキャストパケット２８２は、中間コンピュータシステム２１２および２１３、ならびにリーフコンピュータシステム２２３、２２４、および２２６にマルチキャストされる。
【００３７】
例えばマルチキャストをサポートしないコンピュータシステムなど他の参加コンピュータシステムは、ユニキャストを介して電子会議２７０に参加することができる。例えば、中間コンピュータシステム２１３およびリーフコンピュータシステム２２７は、ＴＣＰ接続を介して通信することができる。したがって、マルチキャストパケット２８２を受信した後、中間コンピュータシステム２１３は、会議データ２５２を抽出することができる。次いで、中間コンピュータシステム２１３は、リーフコンピュータシステム２２７に配信するためにＴＣＰパケット２８３中に会議データ２５２を含めることができる。矢印２６６で示すように、中間コンピュータシステム２１３は、ＴＣＰパケット２６６をリーフコンピュータシステム２２７に配信することができる。
【００３８】
図３は、既存のマルチキャストセッションに参加するための方法３００の例示的な流れ図を示している。方法３００をネットワークアーキテクチャ２００内のコンピュータシステムに関して説明することにする。
【００３９】
方法３００は、マルチキャストセッションのための指定マルチキャストアドレスにアクセスする動作（動作３０１）を含む。動作３０１は、例えば、中間コンピュータシステム２１２などの中間コンピュータシステムが、この中間コンピュータシステムによって現在使用されているＩＰマルチキャストアドレスを特定することを含むことができる。あるいは、例えば、ルートコンピュータシステム２０２などのルートコンピュータシステムが、ＩＰマルチキャストネットワークアドレスを割り振ることができる。割り振られるＩＰマルチキャストアドレスは、例えば、２２４．０．０．０と２３９．２５５．２５５．２５５の間のような予約されたＩＰアドレス範囲からのＩＰアドレスとすることができる。ＩＰマルチキャストアドレスは、例えば、ＭＤＨＣＰ（Ｍｕｌｔｉｃａｓｔ  Ｄｙｎａｍｉｃ  Ｃｌｉｅｎｔ  Ａｌｌｏｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）などの割り振りプロトコルを使用して割り振ることができる。
【００４０】
ＩＰマルチキャストアドレスは、管理者から供給されたＩＰマルチキャストアドレスの範囲から順次にまたはランダムに割り振ることができる。ＩＰマルチキャストアドレスを割り振る前に、ルートコンピュータシステムは、検査を行って、そのＩＰマルチキャストアドレスが（例えば、既存のマルチキャストセッションによって）既に使用中であるかどうかを判定することができる。複数のコンピュータシステムが同一のＩＰマルチキャストアドレスを割り振ることに関連する悪影響を抑えるため、ＩＰマルチキャストアドレスとルートコンピュータシステムのＩＰアドレスを結合して、マルチキャストセッションのための一意の識別子を形成することができる。マルチキャストパケットを受信したとき、受信側コンピュータシステムは、ＩＰマルチキャストアドレスとルートコンピュータシステムのＩＰアドレスとを検査する。この検査で、マルチキャストパケットが、受信側コンピュータシステムが参加していないマルチキャストセッションのものであると判定されると、そのマルチキャストパケットを廃棄することができる。
【００４１】
方法３００は、少なくとも１つの指定マルチキャストアドレスを含むマルチキャスト勧誘メッセージを子コンピュータシステムに送信する動作（動作３０２）を含む。動作３０２は、例えば中間コンピュータシステム２１２などの親コンピュータシステムが、例えばリーフコンピュータシステム２２２などの子コンピュータシステムにＭＣＳ（Ｍｕｌｔｉ−Ｐｏｉｎｔ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ）接続開始（Ｃｏｎｎｅｃｔ−Ｉｎｉｔｉａｌ）メッセージを送信することを含むことができる。マルチキャスト勧誘メッセージは、指定マルチキャストアドレス、指定マルチキャストポート、ならびに、例えば、ルートコンピュータシステム２０２のＩＰアドレスなどマルチキャスト送信側のネットワークアドレスを表すセッション識別子データ構造を含むことができる。セッション識別子データ構造のフィールドの１つは、マルチキャストセッションのための指定マルチキャストアドレスを表すことができる。セッション識別子データ構造の別のフィールドは、マルチキャストセッションのための指定ポートを表すことができる。データ構造のさらに別のフィールドは、マルチキャスト送信側のネットワークアドレスを表すことができる。
【００４２】
方法３００は、親コンピュータシステムから、少なくとも１つの指定マルチキャストアドレスを含む、マルチキャスト勧誘メッセージを受信する動作（動作３０５）を含む。例えば、リーフコンピュータシステム２２２は、中間コンピュータシステム２１２から送信されたマルチキャスト勧誘メッセージを受信することができる。受信されたマルチキャスト勧誘メッセージは、例えば、セッション識別子データ構造で表されるセッション識別子を含むことができる。子コンピュータシステムは、セッション識別子データ構造を受け取ったとき、そのセッション識別子データ構造の諸フィールドをメモリ中に維持管理することができる。したがって、子コンピュータシステムは、セッション識別子データ構造を使用して、ネットワークインターフェースの構成を容易にし、マルチキャストパケットが特定のマルチキャストセッションに関連していることの検証を容易にすることができる。
【００４３】
方法３００は、指定のマルチキャストアドレスにおいてマルチキャストパケットを受信する動作（動作３０６）を含む。動作３０６は、マルチキャストセッションに参加しているコンピュータシステムによる受信のためにルートコンピュータシステムから送信されたマルチキャストパケットを受信することを含むことができる。例えば、矢印２６７で示すように、リーフコンピュータシステム２２２は、マルチキャストパケット２８２を受信することができる。マルチキャストパケット２８２の受信により、受信されたマルチキャスト勧誘メッセージには、マルチキャストセッション２５０に加わるための適切な接続情報（例えば、指定マルチキャストアドレス、指定マルチキャストポート、およびルートコンピュータシステム２０２のネットワークアドレス）が入っていることが、リーフコンピュータシステム２２２に示される。
【００４４】
方法３００は、マルチキャストパケットを受信できることを示すマルチキャストステータスメッセージを送信する動作（動作３０７）を含む。動作３０７は、子コンピュータシステムが、マルチキャストパケットを受信したことに応答して、親コンピュータシステムにマルチキャストステータスメッセージを送信することを含むことができる。例えば、マルチキャストパケット２８２を受信したことに応答して、リーフコンピュータシステム２２２は、マルチキャストステータスメッセージを中間コンピュータシステム２１２に送信することができる。マルチキャストステータスメッセージは、リーフコンピュータシステム２２２がマルチキャストパケット２８２を受信したことを確認する受信確認メッセージとすることができる。
【００４５】
方法３００は、子コンピュータシステムがマルチキャストパケットを受信できることを示すマルチキャストステータスメッセージを受信する動作（動作３０３）を含む。動作３０３は、子コンピュータシステムがマルチキャストセッションのためのマルチキャストパケットを親コンピュータシステムが受信できることを示すマルチキャストステータスメッセージを受信することを含むことができる。例えば、中間コンピュータシステム２１２は、リーフコンピュータシステム２２２からマルチキャストステータスメッセージを受信することができる。受信マルチキャストステータスメッセージは、リーフコンピュータシステム２２２がマルチキャストパケット２８２を受信したことを確認する受信確認メッセージとすることができる。中間コンピュータシステム２１２もマルチキャストパケット２８２を受信するので、中間コンピュータシステム２１２は、受信マルチキャストステータスメッセージが適切であること（例えば、マルチキャストパケットが指定のマルチキャストアドレスまたは指定のマルチキャストポートにおいて受信されたことなど）を検証することができる。
【００４６】
方法３００は、次のマルチキャストシーケンス番号を子コンピュータシステムに送信する動作（動作３０４）を含む。動作３０４は、親コンピュータシステムが、マルチキャストステータスメッセージを受信したことに応答して子コンピュータシステムに次のマルチキャストシーケンス番号を送信することを含むことができる。例えば、中間コンピュータシステム２１２は、リーフコンピュータシステム２２２がマルチキャストパケット２８２の受信を確認したことに応答して、リーフコンピュータシステム２２２に次のマルチキャストシーケンス番号を含むマルチキャスト勧誘確認メッセージを送信することができる。次のマルチキャストシーケンス番号は、マルチキャストセッション２５０のための次のマルチキャストパケットに関連付けられることになるシーケンス番号を示すことができる。
【００４７】
方法３００は、親コンピュータシステムから次のマルチキャストシーケンス番号を受信する動作（動作３０８）を含む。動作３０８は、子コンピュータシステムが、親コンピュータシステムから次のマルチキャストシーケンス番号を受信することを含むことができる。例えば、リーフコンピュータシステム２２２は、中間コンピュータシステム２１２から、次のマルチキャストシーケンス番号を含むマルチキャスト勧誘確認メッセージを受信することができる。次のマルチキャストシーケンス番号は、マルチキャストセッション２５０のための次のマルチキャストパケットに関連付けられることになるシーケンス番号をリーフコンピュータシステム２２２に示す。したがって、リーフコンピュータシステム２２２は、マルチキャストパケットが受信されなかったとき、その旨を中間コンピュータシステム２１２に示し始めることができる。
【００４８】
リーフコンピュータシステム２２２がマルチキャストセッション２５０に参加するとき、マルチキャストセッション境界２５１および会議境界２７１はともに、リーフコンピュータシステム２２２を含むように拡張することができる。この拡張は集合的に、拡張された会議境界２７３（破線）で表される。リーフコンピュータシステム２２２は、ルートコンピュータシステム２０２にデータをまったく送信することなく、マルチキャストセッション２５０および電子会議２７０の両方に加わる。さらに、リーフコンピュータシステムが加わった結果、ルートコンピュータシステム２０２にて拡張される資源はほとんどない。したがって、リーフコンピュータシステム２２２は、マルチキャストセッション２５０に既に参加している他のコンピュータシステムに大きな影響を与えることなく、マルチキャストセッション２５０（既存のマルチキャストセッション）に加わる。
【００４９】
図４は、マルチキャスト会議データをより信頼性のある形で配信する方法４００の例示的な流れ図を示している。方法４００をネットワークアーキテクチャ２００のコンピュータシステムに関して説明することにする。
【００５０】
方法４００は、会議データが入っているマルチキャストパケットにアクセスする動作（動作４０１）を含む。動作４０１は、マルチキャストセッションのための会議データが入っているマルチキャストパケットにアクセスすることを含むことができる。マルチキャストパケットは、マルチキャストセッションに参加している他のコンピュータシステムに配信するためにルートコンピュータシステムによって最初にマルチキャストされたマルチキャストパケットとすることができる。マルチキャストパケットは、マルチキャストセッションに参加しているルートコンピュータシステム、中間コンピュータシステム、またはリーフコンピュータシステムによってアクセスすることができる。例えば、マルチキャストセッション２５０内にて、ルートコンピュータシステム２０２、中間コンピュータシステム２１２、または中間コンピュータシステム２１３が、マルチキャストパケット２８２にアクセスすることができる。
【００５１】
マルチキャストパケットにアクセスすることは、マルチキャストパケットに収容された会議データにアクセスすることを含むことができる。例えば、ルートコンピュータシステム２０２は、マルチキャストセッション２５０に参加しているコンピュータシステムにマルチキャストパケット２８２を送信する前に、会議データ２５２にアクセスすることができる。中間コンピュータシステム２１２および中間コンピュータシステム２１３は、マルチキャストパケット２８２を受信した後に会議データ２５２にアクセスすることができる。
【００５２】
方法４００は、会議データを受信バッファに格納する動作（動作４０２）を含む。動作４０２は、ルートコンピュータシステムまたは中間コンピュータシステムが、アクセスした会議データを受信バッファに格納することを含むことができる。例えば、マルチキャストセッション２５０内にて、ルートコンピュータシステム２０２、中間コンピュータシステム２１２、および／または中間コンピュータシステム２１３が、会議データ２５２を受信バッファに格納することができる。親コンピュータシステムが、複数のマルチキャストパケットからの会議データを同時に格納することも可能である。
【００５３】
会議データは、あるコンピュータシステムの対応するマルチキャストセッションの子コンピュータシステムのすべてが会議データの受信を確認するまで、（例えば、システムメモリの）受信バッファに格納されたままにすることができる。例えば、中間コンピュータシステム２１３は、リーフコンピュータシステム２２６が会議データ２５２の受信を確認するまで、会議データ２５２を格納することができる。リーフコンピュータシステム２２７は、ユニキャストを介して電子会議２７０に参加しているので、会議データ２５２の受信を確認しないことになる。会議データは、対応する子コンピュータシステムから適切な受信確認を受信した後、受信バッファから消去（ｆｌｕｓｈ）（除去）することができる。例えば、リーフコンピュータシステム２２６およびリーフコンピュータシステム２２７から受信確認を受信した後、中間コンピュータシステム２１３は、対応する受信バッファから会議データ２５２を消去することができる。
【００５４】
方法４００は、最後の連続受信マルチキャストパケットを受信する動作（動作４０６）を含む。動作４０６は、中間コンピュータシステムまたはリーフコンピュータシステムが最後の連続受信マルチキャストパケットを受信することを含むことができる。例えば、マルチキャストセッション２５０に参加しているどのコンピュータシステムも、ルートコンピュータシステム２０２から送信された最後の連続受信マルチキャストパケットを受信することができる。
【００５５】
子コンピュータシステムからの伝送受信確認メッセージをスケジュールするためにＡＣＫウィンドウパラメータ値を親コンピュータシステムにおいて維持管理することができる。ＡＣＫウィンドウパラメータ値は、受信確認メッセージと受信確認メッセージの間に受信されるべきマルチキャストパケットの数を子コンピュータシステムに示す。ＡＣＫウィンドウパラメータ値は、子コンピュータシステムが親コンピュータシステムに接続し、親コンピュータシステムから切断する際、動的に変更することができる。ＡＣＫウィンドウパラメータ値は、親コンピュータシステムにおける受信確認の内破（ｉｍｐｌｏｓｉｏｎ）の可能性が低くなるように構成することができる。
【００５６】
例えば、「ｍ」個の子コンピュータシステムを有する親コンピュータシステムの場合、式（Ｎ／２）≦ｍ≦Ｎに従ってＡＣＫウィンドウパラメータ値「Ｎ」を構成することができる。このように、５つの子コンピュータシステムを有する親コンピュータシステムの場合、５、６、７、８、９、または１０のＡＣＫウィンドウパラメータ値を選択することができる。７が選択された場合、子コンピュータシステムは、７つのマルチキャストパケットの受信ごとに親コンピュータシステムに受信確認メッセージを送信すべきことを子コンピュータシステムに示すことになる。子コンピュータシステムが、受信確認のための最初のマルチキャストパケットをランダムに選択して、親コンピュータシステムにおける受信確認の内破の可能性をさらに低くすることができる。
【００５７】
マルチキャストセッションに参加しているコンピュータシステムにマルチキャストパケットが送信されるとき、各マルチキャストパケットにシーケンス番号が割り当てられる。異なるマルチキャストパケットに異なるシーケンス番号を割り当てて、異なるマルチキャストパケットを互いに区別できるようにすることができる。例えば、シーケンス番号を増分式に（例えば、１ずつ加えて）割り当てて、後続のマルチキャストパケットを先行するマルチキャストパケットから区別することができる。最大シーケンス番号に達した時点で、割り当てるシーケンス番号を「ロールオーバ（ｒｏｌｌ−ｏｖｅｒ）」して、ゼロから開始することができる。シーケンス番号を使用して受信側コンピュータシステムにパケット順序を示すことができる。表１は、ＡＣＫウィンドウパラメータ値が５の場合のマルチキャストパケットの例示的なシーケンスを収容している。
【００５８】
【表１】
2004343762.tif 000003
【００５９】
マルチキャストパケットは対応するシーケンス番号とは異なる順序で受信されたが、受信側コンピュータシステムは、シーケンス番号を使用して、マルチキャストパケットを受信後に適切に並べ替えることができる。例えば、受信側コンピュータシステムは、マルチキャストパケットのシーケンスを次の順序に並べ替えることができる。すなわち、マルチキャストパケットＡ、マルチキャストパケットＣ、マルチキャストパケットＢ、マルチキャストパケットＥ、マルチキャストパケットＤの順序である。したがって、マルチキャストパケットＤは、最後の連続受信マルチキャストパケットと見なすことができる。
【００６０】
指定の時間閾値の間、会議データがマルチキャストされない場合、ルートコンピュータシステムは、（例えば、最後のシーケンス番号から増分された）適切なシーケンス番号を有するキープアライブ（ｋｅｅｐ  ａｌｉｖｅ）メッセージをマルチキャストすることができる。マルチキャストセッションに参加しているコンピュータシステムは、受信確認メッセージを対応する親コンピュータシステムに送信することにより、キープアライブメッセージの受信を確認することができる。キープアライブメッセージの受信確認により、対応する子コンピュータシステムが依然として、マルチキャストセッションのためのマルチキャストパケットを受信できることが親コンピュータシステムに示される。例えば、リーフコンピュータシステム２２６は、中間コンピュータシステム２１３に受信確認メッセージを送信して、マルチキャストセッション２５０のためのマルチキャストパケットを引き続き受信できることを示すことができる。
【００６１】
親コンピュータシステムは、対応するすべての子コンピュータシステムから受信確認メッセージを受信すると、次に自らの親コンピュータシステムに対してキープアライブメッセージの受信を確認することができる。受信確認は、階層ツリーを上ってルートコンピュータシステムまで続けることができる。例えば、リーフコンピュータシステム２２２、２２３、および２２４のそれぞれから受信確認メッセージを受信した時点で、中間コンピュータシステム２１２は、次に受信確認メッセージをルートコンピュータシステム２０２に送信することができる。キープアライブメッセージは、指定のキープアライブ間隔で送信することができる。キープアライブ間隔は、例えば、２秒間、４秒間、８秒間、１６秒間など指数関数増加を使用して定義することができる。ビジー時間の後、キープアライブ間隔を小さくすることができる。他方、長期間のアイドル時間の後には、キープアライブ間隔を大きくすることもできる。
【００６２】
方法４００は、最後の受信マルチキャストパケットを受信する動作（動作４０７）を含む。動作４０７は、中間コンピュータシステムまたはリーフコンピュータシステムが最後の受信マルチキャストパケットを受信することを含むことができる。例えば、マルチキャストセッション２５０に参加しているどのコンピュータシステムも、ルートコンピュータシステム２０２から最後の受信マルチキャストパケットを受信することができる。表２は、ＡＣＫウィンドウパラメータ値が６の場合のマルチキャストパケットの第２の例示的なシーケンスを収容している。
【００６３】
【表２】
2004343762.tif 000004
【００６４】
表２は、最後の受信パケットがマルチキャストパケットＫであったことを示している。
【００６５】
方法４００は、１つまたは複数のマルチキャストパケットが受信されなかったことを検出する動作（動作４０８）を含む。動作４０８は、最後の連続受信マルチキャストパケットと最後の受信マルチキャストパケットの間のシーケンス番号を有する１つまたは複数のマルチキャストパケットが受信されなかったことを検出することを含むことができる。例えば、再び表２を参照すると、マルチキャストパケットＩを最後の連続受信マルチキャストパケットと見なすことができ、マルチキャストパケットＫを最後の受信マルチキャストパケットと見なすことができる。したがって、マルチキャストセッションに参加しているコンピュータシステムは、マルチキャストシーケンス番号１９、２０、および２２に対応するマルチキャストパケットが受信されなかったことを検出することができる。
【００６６】
方法４００は、親コンピュータシステムに否定応答メッセージを送信する動作（動作４０９）を含む。動作４０９は、最後の連続受信マルチキャストパケットと最後の受信マルチキャストパケットの中間のマルチキャストシーケンス番号を有する１つまたは複数のマルチキャストパケットを子コンピュータシステムが受信しなかったことを示す否定応答メッセージを子コンピュータシステムが送信することを含むことができる。例えば、該当する場合、リーフコンピュータシステム２２２は、中間コンピュータシステム２１２に否定応答メッセージを送信して、リーフコンピュータシステム２２２がマルチキャストセッション２５０のための１つまたは複数のマルチキャストパケットを受信しなかったことを示すことができる。同様に、該当する場合、中間コンピュータシステム２１２は、ルートコンピュータシステム２０２に否定応答メッセージを送信して、中間コンピュータシステム２１２がマルチキャストセッション２５０のための１つまたは複数のマルチキャストパケットを受信しなかったことを示すことができる。
【００６７】
送信された否定応答メッセージは、最後の連続受信マルチキャストパケットのパケットシーケンス番号、最後の受信マルチキャストパケットのパケットシーケンス番号、および最後の連続マルチキャストパケットと最後の受信マルチキャストパケットの間の受信されたマルチキャストパケットおよび失われたマルチキャストパケットを示すビットマップを表すデータ構造を含むことができる。例えば、表２のマルチキャストパケットのシーケンスを受信した参加コンピュータシステムは、１８、２３という値と、１９、２０、２１、および２２が１８と２３の間のパケットのシーケンス番号であり、１９、２０、および２２が失われたパケットとマーク付けされていることを示すビットマップとを有する否定応答メッセージを送信することができる。したがって、子コンピュータシステムは、受信されなかった会議データを置き換え、そして／または損なわれた会議データを修復するために対応する親コンピュータシステムによって使用することができる修復情報を提供する。
【００６８】
方法４００は、子コンピュータシステムがマルチキャストパケットを十分に受信しなかったことを検出する動作（動作４０３）を含む。動作４０３は、親コンピュータシステムが子コンピュータシステムから否定応答メッセージを受信することを含むことができる。例えば、中間コンピュータシステム２１２は、リーフコンピュータシステム２２２、リーフコンピュータシステム２２３、またはリーフコンピュータシステム２２４から否定応答メッセージを受信することができる。同様に、ルートコンピュータシステム２０２は、中間コンピュータシステム２１２または中間コンピュータシステム２１３から否定応答メッセージを受信することができる。
【００６９】
受信された否定応答メッセージは、子コンピュータシステムによって受信されなかった会議データを特定し、そして／または損なわれた会議データを潜在的に特定する可能性がある修復情報を含むことができる。修復情報は、修復情報データ構造で表すことができる。修復情報データ構造のフィールドの１つは、子コンピュータシステムによって受信された最後の連続受信マルチキャストパケットを表すことができる。修復情報データ構造の別のフィールドは、子コンピュータシステムによって受信された最後の受信マルチキャストパケットを表すことができる。修復情報データ構造のさらに別のフィールドは、子コンピュータシステムによって受信された最後の連続受信マルチキャストパケットと最後の受信マルチキャストパケットの間に受信されたマルチキャストパケットのビットマップを表すことができる。
【００７０】
したがって、親コンピュータシステムは修復情報を使用して、会議データが子コンピュータシステムにて十分に受信されなかったことを特定することができる。親コンピュータシステムは、マルチキャストパケットが子コンピュータシステムによってまったく受信されなかった（すなわち、パケットが失われた）とき、会議データが十分に受信されなかったことを特定することができる。あるいは、親コンピュータシステムは、子コンピュータシステムにおいて受信された会議データが損なわれていると判定したとき、会議データが十分に受信されなかったことを特定することができる。
【００７１】
パケット損失は、受信した修復情報から検出することができる。表２を再び参照すると、親コンピュータシステムは、子コンピュータシステムがシーケンス番号１９、２０、および２２を有するマルチキャストパケットを受信しなかったことを受信ビットマップから特定することが可能であろう。
【００７２】
いくつかの実施形態では、親コンピュータシステムは、ＡＣＫウィンドウパラメータ値によって示されるパケット数の後に受信確認メッセージが受信されなかったとき、子コンピュータシステムが１つまたは複数のマルチキャストパケットを受信しなかったことを検出する。例えば、ＡＣＫウィンドウパラメータ値が７である場合、親コンピュータシステムは、７つのマルチキャストパケットの後ごとに、子コンピュータシステムから受信確認メッセージを受信するはずである。７番目のマルチキャストパケットの受信後に親コンピュータシステムが受信確認メッセージを受信していない場合、親コンピュータシステムは、子コンピュータシステムが１つまたは複数のマルチキャストパケットを受信していないと判定することができる。
【００７３】
親コンピュータシステムは、指定の時間閾値だけ受信確認メッセージを待つことができる。矢印２６１および２６２で示すように、マルチキャストパケット２８２は、それぞれ、中間コンピュータシステム２１２およびリーフコンピュータシステム２２４に配信される。マルチキャストパケット２８２がＡＣＫウィンドウ内の最後のパケットである場合、パケット２８２が、リーフコンピュータシステム２２４からの受信確認メッセージをトリガすることができる。マルチキャストパケット２８２が受信されると、中間コンピュータシステム２１２は、リーフコンピュータシステム２２４から受信確認メッセージを受信するために指定の時間閾値だけ待つことになる。受信確認メッセージが指定の時間閾値内に受信されなかった場合、中間コンピュータシステム２１２は、リーフコンピュータシステム２２４が１つまたは複数のマルチキャストパケットを受信していないと判定することができる。
【００７４】
指定の時間閾値は、親コンピュータシステムと子コンピュータシステムの間でマルチキャストパケットを受け入れるに当たっての許容できる時間差として定義される往復時間（ＲＴＴ（Ｒｏｕｎｄ−Ｔｒｉｐ  Ｔｉｍｅ））とすることができる。ルートコンピュータシステムは、マルチキャストパケットを送信するとき、そのローカル送信時刻を記録する。続いて、子コンピュータシステムが、そのマルチキャストパケットを受信したとき、そのローカル時刻を記録する。次いで、子コンピュータシステムは、受信確認メッセージを送信する準備ができたとき、受信確認メッセージ中に（例えば、パケット処理のための）ローカル遅延時間を記録する。親コンピュータシステムは、受信確認メッセージを受信したとき、現在時刻、ならびに親コンピュータシステムがマルチキャストパケットを送信してから、経過した時間を記録する。子コンピュータシステムにおける遅延時間を差し引くことにより、親は、子コンピュータシステムまでのＲＴＴを計算する。親コンピュータシステムがルートコンピュータシステムである場合は、親コンピュータシステムは、子コンピュータシステムまでの実際のＲＴＴを計算することになる。
【００７５】
方法４００は、格納した会議データを再送信するための配信機構を特定する動作（動作４０４）を含む。動作４０４は、親コンピュータシステムが、子コンピュータシステムに格納した会議データを再送信するための配信機構を特定することを含むことができる。例えば、中間コンピュータシステム２１２が、リーフコンピュータシステム２２２に会議データ２５２を再送信するための配信機構を特定することが可能である。同様に、ルートコンピュータシステム２０２が、中間コンピュータシステム２１２に会議データ２５２を再送信するための配信機構を特定することが可能である。
【００７６】
配信機構は、少なくとも階層構成の会議セッションにおける親コンピュータシステムの位置に基づいて特定することができる。中間コンピュータシステムは、例えばＴＣＰなどのユニキャスト機構を格納した会議データを再送信するための機構として特定することができる。例えば、中間コンピュータシステム２１２は、失われたまたは損なわれた会議データをリーフコンピュータシステム２２２に再送信するための機構としてユニキャストを特定することができる。しかし、ルートコンピュータシステム（例えば、ルートコンピュータシステム２０２）は、格納した会議データを再送信するためにユニキャスト機構を特定することも、マルチキャスト機構を特定することもできる。
【００７７】
ある閾値数のルートコンピュータシステムの直下の子コンピュータシステムが会議データを失った場合、ルートコンピュータシステムは、マルチキャストがその会議データを再送信するための適切な機構であると判定することができる。修復を必要とする直下の子コンピュータシステムの数が多くなると、やはり修復を必要とする階層内のさらに下位の他のコンピュータシステムの数が多くなることを示すことができる。つまり、いくつかの中間コンピュータシステム（例えば、中間コンピュータシステム２１２および２１３）がマルチキャストデータを受信していない場合、他の子コンピュータシステム（例えば、リーフコンピュータシステム２２２、２２３、２２４、および２２６）もそのマルチキャストデータを受信していない可能性が高くなる。したがって、マルチキャストを介して会議データを再送信することが、より効率的となる場合がある。例えば、ルートコンピュータシステム２０２は、マルチキャストセッション２５０に参加しているコンピュータシステムに失われたまたは損なわれた会議データを再送信するための機構として、マルチキャストを特定することができる。
【００７８】
他方、閾値数より少ない直下の子コンピュータシステムが会議データを失った場合、ルートコンピュータシステムは、ユニキャストが会議データを再送信するための適切な機構であると判定することができる。修復を必要とする直下の子コンピュータシステムの数が少ないと、やはり修復を必要とする階層内のさらに下位の他のコンピュータシステムの数が少ないことを示すことができる。つまり、マルチキャストデータを受信していない中間コンピュータシステムの数が少ない（例えば、中間コンピュータシステム２１３だけ）場合、そのマルチキャストデータを受信していない他の子コンピュータシステムの数も少ない（例えば、リーフコンピュータシステム２２６だけ）可能性が高い。したがって、ユニキャストを介して会議データを再送信することが、より効率的となる場合がある。例えば、ルートコンピュータシステム２０２は、中間コンピュータシステム２１３に失われたまたは損なわれた会議データを再送信するための機構としてユニキャストを特定することができる。
【００７９】
方法４００は、特定された配信機構に従って格納された会議データを再送信する動作（動作４０５）を含む。動作４０５は、親コンピュータシステムが、受信バッファから会議データを子コンピュータシステムに（例えば、ユニキャストまたはマルチキャストを介して）再送信することを含むことができる。例えば、中間コンピュータシステム２１２は、会議データを（対応する受信バッファから）ＴＣＰを介してリーフコンピュータシステム２２２に再送信することができる。あるいは、ルートコンピュータシステム２０２が、会議データを（対応する受信バッファから）ＩＰマルチキャストを介してマルチキャストセッション２５０に再送信することもできる。
【００８０】
親コンピュータシステムにおけるプロトコルスタックは、ユニキャストシーケンス番号がマルチキャストパケットのマルチキャストシーケンス番号と同期するようにユニキャストシーケンス番号を割り当てることができる。図６は、ユニキャストシーケンス番号とマルチキャストシーケンス番号の同期を容易にする例示的なプロトコルスタック６００を示している。プロトコルスタック６００は、トランスポートレイヤ６１５、データフレーミングレイヤ６１２、ユニキャストレイヤ６１４、マルチキャストレイヤ６１３、およびアプリケーションレイヤ６１１を含む。トランスポートレイヤ６１５は、例えば、ＴＣＰやＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのトランスポートレイヤプロトコルに対応する。プロトコルスタック６００の下位のレイヤ（図示せず）は、ネットワークからパケットを受信し、そのパケットをトランスポートレイヤ６１５まで上方に転送することができる。他方、トランスポートレイヤ６１５は、データフレーミングレイヤ６１２からパケットを受け取り、ネットワーク上への配信のためにそのパケットを下位のレイヤまで下方に転送することができる。データフレーミングレイヤ６１２は、例えば、Ｘ．２２４などのフレーミングプロトコルに対応する。ユニキャストパケットおよびマルチキャストパケットは、例えば、Ｘ．２２４など同様のタイプのフレーミングヘッダを使用してフレーム化することができる。同様のタイプのフレーミングヘッダを使用することにより、ユニキャストパケットとマルチキャストパケットともバイナリ的に同一とすることができるので、欠落パケットの回復がより効率的になる可能性がある。
【００８１】
ユニキャストレイヤ６１４とマルチキャストレイヤ６１３は、アプリケーションレイヤ６１１との間でのパケット転送を同期するために協働する。アプリケーションレイヤ６１１は、例えば、ＧＣＣ（Ｇｅｎｅｒｉｃ  Ｃｏｎｆｅｒｅｎｃｅ  Ｃｏｎｔｒｏｌ）アプリケーションおよび／またはＴ．１２０アプリケーションなど１つまたは複数のアプリケーションレイヤプロセスに対応する。例えば、ユニキャストパケット６２１などのユニキャストパケットがトランスポートレイヤ６１５からアプリケーションレイヤ６１１に向けて転送される場合、ユニキャストパケットはまず、マルチキャストレイヤ６１３によって受け取ることができる。同様に、例えば、ユニキャストパケット６２２などのユニキャストパケットがアプリケーションレイヤ６１１からトランスポートレイヤ６１５に向けて転送される場合、そのユニキャストパケットはまず、マルチキャストレイヤ６１３によって受け取ることができる。
【００８２】
したがって、マルチキャストレイヤ６１３は、ユニキャスト修復パケットの転送（または、例えば、リーフコンピュータシステム２２７などのマルチキャストをサポートしていないコンピュータシステムへのユニキャストパケットの転送）が、マルチキャストパケットの転送と適切に同期されるように、パケットの因果律を保存することができる。ユニキャストパケットがトランスポートレイヤ６１５からアプリケーションレイヤ６１１に向けて転送されているとき、マルチキャストレイヤ６１３は、そのユニキャストパケットが同じ優先順位の対応するマルチキャストパケット（例えば、マルチキャストパケット６２６）の後にアプリケーションレイヤ６１１に配信されるようにすることができる。同様に、ユニキャストパケットがアプリケーションレイヤ６１１からトランスポートレイヤ６１５に向けて転送されているとき、マルチキャストレイヤ６１３は、そのユニキャストパケットが、同じ優先順位の対応するマルチキャストパケット（例えば、マルチキャストパケット６２７）の後にデータフレーミングレイヤ６１２に配信されるようにすることができる。
【００８３】
方法４００は、親コンピュータシステムから修復会議データを受信する動作（動作４１０）を含む。動作４１０は、子コンピュータシステムによって十分に受信されなかった会議データを修復するために子コンピュータシステムが修復会議データを受信することを含むことができる。修復会議データは、ユニキャストまたはマルチキャストを介して受信することができる。例えば、中間コンピュータシステム２１２はマルチキャストパケット２８２を受信したが、リーフコンピュータシステム２２２は受信しなかった場合、リンク２４３を介するＴＣＰ接続（例えば、リーフコンピュータシステム２２２が電子会議２７０に加わったときに生成された）を再使用して会議データ２５２を再送信することができる。これにより、ネットワークリソースが節約される。というのは、リーフコンピュータシステム２２２において会議データを修復するためにリンク２４１を介してＴＣＰ接続を確立する必要がまったくないからである。したがって、本発明の諸実施形態により、マルチキャストに関連する潜在的な帯域幅の節約および待ち時間の短縮を実現しつつ、コネクションオリエンテッドのプロトコルを介した回復を通じて会議データをより信頼性のある形で配信することができる。
【００８４】
図５は、マルチキャスト送信速度を調整するための方法５００の例示的な流れ図を示している。方法５００をネットワークアーキテクチャ２００のコンピュータシステムに関して説明する。
【００８５】
方法５００は、会議データの現行送信速度を特定する動作（動作５０１）を含む。動作５０１は、ルートコンピュータシステムが、マルチキャストセッションに参加しているコンピュータシステムに会議データを送信するための現行送信速度（例えば、毎秒４キロバイト、毎秒１０キロバイト、毎秒１メガバイトなど）を特定することを含むことができる。現行送信速度は、ルートコンピュータシステムがマルチキャスト会議セッションに参加している他のコンピュータシステムに（例えば、パケットサイズおよび伝送間隔を構成することによって）会議データを送信することになる速度である。例えば、ルートコンピュータシステム２０２は、マルチキャストセッション２５０に参加しているコンピュータシステムに会議データを伝送するための現行送信速度を特定することができる。マルチキャストセッションが最初に確立されるとき、現行送信速度は、例えば毎秒１キロバイトなど、マルチキャストセッションのリンク（例えば、リンク２４１、２４２、２４３、２４４、２４５、および２４６）上で輻輳を生じる可能性が低い初期送信速度とすることができる。
【００８６】
方法５００は、次のシーケンス番号を特定する動作（５０２）を含む。動作５０２は、ルートコンピュータシステムが次の送信マルチキャストパケットに関連付けられることになる次のシーケンス番号を特定することを含むことができる。例えば、ルートコンピュータシステム２０２は、マルチキャストセッション２５０に参加しているコンピュータシステムに送信される次のマルチキャストパケットに関連付けるべきシーケンス番号を特定することができる。
【００８７】
方法５００は、次のパケットシーケンス番号より指定の閾値だけ大きい速度変更パケットシーケンス番号を選択する動作（動作５０３）を含む。動作５０３は、ルートコンピュータシステムが、自らが可能性としていつ現行送信速度を調整できるかを示す速度変更パケットシーケンス番号を選択することを含むことができる。例えば、ルートコンピュータシステム２０２は、自らが可能性としていつマルチキャストセッション２５０の現行送信速度を調整できるかを示す速度変更シーケンス番号を選択することができる。
【００８８】
指定閾値（例えば、指定のパケット数）は、ルートコンピュータシステム（例えば、コンピュータシステム２０２）が、ルートコンピュータシステムの直下の子コンピュータシステム（すなわち、中間コンピュータシステム２１２および２１３）のそれぞれから少なくとも１つの受信確認メッセージを受信する機会を有するように設定することができる。したがって、適切な指定閾値は、速度変更パケットシーケンス番号から次のパケットシーケンス番号を差し引いた差が、ルートコンピュータシステムのＡＣＫウィンドウパラメータ値より大きくなるように設定することができる。適切な指定閾値は、直下の子コンピュータシステムが、ルートコンピュータシステム受信確認ウィンドウ内で受信されるマルチキャストパケットのシーケンス中のすべてのマルチキャストパケットの受信確認を行う受信確認メッセージを送信するための間隔を提供する。例えば、ＡＣＫウィンドウパラメータ値が５である（マルチキャストパケットの５つの受信の後ごとに、受信確認メッセージが送信されることになることを表す）場合、指定閾値は、少なくとも６つのマルチキャストパケットに設定することができる。したがって、次のシーケンス番号が１７であったとすると、速度変更パケットシーケンス番号は、少なくとも２３に設定することができるであろう。
【００８９】
方法５００は、次のパケットシーケンス番号を有する少なくとも１つの次のマルチキャストパケットを送信する動作（動作５０４）を含む。動作５０４は、ルートコンピュータシステムが、現行送信速度に従って次のマルチキャストパケットを送信することを含むことができる。例えば、ルートコンピュータシステム２０２は、マルチキャストセッション２５０の現行送信速度に従ってマルチキャストセッション２５０に参加しているコンピュータシステムに次のマルチキャストパケットを送信することができる。次のマルチキャストパケット、および速度変更パケットシーケンス番号を有する速度変更マルチキャストパケットを含むマルチキャストパケット（例えば、受信確認ウィンドウ内のパケット）のシーケンスを送信することが可能である。
【００９０】
方法５００は、１つまたは複数の直下の子コンピュータシステムが次のマルチキャストパケットの受信を示したかどうかに少なくとも基づいて送信速度を調整する動作（動作５０５）を含む。動作５０５は、ルートコンピュータシステムが、直下の子コンピュータシステムから否定応答メッセージを受信した（またはまったくメッセージを受信しなかった）ことに応答して現行送信速度を低減させることを含むことができる。例えば、ルートコンピュータシステム２０２は、中間コンピュータシステム２１２または２１３から否定応答メッセージを受信したことに応答して、マルチキャストセッション２５０の現行送信速度を低減させることができる。直下の子コンピュータシステムが否定応答を送信することか、またはネットワーク輻輳に起因してまったくメッセージを送信することが妨げられている可能性がある。
【００９１】
送信速度の低減の後、ルートコンピュータシステムは、速度変更シーケンス番号をリセットして、低減された送信速度が維持可能であることを検証することができる。ルートコンピュータシステムが直下の複数の子コンピュータシステムから否定応答メッセージを受信した場合、ルートコンピュータシステムは、１つの否定応答を受信した場合に送信速度を低減させるのと同じ量だけ現行送信速度を低減させることができる。これにより、現行送信速度が維持可能な送信速度を大幅に下回る速度に低下する可能性が小さくなる。
【００９２】
他方、動作５０５は、ルートコンピュータシステムが、直下の各子コンピュータシステムから受信確認メッセージを受信したことに応答して現行送信速度を増加させることを含むことができる。例えば、ルートコンピュータシステム２０２は、中間コンピュータシステム２１２と中間コンピュータシステム２１３の両方から受信確認メッセージを受信したことに応答してマルチキャストセッション２５０の現行送信速度を増加させることができる。したがって、ルートコンピュータシステムは、マルチキャストパケットを配信するのに使用されるネットワークの伝送特性（例えば、利用可能な帯域幅および待ち時間）の変化を補償するように送信速度を調整することができる。
【００９３】
ルートコンピュータシステムは、送信速度の先の調整に基づいて所定の量だけ送信速度を増加および／または低減させることができる。表３は、送信速度がどのように調整できるかについての例を表している。
【００９４】
【表３】
2004343762.tif 000005
【００９５】
現行送信速度を調整すべきであると判定された場合、先の調整が考慮される。例えば、（適切な受信確認メッセージを受信した結果）送信速度を増加させるべきであると判定され、先の調整が送信速度を１／２に低減することであった場合、現行送信速度を、１／４だけ増加させることができる。初期送信速度を調整するときに、変更なしの先の調整を用いることができる。
【００９６】
「１／４だけ増加させる／線形に増加させる」という表現は、現行送信速度を１／４、またはより少ない量（例えば、１／１６）だけ増加させることができることを表している。現行送信速度が以前に記録された最高の送信速度より低い場合、ルートコンピュータシステムは、送信速度を１／４だけ増加させることができる。以前に記録された最高送信速度より下では、１／４だけ増加させることが適切である。というのは、送信速度を以前に記録された最高送信速度近くまで増加させてもネットワーク輻輳の原因とならないであろうとのある程度の確信があるからである。他方、現行送信速度が以前に記録された最高送信速度より高い場合、ルートコンピュータシステムは、送信速度を線形に増加させることができる。以前に記録された最高送信速度より上では、送信速度を増加させるとネットワーク輻輳の原因となるかどうか判定する方法がない場合がある。したがって、より控えめな線形増加が適切である場合がある。
【００９７】
同様に、「１／４だけ減少させる／線形に減少させる」という表現は、現行送信速度を１／４、またはより少ない量（例えば、１／１６）だけ低減させることができることを表している。否定応答メッセージの中で報告された失われたマルチキャストパケットの数がカットオフ限度（例えば、４つのマルチキャストパケット）より少ない場合、ルートコンピュータシステムは、現行送信速度を線形に低減させることができる。他方、否定応答メッセージの中で報告された失われたマルチキャストパケットの数がカットオフ限度より多い場合、ルートコンピュータシステムは、現行送信速度を１／４だけ低減させることができる。カットオフ限度の使用により、パケット損失の重大度に基づいて適切な調整が行われる見込みが高くなる。失われたマルチキャストパケットの数が少ない（例えば、１または２）場合、線形減少により、さらなるパケット損失を軽減するのに十分なだけネットワーク輻輳を低減させることがある。例えば、パケットのバーストが失われた場合のように失われたパケットの数が多い場合、ネットワーク輻輳を十分に低減させるために現行送信速度のより大幅な低減が必要となる可能性がある。
【００９８】
本発明は、その趣旨または本質的な特徴から逸脱することなく、他の特定の形態において実施することができる。上記の実施形態は、あらゆる点で限定的なものではなく例示的なものにすぎないと見なすべきである。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示される。請求の意味および均等性の範囲に入るすべての変更は、特許請求の範囲に包含されるものである。
【図面の簡単な説明】
【００９９】
【図１】本発明の原理に適した動作環境を示す図である。
【図２】より高い信頼性でマルチキャスト会議データの配信を容易にするネットワークアーキテクチャの例を示す図である。
【図３】既存のマルチキャスト会議セッションに加わるための方法の例示的な流れ図である。
【図４】マルチキャスト会議データをより信頼性の高い形で配信するための方法の例示的な流れ図である。
【図５】マルチキャスト送信速度を調整するための方法の例示的な流れ図である。
【図６】ユニキャストシーケンス番号およびマルチキャストシーケンス番号の適切な同期を容易にする例示的なプロトコルスタックを示す図である。
【符号の説明】
【０１００】
２００  ネットワークアーキテクチャ
２０２  ルートコンピュータシステム
２１２、２１３  中間コンピュータシステム
２２２、２２３、２２４、２２６、２２７  リーフコンピュータシステム
２４１、２４２、２４３、２４４、２４５、２４６、２４７  リンク
２５０  マルチキャストセッション
２５１  マルチキャストセッション境界
２５２  会議データ
２７０  電子会議
２７１、２７３  会議境界
２８３  ＴＣＰパケット
【図１】
2004343762.tif 000006
【図２】
2004343762.tif 000007
【図３】
2004343762.tif 000008
【図４】
2004343762.tif 000009
【図５】
2004343762.tif 000010
【図６】
2004343762.tif 000011