JP2004534973A - ネットワークデバイスのアップグレードシステム及び方法 - Google Patents

ネットワークデバイスのアップグレードシステム及び方法 Download PDF

Info

Publication number
JP2004534973A
JP2004534973A JP2001577157A JP2001577157A JP2004534973A JP 2004534973 A JP2004534973 A JP 2004534973A JP 2001577157 A JP2001577157 A JP 2001577157A JP 2001577157 A JP2001577157 A JP 2001577157A JP 2004534973 A JP2004534973 A JP 2004534973A
Authority
JP
Japan
Prior art keywords
upgrade
agent
deployed device
server
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001577157A
Other languages
English (en)
Inventor
マイケル オブリーン、
フレデリック バトル、
ピーター グレイヴストック、
スティーヴン ロコス、
アラン ピックレル、
Original Assignee
ゴー アヘッド ソフトウェア インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ゴー アヘッド ソフトウェア インコーポレイテッド filed Critical ゴー アヘッド ソフトウェア インコーポレイテッド
Publication of JP2004534973A publication Critical patent/JP2004534973A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0866Checking the configuration
    • H04L41/0869Validating the configuration within one network element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

配備されるネットワークデバイス(4、6、8、10、12、14、16)をアップグレードするシステム(図1)。これらのデバイスは、アップグレードプログラムを実行するサーバ(22)を識別し、このサーバと通信することのできるインストールされたエージェントによって使用可能になる。適切な条件が満たされた場合、サーバはアップグレードをエージェントにダウンロードし、エージェントはこのアップグレードを展開されるデバイスにインストールする。デバイスは、アップグレードが利用可能であるか否かを確認するためにサーバにポーリングすることができるようになっており、あるいは、サーバがデバイスを探し出してデバイスの状態を照会し、適切な所定の条件が満たされた場合にアップグレードをデバイスにダウンロードすることができる。

Description

