次の方法で共有


混雑の制御

混雑の制御

理想的な環境では、メッセージを必要なだけ送信できる。メッセージは直ちにターゲットへ届き、即座に処理される。ゲームにかかわるすべてのコンピュータが、十分な処理能力を持ち、負荷の軽い高帯域幅のネットワーク リンクで接続されていれば、この理想的環境に近付くことができる。そのうえで、メッセージを必要なだけ送信できる。しかし、実際には以下に示す多くの要因によって混雑が発生し、このような理想的な環境よりメッセージングの処理が遅れる。

  • ネットワークの遅延時間。理想的な状況でも、メッセージがネットワークを通じて差出人からターゲットに渡るには、ある程度の時間がかかる (インターネットを通る場合は特に)。受信確認、失われたパケットの再送信、または順序どおりでないパケットの再構成が行われると、この時間はさらに長くなる。
  • ネットワークの帯域幅。コンピュータがメッセージを送受信できる速度は、ネットワークの帯域幅によって制御される。ネットワーク リンクの帯域幅の範囲は広い。また、高帯域幅のネットワークであっても、トラフィックの水準が高ければ速度が落ちる可能性がある。低帯域幅の接続を使っているプレーヤがいる場合、それらのプレーヤは、限られた速度でしかメッセージを送受信できない。
  • 処理速度。ネットワークの帯域幅が高く、遅延時間が少なくても、受信したメッセージをターゲット アプリケーションが処理するには、ある程度の時間がかかる。セッション内に比較的低速のコンピュータを使っているプレーヤがいる場合、これらのプレーヤが受信したメッセージを処理できる速度は、メッセージの送信速度より低くなる可能性がある。

メッセージのスロットリング

メッセージの送信速度を制御しないと、大量のメッセージがターゲットに届き、処理しきれない可能性がある。この状況を避けるため、Microsoft® DirectPlay® プロトコルは、メッセージの送信速度をスロットリングする。スロットリングの最終的な効果は、ターゲットがメッセージを処理できる速度によって、メッセージが送信される速度が制御されることである。

スロットリングは、スライディング ウィンドウメカニズムを使って実装される。スライディング ウィンドウは、基本的には限られた数のスロットを持つキューであり、受信されていない送信済みのメッセージを保持する。流出するメッセージは、メッセージのカテゴリに関係なく、すべてこのキューに入れられる。送信済みメッセージ キューがいっぱいになると、キュー内のメッセージのいずれかが受信されるまで、流出するメッセージが受け付けられなくなる。

最高のパフォーマンスを提供するためには、スライディング ウィンドウのサイズを現在のネットワーク条件に合わせる必要がある。DirectPlay プロトコルでは、送信済みメッセージ キュー内のメッセージ数や総バイト数などの要素が、自動的に監視される。次に、現在のネットワーク条件に合わせてメッセージングを最適化するため、この情報を使ってスライディング ウィンドウのサイズが動的に調整される。

接続のチェック

リンクが利用されていないと、DirectPlay プロトコルでは、高信頼性の空パケットを送信して繰り返し接続をテストする。再送信をある程度繰り返してもターゲットから受信確認が届かない場合、DirectPlay は接続が切断されたものと見なす。