(58)【調査した分野】(Int.Cl.,DB名)
前記更新パッケージの前記複数の更新アイテムのうちの少なくとも1つは、前記ユーティリティノードの前記ソフトウェアおよび/またはファームウェアの2つのバージョンの間の差を含む差分ファイルを備えていることを特徴とする請求項1に記載のユーティリティノード。
前記更新パッケージは、前記複数の更新アイテムを記述するパッケージ記述データと共に受信され、前記パッケージ記述データは、前記複数の更新アイテムのうちの1つが適用されることになるデバイスのタイプ、前記複数の更新アイテムのうちの1つのバージョン、または前記複数の更新アイテムのうちの1つが適用される前に適用されることになる必須要件更新アイテムのうちの少なくとも1つを識別することを特徴とする請求項1に記載のユーティリティノード。
前記更新モジュールは、前記パッケージ記述データに少なくとも部分的に基づいて、前記ユーティリティノードに適用するための前記複数の更新アイテムのうちの前記1または複数を識別するようにさらに構成されていることを特徴とする請求項3に記載のユーティリティノード。
前記1または複数の検証チェックは、前記ユーティリティノードのデバイスタイプが前記特定の更新アイテムのデバイスタイプと一致することをチェックすること、または必須要件更新アイテムが前記ユーティリティノードに適用されていることをチェックすることのうちの少なくとも1つを備えていることを特徴とする請求項5に記載のユーティリティノード。
前記計測モジュールは、前記ユーティリティノードが更新されている間、前記ユーティリティノードネットワークのその他のユーティリティノードから消費データを収集するようにさらに構成されていることを特徴とする請求項1に記載のユーティリティノード。
ユーティリティノードネットワークのヘッドエンドデバイスによって、異なるバージョンのユーティリティノードソフトウェアおよび/またはユーティリティノードファームウェアを更新するための複数の更新アイテムを含む更新パッケージを受信するステップと、
前記ヘッドエンドデバイスによって、更新するための前記ユーティリティノードネットワークの1または複数のユーティリティノードを識別するステップと、
前記ヘッドエンドデバイスによって、前記複数の更新アイテムの中から、前記1または複数の識別されたユーティリティノードを更新することに適用可能な、1または複数の更新アイテムを含むように、前記更新パッケージを再パッケージ化するステップと、
前記再パッケージ化された更新パッケージが、前記1または複数の識別されたユーティリティノードに送信されるようにするステップと
を備えたことを特徴とする方法。
前記再パッケージ化された更新パッケージが前記1または複数の識別されたノードに送信されるようにした後、アクティブ化メッセージが前記1または複数の識別されたノードに送信されるようにして、前記再パッケージ化された更新パッケージに含まれる前記1または複数の更新アイテムを適用することによって、前記ユーティリティノードソフトウェアおよび/または前記ユーティリティノードファームウェアを更新するように前記1または複数の識別されたノードに指示するステップをさらに備えたことを特徴とする請求項8に記載の方法。
前記1または複数の識別されたユーティリティノードを更新することに関連する情報を識別するステップであって、前記情報は、前記1もしくは複数の識別されたユーティリティノード上に現在インストールされている前記ユーティリティノードソフトウェアおよび/もしくは前記ユーティリティノードファームウェアのバージョン、前記1もしくは複数の識別されたユーティリティノードのデバイスタイプ、または前記1もしくは複数の識別されたユーティリティノードが更新されることになる前記ソフトウェアおよび/またはファームウェアの最終バージョンのうちの少なくとも1つを識別する、ステップをさらに備え、
前記更新パッケージは、前記1または複数の識別されたユーティリティノードを更新することに関連する前記情報に少なくとも部分的に基づいて、再パッケージ化される
ことを特徴とする請求項8に記載の方法。
【発明を実施するための形態】
【0005】
上記に論じられたように、スマートユーティリティメータ、制御デバイス、センサなどのユーティリティノードデバイスに関するソフトウェアおよび/またはファームウェアを更新するための現在の技術は、複雑で時間がかかる。
【0006】
この開示は、一部では、異なるタイプのソフトウェア/ファームウェアに関連する更新アイテムを含む更新パッケージを利用することによって、ユーティリティノードデバイスに関するソフトウェア/ファームウェアを更新するための技術を説明する。特定の実装形態では、ユーティリティノードデバイスは、更新パッケージを受信し、デバイス上に現在インストールされているソフトウェア/ファームウェアのタイプに基づいて、複数の更新アイテムのうちの1または複数を選択的にインストールしてもよい。異なるタイプのソフトウェア/ファームウェアは、ソフトウェア/ファームウェアの異なるバージョン(たとえば、バージョン1および2)、ならびに/または異なるタイプのハードウェア(たとえば、ユーティリティノードのメインメモリ、通信ハードウェアなど)に関連してもよい。たとえば、ドライバのバージョン3に関連する更新パッケージの一部をインストールすることによって、ドライバのバージョン3にアップグレードしつつ、ドライバのバージョン2を含むユーティリティノードデバイスは、ドライバのバージョン1に関連する更新パッケージの別の部分を無視してもよい。別の例では、ユーティリティノードは、オペレーティングシステムに関連する更新パッケージの一部をインストールすることによって、メインメモリに記憶されたオペレーティングシステムを更新しつつ、メインメモリの外部に記憶されたモデムモジュールに関連する更新パッケージの別の部分を無視してもよい。一部の例では、これによって、異なるデバイスが異なるタイプのソフトウェア/ファームウェアで動作している場合などに、単一の更新パッケージが、異なる更新または更新の一部を必要とすることがある複数の異なるデバイスに、たとえば、ブロードキャストされ、または提供されることを可能にする。
【0007】
一部の実施形態では、更新パッケージの複数の更新アイテムは、異なるタイプのソフトウェア/ファームウェア間の差を含む差分ファイル(delta file)を備えてもよい。たとえば、バージョン1〜3を含むドライバに対する更新パッケージは、バージョン1とバージョン2との間の差を含む差分ファイル、ならびにバージョン2とバージョン3との間の差を含む別の差分ファイルを含んでもよい。これによって、更新アイテムがソフトウェア/ファームウェアのバージョン全体より小さいと仮定して、ユーティリティノードデバイスが更新を比較的迅速にインストールすることを可能にする。さらに、比較的小さい差分ファイルによって、更新パッケージが時間的に効率的な方法で無線接続を介して送信されることを可能にする。
【0008】
この開示はまた、一部では、マルチシステムセット構成を利用することによって、ユーティリティノードデバイスのシステムセットを更新するための技術を説明する。特定の実装形態では、ユーティリティノードデバイスは、概して「アクティブ」状態(たとえば稼動状態)で動作する1つのシステムセットを有する複数のシステムセットを含んでもよい。複数のシステムセットは、概して「アクティブ」システムセットとして動作するように構成された第1のシステムセットと、第1のシステムセットがアクティブまたは稼動状態にあるときにアイドル状態(たとえば非稼動)にある1または複数の「アイドル」システムセットとを含んでもよい。一例では、1または複数のアイドルシステムセットは、第1のシステムセットがアクティブであるときにアイドルであるが、第1のシステムセットが非稼動またはアイドル状態であるときにアクティブにされるように構成される、第2のシステムセットを含んでもよい。複数のシステムセットはまた、概してアイドルであるが、第1のシステムセットおよび第2のシステムセットが非稼動であるときにアクティブにされるように構成される、第3のシステムセット(たとえば「フェイルセーフ」システムセット)を含んでもよい。一部の例では、第3のシステムセットは、修正されないままの(たとえば変更不能な)工場でインストール(factory installed)されたセットを含んでもよい。他の実施形態では、追加のシステムセットが使用されてもよい。システムセットは、カーネルおよびルートファイルシステムを含むオペレーティングシステムを備えてもよい。
【0009】
ユーティリティノードデバイス上のシステムセットの更新の間、アイドルシステムセットが、より新しいバージョンのシステムセットで更新されてよく、一方で、アクティブシステムセットが稼動状態のままであってもよい(たとえば、通常のユーティリティノード機能を実行する)。アイドルシステムセットは、指定されたバージョンに到達(たとえば、最新のバージョンのシステムセット)まで、バージョンごとに更新されてもよい。一部の例では、アイドルシステムセットは、異なるバージョンのシステムセットの間の差を含む差分ファイルから更新される。アイドルシステムセットを更新し、アクティブシステムセットをその現在の状態のままにすることによって、ユーティリティノードデバイスは、更新プロセスの間、デバイスの動作を維持することができる(たとえば、計測データを収集することを継続し、ネットワークトラフィックを中継することを継続するなど)。
【0010】
アイドルシステムセットが更新された後、ユーティリティノードデバイスは、アイドルシステムセットを有効にし、1または複数のシステムチェックを実行して、新たにアクティブにされたシステムセット(前はアイドルシステムセット)が適切に動作しているかどうかを判定してもよい。新たにアクティブにされたシステムセットが適切に動作していない場合には、ユーティリティノードデバイスは、前にアクティブにされたシステムセットに戻ってよい。その後、アクティブシステムセットが適切に動作しない場合、ユーティリティノードデバイスは、フェイルセーフシステムセットを有効にしてもよい。複数のシステムセットを利用することによって、ユーティリティノードデバイスは、システムセットの1または複数が非稼動になる場合でさえも、デバイスの動作を維持することができる。
【0011】
本明細書で使用されるとき、「システムセット」は、概して、ユーティリティノードを動作させるためのソフトウェア、ファームウェア、および/またはデータを含んでもよい。システムセットは、(i)ユーティリティノードのハードウェアリソースを管理するカーネル、ならびに/または(ii)ユーティリティノード機能性およびデータストレージ(たとえば、アプリケーション、ライブラリ、スクリプト、データベースデータなど)を実行するファイルなどの、ユーティリティノードを動作させるためのデータを含むルートファイルシステムを含む、オペレーティングシステムを備えてもよい。
【0012】
本明細書では、更新技術は、スマートユーティリティメータ、センサ、制御デバイス、トランス、スイッチ、または中継機など種々のコンピューティングデバイスのいずれかとして実装されるユーティリティノードデバイスのコンテキストで説明される。概して、ユーティリティノードデバイスは、ノードがノードからノードへと情報を中継する「メッシュ」ネットワーク、ノードが指定されたノードに情報を送信する「スター」ネットワーク、ノードが、経路をたどるモバイルもしくはハンドヘルド読取りデバイスによって収集されることになる情報をブロードキャストもしくは「バブルアップ(bubble up)」して、メータを読み取る「モバイル」もしくは「ハンドヘルド」ネットワーク、および/または他のネットワークなどの、通信ネットワークにおいて構成される。本明細書では、更新技術は、ユーティリティネットワークにおいて構成されるユーティリティノードデバイスのコンテキストで論じられるが、これらの技術は、代替的または追加的に、他のタイプのコンピューティングデバイスおよび/またはネットワークに適用可能であってもよい。
【0013】
この簡潔な導入は、読者の便宜のために提供され、特許請求の範囲や一連の節を限定することを意図されない。さらに、下記に詳細に説明される技術は、いくつかの方法およびいくつかのコンテキストにおいて実装されてよい。1つの例示的な実装形態およびコンテキストが、より詳細に下記に説明されるように以下の図面を参照して提供される。しかしながら、以下の実装形態およびコンテキストは多くのうちの1つにすぎないことは理解されたい。
【0014】
<例示的なアーキテクチャ>
図1は、ソフトウェア/またファームウェア更新技術が実装されてもよい例示的なアーキテクチャ100を示す。アーキテクチャ100は、複数のノード102A、102B、102C、102D、…102N(総称して、ノード102)を含み、それぞれが、それぞれのノードのソフトウェア/ファームウェア(たとえば、オペレーティングシステム、システムセットなど)を更新するように構成される。一例では、ノード102のソフトウェア/ファームウェアは、更新パッケージを受信し、異なるタイプのソフトウェア/ファームウェアに関連するパッケージの個別更新アイテムを適用することによって更新されてもよい。たとえば、更新パッケージがシステムセットに対する更新アイテムを含むとき、ノード102は、以下にさらに詳細に論じられるように、更新アイテムをアイドルシステムセットに適用してもよい。
【0015】
概して、更新パッケージは、ノード102の任意のタイプのソフトウェア/ファームウェアを更新するための更新アイテムを含んでもよい。たとえば、パッケージは、低レベルの起動バイナリデータ(たとえばUブート(u-boot))、中レベルのカーネルデータ、高レベルのオペレーティングシステムデータ(カーネルデータおよびルートファイルシステムデータを含んでもよい)、外部デバイス(たとえば、モノシリックデータ)、モジュール、アプリケーション、およびデバイスドライバに対するバイナリデータなどを更新するためのアイテムを含んでもよい。
【0016】
図1に示されるように、ノード102は、より大きなユーティリティ通信ネットワークの一部であってもよい自律ルーティングエリア(ARA)などのユーティリティノードネットワーク104を形成してもよい。ユーティリティノードネットワーク104は、たとえば、広域ネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、ローカルエリアネットワーク(LAN)、近隣エリアネットワーク(NAN)、またはパーソナルエリアネットワーク(PAN)などを含んでもよい。ノード102は、直接通信経路(たとえば無線接続)を介して互いに通信可能に結合されてもよい。各直接通信経路は、ノードがデータを送信および/または受信することが可能な複数のチャネルを表してもよい。複数のチャネルの各々は、複数のチャネルの他の周波数範囲と同一のまたは異なってもよい周波数範囲によって定義されてもよい。一部の例では、複数のチャネルは、無線周波数(RF)チャネルを含んでもよい。
【0017】
ノード102の各々は、種々のコンピューティングデバイス、たとえば、スマートユーティリティメータ(たとえば、電気、ガス、および/もしくは水量メータ)、制御デバイス、センサ(たとえば、温度センサ、測候所、周波数センサなど)、トランス、ルータ、サーバ、中継機(たとえばセルラ中継機)、スイッチ、バルブ、上記の組み合わせ、または、通信ネットワークに結合可能であり、データを送信および/もしくは受信することが可能な任意のデバイスなどのいずれかとして実装されてもよい。一部の事例では、ノード102は、異なるタイプのノード(たとえば、スマートメータ、セルラ中継機、センサなど)、異なる世代またはモデルのノード、ならびに/または、異なるチャネル上で送信し、かつ異なる変調技術、データレート、プロトコル、信号強度、および/もしくは電力レベルを使用することが可能なノードを含んでもよい。これらの事例では、アーキテクチャ100は、ノードの異種ネットワークを表してもよい。
【0018】
図1の例では、ノード102は、インターネットなどのバックホールネットワーク110を介して、ヘッドエンドサービス106および/またはパッケージ作成サービス108と通信するように構成される。ノード102は、バックホールネットワーク110へのユーティリティノードネットワーク104の接続ポイントとしての役割を果たすエッジデバイス(たとえば、セルラ中継機、セルラルータ、エッジルータ、DODAGルートなど)を介して、ヘッドエンドサービス106と通信してもよい。一部の例では、ユーティリティノードネットワーク104は、ノード102がデータ収集装置と直接通信する「固定」または「スターネットワーク」として、または、ノード102がエッジデバイスと直接または1もしくは複数の介在(intervening)上流デバイスを介して通信する「メッシュネットワーク」として構成されてもよい。
図1のアーキテクチャは、スターネットワークまたはメッシュネットワークを総称的に表してもよい。
【0019】
パッケージ作成サービス108は、ソフトウェア/ファームウェアをアップグレードするためのノード102で使用されるべき更新パッケージ112を作成してもよい。一部の例では、サービス108はヘッドエンドサービス106に関連付けられるが、他の例では、サービス108はサードパーティを含んでもよい。パッケージ112は、ノード102上にすでにインストールされたソフトウェア/ファームウェアをアップグレードするため、および/またはノード102に新たなソフトウェア/ファームウェアを追加するための1または複数の更新アイテムを含んでもよい。一部の例では、更新アイテムは、ユーティリティノードソフトウェア/ファームウェアの1または複数のバージョンを更新するように構成される。例として、パッケージ112は、ユーティリティノードのオペレーティングシステムをバージョン2からバージョン3にアップグレードするための更新アイテム(たとえばファイルイメージ)、およびオペレーティングシステムをバージョン3からバージョン4にアップグレードするための別の更新アイテムを含んでもよい。
【0020】
一部の例では、更新パッケージ112の更新アイテムは、連続したバージョンのソフトウェア/ファームウェアなどの、異なるバージョンのソフトウェア/ファームウェアの間の差を含む差分ファイルを備えてもよい。ここでは、特定のバージョンのソフトウェア/ファームウェアは、更新アイテムによって表されてもよい。差分ファイルは、フルバージョンのソフトウェア/ファームウェアと比較してサイズが比較的小さくてもよい。例示として、オペレーティングシステムのバージョン3が、新たなモジュールを含むが、オペレーティングシステムのバージョン2と同一である場合、更新パッケージ112は、新たなモジュールのみを含む差分ファイルを含んでもよい。異なるバージョンのソフトウェア/ファームウェアをパッケージ112に含め、および/またはパッケージ112内で、差分ファイルで異なるバージョンを表すことによって、ノード102は、複数のモノリシック更新パッケージを利用した前の更新プロセスと比較して、比較的小さい量のデータで更新されてもよい。さらに、一部の例では、ノード102は、適用/インストールする更新アイテムを判定するためのロジックで構成されてもよいので、同一の更新パッケージが、異なるように構成された複数のノードにブロードキャストまたは提供されてもよい。
【0021】
パッケージ作成サービス108はまた、更新パッケージ112のコンテンツを記述するパッケージ記述データ(PDD:package description data)114を生成してもよい。PDD114は、データ114が新たにリリースされたソフトウェア/ファームウェア(たとえば、ソフトウェア/ファームウェアの新たなバージョン)に関連付けられていることを示す「リリースマニフェスト(release manifest)」と称されてもよい。PDD114は、ヘッドエンドサービス106および/またはノード102が、更新パッケージ112のコンテンツを識別すること、およびインストール/適用する更新アイテムを判定することなどを支援するために利用されてもよい。例として、PDD114は、以下を含んでもよい。
− 更新アイテムが適用されることになるソフトウェア、ファームウェア、および/またはハードウェアリソースを識別する情報。この情報は、置き換えられることになるファイルの名前または他の識別する情報を含んでもよい。
− 更新アイテムが適用されてもよいデバイスのタイプを識別する情報。たとえば、パッケージ112が、多相ノード上にドライバをインストールするための更新アイテム、および単相ノード上の同一のドライバをインストールするための別の更新アイテムを含む場合、PDD114は、どの更新アイテムがどのタイプのノードに適用可能であるかを示してもよい。デバイスのタイプは、概して、デバイスのハードウェア、ソフトウェア、および/またはファームウェア機能性に基づいてよい。たとえば、デバイスのタイプは、デバイスが、スマートメータ、セルラ中継機、ルータ、センサ、および多相または単相デバイスなどであるかによって判定されてもよい。一例では、デバイスのタイプは、ソフトウェア/ファームウェア内のデバイスの認識された「クラス」に基づいている。
− 更新アイテムのタイプを識別する情報。たとえば、PDD114は、特定の更新アイテムがドライバをバージョン2からバージョン3へ更新するために利用されてもよいことを示してもよい。別の例では、PDD114は、更新アイテムが、特定のハードウェア対象タイプ(たとえば、メインメモリ、モデムなど)に関連するソフトウェア/ファームウェアを更新することに関連することを示してもよい。
− 別の更新アイテムが適用される前に適用されるべき必須要件(prerequisite)更新アイテムを識別する情報。たとえば、PDD114は、別の関連するドライバがインストールされる前に、特定のドライバがインストールされる必要があることを示してもよい。特定のドライバがインストールされていない場合、ノードは、関連するドライバのインストールに進む前に、特定のドライバをインストールすることを要求されてもよい。別の例では、PDD114は、ドライバをインストールする前に、ノードが必要とするオペレーティングシステムの特定のバージョンを示してもよい。
− 1または複数の更新アイテムを適用するために満たされることになる検証基準。たとえば、検証基準は、ユーティリティノードに関連付けられたハードウェア/ファームウェア/ソフトウェアのバージョンをチェックすること、更新されることになるハードウェア/ファームウェア/ソフトウェアがユーティリティノード上に存在するかをチェックすること、イメージシステムリソース(たとえば、ディスクスペース、バッテリ状態など)を検査すること、ユーティリティノード上の既存の機能性構成を検査すること(たとえば、特定の機能性が有効にされたかを検査すること)、および消費データ値を検査すること、などを含んでもよい。検証基準は、ハッシュ値などの検証データを含んでもよい。
− 更新アイテムを識別する一意の更新アイテム識別子。
− 更新アイテムが適用されることになるハードウェア範囲を識別する情報。たとえば、情報は、拡張されているメモリに1つの更新アイテムが適用可能であり、その拡張されていない状態にあるメモリに別の更新アイテムが適用可能であることを示してもよい。これによって、拡張されたメモリを有するユーティリティノードおよび拡張されたメモリを有しないユーティリティノードに使用されることになる2つの更新アイテムを含む単一の更新パッケージが可能になる。
− インストール経路を識別する情報。インストール経路は、どの更新アイテムがインストールされる必要があるか、および/またはどの順序でインストールされる必要があるかを示してもよい。
【0022】
図1に示されるように、更新パッケージ112および/またはPDD114は、ヘッドエンドサービス106に送信されて、ユーティリティノードネットワーク104のノード102に配布されてもよい。一部の例では、更新パッケージ112およびPDD114は、パッケージ112を効率的に利用することができるように共に維持される。
【0023】
ヘッドエンドサービス106は、配布用に更新パッケージ112を作成し、および/または更新パッケージがノード102に配布されるための処理を実行してもよい。一部の例では、ヘッドエンドサービス106は、ユーティリティの中央局を表してもよく、および/またはユーティリティの中央局に関連付けられてもよい。追加的または代替的に、サービス106は、ノード102から受信されたデータの処理、分析、記憶、および/または管理を実行する、集中化されたメータデータ管理システムを含んでもよい。
【0024】
ヘッドエンドデバイス106は、パッケージ112を再パッケージ化して再パッケージ化されたパッケージ118を形成するように構成された、サーバ、パーソナルコンピュータ、ラップトップコンピュータなどの、1または複数のコンピューティングデバイス116を含んでもよい。再パッケージ化されたパッケージ118は、ノード102の特定のグループを更新することに適用可能なパッケージ112の更新アイテムを選択することによって作成されてもよい。たとえば、ノード102A〜102Cがオペレーティングシステムのバージョン3に更新されるよう識別され、ノード102A〜102Cがバージョン1および2をすでに含んでいる場合、サービス106は、オペレーティングシステムをバージョン2からバージョン3へ更新するための更新アイテムを選択し、オペレーティングシステムをバージョン1からバージョン2へ更新するための更新アイテムを除外してもよい。
【0025】
図1に示されるように、ヘッドエンドサービス106はまた、更新パッケージ112および/または再パッケージ化されたパッケージ118を配置するためのインタフェース122を提供するインタフェースデバイス120を含んでもよい。インタフェース122はインタフェース120によって提供されるものとして示されているが、一部の例では、インタフェース122の機能性の全部または一部が、デバイス116によって提供されてもよい。インタフェース122は、更新されることになるノード102の1もしくは複数、更新されることになるノード102の1もしくは複数のタイプ(たとえば、電気メータ、水量メータ、ガスメータ、ゲートウェイデバイスなど)、ノード102の1もしくは複数上で更新されることになるソフトウェア/ファームウェア、および/またはノード102を更新することに関連する他の情報を、ユーザ124が選択することを可能にしてもよい。例示的なインタフェース122のさらなる詳細は、
図7を参照して以下で説明される。
【0026】
インタフェース122または別個の処理を通じて、更新するユーティリティノードネットワーク104のノードを識別した後、サービス106は、再パッケージ化されたパッケージ118および/またはパッケージ112を、識別されたノードに配布してもよい。一例では、サービス106は、再パッケージ化されたパッケージ118および/またはパッケージ112を、ノード102の1または複数に配布するためにネットワーク110のエッジデバイスに送信する。
図1の例では、再パッケージ化されたパッケージ118が配布されるものとして示されているが、他の例では、パッケージ112が再パッケージ化されることなく配布されてもよい。
【0027】
図1の例は、単一の場所におけるヘッドエンドサービス106を示しているが、一部の例では、サービス106は複数の場所の間で分散されてもよく、および/または完全に除去されてもよい(たとえば、高度に非集中化された分散コンピューティングプラットフォームの場合)。
【0028】
ノード102Aは、ユーティリティノードネットワーク104のノード102の1または複数を表してもよい。上述したように、ノード102Aは、そのソフトウェア/ファームウェア(たとえばシステムセットなど)を更新するように構成されてもよい。
図1の例では、ノード102Aは、再パッケージ化されたパッケージ118およびPDD114を、ヘッドエンドサービス106から直接的に、または1もしくは複数の上流ノード(たとえば、サービス106により近いノード)を通じてヘッドエンドサービス106から間接的に受信する。一部の例では、パッケージ118および/またはPDD114は、たとえば、ネットワーク104の輻輳、および/またはネットワーク104の送信容量/要件に基づいて、ユーティリティノードネットワーク104上の複数の送信を通じて受信される。いずれにせよ、再パッケージ化されたパッケージ118およびPDD114は、アクティブ化メッセージが受信され、または別のイベントが発生するまで、ノード102Aに記憶されてもよい。
【0029】
再パッケージ化されたパッケージ118がソフトウェア/ファームウェアを更新するためにノード102Aでアクティブ化されるとき、ノード102Aは、ノード102Aに適用するためのパッケージ118の1または複数の更新アイテムを判定してもよい。たとえば、ノード102Aは、ノード102A上にインストールされたソフトウェア/ファームウェアの現在のバージョン、およびソフトウェア/ファームウェアを現在のバージョンからより新しいバージョンへ更新することに適用可能な更新アイテムを識別してもよい。次いで、ノード102Aは、ソフトウェア/ファームウェアの特定のバージョンに達するまで、バージョンごとに1または複数の判定された更新アイテムを適用/インストールしてもよい。上述したように、一部の例では、更新アイテムは、ソフトウェア/ファームウェアのバージョンの間の差を含む差分ファイルを備えてよい。
【0030】
一部の実施形態では、パッケージ118は、ノード102Aのシステムセット126を更新することに関連する1または複数の更新アイテムを含んでもよい。ここでは、アクティブシステムセットが稼動したままの間(たとえば、通常の動作を実行)、ノード102Aが、1または複数の更新アイテムをアイドルシステムセットに適用/インストールしてもよい。
図1に示されるように、システムセットの差分ファイルなどの更新アイテム128が、アイドルシステムセットに適用され、アクティブシステムセットおよびフェイルセーフシステムセットが変更されないようにしてもよい。これらの更新技術のさらなる詳細は以下で説明される。
【0031】
<例示的なヘッドエンドサービス>
図2は、
図1におけるヘッドエンドサービス106の例示的なデバイス116のさらなる詳細を示す概略図である。1または複数のデバイス116は、1または複数のプロセッサ202、メモリ204、および1または複数のネットワークインタフェース206を備えてもよい。メモリ204は、1または複数のプロセッサ202に通信可能に結合されてよく、1または複数のモジュールとして構成されるソフトウェア機能性を含んでもよい。
【0032】
本明細書で使用されるように、用語「モジュール」は、説明を目的にソフトウェアの例示的な分割を表すことを意図され、任意のタイプの要件、要求される方法、方式、または必要な編成を表すことも意図されない。したがって、種々の「モジュール」が説明されるが、それらの機能性および/または類似の機能性は、異なるように構成されてもよい(たとえば、より少数のモジュールに組み合わされ、より多数のモジュールに分けられるなど)。さらに、本明細書では、いくつかの機能およびモジュールが、プロセッサ上で実行可能なソフトウェアおよび/またはファームウェアによって実装されるものとして説明されているが、他の実施形態では、モジュールのいずれかまたは全部が、説明された機能を実行するようにハードウェアによって(たとえば、ASIC、専用プロセシングユニットなどとして)全体的または部分的に実装されてもよい。
【0033】
図2に示されるように、メモリ204は、更新パッケージを再パッケージ化するように構成された再パッケージ化モジュール208を含む。たとえば、モジュール208は、パッケージ記述データを利用して、ノードの特定のグループをアップグレードすることに適用可能な更新パッケージの更新アイテムを識別してもよい。次いで、識別された更新アイテムは、再パッケージ化されたパッケージに含まれてもよい。一部の例では、パッケージ記述データは、再パッケージ化されたパッケージに含まれた更新アイテムに基づいて修正されてもよい。
【0034】
メモリ204はまた、ノード102において更新をスケジューリングし、ノード102にアクティブ化メッセージを送信するように構成されたパッケージアクティブ化モジュール210を含んでもよい。モジュール210によって、更新パッケージがノード102に送信された後の数時間、数日、または数週間などの特定の時間で、ヘッドエンドサービス106がノード102において更新パッケージをアクティブ化することが可能になる。更新パッケージをアクティブ化するために、モジュール210は、アクティブ化メッセージが特定のノードまたはノードのグループに送信されるようにして、すでに受信されている更新パッケージの更新アイテムを適用することによってソフトウェア/ファームウェアを更新するように特定のノードまたはノードのグループに指示してもよい。
【0035】
さらに、メモリ204は、ノード102の1または複数と通信するための通信モジュール212を含んでもよい。一部の例では、モジュール212は、メッセージを送信し、および/またはバックホールネットワーク110を介してユーティリティノードネットワーク104のエッジデバイスからメッセージを受信してもよい。
【0036】
図2に示されるように、メモリ204はまた、1または複数の更新パッケージ(たとえば、パッケージ作成サービス108から受信されたパッケージ)を記憶するためのパッケージデータストア214を含んでもよい。一部の例では、更新パッケージは単一のコンテンツとして記憶されるが、他の例では、更新パッケージは、別々に記憶される個々の更新アイテムとして構文解析(parsed)/抽出される。一例では、個々に記憶された更新アイテムは、再パッケージ化されて(たとえば、インタフェース122の使用を通じて)、ノード102へ配布するための更新パッケージを形成してもよい。メモリ204はまた、1または複数の再パッケージ化されたパッケージを記憶するための再パッケージ化パッケージデータストア216を記憶してもよい。
【0037】
<例示的なユーティリティノードデバイス>
図3は、
図1における例示的なノード102Aのさらなる詳細を示す概略図である。上述したように、ノード102Aは、例100におけるノード102の各々を表す。ノード102Aは、無線機302およびプロセシングユニット304を含んでもよい。無線機302は、複数のチャネル/周波数の1または複数を介してRF信号を送信および/または受信するように構成されたRF送受信機を備えてよい。無線機302はまた、複数の異なる変調技術、データレート、プロトコル、信号強度、および/または電力レベルを使用して通信をするように構成されてもよい。
図3の例では、無線機は、RFフロントエンド308とベースバンドプロセッサ310とに結合されたアンテナ306を含む。RFフロントエンド308は、送信および/または受信機能を提供してもよい。RFフロントエンド308は、アンテナによって提供され、およびノード102の1または複数から取得される信号を、同調および/または減衰させるなどの機能性を提供する高周波アナログおよび/またはハードウェアコンポーネントを含んでもよい。RFフロントエンド308は、信号をベースバンドプロセッサ310に提供してもよい。
【0038】
一例では、ベースバンドプロセッサ310の全部または一部が、ソフトウェア(SW)定義無線機(software defined radio)として構成されてもよい。一実装形態では、ベースバンドプロセッサ301は、周波数および/またはチャネル選択機能性を無線機302に提供する。たとえば、SW定義無線機は、プロセッサもしくは特定用途向き集積回路(ASIC)または他の組み込まれたコンピューティングデバイスにより実行されるソフトウェアで実装された、ミキサ、フィルタ、増幅器、変調器および/または復調器、検出器などを含んでもよい。SW定義無線機は、プロセッサ312、およびメモリ314で定義および/または記憶されたソフトウェアを利用してもよい。あるいは、無線機302は、少なくとも部分的にアナログコンポーネントを使用して実装されてもよい。
【0039】
プロセシングユニット304は、メモリ314に通信可能に結合された1または複数のプロセッサ312を含んでもよい。メモリ314は、
図8を参照して以下でさらに詳細に説明される、アクティブシステムセット、アイドルシステムセット、およびフェイルセーフシステムセットを含むシステムセット126を記憶するように構成されてもよい。メモリ314はまた、更新モジュール316、計測モジュール318、およびパッケージデータストア320を記憶してもよい。一部の例では、更新モジュール316および/または計測モジュール318は、システムセット126の1または複数の一部である。
【0040】
更新モジュール316は、ノード102Aのソフトウェア/ファームウェアを更新するように構成されてもよい。この機能性を実装するために、更新モジュール316は、アイテム識別モジュール322、検証モジュール324、および転送モジュール326を含んでもよい。アイテム識別モジュール322は、更新パッケージを処理して、ノード102A上のソフトウェア/ファームウェアを更新することに適用可能な更新パッケージの1または複数の更新アイテムを識別(たとえば判定)してもよい。1または複数のアイテムは、更新パッケージのコンテンツ、ノード102A上にインストールされたソフトウェア/ファームウェアの特定のバージョン、ノード102Aのタイプ、および/または他の情報を記述するパッケージ記述データに基づいて識別されてもよい。たとえば、ノード102Aがドライバのバージョン1を含み、およびドライバがバージョン3に更新されることになる場合、モジュール322は、バージョン2および3に関連する更新パッケージの更新アイテムを識別してもよい。代わりに、ノード102Aがドライバのバージョン1をまだインストールしていない場合、バージョン1〜3が更新の間に適用されるものと識別されてもよい。
【0041】
検証モジュール324は、1または複数の更新アイテムを更新することに関連する1または複数の条件を検証するように構成されてもよい。たとえば、モジュール324は、1または複数の検証チェックを実行して、ノード102Aのデバイスタイプが特定の更新アイテムのデバイスタイプと一致することをチェックし、必須要件更新アイテムがノード102Aに適用されていることをチェックし、ノード102Aが二次電源(たとえばバッテリ)上で動作していないことをチェックし、またはノード102Aの他の機能、データ、もしくは構成をチェックしてもよい。
【0042】
1または複数の検証チェックを実行すると、検証モジュール324は、1または複数のチェックに準拠したレベルを判定し、準拠のレベルに基づいて更新を進めてもよい。たとえば、準拠のレベルが比較的低い(たとえば、チェックの半分が満たされない)場合、モジュール324は、更新が実行されることを防止してもよい。準拠のレベルが比較的高い(たとえば、チェックの半分以上が満たされる)場合、モジュール324は更新を進めてもよい。一例では、準拠のレベルは、レベル1:第1の閾値数より少ない検証チェックが失敗し(更新アイテムの適用を継続する)、レベル2:第1の閾値数より多いが第2の閾値数より少ない検証チェックが失敗し(次の更新アイテムに移り、現在の更新アイテムを適用しない)、レベル3:第2の閾値数より多い検証チェックが失敗する(更新プロセス全体を停止する)、ことを含む3つのレベルの重大度の1つを含む。一部の例では、PDD114は、どのように準拠のレベルが判定されるかを指定し、および/または1または複数の更新アイテムの適用を進めるのに必要とされる適合のレベルを指定してもよい。1または複数の検証チェックを実行することによって、モジュール324は、ノード102A上にすでにインストールされたソフトウェア/ファームウェアのバージョンに関連する更新アイテムなどの、適用可能でない更新アイテムを適用/インストールすることを回避してもよい。
【0043】
転送モジュール326は、更新アイテムをノード102Aに転送するための異なるプロセスを実行するように構成されてもよい。転送プロセスは、更新アイテムのタイプ(たとえば、更新アイテムが適用可能なソフトウェア/ファームウェアのタイプ)に基づいてもよい。一部の例では、ノード102A上の異なるタイプの更新アイテムを適用/インストールするための異なるプロセスが存在してもよい。したがって、転送モジュール326は、そのようなプロセスを実行するように構成されてもよい。例示として、モジュール326は、ノード102Aのドライバに関連する更新アイテムをインストールするための第1のセットの技術を利用してよく、また、ノード102Aのシステムセットに関連する更新アイテムをインストールするための第2のセットの技術を利用してもよい。
【0044】
更新アイテムがノード102Aのシステムセットに関連するときの例において、更新モジュール316は、アイドルシステムセット(たとえば、「アイドル」または「非稼動」状態にあるシステムセット)に更新アイテムを適用/インストールしてもよい。アイドルシステムセットは、アクティブシステムセットが通常動作を維持している(たとえば、消費データを収集し、他のノードと通信するなど)ときに更新されてもよい。アイドルシステムセットが更新された後、モジュール316によって、アイドルシステムセットがノード102Aの動作を引き継ぎ、「アクティブ」システムセットになることが可能になる。次いで、1または複数のシステムチェックが実行されて、前のアイドルシステムセット(今はアクティブである)が適切に動作しているかどうかを判定してもよい。アイドルシステムセットが適切に動作していない場合には、ユーティリティノードデバイスは前のアクティブシステムセットに戻ってよい。その後、アクティブシステムセットが適切に動作しない場合、ユーティリティノードによって、フェイルセーフシステムセットがノード102Aの動作を引き継ぐことが可能になる。そうすることにより、ノード102Aは、1または複数のシステムセットが失敗するときの例であっても、動作を維持することができる。
【0045】
計測モジュール318は、1または複数のリソース(たとえば、電気、水、天然ガスなど)の消費データを収集するように構成されてもよい。消費データは、たとえば、電気消費データ、水消費データ、および/または天然ガス消費データを含んでもよい。消費データは、ノード102A、別のノード(たとえば、ノード102B、102Cなど)、またはこれらの組み合わせにおいて生成されたデータを含んでもよい。収集された消費データは、スターネットワークの場合、データ収集装置に送信されてもよく、または、メッシュネットワークの場合、ヘッドエンドサービス106もしくは別の宛先への最終的伝搬のために1もしくは複数の他のノード102に送信されてもよい。一部の例では、ノード102Aのソフトウェア/ファームウェアが更新されている間、消費データがノード102Aにおいて収集される。
【0046】
メモリ314(ならびにメモリ204および本明細書に説明されるすべての他のメモリ)は、コンピュータ可読媒体を含んでよく、ランダムアクセスメモリ(RAM)などの揮発性メモリ、および/またはリードオンリメモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリの形式をとってもよい。コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはコンピューティングデバイスの1または複数のプロセッサによって実行される他のデータなどの情報の記憶のために任意の方法または技術で実装された揮発性および不揮発性の着脱可能および着脱不能な媒体を含む。コンピュータ可読媒体の例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスクROM(CD−ROM)、デジタル多用途ディスク(DVD)、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、またはコンピューティングデバイスによるアクセスのために情報を記憶するように使用することができる任意の他の非伝送媒体を含むが、これらに限定されない。本明細書で定義される場合、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの通信媒体を含まない。
【0047】
<例示的なプロセス>
図4〜
図6は、本明細書に説明される技術を採用するための例示的なプロセス400、500、および600を示す。例示を簡単にするため、プロセス400、500、および600は、
図1のアーキテクチャ100で実行されるものとして説明される。たとえば、プロセス400の個々の動作の1または複数は、ヘッドエンドサービス106(たとえばデバイス116)によって実行されてもよく、プロセス500および600はノード102Aによって実行されてもよい。しかしながら、プロセス400、500、および600は、他のアーキテクチャにおいて、および/または他のデバイスを使用して実行されてもよい。さらに、アーキテクチャ100は他のプロセスを実行するために使用されてもよい。
【0048】
プロセス400、500、および600(ならびに本明細書に説明される各プロセス)は、論理フローグラフとして示され、それらの各動作は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実装することができる一連の動作を表す。ソフトウェアのコンテキストでは、動作は、1または複数のプロセッサによって実行されたときに記載された動作を実行する1または複数のコンピュータ可読記憶媒体に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。動作が説明される順序は、限定として解釈されることを意図されず、任意の数の説明される動作が、プロセスを実装するために任意の順序および/または並列に組み合わされてもよい。さらに、任意の数の個々の動作が省略されてもよい。
【0049】
図4は、更新パッケージを再パッケージ化し、更新パッケージまたは再パッケージ化されたパッケージがユーティリティノードに送信されるようにするための例示的なプロセス400を示す。
【0050】
402で、ヘッドエンドサービス106は、パッケージ作成サービス108から更新パッケージ112を受信してもよい(たとえば取得してもよい)。更新パッケージ112は、異なるタイプのユーティリティノードソフトウェア/ファームウェアを更新するための複数の更新アイテムを含んでもよい。一部の例では、複数の更新アイテムが、ユーティリティノードソフトウェア/ファームウェアの2以上のバージョンの間の差をそれぞれが含む差分ファイルを備える。402で、パッケージ記述データ(PDD)114がまた、パッケージ112と共にまたは別個に受信されてもよい。
【0051】
404で、ヘッドエンドサービス106は、更新する1もしくは複数のユーティリティノード、および/または1もしくは複数のユーティリティノードを更新することに関連する情報を識別してもよい。情報は、1もしくは複数のユーティリティノード上に現在インストールされているユーティリティノードソフトウェアおよび/もしくはファームウェアのバージョン、1もしくは複数のユーティリティノードのデバイスタイプ、1もしくは複数のユーティリティノードのハードウェア、ならびに/または1もしくは複数のユーティリティノードが更新されることになるユーティリティノードソフトウェア/ファームウェアの最終バージョン(end-version)を含んでもよい。一部の例では、インタフェース122は、1もしくは複数のユーティリティノードをユーザが選択することを可能にし、および/または1もしくは複数のユーティリティノードを更新することに関連する情報をユーザが提供することを可能にするために、ユーザに表示されてもよい。
【0052】
406で、ヘッドエンドサービス106は、更新パッケージ112を再パッケージ化して、再パッケージ化されたパッケージ118を形成してもよい。パッケージ118は、デバイス上にすでにインストールされたソフトウェア/ファームウェアのバージョンに適用可能な、および/またはデバイスのハードウェアに適用可能な1または複数の更新アイテムなどの、1または複数の識別されたユーティリティノードを更新することに適用可能な1または複数の更新アイテムを含んでもよい。再パッケージ化は、PDD114、および/または1もしくは複数の識別されたユーティリティノードを更新することに関連する404で受信された情報(たとえば、ノード上にインストールされた現在のバージョン、デバイスタイプ、ハードウェア、最終バージョンなど)に基づいてもよい。例示として、特定のタイプのユーティリティノード(たとえば、多相、単相など)が更新されるように選択されている場合、サービス106は、PDD114を参照して、特定のタイプのユーティリティノードに対して設計された更新アイテムを識別してもよい。識別された更新アイテムは、再パッケージ化されたパッケージ118に含まれてもよい。一部の例では、PDD114は、再パッケージ化されたパッケージ118に含まれた更新アイテムに基づいて修正されてもよい。動作406はプロセス400に含まれるものとして示されているが、一部の例では、動作406は省略されてもよい。
【0053】
408で、ヘッドエンドサービス106によって、再パッケージ化されたパッケージ118および/または更新パッケージ112が404で識別された1または複数のノードに送信されるようにしてもよい。パッケージ112および/または118は、PDD114と共に送信されて、ノードがパッケージ112および/または118のコンテンツを識別することを可能にしてもよい。パッケージ112および/または118は、ユーティリティノードネットワークの接続ポイントの役割をするエッジ(たとえば、セルラ中継機、セルラルータ、エッジルータ、DODAGルートなど)を通じて、1または複数のノードに送信されてもよい。
図4の例で示されるように、パッケージ118、パッケージ112、および/またはPDD114は、ノード102Aに送信されてもよい。
【0054】
410で、ヘッドエンドサービス106は、パッケージ112および/または118を受信した1または複数のノードがユーティリティノードソフトウェア/ファームウェアを更新するようにさせてもよい。ここで、サービス106は、パッケージ112および/または118に含まれる1または複数の更新アイテムを適用/インストールすることによって、ユーティリティノードソフトウェア/ファームウェアを更新するように1または複数のノードに指示する、アクティブ化メッセージを1または複数のノードに送信してもよい。
【0055】
図5は、ユーティリティノードデバイスのソフトウェア/ファームウェアを更新するための例示的なプロセス500を示す。502で、ノード102Aは、ヘッドエンドサービス106から、更新パッケージ112および/または再パッケージ化されたパッケージ118を受信(たとえば取得)してもよい。パッケージ112および/または118は、PDD114と共に受信されてもよい。パッケージ112および/または118は、異なるタイプのユーティリティノードソフトウェア/ファームウェアを更新するための複数の更新アイテム(たとえば、ファームウェア/ソフトウェア更新データ)を含んでもよい。更新アイテムは、連続した(sequential)バージョンなどのユーティリティノードソフトウェア/ファームウェアの2以上のバージョンの間の差を含む差分ファイルを備えてもよい。
【0056】
504で、ノード102Aは、ヘッドエンドサービス106からアクティブ化メッセージ412を受信してもよい。メッセージ412は、サービス106から直接、および/またはネットワークの1もしくは複数の他の上流ノードを介して受信されてもよい。メッセージ114は、パッケージ112および/または118をアクティブ化するように、すなわち、パッケージ112および/または118の1または複数の更新アイテムを適用/インストールすることによってユーティリティノードソフトウェア/ファームウェアを更新するように、ノード102Aに指示してもよい。
【0057】
506で、ノード102Aは、システムセット、オペレーティングシステム、モジュール、およびドライバなどのデータなどのノード102Aのデータをアーカイブしてもよい。たとえば、ノード102Aは、アクティブシステムセットのイメージを記憶してよく、それにより、ユーティリティノードソフトウェア/ファームウェアを更新しているときにエラーが発生した場合に、ノード102Aがこのシステムセットに戻ることができる。追加的または代替的に、ノード102Aは、複数のシステムセットに共通するバックアップデータを記憶してもよい。データは、ノード102Aに関連付けられたデータストア508に記憶されてもよい。
【0058】
510で、ノード102Aは、ノード102上に適用/インストールするための、パッケージ112および/または118に含まれる複数の更新アイテムの1または複数を識別してもよい。識別は、ノード102A上に現在インストールされているユーティリティノードソフトウェア/ファームウェアのバージョンに基づいてもよい。すなわち、ノード102Aは、どの更新アイテムがユーティリティノードソフトウェア/ファームウェアの現在のバージョンを更新することに適用可能であるかを識別してもよい。代替的または追加的に、識別は、ノード102Aのハードウェアのタイプ、またはノード102Aに関連付けられたハードウェアのタイプに基づいてもよい。一例では、ノード102Aは、PDD114を参照して、ユーティリティノードソフトウェア/ファームウェアを更新することに適用可能な更新アイテムを識別してもよい。
図5に示されるように、ノード102Aは、ノード102A上に適用されることになる1または複数の更新アイテム512を識別している。
【0059】
514で、ノード102Aは、1または複数の検証チェック516を実行して、1または複数の更新アイテム512がノード102Aに適用されてもよいことを検査してもよい。1または複数の検証チェック516は、ノード102Aのデバイスタイプが、適用されることになる更新アイテムのデバイスタイプと一致することをチェックすること、必須要件更新アイテムがノード102Aに適用されていることをチェックすること、ノード102Aが二次電源(たとえばバッテリ)で動作していないことをチェックすること、またはノード102Aの任意の他の機能、データ、もしくは構成をチェックすることを含んでもよい。1または複数の検証チェック516に基づいて、ノード102Aは、1または複数の検証チェック516での準拠のレベルを決定してもよい。たとえば、1または複数の検証チェック516の閾値数が満たされる場合、準拠のレベルを比較的高くすることができ、閾値数が満たされない場合、準拠のレベルを比較的低くすることができる。
【0060】
518で、ノード102Aは、1または複数の更新アイテム512をノード102Aに適用/インストールしてもよい。これによって、1または複数の更新アイテム512に関連付けられたソフトウェア/ファームウェアが、たとえば、ソフトウェア/ファームウェアのより新たなバージョンへ更新されることが可能になる。一部の例では、ノード102Aは、適用されることになると識別されなかったパッケージ112および/または118の他の更新アイテムを適用/インストールすることを抑制(refrain)してもよい。さらに、一部の例では、1または複数の検証チェック516の準拠のレベルが特定の閾値より高い場合、1または複数の更新アイテムのみが適用されてもよい。たとえば、1または複数の更新アイテム512の更新アイテムがノード102Aに対するシステムセット更新に関連しているとき、プロセス500は、以下で詳細に論じられるプロセス600に進んでもよい。
【0061】
一部の例では、518で更新アイテムがノード102Aに適用されているとき、特定の転送プロセスが、更新アイテムに関連付けられたノード102A上のソフトウェア/ファームウェアを更新するために使用されてもよい。すなわち、特定の転送プロセスは、更新アイテムがどのようにノード102Aに実際に転送されるかを説明してもよい。特定のプロセスは、たとえば、第三者が特定の方式でソフトウェア/ファームウェアを更新することが可能となるように、第三者によって構成されてもよい。
【0062】
図6は、マルチシステムセット構成を利用することによって、ユーティリティノードデバイスのシステムセットを更新するための例示的なプロセス600を示す。一部の例では、プロセス600はプロセス500の動作518で実行されてもよく、他の例では、プロセス600はプロセス500と独立して実行されてもよい。上述したように、一例では、更新アイテムがシステムセットイメージを含む場合など、ノード102A上に適用/インストールされることになる更新アイテムが、システムセット更新に関連しているときに、プロセス600が実行されてもよい。
【0063】
上述したように、ノード102Aは、ノード102Aの動作を維持するための異なるシステムセットを含んでもよい。概して、任意の所与の時間で、単一のシステムセットのみが動作中(たとえば「アクティブ」)であってもよい。異なるシステムセットは、概して「アクティブ」システムセットとして動作するように構成された第1のシステムセット、第1のシステムセットが非稼動または「アイドル」状態であるときに動作するように構成された第2のシステムセット(たとえば「アイドル」システムセット)、ならびに第1のシステムセットおよび第2のシステムセットが非稼動であるときに動作するように構成された第3のシステムセット(たとえば「フェイルセーフ」システムセット)を含んでもよい。一部の例では、第3のシステムセットは、ノード102A上で修正されないままの工場インストールされた(factory installed)セットを含んでもよい。したがって、第3のシステムセットは、第1のシステムセットおよび第2のシステムセットが適切に動作していない場合に、ノード102Aが動作することを可能にする永続的なシステムセットであってもよい。システムセットは概して、カーネルおよびルートファイルシステムを含んでもよい。
【0064】
602で、ノード102Aは、ノード102Aのシステムセットを更新する準備をしてもよい。たとえば、ノード102Aは、システムセットに関連する更新アイテムによって更新されるようにアイドルシステムセットを準備してもよい。これは、アイドルシステムセットを空(clear out)にすること、および/またはアクティブシステムセットをアイドルシステムセットにコピーすることを含んでもよい。そうすることにより、アイドルシステムセットバージョンより新しいバージョンとすることができるアクティブシステムセットの現在のバージョンで、アイドルシステムセットが更新されてもよい。
【0065】
604で、ノード102Aは、更新パッケージの少なくとも一部をアイドルシステムセットに適用/インストールすることによって、ノード102Aのアイドルシステムセットを更新してもよい。アクティブシステムセットがノード102Aの動作を管理している(たとえば、通常の処理を実行している)ときに、アイドルシステムセットが更新されてもよい。異なるシステムセットバージョンに関連する更新アイテムを更新パッケージが含むときの例では、アイドルシステムセットの現在のバージョンに適用可能な1または複数の更新アイテムを適用することによって、アイドルシステムセットが更新されてもよい。例示として、アイドルシステムセット(たとえば、アクティブシステムセットからアイドルシステムセット内にコピーされたセット)がバージョン2を含み、更新パッケージがシステムセットのバージョン1〜3を含む場合は、バージョン3に対する更新アイテムが、アイドルシステムセットに適用されてもよい。更新アイテムは、順次的な方式で、バージョンごとに適用されてもよい(たとえば、より早期のバージョンから開始し、最新のバージョンに移行する)。一部の例では、更新アイテムは、システムセットバージョンの間の差をそれぞれが含む差分ファイルを備える。
【0066】
606で、ノード102Aによって、アイドルシステムセットがノード102Aの動作を管理することが可能になる。すなわち、アイドルシステムセットが「アクティブ」状態に設定されてよく、アクティブシステムセットが「アイドル」状態に設定されてもよい。アイドルシステムセットはノード102Aをアイドルシステムセットへ再構成および/または再ブートすることによって有効にされてもよい。
【0067】
608で、ノード102A(前にアイドルのシステムセットで現在動作している(now operating with the previously idle system set))は、前のアイドルシステムセットの動作が、1または複数の稼動基準を満たすかどうかを判定してもよく、たとえば、カーネルおよびオペレーティングシステムファイルが互換性を有し、システムレベルアプリケーションが相互に、および/または外部デバイスと通信することができ、データベースデータが破損していない、要求されるファイルおよび適正なバージョンがインストールされてかつ準拠していることを判定するなどしてもよい。1または複数の稼動基準が満たされるとき、610で、ノード102Aは、更新されたアイドルシステムセットを利用してもよい。すなわち、ノード102Aは、「アクティブ」状態にあるアイドルシステムセットで動作してもよい。代わりに、608で、1または複数の稼動基準が満たされないとき、プロセス600は612に進んでもよい。
【0068】
612で、ノード102Aは、ノード102Aを、前にアクティブなシステムセット(previously active system set)へ再構成および/または再ブートすることによって、前にアクティブなシステムセットを有効にしてもよい。ここで、ノード102Aは、前のシステムセットに「ロールバック」くまたは「戻って」もよい。前のシステムセットに戻る際に、前にアクティブなシステムセットに関連してアーカイブされた任意のデータ(たとえば、
図5の506でアーカイブされたデータ)が復元されてもよい。これは、複数のシステムセットに共通するデータを復元することを含んでもよい。
【0069】
前にアクティブなシステムセットに戻った後、614で、ノード102Aは、アクティブシステムセットの動作が1または複数の稼動基準を満たすかどうかを判定してもよい。1または複数の稼動基準が満たされるとき、616で、ノード102Aは、前にアクティブなシステムセットを利用してもよい。すなわち、ノード102Aは、「アクティブ」状態にある前にアクティブなシステムセットで動作してもよい。あるいは、614で1または複数の稼動基準が満たされないとき、618で、プロセス600は、フェイルセーフシステムセット(たとえば永続的システムセット)を有効にしてもよい。フェイルセーフシステムセットは、ノード102Aが構築または構成された工場でインストールされてもよい。一部の例では、ノード102Aは、前のシステムが612で有効にされたか否か、および/またはフェイルセーフシステムセットが618で有効にされたか否かをヘッドエンドサービス106に報告してもよい。異なるシステムセットを利用することによって、ノード102Aは、1または複数のシステムセットが失敗した場合でも、ノード102Aの動作を維持してもよい。
【0070】
<例示的なユーザインタフェース>
図7は、更新パッケージを1または複数のユーティリティノードに配置するための例示的なユーザインタフェース700を示す。一例では、インタフェース700は、
図1のインタフェース122を表す。したがって、インタフェース700は、ヘッドエンドサービス106に関連付けられたユーザが更新パッケージを配布することを可能にするために使用可能であってもよい。しかしながら、他の実施形態では、インタフェース700は他のユーザに表示されてもよい。インタフェース700は、ウェブ環境、およびクライアントアプリケーションなどのインターネットを通じてアクセスされてもよい。
【0071】
インタフェース700は、近隣、都市などの地図のような、1または複数のユーティリティノードが位置する地理的領域を表示するための、地図領域702を含んでもよい。地図領域702は、ユーザがユーティリティノードを選択することを可能にするために選択可能であってもよい。
図7の例では、地図領域702内の実線は道路を表すが、他の例では、線は、ユーティリティ配管(utility lines)(たとえば、水管、電気/ガス配管など)または他の特徴を表してもよい。
【0072】
示されるように、インタフェース700は、異なるタイプのユーティリティノードを異なるアイコンで表してもよい。たとえば、アイコン704は、データ収集装置に関連付けられてもよく、アイコン706は、水量メータに関連付けられてもよく、アイコン708は、ガスメータに関連付けられてもよく、アイコン710は、電気メータに関連付けられてもよい。インタフェース700は、ユーティリティノードの一般的機能性に基づいてアイコン704〜710を提示するが、インタフェース700は、代替的または追加的に、ユーティリティノードに関連付けられた任意のタイプの情報に基づいてアイコンを提示してもよい。
【0073】
インタフェース700は、ユーティリティネットワークのノードを更新するための異なる情報をユーザが選択することを可能にするためのドロップダウンメニュー712〜716を含んでもよい。ドロップダウンメニュー712を通じて、ユーザは、同一のデバイスタイプ(たとえば、スマートメータ、セルラ中継機、ルータ、センサ、および多相または単相デバイスなど)に関連付けられたノードなどのユーティリティノードのグループを選択してもよい。ドロップダウンメニュー714を通じて、ユーザは、ユーティリティノード上で更新されることになるソフトウェア/ファームウェアを選択してもよく、ドロップダウンメニュー716を通じて、ユーザは、ユーティリティノードが更新されることになる最終バージョンを選択してもよい。一例では、ドロップダウンメニュー716によって、ユーザがソフトウェア/ファームウェアの最新の利用可能なバージョンを選択することが可能になる。インタフェース700はまた、たとえば、ドロップダウンメニュー712〜716で情報を提供した後に、更新プロセスを開始するためのボタン718を含んでもよい。
【0074】
インタフェース700の一例では、マップ領域702が、ユーティリティネットワークのユーティリティノードを表す複数のアイコンを表示してもよい。ユーザがインタフェース700と対話するとき、インタフェース700は、更新するための1または複数のユーティリティノードを識別するユーザからの選択を受信してもよい。たとえば、ユーザは、領域720(たとえば、点線の長方形で囲まれた領域)内に位置するアイコンを選択してもよい。次いで、インタフェース700、または
図1のデバイス120および/もしくは116などのインタフェース700に関連付けられたデバイスが、アイコンに関連付けられた1または複数のユーティリティノードを識別してもよい。ユーザはまた、更新を構成するためにドロップダウンメニュー712〜716を通じて情報を提供してもよい。たとえば、ドロップダウンメニュー716を通じて、ユーザは、領域720に関連付けられたユーティリティノードが更新されることになるソフトウェア/ファームウェアの最終バージョンを選択してもよい。その後、ユーザは、ボタン718を選択することによって更新を開始してもよい。入力情報に基づいて、インタフェース700に関連付けられたバックエンド機能性が、識別されたユーティリティノードを選択された最終バージョンへ更新することに適用可能な更新アイテムを選択してもよい。
【0075】
<ユーティリティノードの例示的なメモリ構造>
図8は、ユーティリティノードの例示的なメモリ構造800を示す。特に、メモリ構造800は、異なるタイプのデータを記憶する複数のパーティションを含む。たとえば、メモリ構造800は、システムセット802のカーネルのためのパーティション、システムセット802のルートファイルシステムのためのパーティション、システムセット804のカーネルのためのパーティション、システムセット804のルートファイルシステムのためのパーティション、フェイルシステムセット806のカーネルおよびルートファイルシステムのためのパーティション、ジャーナル808のためのパーティション、ならびに共通データ810のためのパーティションを含む。ジャーナルパーティション808は、どのシステムセットがユーティリティノードを動作させることになるかを示すためのデータを含んでもよい。すなわち、システムセット802〜806のいずれかが「アクティブ」状態で動作し、およびシステムセット802〜806のいずれかが「アイドル」状態で動作していることになるかである。共通パーティション810は、システムセット802〜806にわたって共有されるデータを含んでもよい。システムセットパーティション802および804は修正されてもよいのに対し、フェイルセーフシステムセットパーティション806は、修正されるように設計されていない永続的システムセットであってもよい。
【0076】
メモリ構造800の使用の一例では、システムセットパーティション802は「アクティブ」状態にあってよく、これは、システムセットパーティション802がユーティリティノードを動作させるために使用されていることを意味する。一方で、システムセットパーティション804およびフェイルセーフシステムセットパーティション806は、「アイドル」状態(たとえば非アクティブ)であってもよい。この構成では、システムセットへの更新が要求されたとき、システムセットパーティション802がユーティリティノードの動作を維持しながら、システムセット804が更新されてもよい。更新の後、システムセットパーティション804は、ユーティリティノードの動作を引き継ぐことが可能にされてもよく、システムセットパーティション802は、「アイドル」状態に設定されてもよい。システムセットパーティション804が非稼動である場合、システムセットパーティション802が再アクティブ化されてもよい。その後、システムセットパーティション802が非稼動である場合、フェイルセーフシステムセットパーティション806がアクティブ化されてもよい。
【0077】
一部の例では、フェイルセーフシステムセットパーティション806は、任意のタイプのエラーがユーティリティノード上で発生したときにアクティブ化されるように構成されてもよい。たとえば、フェイルセーフシステムセットパーティション806は、データがシステムセットパーティション802および804で破損したとき(たとえば、ウィルスまたは他の有害なデータの場合において)、システムセットパーティション802および804がブートすることができないとき、データベースデータまたは他のファイルが破損したとき、ハードウェア通信が失敗したとき、ファイルが紛失しているとき、システムセット構成が1または複数の基準を満たさないときなどに、有効にされてもよい。そのように、フェイルセーフシステムセットパーティション806は、概して、システムセットパーティション802および804で何らかの問題が発生した場合に、第2のバックアップとして動作してもよい。
【0078】
<結論>
構造的特徴および/または方法論的動作に特有の言葉で実施形態が説明されているが、本開示が説明された特有の特徴または動作に必ずしも限定されないことは理解されよう。むしろ、特有の特徴および動作は、実施形態を実装する例示的な形態として本明細書で開示される。