【0001】
【発明の属する技術分野】
本発明は展開されるコンピューティングシステムの分野に関し、より詳細にはこれらのシステムのアップグレードに関する。
【0002】
本願には、出願日2000年4月4日の仮出願番号60/197,125に基づいた権利が与えられている。
【0003】
【発明が解決しようとする課題及び課題を解決するための手段】
ネットワークデバイスの製造者及びオペレータは、これらのデバイス、特に遠隔に位置するデバイスを自動的にアップグレードする包括的な解決法を必要としている。これらのアップグレードは、新しい機能、信頼性の向上、性能の向上、更新されたアプリケーション、更新されたアプリケーションデータ、セキュリティのパッチ、及びバグ修正を、展開されるデバイスに提供する。本発明は、遠隔デバイスを手動でアップグレードするというエンドカスタマの負担を取り除き、費用のかかるサポート訪問や製品の回収にかかる製造者の経費を低減する。本発明は、製造者のサポートコストを下げ、信頼性、より向上した管理容易性、及び所有にかかるコストの削減に対してますます高まるカスタマの期待に応えることにより、展開されるデバイスの製造者に、他に負けない強力な利点を提供する。本発明は、ターゲットデバイスに組み込まれるデバイス固有エージェントの構成に用いられる開発環境、アップグレードの生成及び発行を行うサーバコンピュータ、及び固有のエージェントソフトウェアそのもの、といった3つの部分から構成される。
【0004】
本発明はアップグレードにデバイス開始アプローチを取り入れているため、サーバによって開始されるアップグレードにより生じる多くの欠点が取り除かれる。
【0005】
本発明によってサーバを無状態にすることができる。無状態サーバは、展開されるデバイスとのこれまでの対話を記録する必要がない。従って、サーバは、アップグレードされたデバイスや、そのデバイスがアップグレードされた時期の検出及び追跡を行う必要がない。これは、デバイスが要求を行うため、不要な通信又は記録されていない通信を取り除くネットワークファイアウォールに関しては問題はない、ということも意味する。アップグレードが中断された場合、展開されるデバイスはアップグレード要求を再度行い、中断が生じたところから続ける。
【0006】
ターゲットデバイスのセットに対してアップグレードを利用可能にするために、デバイスの製造者はアップグレードモジュールを作成する。アップグレードモジュールは、アップグレードイメージと、認証及びデータ検証に使用される機密保護鍵からなる。また、アップグレードモジュールは、アップグレードの配布を管理するように製造者が定義するポリシーを含む。本開示内容の全体にわたり、製造者という用語は、遠隔でアップグレードすることのできる展開されるデバイスの製造を望む者を意味するように用いられる。アップグレード原則は、どのデバイスがアップグレードの受信を認可されているかを制御する。これらの原則は、ホスト名、スケジュール、又は所望のロールアウト速度など、特定の基準に基づいたものでありうる。例えば、これらの原則を製造者のサポート原則と併せて使用し、アップグレードを望むエンドカスタマのみにアップグレードを提供することができる。
【0007】
アップグレード処理は安全で信頼性が高く、再始動可能である。この処理は、業界規格のTCP/IP及びHTTPプロトコルを用いる。デバイスは、展開されるデバイスに予めプログラムされている、特別に指定されたURL、ポート、及び機密保護鍵を用いて、アップグレードサーバに要求を始める。サーバは、機密保護鍵を検証し、サーバにある有効なアップグレードモジュールとこの要求を照合し、アップグレードモジュールに関して定義された原則を用いて要求を有効にすることにより、この要求を処理する。要求が有効になった場合、サーバは、有効なアップグレードが利用可能であることをデバイスに通知する。デバイスは次にダウンロードを開始し、イメージの保全性を検証し、NISTデジタル署名規格(DSS)を用いてソースを認証する。ダウンロードが順調に行われた後、デバイスは、Java(R)Script又は実行可能プロセスによって定義されるデバイス固有メカニズムを用いて適宜アップグレードを実施し、肯定応答をサーバに送信する。
【0008】
エージェントの生成及びパッケージ化のために、ソフトウェアは機密保護鍵の生成を始める。これらの鍵はサーバに転送され、アップグレードの発行処理に用いられる。次にエージェント自体が生成され、デバイス内に展開される。エージェントは、アップグレードコンポーネント、公開鍵、構成情報、及び任意の組込Java(R)Scriptファイルを含む。アップグレードコンポーネントは、例えばプリンタドライバのような、ターゲットデバイスのアップグレード可能なエンティティを表し、そのエンティティのアップグレード構成を定義する。エージェントは展開されるデバイスの各々に含まれ、デバイスが新しいアップグレードを自動的に見出してこれをダウンロードすることを可能にする。標準ファイル転送手順を用いた、これらのファイルのターゲットデバイスへの移動により、エージェントを構成するファイルを展開させる。オペレーティングシステムが任意の態様で提供するファイル又はバイナリの実行により、展開が完了する。通常、デバイス起動の際にこれらのファイルを実行するが、スケジューラ又は手動要求によって展開させることもできる。次に、組込エージェントを用いるデバイスに対して利用可能となるアップグレードモジュールを生成する。そして、モジュールをサーバ上に発行する。展開されるデバイスからの要求が生じると、サーバはアップグレードをデバイスに転送する。そして、組込デバイスエージェントはこのアップグレードを実施する。
【0009】
アップグレードに使用されるサーバはウェブサーバに類似しており、同じ態様で展開される。サーバは、展開されるデバイスからHTTPベースのアップグレード要求を受信し、TCP/IPネットワークによってこれらのデバイスにアクセスすることができるようになる。インターネット、イントラネット、VPN(バーチャルプライベートネットワーク)、又はダイヤルアップ接続によって接続することができる。
【0010】
展開されるデバイスにおいてJava(R)Scriptの組込サブセットを使用することにより、ファイルのサイズを最小にすることができる。使用される組込Java(R)Scriptの関数は、算術演算子、論理演算子、大域関数、局所変数及び大域変数、並びに「if」、「else」、「for」、及び「return」キーワードを含む。サポートされていない組込Java(R)Script関数は、浮動小数点の数、アレイ、オブジェクト、及び関数宣言である。組込Java(R)Scriptサブセットは、一般的なスクリプト機能と、組込Java(R)Script関数の呼出を計算量の多いC関数に結びつけるメカニズムとを提供する。あらゆるスクリプト言語と同様に、主な利点の1つは、展開が速く容易であり、サイクルコンパイル及びリンクが不要なことにある。欠点としては、スクリプトはソースの形で展開されるためにプライバシーが欠如していることと、近年の発達によりコードの実行はより速くなってはいるが、コンパイルされたコードよりも実行が遅いこと、が挙げられる。使用される組込Java(R)Scriptサブセットは、実行するエージェントが作動する間はアクティブである大域変数を有する。従って、これは、スクリプトの寿命よりも長く存在する。「C」言語で書かれたアプリケーションは、これらの変数を宣言し、設定することができる。次に、これらの変数は、エンジンによって評価される任意のスクリプトによってアクセス可能となる。これにより、データを1つのスクリプトから他のスクリプトに渡すことができる。組込Java(R)Scriptサブセットは「C」関数を宣言することができ、次いでこれらの関数を、エンジンによって解釈することのできる任意の組込Java(R)Scriptサブセットによって使用することができる。このことは、Java(R)Script言語に関連する通常のセキュリティを侵害するが、これにより、展開されるデバイスで実行するアプリケーションは、コンパイルされた「C」の全ての利点を備える任意の動作を定義し、実行することができる。また、この結合メカニズムにより、アプリケーションは「loadModule」などの関数を拡張することもできる。これらの関数の多くは、パスされるパラメータの数に基づいた異なる実行をもたらすように多重定義されている。使用される組込Java(R)Scriptはタイプが規定されていない言語であるため、パラメータの数は、生じるべき動作を決定する唯一の基準である。アップグレード処理を実施するために、多数の関数が、アップグレードエージェントと共に含まれるJava(R)Scriptインタプリタに追加されている。アップグレードエージェント又はサーバによって使用される任意のJava(R)Scriptファイルを用いて、これらの関数を使用することができる。全てのJava(R)Script変数は、ストリングとして記憶される。従って、これらの関数は全て、ストリング値をスクリプトに戻す。用いられる「C」関数を、Java(R)Scriptサブセット又は実行される処理によって呼び出すことができる。これらの関数により、開発者は、アップグレードエージェントの構成能力及び機能性を高めることができる。Java(R)Scriptサブセットは、callFunction Java(R)Script APIの使用により、又は後述するようなaddJsFuncを用いた新しいJava(R)Script APIへの関数の結合により、「C」関数のロード及び呼出を行うことができる。下記の関数の多くは、文字「g」で始まる標準のシステムAPIである。一般に、アップグレードエージェントのインメモリファイルシステム機能が使用されていない場合、これらのAPIは標準のシステム呼出に変換される。インメモリファイルシステムが使用されている場合、これらのシステムはインメモリの同等の関数に変換され、この関数において、「g」は「im」に置き換えられ、標準名の最初の文字が大文字にされる。
【0011】
本発明は、ネットワークサーバをポーリングする機能をネットワークコンピュータ環境において展開されるデバイスに追加し、このデバイスに対してアップグレードが利用可能か否かを判断することにより、展開されるデバイスをアップグレードするシステム及び方法を記載している。サーバにおいて展開されるデバイスに適したアップグレードが見出された場合、そのアップグレードがダウンロードされ、インストールされる。また、この方法は、アップグレードが適切なサーバからのものであり、更新自体が送信中に変更されていないことを認証し、確認する必要性も考慮している。展開されるデバイスには、多数の異なるソフトウェアコンポーネントをインストールすることができる。サーバは、変化を要するコンポーネントのみをアップグレードすることができる。他の特性のなかでも、名、バージョン、アップグレードを提供するサーバのホスト名、アップデートを提供するサーバに要求を行うためのポートナンバー、ポーリングスケジュール、再試行期間、及び行われる再試行の試みの数により、展開されるデバイスに存在するコンポーネントを識別することができる。また、ネットワークサーバは、なかでも、どのアップグレードをどのデバイスにインストールするかを決定するためにサーバによって守られるべき多数の原則を含むこともできる。展開されるデバイスがサーバをポーリングするのではなく、展開されるデバイスに対してアップグレードを押し進める際も、展開されるデバイスにアップグレードを提供する当該方法を用いることができる。展開されるデバイスは、サーバを用いて自身を登録することができ、適切な条件が満たされた場合、サーバは適切でありうるあらゆる全てのダウンロードを時宜を得て開始する。
【0012】
本発明の他の目的及び他の利点は、添付の図面を参照し、下記の詳細な説明を読むにつれて明らかになるであろう。
【0013】
【発明の実施の形態】
構造及び動作
本発明は、製造者が遠隔デバイスを簡潔かつ安全にアップグレードすることのできるソフトウェアの組である。これは、標準ウェブプロトコルであるHTTP1.1を用いるクライアント/サーバモデルを使用する。
【0014】
図1に示されるように、本発明は、標準のウェブブラウザからインターネット20及びサーバファイアウォール18を介して要求を受信する標準のウェブサーバ22と全く同じように動作する。このサーバを、中央サイトに配置されるウェブサーバと考え、インストールされたデバイスエージェント2をブラウザとして考えてみる。時折、ウェブブラウザはウェブサーバからデータを要求し、ウェブサーバは要求されたデータをブラウザに送り返すことによってこれに応答する。同様に、エージェントはスケジュールされた時間にサーバからデータを要求し、サーバは要求されたデータを送り返すことによってこれに応答する。展開されるデバイスとしては、モニタ4、他のサーバ6、プリンタ8、コピー機10、携帯電話12、PDA14、又はコンパクトPCIを用いたシステムもしくはあらゆる他の相互接続システム16、といった多数の物が挙げられる。
【0015】
本質的に、サーバは、アップグレードが発行される中央に配置されたサーバであり、エージェントは、デバイスに組み込まれ、アップグレードの際にサーバをポーリングし、アップグレードが利用可能である際にアップグレードを要求するソフトウェアコンポーネントである。本発明はアップグレードにデバイス開始アプローチを用いており、このアプローチはサーバ開始アプローチに比べて多くの利点を有する。これらの利点は、下記を含む。
【0016】
1.サーバはシンプルで無状態である。サーバは複雑な構成を必要とせず、移動したりネットワークに時折しか接続されない可能性のある複数の遠隔エージェントを検出して追跡する必要がない。
2.アップグレードはファイアウォールを通過することができる。
3.アップグレードは、中断した場合でも再始動できる。エージェントは各アップグレードにおける更新箇所を追跡し、中断後は更新が中断された箇所から続ける。
4.サーバは、ウェブサーバが同時接続された多くのブラウザをサポートするのと同じようにして、多数のデバイスをサポートすることができる。
【0017】
複製やロード平衡のような標準の技術を用いて、この解決法を、何百万のデバイスをサポートするように拡張させることができる。
【0018】
アップグレードモジュール発行及びポーリング
サーバとエージェントとの間の通信は、発行/ポーリングモデルに基づいている。このモデルを、本発明の各コンポーネントの果たす役割と併せて後述する。
【0019】
他の実施の形態では、サーバはエージェントのURLアドレスを用いてエージェントと接触し、アップグレードをエージェントに「押し進める」ことができる。
【0020】
エージェントは、デバイス上で連続的に作動する小さなソフトウェアである。その主な機能は、アップグレード情報のためにサーバをポーリングすることと、アップグレードが利用可能である場合にアップグレードを取り込んでデバイスに適用することである。また、エージェントは、アップグレードが、認可されたサーバからのものであり、その内容が送信の際に改ざんされなかったことを確実にすることによって、アップグレードを安全に行わなくてはならない。エージェントは、アップグレードモジュールに含まれるデジタル署名によってアップグレードの認証及び確認を行うことにより、これを達成する。
【0021】
エージェントは、多くのアップグレード可能なエンティティをサポートすることができる。例えば、エージェントがプリンタ上で作動している場合、プリンタのTCP/IPスタックと、そのPostScript(R)エンジンをアップグレードすることが必要になりうる。更に、これらのエンティティの各々のアップグレードは、異なるサーバによってもたらされる場合がある。
【0022】
エージェントは、アップグレードコンポーネントの概念を介してこれらの機能を処理する。前述のプリンタの例では、TCP/IPスタックは1つのコンポーネントであり、PostScript(R)エンジンは他のコンポーネントである。アップグレードコンポーネントは、ユーザ構成モジュールにおいて定義されており、エージェントの一部としてパッケージ化されている。アップグレードコンポーネントは、下記の情報を用いて定義される。
・名
・バージョン
・このコンポーネントにアップグレードを提供するサーバのホスト名又はアドレス
・このサーバに要求を行うためのポート番号
・ポーリングスケジュール、再試行期間、及び試みる再試行数
【0023】
アップグレードコンポーネントが定義されると、アップグレードコンポーネントはターゲットデバイスの特定のプラットフォーム用のエージェントと共にパッケージ化される。
【0024】
サーバの主な機能は、システム管理者又は他のサポートスタッフが遠隔のエージェントからのアップグレード要求に応答する一方で新しいアップグレードを発行し、既存のアップグレードの進行を監視できるようにすることである。
【0025】
アップグレードを発行するために、管理者は、実際のアップグレード(アップグレードペイロード)と、構成及び原則の情報とを構成するファイルを指定する。アップグレード原則により、システム管理者は、どのターゲットデバイスが特定のアップグレードを受信するのか又は受信しないのかを指定することでアップグレードロールアウトを制御することができる。そして、ペイロードがこの情報及びデジタル署名と組み合わされて、アップグレードモジュールが生成される。デジタル署名は、サーバを認証してアップグレードデータの保全性を確認するためにエージェントによって使用される。
【0026】
アップグレードモジュールの構成情報の一部は、アップグレードがサポートをするアップグレードコンポーネントである。前述のように、アップグレードコンポーネントはユーザ構成モジュールにおいて定義されており、エージェントアプリケーションの一部としてパッケージ化されている。エージェントは、コンポーネントをサポートする発行されたアップグレードモジュールの有無をサーバにポーリングする。利用可能なものがある場合、エージェントはそれを要求する。他の実施の形態では、サーバはエージェントにアップグレードを「促す」。
【0027】
プリンタの例を使い続けると、ネットワーク上の全てのプリンタのTCP/IPスタックをバージョン6.0からバージョン6.5にアップグレードするタスクがシステム管理者に課されていると仮定する。プリンタは、スタック用のアップグレードコンポーネントでエージェントを実行する。このコンポーネントは「tcpip」という名であり、バージョンは1.0であると仮定する。
【0028】
アップグレードを達成するために、システム管理者はサーバを用いてアップグレードモジュールを生成する。管理者は、「tcpip」コンポーネントのバージョン1.0用であることを示す名と記述をモジュールに与え、(アップグレード後の)このコンポーネントの新バージョンを2.0に設定し、アップグレードペイロードを指定する。また、システム管理者は、アップグレード原則を適用し、IPアドレス、ホスト名、比率(例えば、2つ毎に1つ)、又はスケジュールによってアップグレードのロールアウトを制御してもよい。あるいは、システム管理者は更なる制御のためにJava(R)Script原則を適用してもよい。最後に、システム管理者はモジュールを有効にし、これでモジュールが「発行された」ことになる。
【0029】
次に、プリンタ内のエージェントは、「tcpip」コンポーネントのバージョン1.0に対してアップグレードが利用可能であるか否かを見出すためにサーバにポーリングをする。アップグレードが利用可能であることをエージェントが確認すると、エージェントはアップグレードを要求し、これをプリンタに適用する。アップグレードが完了すると、プリンタはTCP/IPスタックのバージョン6.5を実行し、「tcpip」コンポーネントのバージョンを2.0にする。
【0030】
エージェントの実行
一般的なエージェント実行ステップを以下に列挙する。
【0031】
1.デバイスの起動時に始動させる。
2.upconfig.txtファイルを解析する。
3.セキュリティが有効な場合、セキュリティライブラリをロードする。
4.Java(R)Scriptが有効な場合、Java(R)Scriptライブラリをロードする。
5.開発者の任意のJava(R)Scriptを実行する。
−エージェントの任意の構成のためにconfig.jsを実行する。
−ブロードキャスティングを有効にする場合、bcast.jsを実行し、ブロードキャストパケットの一部として返答を送り、これに対する応答があればそれを読み取る。エージェントによる応答待ち時間は、エージェントのメインプログラム(main.c)において設定される。
−startup.jsを実行し、アップグレード処理にわたり任意のユーザ入力制御を行う。
−エージェントは完全に構成され、アップグレードを処理できる状態にある。
6.全てのコンポーネントに対するアップグレード開始時を計算する。
7.下記のループを実行する。
−次のアップグレード時まで休止する。
−休止状態から出てアップグレードを実行する。
−Java(R)Scriptが有効な場合、アップグレード要求時にreqdata.jsを実行し、チャンクの受信時にprogress.jsを実行する。
−アップグレードペイロードの受信後、アップグレードを適用するために、アップグレードにて受信したアップグレード実行可能物及び/又はupgrade.jsを実行する。
−次の更新時を計算し、それに応じてアップグレードのスケジュールを変更する。
−任意のJava(R)Scriptファイルfinish.jsを実行する。
8.終了
−Java(R)Scriptが有効な場合、exit.jsを実行する。
【0032】
アップグレード処理
ここでは、アップグレード処理に含まれるステップを示す。この処理は、特定のアップグレードコンポーネントに対してアップグレードを行う時期であるとエージェントが判断した場合に開始する。特定のコンポーネントのアップグレードスケジュールは、コンポーネントがユーザ構成モジュールにおいて初めて生成された際に、又はその実行時に定義される。
【0033】
図2は、下記のステップの概略を述べている。
1.エージェントは任意のreqdata.jsを実行し、HTTP要求を起こす。
2.エージェントは要求をサーバに送信する。
3.サーバは応答する。
4.エージェントはアップグレードを取り込む。
5.エージェントはオリジナルファイルを再度作成する。
6.エージェントはセキュリティチェックを行う。
7.エージェントはオリジナルファイルをアーカイブから出す。
8.エージェントはアップグレード実行可能物を実行する。
9.エージェントは任意のupgrade.jsを実行する。
10.エージェントはアップグレードを完了し、サーバに通知する。
11.エージェントは任意のfinish.jsを実行する。
【0034】
1.エージェントはコンポーネントの適切なHTTP要求を起こす。
要求がどのように形成されるかは、upconfig.txtのコンポーネント当たりのserverName、serverPort、及びserverFormパラメータと、エージェントのプロキシ構成パラメータとに依存する。
【0035】
Java(R)Scriptが有効で、任意のJava(R)Scriptファイルreqdata.jsがその生成時にエージェントアプリケーションの一部としてパッケージされている場合、エージェントはJava(R)Scriptを呼び出し、その結果を、コンポーネントの現在のバージョンを含む他の重要な情報と共に要求に追加する。
【0036】
2.エージェントは要求を適切なサーバに送る。
要求が失敗した場合、エージェントは、upconfig.txtのコンポーネント当たりのretryPeriod及びretryAttemptsパラメータに基づいて再試行する。
【0037】
3.サーバは応答する。
応答は、利用可能なアップグレードがないことを示す場合がある。その場合、エージェントは、他のコンポーネントのアップグレードであり得る次のアップグレードの生成がスケジュールされるまで休止する。
【0038】
応答は、アップグレードが利用可能であることを示す場合がある。その場合、サーバは、アップグレードの内容が配置される場所、アップグレードを構成するチャンクの数、検査合計のリストなどを指定する情報をエージェントに送り返す。
【0039】
4.エージェントはアップグレードを取り込む。
エージェントは、1度に1チャンクずつアップグレードを取り込み、各チャンクを適切な検査合計と比較する。ファイルが改ざんされていた場合、エージェントはそれらを再度取り込む。
【0040】
5.エージェントは、オリジナルアーカイブファイルを再度作成する。
エージェントが全てのチャンクを取り込むと、エージェントはそれらを結合してオリジナルアーカイブファイルを再度作成する。
【0041】
6.エージェントはセキュリティチェックを行う。
目録ファイルは常に、受信されたペイロードの一部であり、ペイロードのためのデジタル署名を含む。署名は、ペイロードデータと、ユーザ構成モジュールにおいて生成されサーバにインポートされる秘密鍵及び公開機密保護鍵とに依存している。
【0042】
エージェントは署名を確認し、この署名が有効である場合、アップグレードが適切なサーバから来たものであり、データの改ざんや破損が送信中に生じなかったことが保証される。
【0043】
7.エージェントは、オリジナルの構成ファイルをアーカイブから取り出す。
次に、このファイルをアーカイブから取り出し、オリジナル構成ファイル(アップグレードのペイロード)を生成する。
【0044】
8.エージェントはアップグレード実行可能ファイルを実行する。
アップグレード実行可能ファイルがペイロードに含まれている場合、エージェントはこれを実行する。VxWorks(R)では、ファイルはupgrade.oと呼ばれる必要がある。Windows(R) NTでは、このファイルはupgrade.exeと呼ばれる必要がある。Linux(R)では、このファイルはupgradeと呼ばれる必要がある。エージェントは、実行可能ファイルが首尾よく終了するまではアップグレードを実行しない。
【0045】
9.エージェントは任意のupgrade.jsファイルを実行する。
Java(R)Scriptをエージェントに対して有効にし、upgrade.jsファイルがペイロードに含まれる場合、エージェントはこのファイルを実行する。エージェントは、Java(R)Scriptが首尾よく終了するまではアップグレードを実行しない。
【0046】
注:ステップ8及びステップ9は、アップグレードが適用される態様を制御するように、コンポーネント固有の動作をエージェントに対して行うために使用することのできるメカニズムである。これらの動作は、古いファイルをアップグレードペイロードからの新しいものに置き換えるなど、非常に簡潔であることが多い。しかし、これらの動作は、アップグレードを適用する前にデバイスのユーザから認可を要求するなど、はるかに複雑なものになりうる。
【0047】
10.エージェントはアップグレード処理を完了する。
エージェントは、処理中に生成された一時的なファイルを全て除去し、コンポーネントのバージョンを新しいバージョンに変更し、アップグレードが首尾よく行われたことを示す応答をサーバに送信する。
【0048】
11.エージェントは任意のfinish.jsファイルを実行する。
Java(R)Scriptを有効にし、finish.jsファイルがエージェントのjsディレクトリに存在する場合、エージェントはこのファイルを実行する。finish.jsファイルは、ユーザ構成モジュール内に生成される際にエージェントアプリケーションと共にパッケージされる。
【0049】
優先順位の考慮
エージェントは、CPUの使用に対するインパクトが小さくなるように設計されている。各アップグレード処理は、非常に効率的なコードを使用するほか、多くの小さなセグメントに分割され、CPUのリソースは各々のセグメント間に解放される。このアプローチは、他のタスクが同時に作動している場合に、エージェントがCPUの大部分を使用することを防ぐ。(upconfig.txtファイル内のユーザ構成モジュールによって設定される)chunkPause及び細分性パラメータの設定により、この動作の制御がある程度もたらされる。
【0050】
しかしながら、タスクの一部にはCPUを集中的に用いるものがある。アップグレードペイロードのチャンクが受信されると、エージェントは、これらのチャンクを結合し、ペイロードの目録及び署名を確認し、ペイロードファイルをアーカイブから取り出す。ペイロードが非常に大きい場合、このことにより数秒間でかなりの量のCPUリソースを使用しうる。リソースの占有を避けるため、エージェントは、これらのタスクの間はその実行優先順位を下げる。
【0051】
各オペレーティングシステムによって用いられる優先順位スキームは異なっている。以下では、エージェントが各オペレーティングシステムにおいてその優先順位を設定する態様を説明する。
【0052】
Windows(R) 95/98/NT
Windows(R)は、実行優先順位のクラスの集合を定義している。エージェントは、NORMAL_PRIORITY_CLASS処理として開始されることが期待される。CPUを集中的に用いるタスクの間、エージェントは、IDLE_PRIORITY_CLASS処理として実行するように自身を再設定する。CPUを集中的に用いるタスクが完了すると、エージェントは自身を再設定してNORMAL_PRIORITY_CLASSに戻す。
【0053】
VxWorks(R)
VxWorks(R)タスクは0乃至255の優先レベルで実行し、0が最も好適である。エージェントが実行する優先順位は、エージェントを立ち上げるtaskSpawn呼出において、ユーザにより定義される。CPUを集中的に用いるタスクに達すると、エージェントは、その優先順位を、始動時の優先順位と255の中間になるように設定する。CPUを集中的に用いるタスクが完了すると、エージェントはその優先順位を始動時のレベルに再設定する。
【0054】
LINUX(R)
Linux(R)処理は−20乃至+20の(微細な)優先レベルで実行し、−20が最も好適で0(ゼロ)が普通である。Linux(R)スーパーユーザによって所有される処理のみが、その優先順位をより好適な設定値に調節することができる。従って、エージェントの処理がスーパーユーザによって所有されない限り、優先順位の調節は行われない。追跡ファイルは、優先順位を変更できなかったことを示す。スーパーユーザが所有者である場合、CPUを集中的に用いるタスクに達するとエージェントはその優先順位をレベル10に再設定する。CPUを集中的に用いるタスクが完了すると、エージェントはその優先順位を始動時のレベルに再設定する。
【0055】
Windows(R) CE
Windows(R) CEは、優先順位を個々の実行スレッドとして処理する。前述のWindows(R) 95/98/NTと同様に、エージェントは、CPUを集中的に用いるタスクの実行の際に、その優先順位を更に低いクラスに再設定する。
【0056】
エージェントの構成及び制御
エージェントは、高構造化が可能なソフトウェアコンポーネントである。このセクションでは、エージェントのカスタム構成及び制御を行うために開発者が利用できる種々のメカニズムを説明する。
【0057】
一般に、エージェントはデバイスの起動時に始動し、デバイスの電源がオフにされるまで作動する。エージェントは起動時に構成情報を取得し、その構成によって定義されるようにアップグレードを行う。
【0058】
エージェントには、次の3つの構成情報ソースがある。
・エージェントのローカルファイルシステムに記憶されたupconfig.txtファイル
・エージェントのブロードキャスト要求に対するサーバの応答
・エージェントのローカルファイルシステムに記憶され、及び/又はアップグレードのペイロードの一部としてサーバからダウンロードされた任意の組込Java(R)Scriptファイル
【0059】
エージェントファイルの構造
エージェントの構成及び動作をカスタマイズする態様を十分に理解するためには、開発者はそのファイル構造に精通していなければならない。開発者は、デフォルトファイルが位置する場所や、任意のファイルを配置する必要のある場所を知っていなくてはならない。
【0060】
トップディレクトリ
ファイル構造のトップディレクトリは、下記のファイルを含む。
・デバイスのオペレーティングシステムに既にリンクされていない場合は、エージェントの実行可能なイメージ
・エージェントのデフォルト構成ファイルupconfig.txt
・組込Java(R)Script共用ライブラリ
・DSSセキュリティ共用ライブラリ
【0061】
コンポーネントディレクトリ
コンポーネントディレクトリは、ダウンロードされたファイルを記憶するためにエージェントによって用いられる一時的なディレクトリである。このディレクトリは、各アップグレードの後に空にされる。ペイロードファイルの存続が必要である場合、uprade.jsファイルを用いてこれらのファイルを他のディレクトリに移動させる。
【0062】
jsディレクトリ
エージェントの構成及び動作をカスタマイズするための組込Java(R)Scriptの実施を開発者が望んでいるか否かに応じて、jsディレクトリは、任意のJava(R)Scriptファイルを記憶するために使用される。
【0063】
親ディレクトリは、エージェントの構成及び動作を総括して制御する大域Java(R)Scriptファイルを含んでいる。これらのファイルは、config.js、bcast.js、startup.js、finish.js、及びexit.jsである。
【0064】
エージェントの個々のアップグレードコンポーネントの構成を制御するコンポーネント当たりのJava(R)Scriptファイルを、jsディレクトリの個々のサブディレクトリに記憶する必要がある。サブディレクトリを各コンポーネント毎に生成する必要があり、サブディレクトリはコンポーネントと同じ名をもたなくてはならない。例えば、「tcpip」という名のコンポーネントを構成及び制御するためのJava(R)Scriptファイルは、.../js/tcpip/sub−directoryに配置されなければならない。2つの可能なコンポーネント当たりのJava(R)Scriptファイルには、reqdata.js及びprogress.jsという名をつけなくてはならない。
【0065】
upconfig.txtファイル
エージェントの構成情報の主要ソースは、エージェントのローカルファイルシステムのトップディレクトリに位置するupconfig.txtファイルである。エージェントが起動すると、エージェントはupconfig.txtファイルを解析し、それに応じて構成される。ファイルの内容は、アップグレードコンポーネント及びエージェントアプリケーションの生成の際に、ユーザ構成モジュールにおいて定義される。
【0066】
upconfig.txtファイルは、大域及びコンポーネント当たりといった2種の構成情報を定義する。大域構成パラメータは、全体としてのエージェントアプリケーションに関するものであり、コンポーネント当たりのパラメータは1つのエージェントコンポーネントに関するものである。
【0067】
upconfig.txtファイルは、各構成パラメータの毎にキーワード=値の対からなるプレーンなASCIIテキストファイルであり、各キーワード=値の対はファイルの単一ラインを占めている。キーワードは大文字と小文字を区別したものである。
【0068】
キーワード=値の対の第1のセットは大域パラメータからなり、後続のセットはエージェントのコンポーネントのためのパラメータからなる。
【0069】
upconfig.txtファイルの例
proxyserver=
proxyPort=0
broadcast=80
security=1
javascript=1
randomize=0
chunkPause=10
granularity=1
InMemCapacity=2000000
component=Component1
version=1.0
the serverName=my.the server.com
the serverForm=/goform/upgrade
the serverPort=3057
schedule=9−17**1−5
period=86400
retryPeriod=60
retryAttempts=5
enable=1
component=Component2
version=3.0
the serverName=customer.the server.com
the serverForm=/goform/upgrade
the serverPort=3057
schedule=****
period=2419200
retryPeriod=60
retryAttempts=10
enable=0
【0070】
大域構成
表1は、upconfig.txtの大域構成パラメータを列挙したものである。以下のセクションは、各パラメータに関する更なる情報を提供する。
【0071】
【表1】
Figure 2004534973
【0072】
proxy server
このパラメータは、プロキシサーバのIPアドレスを指定する。サーバは、このエージェントと接続するために作動し続ける。サーバがプロキシサーバを介して作動する場合はフィールドを定義する必要があり、定義をしない場合はパラメータをブランクにすべきである。
【0073】
proxyPort
プロキシサーバが定義される場合、このパラメータはプロキシサーバのポート番号を指定しなくてはならない。プロキシサーバが定義されない場合、このパラメータを0に設定すべきである。
【0074】
broadcast
broadcastパラメータは、エージェントがブロードキャストパケットをサーバに送信するために用いなければならないサーバポートを指定する。このサーバに対してブロードキャスティングを有効にしない場合、パラメータを0に設定しなくてはならない。ブロードキャスティングの更なる情報に関しては、「bcast.js及びbroadcast.jsを介するブロードキャスティング」を参照のこと。
【0075】
security
このパラメータは、このエージェントに対してセキュリティを有効にするか否かを定義する。パラメータを1に設定すると、セキュリティが有効になる。パラメータを0に設定すると、セキュリティが無効になる。
【0076】
javascript
このパラメータは、このエージェントに対してJava(R)Scriptを有効にするか否かを定義する。パラメータを1に設定すると、Java(R)Scriptが有効になる。パラメータを0に設定すると、Java(R)Scriptが無効になる。
【0077】
randomize
このパラメータは、多くのエージェントが全く同時にアップグレードを行うのを防ぐのに有用である。randomizeは、アップグレードの開始時を期間に関連して変更する。また、randomizeは、chunkPauseが有効である場合、アップグレードの際にチャンク間の休止に影響を及ぼす。パラメータを1に設定すると、ランダム化が有効になる。パラメータを0に設定すると、ランダム化が無効になる。
【0078】
注:エージェントを用いる際、エージェントは一般に、割り当てられたタイムウィンドウにおいてランダム時にアップグレードを要求する(「コンポーネント当たりの構成」を参照)。しかしながら、開発者は、エージェントをテストする間はこの機能を無効にしてもよい。
【0079】
chunkPause
エージェントは、アップグレードの各チャンクを受信した後、アップグレード速度及びシステムのロードを制御することができるように特定の時間量の間休止することができる。chunkPauseはその時間量を秒単位で指定し、エージェントは次のチャンクを取り込む前に待機する。chunkPauseを0に設定すると、エージェントはチャンク間で休止しない。chunkPause及びrandomizeの双方を有効にすると、チャンク間の休止は、chunkPauseに対して指定された時間量まで変化する。
【0080】
注:エージェントが初めて(又は再起動後に)始動する際、エージェントはchunkPauseに対して指定された時間量の間待機し、その後で最初のアップグレード要求を行う。
【0081】
granularity
chunkPauseと同様に、granularityは、説明されているこのシステムがデバイスのCPUに課すロードの制御を行えるように意図されたものである。目下実行されているアップグレードがない場合、このパラメータはスケジュールの細分性(granularity)を指定する。例えば、30に設定されている場合、エージェントは30秒間休止し、コンポーネントのアップグレードを要求したり他の事象を進める時であるかを確認する。そのような時でない場合、エージェントは更に30秒間休止し、スケジュールの再確認などを行う。デフォルト値は5秒である。Windows(R) NTのエージェントでは、このgranularityは、エージェントがSystem Trayアイコンを介するユーザ入力を確認する頻度も指定する。granularityが大きすぎると、ユーザがアイコンをマウスでクリックした際のユーザへの応答が非常に遅くなる可能性がある。
【0082】
InMemCapacity
このパラメータは、インメモリファイルシステム用のオペレーティングシステムから割り当てられるバイト単位のメモリ量を指定するのに用いられる。
【0083】
コンポーネント当たりの構成
各エージェントは複数のアップグレードコンポーネントをサポートすることができ、各コンポーネントは別個の構成可能エンティティである。upconfig.txtファイルにおけるコンポーネントの構成パラメータの先頭には、コンポーネントのコンポーネントパラメータがある。コンポーネントパラメータの後に列挙されるパラメータは、新しいコンポーネントパラメータが列挙されるまで、全てそのコンポーネントに関連している。表2は、upconfig.txtファイルのコンポーネント当たりのパラメータを列挙している。以下のセクションは、各パラメータに関する情報を提供する。
【表2】
Figure 2004534973
【0084】
component
componentパラメータは、アップグレードコンポーネントの名を定義する。各コンポーネント名は、固有のストリングでなければならない、即ち、いかなるスペースも含んではならない。例えば、「mycomponent」は許容できるが、「my component」は許容できない。
【0085】
version
versionパラメータは、アップグレードコンポーネントのバージョンを定義する。コンポーネントのバージョンのフォーマットは、x.y.z.bである必要がある(ここで、x、y、z、及びbはバージョンセグメント数である)。バージョン数は、少なくとも1つで4以下のセグメントをもたなくてはならず、各セグメントは、少なくとも1で4以下の桁をもたなくてはならない。セグメントは、ピリオドによって分離されていなくてはならない。
【0086】
コンポーネントのバージョンは、コンポーネントが自身の適切なバージョンを用いてのみアップグレードされることを確実にするために用いられる。アップグレードモジュールがサーバにおいて生成されると、そのモジュールを適用するコンポーネントと、コンポーネントの適用可能バージョンが指定される。アップグレードの完了後にコンポーネントがロールするバージョンも指定される。エージェントがサーバからコンポーネントのアップグレードを要求する際、エージェントはコンポーネントの現在のバージョンを認識しており、そのバージョンに適用するアップグレードのみを要求する。アップグレードが完了すると、コンポーネントのバージョンはアップグレードによって指定された新しいものにロールし、これにより、コンポーネントが新しくなったバージョンに適用可能なアップグレードのみを受信することを確実にする。
【0087】
the serverName
the serverNameパラメータは、このアップグレードコンポーネントのためのアップグレードを発行するサーバのIPアドレス又はホスト名を定義する。このパラメータの値は、アップグレードについて問い合わせてアップグレードを取り込むためにエージェントがHTTP GETコマンドを送信するURLを構成する3つの部分のうちの第1の部分である。
【0088】
the serverPort
the serverPortパラメータは、serverNameによって指定されるサーバに要求を行う際にエージェントによって使用されるポート番号を定義する。このパラメータの値は、アップグレードについて問い合わせてアップグレードを取り込むためにエージェントがHTTP GETコマンドを送信するURLの第2の部分である。
【0089】
the serverForm
the serverFormパラメータの値は、アップグレードについて問い合わせてアップグレードを取り込むためにエージェントがHTTP GETコマンドを送信するURLの第3の部分である。このパラメータは、「/goform/upgrade」でなくてはならず、変更してはならない。
【0090】
schedule及びperiod
schedule及びperiodは組み合わせて動作し、これによりアップグレードの開始時に正確な制御を行うことができる。(詳細は下記のセクションを参照のこと。)アップグレードを完了するのに要する時間は、ペイロードのサイズ、及びエージェントとサーバとの間の接続の速度に依存する。
【0091】
注:スケジュールされた時間の間にアップグレードが完了しない場合は、そのアップグレードが中止されたところから次のアップグレードを開始する。
【0092】
schedule
scheduleは、コンポーネントがアップグレードされるタイムウィンドウを定義する。scheduleの構文はクロン(cron)のような仕様に従っており、Unix(R)クロンによって用いられるものと同一である。しかし、その意味は多少異なっている。Unix(R)クロンでは、仕様は事象が生じる時間を定義している。本発明では、仕様はアップグレードが生じる時間のウィンドウを定義している。
【0093】
scheduleの構文は、スペース又はタブ文字(例えば、****)によって分離される5つのフィールドから構成された単一のラインを含む。フィールドは、下記とすることができる。
・整数
・整数の範囲――範囲内の小さい値と大きい値との間にハイフン(−)を配置する(例えば、9−15)ことによって整数の範囲を指定する
・整数のリスト――整数のリストを示すには、例えば1,3,5,8のようにコンマで分離されたリストを使用する
・アステリスク文字()――アステリスクは、フィールド内の全ての有効値を表す。
【0094】
表3は、5つのscheduleフィールドの各々に対して可能な値を概説している。
【0095】
【表3】
Figure 2004534973
【0096】
period
periodは、scheduleによって指定されたタイムウィンドウの間の、アップグレードが完了してから(特定のコンポーネントに対して)他のアップグレードが要求されるまでに待機する時間の量を定義する。periodのフォーマットは、秒単位の時間である。例えば、periodが86400に設定された場合、periodは1日である。
【0097】
注:periodは、randomize大域構成パラメータによって変更される。randomizeが0に設定されて無効になると、エージェントは期間の開始時にコンポーネントをアップグレードしようとする。randomizeが1に設定されて有効になると、エージェントは期間の中でランダムに選択された時間にコンポーネントをアップグレードしようとする。
【0098】

