特許第6850893号(P6850893)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許6850893-拡張マルチキャストネットワーク通信 図000002
  • 特許6850893-拡張マルチキャストネットワーク通信 図000003
  • 特許6850893-拡張マルチキャストネットワーク通信 図000004
  • 特許6850893-拡張マルチキャストネットワーク通信 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6850893
(24)【登録日】2021年3月10日
(45)【発行日】2021年3月31日
(54)【発明の名称】拡張マルチキャストネットワーク通信
(51)【国際特許分類】
   H04L 12/761 20130101AFI20210322BHJP
   H04L 12/741 20130101ALI20210322BHJP
【FI】
   H04L12/761
   H04L12/741
【請求項の数】15
【全頁数】26
(21)【出願番号】特願2019-539300(P2019-539300)
(86)(22)【出願日】2018年5月9日
(65)【公表番号】特表2020-509636(P2020-509636A)
(43)【公表日】2020年3月26日
(86)【国際出願番号】US2018031776
(87)【国際公開番号】WO2018208900
(87)【国際公開日】20181115
【審査請求日】2019年8月28日
(31)【優先権主張番号】15/593,447
(32)【優先日】2017年5月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】イ、ジウン
【審査官】 大石 博見
(56)【参考文献】
【文献】 国際公開第2009/064165(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/761
H04L 12/741
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
第1ネットワークノードが、複数のチャンネルの各チャンネルについて、複数のチャンネルについてのリーフノードのメンバシップを示すデータを含むチャンネルメンバシップデータを維持する工程と、
前記複数のチャンネルの各チャンネルについて、
前記チャンネルメンバシップデータに基づいて、前記チャンネルにアクセスするように購読されている前記リーフノードを決定する工程と、
前記チャンネルにアクセスするように購読されている前記リーフノードに基づいて、(i)前記チャンネルにアクセスするように購読されている前記リーフノードのうちの1つ以上のためのハブノードを識別するハブノード識別子と、(ii)前記チャンネルにアクセスするように購読されている各リーフノードの宛先アドレスを記述するデータであって、該データの少なくとも一部は、ビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記ビットマップにおける各ビットは、特定のリーフノードを識別し、前記データは、宛先アドレスについてのエンコードされた第1ビットマップである、前記データと、(iii)ペイロードとを含む、前記チャンネルについての変更マルチメディア・データフレームを生成する生成工程と、
前記第1ネットワークノードが、ユニキャスト・データフレームとして、生成された前記変更マルチメディア・データフレームを第2ネットワークノードに送信する工程と、
前記第2ネットワークノードにおいて、前記変更マルチメディア・データフレームを受信する工程と、
宛先アドレスについてのエンコードされた前記第1ビットマップから、複数の子ノードを決定する工程であって、前記複数の子ノードの各々は、前記リーフノードのうちの1つ以上のためのノードである、工程と、
前記複数の子ノードの各々について、
当該子ノードに関連付けられ、前記チャンネルにアクセスするように購読されている各リーフノードの前記宛先アドレスを記述する対応するデータを含む、対応する変更マルチメディア・データフレームを生成する工程であって、
該対応するデータの少なくとも一部は、対応するビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記対応するビットマップにおける各ビットは、当該子ノードに関連付けられている1つ以上の前記リーフノードのみを識別し、
前記対応するデータは、宛先アドレスについてのエンコードされたビットマップであり、宛先アドレスについてのエンコードされた前記第1ビットマップとは異なっており、別の子ノードに対応する宛先アドレスについてのエンコードされたビットマップとは異なっている、工程と、
前記第2ネットワークノードから、ユニキャスト・データフレームとして、対応する前記変更マルチメディア・データフレームを各子ノードに送信する工程と、
を備える方法。
【請求項2】
前記複数のチャンネルの各々について、
前記チャンネルメンバシップデータに基づいて、前記複数のリーフノードのうちの1または複数のリーフノードが前記チャンネルにアクセスするように購読されていないと決定することに応じて、前記チャンネルについての変更マルチメディア・データフレームを生成しない工程をさらに備える、請求項1に記載の方法。
【請求項3】
前記変更マルチメディア・データフレームは、MACヘッダとペイロードとを含
前記MACヘッダは宛先アドレスフィールドを含む、請求項1または2に記載の方法。
【請求項4】
各対応する変更マルチメディア・データフレームは、前記ペイロードのコピーを含む請求項に記載の方法。
【請求項5】
前記後続のネットワークノードの数が1ネットワークノードに等しいと決定することに応じて、(i)該1つの後続のネットワークノードの宛先アドレスを記述するデータと、(ii)前記ペイロードのコピーとを含むユニキャスト・データフレームを生成する請求項に記載の方法。
【請求項6】
システムであって、
1または複数のコンピュータと、前記1または複数のコンピュータによる実行時、前記1または複数のコンピュータに、
第1ネットワークノードが、複数のチャンネルの各チャンネルについて、複数のチャンネルについてのリーフノードのメンバシップを示すデータを含むチャンネルメンバシップデータを維持する工程と、
前記複数のチャンネルの各チャンネルについて、
前記チャンネルメンバシップデータに基づいて、前記チャンネルにアクセスするように購読されている前記リーフノードを決定する工程と、
前記チャンネルにアクセスするように購読されている前記リーフノードに基づいて、(i)前記チャンネルにアクセスするように購読されている前記リーフノードのうちの1つ以上のためのハブノードを識別するハブノード識別子と、(ii)前記チャンネルにアクセスするように購読されている各リーフノードの宛先アドレスを記述するデータであって、該データの少なくとも一部は、ビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記ビットマップにおける各ビットは、特定のリーフノードを識別し、前記データは、宛先アドレスについてのエンコードされた第1ビットマップである、前記データと、(iii)ペイロードとを含む、前記チャンネルについての変更マルチメディア・データフレームを生成する生成工程と、
前記第1ネットワークノードが、ユニキャスト・データフレームとして、生成された前記変更マルチメディア・データフレームを第2ネットワークノードに送信する工程と、
前記第2ネットワークノードにおいて、前記変更マルチメディア・データフレームを受信する工程と、
宛先アドレスについてのエンコードされた前記第1ビットマップから、複数の子ノードを決定する工程であって、前記複数の子ノードの各々は、前記リーフノードのうちの1つ以上のためのノードである、工程と、
前記複数の子ノードの各々について、
当該子ノードに関連付けられ、前記チャンネルにアクセスするように購読されている各リーフノードの前記宛先アドレスを記述する対応するデータを含む、対応する変更マルチメディア・データフレームを生成する工程であって、
該対応するデータの少なくとも一部は、対応するビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記対応するビットマップにおける各ビットは、当該子ノードに関連付けられている1つ以上の前記リーフノードのみを識別し、
前記対応するデータは、宛先アドレスについてのエンコードされたビットマップであり、宛先アドレスについてのエンコードされた前記第1ビットマップとは異なっており、別の子ノードに対応する宛先アドレスについてのエンコードされたビットマップとは異なっている、工程と、
前記第2ネットワークノードから、ユニキャスト・データフレームとして、対応する前記変更マルチメディア・データフレームを各子ノードに送信する工程と、
を含む動作を行わせるように動作可能な命令を記憶している1または複数の記憶デバイスと、を備えるシステム。
【請求項7】
前記動作は、
前記複数のチャンネルの各々について、
前記チャンネルメンバシップデータに基づいて、前記複数のリーフノードのうちの1または複数のリーフノードが前記チャンネルにアクセスするように購読されていないと決定することに応じて、前記チャンネルについての変更マルチメディア・データフレームを生成しない工程をさらに含む、請求項に記載のシステム。
【請求項8】
前記変更マルチメディア・データフレームは、MACヘッダとペイロードとを含む請求項またはに記載のシステム。
【請求項9】
各対応する変更マルチメディア・データフレームは、前記ペイロードのコピーを含む請求項に記載のシステム。
【請求項10】
前記後続のネットワークノードの数が1ネットワークノードに等しいと決定することに応じて、(i)該1つの後続のネットワークノードの宛先アドレスを記述するデータと、(ii)前記ペイロードのコピーとを含むユニキャスト・データフレームを生成する請求項に記載のシステム。
【請求項11】
命令を記憶する非一時的なコンピュータ可読記憶デバイスであって、前記命令は、データ処理装置による実行時、前記データ処理装置に、
第1ネットワークノードが、複数のチャンネルの各チャンネルについて、複数のチャンネルについてのリーフノードのメンバシップを示すデータを含むチャンネルメンバシップデータを維持する工程と、
前記複数のチャンネルの各チャンネルについて、
前記チャンネルメンバシップデータに基づいて、前記チャンネルにアクセスするように購読されている前記リーフノードを決定する工程と、
前記チャンネルにアクセスするように購読されている前記リーフノードに基づいて、(i)前記チャンネルにアクセスするように購読されている前記リーフノードのうちの1つ以上のためのハブノードを識別するハブノード識別子と、(ii)前記チャンネルにアクセスするように購読されている各リーフノードの宛先アドレスを記述するデータであって、該データの少なくとも一部は、ビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記ビットマップにおける各ビットは、特定のリーフノードを識別し、前記データは、宛先アドレスについてのエンコードされた第1ビットマップである、前記データと、(iii)ペイロードとを含む、前記チャンネルについての変更マルチメディア・データフレームを生成する生成工程と、
前記第1ネットワークノードが、ユニキャスト・データフレームとして、生成された前記変更マルチメディア・データフレームを第2ネットワークノードに送信する工程と、
前記第2ネットワークノードにおいて、前記変更マルチメディア・データフレームを受信する工程と、
宛先アドレスについてのエンコードされた前記第1ビットマップから、複数の子ノードを決定する工程であって、前記複数の子ノードの各々は、前記リーフノードのうちの1つ以上のためのノードである、工程と、
前記複数の子ノードの各々について、
当該子ノードに関連付けられ、前記チャンネルにアクセスするように購読されている各リーフノードの前記宛先アドレスを記述する対応するデータを含む、対応する変更マルチメディア・データフレームを生成する工程であって、
該対応するデータの少なくとも一部は、対応するビットマップに従い各リーフノードの前記宛先アドレスを記述し、前記対応するビットマップにおける各ビットは、当該子ノードに関連付けられている1つ以上の前記リーフノードのみを識別し、
前記対応するデータは、宛先アドレスについてのエンコードされたビットマップであり、宛先アドレスについてのエンコードされた前記第1ビットマップとは異なっており、別の子ノードに対応する宛先アドレスについてのエンコードされたビットマップとは異なっている、工程と、
前記第2ネットワークノードから、ユニキャスト・データフレームとして、対応する前記変更マルチメディア・データフレームを各子ノードに送信する工程と、
を含む動作を行わせるコンピュータ可読記憶デバイス。
【請求項12】
前記動作は、
前記複数のチャンネルの各々について、
前記チャンネルメンバシップデータに基づいて、前記複数のリーフノードのうちの1または複数のリーフノードが前記チャンネルにアクセスするように購読されていないと決定することに応じて、前記チャンネルについての変更マルチメディア・データフレームを生成しない工程をさらに含む、請求項11に記載のコンピュータ可読記憶デバイス。
【請求項13】
前記変更マルチメディア・データフレームは、MACヘッダとペイロードとを含む請求項11または12に記載のコンピュータ可読記憶デバイス。
【請求項14】
各対応する変更マルチメディア・データフレームは、前記ペイロードのコピーを含む請求項11に記載のコンピュータ可読記憶デバイス。
【請求項15】
前記後続のネットワークノードの数が1ネットワークノードに等しいと決定することに応じて、(i)該1つの後続のネットワークノードの宛先アドレスを記述するデータと、(ii)前記ペイロードのコピーとを含むユニキャスト・データフレームを生成する請求項11に記載のコンピュータ可読記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張マルチキャストネットワーク通信に関する。
【背景技術】
【0002】
メディアアクセス制御(MAC)層におけるデータフレームの従来のネットワーク化された通信は、典型的には、ユニキャストまたはマルチキャスト通信のいずれかを含む。各々のデータフレーム通信の形態には、既知の欠点がある。それらの欠点のため、テレビ(TV)ストリーミングサービスなどの大量の帯域幅を消費するサービス用のデータフレームの生成およびルーティングに対応する、代替の、また改良した通信の形態が所望される。
【発明の概要】
【0003】
変更マルチメディア・データフレームを生成およびルーティングするための、コンピュータ記憶媒体に対しエンコードされたコンピュータプログラムを備える方法、システム、装置。1つの態様では、方法は、第1ネットワークノードが、複数のチャンネルの各チャンネルについて、複数のチャンネルについてのリーフノードのメンバシップを示すデータを含むチャンネルメンバシップデータを維持することと、前記複数のチャンネルの各チャンネルについて、前記チャンネルメンバシップデータに基づいて、前記チャンネルにアクセスするように購読(サブスクライブ)されている前記リーフノードを決定することと、前記チャンネルにアクセスするように購読されている前記リーフノードに基づいて、(i)ハブノード識別子と(ii)前記チャンネルにアクセスするように購読されている各リーフノードの宛先アドレスを記述するデータと(iii)ペイロードとを含む、前記チャンネルについての変更マルチメディア・データフレームを生成することと、前記第1ネットワークノードが、生成された前記変更マルチメディア・データフレームを第2ネットワークノードに送信することと、の作用を備えてよい。マルチメディアコンテンツデータをネットワークの複数のそれぞれのノードに送信するように複数のユニキャスト・データフレームを用いる代わりに、単一の変更マルチメディア・データフレームが、マルチメディアコンテンツをネットワークの複数のノードに送信するように用いられることが可能であり、それによって、ネットワークトラフィックを減少させ、利用可能な帯域幅を増加させ、その利用可能な帯域幅を用いて追加のデータの送信を可能とする。
【0004】
他のバージョンは、コンピュータ記憶デバイスに対しエンコードされた方法の作用を行うための、対応するシステム、装置、およびコンピュータプログラムを含む。
これらのバージョンおよび他のバージョンは、以下の特徴のうちの1または複数を任意に含んでよい。例えば、いくつかの実装では、前記変更マルチメディア・データフレームは、MACヘッダとペイロードとを含み得るユニキャスト・データフレームを含み、前記MACヘッダは宛先アドレスフィールドを含み得る。
【0005】
いくつかの実装では、変更マルチメディア・データフレームを生成することは、前記チャンネルにアクセスするように購読されている各リーフノードについての宛先アドレスを宛先アドレスのエンコードされたビットマップへとエンコードすることと、前記宛先アドレスフィールドに宛先アドレスの前記エンコードされたビットマップを投入することと、を含んでよい。
【0006】
いくつかの実装では、方法は、前記第2ネットワークノードが、前記変更マルチメディア・データフレームのうちの1つ以上を受信することと、前記第2ネットワークノードが、宛先アドレスの前記エンコードされたビットマップに基づいて、前記1つ以上の変更マルチメディア・データフレームの宛先である後続のネットワークノードの数を識別することと、前記後続のネットワークノードの数が1ネットワークノードよりも大きいと決定することに応じて、(i)前記後続のネットワークノードの各々の宛先アドレスを記述するデータと(ii)前記ペイロードのコピーとを含む変更マルチメディア・データフレームを生成することと、を含んでよい。
【0007】
いくつかの実装では、方法は、前記第2ネットワークノードが、前記変更マルチメディア・データフレームのうちの1つ以上を受信することと、前記第2ネットワークノードが、宛先アドレスの前記エンコードされたビットマップに基づいて、前記1つ以上の変更マルチメディア・データフレームの宛先である後続のネットワークノードの数を識別することと、前記後続のネットワークノードの数が1ネットワークノードに等しいと決定することに応じて、(i)該1つの後続のネットワークノードの宛先アドレスを記述するデータと(ii)前記ペイロードのコピーとを含むユニキャスト・データフレームを生成することと、を含んでよい。
【図面の簡単な説明】
【0008】
図1】変更マルチメディア・データフレームを生成およびルーティングするためのシステムの一例のコンテキスト図。
図2】変更マルチメディア・データフレームを生成するための処理の一例のフローチャート。
図3】変更マルチメディア・データフレームをルーティングするための処理の一例のフローチャート。
図4】変更マルチメディア・データフレームを生成およびルーティングするためのシステムのコンポーネントのブロック図。
【発明を実施するための形態】
【0009】
本開示は、テレビ(TV)データフレームなどのマルチメディア・データフレームをブロードキャストするためのシステムおよび方法を対象とする。本開示は、例えば、ビットマップアドレスをリーフ・ネットワークノードにマッピングするデータを含み得る1または複数のメンバシップテーブル交換と組合せた使用のための変更されたマルチメディア・データフレームを生成することによって、従来の方法に対する利点を達成する。変更マルチメディア・データフレームは、例えば、複数のリーフ・ネットワークノードの各リーフ・ネットワークノードについての宛先アドレスを記述するデータをユニキャスト・データフレームの宛先アドレスフィールドへ挿入可能な宛先アドレスのビットマップにエンコードするための小型アドレッシングスキームを用いて生成されるデータを通信するために用いられ得るユニキャスト・データフレームを含んでよい。変更マルチメディア・データフレームおよびメンバシップテーブル交換によって、従来のユニキャスト送信に関連してTVコンテンツなどのコンテンツをストリーミングするために必要な帯域幅の削減が可能となる。さらに、変更マルチメディア・データフレームおよびメンバシップ交換テーブルによって、ユニキャスト・データフレームを用いたマルチキャストに似たデータフレームブロードキャストも可能となり、従来のマルチキャストブロードキャスティングに必要なマルチキャスト・スパニングツリーの頻繁な再計算に関する費用のかかる処理が避けられる。
【0010】
図1は、変更マルチメディア・データフレームを生成およびルーティングするためのシステム100の一例のコンテキスト図である。システム100は、ネットワーク105、1次ノード110を含む複数のネットワークノード、1または複数のハブノード112−1,112−2,112−n(ここでnは1から64までの任意の正の整数)、無線メッシュネットワーク120、および複数のリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159を備える。
【0011】
1次ノード110は、インターネットなどのネットワーク105と1または複数のハブノード112−1,112−2,112−nとの間に配置されているネットワークノードである。1次ノード110は、有線接続102を通じて有線データフレーム107などのデータを受信し、無線ハブ112−1,112−2,112−nへの送信用に無線データフレーム、有線データフレーム、またはその両方を生成する。1次ノードは、例えば、ファイバハット(fiber hut)、光ネットワークユニット、マルチメディアフィードサーバ、TVフィードサーバなどを含んでよい。1次ノード110は、光信号など1または複数の信号として受信したデータを対応するハブノードにルーティングする中継器として作用してよい。ハブノード112−1,112−2,112−nは、1次ノード110と1組の1または複数のリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159との間に配置されているネットワークノードである。各それぞれのハブノード112−1,112−2,112−nは、ファイバ線などの入力データ線を、1または複数のリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159の組に対応する束にグループ化する。
【0012】
1次ノード110は、チャンネル購読データを維持するように構成される。チャンネル購読データは、複数のチャンネルの各チャンネルに対するリーフノードのメンバシップを記述するデータを含んでよい。いくつかの実装では、チャンネル購読データは、テーブルを用いてチャンネルごとのベースにて維持されてよい。チャンネル購読データは、各チャンネルについて、そのチャンネルのメンバであるリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159などのネットワークノードを決定するようにアクセスされてよい。ネットワークノードがチャンネルのメンバであるのは、例えば、そのネットワークノードが、そのチャンネルによって提供されるコンテンツにそのネットワークノードがアクセスできる購読を有する場合である。チャンネルによって提供されるコンテンツへのアクセスは、例えば、チャンネルによって提供されるコンテンツを閲覧するためのアクセスを含んでよい。チャンネルは、例えば、TVチャンネルを含んでよい。これに代えて、チャンネルは、例えば、YouTube(登録商標)チャンネルなどのインターネットマルチメディアチャンネルを含んでよい。
【0013】
1次ノード110は、複数の変更マルチメディア・データフレーム130を生成するように構成される。例えば、1次ノード110は、特定のストリーミングサーバによって提供される複数のチャンネルの各チャンネル(各々それぞれのデータストリームと考えられ得る)について、ハブノード112−1,112−2,112−nごとに変更マルチメディア・データフレーム130を生成してよい。これに代えて、またはこれに加えて、1次ノード110は、特定のチャンネルからのコンテンツについてのネットワークノードからの要求に応じて、変更マルチメディア・データフレーム130を生成してよい。
【0014】
変更マルチメディア・データフレーム130は、MACヘッダ132およびペイロード134を含む、メディアアクセス制御(MAC)層における通信用のユニキャスト・データフレームを含む。変更マルチメディア・データフレーム130のMACヘッダ132は、宛先アドレスフィールド140を含む。変更マルチメディア・データフレーム130の宛先アドレスフィールド140は、変更マルチメディア・データフレーム130を従来のユニキャスト・データフレームと区別する。変更マルチメディア・データフレーム130は、ハブノードID(HubNodeID)142、定数144、および宛先アドレスデータ146を含む。ハブノードID142は、変更マルチメディア・データフレーム130がルーティングされるハブノード112−1,112−2,112−nを識別するように用いられる。定数144は、(i)宛先アドレスデータ146がローカルに管理されたアドレスであること、(ii)データフレームが変更マルチメディア・データフレームであること、または(iii)その両方であることを示すように用いられる。
【0015】
宛先アドレスデータ146は、変更マルチメディア・データフレーム130のペイロードについての宛先である、複数のリーフノードの各リーフノードの宛先アドレスを表すデータを含む。これは、従来のユニキャスト・データフレームが、その唯一の宛先である単一のノードの単一の宛先アドレスしか含み得ないのとは異なる。宛先アドレスデータ146は、マルチメディア・データフレーム130が生成される時に作り出されてよい。いくつかの実装では、1次ノード110は、各リーフノードについての宛先アドレスを記述するデータを、MACヘッダ132の宛先アドレスフィールド140の宛先アドレスデータフィールド146へと挿入される宛先アドレスのビットマップへとエンコードすることによって、変更マルチメディア・データフレーム130を生成してよい。
【0016】
変更マルチメディア・データフレームのペイロードがMACヘッダ132の宛先アドレスフィールド140へとルーティングされる、複数の宛先ノードの各宛先ノードの各宛先アドレスをエンコードすることによって、ネットワーク帯域幅をより効率的に用いるシステムが得られる。これは、マルチメディアコンテンツデータをネットワークの複数のそれぞれのノードに送信するように複数のユニキャスト・データフレームを用いる代わりに、単一の変更マルチメディア・データフレーム130が、マルチメディアコンテンツをメッシュネットワーク120の複数のノードに送信するように用いられることが可能なためである。これは、ネットワークトラフィックを減少させ、利用可能な帯域幅を増加させ、その利用可能な帯域幅を用いて追加のデータの送信を可能とする。
【0017】
いくつかの実装では、MACヘッダ132の宛先アドレスフィールド140は、48ビットからなる6バイトを含む。最上位バイトのうちの最下位2ビットは、0x11などの定数に固定されてよい。最上位バイトの残り6ビットは、1次ノード110の下において特定のハブノード112−1,112−2,112−nを識別するように用いられ得るハブノードID12である。残る5バイトの各ビットは、宛先アドレスフィールド140のハブノードID142によって識別されるハブノードの下のリーフノードに1対1にマッピングされる。そうした実装では、残る40ビットによって確立される1対1のマッピングによって、各ハブノード112−1,112−2,112−nについてアドレス決定可能な40のリーフノードが得られる。したがって、このアドレッシングスキームは、一般に1次ノードの下の無線トポロジ内の2^6*40=2560のノードをサポートする。40ビットのビットマップにおける特定のビットへのリーフノードのマッピングは、1次ノード110によって事前に各リーフノードと共有され、近傍のトポロジの存続期間中には変化しない。すなわち、40ビットのビットマップにおける特定のビットへのリーフノードのマッピングは、例えば、比較的珍しいイベントであり得る、新たな購読者(サブスクライバ)が新たな購読を開始する時など、ノードメンバシップの永久的な変化があるときのみ更新されてよい。40ビットのビットマップにおける特定のビットへのリーフノードのマッピングのこの準静的な状態は、各チャンネル変化についてスパニングツリーの動的な再計算を必要とする従来のマルチキャスティング通信を超えて効率を増加させる。
【0018】
1次ノード110は、変更マルチメディア・データフレーム130を、変更マルチメディア・データフレーム130のハブノードID142によって識別されるハブノード112−nにルーティングしてよい。次いで、ハブノード112−nは、変更マルチメディア・データフレーム130を、ハブノード112−nが関連付けられているリーフノードネットワークのリーフノード“A”150などの第1リーフノードに送ってよい。各リーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159は、購読者の家、職場、または他の場所における受信ユニット(例えば、セットトップボックス、テレビ、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォンなど)など、可能性のあるデータフレームの宛先地点を表す。
【0019】
「リーフノード」は、(i)宛先エンドポイントとして、変更マルチメディア・データフレームを受信し、マルチメディア・データフレームのペイロードを取得および使用するために変更マルチメディア・データフレームを処理し、また(ii)必要に応じて、変更マルチメディア・データフレームを1または複数の他のノード(別のリーフノードまたはリーフノードではないノードを含み得る)に送信する、ノードである。しかしながら、リーフノード“H”157,“I”158,“J”159,および“G”156などのいくつかの「リーフノード」は、変更マルチメディア・データフレームの受信と送信との両方を行う能力があるが、リーフノード“H”157,“I”158,“J”159,および“G”156が変更マルチメディア・データフレームを送信する必要がないように、やがて特定時点においてネットワークに配置されてよい。例えば、単にリーフノード“H”157,“I”158,“J”159,および“G”156は、それらのリーフノードが変更マルチメディア・データフレームを他のリーフノードに送信しない特定時点において、特定のネットワーク構成に存在する(例えば、リーフノード“H”157,“I”158,“J”159,および“G”156の後に階層的に配列されるリーフノードがない)からといって、そうしたリーフノードが変更マルチメディア・データフレームを送信することができない、変更マルチメディア・データフレームを過去に送信してない、または変更マルチメディア・データフレームを将来送信しない、ということは意味しない。
【0020】
例えば、メッシュネットワーク120は将来いくつかの地点に再構成されることが可能であり、リーフノード“H”157,“I”158,“J”159,および“G”156の後に階層的に配列される1または複数のリーフノードを得る。そうしたシナリオの下では、リーフノード“H”157,“I”158,“J”159,および“G”156のうちの1または複数が、変更マルチメディア・データフレームを送信する場合が生じてよい。異なる例を参照すると、リーフノード“H”157,“I”158,“J”159,および“G”156のうちの1または複数が、リーフノード“H”157,“I”158,“J”159,および“G”156の後に階層的に配列されていた1または複数のリーフ・ネットワークノードを有し得たように、メッシュネットワーク120が過去に異なるように構成され得たことも可能である。そうした場合には、リーフノード“H”157,“I”158,“J”159,および“G”156のうちの1または複数は、変更マルチメディア・データフレームを、“H”157,“I”158,“J”159,および“G”156の後に階層的に配列されている他のリーフノードに送信することが可能である。
【0021】
各リーフノードは、変更マルチメディア・データフレーム130などの変更マルチメディア・データフレームをルーティングするように用いられることが可能なビットマップテーブル160などのメンバシップ交換テーブルを記憶してよい。ビットマップテーブル160は、1次ノード110によって生成されてよく、次いで、1次ノード110によって各それぞれのリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159に分配されてよい。いくつかの実装では、ビットマップテーブル160は、純粋なJSON(JavaScript(登録商標) Object Notation)フォーマットにおいて共有されてよい。JSONフォーマットは、ファイルにおいて、プロトコルバッファを介して、または1次ノード110から各それぞれのリーフノードへのリモートプロシージャコール(RPC)によって共有されてよい。テーブルは、購読を開始するリーフノード、購読を解除するリーフノードなどといった1または複数のチャネルに対するリーフノードの購読状態の変化の際にのみ更新される。
【0022】
いくつかの実装では、1次ノード110が、購読を有しないリーフノードに変更マルチメディア・データフレームを送信しないので、リーフノードの購読解除は無視される(また、ビットマップテーブル160は更新されない)。したがって、システム100は、1または複数の新たなリーフノードが購読を開始した後の時点まで1または複数のリーフノードを取り除くように、ビットマップテーブルを更新するのを待機することが可能である。
【0023】
ビットマップテーブル160は、ハブ112−nなどの特定のハブノードの下に階層的に組織された各リーフノードについてのビットマップアドレスを含む。ビットマップテーブル160の各行は、161,162,163,164,165,166,167,168,169,170をマッピングするリーフノード160bに対するビットマップアドレス160aを含む。次いで、リーフノードは、変更マルチメディア・データフレーム130についての宛先であるリーフノードの組の各々を決定するように、(i)変更マルチメディア・データフレーム130において受信される宛先アドレスのビットマップにエンコードされた1組の宛先アドレスを(ii)ビットマップテーブル160における各リーフノードのビットマップアドレス160aと比較することが可能である。
【0024】
いくつかの実装では、ビットマップテーブル160を受信する各それぞれのリーフノード“A”150,“B”151,“C”152,“D”153,“E”154,“F”155,“G”156,“H”157,“I”158,“J”159は、迅速および効率的な分枝(ブランチング)操作を容易にするように用いることが可能なビットマスク対ネクストホップ(次のホップ)のテーブルを作り出すことが可能である。このビットマスク対次のリーフノードのテーブルによって、宛先アドレスの受信されたビットマップについて可能なルーティングの各宛先を事前計算することが可能となる。この場合、宛先アドレスの与えられたビットマップについての宛先ルートが予め決定されており、またビットマップテーブル160を用いてリアルタイムに計算される必要がないので、単にビットマップテーブル160を用いるよりも分枝操作が効率的となる。
【0025】
例として、リーフノード“A”150は変更マルチメディア・データフレーム130を受信してよく、変更マルチメディア・データフレーム130をその目標の宛先ノードにルーティングするように分枝操作の実行を開始してよい。リーフノード“A”150は、各リーフノードに記憶されているビットマップテーブル160を考慮して、宛先アドレスデータ146を解析することによって分枝操作の実行を開始することが可能である。宛先アドレスデータ146を解析することは、変更マルチメディア・データフレーム130から取得される宛先アドレスデータ146をビットマップテーブル160によって維持されるデータと比較することを含んでよい。
【0026】
マルチメディア・データフレーム130は、宛先アドレスのビットマップを含んでよい。すなわち、宛先アドレスのビットマップの各ビットは、特定のリーフノードが変更マルチメディア・データフレーム130の宛先であるか否かを示すことが可能である。例えば、リーフノード“A”150にて受信されたマルチメディア・データフレーム130が、“0111110110”180などの宛先アドレスのビットマップを含むと仮定する。ビットマップテーブル160を用いると、リーフノード“A”150は、“0111110110”180などの宛先アドレスのビットマップがリーフノード“B”151,“C”152,“E”154,“F”155,“G”156,“H”157,および“I”158が変更マルチメディア・データフレーム130の宛先であることを示すと決定することが可能である。したがって、リーフノード“A”150は、リーフノード“A”150が変更マルチメディア・データフレーム130の宛先ではないと決定し、変更マルチメディア・データフレーム130に関連付けられているペイロードをリーフノード“B”151,“C”152,“E”154,“F”155,“G”156,“H”157,および“I”158に送信するように必要なルーティング動作を実行することが可能である。
【0027】
リーフノード“A”150は、1または複数の次のリーフノード宛先によりリーフノード宛先をグループ化することによって、変更マルチメディア・データフレーム130のルーティングを実行し続ける。例えば、リーフノード“A”150は、変更マルチメディア・データフレームの宛先アドレスフィールドにエンコードされた宛先アドレスのビットマップに基づいて、次のリーフノード宛先がリーフノード“B”151およびリーフノード“C”152を含むと決定してよい。いくつかの実装では、次のリーフノード宛先を決定するこの段階は、受信された変更マルチメディア・データフレーム130に含まれる宛先アドレスのビットマップを、ビットマスク対次のリーフノードのテーブルにアクセスして変更マルチメディア・データフレームがルーティングされる1または複数の次のリーフノードを返す関数に提供することを含んでよい。これに代えて、次のリーフノード宛先は、宛先アドレスのビットマップをビットマップテーブル160と比較することによって計算されることが可能である。次いで、リーフノード“A”150は、残る宛先アドレスの各々をリーフノード“B”151のカテゴリまたはリーフノード“C”152のカテゴリのいずれかのグループとすることが可能である。上述の例をさらに考慮すると、リーフノード“A”150は、リーフノード“H”157、リーフノード“E”154、およびリーフノード“I”158についての宛先アドレスをリーフノード“B”151のカテゴリのグループとし、またリーフノード“F”155およびリーフノード“G”156についての宛先アドレスをリーフノード“C”152のカテゴリのグループとしてよい。
【0028】
リーフノード“A”150は、リーフノード“B”151およびリーフノード“C”152などの1または複数の次のリーフノード宛先の各々が最後のリーフノード宛先であるか否かを決定する。リーフノード“A”150は、リーフノード宛先の数が1リーフノード宛先よりも大きいかを決定することによって、1または複数の次のリーフノード宛先の各々が最後のリーフノード宛先であるかを決定してよい。残るリーフノード宛先の数が1よりも大きい場合、リーフノード“A”150は次のリーフノード宛先が最後の宛先ノードではないことを決定してよい。残るリーフノード宛先の数が1に等しい場合、リーフノード“A”150は、次のリーフノード宛先が最後のリーフノード宛先であると決定してよい。
【0029】
リーフノード“A”150は、リーフノード“B”のカテゴリおよびリーフノード“C”のカテゴリが各々2以上のリーフノード宛先アドレスを含み、したがって最後のリーフノード宛先ではないと決定してよい。リーフノード“B”151およびリーフノード“C”152が最後のリーフノード宛先ではないと決定することに応じて、リーフノード“A”150は、新たな変更マルチメディア・データフレーム131および新たな変更マルチメディア・データフレーム132を生成する。これに代えて、異なるシナリオ(例えば、異なる受信された変更マルチメディア・データフレーム132)の下では、リーフノード“A”150などのリーフノードは、1または複数の次のリーフノードが変更マルチメディア・データフレームについての最後のリーフノード宛先であると代わりに決定してよい。そうした場合には、リーフノード“A”150は、最後のリーフノード宛先への送信用のユニキャスト・データフレームを生成してよい。そうした代替は、図1の例を参照して以下においてより詳細に説明される。
【0030】
変更マルチメディア・データフレーム131は、変更マルチメディア・データフレーム130の生成と同様の手法にて生成される。詳細には、変更マルチメディア・データフレーム131は、変更マルチメディア・データフレーム131の宛先アドレスフィールドにエンコードされた宛先アドレスデータに関するものを除いて、変更マルチメディア・データフレーム130の複製である。例えば、リーフノード“A”150は、リーフノードカテゴリ“B”にある宛先アドレスの組を、変更マルチメディア・データフレーム131の宛先アドレスフィールドへとエンコードするのみである。これによって、リーフノード“A”150が宛先アドレス“0110010010”181のビットマップを生成する。宛先アドレス“0110010010”180のビットマップは、変更マルチメディア・データフレーム131が、“B”,“E”,“H”,“I”を含むリーフノード宛先にルーティングされることを示す。次いで、変更マルチメディア・データフレーム131は、リーフノード“B”151にルーティングされることが可能である。変更マルチメディア・データフレーム131を受信すると、リーフノード“B”151は分枝操作を実行する。
【0031】
変更マルチメディア・データフレーム132も、リーフノード“A”150によって、変更マルチメディア・データフレーム130の生成と同様の手法にて生成される。詳細には、変更マルチメディア・データフレーム132は、変更マルチメディア・データフレーム132の宛先アドレスフィールドにエンコードされた宛先アドレスデータに関するものを除いて、変更マルチメディア・データフレーム130の複製である。例えば、リーフノード“A”150は、リーフノードカテゴリ“C”にある宛先アドレスの組を、変更マルチメディア・データフレーム132の宛先アドレスフィールドへとエンコードするのみである。これによって、リーフノード“A”150が宛先アドレス“0001100100”182のビットマップを生成する。宛先アドレス“0001100100”182のビットマップは、変更マルチメディア・データフレーム132が、“C”,152“F”155,および“G”156を含むリーフノード宛先にルーティングされることを示す。次いで、変更マルチメディア・データフレーム132は、リーフノード“C”151にルーティングされることが可能である。変更マルチメディア・データフレーム132を受信すると、リーフノード“C”152は分枝操作を実行する。
【0032】
リーフノード“B”151は、変更マルチメディア・データフレーム131を受信し、リーフノード“A”150と同様の手法にて分枝操作を実行してよい。分枝は、変更マルチメディア・データフレーム131の宛先アドレスフィールド181によって識別される後続のリーフノード宛先をグループ化するリーフノード“B”を含む。例えば、リーフノード“B”151は、次のリーフノード宛先がリーフノード“H”157およびリーフノード“E”154を含むと決定してよい。いくつかの実装では、次のリーフノード宛先を決定するこの段階は、受信されたマルチメディア・データフレーム131に含まれる宛先アドレスのビットマップを、ビットマスク対次のリーフノードのテーブルにアクセスして変更マルチメディア・データフレームがルーティングされる1または複数の次のリーフノードを返す関数に提供することを含んでよい。これに代えて、次のリーフノード宛先は、宛先アドレスのビットマップをビットマップテーブル160と比較することによって計算されることが可能である。次いで、リーフノード“B”151は、残る宛先アドレスの各々をリーフノード“H”157のカテゴリまたはリーフノード“E”154のカテゴリのいずれかのグループとすることが可能である。上述の例をさらに考慮すると、リーフノード“B”151は、リーフノード“H”157についての宛先アドレスをリーフノード“H”157のカテゴリのグループとし、またリーフノード“E”154およびリーフノード“I”158についての宛先アドレスをリーフノード“E”154のカテゴリのグループとしてよい。
【0033】
リーフノード“B”151は、リーフノード“H”157およびリーフノード“E”154などの1または複数の次のリーフノード宛先の各々が最後のリーフノード宛先であるかを決定する。リーフノード“B”151は、リーフノード宛先の数が1リーフノード宛先よりも大きいかを決定することによって、特定のリーフノード宛先が最後のリーフノード宛先であるかを決定してよい。残るリーフノード宛先の数が1よりも大きい場合、リーフノード“B”151は次のリーフノード宛先が最後の宛先ノードではないと決定してよい。残るリーフノード宛先の数が1に等しい場合、リーフノード“B”151は、次のリーフノード宛先が最後のリーフノード宛先であると決定してよい。
【0034】
リーフノード“B”150は、リーフノード“H”のカテゴリが1つのリーフノード宛先アドレスしか含まず、したがって最後のリーフノード宛先であると決定してよい。この場合には、“H”のカテゴリのメッシュネットワークの次のノード(すなわち、ノード“D”)がメッセージ133の最後の宛先ノードではないので、リーフノード“B”150は“0010000000”183のアドレスを有する変更マルチメディア・データフレーム133を生成し、変更マルチメディア・データフレーム133をノード“D”に送信する。
【0035】
ノード“D”は、変更マルチメディア・データフレーム133を受信し、前のリーフノード“A”150およびリーフノード“B”151と同様の手法にて分枝操作を実行する。例えば、リーフノード“D”153は、次のリーフノード宛先がリーフノード“H”157であると決定してよい。いくつかの実装では、次のリーフノード宛先を決定するこの段階は、受信された変更マルチメディア・データフレーム133に含まれる宛先アドレスのビットマップを、ビットマスク対次のリーフノードのテーブルにアクセスして変更マルチメディア・データフレームがルーティングされる1または複数の次のリーフノードを返す関数に提供することを含んでよい。これに代えて、次のリーフノード宛先は、宛先アドレスのビットマップをビットマップテーブル160と比較することによって計算されることが可能である。この分枝操作では、リーフノード“D”153は、リーフノード“H”157を超えて宛先アドレスのビットマップに他のリーフノード宛先アドレスがないと決定することが可能である。
【0036】
リーフノード宛先アドレスのグループ化によって、単一のリーフノード宛先を含む単一のリーフノード“H”157のカテゴリが得られる。リーフノード“D”153は、リーフノード“H”157のカテゴリが単一のリーフノード宛先アドレスを含むのみであると決定することが可能である。リーフノード“H”157のカテゴリが単一のリーフノード宛先アドレスを含むのみであると決定することに応じて、リーフノード“D”153は、リーフノード“H”157の最後のリーフノード宛先への送信用に新たなユニキャストメッセージ134を生成する。ユニキャスト・データフレーム134の宛先アドレスフィールドは、リーフノード“H”157のアドレス“H_Addr”184を含む。アドレス“H_Addr”は、リーフノード“H”157の特定のアドレスである。ユニキャスト・データフレーム134は、リーフノード“D”153によってリーフノード“H”157に送信される。
【0037】
それとは別に、リーフノード“B”151は、リーフノード“E”154のカテゴリが2以上のリーフノード宛先アドレスを含み、したがって最後のリーフノード宛先ではないと決定してよい。リーフノード“E”154が変更マルチメディア・データフレーム131についての最後のリーフノード宛先ではないと決定することに応じて、リーフノード“B”151は新たな変更マルチメディア・データフレーム135を生成する。
【0038】
変更マルチメディア・データフレーム135は、変更マルチメディア・データフレーム131の生成と同様の手法にて生成される。詳細には、変更マルチメディア・データフレーム135は、変更マルチメディア・データフレーム135の宛先アドレスフィールドにエンコードされた宛先アドレスデータに関するものを除いて、変更マルチメディア・データフレーム131の複製である。例えば、リーフノード“B”151は、リーフノードカテゴリ“E”に関連付けられていると識別される宛先アドレスの組を、変更マルチメディア・データフレーム135の宛先アドレスフィールドへとエンコードするのみである。これによって、リーフノード“B”151が、変更マルチメディア・データフレーム135の宛先アドレスフィールドに含ませるための宛先アドレス“0100010000”185のビットマップを生成する。宛先アドレス“0100010000”185のビットマップは、変更マルチメディア・データフレーム135が、リーフノード“E”154およびリーフノード“I”158を含むリーフノード宛先にルーティングされることを示す。次いで、変更マルチメディア・データフレーム135は、リーフノード“E”154にルーティングされることが可能である。変更マルチメディア・データフレーム135を受信すると、リーフノード“E”154は分枝操作を実行する。
【0039】
リーフノード“E”154は、変更マルチメディア・データフレーム135を受信し、前のリーフノード“A”150およびリーフノード“B”151と同様の手法にて分枝操作を実行する。例えば、リーフノード“E”154は、次のリーフノード宛先がリーフノード“I”158であると決定してよい。いくつかの実装では、次のリーフノード宛先を決定するこの段階は、受信された変更マルチメディア・データフレーム135に含まれる宛先アドレスのビットマップを、ビットマスク対次のリーフノードのテーブルにアクセスして変更マルチメディア・データフレームがルーティングされる1または複数の次のリーフノードを返す関数に提供することを含んでよい。これに代えて、次のリーフノード宛先は、宛先アドレスのビットマップをビットマップテーブル160と比較することによって計算されることが可能である。この分枝操作では、リーフノード“E”154は、リーフノード“I”158を超えて宛先アドレスのビットマップに他のリーフノード宛先アドレスがないと決定することが可能である。
【0040】
リーフノード宛先アドレスをグループ化することによって、単一のリーフノード宛先を含む単一のリーフノード“I”158のカテゴリを得る。リーフノード“E”154は、リーフノード“I”158のカテゴリが単一のリーフノード宛先アドレスを含むのみであると決定することが可能である。リーフノード“I”158のカテゴリが単一のリーフノード宛先アドレスを含むのみであると決定することに応じて、リーフノード“E”154は、リーフノード“I”158の最後のリーフノード宛先への送信用に新たなユニキャストメッセージ136を生成する。ユニキャスト・データフレーム136の宛先アドレスフィールドは、リーフノード“I”158のアドレス“I_Addr”186を含む。アドレス“I_Addr”は、リーフノード“I”158の特定のアドレスである。ユニキャスト・データフレーム136は、リーフノード“E”154によってリーフノード“I”158に送信される。
【0041】
ネットワークシステム100における1または複数のリーフ・ネットワークノードによって実行される分枝操作の前述の記載は、システム100が、1次ノードからの変更マルチメディア・データフレームをリーフノードの構成を通じてそれぞれのハブノードにどのようにルーティングするかの一例を提供する。図1の残るリーフノードを通じてマルチメディア・データフレームデータフレームをルーティングするように、同一の処理が用いられてよい。例えば、リーフノード“A”150は、変更マルチメディア・データフレーム132をリーフノード“C”に送信してよい。リーフノード“C”152は分枝操作を実行し、それぞれのユニキャスト・データフレーム137および138を生成する。各それぞれのユニキャスト・データフレーム137および138は、それぞれのユニキャスト・データフレーム137および138についての唯一の宛先である特定のリーフノードについてのアドレスを含んでよい。図1の例では、ユニキャストメッセージ137は“F_Addr”187のアドレスを含み、ユニキャストメッセージ138は“G_Addr”のアドレスを含む。次いで、ユニキャスト・データフレーム137および138は、リーフノード“F”155およびリーフノード“G”156の自身のそれぞれの最後の宛先にそれぞれ送信されてよい。
【0042】
変更マルチメディア・データフレームの前述のルーティングは、ユニキャスト・データフレームを用いたマルチキャストのような通信を可能とするように変更されている、アドレスフィールドを有するデータフレームを用いることによって、従来の方法に対して大きな利点を提供する。これは、システム100が、無線ネットワークにおける頻繁なリンク損失とユーザが見たいチャンネルのためのチャンネル間からの検索の間のユーザの素早いチャンネルスイープとに応じてマルチキャストブロードキャスティングシステムにおいて必要とされるマルチキャストルーティングスパニングツリーの頻繁な再計算なしに、変更マルチメディア・データフレームを効率的にルーティングすることを可能とする。従来のマルチキャストブロードキャスティングシステムが用いられた場合、変更マルチメディア・データフレームは、宛先リーフノードに到達することができないか、スパニングツリーのルーティングの再計算中に最適な帯域幅が消費されるよりも大きい。
【0043】
図1の例は、10ビットのビットマップを用いてアドレス決定される複数のリーフ・ネットワークノードの一例を提供する。しかしながら、本開示は、最大40ビットを用いることが可能な宛先アドレスフィールドを担う。6ビットのハブノードIDと組み合わせると、これによって単一の1次ノードの下に2^6*40=2560のリーフノードが可能となる。しかしながら、本開示では、より大きなネットワークサイズさえも可能である。例えば、40ビットの宛先アドレスフィールドの1または複数の最上位・最下位ビットがクラスタidとして用いられることが可能である。例えば、最上位ビットは、ハブノードに関連付けられている第1クラスタノード“1”と同一のハブノードによって識別される第2クラスタノード“0”とを識別するように用いられることが可能である。次いで、残る39ビットは、単一のハブノードの下の合計78のリーフ・ネットワークノードについて、“1”の最上位ビットに関連付けられている第1クラスタノードの下の39のノードと、また“0”の最上位ビットに関連付けられている第2クラスタノードの下の39のノードとを識別するように用いられることが可能である。この同じ6ビットのハブノードIDを用いると、単一の1次ノードの下の2^6*2^1*39=4,992のリーフノードに到達することが可能である。クラスタidを用いた変更マルチメディア・データフレームのルーティングは、ハブノードによるクラスタidによって識別される対応するクラスタネットワークノードへの変更マルチメディア・データフレームのルーティングの追加の段階を伴う。変更マルチメディア・データフレームがクラスタネットワークノードによって受信されると、分枝操作は上述の手法にて宛先アドレスの残るビットを用いて実行されることが可能である。したがって、クラスタidとして用いるための宛先アドレスフィールドの1または複数のビットを割り当てることによって、本開示は、より多数のリーフ・ネットワークノードのアドレス決定を行うように、変更マルチメディア・データフレームを用いることが可能である。
【0044】
上述される図1の例は、リーフノードAが、宛先アドレスデータ146を含む変更マルチメディア・データフレーム130を受信する一例を含む。宛先アドレスデータ146は、変更マルチメディア・データフレーム130のペイロードの宛先である複数のリーフノードの各リーフノードの宛先アドレスを表すデータを含む。宛先アドレスデータ146は、例えば、宛先アドレスのエンコードされたビットマップを含んでよい。しかしながら、いくつかの場合には、リーフノードAは特定のデータフレームの唯一の宛先であってよい。そうした場合には、ハブノード112−nなどのハブノードは、アドレス“A_Addr”190aを含むリーフノードAへの送信用のユニキャストメッセージ190を生成してよい。アドレス“A_Addr”190aは、リーフノード“A”150の特定のアドレスである。ユニキャストフレーム190は、ハブノード112−nによってリーフノード“A”150に送信される。リーフノード“A”150などのリーフノードがユニキャストメッセージ190などのユニキャストメッセージを受信するそれらの場合には、リーフノード“A”150は分枝を実行しない。
【0045】
図2は変更マルチメディア・データフレームを生成するための処理200の一例のフローチャートである。便宜上、処理200は、1または複数の場所に位置する1または複数のコンピュータのシステムによって実行されるとして記載される。例えば、システム100などのシステムは、処理200を実行するように本明細書に従って適切にプログラムされることが可能である。
【0046】
処理200は、第1ネットワークノードが、複数のチャンネルの各々についてリーフノードのメンバシップを示すデータを含むチャンネルメンバシップデータを維持する(210)システムから開始する。いくつかの実装では、チャンネルメンバシップデータは、チャンネルごとのベース上のテーブルを用いて維持されてよい。チャンネル購読データは、各チャンネルについて、そのチャンネルのメンバであるネットワークノードを決定するように用いられてよい。リーフ・ネットワークノードがチャンネルに対するメンバシップを有するのは、例えば、そのリーフ・ネットワークノードが、そのチャンネルによって提供されるコンテンツにそのリーフ・ネットワークノードがアクセスできる購読を有する場合である。チャンネルによって提供されるコンテンツへのアクセスは、例えば、チャンネルによって提供されるコンテンツを閲覧するためのアクセスを含んでよい。チャンネルは、例えば、TVチャンネルを含んでよい。これに代えて、チャンネルは、例えば、YouTubeチャンネルなどのインターネットマルチメディアチャンネルを含んでよい。
【0047】
システムは、複数のチャンネルの各チャンネルについて、複数のリーフ・ネットワークノードの各々がチャンネルにアクセスするように購読されているかを決定する(220)。リーフノードがチャンネルにアクセスするように購読されているかを決定することは、第1ネットワークノードによって維持されているチャンネルメンバシップデータにアクセスすることを含んでよい。例えば、システムは、チャンネルメンバシップデータテーブルにアクセスすることが可能であり、また1または複数のリーフノードがチャンネルにアクセスするための購読に関連付けられているとしてリストに入れられているかを決定することが可能である。
【0048】
システムは、購読されている1以上のリーフノードを有する各チャンネルについて、無線ネットワークにおける使用のための変更マルチメディア・データフレームを生成する(230)。チャンネル用の生成された変更マルチメディア・データフレームは、(i)ハブノード識別子、(ii)定数、(iii)チャンネルに関連付けられている各リーフノードについての宛先アドレスを記述する宛先アドレスデータ、および(iv)ペイロードを含むデータ構造である。ハブノード識別子は、生成された変更マルチメディア・データフレームがルーティングされるハブノードを識別するように用いられる。定数は、変更マルチメディア・データフレームの宛先アドレスデータがローカルに管理されたアドレスであるか、(ii)データフレームが変更マルチメディア・データフレームであるか、または(iii)その両方を示すように用いられる。ペイロードは、例えば、チャンネルによるコンテンツブロードキャストの一部を含んでよい。
【0049】
宛先アドレスデータは、変更マルチメディア・データフレームのペイロードについての宛先である複数のリーフノードの各々の宛先アドレスの表示であるデータを含むので、変更マルチメディア・データフレームの宛先アドレスデータは、従来のユニキャスト・データフレームに含まれる宛先アドレスとは異なる。これは、従来のユニキャスト・データフレームの宛先である単一のノードの単一の宛先アドレスのみを含み得る従来のユニキャスト・データフレームとは異なる。宛先アドレスデータは、マルチメディア・データフレームが生成される時に作り出されてよい。いくつかの実装では、変更マルチメディア・データフレームを生成することは、MACヘッダの宛先アドレスフィールドに投入(ポピュレート)するように用いられる宛先アドレスのビットマップに各リーフノードについての宛先アドレスを記述するデータをエンコードすることを含む。
【0050】
システムは、第1ネットワークノードによって、各生成された変更マルチメディア・データフレームを第2ネットワークノードに送信する(240)。いくつかの実装では、第2ネットワークノードは、変更マルチメディア・データフレームのハブノード識別子によって識別されるハブノードを含んでよい。
【0051】
前述の処理を実行するシステムは、1以上の購読者に関連付けられている各チャンネルについて変更マルチメディア・データフレームを生成する。しかしながら、1または複数の特定のチャネルが購読者を有しない場合があり得る。そうした場合には、システムはチャンネルについての変更マルチメディア・データフレームを生成しないことを決めることが可能である。
【0052】
図3は、変更マルチメディア・データフレームをルーティングするための処理300の一例のフローチャートである。便宜上、処理300は、1または複数の場所に位置する1または複数のコンピュータのシステムによって実行されるとして記載される。例えば、システム100などのシステムは、処理300を実行するように本明細書に従って適切にプログラムされることが可能である。
【0053】
処理300は、変更マルチメディア・データフレームを受信する(310)リーフ・ネットワークノードから開始する。受信された変更マルチメディア・データフレームは、チャンネルに関連付けられている各リーフノードについての宛先アドレスを記述する宛先アドレスデータを含むデータ構造である。宛先アドレスデータは、マルチメディア・データフレームが生成された時に作り出されていてよい。いくつかの実装では、宛先アドレスデータは、マルチメディア・データフレームの宛先である各リーフノードについての宛先アドレスのビットマップとしてエンコードされてよい。リーフ・ネットワークノードは、変更マルチメディア・データフレームを受信すると、以下の段階320〜360によって記載される分枝操作を開始してよい。
【0054】
システムは、受信された変更マルチメディア・データフレームの宛先アドレスデータを解析する(320)。受信された変更マルチメディア・データフレームの宛先アドレスデータを解析すること(320)は、例えば、受信された変更マルチメディア・データフレームの宛先アドレスデータを、リーフ・ネットワークノードにて、ビットマップテーブルに記憶されているデータと比較することを含んでよい。リーフ・ネットワークノードは、マルチメディア・データフレームの宛先である1または複数のリーフノードの各々を決定するようにビットマップテーブルを使用してよい。例えば、いくつかの実装では、ビットマップテーブルは、ビットマップ対リーフ・ネットワークノードのマッピングを含んでよい。このようにして、ビットマップテーブルは、宛先アドレスのビットマップを複数のリーフノード宛先アドレスへと解釈するように用いられることが可能である。
【0055】
システムは、変更マルチメディア・データフレームの宛先である1または複数の次のリーフノードを識別してよい(330)。いくつかの実装では、段階330は、次のリーフノードの宛先を識別することを含んでよく、次のリーフノードの宛先を識別することは、受信されたマルチメディア・データフレームから取得される宛先アドレスのビットマップを、事前計算された宛先アドレスデータ対次のリーフノードのテーブルにアクセスして変更マルチメディア・データフレームがルーティングされる1または複数の次のリーフノードを返す関数に提供することを含んでよい。いくつかの実装では、宛先アドレスデータ対次のリーフノードのテーブルは、ビットマップ対次のリーフノードのテーブルである。これに代えて、次のリーフノード宛先は、実行時に、宛先アドレスデータを、本明細書に記載されるビットマップテーブルなどのリーフノードにおけるルーティングテーブルと比較することによって計算されることが可能である。
【0056】
システムは、次のリーフノード宛先に基づく宛先アドレスデータに基づいて識別される複数の宛先アドレスの各々をグループ化してよい(340)。宛先アドレスデータに基づいて識別される複数の宛先アドレスの各々をグループ化することは、次のリーフノードに対する各それぞれのリーフノードの階層的な関連性に基づいて次のリーフノード宛先の下の各宛先アドレスをクラスタすることを含む。例えば、次のリーフノード宛先に対する子ノードであるリーフノードが、次のリーフノード宛先とともにグループ化される。
【0057】
システムは、各それぞれの次のリーフノードが段階310にて受信された変更マルチメディア・データフレームの宛先アドレス内にエンコードされる、唯一の残るリーフ・ネットワークノード宛先であるかを決定してよい(350)。決定する段階350は、段階310にて変更マルチメディア・データフレームを受信したリーフ・ネットワークノードによって、1以上の変更マルチメディア・データフレームの宛先である後続のネットワークノードの数を識別することを含んでよい。後続のネットワークノードの数が1リーフ・ネットワークノードよりも大きいと決定することに応じて、リーフ・ネットワークノードは、(i)後続のネットワークノードの各々の宛先アドレスを記述するデータ、および(ii)ペイロードのコピーを含む変更マルチメディア・データフレームを生成してよい。後続のネットワークノードの各々の宛先アドレスを記述するデータは、後続のネットワークノードの宛先アドレスのビットマップを含んでよい。これに代えて、後続のネットワークノードの数が1リーフ・ネットワークノードに等しいと決定することに応じて、リーフ・ネットワークノードは、(i)1つの後続のネットワークノードの宛先アドレスを記述するデータ、および(ii)ペイロードのコピーを含むユニキャスト・データフレームを生成してよい。このシナリオでは、1つの後続のノードの宛先アドレスを記述するデータは、単一のリーフノード宛先アドレスしか含まない。
【0058】
図4は、変更マルチメディア・データフレームを生成およびルーティングするシステムのコンポーネントのブロック図である。
コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、個人用情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの、様々な形態のデジタル・コンピュータを表すように意図されている。モバイルコンピューティングデバイス450は、デスクトップ、ラップトップ、タブレット、個人用情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスなどの、様々な形態のモバイルコンピューティングデバイスを表すよう意図されている。本明細書に示されるコンポーネント、コンポーネント同士の接続および関係と、コンポーネントの機能とは、例示としてのみ意図されており、限定するようには意図されていない。
【0059】
コンピューティングデバイス400は、プロセッサ402と、メモリ404と、記憶デバイス406と、メモリ404および複数の高速拡張ポート410に接続している高速インタフェース408と、低速拡張ポート414および記憶デバイス406に接続している低速インタフェース412とを備える。プロセッサ402,メモリ404,記憶デバイス406,高速インタフェース408,高速拡張ポート410,および低速インタフェース412の各々は、様々なバスを用いて相互接続されており、共通のマザーボードに取り付けられていることもあれば、適切な場合には他の態様により取り付けられていることもある。プロセッサ402は、高速インタフェース408に結合されているディスプレイ416などの外部の入出力デバイス上においてグラフィカルユーザインタフェース(GUI)用のグラフィカル情報を表示するためのメモリ404または記憶デバイス406に記憶されている命令を含む、コンピューティングデバイス400内における実行のための命令を処理することが可能である。他の実装では、複数のプロセッサおよび/または複数のバスは、適切な場合、複数のメモリおよびある種のメモリとともに使用されてよい。さらに、複数のコンピューティングデバイスが接続されて、各デバイスが必要な動作のうちの部分を提供してよい(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステム)。
【0060】
メモリ404は、コンピューティングデバイス400内において情報を記憶する。いくつかの実装では、メモリ404は、1つ以上の揮発性メモリユニットである。いくつかの実装では、メモリ404は、1つ以上の不揮発性メモリユニットである。さらに、メモリ404は、磁気ディスクまたは光学ディスクなどの、別の形態のコンピュータ可読媒体であってもよい。記憶デバイス406は、コンピューティングデバイス400のために大容量の記憶を提供できる。いくつかの実装では、記憶デバイス406は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくは他の同様のソリッド・ステート・メモリ・デバイス、またはデバイスからなるアレイ(ストレージエリアネットワークまたは他の構成のデバイスを含む)などの、コンピュータ可読媒体であってよい。他の実装では、記憶デバイス406は、1または複数のクラウドベースの記憶デバイスを含んでよい。命令は、情報キャリアに記憶されることが可能である。命令は、1または複数の処理デバイス(例えば、プロセッサ402)による実行時に、上述した方法などの1つ以上の方法を実行する。命令は、コンピュータ可読または機械可読媒体(例えば、メモリ404、記憶デバイス406、またはプロセッサ402上のメモリ)などの1または複数の記憶デバイスによって記憶されることも可能である。
【0061】
高速制御部408は、コンピューティングデバイス400のために帯域集約の動作を管理する一方、低速制御部412は、比較的低い帯域集約の動作を管理する。機能のそうした割り当ては、例示にすぎない。いくつかの実装では、高速制御部408は、メモリ404と、ディスプレイ416(例えば、グラフィクスのプロセッサまたはアクセラレータを通じて)と、様々な拡張カード(図示せず)を受容し得る高速拡張ポート410とに結合されている。その実装では、低速制御部412は、記憶デバイス406と低速拡張ポート414とに結合されている。様々な通信ポート(例えば、USB、Bluetooth(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポート414は、キーボード、ポインティングデバイス、スキャナなどの、1つ以上の入出力デバイス、またはスイッチもしくはルータなどのネットワーキングデバイス(例えば、ネットワークアダプタを通じて)に結合されていてよい。
【0062】
コンピューティングデバイス400は、図に示すように、多くの異なる形態において実装されてよい。例えば、コンピューティングデバイス400は、スタンダードサーバ420として実装されるか、またはそうしたサーバのグループにおいて複数回にわたって実装されてよい。さらに、コンピューティングデバイス400は、ラップトップコンピュータ422などのパーソナルコンピュータにおいて実装されてよい。さらに、コンピューティングデバイス400は、ラックサーバシステム424の一部として実装されてもよい。これに代えて、コンピューティングデバイス400のコンポーネントは、モバイルコンピューティングデバイス450などのモバイルコンピューティングデバイス(図示せず)における他のコンポーネントと組み合わされてよい。そうしたデバイスの各々は、コンピューティングデバイス400およびモバイルコンピューティングデバイス450のうちの1または複数を含んでよく、システム全体が、互いに通信する複数のコンピューティングデバイスから構成されてもよい。
【0063】
モバイルコンピューティングデバイス450は、プロセッサ452と、メモリ464と、ディスプレイ454などの入出力デバイスと、通信インタフェース466と、送受信機468とをコンポーネントとして特に備える。モバイルコンピューティングデバイス450には、追加の記憶部を提供するために、マイクロドライブまたは他のデバイスなどの記憶デバイスがさらに提供されてよい。プロセッサ452,メモリ464,ディスプレイ454,通信インタフェース466,および送受信機468の各々は、様々なバスを用いて相互接続されており、コンポーネントのうちのいくつかは、共通のマザーボードに取り付けられていることもあれば、適切な場合には他の態様により取り付けられていることもある。
【0064】
プロセッサ452は、モバイルコンピューティングデバイス450内において、メモリ464に記憶されている命令を含む命令を実行できる。プロセッサ452は、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップからなるチップセットとして実装されてよい。プロセッサ452は、例えば、ユーザインタフェースの制御などのモバイルコンピューティングデバイス450の他のコンポーネントの協調と、モバイルコンピューティングデバイス450によって動作させられるアプリケーションと、モバイルコンピューティングデバイス450による無線通信とを可能にする。
【0065】
プロセッサ452は、ディスプレイ454に結合されている制御インタフェース458およびディスプレイインタフェース456を通じてユーザと通信し得る。ディスプレイ454は、例えば、TFT(薄膜トランジスタ液晶ディスプレイ)ディスプレイもしくはOLED(有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であってよい。ディスプレイインタフェース456は、グラフィカル情報および他の情報をユーザに提示するためにディスプレイ454を動作させるための適切な回路を備えてよい。制御インタフェース458は、ユーザからコマンドを受信し、プロセッサ452に渡すためにそのコマンドを変換してよい。さらに、外部インタフェース462は、他のデバイスとのモバイルコンピューティングデバイス450の近領域通信を可能にするように、プロセッサ452と通信していてもよい。外部インタフェース462は、例えば、いくつかの実装実施形態における有線通信または他の実装における無線通信を可能にする場合があり、さらに、複数のインタフェースが用いられてよい。
【0066】
メモリ464は、モバイルコンピューティングデバイス450内において、情報を記憶する。メモリ464は、1つ以上のコンピュータ可読媒体と、1つ以上の揮発性メモリユニットと、1つ以上の不揮発性メモリユニットと、のうちの1つ以上として実装されることが可能である。さらに、拡張メモリ474が提供されるとともに、例えば、SIMM(シングルインラインメモリモジュール)カードインタフェースを含み得る拡張インタフェース472を通じてモバイルコンピューティングデバイス450に接続されてよい。その拡張メモリ474によって、モバイルコンピューティングデバイス450のための余分な記憶スペースが提供される場合もあれば、また、モバイルコンピューティングデバイス450のためのアプリケーションまたは他の情報が記憶される場合もある。具体的には、拡張メモリ474は、上述した処理を実行し、または補完するための命令を含んでよく、さらに、セキュア情報も含んでいてよい。したがって、例えば、拡張メモリ474は、モバイルコンピューティングデバイス450のためのセキュリティモジュールとして提供される場合もあり、モバイルコンピューティングデバイス450のセキュアな使用を可能にする命令に関しプログラムされていてもよい。さらに、セキュアアプリケーションは、ハッキング不可能な態様により識別情報をSIMMカード上に配置することなど、追加の情報とともにSIMMカードを介して提供される場合がある。
【0067】
メモリは、例えば、下記のように、フラッシュメモリおよび/またはNVRAMメモリ(不揮発性ランダムアクセスメモリ)を含み得る。いくつかの実装では、命令は、命令が1または複数の処理デバイス(例えば、プロセッサ452)により実行されたときに上述した方法などの1つ以上の方法を実行する、情報キャリアに記憶される。命令は、1または複数のコンピュータ可読または機械可読媒体(例えば、メモリ464、拡張メモリ474、またはプロセッサ452上のメモリ)などの1または複数の記憶デバイスによって記憶されることも可能である。いくつかの実装では、命令は、例えば、送受信機468または外部インタフェース462を通じて、伝搬信号により受信されることが可能である。
【0068】
モバイルコンピューティングデバイス450は、必要な場合にはデジタル信号処理回路を含み得る通信インタフェース466を通じて無線により通信できる。通信インタフェース466は、特に、GSM(モバイル通信用グローバルシステム)(登録商標)、SMS(ショートメッセージサービス)、EMS(拡張メッセージサービス)、またはMMS(マルチメディアメッセージサービス)、CDMA(符号分割多元接続)、TDMA(時分割多元接続)、PDC(パーソナルデジタルセルラ)、WCDMA(広帯域符号分割多元接続)(登録商標)、CDMA2000、またはGPRS(汎用パケット無線システム)など、様々なモードまたはプロトコルの下、通信を可能にし得る。そうした通信は、例えば、無線周波数を用いた送受信機468を通じて行われてよい。さらに、狭域通信は、Bluetooth、WiFi(登録商標)、または他のそうした送受信機を用いることなどによって、行われてもよい。さらに、GPS(全地球測位システム)受信機モジュール470は、航行および場所に関係する追加の無線データをモバイルコンピューティングデバイス450に提供でき、その無線データは、適切な場合には、モバイルコンピューティングデバイス450上において動作するアプリケーションによって使用されてもよい。
【0069】
さらに、モバイルコンピューティングデバイス450は、ユーザから音声情報を受信し、これを使用に適したデジタル情報に変換できる音声コーデック460を用いて可聴の通信を行ってもよい。音声コーデック460は、例えば、モバイルコンピューティングデバイス450のハンドセットにおいて、スピーカを通じることなどによりユーザに対して可聴音を同様に生成してよい。そうした音は、音声通話からの音を含む場合もあれば、記録された音(例えば、ボイスメッセージ、音楽ファイルなど)を含む場合もあれば、また、モバイルコンピューティングデバイス450上において動作するアプリケーションによって生成される音を含む場合もある。
【0070】
コンピューティングデバイス450は、図に示すように、多くの異なる形態により実装されてよい。例えば、コンピューティングデバイス450は、携帯電話480として実装されてよい。コンピューティングデバイス450は、スマートフォン482、個人用情報端末、タブレット、ラップトップ、デスクトップ、または他の同様のモバイルコンピューティングデバイスの一部として実装されてもよい。
【0071】
本明細書に記載される発明の対象の実施形態、機能的な動作および処理は、デジタル電子回路に、有形的に具現化されたコンピュータソフトウェアまたはファームウェアに、本明細書に開示される構造およびそれらの構造の均等物を含むコンピュータハードウェアに、またはそれらのうちの1または複数の組合せにおいて実装されることが可能である。本明細書に記載される発明の対象の実施形態は、1または複数のコンピュータプログラム、すなわち、データ処理装置により実行するための、またはデータ処理装置の動作を制御するための、有形の不揮発性プログラムキャリアに対しエンコードされたコンピュータプログラム命令の1または複数のモジュールとして実装されることが可能である。これに代えて、またはこれに加えて、プログラム命令は、人工的に生成された伝搬信号、例えば、データ処理装置によって実行するための適切な受信装置への送信用に情報をエンコードするように生成される、機械生成される電気、光、または電磁信号に対しエンコードされることが可能である。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1または複数の組合せであることが可能である。
【0072】
「データ処理装置」という用語は、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを例として含む、データを処理するための全ての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことが可能である。装置は、ハードウェアに加えて、当該のコンピュータプログラム用の実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、動作システム、またはそれらのうちの1または複数の組合せを構築するコード含むことも可能である。
【0073】
コンピュータプログラム(プログラムとも呼ばれるかプログラムとも記載されてよく、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードであってもよい)は、コンパイルされた言語もしくは解釈された言語、または宣言型言語もしくは手続型言語を含む任意の形態のプログラム言語により記述されることが可能であり、スタンドアローンプログラムまたはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境に用いられるのに適した他のユニットとしてのものを含む、任意の形態によりデプロイされることが可能である。コンピュータプログラムは、ファイルシステムにおけるファイルに対応してよいが、する必要はない。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語文書に記憶されている1または複数のスクリプト)を保持するファイルの一部に、当該プログラム専用のファイルに、または複数の協調ファイルに記憶されることが可能である。コンピュータプログラムは、1地点に位置するか複数地点にわたって分配され通信ネットワークにより相互接続されている1つのコンピュータ上または複数のコンピュータ上において実行されるようにデプロイされることが可能である。
【0074】
本明細書に記載の処理および論理フローは、入力データを操作して出力を生成することによって機能を実行するために1または複数のコンピュータプログラムを実行する1または複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローは、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によっても実行することができ、また装置もFPGAまたはASICとして実装されることができる。
【0075】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊用途のマイクロプロセッサ、もしくはその両方、または任意の他の種類の中央処理ユニットを含む。例として、コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊用途のマイクロプロセッサ、もしくはその両方、または任意の他の種類の中央処理ユニットに基づくことが可能である。一般に、中央処理ユニットは、読み出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を行うか実行するための中央処理ユニットと、命令およびデータを記憶するための1または複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1または複数の大容量記憶装置、例えば、磁気、光磁気ディスク、または光ディスクからデータを受信するか、またはそれらにデータを転送するように、またはその両方のために動作可能に結合されるか、またはそれらを含んでいる。しかしながら、コンピュータはそうした装置を有する必要はない。さらに、コンピュータは別のデバイス、例えば、数例を挙げると、携帯電話、個人用情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信器、またはポータブル記憶デバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に具現化されることが可能である。
【0076】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例えば、EPROM、EEPROM、およびフラッシュメモリ装置などの半導体メモリ装置、例えば、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD−ROMおよびDVD−ROMディスクを例として含む、あらゆる形態の不揮発性メモリ、媒体およびメモリ装置を含む。プロセッサおよびメモリは、特殊目的の論理回路によって追加されるか、またはその中に組み込まれることが可能である。
【0077】
ユーザとの対話を提供するために、本明細書に記載された発明の対象の実施形態は、情報をユーザに表示するためのディスプレイデバイス(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがそれによって入力をコンピュータに提供できるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)と、を有するコンピュータ上において実装されることが可能である。他の種類のデバイスもまた、ユーザとの対話を提供するために使用されることが可能であり、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触知フィードバック)であることが可能であり、ユーザからの入力は、音響入力、音声入力、または触知入力を含む任意の形態により受信されることが可能である。さらに、コンピュータは、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信される要求に応答して、そのウェブブラウザにウェブページを送信することによって、ユーザによって用いられるデバイスに文書を送信およびそのデバイスから文書を受信することによってユーザと対話することが可能である。
【0078】
本明細書に記載されたシステムおよび技術は、バックエンドコンポーネント(例えば、データサーバとして)を含むコンピューティングシステム、ミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピューティングシステム、フロントエンドコンポーネント(例えば、ユーザが本明細書に記載された発明の対象の実装と対話可能なグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステム、または1または複数のそうしたバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組み合わせにより実装されることが可能である。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体(例えば、通信ネットワーク)によって相互接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(“LAN”)および例えばインターネットといったワイドエリアネットワーク(“WAN”)を含む。
【0079】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠く離れており、典型的には、通信ネットワークを介してインタラクトする。クライアントとサーバとの関係は、個々のコンピュータ上で動作し、かつ互いにクライアント−サーバ関係を有するコンピュータプ
本明細書は多くの特定の実装の詳細が含まれる一方、これらは請求される範囲に対する限定として解釈されるものではないが、しかし特定の実施形態に特有であり得る特徴の記載として解釈される。別個の実施形態の文脈において本明細書に記載されるある特徴は、単一の実施形態に組み合わせて実装されることも可能である。反対に、単一の実施形態の文脈に記載される様々な特徴は、複数の実施形態において別個に、または任意の適切な副組合せにおいて実装されることも可能である。さらに、特徴は、ある組合せにおいて作用するものとして上述され、またこのように最初に請求さえもされるが、請求される組合せからの1または複数がいくつかの場合には組合せから取り除かれ、また請求される組合せは副組合せまたは副組合せの変化を対象としてよい。
【0080】
同様に、動作は特定の順序にて図面に示されるが、これは、そうした動作が特定の順序または逐次的な連続した順序において実行される必要があると理解されるものではなく、または所望の結果を達成するように全ての示される動作が実行されると理解されるものではない。ある状況では、マルチタスクおよび並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムのコンポーネントの分離は、全ての実施形態においてそうした分離を必要とすると理解されるものではなく、記載されるプログラムコンポーネントおよびシステムは、一般に単一のソフトウェア製品に組み込まれているか、複数のソフトウェア製品にパッケージされていることが可能であると理解される。
【0081】
発明の対象の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内である。例えば、特許請求の範囲に記載される作用は、異なる順序で行われ、依然として所望の結果を得ることが可能である。一例として、添付の図面に記載されている処理は、所望の結果を達成するために示された特定の順序または逐次的な順序を必要としない。ある実装では、マルチタスクおよび並列処理が有利である場合がある。記載された処理から他のステップを設けてもよく、またステップを省略してもよい。したがって、他の実装は以下の特許請求の範囲内にある。
図1
図2
図3
図4