(58)【調査した分野】(Int.Cl.,DB名)
前記パスリストはプロファイルバイナリフォーマットを含み、前記プロファイルバイナリフォーマットは、前記スキーマパスのプロファイルスキーマを識別するよう構成されるプロファイル識別子フィールドを含む、請求項1〜請求項3のいずれか1項に記載の電子装置。
前記ビュー要求メッセージは、ニル項目および空の長さを有する前記ビュー要求メッセージによって、前記ビュー応答メッセージとして、あるデータセット全体を受信するよう要求するように構成される、請求項1〜請求項4のいずれか1項に記載の電子装置。
前記ビュー応答メッセージはデータ項目リストを含み、前記データ項目リストは、前記ビュー要求メッセージの前記パスリストにおいて示される前記スキーマパスに対応する要求されるデータの順序づけられたリストを含む、請求項1〜請求項5のいずれか1項に記載の電子装置。
前記処理システムは、前記ビュー要求が成功したことを前記ビュー応答メッセージの前記ビュー要求ステータスが示すときに第2の電子装置のデータのビューを識別するよう前記データ項目リストを読み出すように構成される、請求項6に記載の電子装置。
前記ビュー要求は、メッセージを、ビュー要求メッセージと関連付けられるフォーマットに従うことを識別するためのメッセージタイプを含む、請求項8に記載のコンピュータ読取可能媒体。
前記ビュー要求メッセージは、ニル項目および空の長さを有する前記ビュー要求メッセージによって、前記ビュー応答メッセージとして、あるデータセット全体を受信するよう要求するように構成される、請求項8〜請求項11のいずれか1項に記載のコンピュータ読取可能媒体。
前記ビュー応答メッセージはデータ項目リストを含み、前記データ項目リストは、前記ビュー要求メッセージの前記パスリストにおいて示される前記スキーマパスに対応する要求されるデータの順序づけられたリストを含む、請求項8〜請求項12のいずれか1項に記載のコンピュータ読取可能媒体。
前記命令は、前記ビュー要求が成功したことを前記ビュー応答メッセージの前記ビュー要求ステータスが示すときに第2の電子装置のデータのビューを識別するよう前記データ項目リストを読み出すように構成される、請求項13に記載のコンピュータ読取可能媒体。
前記パスリストはプロファイルバイナリフォーマットを含み、前記プロファイルバイナリフォーマットは、前記スキーマパスのプロファイルスキーマを識別するよう構成されるプロファイル識別子フィールドを含む、請求項15〜請求項17のいずれか1項に記載の方法。
前記ビュー要求メッセージがニル項目および空の長さを有するときに、前記ビュー応答メッセージとして、あるデータセット全体を受信するよう要求することを含む、請求項15〜請求項18のいずれか1項に記載の方法。
前記ビュー応答メッセージはデータ項目リストを含み、前記データ項目リストは、前記ビュー要求メッセージの前記パスリストにおいて示される前記スキーマパスに対応する要求されるデータの順序づけられたリストを含む、請求項15〜請求項19のいずれか1項に記載の方法。
【発明を実施するための形態】
【0013】
詳細な記載
本開示の1つ以上の具体的な実施の形態が以下に記載される。これらの記載される実施の形態はここに開示される技術の例示に過ぎない。加えて、これらの実施の形態の簡潔な記載を与える努力において、実際の実現例のすべての特徴は本明細書には記載されないかもしれない。任意のそのような実際の実現例の開発においては、任意のエンジニアリングまたは設計プロジェクトにあるように、1つの実現例から他の実現例に変動し得る、システム関連およびビジネス関連の制約とのコンプライアンスのような、開発者の特定のゴールを達成するように、多数の実現例に特定の判断がなされなければならないことが理解されるべきである。さらに、そのような開発努力は複雑で時間のかかるものであるかもしれないが、本開示の恩恵を有する当業者にとっては、日常的な設計、組立および製造作業であろう。
【0014】
本開示のさまざまな実施の形態の要素を紹介するにあたり、冠詞「a」「an」および「the」はそのような要素が1つ以上あることを意味するよう意図される。「備える」
、「含む」、および「有する」という表現は、包含的であり、挙げられた要素以外のさらなる要素が存在し得ることを意味するよう意図される。加えて、本開示の「一実施の形態」または「ある実施の形態」に対する参照は、記載される特徴を同じく組込むさらなる実施の形態の存在を排除するよう解釈されるよう意図されるものではないことが理解されるべきである。
【0015】
本開示の実施の形態は一般的に、住宅環境において互いと通信する装置および/またはサービスによって用いられ得る効率的ファブリックネットワークに関する。一般的に、住宅で生活する消費者は、彼らの住宅にあるさまざまな装置のすべてが効率よく動作されるように、それらの装置の動作を調整することは有用であることを見出し得る。たとえば、サーモスタット装置を用いて、住宅の温度を検出し、その検出された温度に基づいて他の装置(たとえば照明)の動作を調整してもよい。この例においては、サーモスタット装置は住宅の外の温度が日中時間に対応することを示し得る温度を検出してもよい。サーモスタット装置は、次いで、住宅に利用可能な日光があり得ること、およびしたがって照明を切るべきであることを、照明装置に伝えてもよい。
【0016】
消費者は、これらの装置を効率よく動作させることに加えて、概して、最小量のセットアップまたは初期化を伴うユーザに親切な装置を用いることを好む。つまり、消費者は、概して、年齢または技術的な熟練に関係なくほとんどどのような個人によっても実行され得る少ない数の初期化ステップを実行した後に十分に動作可能な装置を購入することを好み得る。
【0017】
前述のことを考慮して、住宅環境内において互いとの間でデータを効果的に通信することを可能にするために、装置は、装置間で通信を管理するために1つ以上の論理ネットワークを含むファブリックネットワークを用いてもよい。すなわち、効率的なファブリックネットワークは、住宅内における多数の装置が1つ以上の論理ネットワークを用いて互いと通信することを可能にし得る。通信ネットワークは、各接続された装置が固有のローカルアドレス(LA)を有するように、インターネットプロトコルバージョン6(IPv6)通信をサポートしてもよい。さらに、各装置が住宅と統合することを可能にするためには、各装置が低量の電力を用いてネットワーク内において通信することが有用であり得る。つまり、装置が低い電力を用いて通信することを可能にすることによって、それらの装置は、継続的な電源に接続される(たとえばバッテリにより電力を供給される)ことなく、住宅の任意の場所に配置され得る。
【0018】
I.ファブリック導入
導入として、
図1は、住宅環境内における他の同様の装置と通信し得る一般的な装置10の例を図示する。一実施の形態では、装置10は、1つ以上のセンサ12、ユーザインターフェイスコンポーネント14、電源16(たとえば電力接続および/またはバッテリを含む)、ネットワークインターフェイス18、プロセッサ20などを含み得る。特定のセンサ12、ユーザインターフェイスコンポーネント14および電源構成は、各装置10で同じまたは類似してもよい。しかしながら、いくつかの実施の形態では、各装置10は、装置タイプまたはモデルに基いて、特定のセンサ12、ユーザインターフェイスコンポーネント14および電源構成などを含んでもよいことが注目されるべきである。
【0019】
センサ12は、ある実施の形態では、加速度、温度、湿度、水、供給電力、近接度、外部の動き、装置の動き、音声信号、超音波信号、光信号、炎、煙、一酸化炭素、全地球測位システム(GPS)信号、無線周波数(RF)、他の電磁信号または電磁場等のようなさまざまな特性を検出してもよい。したがって、センサ12は、温度センサ、湿度センサ、ハザード関連センサまたは他の環境的センサ、加速度計、マイクロホン、光学センサを、カメラ(たとえば、電荷結合素子もしくはビデオカメラ)、能動的もしくは受動的輻射
センサ、GPSレシーバまたは無線周波数識別検出器まで、およびそれらを含んで、含んでもよい。
図1は単一のセンサを伴う実施の形態を示すが、多くの実施の形態は複数のセンサを含んでもよい。ある例では、装置10は1つ以上の一次センサおよび1つ以上の二次センサを含んでもよい。ここで、一次センサは、装置のコア動作(たとえばサーモスタットにおいて温度を検知することまたは煙検出器において煙を検知することなど)に対して中心のデータを検知してもよく、一方、二次センサは、他のタイプのデータ(たとえば動き、光または音)を検知してもよく、それをエネルギ効率目的またはスマート動作目的のために用いることができる。
【0020】
装置10における1つ以上のユーザインターフェイスコンポーネント14はユーザから入力を受取ってもよく、および/またはユーザに対して情報を提示してもよい。ユーザインターフェイスコンポーネント14は、さらにユーザから情報を受信し得る1つ以上のユーザ入力コンポーネントを含んでもよい。受取られた入力を用いて設定を判断してもよい。ある実施の形態では、ユーザ入力コンポーネントは、ユーザの動きに応答する機械的コンポーネントまたは仮想コンポーネントを含んでもよい。たとえば、ユーザは、摺動するコンポーネントを(たとえば垂直トラックまたは水平トラックに沿って)機械的に移動させるか、もしくは回転可能なリングを(たとえば円形のトラックに沿って)回転させることができ、タッチパッドに沿ったユーザの動きを検出し、または、動き/身振りを、無接触身振検出センサ(たとえば赤外線センサまたはカメラ)を用いて検出してもよい。そのような動きは設定の調整に対応してもよく、それは、ユーザインターフェイスコンポーネント104の絶対的な位置またはユーザインターフェイスコンポーネント104の変位に基づいて判断することができる(たとえば回転可能リングコンポーネントの10度の回転ごとに1°Fだけ設定点温度を調整することなど)。物理的な可動ユーザ入力コンポーネントおよび仮想可動ユーザ入力コンポーネントは、ユーザが、明らかな連続体の一部に沿って設定を設定することを可能にすることができる。したがって、ユーザは、(たとえばアップボタンおよびダウンボタンが用いられる場合にそうであるように)2つの別個のオプションの間で選択を行なうことに制限されなくてもよく、可能な設定値の範囲に沿って設定を迅速かつ直感的に規定することができる。たとえば、ユーザ入力コンポーネントのある移動のある大きさはある設定調整のある大きさと関連づけられてもよく、ユーザは設定を大きな移動で劇的に変えたり、設定を小さな移動で微調整してもよい。
【0021】
ユーザインターフェイスコンポーネント14は、さらに、1つ以上のボタン(たとえばアップボタンおよびダウンボタン)、キーパッド、数値パッド、スイッチ、マイクロホン、および/またはカメラ(たとえば、身振りを検出するために)を含んでもよい。一実施の形態では、ユーザ入力コンポーネント14はクリックおよび回転環状リングコンポーネントを含んでもよく、ユーザは、(たとえば設定を調整するよう)リングを回転することによって、および/または(たとえば調整された設定を選択するかもしくはオプションを選択するよう)リングを内方向にクリックすることによって、そのコンポーネントと対話することを可能にしてもよい。別の実施の形態では、ユーザ入力コンポーネント14は、カメラを含んでもよく、(たとえば装置の出力または警報状態が変更されることになる旨を示すべく)身振り(ジェスチャ)を検出してもよい。いくつかの例では、装置10は1つの一次入力コンポーネントを有してもよく、それを用いてさまざまなタイプの設定を設定してもよい。ユーザインターフェイスコンポーネント14は、さらに、情報を、ユーザに対して、たとえば視覚ディスプレイ(たとえば薄膜トランジスタディスプレイまたは有機発光ダイオードディスプレイ)および/または音声スピーカを介して提示するよう構成されてもよい。
【0022】
電源コンポーネント16は、電力接続および/またはローカルバッテリを含んでもよい。たとえば、電力接続は、装置10を、線間電圧源のような電源に接続してもよい。いくつかの例では、AC電源を用いて、(たとえば再充電可能な)ローカルバッテリを繰返し
充電し得、バッテリは、後で、AC電源が利用可能でないときに装置10に電力を供給するよう用いられてもよい。ある実施の形態では、電源コンポーネント16は、住宅内においてACプラグを介して与えられるよりも少なくてもよい間欠的または低減された電力接続を含んでもよい。ある実施の形態では、バッテリおよび/または間欠的もしくは低減された電力を伴う装置は、電力消費を低減するようオンライン/起動状態とオフライン/スリープ状態との間で交互する「スリーピー状態装置」として動作してもよい。
【0023】
ネットワークインターフェイス18は、ファブリックネットワーク内における1つ以上の論理ネットワークを用いて、装置10が装置間で通信することを可能にする1つ以上のコンポーネントを含んでもよい。一実施の形態では、ネットワークインターフェイス18は、効率的ネットワーク層をその開放型システム間相互接続(OSI)モデルの一部として用いて通信してもよい。ある実施の形態では、ネットワークインターフェイス18の1つのコンポーネントは1つの論理ネットワーク(たとえばWiFi)と通信してもよく、ネットワークインターフェイスの他のコンポーネントは別の論理ネットワーク(たとえば802.15.4)と通信してもよい。換言すれば、ネットワークインターフェイス18は、装置10が複数のIPv6ネットワークを介して無線で通信することを可能にする。したがって、ネットワークインターフェイス18は、ワイヤレスカード、イーサネット(登録商標)ポート、および/または他の好適な送信機接続を含んでもよい。
【0024】
プロセッサ20は、さまざまな異なる装置機能のうちの1つ以上をサポートしてもよい。したがって、プロセッサ20は、ここに記載される機能の1つ以上を実行および/または実行させられるよう構成ならびにプログラミングされる1つ以上のプロセッサを含んでもよい。一実施の形態では、プロセッサ20は、ローカルメモリ(たとえばフラッシュメモリ、ハードドライブ、ランダムアクセスメモリ)に記憶されるコンピュータコードを実行する汎用プロセッサ、専用プロセッサもしくは特定用途向け集積回路、他のタイプのハードウェア/ファームウェア/ソフトウェア処理プラットフォーム、および/またはそれらの何らかの組合わせを含んでもよい。さらに、プロセッサ20は、非同期Javascript(登録商標)およびXML(AJAX)または同様のプロトコルを用いて、クラウドサーバから与えられる命令を実行するJava(登録商標)仮想マシン(JVM)を動作させることなどによって、中央サーバまたはクラウドベースのシステムによって遠隔で実行または司られるアルゴリズムのローカル化されたバージョンまたは対応物として実現されてもよい。例として、プロセッサ20は、ある場所(たとえば家屋または部屋)がある特定の人物によって占有(在宅)されるかもしくは(たとえば1つ以上のしきい値に関して)ある特定数の人々によって占有されるかどうかまで、ならびにそれを含んで、その場所がいつ占有されるかを検出してもよい。一実施の形態では、この検出は、たとえば、マイクロフォン信号を解析すること、(たとえば装置の前における)ユーザの移動を検出すること、扉もしくはガレージ扉の開閉を検出すること、ワイヤレス信号を検出すること、受信された信号のIPアドレスを検出すること、またはある時間窓(タイムウィンドウ)内で1つ以上の装置の動作を検出することなどによって生じ得る。さらに、プロセッサ20は、特定の居住者または物体を識別するよう、画像認識技術を含んでもよい。
【0025】
いくつかの例では、プロセッサ20は、望ましい設定を予測、および/またはそれらの設定を実現してもよい。たとえば、存在検出に基づいて、プロセッサ20は、たとえば、住宅もしくはある特定の部屋に誰もいないときに電力を節約するよう、またはユーザの好み(たとえば一般的な住宅での好みもしくはユーザに特定の好み)に従って、装置設定を調整してもよい。別の例として、特定の人物、動物または物体(たとえば子供、ペットまたは紛失した物体)の検出に基づいて、プロセッサ20は、その人物、動物または物体がどこにあるかの音声インジケータもしくは視覚インジケータを起動してもよく、または認識されない人物がある条件下(たとえば夜もしくは照明が消えているときに)検出される場合に警報もしくはセキュリティ特徴を起動させてもよい。
【0026】
ある例では、装置は、装置間で1つ以上の共通のプロファイルを用いて、第1の装置によって検出されるイベントが第2の装置の動作に影響を与えるように、互いと対話してもよい。たとえば、第1の装置は、(たとえばガレージにおいて動きを検出すること、ガレージにおいて照明における変化を検出すること、またはガレージ扉が開かれたことを検出することによって)ユーザがガレージに入ってきたことを検出し得る。第1の装置はこの情報を第2の装置にファブリックネットワークを介して送信し、第2の装置は、たとえば、家屋温度設定、照明設定、音楽設定、および/またはセキュリティ警報設定を調整し得る。別の例として、第1の装置は(たとえば動きまたは突然の光パターンの変化を検出することによって)ユーザが玄関に接近するのを検出し得る。第1の装置は、(たとえばドアベルの音のような)一般的な音声もしくは視覚信号を出力させ、または(たとえば訪問者の存在を、ユーザが占有している部屋内において知らせるよう)場所に特化した音声もしくは視覚信号を出力させてもよい。
【0027】
前述のことを考慮して、
図2は、
図1の装置10がファブリックネットワークを介して他の装置と通信してもよい住宅環境30のブロック図を示す。示される住宅環境30は、家屋、オフィスビルディング、ガレージ、移動住宅などの構造物32を含んでもよい。アパート、コンドミニアムおよびオフィス空間などのような全体構造32を含まない住宅環境にも装置を統合することができることが十分に理解される。さらに、住宅環境30は、実際の構造物32の外の装置を制御し、および/またはそれに接続されてもよい。実際、住宅環境30におけるいくつかの装置は、物理的に構造物32内にある必要が全くない。たとえば、プールヒータ34または潅漑システム36を制御する装置は、構造物32の外部に位置してもよい。
【0028】
示される構造物32は、互いから壁40を介して少なくとも部分的に分離される複数の部屋38を含む。壁40は内壁または外壁を含み得る。各部屋38は、さらに、床42および天井44を含み得る。装置は、壁40、床42または天井44上に取付けられるか、それ(ら)と統合されるか、および/またはそれ(ら)によって支持され得る。
【0029】
住宅環境30は、さまざまな有用な住宅目的のうちの任意のものを与えるよう、互いと、および/またはクラウドベースのサーバシステムと途切れ目なく統合し得るインテリジェントな、マルチ検知の、ネットワーク接続された装置を含む、複数の装置を含んでもよい。住宅環境30に示される装置の1つ、2つ以上、または各々は、1つ以上のセンサ12、ユーザインターフェイス14、電源16、ネットワークインターフェイス18、プロセッサ20などを含んでもよい。
【0030】
例示の装置10は、大気の環境特性(たとえば温度および/または湿度)を検出し、暖房、換気および空調(HVAC)システム48を制御してもよいネットワーク接続されたサーモスタット46を含んでもよい。別の例示の装置10は、住宅環境30における危険な物質および/または危険な状態(たとえば煙、炎または一酸化炭素)の存在を検出できるハザード検出ユニット50を含んでもよい。加えて、エントリウェイインターフェイス装置52は、「スマートドアベル」とも称され得、ある場所への人の接近もしくはある場所からの人の退去を検出し、可聴機能を制御し、音声手段もしくは視覚手段を介して人の接近もしくは退去を知らせ、またはセキュリティシステムにおける設定を制御して(たとえばセキュリティシステムを起動または停止させる)ことが可能である。
【0031】
ある実施の形態では、装置10は、照明スイッチ54を含んでもよく、それは、周囲の照明状態を検出し、部屋占有状態を検出し、ならびに1つ以上の照明の出力および/または薄暗い状態を制御してもよい。いくつかの例では、照明スイッチ54は、天井ファンなどのファンの出力状態または速度を制御してもよい。
【0032】
加えて、壁プラグインターフェイス56は、部屋または構内の占有を検出し、(たとえば家に誰もいない場合には電力がプラグに供給されないように)1つ以上の壁プラグに対する電力の供給を制御してもよい。住宅環境30内における装置10は、さらに、冷蔵庫、ストーブおよび/またはオーブン、テレビ、洗濯機、乾燥機、照明(構造物32の内部/外部)、ステレオ、インターコムシステム、ガレージ扉開閉器、床ファン、天井ファン、全家屋ファン、壁空調装置、プールヒータ34、潅漑システム36、セキュリティシステム、などのような、機器58を含んでもよい。
図2の説明は、特定の装置に関連付けられる特定のセンサおよび機能を識別し得るが、(本明細書を通して記載されるもののような)さまざまなセンサおよび機能のうちの任意のものを装置10内に組込むことができることが理解される。
【0033】
処理および検知能力を含むことに加えて、上記の例示的装置の各々は、任意の他の装置、および世界中の任意の場所でネットワーク接続される任意のクラウドサーバまたは任意の他の装置とのデータ通信および情報共有が可能であってもよい。1つの実施の形態では、装置10は以下に論じられるファブリックネットワークを介して通信を送信し受信してもよい。1つの実施の形態では、ファブリックは装置10が互いと1つ以上の論理ネットワークを介して通信できるようにしてもよい。したがって、ある装置はワイヤレスリピータとして働いてもよく、および/または住宅環境において互いに直接接続(つまり1つのホップ)されなくてもよい装置、サービス、および/または論理ネットワーク間においてブリッジとして機能してもよい。
【0034】
1つの実施の形態では、ワイヤレスルータ60は、さらに、住宅環境30において1つ以上の論理ネットワーク(たとえばWiFi)を介して装置10と通信してもよい。次いで、各装置10がインターネット62を介して遠隔サービスまたはクラウドコンピューティングシステム64と通信するように、ワイヤレスルータ60はインターネット62または他のネットワークと通信してもよい。クラウドコンピューティングシステム64は、特定の装置10と関連付けられる製造業者、サポートエンティティまたはサービスプロバイダと関連付けられてもよい。したがって、一実施の形態では、ユーザは、電話またはインターネット接続されたコンピュータなどのような何らかの他の通信手段を用いずに、装置それ自体を用いてカスタマーサポートと連絡をとってもよい。さらに、ソフトウェア更新を、クラウドコンピューティングシステム64または住宅環境30における装置からファブリックにおける他の装置に(たとえば、利用可能なとき、購入されたとき、要求されたとき、またはルーチン間隔で)自動的に送信することができる。
【0035】
ネットワーク接続性により、1つ以上の装置10は、さらに、たとえユーザが装置の近くにいなくても、ユーザがその装置と対話することを可能してもよい。たとえば、ユーザは、コンピュータ(たとえばデスクトップコンピュータ、ラップトップコンピュータもしくはタブレット)または他の携帯電子装置(たとえばスマートフォン)66を用いて装置と通信してもよい。ウェブページまたはアプリケーションはユーザから通信を受け、受信された通信に基いて装置10を制御してもよい。さらに、ウェブページまたはアプリケーションは、装置の動作についての情報をユーザに呈示してもよい。たとえば、ユーザは、装置のための現在の設定点温度を見て、インターネット62に接続され得るコンピュータを用いて、それを調整することができる。この例では、サーモスタット46は1つ以上の基底の論理ネットワークを介してファブリックネットワークを介して現在の設定点温度ビュー要求を受けてもよい。
【0036】
ある実施の形態では、住宅環境30は、さらに、壁プラグインターフェイス56によって、粗くではあるが(ON/OFF)、制御され得る、古い従来の洗濯機/乾燥機、冷蔵庫などのような、さまざまな、通信を行なわない、旧来の機器68を含んでもよい。住宅
環境30は、さらに、ハザード検出ユニット50もしくは照明スイッチ54によって与えられるIR(赤外線)信号によって制御され得る、IR制御される壁空調機または他のIR制御される装置のような、さまざまな、部分的に通信を行なう旧来の機器70を含んでもよい。
【0037】
上で言及されたように、上記の例示的な装置10の各々は、ファブリックネットワークの一部を形成してもよい。一般的に、ファブリックネットワークは、
図4に示されるように開放型システム間相互接続(OSI)モデル90の一部であってもよい。OSIモデル90は、抽象化層に関する通信システムの機能を示す。つまり、OSIモデルは、ネットワーキングフレームワーク、または装置間の通信がどのように実現され得るかを規定してもよい。一実施の形態では、OSIモデルは6つの層、つまり物理層92、データリンク層94、ネットワーク層96、トランスポート層98、プラットフォーム層100、およびアプリケーション層102を含んでもよい。一般に、OSIモデル90における各層は、その上の層に従ってもよく、その下の層に従われてもよい。
【0038】
このことを考慮して、物理層92は、互いと通信し得る装置のためのハードウェア仕様を与えてもよい。したがって、物理層92は、どのように装置が互いと接続し、どのように通信リソースがそれらの装置間で共有され得るかを管理することをどのように支援するかなどを確立してもよい。
【0039】
データリンク層94は、どのようにしてデータが装置間において転送され得るかを規定してもよい。一般に、データリンク層94は、送信されているデータパケットが伝送プロトコルの一部としてビットにエンコードおよびデコードされ得る態様を与えてもよい。
【0040】
ネットワーク層96は、宛先ノードに転送されているデータがどのようにルーティングされるかを規定してもよい。ネットワーク層96は、さらに、転送されているデータの完全性を維持し得るセキュリティプロトコルを提供してもよい。上に論じられた効率的ネットワーク層は、ネットワーク層96に対応する。ある実施の形態では、ネットワーク層96は、プラットフォーム層100から完全に独立していてもよく、任意の好適なIPv6ネットワークタイプ(たとえばWiFi、イーサネット、ホームプラグ、802.15.4など)を含んでもよい。
【0041】
トランスポート層98は、ソースノードから宛先ノードへのデータのトランスペアレントな転送を規定してもよい。トランスポート層98は、さらに、トランスペアレントなデータの転送がどのようにして信頼性のあるままであるかを制御してもよい。したがって、トランスポート層98を用いて、宛先ノードに転送されるよう意図されるデータパケットが実際に宛先ノードに到達したことを検証してもよい。トランスポート層98において用いられてもよい例示的なプロトコルは、伝送制御プロトコル(TCP)およびユーザ・データグラム・プロトコル(UDP)を含んでもよい。
【0042】
プラットフォーム層100はファブリックネットワークを含み、トランスポート層98内に指定されるプロトコルに従って装置間で接続を確立し、ネットワーク層96で用いられるネットワークタイプに寛容であってもよい。プラットフォーム層100は、さらに、データパケットを、アプリケーション層102が用い得る形式に変換してもよい。アプリケーション層102は、ユーザと直接インターフェイスし得るソフトウェアアプリケーションをサポートしてもよい。したがって、アプリケーション層102は、ソフトウェアアプリケーションによって規定されるプロトコルを実現してもよい。たとえば、ソフトウェアアプリケーションは、ファイル転送、電子メールなどのサービスを与えてもよい。
【0043】
II.ファブリック装置相互接続
上で論じられたように、ファブリックは、IPv6プロトコルのような1つ以上の好適な通信プロトコルを用いて実現されてもよい。実際、ファブリックは、ファブリックを実現するよう用いられる基底の技術(たとえばネットワークタイプまたは通信プロトコル)に対して部分的または完全に寛容であってもよい。1つ以上の通信プロトコル内においては、ファブリックは、無線または有線接続を用いて電子装置を通信可能に接続するよう用いられる1つ以上のネットワークタイプを用いて実現されてもよい。たとえば、ファブリックのある実施の形態は、イーサネット、WiFi、802.15.4, ZigBee(登録商標), ISA100.11a, WirelessHART, MiWi
TM,電力線網、および/または他の好適なネットワークタイプ
を含んでもよい。ファブリック内においては、装置(たとえばノード)は、情報のパケットをファブリックにおける他の装置(たとえばノード)と、直接、またはIPルータとして振舞う、インテリジェントサーモスタットのような、仲介ノードを介して交換することができる。これらのノードは、製造業者装置(たとえばサーモスタットおよび煙検出器)および/または消費者装置(たとえば電話、タブレット、コンピュータなど)を含んでもよい。加えて、いくつかの装置は、「常にオン」であり、電気的接続を用いて継続的に電力を供給されてもよい。他の装置は、サーモスタットまたはドアベル電力接続などのような、低減された/間欠的な電力接続を用いて、部分的に低減された電力使用形態(たとえば中程度のデューティサイクル)を有してもよい。最後に、いくつかの装置は、短いデューティサイクルを有し、バッテリ電力のみで動作してもよい。換言すれば、ある実施の形態では、ファブリックは、接続タイプおよび/または所望の電力使用形態に従って1つ以上のサブネットワークに接続されてもよいヘテロジニアスな装置を含んでもよい。
図A〜
図Cは、ファブリックにおいて1つ以上のサブネットワークを介して電子装置を接続するよう用いられてもよい3つの実施の形態を示す。
【0044】
A.単一ネットワークトポロジ
図4は、単一のネットワークトポロジを有するファブリック1000の実施の形態を示す。示されるように、ファブリック1000は単一の論理ネットワーク1002を含む。ネットワーク1002は、イーサネット、WiFi、802.15.4、電力線網、および/またはIPv6プロトコルにおける他の好適なネットワークタイプを含み得る。実際、ネットワーク1002がWiFiまたはイーサネットネットワークを含むいくつかの実施の形態では、ネットワーク1002は、リンク層において橋渡しされる複数のWiFiおよび/またはイーサネットセグメントにわたってもよい。
【0045】
ネットワーク1002は、1つ以上のノード1004、1006、1008、1010、1012、1014および1016を含み、それらは総称的に1004〜1016と称される。示されるネットワーク1002は7つのノードを含むが、ネットワーク1002のある実施の形態は、ネットワーク1002を用いて相互接続される1つ以上のノードを含んでもよい。さらに、ネットワーク1002がWiFiネットワークである場合には、ノード1004〜1016の各々は、ノード1016(たとえばWiFiルータ)を用いて相互接続されてもよく、および/またはWiFi Direct(つまりWiFi P2P)を用いて他のノードと
対にされてもよい。
【0046】
B.星形ネットワークトポロジ
図5は、星形ネットワークトポロジを有するファブリック1018としての、ファブリック1000の代替的実施の形態を示す。ファブリック1018は、2つの周辺ネットワーク1022と1024とを併せるハブネットワーク1020を含む。ハブネットワーク1020は、WiFi/イーサネットネットワークまたは電力線網などのような、住宅ネットワークを含んでもよい。周辺ネットワーク1022および1024は、ハブネットワーク1020とは異なるタイプの異なるさらなるネットワーク接続タイプであってもよい。たとえば、ある実施の形態では、ハブネットワーク1020はWiFi/イーサネットネットワークであってもよく、周辺ネットワーク1022は802.15.4ネットワークを含んでもよく
、周辺ネットワーク1024は電力線網、ZigBeeRネットワーク, ISA100.11aネットワー
ク, WirelessHARTネットワーク,またはMiWi
TMネットワークを含んでもよい。さらに、フ
ァブリック1018の示される実施の形態は3つのネットワークを含むが、ファブリック1018のある実施の形態は、2つ、3つ、4つ、5つまたはそれより多いネットワークなどのような任意の数のネットワークを含んでもよい。実際、ファブリック1018のある実施の形態は、同じタイプの複数の周辺ネットワークを含む。
【0047】
示されるファブリック1018は14個のノードを含み、各々は個々に参照番号1024〜1052によりそれぞれ示されるが、ファブリック1018は任意の数のノードを含んでもよいことが理解されるべきである。各ネットワーク1020、1022、または1024内における通信は、直接装置間において、および/またはWiFi/イーサネットネットワークにおけるノード1042のようなアクセスポイントを介して生じてもよい。周辺ネットワーク1022と1024との間の通信は、ネットワーク間ルーティングノードを用いて、ハブネットワーク1020を通過してもよい。たとえば、示される実施の形態では、ノード1034および1036は、第1のネットワーク接続タイプ(たとえば802.15.4)を用いて周辺ネットワーク1022に接続され、第2のネットワーク接続タイプ(たとえばWiFi)を用いてハブネットワーク1020に接続され、一方、ノード1044は、第2のネットワーク接続タイプを用いてハブネットワーク1020に接続され、第3のネットワーク接続タイプ(たとえば電力線)を用いて周辺ネットワーク1024に接続される。たとえば、ノード1026からノード1052に送信されるメッセージは、ノード1052への通過途中において、ノード1028、1030、1032、1036、1042、1044、1048および1050を通過してもよい。
【0048】
C.重なったネットワークトポロジ
図6は、重なったネットワークトポロジを有するファブリック1054としての、ファブリック1000の代替的実施の形態を示す。ファブリック1054はネットワーク1056および1058を含む。示されるように、ノード1062、1064、1066、1068、1070および1072の各々はネットワークの各々に接続されてもよい。他の実施の形態では、ノード1072は、エンドポイントではなく、イーサネット/WiFiネットワークに対するアクセスポイントを含んでもよく、どちらがイーサネット/WiFiネットワークでなくても、ネットワーク1056またはネットワーク1058のいずれか上になくてもよい。したがって、ノード1062からノード1068への通信は、ネットワーク1056、ネットワーク1058またはそれらの何らかの組合せを通過してもよい。示される実施の形態では、各ノードは、任意の所望のネットワークを用いて、任意のネットワークを介して任意の他のノードと通信することができる。したがって、
図5の星形ネットワークトポロジとは異なり、重なったネットワークトポロジは、ネットワーク間ルーティングを用いることなく、任意のネットワークを介して直接ノード間において通信してもよい。
【0049】
D.サービスに対するファブリックネットワーク接続
住宅内における装置間の通信に加えて、ファブリック(たとえばファブリック1000)は、ファブリックにおける他の装置の物理的近くに、またはそのような装置から物理的に遠くに位置してもよいサービスを含んでもよい。ファブリックは、これらのサービスに、1つ以上のサービスエンドポイントを介して接続する。
図7は、ファブリック1076、1078および1080と通信するサービス1074の実施の形態を示す。サービス1074は、ファブリック1076、1078、および/または1080内において装置によって用いられてもよいさまざまなサービスを含んでもよい。たとえば、ある実施の形態では、サービス1074は、装置に対して時刻を供給する時刻サービス、さまざまな気象データ(たとえば外部温度、日没、風情報、天気予報など)を提供する気象サービス、各装置をpingするエコーサービス、データ管理サービス、装置管理サービス、および/
または他の好適なサービスであってもよい。示されるように、サービス1074は、関係のあるデータを記憶/にアクセスし、ファブリック1076のようなファブリックにおいてサービスエンドポイント1084を介して1つ以上のエンドポイント1086に情報を渡すサーバ1082(たとえばウェブサーバ)を含んでもよい。示される実施の形態は単一のサーバ1082を伴う3つのファブリックを含むに過ぎないが、サービス1074は、任意の数のファブリックに接続してもよく、サーバ1082に加えてサーバを含んでもよく、および/またはさらなるサービスに対する接続を含んでもよいことが理解されるべきである。
【0050】
ある実施の形態では、サービス1074は、さらに、電話、ケーブルおよび/またはコンピュータのような消費者装置1088に接続してもよい。消費者装置1088は、ファブリック1076のようなファブリック、インターネット接続、および/または何らかの他の好適な接続方法を介してサービス1074に接続するよう用いられてもよい。消費者装置1088は、ファブリックにおける1つ以上のエンドポイント(たとえば電子装置)から、直接そのファブリックを介してか、またはサービス1074を介してデータにアクセスするよう用いられてもよい。換言すれば、サービス1074を用いて、消費者装置1088は、ファブリックにおける装置に対して、そのファブリックから遠隔でアクセスするか、またはそのような装置を管理するよう用いられてもよい。
【0051】
E.ファブリックにおける装置間における通信
上で論じたように、各電子装置またはノードは、ファブリックトポロジおよびネットワーク接続タイプによって、ファブリック内の任意の他のノードと、直接的または間接的に通信してもよい。加えて、いくつかの装置(たとえば遠隔装置)は、サービスを介して通信して、ファブリックにおける他の装置と通信してもよい。
図8は、2つの装置1092と1094との間における通信1090の実施の形態を示す。通信1090は、上に記載されるように、1つ以上のネットワークに、直接的に、またはさらなる装置および/もしくはサービスを介して間接的にわたってもよい。加えて、通信1090は、1つ以上のトランスポートプロトコルを用いて、IPv6のような適切な通信プロトコルを介して生じてもよい。たとえば、いくつかの実施の形態では、通信1090は、伝送制御プロトコル(TCP)および/またはユーザ・データグラム・プロトコル(UDP)を用いることを含んでもよい。ある実施の形態では、装置1092は、無接続プロトコル(たとえばUDP)を用いて、第1の信号1096を装置1094に送信してもよい。ある実施の形態では、装置1092は接続指向型プロトコル(たとえばTCP)を用いて装置1094と通信してもよい。示される通信1090は双方向通信として示されるが、いくつかの実施の形態では、通信1090は一方向同報通信であってもよい。
【0052】
i.固有のローカルアドレス
上で論じられたように、ファブリック内において送信されノードによって受信されるデータは、その通信に関する所望の目標によって、そのノードを通して他のノードに方向変更されるかまたは渡されてもよい。いくつかの実施の形態では、データの送信はすべての装置に対して同報通信されるよう意図されてもよい。そのような実施の形態では、データは、データが先へと他のノードに渡されるべきであるかを判断するようさらなる処理なしに再送信されてもよい。しかしながら、いくつかのデータは具体的なエンドポイントに向けられてもよい。アドレス指定されたメッセージが所望のエンドポイントに送信されることを可能にするために、ノードは識別情報を割当てられてもよい。
【0053】
各ノードは、1つが各ネットワークインターフェイスに割当てられるリンクローカルアドレス(LLA)の組を割当てられてもよい。これらのLLAを用いて、同じネットワーク上の他の装置と通信してもよい。加えて、LLAは、IPv6近隣探索プロトコルのようなさまざまな通信手順に対して用いられてもよい。LLAに加えて、各ノードは固有の
ローカルアドレス(ULA)を割当てられてもよい。
【0054】
図9は、ファブリックにおける各ノードをアドレス指定するよう用いられてもよい固有のローカルアドレス(ULA)1098の実施の形態を示す。ある実施の形態では、ULA1098は、グローバルID1100とサブネットID1102とインターフェイスID1104とに分割される128ビットを含むIPv6アドレスフォーマット(書式)としてフォーマット(書式設定)されてもよい。グローバルID1100は40ビットを含み、サブネットID1102は16ビットを含む。グローバルID1100およびサブネットID1102は、ともになって、ファブリックに対するファブリックID1103を形成する。
【0055】
ファブリックID1103は、ファブリックを識別するよう用いられる一意の64ビットの識別子である。ファブリックID1103は、擬似乱数アルゴリズムを用いて、関連づけられるファブリックの形成で生成されてもよい。たとえば、擬似乱数アルゴリズムは、1)現在の時刻を64ビットのNTPフォーマットで得てもよく、2)装置に対するインターフェイスID1104を得てもよく、3)時刻をインターフェイスID1104と連結してキーを形成してもよく、4)SHA−1ダイジェストをそのキーの上で計算して、結果として160ビットをもたらしてもよく、5)最下位の40ビットをグローバルID1100として用いてもよく、および6)ULAを連結し、最下位ビットを1にセットして、ファブリックID1103を形成してもよい。ある実施の形態では、一旦ファブリックID1103がファブリックとともに形成されると、ファブリックID1103はそのファブリックが解消されるまで残る。
【0056】
グローバルID1100は、ノードが属するファブリックを識別する。サブネットID1102はファブリック内の論理ネットワークを識別する。サブネットIDF3は、ファブリックに対する各新たな論理ネットワークの追加で、1で単調に開始することを割当てられてもよい。たとえば、WiFiネットワークは0x01の16進値で識別されてもよく、後で接続される802.15.4ネットワークは、0x02の16進値で識別されてもよく、ファブリックに対する各新たなネットワークの接続で、増分的に継続し続けてもよい。
【0057】
最後に、ULA1098は、64ビットを含むインターフェイスID1104を含んでもよい。インターフェイスID1104は、IEEE EUI−64規格に従って、グローバルに一意の64ビット識別子を用いて割当てられてもよい。たとえば、IEEE802ネットワークインターフェイスを伴う装置は、装置の「一次インターフェイス」のためにバーンド・インのMACアドレスを用いて、インターフェイスID1104を導出してもよい。いくつかの実施の形態では、どのインターフェイスが一次インターフェイスであるかの指定は任意に判断されてもよい。他の実施の形態では、あるインターフェイスタイプ(たとえばWiFi)が、存在する場合には、一次インターフェイスとしてみなされてもよい。装置の一次インターフェイスに対するMACアドレスが48ビットであり、64ビットでない場合には、48ビットのMACアドレスは、カプセル化(たとえば組織的に一意の識別子カプセル化)を介して、EUI−64値に変換されてもよい。消費者装置(たとえば電話またはコンピュータ)においては、インターフェイスID1104は消費者装置のローカルオペレーティングシステムによって割当てられてもよい。
【0058】
ii.論理ネットワーク間において送信をルーティングする
星形ネットワークトポロジに関して上で論じられたように、ネットワーク間ルーティングは、論理ネットワーク間を渡る2つの装置間における通信において生じてもよい。いくつかの実施の形態では、ネットワーク間ルーティングはサブネットID1102に基づく。各ネットワーク間接続ノード(たとえば
図5のノード1034)は、ハブネットワーク1020上のルーティングノードのリスト(たとえば
図5のノードB14)、およびそれ
らのそれぞれの取付けられた周辺ネットワーク(たとえば
図5の周辺ネットワーク1024)を維持してもよい。ルーティングノードそれ自体以外のノードにアドレス指定されたパケットが到着すると、宛先アドレス(たとえば
図5のノード1052に対するアドレス)がネットワークプレフィックスのリストと比較され、所望のネットワーク(たとえば周辺ネットワーク1024)に取付けられるルーティングノード(たとえばノード1044)が選択される。パケットは、次いで、その選択されたルーティングノードに転送される。複数のノード(たとえば1034および1036)が同じ周辺ネットワークに取付けられる場合には、ルーティングノードは交互する態様で選択される。
【0059】
加えて、ネットワーク間ルーティングノードは、近隣探索プロトコル(NDP)ルータ情報提供メッセージをハブネットワーク上において定期的に送信して、消費者装置に対してハブネットワークの存在についての注意を喚起し、消費者装置がサブネットプレフィックスを得ることができるようにしてもよい。ルータ情報提供は、ファブリックにおけるルーティング情報において支援するよう1つ以上のルート情報オプションを含んでもよい。たとえば、これらのルート情報オプションは、消費者装置に対して、周辺ネットワークの存在、およびどのようにしてパケットを周辺装置にルーティングするかを知らせてもよい。
【0060】
ルート情報オプションに加えて、またはそれらに代わって、ルーティングノードは、プロキシとして振舞って、
図10に示されるプロセス1105のように、消費者装置と周辺ネットワークにおける装置との間において通信を与えてもよい。示されるように、プロセス1105は、各周辺ネットワーク装置に対するハブネットワーク上の仮想アドレスの割当が、その周辺ネットワーク上における装置についてサブネットID1102をインターフェイスID1104と組合せることによって行なうことを含む(ブロック1106)。仮想アドレスを用いてプロキシ化するために、ルーティングノードは、ファブリックにおける、そのインターフェイスの1つを介して直接到達可能なすべての周辺ノードのリストを含む(ブロック1108)。ルーティングノードは、ハブネットワーク上において、周辺ノードのリンクアドレスを、その仮想アドレスを用いて要求する近隣請求メッセージに対するリスニングを行なう(ブロック1110)。そのようなメッセージを受信すると、ルーティングノードは、ある時間期間のあと、その仮想アドレスをそれのハブインターフェイスに割当てることを試みる(ブロック1112)。割当の一部として、ルーティングノードは、2つ以上のルーティングノードによる仮想アドレスのプロキシ化を阻止するように、二重アドレス検出を実行する。割当のあと、ルーティングノードは、近隣請求メッセージに応答し、パケットを受信する(ブロック1114)。パケットを受信すると、ルーティングノードは、宛先アドレスを周辺ノードの実アドレスに書換え(ブロック1116)、メッセージを適切なインターフェイスに転送する(ブロック1118)。
【0061】
iii.消費者装置のファブリックへの接続
ファブリックに加わるために、消費者装置は、その消費者装置が加わりたいファブリックに既にあるノードのアドレスを探索してもよい。加えて、消費者装置が、ある延長された時間期間の間、ファブリックから切断されている場合、ファブリックトポロジ/レイアウトが変更している場合には、ネットワーク上においてノードを再探索する必要があってもよい。探索/再探索において支援するために、ハブネットワーク上のファブリック装置は、mDNSを介して、ファブリックの存在を情報提供しアドレスを消費者装置に与えるドメイン名システム−サービス探索(DNS−SD)を公開してもよい。
【0062】
III.ファブリックにおいて送信されるデータ
ファブリックの形成およびノードに対するアドレス形成のあと、データがファブリックを通して送信されてもよい。ファブリックを通して渡されるデータは、すべてのメッセージに共通の、および/またはそのファブリックにおいて特定のタイプの会話に共通のフォ
ーマットで構成されてもよい。いくつかの実施の形態では、メッセージフォーマットは、以下に論じられるTLV直列化フォーマットを用いて、JavaScriptオブジェクト表記法(JSON)に対する1対1マッピングを可能にしてもよい。加えて、以下のデータフレームは特定のサイズを含むとして記載されるが、それらのデータフレームにおけるデータフィールドの長さは他の好適なビット長に変動されてもよい旨が注記されるべきである。
【0063】
以下に論じられる以下のデータフレーム、プロファイルおよび/またはフォーマットの各々は、メッセージの送信前および/または送信後にメモリ(たとえば装置10のメモリ)に記憶されてもよいことが理解されるべきである。換言すれば、データフレーム、プロファイルおよびフォーマットは一般的にはデータの送信として論じられるが、それらは、さらに、データフレーム、プロファイル、および/またはフォーマットの送信前、送信中および/または送信後に(たとえばバッファに)物理的に記憶されてもよい。さらに、以下のデータフレーム、プロファイル、スキーマ、および/またはフォーマットは、電子装置がデータフレーム、プロファイル、スキーマおよび/またはフォーマットにアクセスすることを可能にする非一時的なコンピュータ読取可能媒体に記憶されてもよい。たとえば、データフレーム、プロファイル、スキーマおよび/またはフォーマットをフォーマットするための命令は、装置10に対するメモリ、他の装置のメモリ、ポータブルメモリ装置(たとえばコンパクトディスク、フラッシュドライブなど)、またはデータフレーム、プロファイル、スキーマおよび/もしくはフォーマットを記憶するための他の好適な物理的装置などのような、任意の好適なコンピュータ読取可能媒体に記憶されてもよい。
【0064】
A.セキュリティ
転送されるよう意図されるデータとともに、ファブリックは、データを、暗号化、メッセージ完全性チェック、デジタル署名などのような、さらなるセキュリティ手段とともに転送してもよい。ある実施の形態では、装置に対してサポートされるセキュリティのレベルは、装置の物理的セキュリティおよび/または装置の能力に従って変動してもよい。ある実施の形態では、ファブリックにおいてノード間において送信されるメッセージは、カウンタモード(AES−CTR)において128ビットのキーで動作する高度暗号化標準(AES)ブロック暗号を用いて暗号化されてもよい。以下に論じられるように、各メッセージは32ビットのメッセージidを含む。このメッセージidは、送信側ノードidと組合されて、AES−CTRアルゴリズムに対するノンスを形成してもよい。32ビットカウンタは、40億個のメッセージが暗号化され各ノードによって送信されたのちに、新たなキーが交渉されることを可能にする。
【0065】
いくつかの実施の形態では、ファブリックは、各暗号化されたメッセージに含まれてもよい、HMAC−SHA−1のような、メッセージ認証コードを用いて、メッセージ完全性を保証してもよい。いくつかの実施の形態では、メッセージ認証コードは、暗号化キーと1対1で対にされる160ビットのメッセージ完全性キーを用いて生成されてもよい。加えて、各ノードは、入来メッセージのメッセージidを、ノード単位で維持される最近受信されたidのリストと照合して、メッセージの再生を阻止してもよい。
【0066】
B.タグ‐長さ‐値(TLV)フォーマット化
電力消費を低減するためには、ファブリックにより送信されるデータの少なくとも一部をそのようにコンパクトに送信する一方で、データコンテナが、データの直列化内において理解されるデータの次の位置にスキップすることによって認識または理解されないデータをスキップすることに対応するデータを柔軟性を持って表わすことができることが望ましい。ある実施の形態では、タグ‐長さ‐値(TLV)フォーマット化を用いて、データをコンパクトに、かつ柔軟性を持ってエンコード/デコードしてもよい。送信されるデータの少なくとも一部をTLVで記憶することによって、データは、以下において表7を参照して論じられるように、低エンコード/デコードおよびメモリオーバヘッドで、コンパ
クトに、かつ柔軟性を持って記憶/送信されてもよい。ある実施の形態では、TLVは、あるデータに対しては、柔軟性のある、拡張可能なデータとして用いられてもよいが、拡張可能でないデータの他の部分は、理解される標準プロトコルデータ単位(PDU)で記憶および送信されてもよい。
【0067】
TLVフォーマットでフォーマットされるデータは、プリミティブタイプおよびコンテナタイプなどのような、さまざまなタイプのTLV要素としてエンコードされてもよい。プリミティブタイプは、整数または文字列のような、あるフォーマットにおけるデータ値を含む。たとえば、TLVフォーマットは、1、2、3、4または8バイトの符号有り/符号無し整数、UTF−8文字列、バイト文字列、単精度/倍精度浮動数(たとえばIEEE754−1985フォーマット)、ブーリアン、ヌル、および他の好適なデータフォーマットタイプをエンコードしてもよい。コンテナタイプは要素の集まりを含み、それらは、次いで、コンテナタイプまたはプリミティブタイプとして下位分類される。コンテナタイプは、ディクショナリ、アレイ、パス、またはメンバーとして既知の、TLV要素をグループ化するための他の好適なタイプのような、さまざまなカテゴリに分類されてもよい。ディクショナリは、そのディクショナリ内において明確な定義および一意のタグを各々が有するメンバーの集まりである。アレイは、暗示される定義を伴うかまたは明確な定義を伴わない、順序づけられたメンバーの集まりである。パスは、TLV要素のツリーをどのように横断するかを記載した、順序づけられたメンバーの集まりである。
【0068】
図11に示されるように、TLVパケット1120の実施の形態は3つのデータフィールド:タグフィールド1122と長さフィールド1124と値フィールド1126とを含む。示されるフィールド1122、1124および1126はサイズがおおよそ等価として示されているが、各フィールドのサイズは可変であってもよく、互いに対してサイズが変動してもよい。他の実施の形態では、TLVパケット1120は、さらに、タグフィールド1122の前に制御バイトを含んでもよい。
【0069】
制御バイトを有する実施の形態では、制御バイトは要素タイプフィールドとタグ制御フィールドとに下位分割されてもよい。いくつかの実施の形態では、要素タイプフィールドは制御バイトの下位5ビットを含み、タグ制御フィールドは上位3ビットを占める。要素タイプフィールドは、TLV要素のタイプと、どのように長さフィールド1124および値フィールド1126がエンコードされるかを示す。ある実施の形態では、要素タイプフィールドは、さらに、TLVについてブーリアン値および/またはヌル値をエンコードする。たとえば、要素タイプフィールドの列挙の実施例が以下において表1に与えられる。
【0071】
タグ制御フィールドは、(ゼロ長タグを含む)TLV要素に割当てられるタグフィールド1122におけるタグのある形式を示す。タグ制御フィールド値の例が以下に表2において与えられる。
【0073】
換言すれば、制御バイトを有する実施の形態では、制御バイトはタグの長さを示してもよい。
【0074】
ある実施の形態では、タグフィールド1122は、8ビット、16ビット、32ビット、または64ビットなどのような、0〜8バイトを含んでもよい。いくつかの実施の形態では、タグフィールドのタグはプロファイル特定タグまたは文脈特定タグとして分類されてもよい。プロファイル特定タグは、以下に論じられるように、ベンダId、プロファイルId、および/またはタグ番号を用いて、要素をグローバルに識別する。文脈特定タグは、含むディクショナリ要素の文脈内でTLV要素を識別し、1バイトのタグ番号を含んでもよい。文脈特定タグはそれらのコンテナの文脈において定義されるので、1つの文脈特定タグは、異なるコンテナ内に含まれるときには、異なる解釈を有し得る。いくつかの実施の形態では、文脈は、さらに、ネスト化されたコンテナから導出されてもよい。
【0075】
制御バイトを有する実施の形態では、タグ長はタグ制御フィールドにおいてエンコードされ、タグフィールド1122は可能な3つのフィールド:ベンダIdフィールド、プロファイルIdフィールド、およびタグ番号フィールドを含む。十分に適格とされる形式では、エンコードされたタグフィールド1122はすべての3つのフィールドを含み、タグ番号フィールドは、タグ制御フィールドによって決められる16ビットまたは32ビットを含む。暗黙的形式では、タグはタグ番号のみを含み、ベンダIdおよびプロファイル番号はTLV要素のプロトコル文脈から推測される。コアプロファイル形式は、以下に論じられるように、プロファイル特定タグを含む。文脈特定タグは、タグ番号を搬送する1つのバイトとしてエンコードされる。匿名要素はゼロ長タグフィールド1122を有する。
【0076】
制御バイトを伴わないいくつかの実施の形態では、2つのビットがタグフィールド1122の長さを含んでもよく、2つのビットが長さフィールド1124の長さを含んでもよく、4つのビットが値フィールド1126に記憶される情報のタイプを示してもよい。タグフィールドに対する上位8ビットに対する考えられ得るエンコーディングの一例が以下に表3において示される。
【0078】
表3に示されるように、タグフィールド1122の上位8ビットを用いて、タグフィールド1122、長さフィールド1124および値フィールド1126についての情報をエンコードしてもよく、タグフィールド1122を用いてタグフィールド1122および長さフィールド1124に対して長さを判断してもよい。タグフィールド1122における残りのビットは、ユーザ配分および/またはユーザ割当てされるタグ値に対して利用可能にされてもよい。
【0079】
長さフィールド1124は、表3に示されるようにタグフィールド1122によって、
または表2に示されるように要素フィールドによって示されるように、8ビット、16ビット、32ビットまたは64ビットを含んでもよい。さらに、長さフィールド1124は、値フィールド1126においてエンコードされるものの長さを表わす、符号無し整数を含んでもよい。ある実施の形態では、長さは、TLV要素を送信する装置によって選択されてもよい。値フィールド1126は、デコードされるべきペイロードデータを含むが、値フィールド1126の解釈はタグ長フィールドおよび/または制御バイトに依存してもよい。たとえば、8ビットタグを含む制御バイトを伴わないTLVパケットが、以下において説明のために表4に示される。
【0081】
表4に示されるように、1行目は、タグフィールド1122および長さフィールド1124が各々8ビットの長さを有することを示す。加えて、タグフィールド1122は、タグタイプが1行目に対するものであり、コンテナであることを示す(たとえばTLVパケット)。第2行から第6行に対するタグフィールド1124は、TLVパケットにおける各エントリが、各々8ビットからなるタグフィールド1122と長さフィールド1124とを有することを示す。加えて、タグフィールド1124は、TLVパケットにおける各エントリが、32ビットの浮動小数点を含む値フィールド1126を有することを示す。値フィールド1126における各エントリは、対応するタグフィールド1122および長さフィールド1124情報を用いてデコードされてもよい浮動数に対応する。この例に示されるように、値フィールド1126における各エントリは華氏における温度に対応する。理解できるように、上記のようにデータをTLVパケットに格納することによって、データは、ファブリックにおいて異なる装置によって用いられ得るように、さまざまな長さおよび情報に対して柔軟性のあるままでコンパクトに転送され得る。さらに、ある実施の形態では、マルチバイト整数フィールドは、リトルエンディアン順序またはビッグエンディアン順序で送信されてもよい。
【0082】
送信側/受信側装置フォーマット(たとえばJSON)によって用いられてもよい順序プロトコル(たとえばリトルエンディアン)を用いてTLVパケットを送信することによって、ノード間で転送されるデータは、ノードの少なくとも1つによって用いられる順序プロトコル(たとえばリトルエンディアン)で送信されてもよい。たとえば、1つ以上のノードがARMまたはix86プロセッサを含む場合には、ノード間の伝送を、リトルエンディアンバイト順序づけを用いて伝送することにより、バイト再順序づけの使用を低減してもよい。バイト再順序づけを含むことを低減することによって、TLVフォーマットは、伝送の両端でバイト再順序づけを用いる伝送よりも少ない電力を用いて装置が通信することを可能にする。さらに、TLVフォーマット化は、JSON+拡張可能マークアップ言語(XML)のような、他のデータ格納技術間における1対1翻訳を与えるよう指定されてもよい。一例として、TLVフォーマットを用いて以下のXMLプロパティリスト
を表現してもよい。
【0084】
一例として、上記のプロパティリストは、以下の表5に従って(制御バイトなしで)上記のTLVフォーマットのタグにおいて表現されてもよい。
【0086】
同様に、表6は、例示のXMLプロパティリストに対するリテラルタグ、長さ、および値表現の一例を示す。
【0088】
TLVフォーマットは、さらにXMLとも列挙されてもよいプロパティの参照を可能にするが、より小さい格納サイズとでも同様である。たとえば、表7は、XMLプロパティリスト、対応するバイナリプロパティリスト、およびTLVフォーマットのデータサイズの比較を示す。
【0090】
データを転送するのに用いられるデータの量を低減することによって、TLVフォーマットは、ファブリック1000が、限られた電力のために短いデューティサイクルを有する装置(たとえばバッテリ供給される装置)に対してデータを転送することおよび/またはそのような装置からデータを転送することを可能にする。換言すれば、TLVフォーマットは、送信されるべきデータのコンパクト性を増大させながら送信の柔軟性を可能にする。
【0091】
C.一般的なメッセージプロトコル
さまざまなサイズを有する特定のエントリを送信することに加えて、データは、ファブリック内において、TLVフォーマット化を組込んでもよい一般的なメッセージプロトコルを用いて送信されてもよい。一般的なメッセージプロトコル(GMP)1128の実施の形態が
図12に示される。ある実施の形態では、一般的なメッセージプロトコル(GMP)1128は、ファブリック内においてデータを送信するよう用いられてもよい。GMP1128は、データを無接続プロトコル(たとえばUDP)および/または接続指向型プロトコル(たとえばTCP)を介してデータを送信するよう用いられてもよい。したがって、GMP1128は、1つのプロトコルにおいて用いられる情報に柔軟に対応する一方で、他のプロトコルが用いられるときにはそのような情報を無視してもよい。さらに、GMP1226は、ある特定の送信においては用いられないフィールドの省略を可能にしてもよい。1つ以上のGMP1226転送から省略されてもよいデータは、一般的には、データ単位の周辺の曖昧な境界を用いて示される。いくつかの実施の形態では、複数バイト整数フィールドをリトルエンディアン順序またはビッグエンディアン順序で送信してもよい。
【0092】
i.パケット長
いくつかの実施の形態では、GMP1128はパケット長フィールド1130を含んでもよい。いくつかの実施の形態では、パケット長フィールド1130は2バイトを含む。パケット長フィールド1130におけるある値は、パケット長フィールド1130それ自体を除く、メッセージの全体の長さをバイトで示す符号無し整数に対応する。パケット長フィールド1130は、GMP1128がTCP接続を介して送信されるときに存在してもよいが、GMP1128がUDP接続を介して送信されるときには、メッセージ長は、パケット長フィールド1130を除く基底のUDPパケットのペイロード長と等しくてもよい。
【0093】
ii.メッセージヘッダ
GMP1128は、さらに、GMP1128がTCPまたはUDP接続を用いて送信されるかどうかに関わらず、メッセージヘッダ1132を含んでもよい。いくつかの実施の形態では、メッセージヘッダ1132は、
図13に示されるフォーマットで配される2バイトのデータを含む。
図13に示されるように、メッセージヘッダ1132はバージョンフィールド1156を含む。バージョンフィールド1156は、メッセージをエンコードするよう用いられるGMP1128のバージョンに対応する。したがって、GMP1128が更新されると、GMP1128の新たなバージョンが形成されるが、ファブリックにおける各装置は、装置にとって既知のGMP1128の任意のバージョンでデータパケットを受信することができてもよい。バージョンフィールド1156に加えて、メッセージヘッダ1132はSフラグフィールド1158とDフラグ1160とを含んでもよい。Sフラグ1158は、(以下に論じられる)ソースノードIdフィールドが送信されるパケットに含まれるかどうかを示す単一のビットである。同様に、Dフラグ1160は、(以下に論じられる)宛先ノードIdフィールドが送信されるパケットに含まれるかどうかを示す単一のビットである。
【0094】
メッセージヘッダ1132は、さらに、暗号化タイプフィールド1162を含む。暗号化タイプフィールド1162は、存在する場合にはどのタイプの暗号化/完全性チェックがメッセージに適用されるかを指定する4つのビットを含む。たとえば、0x0はどのよう
な暗号化またはメッセージ完全性チェックも含まれないことを示してもよく、十進の0x1
はHMAC−SHA−1メッセージ完全性チェックを伴うAES−128−CTR暗号化が含まれることを示してもよい。
【0095】
最後に、メッセージヘッダ1132は、さらに、署名タイプフィールド1164を含む。署名タイプフィールド1164は、もしある場合には、どのタイプのデジタル署名がメッセージに適用されるかを指定する4つのビットを含む。たとえば、0x0はどのようなデ
ジタル署名もメッセージには含まれないことを示してもよく、0x1は、Prime256v1楕円曲
線パラメータを伴う楕円曲線デジタル署名アルゴリズム(ECDSA)がメッセージに含まれることを示してもよい。
【0096】
iii.メッセージId
図12に戻って、GMP1128は、さらに、メッセージIdフィールド1134を含み、それは、送信されるメッセージがTCPまたはUDPを用いて送信されるかどうかに関わらず、メッセージに含まれてもよい。メッセージIdフィールド1134は、メッセージを送信側ノードの視点から一意に識別する符号無し整数値に対応する4つのバイトを含む。いくつかの実施の形態では、ノードは、それらが送信する各メッセージに対して、2
32個のメッセージに到達したあとは0に戻る、増大するメッセージId1134の値を割当てもよい。
【0097】
iv.ソースノードId
ある実施の形態では、GMP1128は、さらに、8つのバイトを含むソースノードIdフィールド1136を含んでもよい。上で論じられたように、ソースノードIdフィールド1136は、メッセージヘッダ1132における単一ビットのSフラグ1158が1にセットされるときにメッセージに存在してもよい。いくつかの実施の形態では、ソースノードIdフィールド1136は、ULA1098のインターフェイスID1104または全ULA1098を含んでもよい。いくつかの実施の形態では、ソースノードIdフィールド1136のバイトは、インデックス値昇順(たとえばEUI[0] 次いでEUI[1] 次いでEUI[2] 次いでEUI[3],など)で送信されてもよい。
【0098】
v.宛先ノードId
GMP1128は、8つのバイトを含む宛先ノードIdフィールド1138を含んでもよい。宛先ノードIdフィールド1138は、ソースノードIdフィールド1136と同様であるが、宛先ノードIdフィールド1138はメッセージに対する宛先ノードに対応する。宛先ノードIdフィールド1138は、メッセージヘッダ1132における単一ビットのDフラグ1160が1にセットされるときにメッセージに存在してもよい。さらに、ソースノードIdフィールド1136と同様に、いくつかの実施の形態では、宛先ノードIdフィールド1138のバイトはインデックス値昇順(たとえばEUI[0] 次いでEUI[1] 次いでEUI[2] 次いでEUI[3],など)で送信されてもよい。
【0099】
vi.キーId
ある実施の形態では、GMP1128はキーIdフィールド1140を含んでもよい。ある実施の形態では、キーIdフィールド1140は2つのバイトを含む。キーIdフィールド1140はメッセージを暗号化するのに用いられる暗号化/メッセージ完全性キーを識別する符号無し整数値を含む。キーIdフィールド1140の存在は、メッセージヘッダ1132の暗号化タイプフィールド1162の値によって判断されてもよい。たとえば、いくつかの実施の形態では、メッセージヘッダ1132の暗号化タイプフィールド1162に対する値が0x00であるときには、キーIdフィールド1140はメッセージから省略されてもよい。
【0100】
キーIdフィールド1140の実施の形態が
図14に提示される。示される実施の形態では、キーIdフィールド1140はキータイプフィールド1166とキー番号フィールド1168とを含む。いくつかの実施の形態では、キータイプフィールド1166は4つのビットを含む。キータイプフィールド1166は、メッセージを暗号化するのに用いられる暗号化/メッセージ完全性のタイプを識別する符号無し整数値に対応する。たとえば、いくつかの実施の形態では、キータイプフィールド1166が0x0である場合には、フ
ァブリックキーはファブリックにおけるノードのすべてまたはほとんどによって共有される。しかしながら、キータイプフィールド1166が0x1である場合には、ファブリック
キーはファブリックにおいてノードの対によって共有される。
【0101】
キーIdフィールド1140は、さらに、キー番号フィールド1168を含み、それは、共有されるキーであるかまたはファブリックキーの、利用可能なキーの組からメッセージを暗号化するのに用いられる特定のキーを識別する符号無し整数値に対応する12個のビットを含む。
【0102】
vii.ペイロード長
いくつかの実施の形態では、GMP1128はペイロード長フィールド1142を含んでもよい。ペイロード長フィールド1142は、存在するときには、2つのバイトを含んでもよい。ペイロード長フィールド1142は、アプリケーションペイロードフィールドのサイズをバイトで示す符号無し整数値に対応する。ペイロード長フィールド1142は、以下においてパディングフィールドとの関連において記載される、メッセージパディングを用いるアルゴリズムを用いてメッセージが暗号化されるときに存在してもよい。
【0103】
viii.初期化ベクトル
いくつかの実施の形態では、GMP1128は、さらに、初期化ベクトル(IV)フィールド1144を含んでもよい。IVフィールド1144は、存在するときには、可変数のバイトのデータを含む。IVフィールド1144は、メッセージを暗号化するのに用いられる暗号のIV値を含む。IVフィールド1144は、IVを用いるアルゴリズムでメッセージが暗号化されるときに用いられてもよい。IVフィールド1144の長さは、メッセージを暗号化するのに用いられる暗号化のタイプによって導出されてもよい。
【0104】
ix.アプリケーションペイロード
GMP1128はアプリケーションペイロードフィールド1146を含む。アプリケーションペイロードフィールド1146は可変数のバイトを含む。アプリケーションペイロードフィールド1146はメッセージにおいて搬送されるアプリケーションデータを含む。アプリケーションペイロードフィールド1146の長さは、存在する場合にはペイロード長フィールド1142から判断されてもよい。ペイロード長フィールド1142が存在しない場合には、アプリケーションペイロードフィールド1146の長さは、すべての他のフィールドの長さをメッセージの全長から減算することによって、および/またはアプリケーションペイロード1146内に含まれるデータ値(たとえばTLV)から判断されてもよい。
【0105】
アプリケーションペイロードフィールド1146の実施の形態が
図15に示される。アプリケーションペイロードフィールド1146はAPバージョンフィールド1170を含む。いくつかの実施の形態では、APバージョンフィールド1170は、どのバージョンのファブリックソフトウェアが送信側装置によってサポートされるかを示す8つのビットを含む。アプリケーションペイロードフィールド1146は、さらに、メッセージタイプフィールド1172を含む。メッセージタイプフィールド1172は、プロファイル内において送信されているメッセージのタイプを示すメッセージオペレーションコードに対応する8つのビットを含んでもよい。たとえば、あるソフトウェア更新プロファイルにおいては、0x00は、送信されているメッセージがイメージ告知であることを示してもよい。アプリケーションペイロードフィールド1146は、さらに、トランザクションに対して送信側ノードに対して一意である交換識別子に対応する16個のビットを含む交換Idフィールド1174を含む。
【0106】
加えて、アプリケーションペイロードフィールド1146はプロファイルIdフィールド1176を含む。プロファイルId1176は、どのようなタイプの通信がメッセージにおいて生ずるかを示すよう用いられる「ディスカッションのテーマ」を示す。プロファイルId1176は、装置が通信することができてもよい1つ以上のプロファイルに対応してもよい。たとえば、プロファイルId1176は、メッセージが、コアプロファイル、ソフトウェア更新プロファイル、ステータス更新プロファイル、データ管理プロファイル、環境および快適さプロファイル、セキュリティプロファイル、安全性プロファイル、および/または他の好適なプロファイルタイプに関係する旨を示してもよい。ファブリック上における各装置は、装置に関連性がありかつ装置が「ディスカッションに参加」できるプロファイルのリストを含んでもよい。たとえば、ファブリックにおける多くの装置は、コアプロファイル、ソフトウェア更新プロファイル、ステータス更新プロファイル、およびデータ管理プロファイルを含んでもよいが、いくつかの装置のみが環境および快適さプロファイルを含むであろう。APバージョンフィールド1170、メッセージタイプフィールド1172、交換Idフィールド、プロファイルIdフィールド1176、およびプロファイル特定ヘッダフィールド1176は、存在する場合には、組合せにおいて、「アプリケーションヘッダ」と称されてもよい。
【0107】
いくつかの実施の形態では、プロファイルIdフィールド1176を介するプロファイルIdの指示は、プロファイルに対して送信されるデータに対するスキーマを与えるよう十分な情報を提供してもよい。しかしながら、いくつかの実施の形態では、さらなる情報を用いて、アプリケーションペイロードフィールド1146をデコードするためのさらなるガイダンスを判断してもよい。そのような実施の形態では、アプリケーションペイロードフィールド1146はプロファイル特定ヘッダフィールド1178を含んでもよい。いくつかのプロファイルはプロファイル特定ヘッダフィールド1178を用いなくてもよく、それによって、アプリケーションペイロードフィールド1146がプロファイル特定ヘ
ッダフィールド1178を省略することを可能にしてもよい。プロファイルIdフィールド1176および/またはプロファイル特定ヘッダフィールド1178からのスキーマの判断で、データをアプリケーションペイロードサブフィールド1180においてエンコード/デコードしてもよい。アプリケーションペイロードサブフィールド1180は、装置間、および/または受信側装置/サービスによって記憶、再同報通信、および/または作用されるサービス間において送信されるべきコアアプリケーションデータを含む。
【0108】
x.メッセージ完全性チェック
図12に戻って、いくつかの実施の形態では、GMP1128は、さらに、メッセージ完全性チェック(MIC)フィールド1148を含んでもよい。MICフィールド1148は、存在するときには、メッセージのためにMICを含む可変長のバイトのデータを含む。フィールドの長さおよびバイト順序は使用における完全性チェックアルゴリズムに依存する。たとえば、メッセージがHMAC−SHA−1を用いてメッセージ完全性についてチェックされる場合には、MICフィールド1148は20個のバイトをビッグエンディアン順序で含む。さらに、MICフィールド1148の存在は、メッセージヘッダ1132の暗号化タイプフィールド1162が0x0以外の任意の値を含むかどうかによって判
断されてもよい。
【0109】
xi.パディング
GMP1128は、さらに、パディングフィールド1150を含んでもよい。パディングフィールド1150は、存在するときには、暗号化されたメッセージの部分が暗号化ブロックサイズによって均等に割切れるようにするようメッセージに付加される暗号パディングを表わすバイトのシーケンスを含む。パディングフィールド1150の存在は、メッセージヘッダ1132における暗号化タイプフィールド1162によって示される暗号化アルゴリズムのタイプ(たとえば暗号ブロック連鎖モードにおけるブロック暗号)が暗号パディングを用いるかどうかによって判断されてもよい。
【0110】
xii.暗号化
アプリケーションペイロードフィールド1146、MICフィールド1148、およびパディングフィールド1150は、ともになって、暗号化ブロック1152を形成する。暗号化ブロック1152は、メッセージヘッダ1132における暗号化タイプフィールド1162が0x0以外の任意の値であるときに暗号化されるメッセージの部分を含む。
【0111】
xiii.メッセージ署名
GMP1128は、さらに、メッセージ署名フィールド1154を含んでもよい。メッセージ署名フィールド1154は、存在するときには、メッセージの暗号署名を含む可変長のバイトのシーケンスを含む。メッセージ署名フィールドの長さおよびコンテンツは、使用における署名アルゴリズムのタイプに従って判断されてもよく、メッセージヘッダ1132の署名タイプフィールド1164によって示されてもよい。たとえば、Prime256v1楕円曲線パラメータを用いるECDSAが使用におけるアルゴリズムである場合には、メッセージ署名フィールド1154は、リトルエンディアン順序でエンコードされる2つの32ビット整数を含んでもよい。
【0112】
iv.プロファイルおよびプロトコル
上で論じられたように、1つ以上の情報のスキーマが、メッセージに対する所望の一般的なディスカッションタイプで選択されてもよい。プロファイルは1つ以上のスキーマからなってもよい。たとえば、1つのプロファイルがアプリケーションペイロード1146のプロファイルIdフィールド1176に示されるときには、1組の情報のスキーマを用いてアプリケーションペイロードサブフィールド1180においてデータをエンコード/デコードしてもよい。しかしながら、異なるプロファイルがアプリケーションペイロード
1146のプロファイルIdフィールド1176に示されるときには、異なるスキーマの組を用いてアプリケーションペイロードサブフィールド1180におけるデータをエンコード/デコードしてもよい。
【0113】
加えて、ある実施の形態では、各装置は、プロファイルを処理するよう用いられる方法の組を含んでもよい。たとえば、コアプロファイルは以下のプロファイル:GetProfiles,
GetSchema, GetSchemas, GetProperty, GetProperties, SetProperty, SetProperties, RemoveProperty, RemoveProperties, RequestEcho, NotifyPropertyChanged, および/またはNotifyPropertiesChanged(プロファイル獲得、スキーマ獲得、複数のスキーマ獲得
、プロパティ獲得、複数のプロパティ獲得、プロパティ設定、複数のプロパティ設定、プロパティ除去、複数のプロパティ除去、エコー要求、プロパティ変更通知、および/または複数のプロパティ変更通知)を含んでもよい。GetProfiles方法は問合せされるノード
によってサポートされるプロファイルのアレイを返してもよい。GetSchemaおよびGetSchemas方法は、それぞれ、特定のプロファイルについて1つまたはすべてのスキーマを返し
てもよい。GetPropertyおよびGetPropertiesは、それぞれ、あるプロファイルスキーマに関してある値またはすべての値の対を返してもよい。SetPropertyおよびSetPropertiesは、それぞれ、あるプロファイルスキーマについて、単一の値または複数の値をセットしてもよい。RemovePropertyおよびRemovePropertiesは、それぞれ、あるプロファイルスキーマから単一の値または複数の値を除去するよう試みてもよい。RequestEchoは、ある指定
されるノードに対して、そのノードが修正されない状態で返す任意のデータペイロードを送信してもよい。NotifyPropertyChangedおよびNotifyPropertiesChangedは、それぞれ、単一/複数の値の対があるプロファイルスキーマに対して変更された場合に通知を発行してもよい。
【0114】
プロファイルおよびスキーマを理解することを助けるために、プロファイルおよびスキーマの非排他的リストを以下に説明の目的で与える。
【0115】
A.ステータス報告
ステータス報告スキーマは、
図16においてステータス報告フレーム1182として提示される。ステータス報告スキーマは、別のプロファイルであってもよく、または1つ以上のプロファイルに含まれてもよい(たとえばコアプロファイル)。ある実施の形態では、ステータス報告フレーム1182は、プロファイルフィールド1184、ステータスコードフィールド1186、次のステータスフィールド1188を含み、追加のステータス情報フィールド1190を含んでもよい。
【0116】
i.プロファイルフィールド
いくつかの実施の形態では、プロファイルフィールド1184は、現在のステータス報告における情報が解釈されることになるプロファイルを定義する4つのバイトのデータを含む。プロファイルフィールド1184の実施の形態が、
図17において、2つのサブフィールドで示される。示される実施の形態では、プロファイルフィールド1184はプロファイルIdサブフィールド1192を含み、それは、ステータスコードフィールド1186の値が定義されるプロファイルに対するベンダ特定識別子に対応する16個のビットを含む。プロファイルフィールド1184は、さらに、ベンダIdサブフィールド1194を含み、それは、プロファイルIdサブフィールド1192において識別されるプロファイルを与えるベンダを識別する16個のビットを含む。
【0117】
ii.ステータスコード
ある実施の形態では、ステータスコードフィールド1186は、報告されているステータスをエンコードする16個のビットを含む。ステータスコードフィールド1186における値は、プロファイルフィールド1184において与えられるベンダIdサブフィール
ド1192およびプロファイルIdサブフィールド1194においてエンコードされる値との関係において解釈される。加えて、ある実施の形態では、ステータスコード空間を、以下において表8に示されるように4つのグループに分割してもよい。
【0119】
表8は、各特定のプロファイルIdごとに別々に割当てられ用いられる、用いられてもよい一般的なステータスコード範囲を識別するが、いくつかの実施の形態では、いくつかのステータスコードはプロファイルの各々に共通であってもよい。たとえば、これらのプロファイルは、0x00000000のような共通のプロファイル(たとえばコアプロファイル)識別子を用いて識別されてもよい。
【0120】
iii.次のステータス
いくつかの実施の形態では、次のステータスコードフィールド1188は8つのビットを含んでもよい。次のステータスコードフィールド1188は、現在報告されるステータスのあとに後続のステータス情報があるかどうかを示してもよい。後続のステータス情報が含まれることになる場合には、次のステータスコードフィールド1188は、どのようなタイプのステータス情報が含まれることになるかを示す。いくつかの実施の形態では、次のステータスコードフィールド1188は常に含まれ得、それによって、おそらくはメッセージのサイズを増大させ得る。しかしながら、ステータス情報をともに連鎖させる機会を与えることによって、送信されるデータの全体的な低減に対する可能性が低減され得る。次のステータスフィールド1186が0x00である場合には、どのような後続のステータス情報フィールド1190も含まれない。しかしながら、非ゼロの値は、データが含まれてもよいことを示してもよく、データが含まれる形式(たとえばTLVパケットにおける)を示してもよい。
【0121】
iv.追加のステータス情報
次のステータスコードフィールド1188が非ゼロであるときには、追加のステータス情報フィールド1190がメッセージに含まれる。存在する場合には、ステータス項目フィールドは、先行するステータスタイプフィールドの値によって判断されてもよい形式(たとえばTLVフォーマット)でステータスを含んでもよい。
【0122】
B.ソフトウェア更新
ソフトウェア更新プロファイルまたはプロトコルは、スキーマの組、およびクライアントがダウンロードまたはインストールしてもよいソフトウェアの存在についての情報にクライアントが気づかされるかまたはそのような情報を求めることを可能にするクライアント/サーバプロトコルである。ソフトウェア更新プロトコルを用いて、ソフトウェアイメージを、プロファイルクライアントに対して、クライアントに既知のフォーマットで与えてもよい。あとのソフトウェアイメージの処理は、包括的、装置特定、またはベンダ特定であってもよく、ソフトウェア更新プロトコルおよび装置によって判断されてもよい。
【0123】
i.アプリケーションペイロードに対する一般的なアプリケーションヘッダ
適切に認識および処理されるために、ソフトウェア更新プロファイルフレームは、GMP1128のアプリケーションペイロードフィールド1146内において識別されてもよい。いくつかの実施の形態では、すべてのソフトウェア更新プロファイルフレームは、0x0000000Cのような共通のプロファイルId1176を用いてもよい。加えて、ソフトウェア更新プロファイルフレームは、追加の情報を示すメッセージタイプフィールド1172を含んでもよく、以下の表9および送信されるメッセージのタイプに従って選択されてもよい。
【0125】
加えて、以下に記載されるように、ソフトウェア更新シーケンスを、サーバが更新をイメージ告知として送信すること、またはクライアントが更新をイメージクエリとして受信することによって開始してもよい。いずれの実施の形態においても、開始イベントからの交換Id1174を、ソフトウェア更新との関連において用いられるすべてのメッセージに対して用いる。
【0126】
ii.プロトコルシーケンス
図18は、ソフトウェア更新クライアント1198とソフトウェア更新サーバ1200との間におけるソフトウェア更新に対するプロトコルシーケンス1196の実施の形態を示す。ある実施の形態では、ファブリックにおける任意の装置はソフトウェア更新クライアント1198またはソフトウェア更新サーバ1200であってもよい。プロトコルシーケンス1196のある実施の形態は、破線で示されるもののような、一部のソフトウェア更新送信においては省略されてもよいさらなるステップを含んでもよい。
【0127】
1.サービス探索
いくつかの実施の形態では、プロトコルシーケンス1196は、ソフトウェア更新プロファイルサーバが更新の存在を告知することで始まる。しかしながら、示される実施の形態のような他の実施の形態では、プロトコルシーケンス1196は、上に論じられるよう
に、サービス探索1202で始まってもよい。
【0128】
2.イメージ告知
いくつかの実施の形態では、イメージ告知メッセージ1204はソフトウェア更新サーバ1200によってマルチキャストまたはユニキャストされてもよい。イメージ告知メッセージ1204は、ファブリックにおける装置に対して、サーバ1200は提供すべきソフトウェア更新を有する旨を知らせる。更新がクライアント1198に適用可能である場合には、イメージ告知メッセージ1204の受信で、ソフトウェア更新クライアント1198はイメージクエリメッセージ1206で応答する。ある実施の形態では、イメージ告知メッセージ1204はプロトコルシーケンス1196に含まれなくてもよい。その代わりに、そのような実施の形態では、ソフトウェア更新クライアント1198は、ポーリングスケジュールを用いて、イメージクエリメッセージ1206をいつ送信すべきかを判断してもよい。
【0129】
3.イメージクエリ
ある実施の形態では、イメージクエリメッセージ1206は、上で論じられたように、ソフトウェア更新クライアント1198から、イメージ告知メッセージ1204に応答するか、またはポーリングスケジュールに従って、ユニキャストされてもよい。イメージクエリメッセージ1206は、クライアント1198からのそれ自体についての情報を含む。イメージクエリメッセージ1206のフレームの実施の形態が
図19に示される。
図19に示されるように、イメージクエリメッセージ1206のある実施の形態は、フレーム制御フィールド1218と、製品仕様フィールド1220と、ベンダ特定データフィールド1222と、バージョン仕様フィールド1224と、ロケール仕様フィールド1226と、被サポート完全性タイプフィールド1228と、被サポート更新スキームフィールド1230とを含んでもよい。
【0130】
a.フレーム制御
フレーム制御フィールド1218は、1バイトを含み、イメージクエリメッセージ1204についてのさまざまな情報を示す。フレーム制御フィールド1218の一例を
図20に示す。示されるように、フレーム制御フィールド1218は3つのサブフィールド:ベンダ特定フラグ1232とロケール仕様フラグ1234と予約済フィールドS3とを含んでもよい。ベンダ特定フラグ1232は、ベンダ特定データフィールド1222がメッセージイメージクエリメッセージに含まれるかどうかを示す。たとえば、ベンダ特定フラグ1232が0であるとき、いかなるベンダ特定データフィールド1222もイメージクエリメッセージには存在しなくてもよいが、ベンダ特定フラグ1232が1であるときには、ベンダ特定データフィールド1222はイメージクエリメッセージに存在してもよい。同様に、ロケール仕様フラグ1234における1値は、ロケール仕様フィールド1226がイメージクエリメッセージに存在することを示し、0値は、ロケール仕様フィールド1226がイメージクエリメッセージに存在しないことを示す。
【0131】
b.製品仕様
製品仕様フィールド1220は6バイトフィールドである。製品仕様フィールド1220の実施の形態が
図21に示される。示されるように、製品仕様フィールド1220は、3つのサブフィールド:ベンダIdフィールド1236と製品Idフィールド1238と、製品リビジョンフィールド1240とを含んでもよい。ベンダIdフィールド1236は、ソフトウェア更新クライアント1198に対するベンダを示す16個のビットを含む。製品Idフィールド1238は、イメージクエリメッセージ1206をソフトウェア更新クライアント1198として送信している装置製品を示す16個のビットを含む。製品リビジョンフィールド1240は、ソフトウェア更新クライアント1198のリビジョン属性を示す16個のビットを含む。
【0132】
c.ベンダ特定データ
ベンダ特定データフィールド1222は、イメージクエリメッセージ1206に存在するときには、可変数のバイトの長さを有する。ベンダ特定データフィールド1222の存在は、フレーム制御フィールド1218のベンダ特定フラグ1232から判断されてもよい。存在するときには、ベンダ特定データフィールド1222は、上に記載されたように、ソフトウェア更新クライアント1198についてのベンダ特定情報をTLVフォーマットでエンコードする。
【0133】
d.バージョン仕様
バージョン仕様フィールド1224の実施の形態を
図22に示す。バージョン仕様フィールド1224は、2つのサブフィールド:バージョン長フィールド1242とバージョン文字列フィールド1244とに下位分割される可変数のバイトを含む。バージョン長フィールド1242は、バージョン文字列フィールド1244の長さを示す8つのビットを含む。バージョン文字列フィールド1244は、長さが可変であり、バージョン長フィールド1242によって決められる。いくつかの実施の形態では、バージョン文字列フィールド1244は、長さにおいて255個のUTF−8文字を用いて上限を設けられてもよい。バージョン文字列フィールド1244においてエンコードされる値は、ソフトウェア更新クライアント1198に対するソフトウェアバージョン属性を示す。
【0134】
e.ロケール仕様
ある実施の形態では、ロケール仕様フィールド1226は、フレーム制御1218のロケール仕様フラグ1234が1であるときにイメージクエリメッセージ1206に含まれてもよい。ロケール仕様フィールド1226の実施の形態を
図23に示す。ロケール仕様フィールド1226の示される実施の形態は、2つのサブフィールド:ロケール文字列長フィールド1246とロケール文字列フィールド1248とに分割される可変数のバイトを含む。ロケール文字列長フィールド1246は、ロケール文字列フィールド1248の長さを示す8つのビットを含む。ロケール仕様フィールド1226のロケール文字列フィールド1248は、長さが可変であってもよく、ポータブルオペレーティングシステムインターフェイス(POSIX(ポジックス))ロケールコードに基づいてローカル記述をエンコードするUTF−8文字の文字列を含んでもよい。POSIXロケールコードに対する標準フォーマットは、[language[_territory][.codeset][@modifier]]である。た
とえば、オーストラリア英語に対するPOSIX表現はen_AU.UTF8である。
【0135】
f.被サポート完全性タイプ
完全性タイプフィールド1228の実施の形態が
図24に示される。被サポート完全性タイプフィールド1228は、2つのサブフィールド:タイプリスト長フィールド1250と完全性タイプリストフィールド1252とに分割される2バイトから4バイトのデータを含む。タイプリスト長フィールド1250は、完全性タイプリストフィールド1252のバイトにおける長さを示す8つのビットを含む。完全性タイプリストフィールド1252は、ソフトウェア更新クライアント1198のソフトウェア更新完全性タイプ属性の値を示す。いくつかの実施の形態では、完全性タイプは以下の表10から導出されてもよい。
【0137】
完全性タイプリストフィールド1252は、表10からの少なくとも1つの要素または含まれない他のさらなる値を含んでもよい。
【0138】
g.被サポート更新スキーム
被サポートスキームフィールド1230の実施の形態を
図25に示す。被サポートスキームフィールド1230は、2つのサブフィールド:スキームリスト長フィールド1254と更新スキームリストフィールド1256とに分割される可変数のバイトを含む。スキームリスト長フィールド1254は、更新スキームリストフィールドの長さをバイトで示す8つのビットを含む。被サポート更新スキームフィールド1222の更新スキームリストフィールド1256は、長さが可変であり、スキームリスト長フィールド1254によって決められる。更新スキームリストフィールド1256は、ソフトウェア更新クライアント1198のソフトウェア更新プロファイルの更新スキーム属性を表現する。例示の値の実施の形態が以下の表11に示される。
【0140】
イメージクエリメッセージ1206を受信すると、ソフトウェア更新サーバ1200は、送信された情報を用いて、ソフトウェア更新サーバ1200がソフトウェア更新クライアント1198に対する更新を有するかどうか、およびその更新をどのようにしてソフトウェア更新クライアント1198に送達するのが一番よいかを判断する。
【0141】
4.イメージクエリ応答
図18に戻って、ソフトウェア更新サーバ1200がイメージクエリメッセージ1206をソフトウェア更新クライアント1198から受信したのち、ソフトウェア更新サーバ1200はイメージクエリ応答1208で応答する。イメージクエリ応答1208は、更新イメージがなぜソフトウェア更新クライアント1198にとって利用可能でないかを詳
述する情報、またはソフトウェア更新クライアント1198が利用可能なイメージ更新をダウンロードおよびインストールすることができるようにその更新についての情報を含む。
【0142】
イメージクエリ応答1208のフレームの実施の形態を
図26に示す。示されるように、イメージクエリ応答1208は5つの可能なサブフィールド:クエリステータスフィールド1258と統一的リソース識別子(URI)フィールド1260と完全性仕様フィールド1262と更新スキームフィールド1264と更新オプションフィールド1266とを含む。
【0143】
a.クエリステータス
クエリステータスフィールド1258は、可変数のバイトを含み、上においてステータス報告に関して論じられたように、ステータス報告フォーマット化データを含む。たとえば、クエリステータスフィールド1258は、以下の表12に示されるもののような、イメージクエリ応答ステータスコードを含んでもよい。
【0145】
b.URI
URIフィールド1260は可変数のバイトを含む。URIフィールド1260の存在はクエリステータスフィールド1258によって判断されてもよい。クエリステータスフィールド1258によって、更新が利用可能である旨が示される場合には、URIフィールド1260が含まれてもよい。URIフィールド1260の実施の形態を
図27に示す。URIフィールド1260は、2つのサブフィールド:URI長フィールド1268とURI文字列フィールド1270とを含む。URI長フィールド1268は、URI文字列フィールド1270の長さをUTF−8文字で示す16個のビットを含む。URI文字列フィールド1270は、ソフトウェア更新クライアント1198が、ソフトウェアイメージ更新が存在するときにはそれを見つけ出し、ダウンロードし、およびインストールできるように、提示されているソフトウェアイメージ更新のURI属性を示す。
【0146】
c.完全性仕様
完全性仕様フィールド1262は、長さが可変であってもよく、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在してもよい。完全性仕様フィールド1262の実施の形態を
図28に示す。示されるように、完全性仕様フィールド1262は
2つのサブフィールド:完全性タイプフィールド1272と完全性値フィールド1274とを含む。完全性タイプフィールド1272は、ソフトウェアイメージ更新に対する完全性タイプ属性を示す8つのビットを含み、上記の表10に示されるものと同様のリストを用いて事前設定されてもよい。完全性値フィールド1274は、イメージ更新メッセージが送信中に完全性を維持したことを検証するよう用いられる完全性値を含む。
【0147】
d.更新スキーム
更新スキームフィールド1264は、8つのビットを含み、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在する。存在する場合には、更新スキームフィールド1264は、ソフトウェア更新サーバ1198に提示されているソフトウェア更新イメージに対するスキーム属性を示す。
【0148】
e.更新オプション
更新オプションフィールド1266は、8つのビットを含み、更新がソフトウェア更新サーバ1198からソフトウェア更新クライアント1198に利用可能である旨をクエリステータスフィールド1258が示すときに存在する。更新オプションフィールド1266は
図29に示されるように下位分割されてもよい。示されるように、更新オプションフィールド1266は4つのサブフィールド:更新優先度フィールド1276と更新条件フィールド1278と報告ステータスフラグ1280と予約済フィールド1282とを含む。いくつかの実施の形態では、更新優先度フィールド1276は2つのビットを含む。更新優先度フィールド1276は、更新の優先度属性を示し、以下の表13に示されるもののような値を用いて判断されてもよい。
【0150】
更新条件フィールド1278は、いつ更新すべきか、または更新するかどうかを判断すべく、条件的ファクタを判断するのに用いられてもよい3つのビットを含む。たとえば、更新条件フィールド1278における値は以下の表14を用いてデコードされてもよい。
【0152】
報告ステータスフラグ1280は、ソフトウェア更新クライアント1198がダウンロード通知メッセージ1210で応答すべきかどうかを示す1つのビットである。報告ステータスフラグ1280が1にセットされる場合には、ソフトウェア更新サーバ1198は、ソフトウェア更新がソフトウェア更新クライアント1200によってダウンロードされたあとにダウンロード通知メッセージ1210が送信されることを要求している。
【0153】
イメージクエリ応答1208が、更新が利用可能であることを示す場合には、ソフトウェア更新クライアント1198は、イメージクエリ応答1208において示される時間に、イメージクエリ応答1208に含まれる情報を用いて、その更新をダウンロードする(1210)。
【0154】
5.ダウンロード通知
更新ダウンロード1210が成功裏に完了したかまたは失敗して報告ステータスフラグ1280が1になったあと、ソフトウェア更新クライアント1198はダウンロード通知メッセージ1212で応答してもよい。ダウンロード通知メッセージ1212は、上で論じられたステータス報告フォーマットに従ってフォーマットされてもよい。ダウンロード通知メッセージ1212において用いられるステータスコードの一例を以下の表15に示す。
【0156】
上に記載されるステータス報告に加えて、ダウンロード通知メッセージ1208は、ダウンロードおよび/またはダウンロードの失敗に関連してもよいさらなるステータス情報を含んでもよい。
【0157】
6.通知応答
ソフトウェア更新サーバ1200は、ダウンロード通知メッセージ1212または更新通知メッセージ1216に応答して通知応答メッセージ1214で応答してもよい。通知応答メッセージ1214は、上に記載されるように、ステータス報告フォーマットを含んでもよい。たとえば、通知応答メッセージ1214は以下の表16に列挙されるステータスコードを含んでもよい。
【0159】
上記のステータス報告に加えて、通知応答メッセージ1214は、ソフトウェア更新をダウンロード、更新、および/またはダウンロード/更新の失敗に関係してもよいさらなるステータス情報を含んでもよい。
【0160】
7.更新通知
更新が成功裏に完了するかまたは失敗して報告ステータスフラグ1280値が1になったあと、ソフトウェア更新クライアント1198は更新通知メッセージ1216で応答してもよい。更新通知メッセージ1216は上に記載されるステータス報告フォーマットを用いてもよい。たとえば、更新通知メッセージ1216は、以下の表17において列挙されるステータスコードを含んでもよい。
【0162】
上記のステータス報告に加えて、更新通知メッセージ1216は、更新および/または更
新の失敗に関係してもよいさらなるステータス情報を含んでもよい。
【0163】
C.データ管理プロトコル
データ管理は、ファブリック内におけるさまざまな電子装置において用いられる共通のプロファイル(たとえばコアプロファイル)に含まれてもよく、または別個のプロファイルとして指定されてもよい。いずれの状況においても、装置管理プロトコル(DMP)を用いて、ノードがノード常駐情報をブラウジング、共有および/または更新してもよい。DMPにおいて用いられるシーケンス1284が
図30に示される。シーケンス1284は、被閲覧側ノード1288の常駐データを閲覧および/または変更するよう要求する閲覧側ノード1286を示す。加えて、閲覧側ノード1286は、スナップショット要求、閲覧がある時間期間にわたって持続する旨の監視要求、または他の好適な閲覧タイプなどのような、いくつかの閲覧オプションのうちの1つを用いて、常駐データを閲覧することを要求してもよい。各メッセージは、
図15を参照して記載されるアプリケーションペイロード1146に対するフォーマットに従う。たとえば、各メッセージは、0x235A0000のような、データ管理プロファイルおよび/または関係のあるコアプロファイルに対応するプロファイルId1176を含む。各メッセージは、さらに、メッセージタイプ1172を含む。メッセージタイプ1172は、ビューに対する閲覧タイプのような、会話に関係するさまざまなファクタを判断するのに用いられてもよい。たとえば、いくつかの実施の形態では、メッセージタイプフィールド1172は以下の表18に従ってエンコード/デコードされてもよい。
【0165】
i.ビュー要求
ビュー要求メッセージ1290は、上で論じられたように、ノード常駐データを閲覧するよう要求するが、要求のタイプはメッセージタイプフィールド1172によって判断されてもよい。したがって、各要求タイプは異なるビュー要求フレームを含んでもよい。
【0166】
1.スナップショット要求
スナップショット要求は、閲覧側ノード1286が今後の更新を要求することなく被閲覧側ノード1288上のノード常駐データに対する即時ビューを所望するときに閲覧側ノード1286によって送信されてもよい。スナップショット要求フレーム1292の実施の形態を
図31に示す。
【0167】
図31に示されるように、スナップショット要求フレーム1292は、長さが可変であってもよく、3つのフィールド:ビューハンドルフィールド1294とパス長リストフィールド1296とパスリストフィールド1298とを含んでもよい。ビューハンドルフィールド1294は、要求されたビューを識別するよう「ハンドル」を与える2つのビット
を含んでもよい。いくつかの実施の形態では、ビューハンドルフィールド1294は、16ビットの乱数または16ビットのシーケンス番号を、要求が形成されるときに閲覧側ノード1286上で実行される一意性チェックとともに用いて、事前設定される。パスリスト長フィールド1296は、パスリストフィールド1298の長さを示す2つのバイトを含む。パスリストフィールド1298は、長さが可変であり、パスリスト長フィールド1296の値によって示される。パスリストフィールド1298の値はノードに対するスキーマパスを示す。
【0168】
スキーマパスは、ノードに常駐するスキーマの一部であるデータ項目またはコンテナに対する簡潔な記述である。たとえば、
図32は、プロファイルスキーマ1300の一例を与える。示されるプロファイルスキーマ1300においては、データ項目1302へのパスがバイナリフォーマットで“Foo:bicycle:mountain”(Foo:自転車:マウンテン)と
書かれてもよい。パスのバイナリフォーマットは、
図33に示されるように、プロファイルバイナリフォーマット1304として表現されてもよい。プロファイルバイナリフォーマット1304は、2つのサブフィールド:プロファイル識別子フィールド1306とTLVデータフィールド1308とを含む。プロファイル識別子フィールド1306は、どのプロファイルが参照されているか(たとえばFooプロファイル)を識別する。TLVデ
ータフィールド1308パス情報。先に論じられたように、TLVデータは、同封されたデータについての情報を含むタグフィールドを含む。
図32のFooプロファイルを指すよ
う用いられるタグフィールド値は表19にリスト化された値と同様であってもよい。
【0170】
表19および
図32のFooプロファイルを用いて、パス“Foo:bicycle:mountain”を表わ
すTLVフォーマットにおけるバイナリ文字列が、以下の表20に示されるように表現されてもよい。
【0172】
閲覧側ノード1286が、プロファイルスキーマ(たとえば
図33のFooプロファイルス
キーマ)に定義される全データを受信することを所望する場合には、ビュー要求メッセージ1290は、「ニル」項目(たとえば0x0D00 TLおよびコンテナを指す空の長さを要求
してもよい。
【0173】
2.監視要求
閲覧側ノード1286がスナップショット以上のものを所望する場合には、閲覧側ノード1286は監視要求を要求してもよい。監視要求は、被閲覧側ノード1288における当該のデータに変更がなされるときに被閲覧側ノード1288に対して更新を送信するよう求めて、閲覧側ノード1286がそのデータの同期されたリストを保持できるようにする。監視要求フレームは、
図31のスナップショット要求とは異なるフォーマットを有してもよい。監視要求フレーム1310の実施の形態が
図34に示される。監視要求フレーム1310は4つのフィールド:ビューハンドルフィールド1312とパスリスト長フィールド1314とパスリストフィールド1316と変更カウントフィールド1318とを含む。ビューハンドルフィールド1312、パスリスト長フィールド1314、およびパスリストフィールドは、それぞれ、
図31のスナップショット要求のビューハンドルフィールド1294、パスリスト長フィールド1296、およびパスリストフィールド1298と同様にフォーマットされてもよい。さらなるフィールドの変更カウントフィールド1318は、更新が閲覧側ノード1286に送信される要求されたデータの変更数のしきい値を示す。いくつかの実施の形態では、変更カウントフィールド1318の値が0である場合には、被閲覧側ノード1288は、更新をいつ送信するべきかを被送信側ノード1288自身で判断してもよい。変更カウントフィールド1318の値が0でない場合には、変更の数がその値と等しくなった後、更新が閲覧側ノード1286に送信される。
【0174】
3.周期的更新要求
第3のタイプのビューが、さらに、閲覧側ノード1286によって要求されてもよい。この第3のタイプのビューは周期的更新と称される。周期的更新はスナップショットビューを周期的更新と並んで含む。理解され得るように、周期的更新要求はスナップショット要求と同様であってもよいが、さらなる情報が更新期間を決める。たとえば、周期的更新要求フレーム1320の実施の形態が
図35に示される。周期的更新要求フレーム1320は4つのフィールド:ビューハンドルフィールド1322とパスリスト長フィールド1324とパスリストフィールド1326と更新期間フィールド1328とを含む。ビューハンドルフィールド1322とパスリスト長フィールド1324とパスリストフィールド1326とはスナップショット要求フレーム1292におけるそれらの対応のフィールドと同様にフォーマットされてもよい。更新期間フィールド1328は、長さが4つのバイトであり、関連する時間単位(たとえば秒)で更新間において経過する時間期間に対応する値を含む。
【0175】
4.リフレッシュ要求
閲覧側ノード1286が更新されたスナップショットを受信することを所望する場合には、閲覧側ノード1286は、ビュー要求メッセージ1290を、
図36に示されるリフレッシュ要求フレーム1330の形式で送信してもよい。リフレッシュ要求フレーム1330は、本質的には、リフレッシュ要求フレーム1330におけるビューハンドル値を用いて、被閲覧側ノード1228が前の要求として認識することができる前のスナップショット要求から、スナップショットビューハンドルフィールド(たとえばビューハンドルフィールド1294)を再送信する。
【0176】
5.ビュー取消要求
閲覧側ノード1286が進行中のビュー(たとえば周期的更新または監視ビュー)を取消すよう所望するときには、閲覧側ノード1286は、ビュー要求メッセージ1290を
、
図37に示されるようなビュー取消要求フレーム1332の形式で送信してもよい。ビュー取消要求フレーム1332は、本質的に、リフレッシュ要求フレーム1330におけるビューハンドル値を用いて、現在の周期的更新または監視ビューを取消すために、被閲覧側ノード1288が前の要求として認識できる前の要求からの前の周期的更新または監視ビュー(たとえばビューハンドルフィールド1310または1322)からビューハンドルフィールドを再送信する。
【0177】
ii.ビュー応答
図30に戻って、被閲覧側ノード1288がビュー要求メッセージ1290を受信した後、被閲覧側ノード1288はビュー応答メッセージ1334で応答する。ビュー応答メッセージフレーム1336の一例が
図38に示される。ビュー応答メッセージフレーム1336は3つのフィールド:ビューハンドルフィールド1338とビュー要求ステータスフィールド1240とデータ項目リスト1242とを含む。ビューハンドルフィールド1338は、上において参照されるビューハンドルフィールド1338のうちの任意のものと同様にフォーマットされてもよい。加えて、ビューハンドルフィールド1338は、ビュー応答メッセージ1334が応答しているビュー要求メッセージ1290からのそれぞれのビューハンドルフィールドと一致する値を含む。ビュー要求ステータスフィールド1340は、ビュー要求のステータスを示す可変長フィールドであり、上で論じられたステータス更新フォーマットに従ってフォーマットされてもよい。データ項目リストフィールド1342は、ビュー要求が成功した旨をビュー要求ステータスフィールド1340が示すときに存在する可変長フィールドである。存在する場合には、データ項目リストフィールド1342は、ビュー要求メッセージ1290のパスリストに対応する要求されるデータの順序づけられたリストを含む。さらに、データ項目リストフィールド1342におけるデータは、上で論じられるように、TLVフォーマットでエンコードされてもよい。
【0178】
iii.更新要求
上で論じられたように、いくつかの実施の形態では、被閲覧側ノード1288は閲覧側ノード1286に更新を送信してもよい。これらの更新は更新要求メッセージ1344として送信されてもよい。更新要求メッセージ1344は、更新要求のタイプによって、指定されたフォーマットを含んでもよい。たとえば、更新要求は、明示的な更新要求であるか、またはメッセージId1172によって識別されてもよいビュー更新要求フィールドであってもよい。
【0179】
1.明示的更新要求
明示的更新要求は、任意の時間において、ファブリック1000における他のノードからの情報を所望する結果として送信されてもよい。明示的更新要求は、
図39に示される更新要求フレーム1346でフォーマットされてもよい。示される更新要求フレーム1346は4つのフィールド:更新ハンドルフィールド1348とパスリスト長フィールド1350とパスリストフィールド1352とデータ項目リストフィールド1354とを含む。
【0180】
更新ハンドルフィールド1348は、乱数または連続数、および更新要求またはその要求に対する応答を識別する一意性チェックで事前設定されてもよい。パスリスト長フィールド1350は、パスリストフィールド1352の長さを示す2つのバイトを含む。パスリストフィールド1352は、上記のように、パスのシーケンスを示す可変長フィールドである。データ項目リストフィールド1354はデータ項目リストフィールド1242と同様にフォーマットされてもよい。
【0181】
2.ビュー更新要求
ビュー更新要求メッセージは、以前に別のノードのスキーマに対するビューを要求した
ノード、またはそれ自身のデータに対するビューを別のノードに代わって確立したノードによって送信されてもよい。ビュー更新要求フレーム1356の実施の形態が
図40に示される。ビュー更新要求フレーム1356は4つのフィールド:更新ハンドルフィールド1358とビューハンドルフィールド1360と更新項目リスト長フィールド1362と更新項目リストフィールド1364とを含む。更新ハンドルフィールド1358は、更新ハンドルフィールド1348に関して上で論じられたフォーマットを用いて構成されてもよい。ビューハンドルフィールド1360は、同じビューハンドルを有する関係のあるビュー要求メッセージ1290によって形成されるビューを識別する2つのバイトを含む。更新項目リスト長フィールド1362は、2つのバイトを含み、更新項目リストフィールド1364に含まれる更新項目の数を示す。
【0182】
更新項目リストフィールド1364は、可変数のバイトを含み、更新された値を構成するデータ項目をリスト化する。各更新された項目リストは複数の更新項目を含んでもよい。個々の更新項目は、
図41に示される更新項目フレーム1366に従ってフォーマットされる。各更新項目フレーム1366は3つのサブフィールド:項目インデックスフィールド1368と項目タイムスタンプフィールド1370とデータ項目フィールド1372とを含む。項目インデックスフィールド1368は、更新が要求されているビューと、データ項目フィールド1372に対するそのビューのパスリストにおけるインデックスとを示す2つのバイトを含む。
【0183】
項目タイムスタンプフィールド1370は、4つのバイトを含み、変更から通信されている更新がなされるまでの経過時間を(たとえば秒で)示す。2つ以上の変更がデータ項目に対してなされた場合には、項目タイムスタンプフィールド1370は最も最近の変更または最も早い変更を示してもよい。データ項目フィールド1372は、更新された情報として受信されることになるTLVフォーマットでエンコードされた可変長フィールドである。
【0184】
iv.更新応答
更新が受信された後、ノード(たとえば閲覧側ノード1286)は更新応答メッセージ1374を送信してもよい。更新応答メッセージ1374は、
図42に示される更新応答フレーム1376を用いてエンコードされてもよい。更新応答フレーム1376は2つのフィールド:更新ハンドルフィールド1378と更新要求ステータスフィールド1380とを含む。更新ハンドルフィールド1378は、更新応答メッセージ1374が応答している更新要求メッセージ1344の更新ハンドルフィールドの値に対応する。更新要求ステータスフィールド1380は、上で論じられたステータス報告フォーマットに従って更新のステータスを報告する。加えて、DMPを用いるプロファイル(たとえばコアプロファイルまたはデータ管理プロファイル)は、以下の表21に列挙されるもののようなプロファイル特定コードを含んでもよい。
【0186】
D.大容量転送
いくつかの実施の形態では、大容量データファイル(たとえばセンサデータ、ログ、または更新イメージ)をファブリック1000におけるノード/サービス間で転送することが望ましくあり得る。大容量データの転送を可能にするために、別のファイルまたはプロトコルを1つ以上のプロファイルに組込んで、ノード/ノードにおけるサービスに利用可能にされてもよい。大容量データ転送プロトコルは、データファイルを、データの集まりとして、メタデータアタッチメントとともにモデル化してもよい。ある実施の形態では、データは不透明であってもよいが、メタデータを用いて、要求されたファイル転送に進んでもよいかを判断してもよい。
【0187】
大容量転送に関与する装置は、一般的に、大容量転送通信およびイベント形成に従って分割されてもよい。
図43に示されるように、大容量転送における各通信1400は、送信側1402を含み、それは、大容量データ1404を受信するノード/サービスである受信側1406に大容量データ1404を送信するノード/サービスである。いくつかの実施の形態では、受信側は、ステータス情報1408を送信側1402に送信して、大容量転送のステータスを示してもよい。加えて、大容量転送イベントは、送信側1402(たとえばアップロード)または受信側1406(たとえばダウンロード)のどちらかが開始側として開始されてもよい。開始側に応答するノード/サービスは、大容量データ転送において応答側と称されてもよい。
【0188】
大容量データ転送は同期モードまたは非同期のいずれかを用いて生じてもよい。データが転送されるモードは、大容量データが送信される基底プロトコル(たとえばUDPまたはTCP)などのようなさまざまなファクタを用いて判断されてもよい。無接続プロトコ
ル(たとえばUDP)においては、大容量データは同期モードを用いて転送されてもよく、それは、ノード/サービスの1つ(「ドライバ」)が、転送が進行する速度を制御することを可能にする。ある実施の形態では、同期モード大容量データ転送における各メッセージの後、大容量データ転送において次のメッセージを送信する前に、肯定応答が送信されてもよい。ドライバは送信側1402または受信側1406であってもよい。いくつかの実施の形態では、ドライバは、オンライン状態とオフライン状態との間をトグルして、オンライン状態にあるときには転送を進めるようメッセージを送信してもよい。接続指向型プロトコル(たとえばTCP)を用いての大容量データ転送においては、大容量データは、連続するメッセージを送信する前の肯定応答または単一のドライバを用いない非同期モードを用いて転送されてもよい。
【0189】
大容量データ転送が同期モードまたは非同期モードを用いて実行されるかどうかに関わらず、メッセージのタイプは、アプリケーションペイロード1146におけるメッセージタイプ1172を用いて、アプリケーションペイロードにおけるプロファイルId1176に従って判断されてもよい。表22は、プロファイルId1176における大容量データ転送プロファイル値と関連して用いられてもよいメッセージタイプの一例を含む。
【0191】
i.SendInit(送信開始)
SendInit(送信開始)メッセージ1420の実施の形態を
図44に示す。SendInitメッセージ1420は7つのフィールド:転送制御フィールド1422と範囲制御フィールド1424とファイル指示子長フィールド1426と提案される最大ブロックサイズフィールド1428と開始オフセットフィールド1430と長さフィールド1432とファイル指示子フィールド1434とを含んでもよい。
【0192】
転送制御フィールド1422は、
図45に示されるバイトのデータを含む。転送制御フィールドは少なくとも4つのフィールド:非同期フラグ1450とRドライブフラグ1452とSドライブフラグ1454とバージョンフィールド1456とを含む。非同期フラグ1450は、提案される転送が同期モードまたは非同期モードを用いて実行されてもよいかどうかを示す。Rドライブフラグ1452およびSドライブフラグ1454は、各々、それぞれ、受信側1402または送信側1408が同期モード転送を駆動する状態で、受信側1406がデータを転送する能力があるかどうかを示す。
【0193】
範囲制御フィールド1424は、
図46に示される範囲制御フィールド1424のようなバイトのデータを含む。示される実施の形態では、範囲制御フィールド1424は少なくとも3つのフィールド:BigExtentフラグ1470と開始オフセットフラグ1472と
有限長フラグ1474とを含む。有限長フラグ1474は転送が有限長を有するかどうかを示す。有限長フラグ1474は、長さフィールド1432がSendInitメッセージ1420に存在するかどうかを示し、BigExtentフラグ1470は長さフィールド1432に対
するサイズを示す。たとえば、いくつかの実施の形態では、BigExtentフラグ1470に
おける1の値は長さフィールド1432が8バイトであることを示す。そうでない場合には、長さフィールド1432は、存在する場合には、4バイトである。転送が有限長を有する場合には、開始オフセットフラグ1472は、開始オフセットがあるかどうかを示す。開始オフセットがある場合には、BigExtentフラグ1470は開始オフセットフィール
ド1430に対する長さを示す。たとえば、いくつかの実施の形態では、BigExtentフラ
グ1470における1の値は、開始オフセットフィールド1430が8バイトであることを示す。そうでない場合には、開始オフセットフィールド1430は、存在する場合には4バイトである。
【0194】
図44に戻って、ファイル指示子長フィールド1426は、ファイル指示子フィールド1434の長さを示す2つのバイトを含む。ファイル指示子フィールド1434は、ファイル指示子長フィールド1426に依存する可変長フィールドである。最大ブロックサイズフィールド1428は、単一の転送において転送されてもよいブロックの最大サイズを提案する。
【0195】
開始オフセットフィールド1430は、存在するときには、BigExtentフラグ1470
によって示される長さを有する。開始オフセットフィールド1430の値は、送信側1402が転送を開始してもよい転送されるべきファイル内の位置を示し、大きなファイル転送が複数の大容量転送セッションにセグメント化されることを本質的に可能にする。
【0196】
長さフィールド1432は、存在するときには、転送されるべきファイルが有限長を有する旨を有限長フィールド1474が示す場合には、そのファイルの長さを示す。いくつかの実施の形態では、その長さが達成される前に受信側1402が最終のブロックを受信する場合には、受信側は、以下に論じられるように、転送は失敗したと考え、エラーを報告してもよい。
【0197】
ファイル指示子フィールド1434は、送信されるべきデータを識別するよう送信側1402によって選択される可変長識別子である。いくつかの実施の形態では、送信側1402および受信側1406は、送信前にファイルに対する識別子を交渉してもよい。他の実施の形態では、受信側1406は、メタデータをファイル指示子フィールド1434とともに用いて、転送を受入れるべきかどうか、およびそのデータを処理すべきかどうかを判断してもよい。ファイル指示子フィールド1434の長さはファイル指示子長フィールド1426から判断されてもよい。いくつかの実施の形態では、SendInitメッセージ1420は、さらに、TLVフォーマットでエンコードされる可変長のメタデータフィールド1480を含んでもよい。メタデータフィールド1480は、開始側が、転送されるべきファイルについてのアプリケーション特定情報のようなさらなる情報を送信することを可能にする。いくつかの実施の形態では、メタデータフィールド1480を用いて、大容量データ転送前にファイル指示子フィールド1434と交渉することを回避してもよい。
【0198】
ii.SendAccept(送信受入)
送信受入メッセージは、転送のために選択された転送モードを示すよう応答側から送信される。SendAcceptメッセージ1500の実施の形態を
図47に示す。SendAcceptメッセージ1500は、SendInitメッセージ1420の転送制御フィールド1422と同様の転
送制御フィールド1502を含む。しかしながら、いくつかの実施の形態では、Rドライブフラグ1452またはSドライブフラグ1454のみが転送制御フィールド1502において非ゼロの値を有して、送信側1402または受信側1406を同期モード転送のドライバとして識別してもよい。SendAcceptメッセージ1500は、さらに、転送に対する最大ブロックサイズを示す最大ブロックサイズフィールド1504を含む。ブロックサイズフィールド1504はSendInitメッセージ1420の最大ブロックフィールド1428の値と等しくてもよいが、最大ブロックサイズフィールド1504の値は最大ブロックフィールド1428において提案される値より小さくてもよい。最後に、SendAcceptメッセージ1500は、受信側1506が転送について送信側1402に渡してもよい情報を示すメタデータフィールド1506を含んでもよい。
【0199】
iii.SendReject(送信拒絶)
受信側1206がSendInitメッセージの後に転送を拒絶するときには、受信側1206はSendReject(送信拒絶)メッセージを送信して、1つ以上の問題が送信側1202と受信側1206との間における大容量データ転送に関して存在することを示してもよい。送信拒絶メッセージは、上に記載され
図48に示されるステータス報告フォーマットに従ってフォーマットされてもよい。送信拒絶フレーム1520は、転送を拒絶する理由を示す2つのバイトを含むステータスコードフィールド1522を含んでもよい。ステータスコードフィールド1522は、下の表23に示されるように列挙されるものと同様の値を用いてデコードされてもよい。
【0201】
いくつかの実施の形態では、送信拒絶メッセージ1520は次のステータスフィールド1524を含んでもよい。次のステータスフィールド1524は、存在するときには、ステータス報告フレームの次のステータスフィールド1188に関して上で論じられたようにフォーマットされエンコードされてもよい。ある実施の形態では、送信拒絶メッセージ1520はさらなる情報フィールド1526を含んでもよい。さらなる情報フィールド1526は、存在するときには、さらなるステータスについての情報を格納し、上で論じられたTLVフォーマットを用いてエンコードされてもよい。
【0202】
iv.ReceiveInit(受信開始)
ReceiveInit(受信開始)メッセージは、開始側としての受信側1206によって送信
されてもよい。ReceiveInitメッセージは、
図44に示されるSendInitメッセージ148
0と同様にフォーマットおよびエンコードされてもよいが、BigExtentフィールド147
0は、受信側1206が処理することができる最大ファイルサイズを指定する最大長フィールドとして称されてもよい。
【0203】
v.ReceiveAccept(受信受入)
送信側1202がReceiveInitメッセージを受信すると、送信側1202はReceiveAccept(受信受入)メッセージで応答してもよい。ReceiveAcceptメッセージは、
図49に示
されるReceiveAcceptメッセージ1540としてフォーマットおよびエンコードされても
よい。ReceiveAcceptメッセージ1540は4つのフィールド:転送制御フィールド15
42と範囲制御フィールド1544と最大ブロックサイズフィールド1546と、ときとして長さフィールド1548とを含んでもよい。ReceiveAcceptメッセージ1540は、
図47のSendAcceptメッセージ1502と同様にフォーマットされてもよいが、第2のバイトは範囲制御フィールド1544を示す。さらに、範囲制御フィールド1544は、
図46の範囲制御フィールド1424に関して上で論じられた同じ方法を用いてフォーマットおよびエンコードされてもよい。
【0204】
vi.ReceiveReject(受信拒絶)
送信側1202が、受信側1206にファイルを転送することで問題に遭遇する場合には、送信側1202は、両方とも上で論じられた、ステータス報告フォーマットを用いてSendRejectメッセージ48と同様にフォーマットおよびエンコードされるReceiveReject
(受信拒絶)メッセージを送信してもよい。しかしながら、ステータスコードフィールド1522は、以下に表24に示されるように列挙されるものと同様の値を用いてエンコード/デコードされてもよい。
【0206】
vii.BlockQuery(ブロッククエリ)
BlockQueryメッセージは、次のブロックのデータを要求するよう駆動側受信側1202によって同期モード大容量データ転送において送信されてもよい。BlockQueryは、明示的でない肯定応答が送信された場合には前のデータのブロックの受信を暗示的に肯定応答する。非同期転送を用いる実施の形態では、BlockQueryメッセージは伝送プロセスから省略されてもよい。
【0207】
viii.Block(ブロック)
大容量データ転送において送信されるデータのブロックは、0より大きく、かつ送信側1202および受信側1206によって同意された最大ブロックサイズ未満の、任意の長さを含んでもよい。
【0208】
ix.BlockEOF(ファイルの終わりブロック)
データ転送における最終のブロックはファイルの終わりブロック(BlockEOF)として提示されてもよい。BlockEOFは0と最大ブロックサイズとの間の長さを有してもよい。受信
側1206が、予め交渉されたファイルサイズ(たとえば長さフィールド1432)と実際に転送されたデータの量との間に相違を見出す場合には、受信側1206は、以下に論じられるように、失敗を示すError(エラー)メッセージを送信してもよい。
【0209】
x.Ack(肯定応答)
送信側1202が同期モード転送を駆動している場合には、送信側1202は、Block
の送信後と次のBlockの送信前との間に肯定応答(Ack)を受信するまで待機してもよい。受信側が同期モード転送を駆動している場合には、受信側1206は、明示的AckまたはBlockQueryのいずれかを送信して、前のブロックの受信を肯定応答してもよい。さらに、
非同期モード大容量転送においては、Ackメッセージは伝送プロセスから全く省略されて
もよい。
【0210】
xi.AckEOF(ファイルの終わりの肯定応答)
ファイルの終わりの肯定応答(AckEOF)は、同期モードまたは非同期モードにおいて送信される大容量転送において送信されてもよい。AckEOFを用いて、受信側1206は、転送におけるすべてのデータが受信されたことを示し、大容量データ転送セッションの終わりを信号送信する。
【0211】
xii.Error
通信におけるある問題の発生で、送信側1202または受信側1206は、エラーメッセージを送信して、大容量データ転送セッションを早く終わらせてもよい。エラーメッセージは、上で論じられたステータス報告フォーマットに従ってフォーマットおよびエンコードされてもよい。たとえば、エラーメッセージは、
図48のSendRejectフレーム1520と同様にフォーマットされてもよい。しかしながら、ステータスコードは、値が以下の表25に列挙されるものを含む、および/またはそれらと同様である状態で、エンコード/デコードされてもよい。
【0213】
上に記載される具体的な実施の形態は例示によって示されたものであり、これらの実施の形態はさまざまな修正および代替形式が可能であり得ることが理解されるべきである。さらに、特許請求の範囲は開示される特定の形式に限定されるよう意図されるものではなく、本開示の精神および範囲内に入るすべての修正物、均等物および代替物を包含することが理解されるべきである。