schedule及びperiodが一緒に動作する態様をより良く理解することを促すため、以下にいくつかの例を挙げる。
【0099】
・月曜日から金曜日、午前9時から午後5時までの標準的な勤務時間の間、ほぼ1時間毎にアップグレードを行うためには、下記のscheduleの仕様を用い、periodを3600秒に設定する。
9−17**1−5
【0100】
・同一のタイムウィンドウの間であるが、ほぼ30分毎に前述の処理を実行するためには、単にperiodを1800秒に変更する。
【0101】
・毎日毎時間、正時の5分前と正時の5分後との間に1回アップグレードを実行するためには、600秒のperiodを指定し、下記の仕様を用いる。
54−59 0−4****
【0102】
・毎月1日の任意の時間にアップグレードするためには、periodを86400(秒単位で1日に相当する)に設定すべきであり、scheduleには下記の仕様を用いる。
****
【0103】
retryPeriod
retryPeriodパラメータは、失敗の後でこのコンポーネントに対するアップグレードの再要求を試みる前に、エージェントが待機する秒単位の時間量を指定する。このパラメータは一般に短期間で設定される。retryPeriodは、schedule及びperiodパラメータよりも優先される。従って、再試行の試みは正常にスケジュールされたアップグレード期間外で生じうる。
【0104】
retryAttempts
retryAttemptsパラメータは、失敗の後、エージェントがこのコンポーネントに対するアップグレードの要求を試みる最大回数を指定する。エージェントが最大再試行数に達した場合、エージェントはアップグレード処理を停止し、次にスケジュールされたアップグレードのために待機する。
【0105】
enable
enableパラメータは、コンポーネントをアップグレードのために有効にするか否かを判断する。1に設定すると、コンポーネントは有効になる。0に設定すると、コンポーネントは無効になり、パラメータが1に設定されるまでアップグレードされない。
【0106】
組込Java(R)Scriptファイル
必要に応じて、エージェントを、config.js、bcast.js、startup.js、finish.js、exit.js、reqdata.js、progress.js、upgrade.js、及びbroadcast.jsといった9つのカスタム組込Java(R)Scriptファイルを介して構成し、制御することができる。エージェントがユーザ構成モジュールにおいて生成された際にエージェントにおいてJava(R)Scriptを有効にした場合、これらのファイルは一定の時点でエージェントによって自動的に呼び出される。(broadcast.jsはこの場合は例外である。表4を参照のこと。)特に、これらのJava(R)ScriptファイルはC関数をロードして呼び出すことができるため、これらのJava(R)Scriptファイルはエージェントの構成能力及び機能性を大幅に高める。
【0107】
Java(R)Scriptファイルは、upgrade.jsを除いて、エージェントのローカルファイルシステムに記憶されなければならない。upgrade.jsは、アップグレード処理の間にサーバからエージェントにダウンロードされるように、アップグレードペイロードに含まれる必要がある。これらのファイルは全て、組込Java(R)Scriptパーサにより、エージェントにおいて局所的に解析される。
【0108】
表4はJava(R)Scriptファイルを列挙しており、これらのファイルが記憶される場所、呼び出される時期、そしてこれらのファイルがエージェント全体(大域)、特定のアップグレードコンポーネント(コンポーネント)、又は特定のアップグレード(アップグレード)に影響するか否かを示している。以下のセクションでは、更に詳細に説明される。
【0109】
【表4】
Figure 2004534973
【0110】
config.jsを介する構成
エージェントは、upconfig.txtファイルの解析後、Java(R)Scriptファイルconfig.jsを呼び出す。config.jsファイルにより、開発者は、エージェントの構成を大幅に変えたり、組み込まれていない任意の初期化タスクを実行することができる。例えば、スクリプトは、構成情報をLDAPサーバから取得するCコードをロードすることができる。次に、スクリプトはエージェントのJava(R)Script結合を呼び出して、構成を大幅に変えることができる。
【0111】
bcast.js及びbroadcast.jsを介するブロードキャスティング
ブロードキャスティングは、ローカルエリアネットワーク(LAN)上のエージェント構成データを変える方法を提供し、サーバが1よりも多くあったりそれらのサーバを変更したい場合に有用になり得る。ブロードキャスティングは、本発明において実施されるように、bcast.jsという名の任意のクライアント側ファイルと、broadcast.jsという名の必須のサーバ側ファイル、といった2つの部分からなる。各ファイルに関する具体的な情報については、以下のセクションを参照のこと。
【0112】
bcast.js
bcast.jsにより、追加のエージェント固有データを、リスニングしているサーバに送信することができる。この任意のユーザ指定スクリプトは、生成時にエージェントと共にパッケージ化される。エージェントは、ブロードキャスト時間の間で、エージェントが十分に構成された後及びエージェントがLANを介してブロードキャストパケットを送信する前に、bcast.jsを呼び出す。ブロードキャストパケットは、BCAST_USERDATA及びBCAST_IP_ADDRといった2つの変数からなる。bcast.jsスクリプトの戻り値は、エージェントによってブロードキャストパケットに組み込まれる。サーバはこのデータを読み取り、サーバ上で実行するスクリプトがそのデータにアクセスするようにデータを変数BCAST_USERDATAに入れる。また、ブロードキャストパケットは、変数BCAST_IP_ADDRにおけるサーバスクリプトに対して利用可能であるブロードキャスティングエージェントのIPアドレスも含んでいる。
【0113】
注:BCAST_USERDATAの値が設定されていない場合、エージェントはこの値を「なし」に設定する。
【0114】
応答を受信するために、ソケットを5秒間開いておく。この時間の間に応答が受信されない場合、ソケットを閉じ、エージェントは直ちに要求を繰り返す。応答が受信されるまで、このサイクルは永久に繰り返される。エージェント内の既存のコンポーネントは、ブロードキャスト応答が受信されるまでアップグレードされない。
【0115】
注:main.cにおけるブロードキャスト()呼出を変えることにより、この動作を必要に応じて変更することができる。変更可能なパラメータは、要求回数、要求を繰り返す前の待機時間、及びリスニングのためにソケットを開けておく時間である。
【0116】
また、bcast.jsは、例えば、追加の固有の構成情報をエージェントに送り返すために、ブロードキャストパケットの受信の際にサーバによって解析されるJava(R)Scriptから構成することもできる(下記のbroadcast.jsを参照)。
【0117】
broadcast.js
サーバがブロードキャストパケットを受信すると、サーバはbroadcast.jsという名のJava(R)Scriptファイルを実行する。このファイルは必須である。ユーザはこのファイルを書き込み、このファイルは/apps/companyname/uptheserver/js/サーバディレクトリに記憶されなくてはならない。broadcast.jsファイルは、bcast.jsファイルを介して送信された変数BCAST_USERDATA及びBCAST_IP_ADDRESSにアクセスする。broadcast.jsファイルが返送するものは何でも、ブロードキャストパケットを送信したエージェントに送り返される。下記は、broadcast.jsファイルの内容の一例である。
return(“component=test
version=1.0.0
the serverName=574.52.40.010“)
【0118】
注:構成情報及びバージョン情報に対する変更内容がエージェントの再始動後に上書きされることを望まない場合、ブロードキャストパケットがエージェントに送信されたら二度と送信されないようにbcast.js及びbroadcast.jsに書き込むべきである。
【0119】
startup.js及びfinish.jsを介するユーザ制御
startup.jsファイルは、ユーザ入力を提供するデバイスによる使用が意図されており、その目的は、ユーザがアップグレード処理を制御できるようにすることである。startup.jsは、ユーザがデフォルトのスケジューリングメカニズムを無効にできるように、デバイスのユーザインターフェースにアクセスすることができる。
【0120】
同様に、finish.jsは、アップグレード処理に従ったユーザ制御を提供する。一般に、このスクリプトによってユーザはコンポーネントを有効にしたり無効にすることができる。スクリプトがこれらの動作を行う場合、関数startUpgrade及びstopUpgradeも必要に応じて呼び出すべきである。
【0121】
exit.jsを介するクリーンアップ
exit.jsファイルは、エージェントが実行を終了する直前に実行される。このファイルにより、開発者は必要に応じてクリーンアップ機能を実行することができる。
【0122】
reqdata.jsを介する追加の要求データ
エージェントが適切なサーバから特定のコンポーネントのためのアップグレードを要求する前に、エージェントはコンポーネントのreqdata.jsファイルを呼び出す。これにより、開発者は、各要求と共に追加の情報をサーバに送信することができる。reqdata.jsによって返送されたデータはサーバに渡され、サーバはこのデータを解析してJava(R)Script変数USERDEFINEDに組み込む。この情報を、Java(R)Scriptアップグレード原則などの処理のためにサーバ上のJava(R)Scriptに渡すことができる(「Java(R)Scriptアップグレード原則」を参照)。
【0123】
注:reqdata.jsファイルは特定のコンポーネントに適用されるため、このファイルを、コンポーネントと全く同名の.../js/ディレクトリのサブディレクトリに記憶する必要がある。
【0124】
progress.jsを介するチャンク受信制御
エージェントは、アップグレードの各チャンクを受信した後にコンポーネントのprogress.jsファイルを実行する。これにより、開発者は、エージェントがコンポーネントのアップグレードをダウンロードする態様を細かく制御することができる。
【0125】
注:progress.jsファイルは特定のコンポーネントに適用されるため、このファイルを、コンポーネントと全く同名の.../js/ディレクトリのサブディレクトリに記憶する必要がある。
【0126】
upgrade.jsを介するアップグレードの適用
どのようにアップグレードが適用されるかを制御する固有のupgrade.jsファイルを、アップグレードモジュールを介してエージェントに送信される各アップグレードペイロードに含めることができる。upgrade.jsファイルをペイロードに含めるには、ペイロードがサーバによりアップグレードモジュールの一部としてパッケージされる前に、ペイロードを他のペイロードと同一のディレクトリに配置しなくてはならない。エージェントによって受信されたペイロードがupgrade.jsファイルを含む場合、ペイロードは、エージェントがそのペイロードを受信して有効にした直後にエージェントによって実行される。
【0127】
また、どのようにアップグレードが適用されるかを、アップグレードタスク又は処理の実行によって制御することもできる。Windows(R)プラットフォームでは、この実行可能物の名をupgrade.exeとする必要がある。VxWorks(R)では、その名をupgrade.oとしなくてはならない。Linux(R)では、その名をupgradeとしなくてはならない。実行可能ファイルがペイロードに存在する場合、エージェントがペイロードを受信して有効にした後、エージェントによってそのファイルがロードされ、実行される。実行可能ファイル及びupgrade.jsファイルの双方がペイロードに含まれている場合、まず実行可能ファイルが実行され、続いてupgrade.jsが実行される。エージェントは、これらのファイルの一方又は双方の実行が完了するまでアップグレードを始めない。
【0128】
注:エージェントがVxWorks(R)システム上で作動する場合、upgrade.oファイルはupmainという名の実行可能エントリポイントをもたなくてはならない。
【0129】
Java(R)Scriptアップグレード原則
アップグレード原則は、サーバを実行するシステム管理者が、ターゲットデバイスのセットのどのサブセットがアップグレードを受信するかを指定することによってアップグレードのロールアウトを制御できるようにする、本発明の特徴である。原則がアップグレードに適用されると、エージェントからのアップグレードの要求が、それに応じてサーバにより是認されたり否認されたりする。アップグレード原則はサーバにおいて生成され、1つ以上のアップグレードモジュールに適用可能である。最も一般的なタイプの原則は以下の通りである。
・エージェントのIPアドレスによってアップグレードを制限するための「IPアドレス」
・エージェントのホスト名によってアップグレードを制限するための「ホスト名」
・要求を行うエージェントのうち、ある割合のエージェントのみのアップグレードを是認するための「比率」
・指定された時間の間に行われた要求のみのアップグレードを是認するための「スケジュール」
【0130】
Java(R)Script原則によって開発者は、上に列挙した4つのタイプの原則よりも更に正確にアップグレードのロールアウトを制御することができる。アップグレードモジュールに対してJava(R)Script原則を実施するには、開発者は「Java(R)Script」タイプのアップグレード原則をサーバに生成し、Java(R)Scriptのパス名を原則タイプパラメータとして入力し、そしてJava(R)Script原則をアップグレードモジュールに適用する必要がある。保一貫性のために、開発者は、Java(R)Script原則ファイルをbroadcast.jsファイルと共に/apps/company/uptheserver/js/サーバディレクトリに記憶することが賢明であろう。
【0131】
原則が満たされ、アップグレード要求が是認されるためには、Java(R)Scriptファイルは「是認approved」の値を戻さなくてはならない。Java(R)Script原則ファイルは、各アップグレード要求と共に送信されるエージェント変数にアクセスする。これらの変数は、HOSTNAME、IP_ADDR、COMPONENT、OS、VERSION、及びUSERDEFINEDである。JavaScriptファイルが所望の値を戻すために、開発者は、任意の論理をこれらのパラメータに適用することができる。
【0132】
注:return(「approved」)を挿入するだけで、Java(R)Script原則ファイルはその原則を満たし、従ってアップグレードを是認する。
【0133】
セキュリティ
1998年12月15日、国立科学技術研究所(the National Institute of Standards and Technology、NIST)は、連邦情報処理規格(FIPS)186−1としてデジタル署名規格(DSS)を認定した。この規格は、ドキュメントにデジタル署名する技術を実施している。この規格は、下記の2つの要件を考慮に入れた上で本発明に適用されている。
【0134】
1.認証:データが信用のあるソースから来たものであることを確認し、「この データは信用のあるソースと思われるものから来たものか」という質問に答える
2.確認:データの保全性を確認し、「このデータは送信中に改ざんされている か」という質問に答える
【0135】
認証は、公開鍵及び秘密鍵といった一対の暗号化鍵を使用する非対称暗号化を介してDSSによって達成される。これらの鍵は、下記の特性を有する。
・秘密鍵を公開鍵から推定することはできない。
・公開鍵は、秘密鍵を用いて符号化されたメッセージを復号することができる。
・公開鍵はメッセージを符号化することができない。
【0136】
アルゴリズムがメッセージ又はデータを符号化し、秘密鍵を用いてこれをデジタルで署名する。メッセージ又はデータの受信者はデジタル署名を読み取り、関連する公開鍵を用いてこのメッセージ又はデータの復号を試みる。受信者による復号がうまくいった場合、これは、メッセージ又はデータが、関連する秘密鍵へのアクセスを有するソース、従って信用のあるソースから来たものに違いない、ということを意味する。
【0137】
確認を達成するために、DSSはセキュアハッシュアルゴリズム(SHA−1)を用いる。秘密鍵を用いたデジタル署名の生成の際、このアルゴリズムは、メッセージダイジェストと呼ばれるメッセージ又はデータの縮約版を取得する。このメッセージダイジェストは、デジタル署名アルゴリズムがデジタル署名を生成するとデジタル署名アルゴリズムに入力される。このデジタル署名は、データ又はメッセージと共に送信される。メッセージ又はデータの受信者がこれを受信すると、受信者はSHA1及びDSSを用いて、実際のメッセージ又はデータに対してメッセージダイジェストを確認する。これらが適合しない場合、メッセージ又はデータは送信中に改ざんされている。
【0138】
本発明は、下記のようにDSSを実施する。
【0139】
1.ユーザは、ユーザ構成モジュールを用いて暗号化鍵(公開及び秘密)の固有対を生成し、これをエクスポートする。
2.ユーザは、秘密鍵をサーバにインポートする。
3.公開鍵は、これらの鍵を生成したユーザ構成モジュールのコピーを用いて生成されたエージェントアプリケーションに含められる。
4.ユーザがアップグレードモジュールを生成すると、サーバは、インポートされた秘密鍵を用いてモジュールのアップグレードペイロードのためのデジタル署名を生成する。このデジタル署名は、セキュアハッシュアルゴリズム(SHA−1)を用いて生成されたペイロードのダイジェストメッセージを含む。次に、サーバは、デジタル署名を含むペイロード用明示ファイルを生成する。そして、明示ファイル及びペイロードはアップグレードモジュールに組み込まれる。
5.エージェントがアップグレードモジュールを受信すると、エージェントはオリジナルのペイロード及び明示ファイルを複製する。
6.次に、エージェントは公開鍵を用いてデジタル署名を読み取り、実際のペイロードに対してダイジェストメッセージをチェックする。デジタル署名が認証され、データがダイジェストメッセージと一致する場合、エージェントはこのアップグレードを承認し、アップグレード処理を続ける。
【0140】
Windows(R) NTサービスとしてのサーバの実行
サーバをインストールする際、サーバはWindows(R) NTサービスとして自動的に登録される。Windows(R) NTサービス管理プログラムから利用可能なオプションの他に、下記のコマンドラインのオプションを使用することができる。
−i サービスマネージャーを用いてサーバをNTサービスとして登録する。
−r サーバをNTサービス管理プログラムから除去する。
−s サーバが以前に登録されている場合はサーバをNTサービスとして始動させる(前述の−iを参照)。そうでない場合、サーバはこのオプションを用いた際に通常通りに作動する。
注:NTサービス及びサービス管理プログラムの更なる情報に関しては、Windows(R) NTドキュメンテーションを参照のこと。
【0141】
サーバログファイル
サーバは、サーバが追跡するエージェント及びサーバ動作に関する情報のログファイルを保持する。サーバはそのログファイルを回転させ、毎日午前0時にそのデータカウントをゼロにする。ログファイルの各セットは、/<installdirectory>/apps/goahead/uptheserver/log/に配置されたサブディレクトリに記憶されている。ログは、処理及び報告書作成のために表計算ツール又はデータベースツールにインポートすることのできる、タブで分離されたファイルとしてフォーマットされている。オリジナルファイルへの接続を維持することなくログファイル全体をMicrosoft(R) Excelにインポートしたり、ログファイルをMicrosoft(R) Excelのリフレッシュ可能範囲にインポートすることができる。更なる情報に関しては、Microsoft(R) Excelヘルプを参照のこと。下記のログはサーバによって保持される。
【0142】
Agentsログ
Agentsログは、ログファイル日の午前0時以降サーバに要求を行った全てのエージェントと、各エージェントが行った要求の数のリストを提供する。Agentsログは下記の項目を含む。
【0143】
【表5】
Figure 2004534973
【0144】
Requestsログ
Requestsログは、ログファイル日の午前0時以降サーバに対して行われたアップグレード要求を全て列挙する。Requestsログは下記の項目を含む。
【0145】
【表6】
Figure 2004534973
【0146】
Responsesログ
Responsesログは、ログファイル日の午前0時以降サーバによって受信されたエージェントからのアップグレード応答をすべて列挙する。エージェントは、アップグレードの是認がサーバから受信された場合のみに応答を送信する。Responsesログは下記の項目を含む。
【0147】
【表7】
Figure 2004534973
【0148】
VxWorks(R)の考察
VxWorks(R)ターゲットデバイス上で作動するエージェントは、TCP/IP機能及びソケット機能のために標準VxWorks(R)ネットワークサポートに依存する。NFS、FTP、及びSNMPは必須ではない。VxWorks(R)ターゲットデバイスのエージェントは、標準VxWorks(R) DOSファイルシステムサポートにも依存する。
【0149】
ユーザ構成モジュールにおいて生成されたエージェントファイルを、全てVxWorks(R)ターゲットデバイスに移動させなければならない。フロッピー(R)、ネットワーク、又はファイルをデバイスに配置するために用いられるあらゆる他の方法を介して、このことを行うことができる。このツリーをルートディレクトリに配置することができるが、gのような短いベース名を有するサブディレクトリに配置することが推奨される。
【0150】
ファイル名
本発明の適用に用いられるべきVxWorks(R)ファイルシステムのボリュームがDOS_OPT_LONGNAMESオプションで初期化されていない限り、全てのファイル名及びディレクトリ名は、標準のDOSの8文字の名及び3文字の拡張子に限定される。ユーザ構成モジュール及びサーバにおいて指定されるアップグレードコンポーネント名はファイルシステムのパス名に使用されるため、その長さは8文字以下でなくてはならない。
【0151】
スケジューリング
エージェントでは、作動前にシステムのリタルタイムクロックを初期設定し、機能しうるようにしておくことが必要である。特に、clock_gettime関数がエージェントによって呼び出され、事象のスケジューリングに使用される。
【0152】
エージェントは、標準のシステム呼出を有するファイルを生成する。これらのファイルが正確な日付/時間のスタンプを有するためには、時間フォーマッティング機能を備えるdosFsDate TimeInstall関数を使用して現在時刻をdosFsライブラリ関数に提供する必要がある。そうしない場合、全てのファイルが1980年1月1日の日付と00:00:00の時間で生成されてしまう。
【0153】
ファイルのローディング
エージェントオブジェクトモジュール(upgrader.o、ej.o、及びdss.o)をVxWorks(R) OSの画像にリンクし、起動時に初期設定を行うことができる。しかしながら、これらのモジュールを、taskSpawn APIのシェルコマンド又は呼出を介して任意の他の時間にロードし、初期設定を行うことができる。upgrader.oのみがコマンドej.oによってロードされる必要があり、dss.oはupgrader.oにより、又はupconfig.txtの構成パラメータ次第で、必要に応じてロードされる。
【0154】
エージェントを引き出すための関数呼出は、taskSpawn(“upgrader”、100,0,6000,vxmain,“−h/ata0/g”,“−Ttrace/txt”3”)のようであるべきである。スタックサイズは少なくとも6000であるべきである。/ata0/gは、インストールされたエージェントへのパスによって置き換えられるべきである。upconfig.txt、ej.o、dss.o、及びupgrader.oは、このディレクトリに配置されるべきである。「−T」で始まる最後のストリングは、エージェントの診断追跡機能をオンにする。追跡が必要でない場合はこれを省略することができる。この例では、出力はtrace.txtという名のファイルに書き込まれる。ファイル名の代わりに「stdout」を指定することにより、シェルへの出力を達成することができる。コロンの後の数字は追跡詳細レベルを指定しており、0が最小で9が最大である。
【0155】
必須モジュール
VxWorks(R)の実行時間画像に組み込んで構成することのできる任意のライブラリ及び関数が多くある。これらの殆どはエージェントの実行には必須ではないが、いくつかは必須である。これらのうちのいくつかは前述の通りである。下記は、エージェントを実行するために構築されたVxWorks(R)に含まれる必要のあるモジュールのリストである。
ANSI_STDIO
ANSI_STRING
ATA
DOSFS
ELT(又はターゲットが使用するあらゆるネットワークアダプタ)
IO_SYSTEM
LOADER(ej.o、dss.o、又は他の実行可能モジュールをロードする場合は必須)
SYM_TBL
NETWORK
【0156】
標準の出力追跡メッセージをコンソールにおいて眺めたり、シェルからエージェントをロードして初期設定したり、フロッピー(R)ディスクから再起動したりすることを望む場合、更なるモジュールが必要となりうる。これらのモジュールは、下記の通りである。
PC_CONSOLE(コンソールにおいてメッセージを眺めるために必須)
SHELL(シェルからロードして実行するために必須)
FD(フロッピー(R)から再起動するために必須)
【0157】
VxWorks(R)画像の構築及びリンクの更なる情報に関しては、VxWorks(R)ドキュメンテーションを参照のこと。
【0158】
エージェントの終了
VxWorks(R)においてエージェントを終了するには、SIGKILL(15)信号をエージェントタスクに送信する。これを、VxWorks(R)シェルキルコマンド又はプログラムAPIを用いて行うことができる。これにより、エージェントはその目下のタスクを完了し、手際良く終了する。直ちに終了するには、代わりにSIGKILL(9)信号を送信する。手際の良い終了の試みが直ちに行われる。tdシェルコマンド又はtaskDeleteプログラムAPIを使用することもできる。しかしながら、開いたファイルの中には閉じないものもあり、割り当てられたリソースの割り当て解除がなされない場合がある。特に、追跡ファイルは、このような終了の後ではおそらくアクセスが不可能になる。
【0159】
組込Java(R)Scriptの参照
Java(R)Scriptは、ネットスケープコミュニケーションズ社によって開発された簡潔なクロスプラットフォームのスクリプト言語であり、標準ECMA−262:ECMAスクリプト言語仕様として標準化されたものである。本発明は、組込Java(R)Scriptとして参照される、この言語の厳密なサブセットを実施している。Java(R)Scriptのサブセットを実施する目的は、スクリプトインタプリタのコードサイズを制御することである。組込Java(R)Scriptの最も顕著な関数は以下の通りである。
・算術演算子
・論理演算子
・大域関数
・局所/大域変数
・if、else、for、及びreturnキーワード
【0160】
組込Java(R)Scriptの最も顕著な例外は以下の通りである。
・数字は浮動小数点ではなく整数である
・アレイ及びオブジェクトはサポートされない
・関数の宣言がない
【0161】
組込Java(R)Scriptは、一般的なスクリプト機能と、組込Java(R)Script関数の呼出を計算量の多いC関数に結びつけるメカニズムとを提供する。あらゆるスクリプト言語と同様に、主な利点の1つは、展開が速く容易であり、サイクルコンパイル及びリンクが不要なことにある。欠点としては、スクリプトはソースの形で展開されるためにプライバシーが欠如していることと、コンパイルされたコードよりも実行が遅いこと、が挙げられる。表8は、より一般的な言語エレメントの部分的なリストを含んでいる。
【0162】
【表8】
Figure 2004534973
【0163】
組込Java(R)Script大域変数は、更なる説明に値する。組込Java(R)Script大域変数は、エンジンの寿命の間は生変数であり(本発明では、1つのエンジンが始動時に開かれ、エージェントの終了時に閉じられる)、現行のスクリプトよりも長く存在する。Cアプリケーションは、これらの変数を宣言し、設定することができる。次に、これらの変数は、エンジンによって評価される任意のスクリプトによってアクセス可能となる。これにより、データを1つのスクリプトから他のスクリプトに渡すことができる。
【0164】
組込Java(R)Scriptは、エンジンによって解釈される任意の組込Java(R)Scriptによって使用され得るC関数を宣言することができる。このことは、Java(R)Scriptのセキュリティを侵害するが、これにより、アプリケーションは、コンパイルされた「C」の全ての利点を備える任意の動作を定義し、実行することができる。
【0165】
また、この結合メカニズムにより、アプリケーションはloadModuleなどの関数を拡張することもできる。これらの関数の多くは、パスされるパラメータの数に基づいた異なる実行をもたらすように多重定義されている。組込Java(R)Scriptはタイプが規定されていない言語であるため、パラメータの数は、生じるべき動作を決定する唯一の基準である。
【0166】
下記の関数が、本発明と共に含まれるJava(R)Scriptインタプリタに追加されている。
・addComponent
・callFunction
・cd
・config
・copyFileToMemory
・cp
・deleteComponent
・getConfig
・loadModule
・Is
・mkdir
・mv
・print
・pwd
・reboot
・rm
・rmdir
・runProcess
・startUpgrade
・stopAgent
・stopUpgrade
・trace
・unloadModule
・waitForKeystroke
【0167】
スクリプトされたアップグレード原則の場合のように、エージェント又はサーバによる実行のために、これらの関数を、本発明によって用いられる任意のJava(R)Scriptファイルに使用することができる。全てのJava(R)Script変数は、ストリングとして記憶される。従って、これらの関数は全て、ストリング値をスクリプトに戻す。
【0168】
注:addJsFunc C APIにより、更なるユーザ定義組込Java(R)Script関数を追加することができる。
【0169】
インメモリファイルシステムエージェントに対しては、下記の関数も利用可能である。
・imSaveData
・imDeleteData
・upCopyToPersistentStorage
・upReplaceOSImage
entryPoint 実行可能プログラムファイルにおけるエントリポイント(VxWorks(R)のみ必要)
priority VxWorks(R) taskSpawn APIに定義されるような任意のVxWorks(R)優先順位(デフォルト値は100)
options VxWorks(R) taskSpawn APIに定義されるような任意のVxWorks(R)オプション(デフォルト値は0)
stacksize VxWorks(R) taskSpawn APIに定義されるような任意のVxWorks(R)スタックサイズ(デフォルト値は5000)
【0170】
説明
個別の処理を開始する。アーギュメントは、実行されるファイル名と、処理に渡すための、スペースで分離されたアーギュメントのリストを含む。
【0171】
Windows(R)では、ファイル名の拡張子が「.bat」である場合、ファイルはネイティブOSスクリプトファイルとして解釈され、このスクリプトを処理するためにコマンドインタプリタが呼び出される。そうでない場合、ファイル名の拡張子は「.exe」のはずであり、ファイルは通常通りに実行される。
【0172】
Linux(R)では、ファイル名の拡張子は有意ではない。ファイルが実行可能なフォーマットとして認識された場合、ファイルは実行される。そうでない場合、標準シェルスクリプトインタプリタが呼び出され、ファイルはネイティブOSスクリプトとして処理される。
【0173】
VxWorks(R)では、ファイルはメモリにロードされ、タスクの開始及び実行のためにVxWorks(R) taskSpawn APIが呼び出される。
【0174】
戻り値
処理が順調に開始された場合、runProcessを「0」(ゼロ)に戻し、失敗した場合は「−1」に戻す。
【0175】

