(58)【調査した分野】(Int.Cl.,DB名)
前記現在のメモリトポロジーは、前記サーバの前記少なくとも1つのメモリデバイスと少なくとも1つのメモリコントローラー間の接続情報を含むことを特徴とする請求項1〜3のいずれか1項に記載のサーバシステム。
命令を含む持続性コンピュータ可読ストレージ媒体であって、前記命令がサーバシステムの少なくとも1つのプロセッサにより実行されるとき、前記サーバシステムに、前記の請求項10〜13のいずれか1項に記載の方法を実行させることを特徴とする持続性コンピュータ可読ストレージ媒体。
【発明を実施するための形態】
【0014】
本発明の更なる特徴及び利点は、以下の本発明の好ましい実施形態についての説明、添付図面及び特許請求の範囲から明らかになるであろう。
【0015】
図1は、本発明の一実施態様による通信ネットワークにおけるサーバラック100のブロック図である。この例において、サーバラック100は、複数のノード(たとえば、101と102)、および、マイクロコントローラー105を有する。複数のノードは、互いに独立して操作できる。いくつかの実行において、複数のノードは、類似のコンピュータ能力、および、類似のメモリ容量を有する。別の実行において、複数のノードは、各種異なるサイズ、計算能力、および、メモリ容量を有する。
【0016】
各ノードは、サーバ(たとえば、1011と1021)、基本入出力システム(BIOS)(たとえば、1015と1025)、および、ベースボード管理コントローラー(BMC)(たとえば、1112と1122)を含む。各サーバは、少なくとも1つのプロセッサ、および、メモリデバイスを含む。この例において、サーバ1011は、プロセッサ1013、および、メモリデバイス1014を含み、サーバ1021は、プロセッサ1023、および、メモリデバイス1024を含む。
【0017】
本発明の各種具体例において、BMCは、各複数のノードに組み込まれる特殊化したマイクロコントローラー、たとえば、それぞれ、ノード101と102に組み込まれるBMC1112と1122である。BMCは、複数のノードのそれぞれのシステム管理ソフトウェアとハードウェアコンポーネンツ間のインターフェースを管理する。いくつかの実行において、複数のノードのそれぞれに組み込まれる異なる種類のセンサーは、BMCに対応するパラメータ(たとえば、温度、冷却ファン速度、電力状態、および/または、オペレーティングシステム(OS)状態)を報告する。BMCは、対応ノード上で、センサーを監視することもできる。センサー上の任意のパラメータが、ノードの潜在的な欠陥を示すプリセット極限を超えるとき、BMCは、ネットワークにより、マイクロコントローラー105、または、システム管理者に警告を送信する。マイクロコントローラー105、または、管理者は、さらに、BMCと通信して、対応ノード上のハードウェアコンポーネンツを制御するか、または、ある修正動作、たとえば、ノードのリセットや電源循環を実行して、ハングアップしたOSを再起動させる。いくつかの実施態様において、BMCとマイクロコントローラー105間の物理インターフェースは、たとえば、SBMbusバス、RS-232シリアルコンソール、または、インテリジェントプラットフォーム管理バス(IPMB)を含み、BMCが、マイクロコントローラー105、または、サーバラック100、または、通信ネットワーク中の別の管理コントローラーからの要求メッセージを受け入れられるようにする。
【0018】
この例において、BIOS1015と1025は、直接、それらの対応サーバに接続されて、初期化、および/または、テストする。BIOS104は、リードオンリーメモリ(ROM)、または、その他のストレージデバイス中に保存されるソフトウェアである。BIOS104は、複数のノードのそれぞれにロードされると共に、対応ノードのコンポーネントを初期化、または、テストするように作動し、その後、オペレーティングシステムを呼び出す。BIOS104は、さらに、ハードウェアコンポーネンツ、アプリケーションプログラム、および、オペレーティングシステムを、入力/出力装置(たとえば、キーボード、ディスプレイ)と作用させるための抽象化層を提供する。いくつかの実施態様において、オペレーティングシステムは、BIOS104により提供される抽象化層を無視して、ロード後、直接、対応ノード、または、複数のノードのハードウェアコンポーネンツにアクセスする。マイクロコントローラー105は、スイッチ103と複数のBMC(たとえば、1112と1122)のそれぞれ間で相互接続すると共に、スイッチ103を制御するように作動して、選択的に、複数のサーバの1つに切り換える。
【0019】
図1中のサーバラック100中には、サーバ1011と1021しか示されていないが、データを処理することができる各種電子、または、コンピュータデバイスは、サーバラック100中に含まれる。さらに、サーバラック中の電子、または、コンピュータデバイスは、各種アプリケーションを実行、および/または、各種オペレーティングシステムを用いることができるように設定される。これらのオペレーティングシステムは、これらに限定されないが、アンドロイド、バークレイソフトウェアディストリビューション(BSD)、iPhone OS (iOS)、Linux(登録商標)、OS X、Unix(登録商標)−like Real−timeオペレーティングシステム(たとえば、QNX)、Microsoft Windows(登録商標)、Windows(登録商標) Phone、および、IBM z/OSを含む。
【0020】
サーバラック100の所望の実行方式に基づいて、多種のネットワークとメッセージングプロトコルが用いられ、これらに限定されないが、例えばTCP/IP、オープンシステムインターコネクション(OSI)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UpnP)、ネットワークファイルシステム(NFS)、コモンインターネットファイルシステム(CIFS)、AppleTalk等を含む。当業者なら理解できるように、
図1に示されるサーバラック100は説明目的で用いられる。よって、本発明の各種具体例において、ネットワークシステムは、多種の適当な方式で、本案中のネットワークプラットフォームの配置を提供することができる。
【0021】
図1の実施例中、複数のノード(たとえば、101と102)も、特定の無線チャネルの演算範囲内で、1つ以上の電子装置と通信する1つ以上のワイヤレスコンポーネンツを含むことができる。無線チャネルは、無線方式で装置を通信させることができる任意の適当なチャネル、たとえば、ブルートゥース、セルラー、NFC、または、Wi−Fiチャネルである。従来簿技術からわかるように、この装置は、1つ以上の従来の有線通信接続を含むことができる。
【0022】
複数のノード(たとえば、101と102)は、さらに、各種アプローチを用いて電力を供給する(たとえば、従来のプラグインアプローチ、従来のプラグインアプローチにより再充電を行うバッテリー、または、その他のアプローチ、たとえば、パワーマットやその他の装置により無線(たとえば、容量性、または、誘導性)充電を行う)電力コンポーネンツを有する。各種その他の素子、および/または、組み合わせも各種具体例の範囲内である。
【0023】
図2は、本発明の一実施態様によるコンピュータシステムのメモリ障害許容率を増加する実施例の方法200を説明する。理解できることは、実施例の方法200は説明用であり、本発明のその他の方法中、同じ、または、類似の順序下で、または、同時に、余分の、少ない、または、代替性のステップを含むことができることである。
【0024】
実施例の方法200は、ステップ210で、コンピュータシステムが、メモリエラーを有するかを検出することから開始される。いくつかの実施態様において、メモリエラーが、メモリテストコンポーネントにより検出される。メモリテストコンポーネントは、メモリデバイスからのデータと参照データを比較すると共に、少なくとも比較結果に基づいて、メモリ障害が発生したか決定する。いくつかの実施態様において、メモリエラーの検出プロセスは、データを複数のメモリデバイスに書き込む工程、複数のメモリデバイスからデータを読み取る工程、読み取りデータと書き込みデータを比較する工程、および、少なくとも1つの読み取りデータが書き込みデータと異なるとき、メモリエラー信号を出力する工程、を有する。いくつかの実行において、複数のメモリデバイスからの読み取りデータが互いに比較される。複数のメモリデバイスの1つからの少なくとも1つの読み取りデータが、別のメモリデバイスからのデータと異なるとき、メモリエラー信号が出力される。
【0025】
ステップ220で、メモリエラーの検出時、メモリデバイスのメモリトポロジーが決定される。いくつかの実行において、コンピュータシステム中の1つ以上のメモリコントローラーは、メモリデバイスの状態、および/または、その他の情報をチェックする。
【0026】
いくつかの実施態様において、メモリトポロジーは、メモリデバイスと1つ以上のメモリコントローラー(図示しない)間の接続情報を含む。たとえば、メモリコントローラーは複数のメモリデバイスに接続される。いくつかの実施例は、メモリデバイスをグループ化して、メモリコントローラーのバンド幅に対応する単一指令に応答する。いくつかの実施態様において、メモリトポロジーは、さらに、複製装置を有し、メモリコントローラーからのアドレスと制御情報を受信する。複製装置は、二つ以上の実質複製アドレスと制御情報のコピーを、複数のメモリデバイスに送信する。
【0027】
いくつかの実施態様において、メモリトポロジーは、サーバラックのサーバ上の1つ以上のローカルメモリデバイス、および/または、1つ以上のリモートメモリデバイスを有する。1つ以上のリモートメモリデバイスは、サーバラック上の複数のサーバによりシェアされる。1つ以上のローカルメモリデバイスは、対応サーバのメインメモリになる。1つ以上のリモートメモリデバイスは、1つ以上のローカルメモリデバイスから強制退去されるページを保存する。一旦、1つ以上のローカルメモリデバイス中でミスが発生すると、1つ以上のリモートメモリデバイスで保存されるリモートページは、ローカルメモリデバイスに移動する。
【0028】
いくつかの実施態様において、サーバ上の1つ以上のローカルメモリデバイスは、二つ以上のタイプ(たとえば、高パフォーマンス高コスト、および、低パフォーマンス低コスト)を有する。高パフォーマンスのメモリデバイス(たとえば、DRAM)が用いられて、サーバ上のプロセッサにより用いられるアクティブページ/データを保存し、低パフォーマンスのメモリデバイス(たとえば、非揮発性ランダムアクセスメモリ(NVRAM))は、アイドル状態、または、アクセス頻度の低いページ/データを保存する。
【0029】
ステップ220で、メモリトポロジー決定後、ステップ221で、メモリトポロジーが、以前のメモリトポロジーと比べて変化しているか決定する。いくつかの実施態様において、従来のメモリ診断技術は、システム起動中、新しいメモリトポロジーと、以前に決定されたメモリトポロジーを比較するのに用いられる。
【0030】
メモリトポロジーが変化していない場合、ステップ230において、メモリエラー詳細がメモリマスクリストにロードされる。メモリマスクリストは、BIOS−可読装置(たとえば、NVRAMやEEPROM)に保存される。
【0031】
メモリエラー詳細は、メモリエラーに関連する物理アドレスを含む。サーバ上のプロセッサの物理アクセス空間は、プロセッサのOSにより用いられるページテーブルによりアドレスされる仮想空間からマップされる物理アクセス空間になる。いくつかの実施態様において、サーバ上のプロセッサの物理アクセス空間は、サーバ上の1つ以上のローカルメモリデバイス、および/または、1つ以上のリモートメモリデバイスの一部分の集合である。
【0032】
ステップ240において、メモリエラーに対応する物理アドレスが、サーバのプログラムとハードウェアコンポーネンツによりアクセスされるのを防止する。いくつかの実施態様において、メモリマスクリストに基づいて、システムBIOSは、メモリマスクリスト中で識別されたアドレスを“使用不能”として設定すると共に、OS、アプリケーションソフトウェア、および、別のハードウェアコンポーネンツが、物理アドレスにアクセスするのを防止する。いくつかの実施態様において、メモリエラーに対応する物理アドレスに隣接する所定範囲の物理アドレスもメモリマスクリストに加えられて、アクセスを禁止して、サーバのメモリ障害許容率を増加する。いくつかの実施態様において、メモリエラーに対応するダイ、および/または、隣接するダイの物理アドレスが、すべて、メモリマスクリスト中に含まれて、アクセスを禁止する。
【0033】
いくつかの実施態様において、メモリエラーに対応する物理アドレスがアクセスを禁じられるとき、物理アドレスに対応するページは、エラー訂正スキーム(たとえば、リードソロモンエラー訂正スキーム)を用いてリカバーされる。いくつかの実施態様において、1つ以上のローカルメモリデバイスの一部が、予約メモリとして動的に保留されて、1つ以上のローカルメモリデバイス中に保存されるデータをミラー、または、複製する。メモリエラーに対応する物理アドレスがアクセスを禁止されるとき、物理アドレスに対応するページは、1つ以上のローカルメモリデバイスの保留部分から回収、または、複製される。
【0034】
メモリトポロジーが変化している場合、ステップ260で、メモリマスクリストはクリアになり、次のステップで、サーバ上で、メモリエラーが発生するかを検出するプロセスが起動される。いくつかの実施態様において、ユーザーは、指令を送信して、メモリマスクリストをクリアにする。よって、ステップ250で、ユーザーの指令を受信して、メモリマスクリストをクリアにするとき、方法200は、ステップ260中で、メモリマスクリストをクリアにすると共に、方法200をもう一度開始して、サーバ上にメモリエラーがあるか検出する。
【0035】
図3は、本発明の各種具体例によるセルフテストを実行して、サーバシステム中、メモリ障害許容率を増加する実施例の方法300を説明する。実施例の方法300は、ステップ310で、セルフテストを実行することで開始される。セルフテストは、システムブーティングの一部分、プログラム実行の一部分、または、ユーザー初期化セルフテストプロセスである。セルフテストがシステムブーティングである場合、BIOSが実行される。“ハード”システムブーティングのとき、パワーオンセルフテスト(POST)が、まず、実行されて、サーバのハードウェアコンポーネンツが正常に実行されるか確認する。“ソフト”システムブーティングにおいて、POSTが省略できる。
【0036】
いくつかの実施態様において、メモリエラーを検出するプロセスは、BIOS、または、POSTが実行されるとき、または、セルフテストがアプリケーションプログラムにより実行されるときに実行される。ステップ320において、サーバシステム中で、メモリエラーがあるかを決定する。メモリエラーが検出されるとき、メモリエラー詳細がBIOS−可読装置(たとえば、NVRAMやEEPROM)にロードされる。メモリエラー詳細はメモリエラーに関連する物理アドレスを含む。メモリマスクリストによると、メモリマスクリスト中で識別された物理アドレスが“使用不能”として設定されると共に、OS、アプリケーションソフトウェア、および、サーバ中のその他のハードウェアコンポーネンツによりアクセスされるのを禁止する。
【0037】
メモリマスクリスト中で識別された物理アドレスがアクセスを禁止される、または、メモリエラーが検出されないとき、ステップ350で、セルフテストが完了する。いくつかの実施態様において、セルフテストがシステムブーティングの一部分である場合、ブートローダー(boot loader)は、メモリデバイスにロードされて(たとえば、メモリ位置0000:7C00にロードされる)、実行される。ブートローダーは、サーバに、オペレーティングシステム、または、その他のソフトウェアをロードするように操作可能である。いくつかの実施態様において、サーバのいくつかのサブシステムは、システムブーティング期間中、ROMに保存される操作可能なプログラムを簡単に実行することにより機能を開始する。
【0038】
いくつかの実施態様において、ステップ310で、システムブーティング中に、BIOSがダメージを受ける場合、1つ以上のローカルメモリデバイス、または、その他のストレージデバイスがチェックされて、BIOSのバックアップがあるかどうか探す。BIOSのバックアップファイルが見つかる場合、バックアップファイルがBIOSのメモリに書き込まれる。その後、リブートプロセスが実行される。いくつかの実施態様において、BIOSのダメージ部分が選択的に代替される。BIOSのバックアップファイルが、サーバで見つからない場合、サーバは、リモートメモリデバイスから、バックアップファイルを回収するか、または、インターネットから、サーバに対応するBIOSのバックアップファイルをダウンロードする。サーバのプロセッサは、バックアップBIOSファイルを読み取り、バックアップファイルをBIOSメモリに書き込むことができる。
【0039】
コンピュータネットワークは、地理的に分散したノードの集合で、これらのノードは、通信リンクとセグメントにより相互接続して、エンドポイント、たとえば、パソコン、および、ワークステーション間のデータを運ぶ。多くのタイプのネットワークは可用で、範囲は、ローカルエリアネットワーク(LAN)と広域ネットワーク(WAN)から、オーバーレイ、および、ソフトウェア定義ネットワーク、たとえば、仮想拡張ローカルエリアネットワーク(VXLAN)までである。
【0040】
LANは、通常、同じ一般の物理的な位置、たとえば、ビルやキャンパスに位置する専用のプライベート通信リンク上のノードと接続する。一方、WANは、通常、長距離通信リンク、たとえば、コモンキャリアテレフォンライン、光パス、同期光学ネットワーク(SONET)、または、同期デジタル階層(SDH)リンク上で、地理的に分散したノードと接続する。LANとWANは、層2(L2)、および/または、層3(L3)ネットワーク、および、装置を含む。
【0041】
インターネットはWANの例で、世界をまたぐ異種のネットワークを接続し、各種ネットワーク上のノード間のグローバル通信を提供する。ノードは、通常、所定プロトコル、たとえば、通信制御プロトコル/インターネットプロトコル (TCP/IP)にしたがって、データの離散フレーム、または、パケットを交換することにより、ネットワークで通信する。本説明において、プロトコルは、どのようにノードと互いに作用するかを定義する一組のルールを参照する。コンピュータネットワークは、さらに、中間ネットワークノード、たとえば、ルーターにより相互接続されて、各ネットワークの効果的な“サイズ”を拡張する。
【0042】
オーバーレイネットワークは、一般に、物理ネットワークインフラで、仮想ネットワークが生成、または、層状になる。ジェネリックルーティングカプセル化(NVGRE)、ネットワーク仮想化オーバーレイ(NVO3)、および、ステートレストランスポートトンネリング(STT)を用いるオーバーレイネットワークプロトコル、たとえば、仮想拡張LAN(VXLAN)、ネットワーク仮想化は、トラフィックカプセル化スキームを提供し、論理トンネルで、ネットワークトラフィックを、L1とL3ネットワークに流す。このような論理トンネルは、仮想トンネルエンドポイント(VTEP)により生成、および、終了する。
【0043】
さらに、オーバーレイネットワークは仮想セグメント、たとえば、VXLAN オーバーレイネットワーク中のVXLANセグメントを含み、これらのセグメントは、VM通信による仮想L2、および/または、L3オーバーレイネットワークを含む。仮想セグメントは、仮想ネットワーク識別子(VNI)、たとえば、特に、関連する仮想セグメント、または、ドメインを識別することができるVXLANネットワーク識別子により識別される。
【0044】
ネットワーク仮想化は、ハードウェア、および、ソフトウェアリソースが、仮想ネットワーク中で結合できるようにする。たとえば、ネットワーク仮想化は、対応する仮想LAN(VLAN)により、多くのVMが物理ネットワークに連接されるようにする。VMは、それらの対応するVLANにしたがってグループ化されると共に、その他のVM、および、内部、または、外部ネットワーク上のその他の装置と通信することができる。
【0045】
ネットワークセグメント、たとえば、物理、または、仮想セグメント、ネットワーク、装置、ポート、物理、論理リンク、および/または、トラフィックは、一般に、ブリッジ、または、フラッドドメインにグループ化される。ブリッジドメイン、または、フラッドドメインは、ブロードキャストドメイン、たとえば、L2ブロードキャストドメインを表す。ブリッジドメイン、または、フラッドドメインは、単一サブネットを含んでいるが、複数のサブネットを含んでもよい。さらに、ブリッジドメインは、ネットワークデバイス、たとえば、スイッチ上のブリッジドメインインターフェースと関連する。ブリッジドメインインターフェースは、L2ブリッジネットワークとL3ルートネットワーク間のトラフィックをサポートする論理的インターフェースである。その上、ブリッジドメインインターフェースは、インターネットプロトコル(IP)終端、VPN終端、アドレス分解処理、MACアドレッシングをサポートすることができる。ブリッジドメイン、および、ブリッジドメインインターフェースは、共に、同一インデックス、または、識別子により識別される。
【0046】
さらに、エンドポイント群(EPG)がネットワークに用いられて、アプリケーションをネットワークにマッピングする。特に、EPGは、ネットワーク中で、アプリケーションエンドポイントのグループ化を用いて、アプリケーションの群に対し、接続とポリシーを供給する。EPGは、コンテナとして作用し、アプリケーション、または、アプリケーションコンポーネンツを収集し、前述のポリシーロジックを実施する。EPGは、さらに、ネットワークポリシーの分離、セキュリティ、および、論理アプリケーション境界を用いて、前面のアドレスの代替を可能にすることができる。
【0047】
クラウドコンピューティングも、1つ以上のネットワークに提供されて、共有リソースを用いて、コンピューティングサービスを提供する。クラウドコンピューティングは、一般に、インターネットベースの計算サービスを含み、これらのネットワークリソースは、ネットワーク(たとえば、“クラウド”)により収集された可用リソースの集合による動態規定であり、且つ、クライアント、または、ユーザーコンピュータ、または、その他の装置オンデマンドに分配される。クラウドコンピューティングリソースは、あらゆるタイプのリソース、たとえば、計算、保存、および、ネットワークデバイス、バーチャルマシン(VM)等を含む。たとえば、リソースは、サービス装置(ファームウォール、ディープパケットインスペクター、トラフィックモニター、ロードバランサー等)、計算/処理装置(サーバ、CPUのメモリ、強力処理能力(brute force processing capability))、ストレージデバイス(たとえば、ネットワーク接続ストレージ、ストレージエリアネットワークデバイス)等を含む。その上、このようなリソースが用いられて、仮想ネットワーク、バーチャルマシン(VM)、データベース、アプリケーション(apps)等をサポートする。
【0048】
クラウドコンピューティングリソースは、“プライベートクラウド”、“パブリッククラウド”、および/または、“ハイブリッドクラウド”を含む。“ハイブリッドクラウド”は、技術により内部操作、または、連合する二つ以上のクラウドからなるクラウドインフラである。本質的に、ハイブリッドクラウドは、プライベート、および、パブリッククラウド間の相互作用で、プライベートクラウドは、パブリッククラウドを加えると共に、安全、且つ、拡張可能な方式で、パブリッククラウドリソースを利用する。クラウドコンピューティングリソースは、オーバーレイネットワーク、たとえば、VXLANで、仮想ネットワークにより規定される。
【0049】
ネットワークスイッチシステムにおいて、ルックアップデータベースは、スイッチシステムに取り付けられる多数のエンドポイント間のルートの追跡が維持される。しかし、エンドポイントは各種設定を有し、且つ、多くのテナントと関連する。これらのエンドポイントは、各タイプの識別子、たとえば、IPv4、IPv6、または、Layer−2を有する。ルックアップデータベースは、異なるモードで設定されて、異なるタイプのエンドポイント識別子を処理しなければならない。あるルックアップデータベースの容量が刻まれて(carved out)、異なるアドレスタイプの進入パケットを処理する。さらに、ネットワークスイッチシステム上のルックアップデータベースは、通常、1K仮想ルーティングと転送(VRFs)により制限される。よって、改善された検索アルゴリズムで、各タイプのエンドポイント識別子を処理することが望まれる。本発明の技術は、技術的な必要性に取り組んで、通信ネットワーク中の検索に取り組む。本発明は、システム、方法、および、コンピュータ可読ストレージ媒体を提供し、エンドポイント識別子をマッピングすることにより、各タイプのエンドポイント識別子を一様空間に統一すると共に、異なる形式の検索が、均一に処理されるようにする。これらのシステムとネットワークの例は、
図4と
図5の例中で簡単に紹介されている。これらの変化の例は、各種実施例中で記述される。技術に関する部分は
図4に戻る。
【0050】
図4は、本発明を実行するのに適当なコンピュータデバイス400を示す。コンピュータデバイス400は、マスター中央処理ユニッ(CPU)462、インターフェース468、および、バス415(たとえば、PCIバス)を含む。適切なソフトウェア、または、ファームウェアの制御下で作用するとき、CPU462は、パケット管理、エラー検出、および/または、ルーティング機能、たとえば、ミスケーブリング検出機能の実行を担当している。CPU462は、好ましくは、オペレーティングシステムを含むソフトウェア、および、適切なアプリケーションソフトウェアの制御下で、これらの機能すべてを完成させる。CPU462は、1つ以上のプロセッサ463、たとえば、マイクロプロセッサのモトローラファミリー、または、マイクロプロセッサのMIPSファミリーからのプロセッサを含む。代替実施例において、プロセッサ463は、特別に設計されたハードウェアで、コンピュータデバイス400の操作を制御する。特定の具体例において、メモリ461(たとえば、非揮発性RAM、および/または、ROM)も、CPU462の一部を形成する。しかし、多くの異なる方法があり、メモリは、システムに結合される。
【0051】
インターフェース468は、一般に、インターフェースカード(時に“ラインカード”と称される)として提供される。一般に、それらは、ネットワーク上で、データパケットの送受信を制御し、時に、コンピュータデバイス400により使用されるその他の周辺設備をサポートする。これらのインターフェースは、イーサネット(登録商標)インターフェース、フレームリレーインターフェース、ケーブルインターフェース、DSLインターフェース、トークンリングインターフェース等である。このほか、各種超高速インターフェースは、たとえば、高速トークンリングインターフェース、ワイヤレスインターフェース、イーサネット(登録商標)インターフェース、ギガビットイーサネット(登録商標)インターフェース、ATMインターフェース、HSSIインターフェース、POSインターフェース、FDDIインターフェース等である。一般に、これらのインターフェースは、適切な媒体との通信に適切なポートを含む。ある実施例において、それらは、独立プロセッサを含み、場合によっては、揮発性RAMを含む。独立プロセッサは、パケット交換、媒体制御と管理など、このような通信集中タスクを制御することができる。通信集中タスクのために、分離したプロセッサを提供することにより、これらのインターフェースは、マスターマイクロプロセッサ462が、ルーティング計算、ネットワーク診断、セキュリティ機能を効果的に実行することができるようにする。
【0052】
図4に示されるシステムは、本発明の1つの特定ネットワークデバイスであるが、決して、ネットワークデバイス構造だけが、本発明を実行できるのではない。たとえば、ルーティング計算等と同様に、通信を処理する単一プロセッサを有する構造がしばしば用いられる。さらに、別のタイプのインターフェースと媒体も、ルーターと共に用いられる。
【0053】
ネットワークデバイスがどのように配置されても、1つ以上のメモリ、または、メモリモジュール(メモリ461を含む)を用いて、ローミング、経路最適化、および、ルーティング機能の汎用ネットワーク操作とメカニズムのプログラム命令を保存する。プログラム命令は、たとえば、オペレーティングシステム、および/または、1つ以上のアプリケーションの操作を制御することができる。メモリも、複数の表、たとえば、モビリティバインディング(mobility binding)、登録、および、その他の関連表等を保存することができる。
【0054】
図5Aと
図5Bは、本発明の各種態様による可能なシステムを示す図である。当業者なら理解できるように、本発明を実現するとき、さらに適切な実施例を有するかもしれない。当業者なら、その他のシステムも可能であることが理解できる。
【0055】
図5Aは、従来のシステムバスコンピュータシステム機構500を示す図で、システムのコンポーネンツは、バス505を用いて互いに電気的に通信する。実施例のシステム500は、処理ユニット(CPU、または、プロセッサ)510とシステムバス505を含み、システムバス505は、システムメモリ515、たとえば、リードオンリーメモリ(ROM)520、および、ランダムアクセスメモリ(RAM)525を含む各種システムコンポーネンツを、プロセッサ510に結合する。システム500は、直接プロセッサ510に接続される、隣接する、または、プロセッサ510の一部として整合される高速メモリのキャッシュメモリを有する。システム500は、メモリ515、および/または、ストレージデバイス530からのデータを、キャッシュメモリ512にコピーして、プロセッサ510により快速アクセスする。これにより、キャッシュメモリは、パフォーマンスブーストを提供して、プロセッサ510がデータを待つときに遅延するのを防止する。これら、および、その他のモジュールは、プロセッサ510を制御する、または、制御するように設定されて、各種動作を実行する。別のシステムメモリ515も、この用途として用いることができる。メモリ515は、異なる性能特徴を有する複数の異なるタイプのメモリを含む。プロセッサ510は、任意の汎用プロセッサ、および、ハードウェアモジュール、または、ソフトウェアモジュール、たとえば、ストレージデバイス530中に保存されるモジュール532、モジュール534、および、モジュール536を有して、プロセッサ510と特殊用途のプロセッサを制御し、ソフトウェア命令は、実際のプロセッサ設計に組み込まれる。プロセッサ510は、本質的に、完全内蔵型コンピュータシステムで、マルチコア、または、プロセッサ、バス、メモリコントローラー、キャッシュメモリ等を含む。マルチコアプロセッサは、対称、または、非対称である。
【0056】
ユーザーとコンピュータデバイス500を相互作用させるため、入力装置545は、任意の数目の入力メカニズム、たとえば、スピーチ用のマイクロフォン、ジェスチャーや図形入力のタッチスクリーン、キーボード、マウス、動作入力、スピーチなどを示す。出力装置535も、従来の技術として知られている1つ以上の数目の出力メカニズムである。いくつかの実施例にいて、多様なシステムは、ユーザーに、多種のタイプの入力を提供させて、コンピュータデバイス500と通信する。通信用インターフェース540は、一般に、ユーザー入力とシステム出力を調節、および、管理する。特定のハードウェアアレンジにおいて操作上の制限がないので、ここでの基本特徴は、ハードウェア、または、ファームウェアアレンジを改善するために、容易に代替できる。
【0057】
ストレージデバイス530は非揮発性メモリで、且つ、ハードディスク、または、その他のタイプのコンピュータ可読媒体(たとえば、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)525、リードオンリーメモリ(ROM)520、および、その組み合わせ)で、コンピュータによりアクセスできるデータを保存することができる。
【0058】
ストレージデバイス530は、ソフトウェアモジュール532、534、536を含み、プロセッサ510を制御する。その他のハードウェア、または、ソフトウェアモジュールが考慮される。ストレージデバイス530はシステムバス505に接続される。一態様において、特定の機能を実行するハードウェアモジュールは、コンピュータ可読媒体に保存されるソフトウェアコンポーネントを含み、必要なハードウェアコンポーネンツ、たとえば、プロセッサ510、バス505、出力装置535(たとえば、ディスプレイ)等と連結されて、この機能を完成する。
【0059】
図5Bは、上述の方法を実行すると共に、グラフィカルユーザーインターフェース(GUI)を生成、表示するのに用いられるチップセット構造を有するコンピュータシステム550を説明する。コンピュータシステム550は、開示する技術を実行するのに用いられるコンピュータハードウェア、ソフトウェア、および、ファームウェアの例である。システム550は、プロセッサ555を含み、任意の数目の物理的に、および/または、論理的に異なるリソースを表し、これらのリソースは、ソフトウェア、ファームウェア、および、ハードウェアを実行して、識別計算(identified computations)を実行することができる。プロセッサ555は、プロセッサ555との入出力を制御することができるチップセット560と通信することができる。この例において、チップセット560は、情報を、出力装置565、たとえば、ディスプレイに出力すると共に、たとえば、磁気媒体、および、ソリッドステート媒体を含むストレージデバイス570に情報を書き込んだり、情報を読み取ったりすることができる。チップセット560は、また、RAM575からデータを読みとったり、データを書き込んだりすることができる。様々なユーザーインターフェースコンポーネンツ585と作用するブリッジ580が提供されて、チップセット560と相互作用する。このようなユーザーインターフェースコンポーネンツ585は、キーボード、マイクロフォン、タッチ検出処理回路、ポインティングデバイス、たとえば、マウス等を含む。一般に、システム550への入力は、様々なソース(機械生成、および/または、人が生み出す)によるものである。
【0060】
チップセット560は、異なる物理インターフェースを有する1つ以上の通信インターフェース590と相互作用する。このような通信インターフェースは、有線、または、無線ローカルエリアネットワーク、広帯域無線ネットワーク、および、パーソナルネットワークのインターフェースを含む。ここで開示されるGUIを生成、表示、および、用いる方法のあるアプリケーションは、物理インターフェースにより、順序付けされたデータセットを受信する、または、機器自身により、プロセッサ555を通じて、ストレージ570、または、RAM575に保存されるデータを分析する工程を含む。さらに、機器は、ユーザーインターフェースコンポーネンツ585により、ユーザーから入力を受信すると共に、適切な機能、たとえば、プロセッサ555を用いて、これらの入力を解釈することにより、ブラウジング機能を実行する。
【0061】
理解すべきことは、例のシステム500と550は、二個以上のプロセッサ510、または、ネットワーク連結のコンピュータデバイスの群、または、クラスタの一部を有して、優れた処理能力を提供する。
【0062】
説明を明確にするため、場合によっては、本発明は、個々の機能ブロックを含むものとして示され、これらのブロックは、複数の機能ブロックを含み、これらの機能ブロックは、複数の装置、装置コンポーネンツ、ソフトウェア、または、ハードウェアとソフトウェアの組み合わせで実現される方法中のステップや工程を含む。
【0063】
いくつかの例において、コンピュータ可読ストレージデバイス、媒体、および、メモリは、ビットストリーム等を含む有線、または、無線信号を含む。しかし、注意すべきことは、持続性コンピュータ可読ストレージ媒体は、明白に、媒体、たとえば、エネルギー、キャリア信号、電磁波、および、信号自身の媒体を排除する。
【0064】
上述の例による方法は、保存されるか、または、そうでなければ、コンピュータ可読媒体から得られるコンピュータ−実行可能命令を用いて実行される。このような命令は、汎用コンピュータ、特殊用途コンピュータ、または、特殊用途の処理装置に、ある機能や機能の群を実行するようにさせる、または、設定する、たとえば、命令、および、データを含む。用いられるコンピュータリソースの部分は、ネットワークによりアクセス可能である。コンピュータ実行可能命令は、たとえば、二元、中間フォーマット命令、たとえば、アセンブリ言語、ファームウェア、または、ソースコードである。記述される例にしたがって、命令、用いられた情報、および/または、方法中で生成される情報を保存するのに用いることができるコンピュータ可読媒体は、磁気、または、光学ディスク、フラッシュメモリ、USBデバイスを含み、非揮発性メモリ、ネットワークストレージデバイスなどを提供する。
【0065】
これらの開示に基づく方法を実施する装置は、ハードウェア、ファームウェア、および/または、ソフトウェアを含み、様々なフォームファクターを取り込むことができる。このようなフォームファクターの一般的な例は、ラップトップ、スマートフォン、小型フォームファクターパソコン、PDA等を含む。ここで記述される機能性は、また、周辺、または、拡張カードで実施される。このような機能性は、また、異なるチップ、または、異なるプロセスにより、単一デバイス上の過程で、更なる例により回路基板上で実施される。
【0066】
このような命令を伝達する命令、媒体、それらを実行する計算リソース、および、このような計算リソースをサポートするその他の構造は、これらの開示で記述される機能を提供する手段である。
【0067】
本発明の各種態様は、エンドポイント識別子を合成アドレスにマッピングすると共に、異なる形式の検索が均一に処理できるようにすることにより、各タイプのエンドポイント識別子を一体化する方法を提供する。特定の例は、どのように、選択的操作が異なる命令で用いられるかを引用し、別の例は選択的操作を異なる命令に組み込むことができる。説明をはっきりさせるため、場合によっては、本発明は、個々の機能ブロックを含むものとして表示され、それらは、ソフトウェア、または、ハードウェアとソフトウェアの組み合わせで具体化される方法中の装置、装置コンポーネンツ、ステップ、または、ルーティンを含む。
【0068】
各種実施例は、さらに、幅広い操作環境ででき、ある状況下で、任意の数量のアプリケーションを操作するのに用いられる1つ以上のサーバコンピュータ、ユーザーコンピュータ、または、コンピュータデバイスを含む。ユーザー、または、クライアント装置は、任意の数量の汎用パソコン、たとえば、標準のオペレーティングシステムで操作するデスクトップ、または、ラップトップコンピュー、および、モバイルソフトウェアを実行し、複数のネットワークとメッセージングプロトコルをサポートすることができるセルラー、ワイヤレス、および、携帯端末を含む。このようなシステムは、また、任意の様々な市販のオペレーティングシステムを実行する複数のワークステーション、および、たとえば、発展とデータベース管理を目的とするその他の既知のアプリケーションを含む。これらの装置は、別の電子装置、たとえば、ダミー端子、シンクライアント、ゲームシステム、および、ネットワークにより通信することができるその他の装置を含む。
【0069】
本発明は部分的にハードウェアで実行され、本発明は、以下の任意の技術、または、組み合わせで実行される:データ信号に基づいて論理機能を実行する論理ゲートを有する離散論理回路、適切な組み合わせの論理ゲートを有する特定用途向け集積回路(ASIC)、プログラム可能なハードウェア、たとえば、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)等。
【0070】
大部分の例は、当業者に熟知されている少なくとも1つのネットワークを用いて、任意の様々な市販のプロトコル、たとえば、TCP/IP、OSI、FTP、UpnP、NFS、CIFS、AppleTalk等を用いる通信をサポートする。ネットワークは、たとえば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、ワイヤレスネットワーク、および、それらの組み合わせである。
【0071】
上述の例による方法は、保存されるか、または、そうでなければ、コンピュータ可読媒体から得られるコンピュータ−実行可能命令を用いて実行される。このような命令は、汎用コンピュータ、特殊用途コンピュータ、または、特殊用途の処理装置に、ある機能や機能の群を実行するようにさせる、または、設定する、たとえば、命令、および、データを含む。用いられるコンピュータリソースの部分は、ネットワークによりアクセス可能である。コンピュータ実行可能命令は、たとえば、二元、中間フォーマット命令、たとえば、アセンブリ言語、ファームウェア、または、ソースコードである。記述される例にしたがって、命令、用いられた情報、および/または、方法中で生成される情報を保存するのに用いることができるコンピュータ可読媒体は、磁気、または、光学ディスク、フラッシュメモリ、USBデバイスを含み、非揮発性メモリ、ネットワークストレージデバイスなどを提供する。
【0072】
これらの技術による装置実行方法は、ハードウェア、ファームウェア、および/または、ソフトウェアを有し、様々なフォームファクターを取り込むことができる。このようなフォームファクターの一般的な例は、サーバコンピュータ、ラップトップ、スマートフォン、小型フォームファクターパソコン、PDA等を含む。ここで記述される機能性は、また、周辺機器、または、拡張カードで具体化される。このような機能性も、異なるチップ、または、異なるプロセスにより、単一装置上の過程で、さらなる例の方式により、回路板上で実施される。
【0073】
ウェブサーバを用いる例において、ウェブサーバは、HTTPサーバ、FTPサーバ、GCIサーバ、データサーバ、ジャバサーバ、および、ビジネスアプリケーションサーバを含む様々なサーバ、または、中間層アプリケーションを実行することができる。サーバは、たとえば、1つ以上のウェブアプリケーションを実行することにより、ユーザー装置からの要求に対応するプログラム、または、スクリプトを実行することができ、ウェブアプリケーションは、プログラミング言語、たとえば、Java(登録商標)、C、C♯、または、C++、または、任意のスクリプト言語、たとえば、Perl、Python、または、TCL、および、それらの組み合わせに書き込まれる1つ以上のスクリプト、または、プログラムとして実施される。サーバも、データベースサーバを含むことができ、自由市場からのこれらの市販のソフトウェアに限定されない。
【0074】
サーバファームは、上述のような様々なデータ、および、その他のメモリとストレージ媒体を含む。これらのサーバは、様々な位置、たとえば、1つ以上のコンピュータに接続される(および/または、その中に常駐する)、または、ネットワークにより、任意の、または、すべてのコンピュータから離れているストレージ媒体に存在する。一組の特別な実施例において、情報は、当業者により熟知のストレージエリアネットワーク(SAN)中に存在する。同様に、コンピュータ、サーバ、または、その他のネットワークデバイスに対して貢献する機能を実行する任意の必要なファイルは、局部的、および/または、遠隔で保存される。システムが、コンピュータ化装置を含むとき、このような装置は、バスにより電気的に結合されるハードウェア素子を含み、それらは、たとえば、少なくとも1つの中央処理ユニット(CPU)、少なくとも1つの入力装置(たとえば、マウス、キーボード、コントローラー、タッチパネルディスプレイ素子、または、キーボード)、および、少なくとも1つの出力装置(たとえば、ディスプレイ装置、プリンター、または、スピーカー)を含む。このようなシステムは、さらに、1つ以上のストレージデバイス、たとえば、ディスクドライブ、光学ストレージデバイス、および、ソリッドステートストレージデバイス、たとえば、ランダムアクセスメモリ(RAM)、または、リードオンリーメモリ(ROM)、および、リムーバブル媒体装置、メモリカード、フラッシュカード等を含む。
【0075】
このような装置は、また、上述のように、コンピュータ可読ストレージ媒体リーダー、通信装置(たとえば、モデム、ネットワークカード(無線、または、有線)、赤外線コンピュータデバイス)、および、ワーキングメモリを含む。コンピュータ可読ストレージ媒体リーダーは、コンピュータ可読ストレージ媒体と接続、または、それを受信するように設定され、コンピュータ可読ストレージ媒体は、リモート、ローカル、混合、および/または、リムーバブルストレージデバイス、および、一時的、および/または、さらに永久的に、コンピュータ可読情報を含有、保存、伝送、および、回収するストレージ媒体を表す。システムと各種装置は、さらに、一般的に、少なくとも1つのワーキングメモリデバイス中に位置する複数のソフトウェアアプリケーション、モジュール、サービス、または、その他の素子を含み、オペレーティングシステム、および、アプリケーションプログラム、たとえば、クライアントアプリケーション、または、ウェブブラウザを含む。理解すべきことは、上述の例は各種変化を有することである。たとえば、専用ハードウェアが用いられる、および/または、特定素子が、ハードウェア、ソフトウェア(ポータブルソフトウェア、たとえば、アプレットを含む)、または、両方で実施される。さらに、その他のコンピュータデバイス、たとえば、ネットワーク入力/出力装置への接続が用いられる。
【0076】
コード、または、コードの一部を含むストレージ媒体、および、コンピュータ可読媒体は、ストレージ媒体、および、計算媒体を含む従来の任意の適切な媒体を含み、揮発性、および、非揮発性、リムーバブル、および、非リムーバブル媒体に限定されず、任意の方法や技術で実行して、情報、たとえば、コンピュータ可読命令、データ構造、プログラムモジュール、または、その他のデータの保存、および/または、伝送を行い、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、または、その他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または、その他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または、その他の磁気ストレージデバイス、または、所望の情報を保存し、システム装置によりアクセスされる任意の別の媒体を含む。当業者は、ここで提供される技術と教示に基づいて、その他の方法、および/または、技術により、本発明の各種態様を実現することができる。
【0077】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。