(58)【調査した分野】(Int.Cl.,DB名)
仮想ローカルエリアネットワーク(VLAN)内の複数のノード間で基本入出力システム(BIOS)セットアップオプションを自動的に送信するコンピュータ実施方法であって、
前記複数のノードのうち何れかのノードの特定のコントローラにて、前記ノードでBIOSセットアップオプションを更新するためのコマンドを受信する工程と、
前記特定のコントローラの内部フラグに基づいて、前記特定のコントローラがマスタでもスレーブでもないことを判断する工程と、を順次実行し、
前記特定のコントローラがマスタでもスレーブでもないことを判断した場合、マスタ要求を前記VLANに送信するとともに、
前記マスタ要求に対する応答を所定期間内に受信していないことを判断する工程を実行した上で、
前記マスタ要求に対する応答を所定期間内に受信していないことを判断した場合、前記特定のコントローラの前記内部フラグを前記マスタに設定するとともに、
前記特定のコントローラが前記マスタであって、前記ノードで更新されたBIOSセットアップオプションを前記VLANに送信することができることを示すために第1完了応答を送信する工程、
を実行することを特徴とするコンピュータ実施方法。
【発明を実施するための形態】
【0017】
本発明の各種実施形態は、管理者又はコントローラがサーバシステム上のBIOSセットアップオプションを更新し、その後、ベースボード管理コントローラ(BMC)仮想ローカルエリアネットワーク(VLAN)において、別のサーバシステム上でBIOSセットアップオプションを自動的に更新することを可能にするシステム及び方法を提供する。本発明は、BMC VLANが、フレキシブルで、効率的で、自動化されたBIOS管理を実現することを可能にする。
【0018】
図1Aは、本発明の一実施形態による、BIOSセットアップオプションを自動的に送信する、VLAN100A内の例示的なシステムを示すブロック図である。この例において、VLAN100Aは、複数のサーバシステム(例えば、102,103)と、ネットワーク101とを有する。複数のサーバシステムは、任意の形式のデータを計算及び処理するように動作可能な任意のコンピューティングデバイスを有してもよい。例えば、複数のサーバシステムは、パーソナルコンピュータ、ネットワークストレージデバイス又はネットワークコンピューティングデバイスを有してもよい。複数のサーバシステム(例えば、102,103)は、ネットワーク101を介して互いに通信することができる。
【0019】
各サーバシステムは、複数のコンポーネントを有する。例えば、サーバシステム102は、BMC102−1と、プロセッサ102−2と、BIOS102−3と、ストレージデバイス102−4と、を有する。サーバシステム103は、BMC103−1と、プロセッサ103−2と、BIOS103−3と、ストレージデバイス103−4と、を有する。
【0020】
この例において、VLAN100A内のBMC(例えば、102−1及び103−1)は、ネットワーク101を介して互いに通信可能である。BMC(例えば、102−1及び103−1)は、同じサーバシステム上の対応するプロセッサ(例えば、102−2及び103−2)、並びに、対応するストレージデバイス(例えば、102−4及び103−4)と、システムバス(例えば、インテリジェントプラットフォーム管理バス/ブリッジ(IPMB))を用いたインテリジェントプラットフォーム管理インタフェース(IPMI)メッセージを介して通信する。IPMBは、IC間バス(I
2C)の拡張実装であり、メッセージベースのハードウェアレベルの基本インタフェース仕様である。IPMBは、信頼できる内部通信を目的としているため、認証不要である。この例では、BMCが図示されているが、メイン中央処理装置(例えば、ラック管理コントローラ)から独立した別のタイプのサービスコントローラを用いて、ここで開示される機能を実行することができる。
【0021】
いくつかの構成において、VLAN100A内のBMC(例えば、102−1及び103−1)は、対応するサーバシステムがオフになると、帯域外で互いに通信することができる。例えば、BMC(例えば、102−1及び103−1)は、ローカルエリアネットワーク(LAN)を介して、IPMIに用いるリモート管理制御プロトコル(RMCP)又はRMCP+を使用して、帯域外で互いに通信することができる。
【0022】
BIOS(例えば、102−3及び103−3)は、対応するサーバシステム(例えば、102,103)の各種コンポーネントを初期化及び識別するように構成された任意のプログラム命令又はファームウェアであり得る。BIOSは、対応するサーバシステムのハードウェアコンポーネントの初期化及びテストを担当する重要なシステムコンポーネントである。BIOSは、ハードウェアコンポーネントに抽象化レイヤを提供することができ、これにより、アプリケーション及びオペレーティングシステムが、周辺装置(例えば、キーパッド、ディスプレイ及び他の入力/出力装置等)と相互作用する一貫した方法を提供する。
【0023】
いくつかの構成において、BIOS(例えば、102−3及び103−3)は、対応するサーバシステム上でオペレーティングシステム(OS)(例えば、Microsoft Windows(登録商標) OS、Linux(登録商標) OS又は任意のOS)を起動する前に、システムチェックを実行することができる。システムチェックは、対応するサーバシステムの初期化中に実行される診断システム試験である。システムチェックの例には、パワーオンセルフテスト(POST)が含まれる。BIOSは、POSTの主要な機能を処理することができ、特定の周辺装置(例えば、ビデオ及びスモールコンピュータシステムインタフェース(SCSI)の初期化)を初期化するように設計された他のプログラムへの負荷を低減することができる。POSTの主要な機能には、CPUレジスタとBIOSコードの整合性を確認することと、基本コンポーネントをチェックすることと、システムメインメモリを検査することと、他の特殊なBIOS拡張機能に制御渡すことと、が含まれてもよい。いくつかの構成において、BIOSは、さらに、全てのシステムバス及び装置の発見、初期化、分類化と、システムの構成を更新するためのユーザインタフェースの提供と、オペレーティングシステムにより要求されるシステム環境の構築と、を含む追加のPOST機能を処理してもよい。
【0024】
VLAN100A内のBIOS(例えば、102−3及び103−3)は、かなりの頻度で更新される必要がある。例えば、BIOSの製造者によりリリースされた新たなBIOS機能を利用したり、新たに追加されたハードウェアを操作したり、BIOSで検出されたバグを修正したりするために、BIOSが更新されてもよい。
【0025】
システム100Aにおいて、BIOSセットアップオプションは、VLAN100A内の複数のサーバシステムの特定のサーバシステム上のBIOSセットアップ機能を用いて更新又は変更され得る。更新されたBIOSセットアップオプションは、対応するストレージデバイス(例えば、102−4及び103−4)に保存され得る。特定のサーバシステムでBIOSセットアップ機能を終了すると、システムリセットの前にBIOS SMI機能がトリガされる。SMIハンドラ(図示省略)は、BIOSセットアップオプションの変数(例えば、UEFI変数)を取得し、IPMIプロトコルを介して当該変数を特定のサーバシステムのBMC(例えば、102−1及び103−1)に送ることができる。特定のサーバシステムのBMCは、BMCの内部フラグをチェックして、BMCが、更新されたBIOSセットアップオプションをVLAN100Aに送信する特権を有するマスタであるか否かを判断することができる。BMCがマスタである場合、BMCは、更新されたBIOSセットアップオプションをVLAN100Aに送信することができる。その後、BMCは、内部フラグをnoneにリセットして、特定のサーバシステムをリセットすることができる。
【0026】
システム100Aにおいて、ストレージデバイス(例えば、102−4及び103−4)は、一定期間のプログラム命令又はデータを記憶するように構成された任意の記憶媒体であってもよい。ストレージデバイスは、対応するBMC(例えば、102−1及び103−1)とプロセッサ(例えば、102−2及び103−2)との間の共有メモリであってもよい。いくつかの構成において、ストレージデバイスは、独立したストレージデバイスであってもよい。ストレージデバイスは、フラッシュドライブ、ランダムアクセスメモリ(RAM)、不揮発性ランダムアクセスメモリ(NVRAM)、読み取り専用メモリ、又は、電気的に消去可能なプログラマブルROM(EEPROM)であってもよい。ストレージデバイスは、例えばBIOSデータ等のシステム構成を記憶するように構成されている。
【0027】
プロセッサ(例えば、102−2及び103−2)は、特定の機能のプログラム命令を実行するように構成された中央処理装置(CPU)であってもよい。例えば、ブートプロセスの間、プロセッサは、対応するストレージデバイス(例えば、102−4及び103−4)に記憶されたBIOSデータにアクセスし、BIOS(例えば、102−3及び103−3)を実行して、対応するサーバシステムを初期化することができる。ブートプロセスの後に、プロセッサは、オペレーティングシステムを実行して、対応するサーバシステムの特定のタスクを実行及び管理することができる。
【0028】
BMC(例えば、102−1及び103−1)は、更新されたBIOSセットアップオプションをVLAN100A内の別のBMCから受信すると、更新されたBIOSセットアップオプションを、対応するストレージデバイス(例えば、102−4及び103−4)に記憶することができる。いくつかの構成において、更新されたBIOSセットアップオプションは、IPMIメッセージを介して、BMCから対応するストレージデバイスに送信される。いくつかの構成において、BMCは、対応するBIOS(例えば、102−3及び103−3)のBIOSセットアップオプションを、更新されたBIOSセットアップオプションに置き換えることができる。
【0029】
特定のサーバシステム(例えば、102,103)がオン又はリセットされると、対応するプロセッサ(例えば、102−2及び103−2)は、対応するストレージデバイス(例えば、102−4及び103−4)に記憶された、更新されたBIOSセットアップオプションにアクセスし、更新されたBIOSセットアップオプションを実行して、特定のサーバシステムを初期化することができる。いくつかの構成において、プロセッサは、システムインタフェース(例えば、I
2C)を介して、更新されたBIOSセットアップオプションにアクセスする。ブートプロセスの後に、プロセッサは、オペレーションシステムを実行して、特定のサーバシステムの特定のタスクを実行及び管理することができる。さらに、プロセッサは、更新されたBIOSセットアップオプションに関連する少なくとも1つの新たな機能を実行することができる。例えば、更新されたBIOSセットアップオプションは、以前のBIOS(例えば、102−3及び103−3)内のバグの修正を含んでもよい。
【0030】
図1Bは、本発明の実施形態による、BIOSセットアップオプションを自動的に送信するように構成された例示的なシステム100Bのブロック図である。この例において、サーバシステム100Bは、少なくとも1つのマイクロプロセッサ又はプロセッサ102−2と、1つ以上の冷却コンポーネント110と、メインメモリ(MEM)102−4と、AC電源105からAC電力を受け、電力をサーバシステム100Bの各種コンポーネント(例えば、プロセッサ102−2等)に供給する少なくとも1つの電源ユニット(PSU)104と、ノースブリッジ(NB)ロジック106と、PCIeスロット160と、サウスブリッジ(SB)ロジック108と、ストレージデバイス109と、ISAスロット150と、PCIスロット170と、管理装置102−1と、を有する。電源投入後、サーバシステム100Bは、メモリ、コンピュータストレージデバイス又は外部ストレージデバイスからソフトウェアアプリケーションをロードして各種動作を実行するように構成されている。ストレージデバイス109は、サーバシステム100Bのオペレーティングシステム及びアプリケーションに使用可能な論理ブロックであって、サーバシステム100Bがオフの場合であってもサーバデータを保有するように構成された論理ブロックで構成されている。
【0031】
メモリ102−4は、NBロジック106を介してプロセッサ102−2に接続され得る。メモリ102−4は、これに限定されないが、ダイナミックランダムアクセスメモリ(DRAM)、ダブルデータレートDRAM(DDR DRAM)、スタティックRAM(SRAM)、又は、他のタイプの適切なメモリを有する。メモリ102−4は、サーバシステム100BのBIOSデータを記憶するように構成されてもよい。いくつかの構成において、BIOSデータは、ストレージデバイス109に記憶されてもよい。
【0032】
いくつかの構成において、プロセッサ102−2は、マルチコアプロセッサであり、それぞれ、NBロジック106に接続されたCPUバスを介して互いに接続されたマルチコアプロセッサであってもよい。いくつかの構成において、NBロジック106は、プロセッサ102−2に組み込まれてもよい。さらに、NBロジック106は、複数の周辺コンポーネント相互接続エキスプレス(PCIe)スロット160及びSBロジック108(任意)に接続されてもよい。複数のPCIeスロット160は、例えばPCI Express x1、USB2.0、SMBus、SIMカード、別のPCIeレーン用の将来の拡張、1.5V及び3.3Vの電力、並びに、サーバシステム100Bのシャーシ上のLEDを診断するワイヤ等の接続及びバスに用いられる。
【0033】
システム100Bにおいて、NBロジック106及びSBロジック108は、周辺コンポーネント相互接続(PCI)バス107によって接続されている。PCIバス107は、プロセッサ102−2の標準化フォーマットの機能をサポートすることができ、この標準化フォーマットは、任意のプロセッサ102−2のネイティブバスから独立している。PCIバス107は、さらに、複数のPCIスロット160(例えば、PCIスロット161)に接続されてもよい。PCIバス107に接続された装置は、CPUバスに直接接続され、プロセッサ102−2のアドレス空間内のアドレスが割り当てられ、単一のバスクロックに同期されたバスコントローラ(図示省略)であってもよい。PCIカードは、これらに限定されないが、ネットワークインタフェースカード(NIC)、音声カード、モデム、TVチューナカード、ディスクコントローラ、ビデオカード、小型コンピュータシステムインタフェース(SCSI)アダプタ、及び、パーソナルコンピュータメモリカード国際協会(PCMCIA)カードを含む複数のPCIスロット170に用いられてもよい。
【0034】
SBロジック108は、拡張バスを介して、PCIバス107を複数の拡張カード又はスロット150(例えば、ISAスロット151)に接続することができる。拡張バスは、SBロジック108と周辺装置との間の通信に用いられるバスであってもよく、このバスは、これらに限定されないが、業界標準アーキテクチャ(ISA)バス、PC/104バス、ローピンカウントバス、拡張ISA(EISA)バス、ユニバーサルシリアルバス(USB)、統合ドライブエレクトロニクス(IDE)バス、又は、周辺装置のデータ通信に用いることができる他の任意の適切なバスを含む。
【0035】
システム100Bにおいて、SBロジック108は、さらに、少なくとも1つのPSU104に接続された管理装置102−1に接続される。いくつかの実施形態において、管理装置102−1は、ベースボード管理コントローラ(BMC)、ラック管理コントローラ(RMC)、又は、任意の他の適切なタイプのシステムコントローラであってもよい。管理装置102−1は、少なくとも1つのPSU104の操作及び/又は他の適用可能な操作を制御するように構成されている。いくつかの実施形態において、管理装置102−1は、サーバシステム100Bの処理命令、並びに、コンポーネント及び/又は接続状態を監視するように構成されている。
【0036】
図1A及び
図1Bの例示的なシステム100A〜100Bには、特定の構成要素のみが示されているが、データを処理又は記憶したり、信号を送受信したり、新鮮な空気を下流のコンポーネントに提供することができる様々なタイプの電子又はコンピューティングコンポーネントが、この例示的なシステム100A〜100Bに含まれてもよい。さらに、例示的なシステム100A〜100Bの電子又はコンピューティングコンポーネントは、各種タイプのアプリケーションを実行し、及び/又は、各種タイプのオペレーティングシステムを用いることができるように構成されてもよい。かかるオペレーティングシステムは、これらに限定されないが、Android(登録商標)、BSD(Berkeley Software Distribution)、iPhone(登録商標) OS(iOS)、Linux(登録商標)、OS X(登録商標)、Unix(登録商標)系のリアルタイムオペレーティングシステム(例えば、QNX等)、Microsoft Windows(登録商標)、Window Phone、及び、IBM z/OS(登録商標)を含む。
【0037】
例示的なシステム100A〜100Bの所望の実装に応じて、例えばTCP/IP、オープンシステム相互接続(OSI)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UpnP)、ネットワークファイルシステム(NFS)、コモンインターネットファイルシステム(CIFS)、AppleTalk(登録商標)等を含むがこれらに限定されない各種ネットワーク及びメッセージプロトコルが用いられてもよい。当業者なら理解できるように、
図1A〜
図1Bに説明される例示的なシステム100A〜100Bは、説明のために用いられる。よって、ネットワークシステムは、必要に応じて多くのバリエーションを実装することができ、同時に、本発明の各種実施形態を用いたネットワークプラットフォームの構成を提供する。
【0038】
図1A〜
図1Bの構成において、例示的なシステム100A〜100Bは、特定のワイヤレスチャネルのコンピューティング範囲内の1つ以上の電子装置と通信するように動作可能な1つ以上のワイヤレスコンポーネントをさらに含むことができる。ワイヤレスチャネルは、例えばブルートゥース(登録商標)、セルラー、NFC又はWi-Fi(登録商標)チャネル等のように、装置が無線で通信できるようにするために用いられる任意の適切なチャネルであってよい。従来の技術のように、装置は、1つ以上の従来の有線通信接続を有し得ることを理解されたい。各種実施形態の範囲内で、各種の他のコンポーネント及び/又はその組み合わせが可能である。
【0039】
上記の議論は、本発明の原理及び各種の例を説明することを意図している。上述した開示が完全に理解されると、各種の変形及び修正が明らかになるであろう。
【0040】
図2Aは、本発明の一実施形態による、複数のノードを含むシステムにおいて、BIOSセットアップオプションを自動的に送信する例示的な方法200Aを示す図である。例示的な方法200Aは単なる例示であり、本技術による他の方法では、類似若しくは代替の順序で実行され又は平行して実行される追加の、より少ない、又は、代替の工程を含むことができるのを理解されたい。例示的な方法200Aは、工程202にて、ノードの特定のコントローラにおいて、ノード内のBIOSセットアップオプションを更新するためのコマンドを受信することから開始する。コマンドは、システムの管理者又はコントローラからのものであってよい。いくつかの構成において、コマンドは、相手先ブランド製造(OEM)インテリジェントプラットフォーム管理インタフェース(IPMI)コマンドであって、特定のコントローラを、BIOSセットアップオプションの変更をシステム内の別のノードに送信する特権を有するマスタとして指定する。いくつかの構成において、ノードは、管理者がBIOSセットアップオプションを更新するために、統一拡張ファームウェアインタフェース(UEFI)シェルインタフェースを介してBIOSセットアップユーティリティを提供することができる。
【0041】
工程204において、特定のコントローラは、内部フラグをチェックして、特定のコントローラが、ノードのBIOSセットアップオプションの変更をシステムの別のノードに送信する特権を有するマスタコントローラであるか否かを判断することができる。特定のコントローラがスレーブコントローラである場合には、工程205において、特定のコントローラは、特定のコントローラを当分の間マスタコントローラにすることができないことを示すために、完了応答(例えば、OEM完了応答)を例えばUEFIシェルインタフェースに送信することができる。特定のコントローラがマスタコントローラである場合には、工程206において、特定のコントローラは、特定のコントローラが既にマスタコントローラーであって、且つ、ノード上の更新されたBIOSセットアップオプションを、複数のノードのうち別のノードに送信することが許可されていることを示すために、完了応答(例えば、OEM完了応答)を例えばUEFIシェルインタフェースに送信することができる。
【0042】
工程208において、特定のコントローラは、マスタ要求をシステムに送信することができる。工程210において、特定のコントローラは、所定時間内にシステムの複数のノードのうち別のノードから応答を受信したか否かを判断することができる。いくつかの構成において、複数のノードのうち別のノードは、当該別のノードのコントローラがマスタコントローラであることを示す内部フラグを有する場合にのみ、特定のコントローラからのマスタ要求に応答する。
【0043】
複数のノードのうち別のノードからの応答を受信した場合、工程212において、特定のコントローラは、内部フラグをスレーブに設定(すなわち、当該コントローラがスレーブコントローラとして操作することができることを示す値に設定)する。工程214において、特定のコントローラは、特定コントローラを当分の間マスタコントローラにすることができないことを示す完了応答(例えば、OEM完了応答)を例えばUEFIシェルインタフェースに送信する。
【0044】
所定期間内に複数のノードのうち別のノードから応答を受信しない場合、工程216において、特定のコントローラは、内部フラグをマスタに設定(すなわち、コントローラがマスタコントローラとして操作できることを示す値に設定)する。工程218において、特定のコントローラは、特定のコントローラが、現在、マスタコントローラであって、ノード上で更新されたBIOSセットアップオプションを複数のノードのうち別のノードに送信するのを許可されていることを示す完了応答(例えば、OEM完了応答)を、例えばUEFIシェルインタフェースに送信する。
【0045】
図2Bは、本発明の一実施形態による、複数のノードを含むシステムにおいてBIOSセットアップオプションを自動的に送信する例示的な方法200Bを示す図である。例示的な方法200Bは、工程220において、複数のノードのうち一つのノードで、更新されたBIOSセットアップオプションを記憶することから開始する。いくつかの構成において、ノードは、BIOセットアップオプションを更新するために、BIOSセットアップユーティリティを管理者に提供する。工程222において、BIOSセットアップオプションの更新が完了した後にBIOSセットアップユーティリティを終了することによって、ノードをリセットする前にSMI機能をトリガすることができる。
【0046】
工程224において、SMIハンドラは、複数のノードのBIOSセットアップオプションの変数を取得して、当該変数をノードの特定のコントローラに送信することができる。いくつかの構成において、これらの変数は、IPMIプロトコルを介してSMIハンドラから特定のコントローラに送信される。
【0047】
工程226において、特定のコントローラは、内部フラグをチェックして、特定のコントローラがマスタコントローラであるか否か(例えば、内部フラグがマスタ又はスレーブの何れに設定されているか)を判断する。工程228において、特定のコントローラがマスタである場合において、特定のコントローラは、更新されたBIOSセットアップオプションを、複数のノードのうち別のノードに送信することができる。工程230において、特定のコントローラは、さらに、更新されたBIOSセットアップオプションの送信完了後、内部フラグをnoneにリセットする。工程232において、特定のコントローラは、さらに、更新されたBIOSセットアップオプションが既に送信されたことを示す完了応答(例えば、OEM完了応答)を、例えばUEFIシェルインタフェースに送信する。工程234において、特定のコントローラは、さらに、ノードをリセットする。
【0048】
特定のコントローラがマスターでない場合、例示的な方法200Bは工程234に進み、当該工程において、特定のコントローラは、ノードをリセットすることができる。
【0049】
図2Cは、本発明の一実施形態による、複数のノードを含むシステムにおいてBIOSセットアップオプションを自動的に送信する例示的な方法200Cを示す図である。例示的な方法200Cは、工程240において、複数のノードののうち一つのノードをオンにすることから開始する。
【0050】
工程242において、ノードのコントローラは、更新されたBIOSセットアップオプションをシステムのマスタコントローラから受信する。工程244において、コントローラは、更新されたBIOSセットアップオプションをノードのPOSTに取得させ、ノード上の既存のBIOSセットアップオプションを上書きすることができる。工程246において、コントローラは、ノード上でPOSTをさらに続行させることができる。
【0051】
(専門用語)
コンピュータネットワークは、エンドポイント(例えばパソコンとワークステーション)間でデータを転送するための通信リンク及びセグメントによって相互接続された、地理的に分配されたノードの集合である。ローカルエリアネットワーク(LAN)及び広域ネットワーク(WAN)からオーバーレイ及びソフトウェア定義ネットワーク(例えば、仮想拡張可能ローカルエリアネットワーク(VXLAN))まで、多くのタイプのネットワークを利用することができる。
【0052】
LANは、通常、同一の物理位置(例えば、ビルやキャンパス等)に位置する専用のプライベート通信リンクを介してノードを接続する。一方、WANは、通常、長距離通信リンク(例えば、一般的なキャリア電話回線、光路、同期光ネットワーク(SONET)、又は、同期デジタル階層(SDH)リンク等)を介して、地理的に分散したノードを接続する。LAN及びWANは、レイヤ2(L2)及び/又はレイヤ3(L3)のネットワークと装置を含むことができる。
【0053】
インターネットは、世界中の異種ネットワークを接続するWANの一例であり、各種ネットワーク上のノード間のグローバル通信を提供する。ノードは、通常、所定のプロトコル(例えば通信制御プロトコル/インターネットプロトコル(TCP/IP))にしたがって、データの個別のフレーム又はパケットを交換することによって、ネットワークを介して通信する。この文脈では、プロトコルは、ノードが互いにどのように相互作用するかを定義する一組のルールを参照することができる。コンピュータネットワークは、中間ネットワークノード(例えば、ルータ)によってさらに相互接続されており、各ネットワークの有効なサイズを拡張する。
【0054】
オーバーレイネットワークは、一般に、物理ネットワークインフラストラクチャ上に仮想ネットワークを生成し、階層化することを可能にする。オーバーレイネットワークプロトコル(例えば、仮想拡張可能LAN(VXLAN)、汎用ルーティングカプセル化(NVGRE)を用いたネットワーク仮想化、ネットワーク仮想化オーバーレイ(NVO)、及び、ステートレストランスポートトンネリング(STT)等)は、ネットワークトラフィックが、論理トンネルを介してL2及びL3ネットワークで実行できるようにするトラフィックカプセル化スキームを提供する。このような論理トンネルは、仮想トンネルエンドポイント(VTEP)を介して発信及び終了することができる。
【0055】
さらに、オーバーレイネットワークは、VMが通信する仮想L2及び/又はL3オーバーレイネットワークを含むことの可能な仮想セグメント(例えば、VXLANオーバーレイネットワーク内のVXLANセグメント)を有することができる。仮想セグメントは、関連する仮想セグメント又はドメインを具体的に識別することができる例えばVXLANネットワーク識別子等の仮想ネットワーク識別子(VNI)を介して識別することができる。
【0056】
ネットワーク仮想化は、ハードウェア及びソフトウェアリソースを仮想ネットワーク内で組み合わせることを可能にする。例えば、ネットワーク仮想化では、複数のVMを、それぞれの仮想LAN(VLAN)を介して物理ネットワークに接続することができるようにする。VMは、それぞれのVLANに従ってグループ化することができ、内部又は外部ネットワーク上の他の装置と同様に、他のVMと通信することができる。
【0057】
ネットワークセグメント(例えば、物理セグメント若しくは仮想セグメント、ネットワーク、装置、ポート、物理リンク若しくは論理リンク、及び/又は、トラフィック等)は、通常、ブリッジ又はフラッドドメインにグループ化される。ブリッジドメイン又はフラッドドメインは、ブロードキャストドメイン(例えば、L2ブロードキャストドメイン)を表す。ブリッジドメイン又はフラッドドメインは、単一のサブネットを有し得るが、複数のサブネットを有してもよい。さらに、ブリッジドメインは、ネットワークデバイス(例えば、スイッチ)上のブリッジドメインインタフェースに関連付けることができる。ブリッジドメインインタフェースは、L2ブリッジネットワークとL3ルーテッドネットワークとの間のトラフィックをサポートする論理インタフェースであってもよい。また、ブリッジドメインインタフェースは、インターネットプロトコル(IP)ターミネーション、VPNターミネーション、アドレス解決処理、MACアドレッシング等をサポートしてもよい。ブリッジドメインとブリッジドメインインタフェースは、同一のインデックス又は識別子により識別され得る。
【0058】
さらに、アプリケーションをネットワークにマッピングするために、エンドポイントグループ(EPG)をネットワークで使用することができる。特に、EPGは、ネットワーク内のアプリケーションエンドポイントのグルーピングを用いて、接続性及びポリシーをアプリケーショングループに適用することができる。EPGは、バケットのコンテナ若しくはアプリケーションの集合、又は、アプリケーションコンポーネント、並びに、転送、及び、ポリシーロジックを実行する段(tiers)として機能することができる。また、EPGは、論理的なアプリケーション境界を代わりに用いて、ネットワークポリシー、セキュリティ、及び、アドレッシングからの転送の分離を可能にする。
【0059】
クラウドコンピューティングは、共有リソースを用いてコンピューティングサービスを提供するために、1つ以上のネットワークに提供され得る。クラウドコンピューティングは、通常、コンピューティングリソースが動的にプロビジョニングされ、ネットワーク(例えば、クラウド)を介して利用可能なリソースの集合からオンデマンドでクライアントコンピュータ若しくはユーザコンピュータ又は他の装置に割り当てられるインターネットベースのコンピューティングを含むことができる。クラウドコンピューティングリソースは、例えば、コンピューティング、ストレージ、ネットワーク装置及び仮想マシン(VM)等の任意のタイプのリソースを含むことができる。例えば、リソースは、サービス装置(ファイヤウオール、ディープパケットインスペクタ、トラフィックモニタ、ロードバランサ等)、計算/処理装置(サーバ、CPU、メモリ、ブルートフォース処理機能)、ストレージデバイス(例えば、ネットワーク接続ストレージ、ストレージエリアネットワーク装置)等を有することができる。また、かかるリソースが用いられて、仮想ネットワーク、仮想マシン(VM)、データベース、アプリケーション(Apps)等をサポートすることができる。
【0060】
クラウドコンピューティングリソースは、「プライベートクラウド」、「パブリッククラウド」及び/又は「ハイブリッドクラウド」を有することができる。「ハイブリッドクラウド」は、技術を介して相互運用(inter−operate)又は連携(federate)する2つ以上のクラウドから構成されるクラウドインフラストラクチャとすることができる。本質的に、ハイブリッドクラウドは、プライベートクラウドがパブリックプラウドに加わり、パブリッククラウドリソースを安全且つスケーラブルに利用する、プライベートクラウド及びパブリッククラウド間の相互作用である。また、クラウドコンピューティングリソースは、VXLAN等のオーバーレイネットワーク内の仮想ネットワークを介して、プロビジョニングすることができる。
【0061】
ネットワークスイッチシステムでは、ルックアップデータベースを維持して、スイッチシステムに接続されたいくつかのエンドポイント間のルートを追跡することができる。しかし、エンドポイントは、様々な構成を有することができ、且つ、多数のテナントに関連付けられている。これらのエンドポイントは、各種識別子(例えば、IPv4、IPv6又はレイヤ2等)を有することができる。ルックアップデータベースは、異なるタイプのエンドポイント識別子を処理するために、異なるモードで構成される必要がある。ルックアップデータベースの容量は、着信パケットの異なるアドレスタイプを処理するように設計される。さらに、ネットワークスイッチシステム上のルックアップデータベースは、通常、1K仮想ルーティング及び転送(VRF)によって制限される。これにより、各種タイプのエンドポイント識別子を処理するために、改善されたルックアップアルゴリズムが必要とされている。本発明の技術は、電気通信ネットワークにおけるアドレスルックアップに必要な技術を提供する。本発明は、エンドポイント識別子を一様な空間にマッピングし、異なる形式のルックアップを一様に処理することによって、様々なタイプのエンドポイント識別子を統合するためのシステム、方法及びコンピュータ可読ストレージ媒体を開示する。例示的なシステム及びネットワークの手短な前置きは、
図3と
図4に示されるように、本明細書に開示される。これらの変形例は各種実施形態において説明される。本技術について
図3を参照する。
【0062】
図3は、本発明を実行するのに適したコンピューティングデバイス300の一例を示す図である。コンピューティングデバイス300は、マスタ中央処理装置(CPU)362と、インタフェース368と、バス315(例えば、PCIバス)と、を有する。CPU362は、適切なソフトウェア又はファームウェアの制御下で動作する場合、パケット管理、エラー検出、及び/又は、例えば配線ミス検出機能等のルーティング機能の実行を担う。CPU362は、好ましくは、オペレーティングシステム及び任意の適切なアプリケーションソフトウェアを含むソフトウェアの制御下で、これらの全ての機能を実現する。CPU362は、Motorolaファミリのマイクロプロセッサ又はMIPSファミリのマイクロプロセッサ等1つ以上のプロセッサ363を含むことができる。他の実施形態において、プロセッサ363は、コンピューティングデバイス300の操作を制御するために特別に設計されたハードウェアである。特定の実施形態において、メモリ361(例えば、不揮発性RAM及び/又はROM)は、さらに、CPU362の一部を形成する。しかし、メモリをシステムに接続し得る多くの異なる方法がある。
【0063】
インタフェース368は、通常、インタフェースカード(「ラインカード」と呼ばれることもある)として提供される。一般に、それらは、ネットワークを介してデータパケットの送受信を制御し、コンピューティングデバイス300で使用される他の周辺装置をサポートすることがある。インタフェースの中から、イーサネット(登録商標)インタフェース、フレームリレーインタフェース、ケーブルインタフェース、DSLインタフェース、トークンリングインタフェース等を使用することができる。また、各種超高速インタフェースは、高速トークンリングインタフェース、ワイヤレスインタフェース、イーサネット(登録商標)インタフェース、ギガビットイーサネット(登録商標)インタフェース、ATMインタフェース、HSSIインタフェース、POSインタフェース、FDDIインタフェース等を使用することができる。一般に、これらのインタフェースは、適切な媒体と通信する適切なポートを有する。いくつかの実施形態において、インタフェースは、さらに、独立したプロセッサと、場合によっては揮発性RAMと、を有する。独立したプロセッサは、パケット交換、媒体制御及び管理等の通信集中型タスクを制御することができる。通信集中型タスク用に別個のプロセッサを提供することにより、これらのインタフェースは、マスタマイクロプロセッサ362が、ルーティング計算、ネットワーク診断、セキュリティ機能等を効率的に実行できるようにする。
【0064】
図3に示されるシステムは、本発明の1つの特定のコンピューティングデバイスであるが、本発明の唯一のネットワーク装置構造であることを意味するのではない。例えば、通信やルーティング計算等を処理する単一のプロセッサを有するアーキテクチャが頻繁に用いられる。さらに、別のタイプのインタフェース及び媒体も、ルータと共に使用することができる。
【0065】
ネットワークデバイスの構成にかかわらず、本明細書に記載のローミング、ルート最適化及びルーティング機能を実行する汎用ネットワーク操作及びメカニズムのためのプログラム命令を記憶するように構成された1つ以上のメモリ又はメモリモジュール(メモリ361を有する)を使用することができる。プログラム命令は、オペレーティングシステム、及び/又は、1つ以上のアプリケーションの操作を制御することができる。メモリ又は複数のメモリは、モビリティバインディング、登録、及び関連テーブル等のテーブルを記憶するように構成することができる。
【0066】
図4及び
図5は、本発明の実施形態による例示的なシステムを示す図である。当業者であれば、本発明の技術を実施する場合、より適切な実施形態を理解することができるであろう。当業者であれば、他のシステムの実施形態も可能であることが理解できるであろう。
【0067】
図4は、システムバスコンピューティングシステム構造400を示す図であり、システムのコンポーネントは、バス402を用いて互いに電気的に通信する。例示的なシステム400は、処理ユニット(CPU又はプロセッサ)430と、システムバス402と、を有する。システムバス402は、システムメモリ404、読み取り専用メモリ(ROM)406及びランダムアクセスメモリ(RAM)408を含む各種システムコンポーネントをプロセッサ430に接続する。システム400は、高速メモリのキャッシュを有し、キャッシュは、プロセッサ430に直接接続され、プロセッサ430に隣接して接続され、又は、プロセッサ430の一部として統合されてもよい。システム400は、プロセッサ430による高速アクセスのために、メモリ404及び/又はストレージデバイス412からキャッシュ428にデータをコピーしてもよい。この方法において、キャッシュは、プロセッサ430がデータを待つ間に遅延が生じるのを防止する性能向上を提供する。これら及び他のモジュールは、様々な動作を実行するためにプロセッサ430を制御するように構成される。他のシステムメモリ404も同様に使用可能である。メモリ404は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを有することができる。プロセッサ430は、プロセッサ430を制御するように構成されたストレージデバイス412に記憶された第1モジュール414、第2モジュール416及び第3モジュール418等の任意の汎用プロセッサ及びハードウェアモジュール又はソフトウェアモジュールを含むことができ、ソフトウェア命令は、実際のプロセッサ設計に組み込まれる。プロセッサ430は、実質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ等を含む完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
【0068】
ユーザがコンピューティングデバイス400と相互作用できるようにするため、入力装置420は、任意の数の入力メカニズム(例えば、スピーチ用のマイクロフォン、ジェスチャ又はグラフィカル入力用のタッチスクリーン、キーボード、マウス、モーション入力等)を表すことができる。出力装置422は、従来の技術で知られる1つ以上の数の出力メカニズムである。場合によっては、マルチモーダルシステムは、ユーザがコンピューティングデバイス400と通信するために、複数のタイプの入力を提供できるようにする。通信インタフェース424は、通常、ユーザ入力及びシステム出力を支配及び管理することができる。特定のハードウェア構成における操作に制限がないため、ここでの基本的な機能は、改良されたハードウェアやファームウェアの構成が開発されるときに容易に置き換えることができる。
【0069】
ストレージデバイス412は不揮発性メモリであり、ハードディスク、又は、コンピュータがアクセス可能なデータを記憶することの可能な他のタイプのコンピュータ可読媒体(例えば、磁気カセット、フラッシュメモリカード、ソリッドステートメモリ装置、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)408、読み取り専用メモリ(ROM)406及びこれらの組み合わせ等)であってもよい。
【0070】
ストレージデバイス412は、プロセッサ430を制御するためのソフトウェアモジュール414,416,418を有してもよい。他のハードウェア又はソフトウェアモジュールも含まれ得る。ストレージデバイス412は、システムバス402に接続されてもよい。一実施形態において、特定の機能を実行するハードウェアモジュールは、機能を実行するために、必要なハードウェアコンポーネント(例えば、プロセッサ430、バス402、ディスプレイ436等)と接続するコンピュータ読み取り可能媒体に記憶されたソフトウェアコンポーネントを含むことができる。
【0071】
コントローラ410は、システム400上の特殊なマイクロコントローラ又はプロセッサ(例えば、BMC(ベースボード管理コントローラ))であってもよい。場合によっては、コントローラ410は、インテリジェントプラットフォーム管理インタフェース(IPMI)の一部であってもよい。さらに、場合によっては、コントローラ410は、システム400のマザーボード又はメイン回路基板に組み込まれてもよい。コントローラ410は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインタフェースを管理することができる。また、コントローラ410は、以下に説明するように、例えばコントローラ又は周辺コンポーネント等の各種システムデバイス及びコンポーネント(内部及び/又は外部)と通信することができる。
【0072】
コントローラ410は、通知、警告、及び/又は、イベントに対する特定の応答を生成し、遠隔装置又はコンポーネント(例えば、電子メールメッセージ、ネットワークメッセージ等)と通信し、自動ハードウェア回復工程等の指令や命令を生成する。システム管理者は、以下に更に説明するように、コントローラ410と遠隔通信して、特定のハードウェア回復工程又は操作を開始又は実行することができる。
【0073】
システム400上の異なるタイプのセンサ(例えば、センサ426)は、例えば冷却ファン速度、電源状態、オペレーティングシステム(OS)状態、ハードウェア状態等のパラメータをコントローラ410に報告する。また、コントローラ410は、コントローラ410により受信されたイベント、警告、通知を管理及び記憶するシステムイベントログコントローラ及び/又はストレージを有してもよい。例えば、コントローラ410又はシステムイベントログコントローラは、1つ以上の装置及びコンポーネントからの警告や通知を受信し、当該警告や通知をシステムイベントログストレージコンポーネント内に維持することができる。
【0074】
フラッシュメモリ432は、ストレージ及び/又はデータ転送に用いられるシステム400によって使用される電子不揮発性コンピュータストレージ媒体又はチップであってもよい。フラッシュメモリ432は、電気的に消去及び/又は再プログラムされ得る。フラッシュメモリ432は、例えば、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、ROM、NVRAM、又は、相補型MOS(CMOS)を有する。フラッシュメモリ432は、システム400が起動するときに、システム400により実行されるファームウェア434を、ファームウェア434に対して指定された構成のセットとともに記憶することができる。さらに、フラッシュメモリ432は、ファームウェア434により用いられる構成を記憶することができる。
【0075】
ファームウェア434は、基本入力/出力システム(BIOS)又はその後継品、等価物(例えば、エクステンシブルファームウェアインタフェース(EFI)又はユニファイドエクステンシブルファームウェアインタフェス(UEFI))を有する。システム400が起動される毎に、ファームウェア434は、シーケンスプログラムとしてロードされ、実行される。ファームウェア434は、構成のセットに基づいて、システム400に存在するハードウェアを識別、初期化、テストする。ファームウェア434は、システム400上でのセルフテスト(例えば、パワーオンセルフテスト(POST))を実行する。このセルフテストは、各種ハードウェアコンポーネント(例えば、ハードディスクドライブ、光学読み取り装置、冷却装置、メモリモジュール、拡張カード等)の機能性をテストする。ファームウェア434は、オペレーティングシステム(OS)を記憶するために、メモリ404、ROM406、RAM408及び/又はストレージデバイス412内の領域をアドレス及び割り当てることができる。ファームウェア434は、ブートローダ及び/又はOSをロードし、システム400の制御をOSに与えることができる。
【0076】
システム400のファームウェア434は、ファームウェア434がシステム400内の各種ハードウェアコンポーネントをどのように制御するかを定義するファームウェア構成を有することができる。ファームウェア構成は、システム400内の各種ハードウェアコンポーネントが起動される順序を判断する。ファームウェア434は、各種異なるパラメータの設定を許可するインタフェース(例えば、UEFI)を提供することができ、このパラメータは、ファームウェアのデフォルト設定のパラメータとは異なる。例えば、ユーザ(例えば、システム管理者)は、ファームウェア434を用いて、クロック及びバス速度を指定し、どの周辺機器をシステム400に取り付けるか指定し、監視の状態(例えば、ファン速度及びCPU温度制限)を指定し、システム400のパフォーマンス全体及び電力使用量に影響する多種の他のパラメータを指定する。
【0077】
ファームウェア434は、フラッシュメモリ432に記憶されているものとして説明されているが、当業者は、ファームウェア434が、他のメモリ、コンポーネント(例えば、メモリ404又はROM406)に記憶することができるのを理解するであろう。しかし、示されたフラッシュメモリ432に記憶されたファームウェア434は説明目的の例であり、これに限定されない。
【0078】
システム400は1つ以上のセンサ426を有する。1つ以上のセンサ426は、例えば、1つ以上の温度センサ、熱センサ、酸素センサ、化学センサ、ノイズセンサ、ヒートセンサ、電流センサ、電圧検出器、気流センサ、流量センサ、赤外線放射温度計、熱流束センサ、温度計、高温計等を有する。1つ以上のセンサ426は、例えば、バス402を介して、プロセッサ、キャッシュ428、フラッシュメモリ432、通信インタフェース424、メモリ404、ROM406、RAM408、コントローラ410及びストレージデバイス412と通信する。また、1つ以上のセンサ426は、1つ以上の異なる手段(例えば、集積回路(I2C)、汎用出力(GPO)等を介して、システム内の他のコンポ―ネントと通信することができる。
【0079】
図5は、説明した方法又は操作の実行、並びに、グラフィカルユーザインタフェース(GUI)の生成及び表示に用いることができるチップセット機構を有する例示的なコンピュータシステム500を示す図である。コンピュータシステム500は、開示された技術を実行するのに用いられるコンピュータハードウェア、ソフトウェア及びファームウェアを含むことができる。システム500は、識別された計算を実行するように構成されたソフトウェア、ファームウェア及びハードウェアを実行することができる任意の数の物理的及び/又は論理的に異なるリソースを表すプロセッサ510を含むことができる。プロセッサ510は、プロセッサ510への入出力を制御することができるチップセット502と通信する。この例において、チップセット502は、情報を出力装置514(例えば、ディスプレイ)に出力し、ストレージデバイス516(磁気媒体、固体媒体を含む)に対して情報を読み書きする。また、チップセット502は、RAM518に対してデータをやり取りする。各種ユーザインタフェースコンポーネント506と相互作用するブリッジ504は、チップセット502と相互作用するために提供され得る。このようなユーザインタフェースコンポーネント506は、キーボード、マイクロフォン、タッチ検出及び処理回路、ポインティングデバイス(マウス等)を有する。一般に、システム500への入力は、機器及び/又は人間が生成した各種ソースの何れかから生じる。
【0080】
また、チップセット502は、異なる物理的インタフェースを有する1つ以上の通信インタフェース508と相互作用する。このような通信インタフェースは、有線及び無線のローカルエリアネットワーク、ブロードバンドワイヤレスネットワーク及びパーソナルエリアネットワークのためのインタフェースを有する。本発明におけるGUIを生成、表示及び使用する方法のいくつかのアプリケーションは、ストレージデバイス516又はランダムアクセスメモリ518に記憶されたデータを分析するプロセッサ510が、順序付けられたデータセットを、物理的インタフェースを介して又は機器自身により生成されることにより受信する工程を有する。さらに、機器は、ユーザインタフェースコンポーネント506を介して、ユーザからの入力を受信し、適切な機能(例えば、プロセッサ510を用いて、これらの入力を解釈することによりブラウズ機能を実行する)を実行する。
【0081】
さらに、チップセット502は、電源が投入されると、コンピュータシステム500によって実行され得るファームウェア512と通信することができる。ファームウェア512は、ファームウェア構成のセットに基づいて、コンピュータシステム500内に存在するハードウェアを認識、初期化及びテストすることができる。ファームウェア512は、システム500上でセルフテスト(例えば、POST)を実行する。セルフテストでは、各種ハードウェアコンポーネント502〜518の機能をテストすることができる。ファームウェア512は、OSを記憶するために、メモリ518内の領域をアドレス指定及び割り当てることができる。ファームウェア512は、ブートローダ及び/又はOSをロードし、システム500の制御をOSに与える。場合によっては、ファームウェア512は、ハードウェアコンポーネント502〜510及び514〜518と通信する。ここで、ファームウェア512は、チップセット502及び/又は1つ以上の他のコンポーネントを介して、ハードウェアコンポーネント502〜510及び514〜518と通信する。場合によっては、ファームウェア512は、ハードウェアコンポーネント502〜510及び514〜518と直接通信することができる。
【0082】
例示的なシステム300,400,500は、より大きな処理能力を提供するために、2つ以上のプロセッサ(例えば、363,430,510)を有することができ、又は、ネットワーク接続されたコンピューティングデバイスのグループ又はクラスタの一部であり得ることが理解されるであろう。
【0083】
説明をわかりやすくするために、ある実施形態において、装置、デバイスコンポーネント、ソフトウェアで実施される方法における工程やルーティン、又は、ハードウェアとソフトウェアの組み合わせを含む個々の機能ブロックを有するものとして提示することができる。
【0084】
いくつかの実施形態において、コンピュータ可読ストレージデバイス、媒体及びメモリは、ビットストリーム等を含むケーブル又は無線信号を有する。しかし、言及されるとき、非一時的な(non−transitory)コンピュータ読み取り可能ストレージ媒体は、エネルギー、キャリア信号、電磁波及び信号そのもの等の媒体を明確に排除する。
【0085】
上記の例における方法は、コンピュータ読み取り可能媒体に記憶されるか利用可能なコンピュータ実行可能命令を用いて実施される。このような命令は、例えば、特定の機能又は機能グループを実行する汎用コンピュータ、専用コンピュータ又は特殊用途処理装置をもたらすか構成する命令及びデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例えば、バイナリ、中間フォーマット命令(例えば、アセンブリ言語)、ファームウェア又はソースコードである。命令、使用した情報、及び/又は、説明した例による方法において生成された情報を記憶するために用いることができるコンピュータ読み取り可能媒体の例は、磁気又は光学ディスク、フラッシュメモリ、不揮発性メモリを備えるUSBデバイス、ネットワークストレージデバイス等を含む。
【0086】
これらの開示における方法を実施する装置は、ハードウェア、ファームウェア及び/又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、PDA、ラックマウント型装置、スタンドアロン装置等を有する。ここで説明される機能は、周辺装置又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一の装置で実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
【0087】
命令、かかる命令を伝達する媒体、それらを実行するコンピューティングリソース、及び、かかるコンピューティングリソースをサポートする他の構造は、本明細書に記載の機能を提供する手段である。
【0088】
本発明の各種実施形態は、管理者又はコントローラがサーバシステム上でBIOSセットアップオプションを更新し、その後、同一のBMC VLAN内の別のサーバシステム上で、BIOSセットアップオプションを自動的に更新するのを可能にするシステム及び方法を提供する。特定の実施形態では、任意の操作を異なる命令でどのように実現するかを示しているが、他の実施形態では、任意の操作を異なる命令に組み込むことができる。説明を明瞭にするために、本発明のいくつかの実施形態において、デバイス、デバイスコンポーネント、ソフトウェア、又は、ハードウェアとソフトウェアの組み合わせで実現される方法における工程若しくはルーティンを有する機能ブロックを含むものとして示される。
【0089】
各種実施形態は、場合によっては、いくつかのアプリケーションの何れかを動作させるために用いられる、1つ以上のサーバコンピュータ、ユーザーコンピュータ又はコンピューティングデバイスを有する多種多様な動作環境で実施することができる。ユーザ又はクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップ又はラップトップコンピュータ等の多数の汎用パーソナルコンピュータ、並びに、モバイルソフトウェアを実行し、いくつかのネットワーク及びメッセージプロトコルをサポートすることができるセルラ、ワイヤレス及びハンドヘルド装置を含むことができる。このようなシステムは、さらに、開発及びデータベース管理等の目的のために様々な市販のオペレーティングシステム及び他の既知のアプリケーションを実行するいくつかのワークステーションを有する。これらの装置は、他の電子装置(例えば、ダミー端末、シンクライアント、ゲームシステム、及び、ネットワークを介して通信可能な他の装置等)を有する。
【0090】
本発明のいくつかの実施態様又はその一部がハードウェアで実現される限り、本特許出願は、以下の技術の何れか又は組み合わせにより実現される。例えば、データ信号に基づきロジック機能を実行するロジックゲートを有する離散ロジック回路、適切な組み合わせロジックゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)等のプログラマブルハードウェア、フィールドプログラマブルゲートアレイ(FPGA)等が含まれる。
【0091】
ほとんどの実施形態は、例えばTCP/IP、OSI、FTP、UPnP、NFS、CIFS、AppleTalk(登録商標)等の商用のプロトコルの何れかを用いて通信をサポートするために、当業者によく知られている少なくとも1つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、および、これらの任意の組み合わせである。
【0092】
上記の例における方法は、コンピュータ読み取り可能媒体に記憶されるか利用可能なコンピュータ実行可能命令を用いて実施される。このような命令は、例えば、特定の機能又は機能グループを実行する汎用コンピュータ、専用コンピュータ又は特殊用途処理装置をもたらすか構成する命令及びデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例えば、バイナリ、中間フォーマット命令(例えば、アセンブリ言語)、ファームウェア又はソースコードである。命令、使用した情報、及び/又は、説明した例による方法において生成された情報を記憶するために用いることができるコンピュータ読み取り可能媒体の例は、磁気又は光学ディスク、フラッシュメモリ、不揮発性メモリを備えるUSBデバイス、ネットワークストレージデバイス等を含む。
【0093】
これらの開示における方法を実施する装置は、ハードウェア、ファームウェア及び/又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、サーバコンピュータ、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、PDA等を有する。ここで説明される機能は、周辺装置又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一の装置で実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
【0094】
ウェブサーバを用いた実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Java(登録商標)サーバ、及び、ビジネスアプリケーションサーバを有する任意の種類のサーバ又は中間層アプリケーションを実行することができる。サーバは、ユーザ装置からの要求に応じて、例えば、任意のプログラミング言語(例えば、Java(登録商標)、C、C#、C++)、任意のスクリプト言語(例えば、Perl、Python、TCL)、及びこれらの組み合わせで書き込まれる1つ以上のスクリプト又はプログラムとして実行される1つ以上のウェブアプリケーションを実行すること等により、プログラムやスクリプトを実行することができる。サーバは、公開市場で市販されているものを含むがこれに限定されないデータベースサーバを含むことができる。
【0095】
サーバシステムは、前述の様々なデータ記憶、他のメモリ、及び、ストレージ媒体を有する。これらは、例えば、ストレージ媒体が1つ以上のコンピュータにローカル接続され(及び/又は存在する)、又は、ネットワークにより、任意の若しくは全てのコンピュータから遠隔で連結される等のように、様々な場所に存在し得る。一組の特定の実施形態において、情報は、当業者によく知られているストレージエリアネットワーク(SAN)中に存在することができる。同様に、コンピュータ、サーバ又は他のネットワーク装置に起因する機能を実行するのに必要とされる任意のファイルは、必要に応じてローカル及び/又はリモートに格納することができる。システムがコンピュータ化された装置を含む場合、このような装置は、バスを介して電気的に接続されるハードウェアコンポーネントを有し、コンポーネントは、例えば、少なくとも1つの中央処理ユニット(CPU)と、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチセンサディスプレイコンポーネント、又は、キーパッド)と、少なくとも1つの出力装置(例えば、ディスプレイ装置、プリンタ、又は、スピーカ)と、を有する。このようなシステムは、さらに、1つ以上のストレージデバイス(例えば、ディスクドライブ、光学ストレージデバイス、及び、ソリッドステートストレージデバイス(例えば、ランダムアクセスメモリ(RAM)又はリードオンリメモリ(ROM))、及び、除去可能な媒体装置、メモリカード、フラッシュカード等)を有する。
【0096】
このような装置は、さらに、上述したように、コンピュータ可読ストレージ媒体読み取り機、通信装置(例えば、モデム、ネットワークカード(有線又は無線)、赤外線コンピューティングデバイス)、及び、ワーキングメモリを有する。コンピュータ可読ストレージ媒体読み取り機は、コンピュータ可読ストレージ媒体に接続され、又は、コンピュータ可読ストレージ媒体を受け入れる。コンピュータ可読ストレージ媒体は、リモート、ローカル、固定、及び/又は、取り外し可能なストレージデバイスを表してもよく、一時的及び又は永久的に、コンピュータ可読情報を含有、記憶、送信及び回収するストレージ媒体を表してもよい。システム及び各種デバイスは、一般に、少なくとも1つのワーキングメモリ装置に配置された複数のソフトウェアアプリケーション、モジュール、サービス、又は、他の素子を有し、当該他の素子は、オペレーティングシステム及びアプリケーションプログラム(例えば、クライアントアプリケーションまたはウェブブラウザ)を有する。前述した例に基づいて、様々な変形例を有することができることを理解されたい。例えば、カスタマイズされたハードウェアを使用することもでき、及び/又は、特定の素子をハードウェア/ソフトウェア(ポータブルソフトウェア(例えば、アプレット)を含む)若しくはこれらの両方で実施することができる。さらに、その他のコンピューティングデバイス(例えば、ネットワーク入/出力装置)への接続も使用される。
【0097】
コード又はコードの一部を含むストレージ媒体及びコンピュータ可読媒体は、従来技術で用いられる任意の適切な媒体(例えば、ストレージ媒体及びコンピューティング媒体)を含む。この媒体は、揮発性及び不揮発性、取り外し可能、並びに、非取り外し可能媒体に限定されず、任意の方法や技術で実現され、情報(例えば、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータ)を記憶及び/又は送信する。この媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、他の磁気ストレージデバイス、又は、他の任意の媒体を含み、必要な情報を記憶するのに用いられたり、システムデバイスによりアクセスされる。本明細書で提供される技術及び教示に基づいて、当業者であれば、本発明の各種態様を実施する他の方法及び/又は方法を理解するであろう。
【0098】
明細書及び図面は、限定的ではなく例示的なものとみなされるべきである。しかしながら、特許請求の範囲に記載された発明のより広い趣旨及び範囲から逸脱することなく、様々な修正及び変更を行うことができることは明らかであろう。