runProcess(“SampleApp.exe arg1 arg2 arg3”);
runProcess(“SamApp.o arg1 arg2”,“_SampleMain”,100,0,10000);
【0176】
C関数の参照
組込Java(R)Script又は実行される処理によってC関数を呼び出すことができる。これらの関数により、開発者は、エージェントの構成能力及び機能性を高めることができる。組込Java(R)Scriptは、callFunction Java(R)Script APIの使用により、又は前述のaddJsFuncを用いた新しいJava(R)Script APIへの関数の結合により、C関数のロード及び呼出を行うことができる。これらの関数の多くは、文字「g」で始まる標準のシステムAPI(gchdir、gcloseなど)である。一般に、エージェントのインメモリファイルシステム機能が使用されていない場合、これらのAPIは標準のシステム呼出に変換される。インメモリファイルシステムが使用されている場合、これらのシステムはインメモリの同等の関数に変換され、この関数において、「g」は「im」に置き換えられ、標準名の最初の文字が大文字にされる(例えば、gopenはimOpenになる)。
【0177】
下記のC関数はエージェントにおいて利用可能であり、組込Java(R)Scriptの結合を実施するためにこれらを使用することができる。
・addJsFunc
・ejGetVar
・ejSetResult
・ejSetVar
・gchdir
・gclose
・gclosedir
・getDirectoryList
・ggetcwd
・glseek
・gmkdir
・gopen
・gopendir
・gread
・greaddir
・grename
・grmdir
・gstat
・gunlink
・gwrite
・loadDll
・setJsVar
・startUpgrade
・stopUpgrade
・trace
・unloadDLL
【0178】
本発明は、好適な実施の形態を参照して具体的に示され、説明されたが、本発明の趣意及び範囲から逸脱することなく、形式及び詳細における種々の変更が可能であることが、当業者には明らかであろう。
【図面の簡単な説明】
【図1】
示される種々の展開されるデバイスを有するシステムの全体的な構造を示す図である。
【図2】
展開されるデバイスがアップグレードダウンロードを受信するシーケンスを示す図である。

