本発明は、TDMAサービスをサポートするIEEE802.15.3b MACを出発点とする(スーパーフレームの先頭におけるビーコンおよびスーパーフレーム内の諸伝送時間割り当て)。IEEE802.15bは、パーソナル・ネットワークとなるべく設計されたものであり、したがって、LANや都市圏ネットワーク(MAN)のために設計された技術よりも「軽い」。他のTDMA MACもあり、使うことができる(たとえばIEEE802.16)が、従来技術においては、純粋にMAC層にとって利用可能なトラフィック特性に基づいて動的にCTA長さを割り当てる試みはされていない。IEEE802.16は無線都市圏ネットワーク(WMAN: wireless metropolitan area network)のために設計されたものであり、サービス加入者へのインターネット配信のために使用される。IEEE802.16はサービス・プロバイダーが自らのネットワークをカスタマイズすることを許容する多くの機能およびオプションを含んでいる。本発明の例示的な実施形態はIEEE802.15.3bに関して記載されるが、その概念はIEEE802.16の実施形態にも等しく適用できる。パースするヘッダが若干多くなる。
CTAを設定するときに考慮されなければならないTCPのいくつかの特徴がある。TCPは、32ビットのシーケンス番号および要求番号ならびに16ビットのスライディング・ウィンドウ長さフィールドを利用する転送プロトコルである。これら三つの数は、「停止して待機(Stop-and-Wait)」または「N個戻る(Go-Back-N)」ARQ〔自動再送要求〕エラー修復方式を実装するために使われる。送信待ち行列内および送信される過程にあるTCPパケットは「ネットワーク内にある」ので、TCPウィンドウは、それらのパケットが未決(outstanding)であることを許容するために宛先によって十分大きく設定されなければならない。一般に、MACレベルのブリッジング・デバイスはそのウィンドウのサイズを設定することに対して制御をもたないが、CTAおよびスーパーフレーム長さの初期選択は、問題を最小化するのに十分短く選ぶことができる。スーパーフレームの長さは、変化するTCPウィンドウ・サイズを扱えるよう、調節可能(または適応可能)にされてもよい。
10msecのスーパーフレームについては、約19個の1400バイトTCPパケットが10msec毎に送信される。これで26,600バイトになる。例示的な実施形態の以下の記述の目的のために、約165キロバイトの送信バッファ待ち行列を選んだ。TCPウィンドウ・サイズは64キロバイトを超える未決データを許容しないので、TCPトラフィックについては送信バッファ待ち行列は決してオーバーフローしない。ウィンドウが、CTAが完全に満たされることすら許容しないほど十分小さいことさえありうる。このため、短いスーパーフレーム(5msec)で始めるほうがよい。すると、送信バッファ待ち行列は、少なくとも単一のTCPセッションを扱うことができるためには、51キロバイトより大きい必要はない。しかしながら、UDPを通じて送られるビデオの場合に紛失パケットを回避するため、165キロバイトの送信バッファ待ち行列を選んだ。
ARQエラー修復方式の数学的モデルは待ち行列理論の分野内で開発され、必要ならTCPパフォーマンスをより精密にモデル化するために使用できることを注意しておく。ウィンドウ・サイズは、他のものがCTA内にある間、いくつかに対する十分な未決TCPパケットが待ち行列内にあることを許容するために十分大きいと想定される。5回までの再送信が許される例示的な実施形態では、CTAは、そのデータの約5倍が送信バッファ待ち行列内に逗留することができるほど十分小さいべきである。5msecのスーパーフレームは、最大サイズのTCPウィンドウが使用されたら、これを達成するであろう。
初期アプリケーションはTCPを使ってビデオをストリーミングすることになる一方、一般的な意味における良好なパフォーマンスを保証する唯一の方法がトラフィック・パターンに適応することを許容することであるよう、実装の十分な不確定さがある。
リアルタイムの、長さが柔軟なスーパーフレーム構築が可能である。これは、システムの堅牢性を増し、システム・パフォーマンスを改善すると考えられる。スーパーフレームの長さは、例示的な実施形態において三つの個別ビデオ待ち行列の長さ、下り伝送チャネル条件および他の任意の可能な点に依存しうる。長さが柔軟なスーパーフレームの場合、ビーコンは、後続のCTAの長さをブロードキャストしなければならず、各リモートSTBは該リモートSTBに専用のCTAの長さについて通知される。
上記したように、TCP受信ウィンドウがCTAの長さに対して十分小さいと、サーバーは前のパケットからのACKを受信するまで次のパケットを放出せず、ソースにおけるストリームを事実上遅くすることがありうる。そのレートは、所望されるリアルタイムのストリーミング・レートを下回ることもありうる。これを避けるため、本発明は、この飢餓条件につながらないCTAサイズを選択する。適正なレートを維持するために、CTAは、サイズを小さくされれば、より頻繁に生起する必要がある。これは、スーパーフレームのサイズを小さくすることによって、あるいはスーパーフレーム当たりそのリンクに二つ以上のCTAを割り当てることによって起こる。
さらに上記したように、TCPウィンドウ・サイズについての不確定さは、スーパーフレーム長さが変化する可能性につながる。これは、MAC層では、TCPヘッダを見ることに基づいてスーパーフレーム変化をトリガーすることによって、あるいはより適正には、送信バッファ待ち行列をモニタリングして送信バッファ待ち行列があまりにしばしば空になってCTAが送信すべきデータが足りない状態になる場合にはスーパーフレームを短くすることによってできる。例示的な実施形態では、初期には、固定されたスーパーフレーム長さが使用された。固定されたスーパーフレーム長さが与えられて、トラフィック特性に適応するためにCTA長さを修正することが調査される。その場合、たいていTCP ACKのために意図されたCTAにどのくらいの時間を割り当てるべきかのいくらかの不確定性がある。というのも、STB中のTCPスタックは複数のACKをグループ化することがあり、および/またはデータを含むパケットのヘッダにACKを含むことがあるからである。
最低限、どんな所与の送信待ち行列の平均出力パケット・レートも、平均パケット到着レートより下に保たれねばならないことはわかっている。そうでなければ、待ち行列はオーバーフローする。しかしながら、たとえ平均到着レートが平均出発レートより低くても、入力ストリームの統計的性質のため、入力レートが一時的に出力レートを超えることはありうる。平均出力レートを平均入力レートより高く保つことは、必要ではあるが、十分ではない。IPトラフィックの特定性の欠如のため、システムを適応的にすることが最善である。
適応を許容するために、全スーパーフレームについての待ち行列情報が記録される。待ち行列情報は、待ち行列のサイズ(固定なら送る必要はない)、待ち行列中のパケット数、待ち行列中のパケットの平均長さおよび入力パケット・レートの推定値を含む。この情報が、各DEVまたはリモートSTBへの信頼性のあるリンク速度についての情報とともに、適応アルゴリズムへの入力として使われる。適応アルゴリズムの目標は、パケットを落とさないこと、そしてその目標に達するような仕方でスーパーフレーム時間をCTAに分配することである。適応アルゴリズムは、各待ち行列中の期待されるパケット数を最小化しようと(よって遅延を最小にしようと)、および/または待ち行列がオーバーフローする確率を最小にしようと努める。待ち行列レベルをモニタリングすることによって、MACはスーパーフレームごとに、最も満たされている待ち行列に送信優先を与えるよう、CTAを調節しうる。
本発明は、圧縮されたビデオをマスターSTBからリモートSTBに配信する無線ビデオ・サービス配信システムのMAC層およびブリッジング層に関する。本システムはIEEE802.15.3b TDMA MACを部分的に利用し、したがってその規格からの用語をいくらか使う。その技術をSTBに組み込んだ例示的なシステムを図1に示す。
マスターSTB105は、高度テレビ方式委員会(ATSC: Advanced Television Systems Committee)アンテナ(デジタル・テレビ)、衛星アンテナおよび広域ネットワーク(WAN)モデムを含む多様なビデオ・ソースから入力を受信する。マスターSTBは、顧客スイッチに接続された、コンポジット全米テレビ方式委員会(NTSC: National Television Standards Committee)ビデオ・ディスプレイ、高精細度マルチメディア・インターフェース(HDMI: High Definition Multi-media Interface)コンポーネント・ビデオ・ディスプレイおよびローカル・エリア・ネットワーク(LAN)を含むビデオ・ディスプレイ110(たとえばテレビ)に出力を提供する。マスターSTBは5つの衛星チューナーを有する(電子番組ガイド(EPG: electronic program guide)チューナー、メイン・チューナー、三つのリモート・チューナーおよびレコーディング・チューナー)。メイン・チューナーは、マスターSTBと通信しているディスプレイのユーザーが望む番組に同調するためのものである。三つのリモート・チューナーは、リモート・ディスプレイの各ユーザーが望む番組に同調するためのものである。EPGチューナーは、電子番組ガイドに同調するためのものである。レコーディング・チューナーは、マスターSTBと通信しているディスプレイのユーザーが、メイン衛星チューナーによって同調されている番組を視聴している間に記録したい番組に同調するためのものである。マスターSTBは二つのATSCチューナーを有する―メイン・チューナーおよびレコーディング・チューナーである。メイン・チューナーは、マスターSTBと通信しているディスプレイのユーザーが望む番組に同調するためのものである。レコーディング・チューナーは、マスターSTBと通信しているディスプレイのユーザーが、メインATSCチューナーによって同調されている番組を視聴している間に記録したい番組に同調するためのものである。マスターSTBは、デマルチプレクサ(多重分離器)、パーソナル・ビデオ・レコーダ(PVR)、リモコン装置とともに使用するための赤外(IR)受信器、衛星/ATSCデコーダおよび無線ハブをも有する。マスターSTB105は各リモートSTBに約20Mbpsでビデオを送信できる。マスターSTB105は衛星ベンダーのIPトラフィックを各リモートSTBと交換できる。マスターSTB105は、各リモートSTBと制御情報を交換できる。
マスターSTBは三つのリモートSTB(リモートSTB1 115、リモートSTB2 125およびリモートSTB3 135)と通信状態にある。リモートSTB1 115はビデオ・ディスプレイ120と通信状態にある。リモートSTB2 125はビデオ・ディスプレイ130と通信状態にある。リモートSTB3はビデオ・ディスプレイ140と通信状態にある。各リモートSTBの構成は同様なので、リモートSTB1についてのみ述べる。リモートSTB1 115は衛星/ATSCデコーダ、リモコン装置とともに使うためのIR受信器および無線ステーションを有する。リモートSTB1 115は、マスターSTB105から約20Mbpsでビデオを受信できる。リモートSTB1は、自分自身とマスターSTB1 105との間で衛星ベンダーのIPトラフィックを交換できる。リモートSTB1 115は、マスターSTB105と制御情報を交換できる。
本発明は、MACレベルの無線ブリッジとして構築される(図2参照)。一般に、MACブリッジは、同じでも異なっていてもよいLANセグメントどうしを接続する。ブリッジによって相互接続された異なるLAN技術の集まりはブリッジ・ローカル・エリア・ネットワークとして知られる。MACブリッジはMACサービス境界の下で動作し、MACブリッジ・サービス境界の上で使われるプロトコルにとっては、QoSの違いがある可能性を除いては、透明である。MACサービス・ユーザーはMACサービス境界(MAC services boundary)の上にあり、MACサービス・プロバイダーはMACサービス境界の下にある。MAC層ブリッジは、各LANセグメント/コンポーネントとのインターフェースをもつためにリレーを含む。
一般的な無線ブリッジが図3に示されている。無線ブリッジ305はイーサネット(登録商標)(Ethernet(登録商標))接続を介してサーバーと通信する。二つのサーバー310、315が示されている。無線ブリッジ305は、クライアントともイーサネット(登録商標)接続を介して通信する。四つのクライアント320、325、330、335が示されている。この一般的な無線ブリッジ内にはDEV0がある。これはピコネット・コントローラ(PNC: piconet controller)340である。PNC340は複数のデバイスと無線で通信する。三つのデバイスDEV1 345、DEV2 350およびDEV3 355が示されている。DEV0/PNC 340はサーバー310、315と通信する。DEV1 345はクライアント320と通信する。DEV2 350はクライアント325と通信する。DEV3 355はクライアント330、335と通信する。
しかしながら、本発明の例示的な実施形態は、無線家庭ビデオ・サービス配信用途に適する経路を制約している。可能なデータ経路は図4で破線で示されている。無線ブリッジ405はマスターSTB410と無線で通信する。無線ブリッジ405はリモートSTB415、420、425とも無線で通信する。無線ブリッジ405は内部的には図2に示されるような構成である。すべてのトラフィックはマスターSTB410に行く、またはマスターSTB410からくる。
図5はサーバー側(マスターSTBおよびブリッジ・デバイス)のソフトウェア・アーキテクチャを示す。マスター・ブリッジ・デバイスはIEEE802.15.3に記載されるようなピコネット・コントローラ(PNC)でもあることを注意しておく。マスターSTB505はマスターSTB505内のミドルウェア・ビデオ・サーバー・アプリケーション510を有する。マルチメディア・ストリーム・ミドルウェア515は媒体QoS制御520およびデバイス・ドライバ525の両方とインターフェースをもつ。マルチメディア・ストリーム・ミドルウェア515はビデオ・データをデバイス・ドライバ525に転送し、媒体QoS制御ミドルウェア520と制御情報を交換する。媒体QoS制御ミドルウェアはデバイス・ドライバ525と制御情報を交換する。デバイス・ドライバ525は主としてビデオ・データをネットワーク・インターフェース(IEEE802.3)530と交換する。デバイス・ドライバ525内には、媒体ストリーム・ミドルウェア515からビデオ・データおよび制御情報を受信して媒体QoS制御ミドルウェア520と情報を交換するポータブル・オペレーティング・システム・ユニックス(POSIX: portable operating system Unix(登録商標))ドライバ535のサブセットがある。POSIXドライバのサブセットは、TCP/IP540および媒体ストリーム・プロトコル545およびQoS管理および制御550とのスタックにあるQoSミドルウェアと情報を交換する。PNC555は、無線MACビデオ・サーバー・ブリッジ・アプリケーション560を有し、この無線MACビデオ・サーバー・ブリッジ・アプリケーション560は、複数のソフトウェア・モジュールを含むソフトウェア565と制御情報を交換する。ソフトウェア565は無線電波インターフェース570およびIEEE802.3ドライバ575とビデオ・データおよび制御情報を交換する。IEEE802.3ドライバは主としてIEEE802.3ネットワーク・インターフェース580とビデオ・データを交換する。IEEE802.3ネットワーク・インターフェース580はIEEE802.3ネットワーク・インターフェース530とインターフェースをもち、そのビデオ情報を交換する。ソフトウェア565はIEEE802.1Dブリッジング・モジュールを含むいくつかのソフトウェア・コンポーネントを含み、このIEEE802.1Dブリッジング・モジュールは、無線デバイス管理エンティティ(DME: device management entity)およびIEEE802.2フレーム収束サブ層(FCSL: frame convergence sublayer)サービス・アクセス・ポイント(SAP: service access point)上に層として重ねられる。無線MACビデオ・サーバー・ブリッジ・アプリケーション560は無線DME管理SAPとインターフェースをもつ。無線DME管理SAPおよび無線DMEおよびIEEE802.2 FCSL SAPはいずれもIEEE802.2 FCSL DMEの上に層として重ねられる。IEEE802.2FCSL DMEはIEEE802.15.3b PNCの機能を実行し、QoSスケジューリングを行い、ブリッジ機能性を管理する。IEEE802.2 FCSL DMEはIEEE802.15.3b MAC SAPおよびIEEE802.15.3b MAC層管理エンティティ(MLME: MAC layer management entity) SAPの上に層として重ねられる。IEEE802.15.3b MAC層管理エンティティ(MLME)SAPはIEEE802.15.3b MLME上に層として重ねられ、このIEEE802.15.3b MLMEは物理層管理エンティティ(PLME: physical layer management entity)の上に層として重ねられる。IEEE802.15.3b MAC SAPはIEEE802.15.3b MACサブ層の上に層として重ねられ、このIEEE802.15.3b MACサブ層は無線物理SAPの上に層として重ねられる。IEEE802.15.3b MAC SAPは無線物理層の上に層として重ねられる。無線物理層管理エンティティ(PLME)SAPは無線物理層PLMEの上に層として重ねられる。無線PLMEは無線物理層と通信する。IEEE802.15.3b MACサブ層はIEEE802.15.3b MLMEと通信する。無線物理層および無線PLMEはビデオ・データおよび制御情報をそれぞれ無線電波インターフェースと交換する。
図6は、クライアント側(リモートSTBおよびブリッジ・デバイス)のSW〔ソフトウェア〕アーキテクチャを示す。本発明はブリッジ・デバイス内にあるが、コンテキストのためにSTBが示されていることを注意しておく。リモート/クライアント・ブリッジ・デバイスもIEEE802.15.3に記載されるようなDEV-x(非PNCデバイス)であることを注意しておく。リモート/クライアントSTB605はリモート/クライアントSTB605内のミドルウェア・ビデオ・クライアント・アプリケーション610を有する。メディア・ストリーム・ミドルウェア615は媒体QoS制御620およびデバイス・ドライバ625の両方とインターフェースをもつ。メディア・ストリーム・ミドルウェア615はビデオ・データをデバイス・ドライバ625に受け容れ、媒体QoS制御ミドルウェア620と制御情報を交換する。媒体QoS制御ミドルウェアはデバイス・ドライバと制御情報を交換する。デバイス・ドライバ625はたいていビデオ・データをネットワーク・インターフェース(IEEE802.3)630と交換する。デバイス・ドライバ625内には、媒体ストリーム・ミドルウェア615に主としてビデオ・データを送って媒体QoS制御ミドルウェア620と情報を交換するPOSIXドライバ635のサブセットがある。POSIXドライバのサブセットは、TCP/IP640および媒体ストリーム・プロトコル545およびQoS管理および制御650とのスタックにあるQoSミドルウェアと情報を交換する。Dev-x655は、無線MACビデオ・クライアント・ブリッジ・アプリケーション660を有し、この無線MACビデオ・クライアント・ブリッジ・アプリケーション660は、複数のソフトウェア・モジュールを含むソフトウェア665とビデオ・データおよび制御情報を交換する。ソフトウェア665は無線電波インターフェース670およびIEEE802.3ドライバ675とビデオ・データおよび制御情報を交換する。IEEE802.3ドライバは主としてIEEE802.3ネットワーク・インターフェース680とビデオ・データを交換する。IEEE802.3ネットワーク・インターフェース680はIEEE802.3ネットワーク・インターフェース630とインターフェースをもち、そのビデオ・データを交換する。ソフトウェア665はIEEE802.1Dブリッジング・モジュールを含むいくつかのソフトウェア・コンポーネントを含み、このIEEE802.1Dブリッジング・モジュールはDMEおよびIEEE802.2 FCSL SAP上に層として重ねられる。無線MACビデオ・クライアント・ブリッジ・アプリケーション660は無線DME管理SAPとインターフェースをもつ。無線DME管理SAPおよび無線DMEおよびIEEE802.2 FCSL SAPはいずれもIEEE802.2 FCSL DMEの上に層として重ねられ、このIEEE802.2 FCSL DMEはIEEE802.15.3b DEV-xの機能を実行し、QoSスケジューリングのために状態をPNCに送り、ブリッジ機能性を管理する。IEEE802.2 FCSL DMEはIEEE802.15.3b MAC SAPおよびIEEE802.15.3b MLME SAPの上に層として重ねられる。IEEE802.15.3b MLME SAPはIEEE802.15.3b MLME上に層として重ねられ、このIEEE802.15.3b MLMEは物理層管理エンティティ(PLME)の上に層として重ねられる。IEEE802.15.3b MAC SAPはIEEE802.15.3b MACサブ層の上に層として重ねられ、このIEEE802.15.3b MACサブ層は無線物理SAPの上に層として重ねられる。IEEE802.15.3b MAC SAPは無線物理層の上に層として重ねられる。無線PLME SAPは無線物理層PLMEの上に層として重ねられる。無線PLMEは無線物理層と通信する。IEEE802.15.3b MACサブ層はIEEE802.15.3b MLMEと通信する。無線物理層および無線PLMEはビデオ・データおよび制御情報を無線電波インターフェースと交換する。ソフトウェア665および660が、CTAについての情報をもつビーコン信号を受信し、それらの下りCTA内の再配信されたビデオ/メディアを受信し、適切な上りCTAにおいてMACレベルのACKまたはNAKを送信する。これらのACKは、TCPが使われるときにビデオ・クライアントにおいて生成されうるTCP ACKとは異なることを注意しておく。
ここで図7を参照する。図7は、本発明の原理に基づく無線MACブリッジのブロック図である。PNC705は、割り当てられたCTAにおいてリモートSTB710、715、720へデータ/情報を送信し、リモートSTB710、715、720からデータ/情報を受信する。マスター・デバイス705は、チャネル時間割り当て(CTA)を取り決めるビーコンを周期的に送信する。CTA内で各デバイスはそのデータを送信する。CTA1、2および3は下りトラフィック(たいていはビデオ)のためである。CTA4、5および6は上りトラフィック(たいていはTCP ACKおよび他の管理フレーム)のためである。
図8にスーパーフレームが示されている。マスター・デバイスはビーコン送信に先立って諸CTAを決定する。一般に、CTAは、マスター・デバイス/PNCによって決定されるかリモート・デバイス/STBによって要求される固定した時間スロットであることができる。具体的には、IEEE802.15.3bについては、規格が、リモートSTB/デバイスが「CTReq」メッセージをPNCに送ることによって帯域幅を要求する(request)ことを規定している。しかしながら、どんなCTA時間が要求または設定されても、デバイスのいずれも真にIPトラフィック特性の全てを先験的に知ることはない。トラフィックは、UDP(ACK返信なし)に基づくことができ、あるいはTCPに基づくこともできる。時によっては、トラフィックのすべてが下りであることができ(非対称)、いくらか対称的であるときもある。トラフィックの流れを最適にするよう諸CTA内の時間の量を適応させることによって、すべての利用可能な時間をフルに利用することが望ましい。スーパーフレームの左端の部分が最初に空中に送信され、スーパーフレームの右端の部分が最後に空中に送信される。ビーコンに続いて、CTAが送信されるが、下りCTAが先に送信され、その後上りCTAが送信される順序となる。本発明のコンテキストにおけるスーパーフレームは、5msecから10msecまでの間で変わりうる。
マスターSTBに接続されているPNCについての例示的なパケット流れ図が図9および図10に示されている。リモートSTBに接続されているDEV-x(すなわち非PNCデバイス)についての例示的なパケット流れ図が図11および図12に示されている。上記したように、例示的な高精細度ビデオ配信システムの無線MACブリッジは制約されたブリッジとして作用する。
ここで図9を参照すると、PNCはイーサネット(登録商標)・ビデオ・データ・フレームをイーサネット(登録商標)・ポート905で受信する(たいていはビデオ)。PNCはスーパーフレームおよび各CTAの長さを決定する。PNCは、宛先MACアドレスに依存してフレームを適正な送信待ち行列910a、910b、910cに入れる。PNCは、IEEE802.1Dに記載されるようにあふれ(flooding)を通じてMACアドレスを学習することができ、あるいはフィルタリング/ルーティング・テーブルが手動で埋められることができる。図の乱雑を減らす目的で、本発明は(各DEV-x/リモートSTB用に定められた)送信ポート当たり一つの待ち行列しかないと想定して記述される。すなわち、各優先度グループ(priority group)について一つの待ち行列である。イーサネット(登録商標)・ビデオ・データ・フレームは待ち行列に分けられる。例示的な実施形態では、待ち行列はそれぞれ165キロバイトであり、スーパーフレームは5msecから10msecまでの長さである。待ち行列からのビデオ・データ・フレームはソフトウェア・モジュール915に転送され、ソフトウェア・モジュール915がイーサネット(登録商標)・ビデオ・データ・フレームを、優先度マッピング、フレーム検査シーケンス(FCS: frame check sequence)、フラグメンテーションおよびヘッダ訂正コード(HCC: header correction code)計算を含むIEEE802.15.3b MACフレームへの変換を行う。ソフトウェア・モジュール915は、受信したイーサネット(登録商標)・ビデオ・データ・フレームを処理するための転送テーブル(forwarding tables)およびサービス・フロー(service flows)をデータ記憶ユニット920から受信する。ソフトウェア・モジュール915は、送信MACサービス・データ単位(MSDU: transmit MAC service data unit)を記憶するバッファ925と通信する。ソフトウェア・モジュール930は、スーパーフレームを構築するために、MACフレームをソフトウェア・モジュール915から要求する。ソフトウェア・モジュール915は複数のMSDUをソフトウェア・モジュール930に転送する。ソフトウェア・モジュール930は、スーパーフレームを構築するために、データ記憶ユニット935から物理的な特性およびパラメータを、バッファ940から直前のサービス・フレームからのMSDU受け取り確認(ACK)を受信する。データ記憶ユニット945は、CTA長が変えられるようローカルおよびリモートのDEV(STB)待ち行列長さとして記憶されているMAC帯域幅管理コマンドを、直前のスーパーフレームから受信する。この情報はMAC帯域幅管理エンティティ950に転送され、このMAC帯域幅管理エンティティ950は、スーパーフレームの構築をさらに支援するため、CTA長をソフトウェア・モジュール930に転送する。ソフトウェア・モジュール930は、直前のフレームから再送信されるべきMSDUをも、スーパーフレーム再送信バッファ955から受信する。このスーパーフレーム再送信バッファ955は、各リモートSTB MACプロトコル・データ単位(MPDU)において複数のMSDUを記憶しており、受け取り確認がされたMSDUを破棄する。ソフトウェア・モジュール930によって構築されたスーパーフレームはスーパーフレーム構築バッファ960に記憶される。ソフトウェア・モジュール930によって構築されたスーパーフレームは下りMPDUおよび上り時間を含む。スーパーフレーム構築バッファ960は構築されたスーパーフレームを、各リモートSTB MPDU内の複数MSDUの形で、スーパーフレーム送信バッファ965に転送する。スーパーフレーム送信バッファ965はスーパーフレーム構築バッファから受信したスーパーフレームを、スーパーフレーム再送信バッファ955に転送する。スーパーフレーム送信バッファ965は完全なMPDUをソフトウェア・モジュール970に転送する。ソフトウェア・モジュールは、遅延されたACKを受信期間の間にリモートSTBから受信し、時間クロック975からタイミング情報を受信する。ソフトウェア・モジュール970は複数のMSDUを各MPDUにまとめ、それらを送信のために物理層モジュール980に転送する。ソフトウェア・モジュール970は、ビーコン内のタイミングに基づくタイミングを使い、送信データ、送信データ・レート、送信長、送信電力レベルおよび送信アンテナ制御を物理層モジュール980に転送し、この物理層モジュール980が物理データ・プロトコル単位(PPDU: physical data protocol unit)をPNCから指定されたリモートSTBに送信する。
図10は受信パケットの流れを描いているので、記述は図の右側から始まって進行する。PPDUが物理層ソフトウェア・モジュール1005で受信される。この物理層ソフトウェア・モジュール1005は時間クロック1010からも入力を受信する。物理層ソフトウェア・モジュールは受信したデータ、長さ、リンク品質指標(LQI: link quality indicator)、受信信号強度指標(RSSI: received signal strength indicator)およびPHY受信エラーをソフトウェア・モジュール1015に転送する。ソフトウェア・モジュール1015は、タイミング・ビーコンに基づくタイミングを使って、PPDUを、MSDUを集積したものであるMPDUに分解し、MPDUをソフトウェア・モジュール1020に転送する。ソフトウェア・モジュール1020はHCC計算を実行し、完全なMSDUフレームまたはフラグメントを単離し、フレーム検査シーケンスを処理し、正しく受信されたMSDUを追跡し、遅延されたACK要求に応答して遅延されたACKを構築し、MSDUをフィルタ処理し、それにより、サーバーのために意図された正しいMSDUのみがサーバー(マスターSTB)に渡されるようにする。ソフトウェア・モジュール1020は受信されたMSDUについての遅延されたACKを転送し、サーバー(マスターSTB)のために意図されていないMSDUを破棄する。ソフトウェア・モジュール1020は、上記の機能を実行するために、物理的特性およびパラメータをデータ記憶ユニット1025から受信する。ソフトウェア・モジュール1020は、遅延されたACKおよび帯域幅管理メッセージのようなMACコマンドを、ソフトウェア・モジュール1030に転送する。このソフトウェア・モジュール1030は、MACコマンドを分離し、MSDU ACKをMSDU ACKバッファ1035に転送し、MAC帯域幅情報要素(IE: information element)をMAC帯域幅管理エンティティ1040に転送する。ソフトウェア・モジュール1020は、MSDU(たいていはTCP ACK)をソフトウェア・モジュール1045に転送しもする。このソフトウェア・モジュール1045が、フラグメントから完成されたMSDUを再構築し、不完全なMSDUのフラグメントを記憶し、MSDUのフラグメントを適正な順序にする。ソフトウェア・モジュール1045は並べ替えフレーム構築バッファ1050および受信MSDUフラグメント・バッファ1055と通信する。ソフトウェア・モジュール1045は完全なMSDUをソフトウェア・モジュール1060に転送し、そこで、完全なMSDUは、フレーム検査シーケンスおよび優先度マッピングを含むイーサネット(登録商標)・フレームに変換される。ソフトウェア・モジュールは転送テーブルおよびサービス・フロー情報をデータ記憶ユニット1065から受信し、イーサネット(登録商標)・フレームをサーバー(マスターSTB)に転送する。
図11は、リモートSTB(ビデオ・クライアント)に接続されているDEV-xについての高レベルの送信パケット流である。イーサネット(登録商標)・フレームは、ソフトウェア・モジュール1105によって受信される。このソフトウェア・モジュール1105はビデオ・クライアントからのはいってくるフレームをフィルタ処理し、分類する。ソフトウェア・モジュール1105は、イーサネット(登録商標)・フレームをフレーム待ち行列1110に転送する。すべてのトラフィックはサーバー(マスターSTB)に行くはずなので、一つの待ち行列しかない。しかしながら、複数の優先度が望まれる場合には、複数の待ち行列が実装される――各優先度グループ(priority group)について一つの待ち行列である。待ち行列内のデータはソフトウェア・モジュール1115に転送される。このソフトウェア・モジュール1115はイーサネット(登録商標)・フレームを、優先度マッピング、フレーム検査シーケンス、フラグメンテーションおよびHCC計算を含むIEEE802.15.3 MACフレームに変換する。ソフトウェア・モジュール1115は転送テーブルおよびサービス・フロー情報をデータ記憶ユニット1120から受信する。ソフトウェア・モジュール1115は送信MSDU送信バッファ1125とも通信する。ソフトウェア・モジュールは複数のMSDUをソフトウェア・モジュール1130に転送する。このソフトウェア・モジュール1130は次のスーパーフレーム内での送信のために、上りMPDUを構築する。ソフトウェア・モジュール1115はまた、ソフトウェア・モジュール1130からの要求も受信する。ソフトウェア・モジュール1130は直前のスーパーフレームからのMSDU ACKをバッファ1135から受信する。ソフトウェア・モジュール1130は、物理的特性およびパラメータをデータ記憶ユニット1140から受信し、CTA情報をデータ記憶ユニット1145からのビーコンから受信する。ソフトウェア・モジュール1130はMAC帯域幅管理コマンドをソフトウェア・モジュール1150から受信し、このソフトウェア・モジュール1150は、データ記憶ユニット1155から受信されたローカルな待ち行列長さ情報およびデータ記憶ユニット1160からの直前のスーパーフレームからのMAC帯域幅要求応答(待ち行列情報を交換するために非標準的な仕方で使用されるIEEE802.15.3 MACコマンド)を使って、帯域幅管理メッセージを構築する。ソフトウェア・モジュール1130は、直前のスーパーフレームからの再送信されるべきMSDUをスーパーフレーム再送信バッファ1165から受信する。各MPDUには複数のMSDUがある。スーパーフレーム再送信バッファ1165は、受け取り確認されたMSDUの破棄もする。ソフトウェア・モジュール1130は構築バッファ1170と通信する。この構築バッファ1170は次のスーパーフレームのための上りMPDUのためのバッファである。構築バッファ1170は上りMPDUをスーパーフレーム送信バッファ1175に転送する。このスーパーフレーム送信バッファ1175は上りMPDUをソフトウェア・モジュール1180に転送する。スーパーフレーム送信バッファ1175は上りMPDUをスーパーフレーム再送信バッファ1165にも転送する。ソフトウェア・モジュール1180は、ビーコンに基づくタイミングを使って、複数のMSDUを各MPDUにまとめ、MPDUを送信のために物理層ソフトウェア・モジュール1185に渡す。ソフトウェア・モジュールは時間クロック1190から時間を受信し、サーバー(マスターSTB)から受信期間の間に遅延されたACKを受信する。ソフトウェア・モジュール1180は送信データ、送信データ・レート、送信長さ、送信電力レベルおよび送信アンテナ制御を物理層ソフトウェア・モジュール1185に転送する。
リモートDEVにおける受信プロセスの近似が図12に示されている。受信プロセスは、主として、スーパーフレームの分解と、次いでフラグメント化したフレームを再び集めることを含むイーサネット(登録商標)・フレームの再構築からなる。受信側もエラーがないかどうか検査し、PNCへの返送のためにDLY ACK(バルクACKの一つの型)を用意する。DLY ACKは、そのパケットが到着したCTAの反対方向を向いて、CTAの最初において送られる。これは、規格からのもう一つの逸脱である。
図12は、ビデオ・クライアント(リモートSTB)に接続されたDEV-xについての高レベルの受信パケットの流れ図である。よって、記述は図の右側から始まって進行する。ソフトウェア・モジュール1205はPPDUを受信し、受信されたデータ、受信されたエラー、長さ、LQIおよびRSSIをソフトウェア・モジュール1215に転送する。ソフトウェア・モジュール1205は受信アンテナ制御情報をソフトウェア・モジュール1215から受信し、タイミング情報を時間クロック1210から受信する。ソフトウェア・モジュール1215はMPDUを物理層ソフトウェア・モジュール1205から受信する。複数のMSDUが各MPDUにまとめられる。ソフトウェア・モジュール1215は時間クロック1210からタイミングを受信する。ソフトウェア・モジュール1215は、MPDUの諸片をソフトウェア・モジュール1220に転送する。このソフトウェア・モジュール1220がHCC計算を実行し、完全なMSDUまたはフラグメントを単離し、フレーム検査シーケンスを処理し、正しく受信されたMSDUを追跡し、遅延されたACK要求に応答して遅延されたACKを構築し、MSDUをフィルタ処理し、サーバー(マスターSTB)のために意図された正しく受信されたMSDUのみを転送する。ソフトウェア・モジュールは、物理的特性およびパラメータをデータ記憶ユニット1225から受信し、受信されたMSDUについての遅延されたACKを転送する。ソフトウェア・モジュール1220は、そのビデオ・クライアント(リモートSTB)のために意図されていないMSDUは破棄し、MACコマンドをソフトウェア・モジュール1230に転送する。このソフトウェア・モジュール1230はMAC管理メッセージを分離し、MAC帯域幅応答をデータ記憶ユニット1235に転送し、リモートSTBからのMSDU ACKをMSDUバッファ1240に転送する。ソフトウェア・モジュール1220はMSDUをソフトウェア・モジュール1245に転送し、このソフトウェア・モジュール1245がフラグメントから完成されたMSDUを再構築し、不完全なMSDUのフラグメントを記憶し、MSDUを適正な順序にする。ソフトウェア・モジュール1245は並べ替えおよびフレーム構築バッファ1250および受信MSDUフラグメント・バッファ1255と通信する。ソフトウェア・モジュール1245は完全なMSDUをソフトウェア・モジュール1260に転送し、このソフトウェア・モジュール1260はMACフレームを優先度を含むイーサネット(登録商標)・フレームに変換する。ソフトウェア・モジュール1260は、転送テーブルおよびサービス・フロー情報もデータ記憶ユニット1265から受信する。
図13を参照すると、物理プリアンブルおよび物理ヘッダがCTA当たり一つの物理フレームをなす。リモートSTBへの遅延されたACK、リモートSTBへの待ち行列状態情報要求およびリモートSTBへの複数データ・パケットが、保護されたMACヘッダとともにMACフレームの集合をなす。上記がそのCTA内での任意の余っている時間と連結されたものが、リモートSTBへのそのPNCのための下りCTAをなす。
ここで図14を参照すると、各MACペイロードについて、対応するMACヘッダがある。HCCが計算され、MACヘッダの後かつMACペイロードの前に挿入される。FCSが計算され、MACペイロードの後に挿入される。これは、スーパーMACフレームを作り出すために各MACペイロードについてなされる。スーパーMACフレーム長は物理ヘッダの一部である。物理ヘッダは、変調され空中を通じて送信されるCTAを作るためにスーパーMACフレームより前に挿入される。物理ヘッダは遅い、信頼できるレートで送信され、CTAのスーパーMACフレーム部分は何らかの望ましいレートで送信される。
CTA4、CTA5およびCTA6内のフレームの送信は同様にして送られる。これらのCTAの一つにおいて送られるフレームの一例が図15に示されている。図15は、単一の上りCTAの一つ(DEV-xからPNC)を描いている。単一の上りCTAは一つの物理フレームと、保護されたヘッダをもつMACフレームの集合と、CTA内の任意の余った時間を含む。本発明については、上りトラフィックの多くはTCP ACKであろう。図13に示された下りCTAと同様、物理フレームは物理プリアンブルおよび物理ヘッダを含む。MACフレームの集合はPNCへの遅延されたACK、PNCへの待ち行列状態情報およびPNCへのデータ・パケットを含む。このCTAが、PNCに待ち行列状態情報を運び戻すフレームを含んでいることを注意しておく。この待ち行列状態情報は待ち行列のサイズ(もし可変なら)、待ち行列中のフレーム数、フレームの平均長および待ち行列の入力におけるフレーム到着レートを含んでいてもよい。
本発明については、ビデオ・ストリーミング・パケット(下り)はTCPを使ってマスターSTBから送られると想定される。このため、ビデオとは反対方向(上り)にTCP ACKが生成されることになる。これらのTCP ACKはオーバーヘッドを追加し、もしそのオーバーヘッドが解消されれば、より実際のトラフィック(すなわち下りのビデオ)のために時間を解放できる。さらに、TCPに組み込まれたフロー制御機構のため、および(バッファおよびCTAに起因して)無線ブリッジによって追加される追加的な遅延のため、TCPは、ビデオ・ストリームが、それが本当に達する必要のあるレートに達することを妨げうる。
まず、問題がよりよく理解されるよう、TCPについて手短に述べる。次いで、その問題を解決する助けとなりうる、高レベルでの若干数の層横断型の修正を呈示する。なお、マスターSTBおよびリモートSTBにおけるTCPパラメータそのものの変更が、この問題を解決するためのもう一つの方法であるが、何度か述べたように、これは可能ではないと想定されることを注意しておく。
TCPは、全二重の接続指向の(connection-oriented)転送プロトコルである。TCPはデータ・ストリームのセグメントを送る。UDPは呈示されるパケットを送る。TCPの一つの特徴は、信頼できる送達である。これは、TCP ACKの使用を通じて保証される。この機構はインターネット・トラフィックについて有益であることが立証されているが、信頼できる送達を生じるその恩恵は、すでに高い信頼性をもつLAN上では疑問がある。よって、TCP ACKは著しいオーバーヘッドを追加する。無線のような帯域幅制限されたネットワークの場合、そのオーバーヘッドの不利は多大である。
TCPカプセル化が図16に示されている。TCPヘッダがTCPペイロードの前に付加される。これら両者の前にIPヘッダが付加される。TCPペイロードとTCPヘッダの組み合わせはTCPセグメント(TCP segment)とも呼ばれる。TCPセグメントとIPヘッダの組み合わせはIPデータグラム(IP datagram)とも呼ばれる。
IPヘッダおよびTCPヘッダがそれぞれ図17および図18に示されている。IPヘッダは宛先IPアドレスおよびソースIPアドレスを含む。さらに、IPヘッダは、そのペイロードを識別するために使われるプロトコル番号を含む。TCPの場合、この番号は17である。UDPなら6である。TCPヘッダは宛先ポート番号およびソース・ポート番号を含む。ポート番号は、各端におけるデバイスによって、そのTCP接続に関連付けられたソフトウェア・アプリケーションまたはコードを識別するために使用される。
さらに、TCPヘッダは、本発明の動作に重要ないくつかの他のフィールドを含む。TCPは全二重接続なので、各端は別個のシーケンス番号カウンタを維持する。32ビットのシーケンス番号はバイト・カウンタであり、出ていくパケット毎に、同じTCP接続の一部であるソース・デバイスによってインクリメントされる。このヘッダはまた、32ビットの受け取り確認番号をも含む。これは、送信側に、受信器が期待する次のバイトが何であるかを(換言すれば、受信器がバイト−1まで成功裏に受信したということを)通知するために使われる。全二重TCP接続の反対方向も同じ手順をたどる。
受信器が受信しうる最大セグメント・サイズ(バイト単位)を示す最大セグメント・サイズ(MSS)が受信器から送信器に送られる。典型的なTCP MSSは1024(一般的)、536(一端が他端からMSSを受信しないときのデフォルト)、イーサネット(登録商標)上での1460などである。536というデフォルトは、IPが最小サイズ576バイトのパケット(ペイロードおよびTCPおよびIPヘッダ)を扱える必要があるという事実を反映している。よって、インターネットに送られるトラフィックは通例、この数に制限される。外部ルート対内部ルートは、経路最大転送単位(MTU: maximum transfer unit)発見によって決定される。
チェックサムは、TCPヘッダおよびデータをカバーし、フレームが正しく受信されたかどうかを判定するために使用される。最も一般的なオプション・フィールドは最大セグメント・サイズ(MSS)である。これは、接続が確立されようとしているときに送られる。ACKフィールドは、受け取り確認値が有効であることを意味する。
シーケンス番号は、選択的な再送信や否定受け取り確認なしにスライディング・ウィンドウ・プロトコルを実装するために使われる。シーケンス番号は、「N個戻る(Go-Back-N)」方式または「停止して待機(Stop-n-Wait)」方式において使用できる。TCPスライディング・ウィンドウ動作は図19に示されている。基本的に、任意の所与の時点において、「ネットワーク内」には受け取り確認されていないバイトが限られた数だけ許容される。バイトが受け取り確認されるときに、ウィンドウの後端部分(trailing part)が左に動く。バイトが受け取り確認されるおよび/またはより大きなウィンドウが広告されるときに、ウィンドウの先端(leading end)が左に動く。使用可能なウィンドウ内に残されるバイト数はウィンドウ・サイズおよびすでに送られたバイトが何バイトかに依存する。宛先は、受信できるバイト数に基づいて(おそらくは受信バッファ・サイズに基づいて)ウィンドウ・サイズを設定する。スライディング・ウィンドウは、次に示すよく知られた帯域幅遅延積制限(bandwidth delay product limitation)を与える。
ウィンドウ・サイズ(容量)=有効帯域幅(ビット/秒)×往復時間(秒)
TCPはもともと、16ビットのウィンドウ・サイズをもつだけであった。これは、TCP受信器がウィンドウ・サイズをその最大に設定したとき、ネットワーク内に許容されるのはたった64キロバイトであったことを意味していた。ウィンドウ・サイズは、ネットワーク中のずっと多くのバイトが受け取り確認されないでいることを許容するスケーリング・オプションを含むよう修正された。しかしながら、レガシー実装のため、そしてそれが「たいていの場合」機能するので、多くの実装はいまだに16ビットのスライディング・ウィンドウを使うのみである。有限のTCPスライディング・ウィンドウは、ビデオのために必要とされる広帯域幅およびTDMA MAC無線ブリッジのために必要とされる遅延に起因する目標アプリケーションにおける問題を引き起こすことができる。
スライディング・ウィンドウが例示的なブリッジング・システムにどのように負の影響を与えることができるかを見るために、次の例を考える。スーパーフレームの長さが5msecまたは10msecに固定されており、CTAが固定されている場合については、表1がいくつかの代表的な値を示す。表2は、本稿に示されるMPDU集積(MPDU aggregation)の方法および他の若干の個別的な想定(たとえば、ビデオ・パケット・サイズ)を使って各CTA内に期待しうるパケットの概数を示す。往復時間(RTT: round trip time)は、TCPパケットが送られたときからそのセグメントのみに関連付けられたTCP ACKが受信される時刻までの時間である。スーパーフレームが10msecであれば、RTTは少なくとも20msecである。実際には、送信待ち行列内のパケットおよびMACレベルでの再送信のため、より高くなる。20Mbpsおよび20msecの遅延では、スライディング・ウィンドウは、ストリームが意図されるレートで流れることを許容するためには、少なくとも50キロバイトである必要がある。追加的なバッファリングおよびデータがCTAの開始と非同期ではいってくるという事実のため、ストリームがこの例において遅くなる可能性が高い。さらに、TCPスライディング・ウィンドウは、50キロバイトより遅い何らかの値に設定されてもよい。
いくつかの有利なタイムアウトもある。再送信タイムアウトは、RTTの測定に基づくことができるが、典型的には500msecに設定される。再送信タイムアウトは、受け取り確認されていないTCPセグメントの再送信を開始するために使用される。もう一つのタイマーは、TCP ACKが送信器に返される時を遅延させるために時々使用される。これは、データがペイロードについて利用可能になることを許容するためである。このタイマーは、典型的には200msecについて設定され、本願のためのRTTを増すことになる。
TCP受信器が誤りをもつパケットを受信する場合、TCP受信器は、そのパケットを破棄し、送信側がそのパケットを再送信するのを待つ。TCP送信者がタイムアウト期間、典型的には500msec以内にACKを受信しない場合、TCP送信者はそのパケットを再送信する。ビデオ・ストリーミング・アプリケーションについては、これでは受信側が使用するには遅すぎ、そのパケットも破棄されうる。
「遅いスタート(Slow Start)」は比較的新しめのTCP機能である。この機能では、新しいパケットがネットワークに注入されるべきレートは、受け取り確認が反対側から返されるレートである。これは、事実上、送信者のTCPに、輻輳窓(congestion window)として知られるもう一つのウィンドウを追加する。これは主として、ルーターを通じて行くときに輻輳を回避するために使われる。
本発明においては、TCP ACKオーバーヘッドおよびTCPウィンドウの効果を減らし、輻輳を管理する二つの方法がある。二つの方法は組み合わされて第三の方法を形成することができる。本発明の前記諸方法は、MAC層がTCP ACKプロセスにおいて限られた仕方で参加することに関わる。ビデオ・ストリーム・パケットおよび戻りACKは、TCP接続の一部として識別される。同じ接続(またはストリーム)に属するTCPパケットが宛先IPアドレス、ソースIPアドレス、TCPソース・ポート番号およびTCP宛先ポート番号によって一意的に識別できることはよく知られている。目標アプリケーションについては、同じ送信待ち行列内のパケットの大半は、同じTCP接続に属する可能性が高い。よって、有効なシーケンス番号をもつTCP ACKは、TCPヘッダ内のACKフラグを見ることによって決定できる。
第一の方法では、無線リンクを通じてリモート・ブリッジ・デバイスおよびマスター・ブリッジング・デバイスから実際に転送されるTCP ACKの数を減らすことが望ましい。本発明はTDMA MACを使用するので、リモートSTBからマスターSTBへの送信は、スーパーフレームの長さに依存して5または10msec毎にまとまって起こる。リモートSTB/デバイスからマスターSTB/デバイスへの送信のために、リモートSTBは、その送信待ち行列からパケットを取り出し、送信のための一連のフレーム(または集積されたフレーム[aggregated frames])に組み立てる。この例示的な適用では、このトラフィックのすべては、マスターSTBを宛先とされている。
リモート・ブリッジ・デバイスは、送信待ち行列内のフレームのIPおよびTCPヘッダを調べ、どれが同じTCP接続からのTCP ACKであるかを判定する。それらのパケットについて、次いで、TCPヘッダ内のシーケンス番号が読まれる。それらのパケット内にペイロードがないと想定すると、リモート・ブリッジ・デバイスは最高のシーケンス番号を送る必要があるだけである。というのも、TCPでは、そのシーケンス番号がすべてのより低いシーケンス番号を含むからである。パケットの一つがペイロードを含む場合、その特定のパケットが、ヘッダ内に適正なシーケンス番号を設定されて返されるパケットであることができる。TCP ACKパケットの二つ以上がそのペイロードにデータを含んでいる場合には、それもシーケンス番号を繰り返して送られる。これは事実上、送信待ち行列から冗長な「TCP ACKのみ」パケットをすべて消去する。これは、より短いCTAがリモート・デバイス/STBに割り当てられることを許容し、マスター・デバイス/STBに割り当てられるCTAのためにより多くの時間を、よって下りビデオ送信のために割り当てられる、より多くの時間を残す。
図20は、リモート・ブリッジ・デバイスにおいて実施される、本発明の第一の方法の高レベルのフローチャートである。2005では、リモート・ブリッジ・デバイスは、マスター・ブリッジ・デバイスに転送されるべきいくつかのTCP ACKを受信する。2010では、リモート・ブリッジ・デバイスはその送信待ち行列をスキャンし、ペイロードをもたない隣り合うTCP ACKを、そのTCP ACKの集合のうちからの最高のシーケンス番号を受け取り確認する単一のTCP ACKで置き換える。2015では、単一の集積TCP ACK(aggregate TCP ACK)がマスター・ブリッジ・デバイスにCTA内において転送される。このプロセスは2005から繰り返される。
この第一の方法はTCP送信ACKのオーバーヘッドを減らすが、それでも、TCPパケットが遅すぎ、TCPレベルで再送信される可能性がある。TCP再送信はかなり長いタイムアウトに基づくので、リアルタイムのビデオ・ストリームのためにはそれほど有用ではない。多くのビデオ・コーダ・デコーダ(コーデック)は誤り隠蔽方式を含んでいるので、当該パケットが若干の誤りをもって時間通りに到着した場合よりも、TCPレベルの再送信のほうが一層悪い問題を引き起こしうる。
本発明の第二の方法では、マスター・デバイス/STBに返されるローカルなTCP ACKがマスター・ブリッジ・デバイスによって生成される。つまり、マスター・デバイス/STBはだまされて、下りパケットがすでにリモート・デバイス/STBによって受信されたと思い込まされる。マスター・デバイス/STBはTCP ACKを受信するので、そのデータ/情報を再送信はしない。よって、何らかの理由で下りデータが誤って受信される場合、数回のMACレベルの再送信後であっても、下りビデオ・データは相変わらずリモート・デバイス/STBに転送される。しかしながら、指摘したように、ビデオ・ストリーミングのためには、「遅くて正しい」よりも、「若干の誤りはあるが比較的時間通り」のほうがよい。
前記方法は、マスター・デバイス/STBからのあらゆるTCPトラフィックに対して使用できるし、あるいはある特定のTCP接続に対してのみ使用されることもできる。いずれの場合でも、マスター・ブリッジ・デバイスは各TCP接続を別個に追跡する。先に指摘したように、TCPトラフィックは、IPヘッダにおいて、プロトコル番号によって識別され、ストリーム自身はソースおよび宛先IPアドレスならびにソースおよび宛先TCPポート番号によって一意的に識別される。
この方法は、いくつかの理由で、ビデオ・ストリームそのものについてのみ使用することが最善である。ビデオ・ストリーム・パケットがリモート・デバイス/STBに、たとえ誤りがあっても時間通りに渡されることが最善ではあるが、頻度がより低い他のデータ・トラフィック(たとえばボックス制御[box control])は正しく到着する必要があることがありうる。さらに、各TCP接続は別個に管理される必要があるが、N個のTCP接続を管理するには、各リモート・デバイス/STBへの一つのTCP接続を管理するよりN倍多くの資源(すなわち、データ構造等)が必要とされる。さらに、例示的なアプリケーションは下りのビデオ配信なので、潜在的な効率向上の大半は、ビデオ・ストリームにおいて得られる。このすべてのため、ローカルTCP ACKを、目標アプリケーションであるビデオ・ストリーム接続についてのみ生成することが望ましい。
マスター・ブリッジング・デバイスは、ビデオ・ストリームを識別するためにいくつかの方法の一つを使用できる。いくつかのアプリケーションでは、STBおよびブリッジング・デバイスは一つの製造業者からのものであることがありうる。ビデオ配信に使われるTCPポート番号はブリッジ・デバイスにあらかじめ知られている(すなわち、設計時に組み込まれる)のでもよいし、あるいはその情報を、直接またはネットワークもしくは他のインターフェースを通じて、ブリッジング・デバイスに手動で入力することが可能であってもよい。ブリッジング・デバイスがストリームを他の何らかの仕方で、可能性としてはサービス・プロバイダーのネットワークと直接通信していることがありうるSTBとの直接通信で、識別することが可能である。
マスター・ブリッジング・デバイスがビデオ・ストリームをその特性から識別することが可能である。たいていのビデオ・ストリーム(放送事業者からの)は1〜2Mbpsの範囲にある。高精細度ビデオは15〜20Mbpsにより近い。マスター・ブリッジング・デバイスはTCP接続セットアップ・パケットをかぎつけて(sniff)、次いでそのストリームを何らかの時間期間(たとえば1秒)にわたって監視することができる。それが一定のストリームであるように見えれば、マスター・ブリッジ・デバイスはこの方法を使うことを開始できる。
マスター・ブリッジ・デバイスはTCPスライディング・ウィンドウ、TCPシーケンス番号およびそれ自身の送信待ち行列を追跡する。マスター・デバイス/STBからのTCPフレームの到着が頻繁すぎる場合、マスター・ブリッジ・デバイスは、待ち行列レベルが下がるまでTCP ACKを差し控える。本発明の本方法はフロー制御の一つの形である。
図21は、マスター・ブリッジング・デバイスで実施される本発明の第二の方法の高レベルの送信フローチャートである。任意的に、TCPセットアップの間に2105で、マスター・ブリッジ・デバイスはマスター・デバイス/STBにローカルに、最適セグメント・サイズならびにバッファリングおよびCTAに起因するシステム遅延をカバーするのに十分大きなTCPウィンドウ・サイズをもって応答する。2110で、マスター・ブリッジ・デバイスはマスター・デバイス/STBからTCPデータ・セグメントを受信する。2115で試験が実行され、送信待ち行列が所定数のCTA(たとえば二つのCTA)のために十分なTCPデータを含んでいるかどうかが判定される。十分なTCPデータがあれば、動作2110が再び実行される。十分なTCPデータ・セグメントがなければ、2120でマスター・ブリッジ・デバイスが、マスター・デバイス/STBに返すためのローカルなTCP ACKを生成し、動作2110が再び実行される。
TCP接続は全二重接続なので、リモート・デバイス/STBから論理的にマスター・デバイス/STBに向かうACKもある。この場合、マスター・デバイスSTBが下りパケットに対して実行したのと同じプロセスを、リモート・デバイス/STBが上りパケットに対して実行する。
マスター・ブリッジ・デバイスはまた、リモート・デバイス/STBから実際に返されるTCP ACKを途中で捕らえ、それがマスター・デバイス/STBに送られないようにする。マスター・ブリッジ・デバイスはこれらのTCP ACK内の情報を使って、到来パケットの処理に関してリモート・デバイス/STBがどこにあるかを判定する。あるいはまた、TCP ACKはリモート・ブリッジ・デバイスによって途中で捕らえられることもでき、望むならマスター・ブリッジ・デバイスに要約レポートが送られる。リモート・ブリッジ・デバイスが途中で捕らえられたTCP ACKを捨てることも可能である。
図22は、マスター・ブリッジ・デバイスにおいてリモートTCP ACKを転送するための高レベルのフローチャートである。2205で、マスター・ブリッジ・デバイスはリモート・デバイス/STBからTCP ACK(ペイロードなし)を受信する。2210で試験が実行されて、受信されたデータ・セグメントがすでに受け取り確認されているかどうかが判定される。そのデータ・セグメントがすでに受け取り確認されていれば、2215でTCP ACKは破棄され、プロセスは2205から繰り返される。そのデータ・セグメントがまだ受け取り確認されていなければ、2220で単一のTCP ACKがマスター・デバイス/STBに転送される。
リモート・ブリッジ・デバイスは、何度かMACレベルで送信されたパケットを意識する。それらのパケットは遅いかもしれず、ひとたび最終的にリモート・ブリッジ・デバイスにおいて受信されたときに誤っていることさえありうる。いずれにせよ、リモート・デバイス/STBもどのバイトが受信および受け取り確認されたかを追跡しているので、そのデータ・セグメントはやはりリモート・デバイス/STBに転送される。
図23は、リモート・デバイスにおいて実施される本発明の前記第二の方法の高レベルのフローチャートである。2305では、リモート・ブリッジ・デバイスはマスター・ブリッジ・デバイスからTCPデータ・セグメント(ペイロードなし)を受信する。2310で試験が実行されて、フレームが正しいかどうか(フレームがフレーム検査シーケンスに合格したかどうか)が判定される。フレームが正しければ、そのフレームは2315でリモート・デバイス/STBに転送され、プロセスは2305から繰り返される。フレームが正しくなければ、2320で別の試験が実行されて、これがMAC層による再送信の最後の試行(五回目の試み)であるかどうかが判定される。これが最後の試行でなければ、プロセスは2305から繰り返される。これが最後の試行であれば、2325で、そのデータに一致するよう新しいフレーム検査シーケンスが計算され、新しいTCPフレームが構築される。この新しいフレームは正しく見えるが、不正な/正しくないデータを有しており、低頻度で起こるべきである。
本発明のこの第二の方法の利点は、ソースをだましてパケットが受け取り確認されたと思い込ませることができることである。これは、より多くのパケットが通信経路内にあることを許容し、実効的に、ウィンドウを長くし、結果としての平均ビットレートを増す。この平均ビットレートは、ビデオの自然なストリーミング・レートより上に保たれねばならない。
第三の方法は、上記した二つの方法を組み合わせる。TCP ACKは、前記第二の方法におけるようにブリッジ・デバイス(マスターまたはリモート)の一つによってローカルに生成されるが、リモートSTBによって返されるTCP ACKは前記第一の方法において記載されたように組み合わされる。
上記の記述は、高精細度ビデオ配信用途に好適な一つのマスターおよび三つのリモート・デバイスをもつ無線ブリッジング・システムに焦点を当ててきたが、当業者には、上記のような本発明の方法が一般的な無線CSMAまたはTDMA MACに、またさらには共通媒体(たとえば電力線)上で走る有線MACにも拡張できることは明らかなはずである。
本発明がさまざまな形のハードウェア、ソフトウェア、ファームウェア、特殊目的プロセッサまたはそれらの組み合わせにおいて実装されうることは理解しておくものとする。好ましくは、本発明はハードウェアおよびソフトウェアの組み合わせとして実装される。さらに、ソフトウェアは好ましくは、プログラム記憶デバイス上に具体的に具現されたアプリケーション・プログラムとして実装される。アプリケーション・プログラムは、いかなる好適なアーキテクチャを有する機械にアップロードされ、これにより実行されてもよい。好ましくは、その機械は、一つまたは複数の中央処理装置(CPU)、ランダム・アクセス・メモリ(RAM)および入出力(I/O)インターフェースといったハードウェアをもつコンピュータ・プラットフォーム上で実装される。コンピュータ・プラットフォームはまた、オペレーティング・システムおよびマイクロ命令コードをも含む。本稿に記載されるさまざまなプロセスおよび機能は、前記マイクロ命令コードの一部または前記アプリケーション・プログラムの一部(またはそれらの組み合わせ)であってもよい。それはオペレーティング・システムを介して実行される。さらに、追加的なデータ記憶装置および印刷装置のようなさまざまな他の周辺装置が前記コンピュータ・プラットフォームに接続されてもよい。
付属の図面に描かれている構成要素となるシステム・コンポーネントおよび方法ステップのいくつかは好ましくはソフトウェアで実装されるので、システム・コンポーネント(またはプロセス・ステップ)どうしの間の実際の接続は、本発明がプログラムされる仕方に依存して異なることがありうることを理解しておくべきである。本稿の教示を与えられれば、当業者は本発明のこれらおよび同様の実装または構成を考えることができるであろう。