Claims (19)

  1. ネットワークコンピュータ環境下にある配備されたデバイスをアップグレードする方法であって、
    a)ネットワークサーバをポーリングする機能を前記配備されたデバイスに追加するステップと、
    b)前記ネットワークサーバをポーリングし、前記配備されたデバイスに対してアップグレードが有効であるか否かを判断するステップと、
    c)前記アップグレードが適切な条件を満たした場合、前記アップグレードを前記配備されたデバイスにダウンロードするステップと、
    を含む、前記方法。
  2. 前記アップグレードが適切なサーバからのものであることと、前記アップグレード自体が送信中に変更されていないことを認証し、確認するステップを更に含む、請求項1に記載の方法。
  3. 前記アップグレードが、前記配備されたデバイスの1以上の特定のコンポーネントに適用される、請求項1に記載の方法。
  4. 前記配備されたデバイスの前記特定のコンポーネントが、前記コンポーネントの名、バージョン、前記アップグレードを提供する前記サーバのホスト名、前記アップグレードを提供する前記サーバへの要求のためのポート番号、行われる再試行の試みの数、ポーリングスケジュール、再試行期間によって識別され、定義される、請求項3に記載の方法。
  5. 前記ネットワークサーバは前記アップグレードを制御するアップグレードポリシーを含み、前記ポリシーはどの配備されたデバイスが前記アップグレードの受信に適切であるかを定義する、請求項1に記載の方法。
  6. 前記ネットワークサーバの前記ポーリングが所定の基準でスケジュールされることを更に含む、請求項1に記載の方法。
  7. ネットワークコンピュータ環境下にある配備されたデバイスをアップグレードする方法であって、
    a)ネットワークサーバによって接触され、前記ネットワークサーバからアップグレードを受信する機能を前記配備されたデバイスに追加するステップと、
    b)前記ネットワークサーバが、前記配備されたデバイスに対して適切なアップグレードが有効であるか否かを判断し、前記アップグレードを前記配備されたデバイスに送信するステップと、
    を含む、前記方法。
  8. ネットワークコンピュータ環境下にある配備されたデバイスにアップグレードを実施するシステムであって、
    a)前記配備されたデバイスに追加されるエージェントであって、アップグレードが前記配備されたデバイスに対して有効であるか否かを判断するためにネットワークサーバにポーリングする機能を含む、該エージェントと、
    b)前記アップグレードのための所定の基準がほぼ適合した場合に前記アップグレードを前記配備されたデバイスに送信するようにされた前記ネットワークサーバと、
    を含む、前記システム。
  9. 前記アップグレードが適切な前記ネットワークサーバからのものであることと、前記アップグレード自体が前記配備されたデバイスへの送信中に変更されていないことを認証して確認する、前記配備されたデバイスの機能を更に含む、請求項8に記載のシステム。
  10. 前記アップグレードを、前記配備されたデバイスの1以上の特定のコンポーネントに適用することができる、請求項8に記載のシステム。
  11. 前記配備されたデバイスの前記特定のコンポーネントが、前記コンポーネントの名、バージョン、前記アップグレードを提供する前記サーバのホスト名、前記アップグレードを提供する前記サーバへの要求のためのポート番号、行われる再試行の試みの数、ポーリングスケジュール、再試行期間によって識別され、定義される、請求項10に記載のシステム。
  12. 前記ネットワークサーバは前記アップグレードの送信前に所定のアップグレードポリシーを適用し、前記アップグレードポリシーはどの特定の配備されたデバイスが前記アップグレードの受信に適切であるかをを識別し、定義する、請求項8に記載のシステム。
  13. 前記ポーリングが所定間隔で生じる、請求項8に記載のシステム。
  14. ネットワークコンピュータ環境下にある配備されたデバイスにアップグレードを実施するシステムであって、
    a)アップグレードが前記配備されたデバイスに対して有効であるか否かを判断するためにネットワークサーバにポーリングする機能を前記配備されたデバイスに追加する手段と、
    b)前記アップグレードのための所定の基準がほぼ適合した場合に、前記ネットワークサーバが前記アップグレードを前記配備されたデバイスに送信できるようにする手段と、
    を含む、前記システム。
  15. a)前記アップグレードが適切な前記ネットワークサーバからのものであることを認証し確認するための、前記配備されたデバイスのための手段と、
    b)前記アップグレード自体が前記配備されたデバイスへの送信中に変更されていないことを保証する手段と、
    を更に含む、請求項14に記載のシステム。
  16. 前記配備されたデバイスをアップグレードする前記手段が、前記配備されたデバイスの1以上の特定のコンポーネントに前記アップグレードを適用する機能を含む、請求項14に記載のシステム。
  17. アップグレードされる1以上の前記特定のコンポーネントが、前記アップグレードを受信してインストールするエージェントを含む、請求項16に記載のシステム。
  18. ネットワークコンピュータ環境下にある配備されたデバイスにアップグレードを実施するシステムであって、
    a)ネットワークサーバからアップグレード通知を受信する、配備されたデバイス手段と、
    b)前記アップグレードのための所定の基準がほぼ適合した場合に、前記アップグレードを前記配備されたデバイスに送信するネットワークサーバ手段と、
    を含む、前記システム。
  19. 前記配備されたデバイスが前記アップグレードの受信に適切であることを判断するネットワークサーバ手段を更に含む、請求項18に記載のシステム。
JP2001577157A 2000-04-14 2001-04-13 ネットワークデバイスのアップグレードシステム及び方法 Pending JP2004534973A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19712500P 2000-04-14 2000-04-14
PCT/US2001/012108 WO2001080023A1 (en) 2000-04-14 2001-04-13 A system and method for upgrading networked devices

Publications (1)

Publication Number Publication Date
JP2004534973A true JP2004534973A (ja) 2004-11-18

Family

ID=22728142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001577157A Pending JP2004534973A (ja) 2000-04-14 2001-04-13 ネットワークデバイスのアップグレードシステム及び方法

Country Status (4)

Country Link
US (1) US6986133B2 (ja)
EP (1) EP1292892A4 (ja)
JP (1) JP2004534973A (ja)
WO (1) WO2001080023A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005204278A (ja) * 2003-11-14 2005-07-28 Thomson Licensing Sa 分散局のネットワークにおけるデータのセクションでの不連続伝送方法、この方法を実行するための要求電化製品としてのネットワーク加入者局、及び、この方法を実行するためのソース電化製品としてのネットワーク加入者局
JP2009517766A (ja) * 2005-11-29 2009-04-30 サムスン エレクトロニクス カンパニー リミテッド 統合移動診断及びブラウザでの電子顧客ケアテストスクリプト
JP2010061675A (ja) * 2002-07-11 2010-03-18 Thomson Licensing アプリケーションレベルゲートウェイ及びファイアウォールのルールセットのダウンロードの許可
JP2014526078A (ja) * 2011-06-27 2014-10-02 ▲華▼▲為▼終端有限公司 デバイス管理方法、装置、およびシステム
JP2015212879A (ja) * 2014-05-02 2015-11-26 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム

Families Citing this family (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7123372B2 (en) * 2000-06-22 2006-10-17 Konica Corporation Image forming apparatus administration system
US6754823B1 (en) * 2000-10-24 2004-06-22 Kurzweil Cyberart Technologies Technique for distributing software
US6886038B1 (en) * 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US20020107954A1 (en) 2000-10-31 2002-08-08 Glen Ferguson Data model for automated server configuration
US8250570B2 (en) 2000-10-31 2012-08-21 Hewlett-Packard Development Company, L.P. Automated provisioning framework for internet site servers
US8479189B2 (en) * 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US7168093B2 (en) * 2001-01-25 2007-01-23 Solutionary, Inc. Method and apparatus for verifying the integrity and security of computer networks and implementation of counter measures
JP2002230195A (ja) 2001-01-30 2002-08-16 Konica Corp 管理システム、管理装置、中継サーバー、被管理装置及び管理方法
US7743147B2 (en) * 2001-04-20 2010-06-22 Hewlett-Packard Development Company, L.P. Automated provisioning of computing networks using a network database data model
JP4373779B2 (ja) * 2001-06-14 2009-11-25 シスコ テクノロジー インコーポレイテッド ステイトフル分散型イベント処理及び適応保全
US20030048470A1 (en) * 2001-09-07 2003-03-13 Garcia Elias S. Web browser for network printer
FR2831684B1 (fr) * 2001-10-31 2004-03-05 Gemplus Card Int Installation de programme compile notamment dans une carte a puce
JP2003173246A (ja) * 2001-12-05 2003-06-20 Ricoh Co Ltd デバイス情報収集方法、プログラム、サーバ装置及び記憶媒体
US7243226B2 (en) 2001-12-12 2007-07-10 Valve Corporation Method and system for enabling content security in a distributed system
US7373406B2 (en) * 2001-12-12 2008-05-13 Valve Corporation Method and system for effectively communicating file properties and directory structures in a distributed file system
US8108687B2 (en) 2001-12-12 2012-01-31 Valve Corporation Method and system for granting access to system and content
US7580972B2 (en) * 2001-12-12 2009-08-25 Valve Corporation Method and system for controlling bandwidth on client and server
US7290040B2 (en) * 2001-12-12 2007-10-30 Valve Corporation Method and system for load balancing an authentication system
KR100400020B1 (ko) * 2002-02-05 2003-09-29 삼성전자주식회사 비휘발성 잉크 캐리어를 사용하는 습식 전자사진화상형성장치
US20030184794A1 (en) * 2002-03-26 2003-10-02 Gary Stringham System and method for supporting network devices
US7304758B2 (en) * 2002-03-27 2007-12-04 Sharp Laboratories Of America, Inc. Dynamically updating a printer driver
CN1161924C (zh) * 2002-04-02 2004-08-11 华为技术有限公司 一种二层交换设备的数据升级方法
US20070169073A1 (en) * 2002-04-12 2007-07-19 O'neill Patrick Update package generation and distribution network
US20030212889A1 (en) * 2002-05-13 2003-11-13 Khieu Andrew K. Method and system for exchanging data over networks using public key encryption
US7448032B2 (en) * 2002-05-22 2008-11-04 Sun Microsystems, Inc. Method and apparatus for integration of URL into standard file systems
US20050149923A1 (en) * 2002-05-28 2005-07-07 Sheng Lee System update protocol
FR2840703B1 (fr) * 2002-06-06 2004-12-17 Cit Alcatel Application des reseaux actifs pour la repartition de charge au sein d'une pluralite de serveurs de service
US8549114B2 (en) 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
US6863612B2 (en) * 2002-09-03 2005-03-08 Bidamic Inc. System and method for interactive on-line gaming
KR100442884B1 (ko) * 2002-09-14 2004-08-02 삼성전자주식회사 펌웨어 업데이트 방법
CA2639010C (en) * 2002-09-26 2010-12-21 Video Furnace, Inc. Digital content delivery and viewing system and method
WO2004046938A1 (ja) * 2002-11-18 2004-06-03 Mitsubishi Denki Kabushiki Kaisha ネットワークデータ転送方法
US8582139B2 (en) * 2002-11-19 2013-11-12 Hewlett-Packard Development Company, L.P. Driver upgrading
US8271971B2 (en) * 2002-11-26 2012-09-18 Hewlett-Packard Development Company, L.P. System and method for automated program updating in a remote appliance
US7793346B1 (en) * 2003-01-17 2010-09-07 Mcafee, Inc. System, method, and computer program product for preventing trojan communication
US7689981B1 (en) * 2003-02-28 2010-03-30 Hewlett-Packard Development Company, L.P. Mobile handset with efficient interruption point detection during a multiple-pass update process
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7275244B1 (en) * 2003-03-18 2007-09-25 Microsoft Corporation System and method for incrementally saving web files to a web server using file hash values
US20050060390A1 (en) * 2003-09-15 2005-03-17 Faramak Vakil Method and system for plug and play installation of network entities in a mobile wireless internet
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
JP2005107803A (ja) * 2003-09-30 2005-04-21 Hitachi Ltd システム更新方法、および、それを実行するための計算機システム
US7464102B2 (en) * 2003-11-26 2008-12-09 Microsoft Corporation System and method for providing computer support tools
US8001542B2 (en) * 2003-12-12 2011-08-16 Xerox Corporation Self-installing software components for network service execution
BRPI0400265A (pt) * 2004-03-10 2006-02-07 Legitimi Ltd Sistema de controle de acesso a serviços de informação baseado em assinatura de hardware e software do dispositivo solicitante
US7568018B1 (en) * 2004-03-19 2009-07-28 New Boundary Technologies Inc. Dynamic identification and administration of networked clients
US7904895B1 (en) * 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7331063B2 (en) * 2004-04-30 2008-02-12 Microsoft Corporation Method and system for limiting software updates
US8156489B2 (en) * 2004-05-21 2012-04-10 Computer Associates Think, Inc. Distributed installation configuration system and method
TWI250407B (en) * 2004-06-10 2006-03-01 Acer Inc Electronic system capable of using universal plug and play (UPNP) protocol to update software program and method thereof
KR100644621B1 (ko) * 2004-08-06 2006-11-10 삼성전자주식회사 네트워크 디바이스의 소프트웨어 업데이트 방법
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7506149B2 (en) * 2004-08-27 2009-03-17 Intel Corporation Method, program and system to update files in a computer system
US7844964B2 (en) * 2004-09-23 2010-11-30 Hewlett Packard Development Company, L.P. Network for mass distribution of configuration, firmware and software updates
FI122213B (fi) * 2004-09-28 2011-10-14 Capricode Oy Menetelmä ja laitejärjestely päätelaitteen käyttöprofiilin hallitsemiseksi
US7930693B2 (en) * 2005-04-04 2011-04-19 Cisco Technology, Inc. Method and system for accessing and launching a java based applet as a locally installed application
US7631297B2 (en) * 2005-04-05 2009-12-08 International Business Machines Corporation Autonomic computing: management agent utilizing action policy for operation
US8489728B2 (en) * 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
US20060253617A1 (en) * 2005-04-22 2006-11-09 Microsoft Corporation Driver upgrade tools
US8205013B2 (en) * 2005-05-02 2012-06-19 Samsung Electronics Co., Ltd. Method and system for aggregating the control of middleware control points
US20070016393A1 (en) * 2005-06-29 2007-01-18 Microsoft Corporation Model-based propagation of attributes
US7941309B2 (en) * 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US20070207800A1 (en) * 2006-02-17 2007-09-06 Daley Robert C Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device
US8028283B2 (en) * 2006-03-20 2011-09-27 Samsung Electronics Co., Ltd. Method and system for automated invocation of device functionalities in a network
CN100385855C (zh) * 2006-03-31 2008-04-30 华为技术有限公司 集中远程自动升级软件的系统及其方法
US20070279389A1 (en) * 2006-05-31 2007-12-06 Samsung Electronics Co., Ltd. Method of task-oriented universal remote control user interface
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
US8032928B2 (en) * 2006-07-14 2011-10-04 At&T Intellectual Property I, L.P. Methods, devices, and computer program products for controlling wireless connection access
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
US8584115B2 (en) * 2006-10-05 2013-11-12 International Business Machines Corporation Automated operating system device driver updating system
US7685461B2 (en) * 2006-12-20 2010-03-23 International Business Machines Corporation Method, apparatus and program storage device for performing fault tolerant code upgrade on a fault tolerant system by determining when functional code reaches a desired state before resuming an upgrade
US8341616B2 (en) * 2007-03-28 2012-12-25 International Business Machines Corporation Updating digitally signed active content elements without losing attributes associated with an original signing user
US8065428B2 (en) * 2007-03-30 2011-11-22 Lenovo (Singapore) Pte. Ltd. Computer patch management in “road warrior” contexts
US20080250385A1 (en) * 2007-04-09 2008-10-09 Sanchez Elton R Automating the deployment of applications
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US8473938B1 (en) 2007-06-21 2013-06-25 Open Invention Network Llc Security patch update processor
US20090031052A1 (en) * 2007-07-27 2009-01-29 Xerox Corporation Print device diagnosis method and system
US8065671B1 (en) * 2007-08-20 2011-11-22 United States Automobile Association (USAA) Systems and methods for product updates with provisioning of data items
US20090066993A1 (en) * 2007-09-11 2009-03-12 Xerox Corporation Remote print device management
US8570550B2 (en) * 2007-09-11 2013-10-29 Xerox Corporation Method and system for remote management of print devices
US8413130B2 (en) * 2007-10-03 2013-04-02 International Business Machines Corporation System and method for self policing of authorized configuration by end points
JP5284023B2 (ja) * 2007-10-05 2013-09-11 キヤノン株式会社 情報処理装置および制御方法および制御プログラム
DE102007049958A1 (de) * 2007-10-18 2009-05-07 Siemens Ag Verfahren und System zur Aktualisierung einer mehrschichtigen Applikation
US8266260B2 (en) * 2007-12-11 2012-09-11 Sharp Laboratories Of America, Inc. Method and system for updating the software of multiple network nodes
JP5124352B2 (ja) * 2008-06-06 2013-01-23 株式会社日立ソリューションズ 電子データ配布システム
KR20100050098A (ko) * 2008-11-05 2010-05-13 삼성전자주식회사 영상처리장치 및 그 제어 방법
US8914783B2 (en) 2008-11-25 2014-12-16 Fisher-Rosemount Systems, Inc. Software deployment manager integration within a process control system
US8898660B2 (en) 2008-11-25 2014-11-25 Fisher-Rosemount Systems, Inc. Systems and methods to provide customized release notes during a software system upgrade of a process control system
CN101437224A (zh) * 2008-12-22 2009-05-20 中兴通讯股份有限公司 移动终端软件的更新方法和移动终端
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
US9038056B1 (en) * 2009-03-31 2015-05-19 Avaya Inc. Method and apparatus for performing automatable software upgrades using a lightweight serviceless install agent
US20100302578A1 (en) * 2009-05-28 2010-12-02 Xerox Corporation System and method of remote machine servicing
US20100306056A1 (en) * 2009-05-28 2010-12-02 Xerox Corporation System and method of remote machine servicing
JP5440009B2 (ja) * 2009-07-31 2014-03-12 富士通株式会社 マルチクラスタシステムのプログラム更新方法及びマルチクラスタシステム
US8464243B2 (en) * 2009-08-21 2013-06-11 International Business Machines Corporation Updating client node of computing system
US8108734B2 (en) 2009-11-02 2012-01-31 International Business Machines Corporation Intelligent rolling upgrade for data storage systems
US8584120B2 (en) * 2009-11-23 2013-11-12 Julian Michael Urbach Stream-based software application delivery and launching system
US8769341B2 (en) * 2010-08-26 2014-07-01 Futurewei Technologies, Inc. System and method for transmitting data using incremental remediation
JP2012048540A (ja) * 2010-08-27 2012-03-08 Canon Inc 画像処理装置及びその制御方法、情報処理システム、並びにプログラム
US9158525B1 (en) 2010-10-04 2015-10-13 Shoretel, Inc. Image upgrade
US9032053B2 (en) * 2010-10-29 2015-05-12 Nokia Corporation Method and apparatus for upgrading components of a cluster
US10114660B2 (en) 2011-02-22 2018-10-30 Julian Michael Urbach Software application delivery and launching system
CN103907091A (zh) * 2011-10-31 2014-07-02 惠普发展公司,有限责任合伙企业 跨网络的远程软件部署
US9183393B2 (en) * 2012-01-12 2015-11-10 Facebook, Inc. Multiple system images for over-the-air updates
CN103516735A (zh) * 2012-06-20 2014-01-15 中兴通讯股份有限公司 一种网络节点升级的方法及装置
JP2014021726A (ja) * 2012-07-18 2014-02-03 Canon Inc 配信装置、画像形成装置、システム、制御方法およびコンピュータプログラム
RU2541935C2 (ru) 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ развертывания предварительно сконфигурированного программного обеспечения
RU2523113C1 (ru) 2012-12-25 2014-07-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ целевой установки сконфигурированного программного обеспечения
US9104504B2 (en) * 2013-03-13 2015-08-11 Dell Products Lp Systems and methods for embedded shared libraries in an executable image
US20150358334A1 (en) * 2013-03-14 2015-12-10 Telefonaktiebolaget L M Ericsson (Publ) Method for authenticating a client program by a remote data processing system
US8805972B1 (en) * 2013-06-26 2014-08-12 Kaspersky Lab Zao Multi-platform operational objective configurator for computing devices
US9292345B2 (en) * 2013-07-08 2016-03-22 Google Inc. Systems, methods, and computer program products for processing sets of instructions for mobile devices
CN104850416B (zh) * 2014-02-18 2019-01-08 中国移动通信集团公司 一种升级系统、方法、装置及云计算节点
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US20180139090A1 (en) * 2016-11-15 2018-05-17 John Geiger Method for secure enrollment of devices in the industrial internet of things
CN108829442B (zh) * 2017-05-04 2021-12-14 杭州海康威视数字技术股份有限公司 程序启动方法及装置
US10191732B2 (en) * 2017-06-09 2019-01-29 Citrix Systems, Inc. Systems and methods for preventing service disruption during software updates
US11671325B1 (en) * 2017-11-01 2023-06-06 Amazon Technologies, Inc. Determining IoT device compatibility with deployments
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
CN110633094B (zh) * 2019-10-22 2023-06-27 宁波三星医疗电气股份有限公司 一种电力终端远程升级方法、主站以及电力系统
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
CN114915620B (zh) * 2021-02-07 2024-04-05 浙江宇视科技有限公司 一种终端软件在线升级方法及装置
CN113204366A (zh) * 2021-06-02 2021-08-03 上海酒贝乐信息技术有限公司 一种智能售酒机系统的远程升级方法
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US20230041679A1 (en) * 2021-08-04 2023-02-09 Hashtag Labs Inc. Web-based advertising management system and web-based advertising management process
US11709820B2 (en) 2021-09-03 2023-07-25 Bank Of America Corporation System for implementing intelligent data analysis
CN117707585B (zh) * 2024-02-05 2024-05-03 广州市赛科自动化控制设备有限公司 一种软件远程升级方法、系统及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63262724A (ja) * 1987-04-02 1988-10-31 インターナシヨナル・ビジネス・マシーンズ・コーポレーション データ処理ネツトワーク
JPH07225723A (ja) * 1994-02-08 1995-08-22 Fujitsu Ltd ネットワークを活用したソフトウェア流通・保守システムおよび方法
JPH0954734A (ja) * 1995-08-17 1997-02-25 Fujitsu Ltd ネットワークを活用したソフトウェア流通・保守システムおよび方法
JPH1083310A (ja) * 1996-06-11 1998-03-31 Internatl Business Mach Corp <Ibm> プログラム・コードの配布方法及びシステム
JPH11259532A (ja) * 1998-03-06 1999-09-24 Fujitsu Denso Ltd データ収集システム
JPH11272454A (ja) * 1998-01-28 1999-10-08 Internatl Business Mach Corp <Ibm> コンピュ―タ・ネットワ―クを通してソフトウエア更新を配布する装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US5848064A (en) * 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63262724A (ja) * 1987-04-02 1988-10-31 インターナシヨナル・ビジネス・マシーンズ・コーポレーション データ処理ネツトワーク
JPH07225723A (ja) * 1994-02-08 1995-08-22 Fujitsu Ltd ネットワークを活用したソフトウェア流通・保守システムおよび方法
JPH0954734A (ja) * 1995-08-17 1997-02-25 Fujitsu Ltd ネットワークを活用したソフトウェア流通・保守システムおよび方法
JPH1083310A (ja) * 1996-06-11 1998-03-31 Internatl Business Mach Corp <Ibm> プログラム・コードの配布方法及びシステム
JPH11272454A (ja) * 1998-01-28 1999-10-08 Internatl Business Mach Corp <Ibm> コンピュ―タ・ネットワ―クを通してソフトウエア更新を配布する装置
JPH11259532A (ja) * 1998-03-06 1999-09-24 Fujitsu Denso Ltd データ収集システム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061675A (ja) * 2002-07-11 2010-03-18 Thomson Licensing アプリケーションレベルゲートウェイ及びファイアウォールのルールセットのダウンロードの許可
JP2005204278A (ja) * 2003-11-14 2005-07-28 Thomson Licensing Sa 分散局のネットワークにおけるデータのセクションでの不連続伝送方法、この方法を実行するための要求電化製品としてのネットワーク加入者局、及び、この方法を実行するためのソース電化製品としてのネットワーク加入者局
JP4538298B2 (ja) * 2003-11-14 2010-09-08 トムソン ライセンシング 分散局のネットワークにおけるデータのセクションでの不連続伝送方法、この方法を実行するための要求電化製品としてのネットワーク加入者局、及び、この方法を実行するためのソース電化製品としてのネットワーク加入者局
JP2009517766A (ja) * 2005-11-29 2009-04-30 サムスン エレクトロニクス カンパニー リミテッド 統合移動診断及びブラウザでの電子顧客ケアテストスクリプト
JP2014526078A (ja) * 2011-06-27 2014-10-02 ▲華▼▲為▼終端有限公司 デバイス管理方法、装置、およびシステム
JP2015212879A (ja) * 2014-05-02 2015-11-26 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム

Also Published As

Publication number Publication date
US20030208569A1 (en) 2003-11-06
EP1292892A1 (en) 2003-03-19
WO2001080023A1 (en) 2001-10-25
US6986133B2 (en) 2006-01-10
EP1292892A4 (en) 2006-11-15

Similar Documents

Publication Publication Date Title
JP2004534973A (ja) ネットワークデバイスのアップグレードシステム及び方法
US9654548B2 (en) Intelligent network streaming and execution system for conventionally coded applications
US7043524B2 (en) Network caching system for streamed applications
US8831995B2 (en) Optimized server for streamed applications
US7219140B2 (en) Configuration and management systems for mobile and embedded devices
US6918113B2 (en) Client installation and execution system for streamed applications
US6959320B2 (en) Client-side performance optimization system for streamed applications
AU2004279170B2 (en) System and method for managing and communicating software updates
RU2372644C2 (ru) Система и способ для обновления инсталляционных компонентов в сетевой среде
AU2004279173B2 (en) System and method for updating files utilizing delta compression patching
US20020087883A1 (en) Anti-piracy system for remotely served computer applications
US20020083183A1 (en) Conventionally coded application conversion system for streamed delivery and execution
US20040010786A1 (en) System and method for automatically upgrading a software application
US6804773B1 (en) System and method for transferring information over a network
EP1499967A2 (en) Secure transmission and installation of an application
JP5526663B2 (ja) 情報処理装置、ソフトウェア管理システム、及びソフトウェア管理方法
TW202236087A (zh) 內部網路中的軟體更新方法與系統
Garcia Gonzalo Viri, Remote execution of Python scripts

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080408

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111101