(57)【特許請求の範囲】
【請求項１】
ネットワークデバイスにおけるフォワーディングデータベースのアップデートを受信するためのコンピュータ実施方法であって、前記方法は以下を備える、
前記ネットワークデバイスのデータベースエンジン部分に前記フォワーディングデータベースを保持すること、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、と、
前記グローバル同期値を第１のグローバル同期値から第２のグローバル同期値へ変更し、及び前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するためにクエリーを生成するコントローラ、ここにおいて、前記第１の１つまたは複数のエントリーは前記同期フィールドにおいて前記第１のグローバル同期値を有する、と、
複数のクエリー結果を返すように前記クエリーを実行すること、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは前記第１の１つまたは複数のエントリーを識別するために前記第１のグローバル同期値を用いる。
【請求項２】
前記フォワーディングデータベースにおける前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を示すメッセージを受信する前記ネットワークデバイスにおける前記コントローラをさらに備え、ここにおいて、前記グローバル同期値を該変更することは、前記メッセージに応答して実行される、請求項１のコンピュータ実施方法。
【請求項３】
前記コントローラが前記グローバル同期値を前記第２のグローバル同期値へ変更した後に生じる、前記フォワーディングデータベースにおける他のエントリーへの変更は、前記複数のクエリー結果の一部ではない、請求項１のコンピュータ実施方法。
【請求項４】
前記複数のクエリー結果に基づいて、前記コントローラにおけるコントローラデータベースをアップデートすることをさらに備える、請求項１のコンピュータ実施方法。
【請求項５】
前記複数のクエリー結果に基づいて、１つまたは複数の他のネットワークデバイスに複数のアップデートを提供する前記コントローラをさらに備える、請求項１のコンピュータ実施方法。
【請求項６】
前記コントローラにおいてコントローラデータベースを保持することと、
前記複数のクエリー結果を用いて前記コントローラデータベースをアップデートすることと、
前記メッセージを該受信することと、前記グローバル同期値を該変更することと、前記クエリーを該実行することと、前記コントローラデータベース及び前記フォワーディングデータベースを同期するために、複数回前記コントローラデータベースを該アップデートすることを該実行することと、
をさらに備える、請求項２のコンピュータ実施方法。
【請求項７】
前記クエリーは前記第１のグローバル同期値を備える、請求項１のコンピュータ実施方法。
【請求項８】
前記複数のエントリーのそれぞれは、アップデートフィールドを備え、ここにおいて、前記クエリーは、前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更のうちの少なくとも１つを判断するため、前記アップデートフィールドのための値を備える、請求項１のコンピュータ実施方法。
【請求項９】
前記複数のエントリーのそれぞれは、学習フィールドを備え、ここにおいて、前記方法は、
前記データベースエンジンによる変更を示す状態と関連付けられるように前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーを修正すること、ここにおいて、前記メッセージを該受信することは該修正することに応じて実行され、及びここにおいて、前記複数のクエリー結果は前記状態を有する前記少なくとも１つのエントリーに基づく、と、
前記クエリーを実行した後、前記少なくとも１つのエントリーに関する前記状態を異なる状態に変更することと、
をさらに備える、請求項２のコンピュータ実施方法。
【請求項１０】
前記グローバル同期値を変更した後、前記フォワーディングデータベースにおける第２のエントリーを修正すること、ここにおいて、前記第２のエントリーの前記同期フィールドは前記第２のグローバル同期値を備え、ここにおいて、前記複数のクエリー結果は前記第２のグローバル同期値に基づく前記第２のエントリーを備えない、をさらに備える請求項１のコンピュータ実施方法。
【請求項１１】
第２のメッセージに応じて、前記グローバル同期値を前記第１のグローバル同期値へ変更し、及び１つまたは複数の付加的な変更を判断するために、第２のクエリーを生成する前記コントローラと、
第２の複数のクエリー結果を返すように前記第２のクエリーを実行すること、ここにおいて、前記第２の複数のクエリー結果は、新しいエントリーを備える、と、
をさらに備える請求項１０のコンピュータ実施方法。
【請求項１２】
前記第１のグローバル同期値と前記第２のグローバル同期値の間の前記グローバル同期値を変更し、及び複数回前記フォワーディングデータベースにおける新しい変更を判断するために、前のグローバル同期値を用いて複数のクエリーを生成する、前記コントローラをさらに備える、請求項１のコンピュータ実施方法。
【請求項１３】
ネットワークデバイスであり、前記ネットワークデバイスは以下を備える、
データベースエンジン、ここにおいて、前記データベースエンジンはフォワーディングデータベースの第１のフォワーディングテーブルを保持するように構成され、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースは、グローバル同期値を備える、と、
前記データベースエンジンに結合されるコントローラ、ここにおいて、前記コントローラは、
前記グローバル同期値を第１のグローバル同期値から第２のグローバル同期値へ変更し、
前記第１のグローバル同期値を用いて、前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するためにクエリーを生成し、ここにおいて、前記第１の１つまたは複数のエントリーは、前記同期フィールドにおいて前記第１のグローバル同期値を有し、
前記データベースエンジンから複数のクエリー結果を受信する、ここにおいて、前記複数のクエリー結果は、前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、前記複数のクエリー結果は、前記第１の１つまたは複数のエントリーを識別するために前記第１のグローバル同期値を用いる、
ように構成され、及び
ここにおいて、前記コントローラが、前記グローバル同期値を前記第１のグローバル同期値から前記第２のグローバル同期値へ変更した後に生じる前記フォワーディングデータベースにおける他の複数のエントリーへの複数の変更は、前記複数のクエリー結果の一部ではない。
【請求項１４】
前記コントローラは、前記第１のフォワーディングテーブルに対応する第２のフォワーディングテーブルを格納し、
前記複数のクエリー結果に基づいて、前記第２のフォワーディングテーブルをアップデートする、
ようにさらに構成される、請求項１３のネットワークデバイス。
【請求項１５】
前記コントローラは、前記複数のクエリー結果に基づいて、１つまたは複数の他のネットワークデバイスに複数のアップデートを提供するようにさらに構成される、請求項１３のネットワークデバイス。
【請求項１６】
前記コントローラは、前記第１のフォワーディングテーブルにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を示すメッセージを受信する、ここにおいて、前記グローバル同期値を該変更することは、前記メッセージを受信することに応じて実行される、ようにさらに構成される、請求項１３のネットワークデバイス。
【請求項１７】
前記コントローラは、
第１のフォワーディングテーブルに対応する第２のフォワーディングテーブルを格納するように、
前記複数のクエリー結果に基づいて、前記第２のフォワーディングテーブルをアップデートするように、および、
前記メッセージを該受信することと、前記グローバル同期値を該変更することと、前記複数のクエリー結果を該受信することと、及び前記第１のフォワーディングテーブルと前記第２のフォワーディングテーブルを同期するために前記第２のフォワーディングテーブルを複数回該アップデートすることと、を実行するように、
さらに構成される、請求項１６のネットワークデバイス。
【請求項１８】
前記複数のエントリーのそれぞれは、アップデートフィールドを備え、ここにおいて、前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーは、前記少なくとも１つのエントリーの変更を示す前記アップデートフィールドにおける第１の値を備え、ここにおいて、前記複数のクエリー結果は前記アップデートフィールドの前記第１の値に基づく、請求項１３のネットワークデバイス。
【請求項１９】
前記エントリーのそれぞれは学習フィールドを備え、ここにおいて、前記データベースエンジンは、
前記データベースエンジンによる変更を示す状態と関連付けられるように前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーを修正し、ここにおいて、前記メッセージを該受信することは該修正することに応じて実行され、及びここにおいて、前記複数のクエリー結果は前記状態を有する前記少なくとも１つのエントリーに基づき、
前記複数のクエリー結果を提供するために前記クエリーを実行し、
前記クエリーを実行した後、前記少なくとも１つのエントリーに関する前記状態を異なる状態に変更する、
ように構成される、請求項１６のネットワークデバイス。
【請求項２０】
ネットワークデバイスにおいてフォワーディングデータベースからアップデートを受信するプログラム命令を記憶する非一時的なコンピュータアクセス可能記憶媒体であって、ここにおいて、前記プログラム命令はプロセッサによって以下をするように実行できる、
前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を示すメッセージを受信し、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備え、ここにおいて、前記第１の１つまたは複数のエントリーは前記同期フィールドにおいて第１のグローバル同期値を有し、
前記グローバル同期値を第２のグローバル同期値へ変更し、
前記フォワーディングデータベースにおける前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を判断するためにクエリーを生成し、ここにおいて、前記クエリーは前記第１の１つまたは複数のエントリーを識別するために前記第１のグローバル同期値を備え、
前記クエリーの複数のクエリー結果を受信する、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは前記第１の１つまたは複数のエントリーを識別するために前記第１のグローバル同期値を用いる、ここにおいて、前記グローバル同期値を前記第２のグローバル同期値へ該変更した後生じる前記フォワーディングデータベースにおける他の複数のエントリーへの変更は、前記複数のクエリー結果の一部ではない。
【請求項２１】
前記プログラム命令は、前記ネットワークデバイスのコントローラのプロセッサによって実行可能であり、及びここにおいて、前記メッセージは、前記ネットワークデバイスのデータベースエンジンから受信される、請求項２０の非一時的なコンピュータアクセス可能記憶媒体。
【請求項２２】
前記複数のプログラム命令は、前記フォワーディングデータベースに対応する第２のフォワーディングデータベースを保持し、
前記複数のクエリー結果に基づいて、前記第２のフォワーディングデータベースをアップデートするためにさらに実行可能である、請求項２０の非一時的な、コンピュータアクセス可能記憶媒体。
【請求項２３】
ネットワークデバイスのフォワーディングデータベースのアップデートを提供するための方法であって、前記方法は以下を備える、
前記ネットワークデバイスのデータベースエンジン部分における前記フォワーディングデータベースを保持すること、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、と、
前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーを修正すること、ここにおいて、前記第１の１つまたは複数のエントリーは、前記同期フィールドにおいて第１のグローバル同期値を有する、と、
コントローラからのコマンドに応じて、前記グローバル同期値を第２のグローバル同期値へ修正することと、
前記第１のグローバル同期値を用いて前記フォワーディングデータベースのクエリーを実行すること、ここにおいて、前記クエリーは前記第１の１つまたは複数のエントリーへの１つまたは複数の変更を備え、ここにおいて、前記グローバル同期値を前記第２のグローバル同期値へ該修正した後生じる前記フォワーディングデータベースにおける他のエントリーへの変更は、前記複数のクエリー結果の一部ではない、と、及び
前記コントローラに前記複数のクエリー結果を提供すること。
【請求項２４】
前記フォワーディングデータベースへの変更を示す前記ネットワークデバイスにおけるコントローラにメッセージを提供することをさらに備える、請求項２３の方法。
【請求項２５】
前記コントローラは第２のフォワーディングデータベースを保持し、ここにおいて、前記コントローラは、前記第２のフォワーディングデータベースをアップデートするために前記複数のクエリー結果を用いるように構成される、請求項２３の方法。
【請求項２６】
前記コントローラは、他のデータベースエンジンにおける前記フォワーディングデータベースをアップデートするために、前記複数のクエリー結果を用いるように構成される、請求項２３の方法。
【請求項２７】
前記コントローラは、関連したデータベースエンジンをアップデートするために別のコントローラにメッセージを送信するために、前記複数のクエリー結果を用いるように構成される請求項２３の方法。
【請求項２８】
ネットワークデバイスのフォワーディングデータベースのアップデートを受信するためのシステムであって、前記システムは以下を備える、
前記ネットワークデバイスのデータベースエンジン部分における前記フォワーディングデータベースを保持するための手段、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期値を有する同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、と、
前記グローバル同期値を第２のグローバル同期値へ変更し、及び前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するために、クエリーを生成する手段、ここにおいて、前記第１の１つまたは複数のエントリーは前記同期フィールドにおける第１のグローバル同期値を有する、と、
複数のクエリー結果を返すように前記クエリーを実行するための手段、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは、前記第１の１つまたは複数のエントリーを識別するために前記第１のグローバル同期値を用いる。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にネットワークシステムに関し、より詳細には、フォワーディングデータベースをコントローラと同期させるシステム及び方法に関する。
【先行技術の記載】
【０００２】
通信ネットワークはコンピュータ、サーバ、ルータ、スイッチ、ブリッジ、ハブ、及び他のタイプのネットワークノードのような様々なネットワークデバイスを含んでもよい。データは、データをソースデバイスから宛先デバイスまで移動させるために、様々なデバイス間のデータパケットまたはフレームを通過することによって、データ通信ネットワークを介して伝達される。インターネットのような広域通信ネットワークにおいて、パケットは複数のネットワークエレメントによって操作または処理されても良く、並びにソースデバイスから宛先デバイスへ移動するパケットとして、複数の通信リンクを横切っても良い。
【０００３】
スイッチ、ブリッジ、及びルータのようなネットワーク内の特定のデバイスは、ネットワークトラヒックを管理及び規制する。例えば、これらのデバイスは受信されたパケットを解析し並びにそれらをネットワークにおける他のデバイスに送信する。スイッチのようなネットワークデバイスがパケットを受信する場合、スイッチはパケットから宛先アドレスを検索し及びフォワーディングデータベース内の宛先用の出力ポートを検索する。フォワーディングデータベースはアドレスと対応するポートの間のマッピングから成る複数のテーブルを備える。スイッチは次にパケットを識別された宛先ポートに送る。
【０００４】
ネットワークスイッチングシステムは、各着信パケットのソースアドレスとポート情報をフォワーディングデータベースに登録することによってフォワーディングデータベースを生成し得る。ＩＥＥＥ８０２.１Ｄ、媒体アクセス制御（「ＭＡＣ」）ブリッジに関する標準は、フォワーディングデータベースの生成及びネットワークパケットの送信及び受信のための操作手順を提供する。
【０００５】
ネットワークシステムにおいて、様々なネットワークデバイス（例えば、スイッチ）がそれらのフォワーディングデータベースを同期させることが重要である。現在、フォワーディングデータベースは、待ち行列を用いることによって複数のスイッチの間で同期されている。待ち行列は、エントリー追加、更新及び削除を含む全ての変化をフォワーディングデータベース内のテーブルに記録する。スイッチ内のコントローラは待ち行列を読み取ることによってその変化を検索する。
【０００６】
スイッチはフォワーディングデータベース内の情報を利用するコントローラとフォワーディングデータベースを管理するデータベースエンジンを含む。データベースエンジンとコントローラの処理能力におけるミスマッチのために、特に高速スイッチの場合、待ち行列は、コントローラによる操作を受けるために待機している全ての一時的な情報を記録するのに十分な大きさを有していない可能性がある。この影響を最小限に抑えるために、必要な場合、ハードウェアの設計者は大きな先入れ先出し（ＦＩＦＯ）待ち行列を用いるかまたは一時的にデータベースの変更を停止する、そうしないと、これらの変化がコントローラと同期しない可能性がある。
【０００７】
さらに、コントローラが実際に複数の変更のうちのいずれかを識別する前に複数の変更が１つのエントリーに対して起きる場合、スイッチの設計を簡易化するための通常のアプローチは複数の記録を用いてそれらを記録することになる。この設計は、攻撃者がＦＩＦＯ待ち行列を疲弊させるために、頻繁に１つのエントリーを簡単に変更可能な場合、サービスの妨害（ＤｏＳ）攻撃に対して脆弱であり、それによってデータベースの同期を停止することになる。
【０００８】
従って、この分野における改善が望ましい。
【発明の概要】
【０００９】
様々な実施例は、ネットワークデバイスにおいて、フォワーディングデータベースを同期させるためのシステム及び方法によって提供されている。
【００１０】
第１フォワーディングデータベースまたはテーブルは、ネットワークデバイスのデータベースエンジン部分に保持し得る。データベースエンジン部分は、主にハードウェアで実施され得る。さらに、第２フォワーディングデータベースまたはテーブルは、ネットワークデバイスのコントローラ部分によって保持され得る。コントローラ部分は、ネットワークデバイスのプロセッサ上で実行するソフトウェアとして実施され得るが、ハードウェアで実施される他の実施例も想定される。
【００１１】
第１フォワーディングデータベース及び第２フォワーディングデータベースは、いずれも複数のエントリーを含み得る。少なくとも前記第１フォワーディングデータベースにおいて、複数のエントリーのそれぞれは、他のフィールドとの間の同期フィールドを含み得る。第１及び第２フォワーディングデータベースは、下記でさらに詳細に論じるように、例えば第１フォワーディングデータベースの変更を第２フォワーディングデータベースに同期するために、グローバル同期値（global synchronization value）を含み得、または用い得る。追加のフィールドはまた、同期のために用いることができ、これらの追加フィールドは、アップデートフィールド（例えば、既存のフィールドがいつアップデートされたかを示すための）及び学習または状態フィールド（例えば、他の可能性の中で「自動学習済み」（auto learnt）、「制御学習済み」（controlled learnt）、「制御エイジング済み」（controlled aged）、及び／または「自動エイジング済み」（auto aged）のようなエントリーのステータスを示すための）である。他のフィールドは、同期の際に支援するために用いられ得る。同期に用いられるフィールドのうちの１つまたは複数は、第１フォワーディングデータベースにおいてのみ存在し得、及び第２フォワーディングデータベースには存在し得ないことに留意すべきである。例えば、この同期情報は第２フォワーディングデータベースにおいて必要でないこともあり得、例えば、アップデートは一般的にデータベースエンジン部分において生じ得、それから逆方向よりもむしろコントローラ部分に同期される。しかしながら、逆方向における同期は、例えばアップデートが他のネットワークデバイスから行われた場合、依然想定される。１つの実施例において、このような同期はここで論じられたのとは異なる方法で生じ得る。
【００１２】
操作の過程中、変更は第１フォワーディングデータベースにおいて生じ得、例えば、エントリーはデータベースのデータベースエンジン部分によって変更または追加され得る。従って、前記第１及び第２データベースは同期の範囲外になり得る。１つの特定の実施例において、第１フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの変更が実行され得る。これらの変更は、エントリーの追加または既存のエントリー内のフィールドの値の修正を含み得る。さらに、これらのエントリーは、現在の同期値に設定された同期値を有し得る。これらの変更に応じて、または定期的な方法で、データベースエンジン部分は、第２フォワーディングデータベースのアップデートが実行されるべきであることを示すために、コントローラに割り込みのようなメッセージを送信し得る。従って、ネットワークデバイス内のコントローラは、変更が生じたことを示すメッセージを受信し得る。
【００１３】
それに応じて、コントローラは、第１同期値から第２グローバル同期値へ、グローバル同期値を変更し得、同様に、第１フォワーディングデータベースにおける第１のエントリーへの１つまたは複数の変更を判断するために、クエリーを生成し得る。１つの実施例において、クエリーは、グローバル同期値、アップデート値、状態値、等のような第１フォワーディングデータベースにおけるフィールドと関連する様々な値を含みうるし、または用い得る。１つの実施例において、クエリーは、「制御学習済み」の第１グローバル同期値及び状態フィールドを有するそれらのエントリーを検索し得る。しかしながら、実施例は、前記グローバル同期値、前記アップデート値、または前記状態値（他の可能なフィールドのうちの）のいかなる組み合わせも用いられ得る場合が想定されることが留意されるべきである。
【００１４】
従って、クエリーは、複数のクエリー結果（例えば、データベースエンジン部分からコントローラ部分へ）を返すように実行され得る。複数のクエリー結果は、例えば、第１の１つまたは複数のエントリーを識別するために前記第１グローバル同期値を用いることによって、第１の１つまたは複数のエントリーへの１つまたは複数の変更を含み得る。
【００１５】
クエリー結果が取得された後、様々なフィールドのうちのいくつかのフィールドがリセットされ得る。例えば、同期されたエントリーは、アップデートフィールド値を、例えば、「１」（操作可能な）から「０」（操作不可能な）へ変更し得る。同様に、「制御学習済み」の状態値を有するエントリーは、例えば、「自動学習済み」に変更され得、例えばそのため、それらは、第１フォワーディングデータベースになされる変更に関する将来のクエリーにおいて返されない。いくつかの実施例において、これらの変更は、コントローラによって送信されたコマンドに基づいて、アップデートエンジンによって実行され得る。
【００１６】
さらに、コントローラがグローバル同期値を第２グローバル同期値に変更した後生じるフォワーディングデータベースにおける他のエントリーへの変更は、例えば、それらの値が第１ではなく第２グローバル同期値に割り当てられるので、クエリー結果の一部ではない。これらの場合、変更（例えば、修正または追加）が行われるとき、それらの同期フィールドは、現在のグローバル同期値（この例では、それは第２グローバル同期値）に設定され、そのため、これらの変更は、後続の同期の過程で識別され得る。従って、グローバル同期値は、エントリーが同期されたか、同期されなかったかを追跡するためのいくつかの同期の推移の間の２つの異なる値の間の「ピンポン」であり得る。
【００１７】
クエリー結果は、様々な方法において用いられ得る。上記に示したように、コントローラは、第２フォワーディングデータベースを保持し得、及び第２フォワーディングデータベースをアップデートするために（例えば、前記第１と第２フォワーディングデータベースを同期するために）、クエリー結果を用い得る。他の可能性として、クエリー結果は、ネットワークデバイスの他のデータベースエンジン部分（例えば、ネットワークデバイスが、コントローラ部分といくつかのデータベースエンジン部分を含み、それは、それらの各フォワーディングデータベースが同期されていることが必要であり得る）または他のネットワークデバイスをアップデートために用いられ得る。
【図面の簡単な説明】
【００１８】
下記の実施例の詳細な説明を下記の図面と併せて読むことにより、本発明をより良く理解することができる。
【図１】その図面において、図１は、１実施例による例示的なネットワークデバイスを示す。
【図２】図２は、ネットワークにおいて２つのデバイスを接続するために用いられる様々なネットワークデバイスを含む１実施例による例示的なシステムを示す。
【図３】図３はネットワークデバイスのコントローラとデータベースエンジンを同期させるための方法の実施例を示すフローチャート図である。
【図４Ａ】図４Ａは、図３の方法に対応する例を示す１実施例による例示的なテーブルである。
【図４Ｂ】図４Ｂは、図３の方法に対応する例を示す１実施例による例示的なテーブルである。
【図４Ｃ】図４Ｃは、図３の方法に対応する例を示す１実施例による例示的なテーブルである。
【図４Ｄ】図４Ｄは、図３の方法に対応する例を示す１実施例による例示的なテーブルである。
【図４Ｅ】図４Ｅは、図３の方法に対応する例を示す１実施例による例示的なテーブルである。
【図５】図５は１つのイーサネット（登録商標）スイッチ内のフィルタリングデータベースの例示的なフォワーディングテーブル内のエントリーの１実施例による状態図である。
【図６Ａ】図６Ａは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｂ】図６Ｂは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｃ】図６Ｃは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｄ】図６Ｄは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｅ】図６Ｅは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｆ】図６Ｆは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｇ】図６Ｇは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｈ】図６Ｈは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｉ】図６Ｉは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｊ】図６Ｊは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｋ】図６Ｋは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｌ】図６Ｌは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｍ】図６Ｍは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【図６Ｎ】図６Ｎは、図５の状態図に対応する様々な実施例による例示的なテーブルとエントリーである。
【００１９】
本発明では、様々な変形例及び代替形態が可能であるが、これらの具体例な実施例は図中に例示され、ここで詳細に説明されている。
【００２０】
しかし、図面及びこれらの図面に対する詳細な説明は、開示された特定の形態に本発明を限定することを意図するものではなく、それとは逆に、本発明は添付の請求項によって定義され本発明の範囲に含まれる全ての変形例、等価物、及び代替例を全て包含するものであることが理解されるべきである。
【詳細な説明】
【００２１】
用語
下記は本出願で用いられる用語の用語集である。
【００２２】
記憶媒体−様々なタイプの記憶デバイスまたはストレージデバイスのうちのいずれか。
【００２３】
用語「メモリ」及び「記憶媒体」は、例えば、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、またはテープデバイスのようなインストール媒体、ＤＲＡＭ、ＤＤＲ  ＲＡＭ、ＳＲＡＭ、ＥＤＯ  ＲＡＭ、ラムバスＲＡＭ等のコンピュータシステムメモリまたはランダムアクセスメモリ、またはフラッシュメモリ、ハードウェアレジスタ、磁気媒体（例えば、ハードドライブ）、または光学記憶装置のような不揮発性メモリを含むことを意図する。記憶媒体は又他のタイプのメモリまたはそれらの組み合わせを含み得る。用語「記憶媒体」は２つ以上の記憶媒体を含み得る。
【００２４】
コンピュータシステム−様々なタイプの移動式または固定式の演算または処理システムのいずれかであって、パーソナルコンピュータシステム（ＰＣ）、メインフレームコンピュータシステム、ワークステーション、ネットワーク機器、インターネット機器、モバイルフォン、スマートフォン、ラップトップ、ノートブック、ネットブック、またはタブレットコンピュータシステム、パーソナルデジタルアシスタント（ＰＤＡ）、マルチメディアデバイス、または他のデバイスまたは複数のデバイスの組み合わせを含む。一般的に、用語「コンピュータシステム」は、記憶媒体からの命令を実行する少なくとも１つのプロセッサを有する任意のデバイス（または複数のデバイスの組み合わせ）を含むよう広義に定義され得る。
【００２５】
自動的−動作または操作を直接指定または実行するユーザ入力無しにコンピュータシステム（例えば、コンピュータシステムによって実行されるソフトウェア）またはデバイス（例えば、回路、プログラム可能なハードウェアエレメント、ＡＳＩＣ等）を自動的に指す。従って、用語「自動的」は、ユーザが操作を直接行うために入力行う場合のユーザが手動で実行又特定する操作とは対照的である。自動手順はユーザによって行われる入力によって起動され得るが、「自動的に」行われる後続の動作はユーザによって指定されない、すなわち「手動で」は実行されず、ここでユーザは実行するべき各動作を指定する。例えば、各フィールドを選択し、かつ情報を指定する入力を行うことによって（例えば、情報をタイプする、チェックボックス、ラジオセレクション(radio selection)等を選択することによって）電子フォームに記入を行うユーザは、例えコンピュータシステムはユーザの動作に応じてそのフォームを更新しなくてはならなくても、手動でそのフォームに記入を行っている。そのフォームはコンピュータシステムによって自動的に記入されてもよく、この場合、コンピュータシステム（例えば、コンピュータシステム上で実行するソフトウェア）はフィールドに対する回答を指定するいずれのユーザ入力が無くてもフォームのフィールドを解析し、かつフォームに記入を行う。上記に示したように、ユーザはフォームの自動記入を起動しても良いが、フォームの実際の記入には関わらない（例えば、ユーザはフィールドに対する回答を手動で指定するのではなくむしろそれらは自動的に完了する）。本明細書はユーザが行った動作に応じて自動的に実行される操作の様々な例を提供する。
【００２６】
図１−例示的なネットワークデバイス
図１は、１実施例による例示的なネットワークデバイス１００のブロック図である。ネットワークデバイス１００はスイッチ、ルータ、ゲートウェイ等のような様々なネットワークデバイスのいずれかであり得る。
【００２７】
図１に示すように、ネットワークデバイス１００はコントローラ１２５及びデータベースエンジン１５０を含み得る。いくつかの実施例において、コントローラ１２５は、少なくとも一部では、プロセッサ、例えば、ネットワークデバイス１００のＣＰＵ上で実行するプログラム命令（例えば、１つまたは複数のソフトウェアプログラム）によって実行され得る。いくつかの実施例において、コントローラ１２５はネットワークデバイス１００のスイッチ部分の一部としてハードウェアにおいて実行され得る。
【００２８】
データベースエンジン１５０はハードウェアにおいて実行されかつネットワークデバイス１００のより低いレベルのスイッチング機能を実行し得る。コントローラ１２５は、データベース情報をＯＡＭ機能のような上位層管理アプリケーション（複数）に提供するか、あるいはコマンドまたはメッセージによって別のデータベースエンジンを構成するようにこの情報を用いるために、データベースエンジン１５０からの変更を検索するために同期機能を実行し得る。いくつかの実施例において、データベースエンジン１５０はネットワークデバイス１００のスイッチ部分と呼ばれ得る。
【００２９】
データベースエンジン１５０はコマンドハンドラ１５２（例えば、コントローラ１２５によって提供されたコマンドのようなコマンドを実行するため）、フォワーディングデータベース１５４（例えば、決定のル―ティング／スイッチングを実行するため）、及びアップデートエンジン１５６（例えば、アップデートを実行するため）を含み得る。コントローラ１２５は、データベース１２７も含み得、ここで論じられるように、例えば、それはフォワーディングデータベース１５４と同期され得る。データベース１２７及びフォワーディングデータベース１５４は、要望通り、同一の構造を有し得るしまた異なり得る。例えば、フォワーディングデータベース１５４はデータベース１２７において必要ではないまたは存在していないかもしれない同期（例えば、ここで論じられるような）を実行するためのフィールドを含み得る。一般的に、ここでの記述は、フォワーディングデータベース１５４へ行われた変更の同期に適用され、例えば操作の通常の過程の間、それらはそのときデータベース１２７に伝えられる。しかしながら、アップデートは、逆方向、コントローラ１２５からデータベースエンジン１５０へ生じ得るが、このようなアップデートはここで記述されたのとは異なった方法で生じ得る。さらに、データベース１２７は任意であり得るが、アップデートは、下記に記載されるとおり、それでもコントローラ１２５によって受信され得ることを留意すること（例えば、上位レベルの管理アプリケーション等に提供する他のデータベースをアップデートするために用いられ得る）。従って、いくつかの実施例において、データベース１２７は必要とされないこともあり得る。
【００３０】
いくつかの実施例において、ネットワークデバイス１００は、複数のデータベースエンジン１５０を含み得、そしてコントローラ１２５はそれらの内のいくつかまたは全てと結合（例えば、制御）され得る。例えば、コントローラ１２５は、第１データベースエンジンからのアップデートを受信しそれらのアップデートを、例えば同じネットワークデバイス内の、第２データベースエンジンに提供し得る。いくつかの実施例において、ネットワークデバイス１００は、要望通り、複数のコントローラ１２５及び複数のデータベースエンジン１５０を含み得る。さらに、コントローラ１２５は、アップデート情報を、例えば同一のネットワーク内の、他のネットワークデバイスに提供するために、その最新のデータベース１２７を用い得る。様々な動作のいずれもが、データベース１２７におけるアップデート情報を用いて実行され得る。
【００３１】
図２−複数のネットワークデバイスを含む例示的なネットワーク
図２は、複数のネットワークデバイス１００Ａ−１００Ｄを含む例示的なネットワークを示す。さらに具体的には、デバイス２００Ａ及び２００Ｂはネットワークデバイス１００Ａ−１００Ｄを含むネットワークを用いて通信を行い得る。デバイス２００Ａ及び２００Ｂは、デスクトップコンピュータ、ラップトップコンピュータ、セル電話、タブレット、ネットブック等のネットワークを介する通信を実行可能な様々なデバイスのいずれでもあり得る。１つの実施例において、デバイス２００Ａ及び２００Ｂはパケットを通信用ネットワークに送信し得る。ネットワークデバイス１００Ａ−１００Ｄはそれらのパケットを受信し、及び複数の中間ネットワークデバイスを用いてそれらの宛先にそれらのパケットを配信するためにル―ティングまたはスイッチング機能を実行し得る。
【００３２】
この過程の間、ネットワークデバイス１００Ａ−１００Ｄのうちの様々なものは、それら自身の間でそれらの各スイッチングテーブルへの変更またはアップデートを伝え得る。例えば、ネットワークデバイス１００Ａのコントローラは、ネットワークデバイス１００Ａの各データベースエンジンからアップデートを受信し、かつ例えば、ネットワークデバイス１００Ａ−１００Ｄを最新に保つために、ネットワークデバイス１００Ｂ−１００Ｄのうちの１つまたは複数にこれらのアップデート（及び／または他の情報）を提供し得る。類似の動作はネットワークデバイス１００Ｂ−１００Ｄによって実行され得る。
【００３３】
さらに、ネットワークはリングトポロジーを用いて実行される。例えば、ネットワークデバイス１００Ａ−１００Ｄは結合され得、及びリングトポロジーを用いて情報交換し得る。図２の複数の接続のうちの様々なものは必要ではないことに留意し、例えば、リングトポロジーの１つの実施例において、ネットワークデバイス１００Ｂ及び１００Ｃの間に接続は存在しなくても良い。
【００３４】
いくつかの実施例において、ネットワークデバイスはこういったトポロジーにおいてリングを用いてスタックされ得る。さらになるトポロジー及び接続が想定される。
【００３５】
図３−ネットワークデバイスにおけるコントローラとデータベースエンジンとの同期
図３はネットワークデバイスにおけるコントローラ及びデータベースエンジンを同期することに関する、１実施例による方法を示す。図３に示されるこの方法は、他のデバイスの中で、上記の図に示されるコンピュータシステムまたはデバイスのいずれとも共に用いられ得る。様々な実施例において、この示されたメソッドの要素のいくつかは、同時に、図示されたものとは異なった順序で実行されても良くまたは省略され得る。追加のメソッドの要素は、また要望通り動作され得る。
【００３６】
示されるように、この方法は下記のように動作し得る。
【００３７】
３０２において、第１フォワーディングデータベースまたはテーブルは、ネットワークデバイスのデータベースエンジン部分で保持され得る。データベースエンジン部分は、ハードウェアにおいて主に実現され得る。
【００３８】
さらに、３０４において、第２フォワーディングデータベースまたは、テーブルはネットワークデバイスのコントローラ部分によって保持され得る。コントローラ部分は、ネットワークデバイスのプロセッサ上で実行するソフトウェアとして実現され得る。まず初めに、２つのデータベースの間のデータが同期され得る。
【００３９】
第１フォワーディングデータベース及び第２フォワーディングデータベースは、いずれも複数のエントリーを含み得る。少なくとも第１フォワーディングデータベースにおいて、複数のエントリーのうちの各々は、他のフィールドとの間の同期フィールドを含み得る。第１及び第２フォワーディングデータベースは、下記でさらに詳細に論じるように、例えば、第１フォワーディングデータベースの変化を第２フォワーディングデータベースに同期するため、グローバル同期値(グローバル同期値)を含むかまたは用い得る。追加のフィールドはまた、同期のために用いることができ、これらの追加フィールドは、アップデートフィールド（例えば、既存のフィールドがいつアップデートされたかを示すための）及び学習または状態フィールド（例えば、他の可能性の中で「自動学習済み」、「制御学習済み」、「制御エイジング済み」、及び／または「自動エイジング済み」のようなエントリーを示すための）である。いくつかの実施例では、学習フィールドは、ＨＩＴ＿ＶＡＬＩＤ及びＬＯＯＫＵＰ＿ＶＡＬＩＤ（これらは、例えば、「制御学習済み」のようなエントリーの状態を確認するために用いることができる）のような複数の他のフィールドを使用して実現し得る。図６Ａ−６Ｎに関する説明は、本実施例に適応することができる。他のフィールドは、同期を支援するために用いられる。
【００４０】
同期の際に用いられる１つまたは複数のフィールドは、第１フォワーディングデータベースにのみ存在し及び第２フォワーディングデータベースにおいては存在しないことに留意のこと。例えば、この同期情報は第２フォワーディングデータベースにおいて必要でなこともあり得、例えば、アップデートは一般的にデータベースエンジン部分において生じるので、逆方向よりもむしろコントローラ部分に同期される。しかしながら、例えば、アップデートが他のネットワークデバイスから行われた場合、反対方向への同期が依然想定される。１つの実施例において、こういった同期はここで論じられたのとは異なる方法で生じ得る。
【００４１】
操作の過程中、３０６において、変更が第１フォワーディングデータベースにおいて生じ得、例えば、エントリーはデータベースのデータベースエンジン部分によって変更または追加され得る。１つの特定の実施例において、第１フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの変更が実行され得る。これらの変更は、既存のエントリーにおけるエントリーの追加またはフィールドの値の修正を含み得る。さらに、これらのエントリーは、現在の同期値に設定された同期値を有し得る。従って、２回目に、第１及び第２データベースは同期しなくなることがあり得る。
【００４２】
これらの変更に応じて、または定期的な方法で、データベースのエンジン部分は、第２フォワーディングデータベースのアップデートが実行されるべきことを示すために、コントローラに、割り込みのような、メッセージを送信し得る。従って、３０８において、ネットワークデバイスにおけるコントローラは、変更が第１フォワーディングデータベースにおいて生じたことを示すメッセージを受信し得る。
【００４３】
それに応じて、３１０において、グローバル同期値は第１グローバル同期値から第２グローバル同期値に（例えば、コントローラによって）変更され得る。さらに、３１２において、第１フォワーディングデータベースにおける第１のエントリーへの１つまたは複数の変更を判断するため、クエリーが（例えば、コントローラによって）生成され得る。１つの実施例において、クエリーは、第１フォワーディングデータベースにおけるフィールドと関連するグローバル同期値、アップデート値、状態値等の様々な値を含み得るしまたはこれらを用い得る。１つの実施例において、クエリーは「制御学習済み」の状態フィールドと第１のグローバル同期値を有する複数のエントリーを検索しても良い。しかしながら、これらの実施例では、グローバル同期値、アップデート値、または（他の可能なフィールドのうちの）状態値の任意の組み合わせを用い得ることに留意されるべきである。この過程の具体例は、図４Ａ−４Ｅに関連してさらに詳細に下記に提供される。
【００４４】
従って、３１４において、クエリーが、（例えば、データベースエンジン部分からコントローラ部分へ）クエリー結果を返すように実行され得る。クエリー結果は、例えば、第１グローバル同期値及び／または第１の１つまたは複数のエントリーを識別するため、上記で論じられた他の値を用いることによって、第１の１つまたは複数のエントリーへの１つまたは複数の変更を含み得る。
【００４５】
クエリー結果が取得された後、３１６において、様々な追跡動作が実行され得る。例えば、複数のフィールド、例えば第１フォワーディングデータベースにおけるフィールド、のうちの様々なフィールドがリセットされ得る。例えば、同期されたエントリーは、アップデートフィールド値を例えば、「１」（イネーブル）から「０」（ディスエーブル）に変更し得る。同様に、「制御学習済み」の状態値を有するエントリーは、例えば、「自動学習済み」に変更され得、そのため、それらは、第１フォワーディングデータベースになされる変更に関する将来のクエリーにおいて返されない。  さらに、クエリー結果は様々な方法で用いられ得る。上記に示したように、コントローラは、第２フォワーディングデータベースを保持しても良く、及び第２フォワーディングデータベースをアップデートするために（例えば、前記第１と第２フォワーディングデータベースを同期するために）、クエリー結果を用い得る。他の可能性として、クエリー結果は、ネットワークデバイスの他のデータベースエンジン部分（例えば、ネットワークデバイスが、コントローラ部分といくつかのデータベースエンジン部分を含み、それは、それらの各フォワーディングデータベースが同期されていることが必要であり得る）または他のネットワークデバイスをアップデートために用いられ得る
１つの実施例において、コントローラがグローバル同期値を第２グローバル同期値に変更した後に生じるフォワーディングデータベースにおける他のエントリーへの変更は、例えばそれらの値が第１グローバル同期値ではなく第２グローバル同期値に割り当てられ得るので、クエリー結果の一部ではない。これらの場合、変更（例えば、修正または追加）が行われるとき、それらの同期フィールドは現在のグローバル同期値（この例では、第２グローバル同期値）に設定され、そのため、これらの変更は後続の同期の過程で識別され得る。従って、グローバル同期値は、エントリーが同期されたか、同期されなかったかを追跡するいくつかの同期の推移の間の２つの異なる値の間における「ピンポン」であり得る。
【００４６】
図４Ａ−４Ｅ−図３の方法に対応する例示的なテーブル
図４Ａ−４Ｅは図３の方法に対応し、イーサネットスイッチにおけるフォワーディングまたはフィルタリングデータベースの例示的なテーブルである。これらのテーブル及び下記の説明は例示的な詳細としてのみ提供され、かつ上述したシステム及び方法の範囲を限定することを意図するものではない。
【００４７】
図４Ａ−４Ｅに関し、２つのエンティティ、すなわち、データベースエンジンとコントローラがある。データベースをコントローラと同期させるために、データベースエンジンのフォワーディング（またはフィルタリング）データベースにおける全てのエントリーは、同期フィールドを含み得る。データベースエンジンは、グローバル同期値を変更し、及び保留中の変更をコントローラに知らせることによって、記録をアップデートし得る。コントローラは次にグローバル同期フィールドの値を変更し、かつグローバル同期フィールドの前の値に基づいてフォワーディングデータベースを検索する。
【００４８】
データベースの同期に関して、アップデートフィールドは、エントリーを更新することとエントリーを生成することとを区別するために用いられ得る。アップデートされたとき、エントリーの「ＵＰＤＡＴＥ」フィールドがイネーブルされ得る（例えば、「０」から「１」へ値を変更することによって）。同期した後、コントローラはこのフィールドをクリアし得る（例えば、「１」から「０」へ値を変更することによって）。１つの実施例において、コントローラは、グローバル同期フィールドの古い値とＵＰＤＡＴＥフィールドの値によってデータベースを検索し得る。
【００４９】
さらに詳細には、データベースエンジンは、ＬＯＯＫＵＰ＿ＶＡＬＩＤとＨＩＴ＿ＡＧＥの単一のプロパティ（property）または組み合わせ及びＵＰＤＡＴＥフィールド及び／または他の必要とされるＦＤＢ情報によって、エントリーを検索するための検索エンジンを含み得る。データベース上でエントリーの生成とアップデートを同期するため、エンジンは、ＣＴＲＬ＿ＬＲＮ（制御学習済み）の割り込みまたはメッセージによってコントローラに通知を行い得る。コントローラは、それから０から１またはその逆にグローバル同期値を変更し得る。エンジンは、それからグローバル学習同期フィールドの新しい値に等しいＳＹＮＣフィールドでエントリーを生成またはアップデートすることによって制御学習を実行し得る。
【００５０】
エントリーにアップデートを同期するため、コントローラは、全てアップデートされたエントリーを取得するため、１に等しいＵＰＰＤＡＴＥフィールド及びグローバル学習同期フィールドの前の値に等しいＳＹＮＣフィールドを含む条件によってエンジンを検索する。コントローラは、同期後、全てこれらのエントリーのＵＰＰＤＡＴＥフィールドをクリアしても良い。エントリーの生成を同期させるため、コントローラは、それから、０に等しいＵＰＰＤＡＴＥフィールド及びグローバル学習同期フィールドの前の値に等しいＳＹＮＣフィールドを含む条件を用い得る。従って、いくつかの実施例において、上記で論じられたクエリーは、要望通り、複数のクエリーまたは複合クエリーとして実行され得る。
【００５１】
エントリーの削除を同期させるために、エンジンは、ＣＴＲＬ＿ＡＧＥ（制御エイジング）割り込みまたはメッセージによってコントローラに通知を行う。コントローラは、それから０から１またはその逆にグローバルエイジング値（global ageing value）を変更し得る。エンジンは、グローバルエイジング同期フィールド（global ageing synchronization field）の新しい値に等しいＳＹＮＣフィールドを用いてエントリーをアップデートすることによって制御エイジングを実行し得る。コントローラは、それから、全てのエイジド−アウトエントリー(aged-out entry)を取得するため、１に等しいＬＯＯＫＵＰ＿ＶＡＬＩＤフィールドと、０に等しいＨＩＴ＿ＶＡＬＩＤフィールドと、グローバル学習同期フィールドの前の値に等しいＳＹＮＣフィールドを含む条件を用い得る。コントローラは、同期後、例えば、１に等しいＬＯＯＫＵＰ＿ＶＡＬＩＤフィールドと、０に等しいＨＩＴ＿ＶＡＬＩＤフィールドと、グローバル学習同期フィールドの前の値に等しいＳＹＮＣフィールドを含む条件を有するコマンドを送信することによって、これらのエントリーを消去できる。
【００５２】
図４Ａは、時間における第１ポイントでの例示的なフォワーディングテーブルを示し、例えば、ここではコントローラのテーブルとデータベースエンジンが同期されている。このテーブルにおいて、２つの異なるエントリーが現在格納され、１つはＭＡＣアドレス００−００−００−００−００−０１であり、他方はＭＡＣアドレス０２である。
【００５３】
図４Ｂにおいて、フィールド「ＤＰ」を「１」から「２」へ変更し、フィールド「ＬＯＯＫＵＰ＿ＶＡＬＩＤ」を「１」から「０」へ変更し、フィールド「ＨＩＴ＿ＶＡＬＩＤ」を「１」から「２」へ変更し、フィールド「ＵＰＤＡＴＥ」を「０」から「１」へ変更し（変更が生じたことを示す）、及び状態フィールド「エントリーの記載」を「自動学習済みエントリー」から「制御学習済みエントリー」へ変更するため（例えば、エントリーが保留の状態にあることを示す−このエントリーをフォワーディング処理で用いるかまたはこのエントリーは構成可能でない）、０１のエントリーはアップデートされている。さらに、新しいエントリー、００−００−００−００−００−０５、が追加され、この新しいエントリーは、上記の０１と同様の理由により、「制御学習済みエントリー」の状態フィールド値を有する。さらに、図４Ｂに示すように、全てのエントリーは「０」の同期値を有する。
【００５４】
上述したように、フォワーディングテーブルへのこれらの変更に応じて、メッセージ（例えば、割り込み）をコントローラに与えて得る。それに応じて、グローバル同期フィールドは「０」から「１」へ変更され得、その結果、同期が始まった後に行われた変更は、後の同期のために識別され得る。
【００５５】
図４Ｃにおいて、同期中に、新しいエントリー、「００−００−００−００−００−０４」が追加されている。示されたように、グローバル同期値は同期が開始されるとすぐに変更されたので、新しいエントリーは同期値「１」に割り当てられる。この変更が無いと、エントリー「００−００−００−００−００−０４」は後の同期の際に省略され得る。
【００５６】
図４Ｄはアップデートされたエントリーに関するクエリー結果を示す。
【００５７】
示されたように、クエリーは上記で修正された００−００−００−００−００−０１と追加された００−００−００−００−００−０５の両方を返す。１つの実施例において、クエリーは、状態フィールド値（例えば、状態「制御学習済みエントリー」を有するか、または「自動学習済みエントリー」を有さない）、グローバル同期値（例えば、値「０」を有する）及び／またはアップデート値（例えば、「１」の値）に基づき得る。１つの実施例において、クエリーは、グローバル同期値とアップデート値との結合及びグローバル同期値と状態値との結合であり得る。
【００５８】
同期後、図４Ｅに示すように、新しく同期されたエントリーは、アップデートされ得る。さらに具体的には、エントリー０１のＵＰＤＡＴＥフィールドは「０」にリセットされ得、また状態フィールド値はエントリー００−００−００−００−００−０１及び００−００−００−００−００−０５の「自動学習済みエントリー」から「制御学習済みエントリー」に設定され得る。同期の次のラウンドにおいて、用いられるグローバル同期値は「０」でなく「１」であり得る。従って、同期されたエントリーの追跡を保持するため、グローバル同期値は「１」と「０」の間で「ピンポン」し得る。
【００５９】
上記の具体例において、学習のための２つの状態がある、すなわち、制御学習済みは同期の前のハードウェア学習のために用いられ得る。その後、状態は、コントローラからの命令により自動学習済みに変更され得る。さらに、アップデートフィールドは、エントリーの宛先ポートが変更されたことを示すために、用いられ得る。この変更は、コントローラがいくつかの特定のポート、例えば新しく生成された及び他のポートに移動された両方のポート、への変更を知る必要がある場合有用であり得る。
【００６０】
図５及び図６Ａ−６Ｎ−例示的な状態図及びテーブル
図５はフォワーディングデータベース（ＦＤＢ）のエントリーに対応する例示的な状態図（例えば、イーサネットスイッチにおけるデータベースエンジンの）を示す。図６Ａ−６Ｎは図５の状態図のコンセプトを示す例示的なテーブルである。これらの説明は、例えば、エントリーのエイジングのみならず他の過程に関し、上で提供された説明に関連する例示的な詳細を提供する。
【００６１】
図５に示すように、エントリーは「自動学習済み」「制御学習済み」、「制御エイジング済み」、及び「自動エイジング済み（無効）」の状態を有し得る。これらのエントリーは、例えば、「自動エイジング済み」状態に入るために自動的にエイジングされる、「自動学習済み」状態に入るために自動的に学習されるなどのような図５に示される方法でこれらの状態の間を遷移し得る。下記は、図５に示され及びテーブル６Ａ−６Ｎに含まれたイベントに関するさらなる詳細を提供する。
【００６２】
制御学習：進入ポート／仮想ポート（エントリーにおける宛先ポート）が制御学習モードに対して構成される。ＦＤＢエントリーは存在せず、並びにデータベースエンジンはこのエントリーを新しいエントリーとして追加し得る。
【００６３】
制御リフレッシュ：進入ポート／仮想ポート（エントリー内の宛先ポート）が制御学習モードに対して構成される。ＦＤＢエントリーが存在し及び宛先ポートは現在の入力ポート／仮想ポートと同じ物である。
【００６４】
制御移動：入力ポート／仮想ポート（エントリーにおける宛先ポート）は制御学習モードに対して構成される。ＦＤＢエントリーが存在し及び宛先ポートは現在の進入ポート／仮想ポートと同一ではない。
【００６５】
自動学習：進入ポート／仮想ポート（エントリーにおける宛先ポート）は、自動学習モードに対して構成される。ＦＤＢエントリーは存在せず及びデータベースエンジンはこのエントリーを新しいエントリーとして追加し得る。
【００６６】
自動リフレッシュ：進入／仮想ポート（エントリーにおける宛先ポート）は自動学習モードに対して構成される。ＦＤＢエントリーが存在し及び宛先ポートは現在の入力／仮想ポートと同一ある。
【００６７】
自動移動：進入／仮想ポート（エントリーにおける宛先ポート）は、自動学習モードに対して構成される。ＦＤＢエントリーが存在し及び宛先ポートは現在の入力ポート／仮想ポートと同一である。
【００６８】
エイジング：ＨＩＴ＿ＶＡＬＩＤを１減じて上記の０値にする。エイジングは自動エイジングまたは制御エイジングである。エントリーの状態は変更されないままである。
【００６９】
制御エイジング：入力／仮想ポート（エントリーにおける宛先ポート）は制御エイジングモードに対して構成される。ＨＩＴ＿ＶＡＬＩＤを１減じて０にする。
【００７０】
自動エイジング：進入／仮想ポート（エントリーにおける宛先ポート）は自動エイジングモードに対して構成される。ＨＩＴ＿ＶＡＬＩＤを１減じて０にする。
【００７１】
１つの特定の実施例において、各エントリーと関連する２つのプロパティ、エイジ値及び有効値が存在し得る。これらの２つのプロパティは、図６Ａに示す各エントリーに対して４つの状態を表し得る。示されたように、若しＨＩＴ＿ＶＡＬＩＤフィールドが上記の０なら、状態は「制御学習済み」または「自動学習済み」である。若しＨＩＴ＿ＶＡＬＩＤが０であり及び有効値が０であるなら、エントリーは無効であり得る。若しＨＩＴ＿ＶＡＬＩＤが０であり及び有効値がまだ１であるなら、エントリーは状態「制御エイジング済み」であり得る。一般的に、ＨＩＴ＿ＶＡＬＩＤ値は、０に到達するまで各エイジングサイクルにおいてデクリメントされる。
【００７２】
変更をポート／仮想ポートに記録するため、制御学習及び制御エイジングはイネーブルされ得る。ＦＤＢ（フォワーディングデータベース）エンジンは、学習及びエイジングの現在の同期状態を記録するために、２つのグローバル値を有し得る。このエンジンは、フレームに関するエントリーを生成またはアップデートすることによって制御学習を実行し及びグローバル学習同期フィールドの値に基づいてＳＹＮＣフィールドを記録し得る。制御エイジングは、エイジ値が０に到達したとき、グローバルエイジング同期フィールドの値に基づいてＳＹＮＣフィールドをアップデートし得る。エントリーが前の同期でアップデートされたかどうかを示すアップデートフィールドがまた全てのエントリーにあっても良い。
【００７３】
図６Ｂは「自動学習済み」及び「自動学習済み」の間の状態遷移を示す。これは、学習を誘発するフレームの進入／仮想ポートが自動学習モードに設定される時に生じ得る。エイジング及びリフレッシュの場合、ＵＰＤＡＴＥフィールド及びＳＹＮＣフィールドは変更されないままか、またはアップデートが失われ得る。
【００７４】
図６Ｃは「自動学習済み」及び「制御学習済み」の間の状態遷移を示す。これは、学習を誘発するフレームの進入／仮想ポートが制御学習モードに設定される時に生じ得る。
【００７５】
図６Ｄは「自動学習済み」及び「制御エイジング」の間の状態遷移を示す。これは、エントリーの宛先ポートが制御エイジングモードに設定される時に生じ、かつエイジング過程はエイジ値を０に減じる。
【００７６】
図６Ｅは「自動学習済み」と「無効」との間の状態遷移を示す。これは、エントリーの宛先ポートが自動エイジングモードに設定される時に生じ及びエイジング過程はエイジ値を０に減じる。
【００７７】
図６Ｆは「制御学習済み」と「自動学習済み」との間の状態遷移を示す。
【００７８】
これは、学習を誘発するフレームの入力／仮想ポートが自動学習モードに設定される時に生じ得る。エイジング及びリフレッシュ、アップデートフィールド及びＳＹＮＣフィールドは変更されないままであるかまたはアップデートが失われ得ることに留意する。
【００７９】
図６Ｇは「制御学習済み」及び「制御学習済み」の間の状態遷移を示す。これはエントリーの宛先ポートが制御学習モードに設定される時に生じる。エイジング及びリフレッシュの時、アップデートフィールド及びＳＹＮＣフィールドは、変更されないままであるかまたはアップデートが消失し得ることに留意する。
【００８０】
図６Ｈは「制御学習済み」及び「無効」の間の遷移を示す。これは、エントリーの宛先ポートが自動エイジングモードに設定される時に生じ、かつエイジング過程がエイジ値を０に減じる時に生じ得る。
【００８１】
図６Ｉは「制御エイジング」と「自動学習済み」との間の遷移を示す。これは、エントリーの宛先ポートが自動学習モードに設定される時に生じ得る。
【００８２】
図６Ｊは「制御エイジング」と「制御学習済み」との間の遷移を示す。これは、エントリーの宛先ポートが制御学習モードに設定される時に生じ得る。
【００８３】
図６Ｋは「制御エイジング」と「制御エイジング」との間の遷移を示す。これは、エントリーの宛先ポートが制御エイジングモードに設定される時に生じ得、またエイジング過程はすでにエイジ値を０に減じている。
【００８４】
図６Ｌは「制御エイジング」と「無効」との間の遷移を示す。これは、エントリーの宛先ポートが自動エイジングモードに設定される時に生じ得、またエイジング過程はエイジ値を０に減じる。
【００８５】
図６Ｍは「無効」と「自動学習済み」との間の遷移を示す。これは、学習を誘発するフレームの進入ポート／仮想ポートが自動学習モードに設定される時に生じ得る。
【００８６】
図６Ｎは「無効」と「制御学習済み」との間の遷移を示す。これは、学習を誘発するフレームの進入ポート／仮想ポートが制御学習モードに設定される時に生じ得る。
【００８７】
さらなる説明
下記は、１つの特定の実施例のさらなる詳細を提供する。しかし、上記と同様に、これらの説明は具体例としてのみ提供されるものであり、また上で論じられた実施例の範囲を限定することを意図するものではない。
【００８８】
ＭＡＣアドレス学習及びエイジング：
ＭＡＣアドレス学習及びエイジングはＦＤＢテーブルにおいてサポートされ得る。
【００８９】
各ＦＤＢエントリーは、ＬＯＯＫＵＰ＿ＶＡＬＩＤフィールドを含み得る。ＬＯＯＫＵＰ＿ＶＡＬＩＤフィールドが１に設定される場合、エントリーは使用可能であり、すなわち０に設定された場合、エントリーはスイッチング及びフォワーディング処理のいずれにも含まれていない。
【００９０】
各ＦＤＢエントリーは、ＭＡＣアドレスの寿命を規定し得るＨＩＴ＿ＶＡＬＩＤ値を含む。エイジング過程は、学習過程が（ＳＡ（ソースＭＡＣアドレス）、ＶＩＤ）が学習過程中のエントリーにマッチする時に寿命値をリフレッシュする間、ＭＡＣアドレスの寿命値を減じる。
【００９１】
キー（ＳＡ、ＶＩＤ）はＦＤＢルックアップのために用いられ得る。一致した文字列が見つからない場合、ＳＡは不明なＳＡとして認識され得及び自動学習モードまたは制御学習モードが操作可能なならば、ハードウェアによってＦＤＢテーブルに新しいアドレスとして追加され得る。
【００９２】
学習ＭＡＣアドレスが（ＳＡ、ＶＩＤ）キーのハッシュ値に従ってＦＤＢに格納され得る。
【００９３】
ＭＡＣアドレス学習：
（ＳＡ、ＶＩＤ）が、学習ルックアップ中にＦＤＢに見つからない場合、アドレスは不明と見なされ得る。ＦＤＢが十分な空間を有する場合、アドレスは学習であって及びハードウェアによって自動的にＦＤＢテーブルに追加され得る。ＨＩＴ＿ＶＡＬＩＤは最大エイジ値に設定され得る。
【００９４】
ＭＡＣアドレスリフレッシュ：
（ＳＡ、ＶＩＤ）がＦＤＢに見つかった場合宛先ポートは現在の入力ポート／仮想ポートとして同じものである。発見されたエントリー内のＨＩＴ＿ＶＡＬＩＤは最大エイジ値に対してアップデートされ得る。
【００９５】
ＭＡＣアドレスの移動：
（ＳＡ、ＶＩＤ）がＦＤＢ内に発見された時に宛先ポートは現在の入力ポート／仮想ポートと同じものである。発見されたエントリー内のＨＩＴ＿ＶＡＬＩＤは最大エイジ値までアップデートされ得る。
【００９６】
２つのＭＡＣアドレス学習モードはＭＡＣアドレス学習内で用いられ得る。例えば、リフレッシュ及び移動はサポートされ及び自動学習モード及び制御学習モードであるポート毎またはＶＬＡＮ毎、またはその両方で構成され得る。学習モードはＭＡＣアドレス学習のためのみに用いられても良いが、同様にＭＡＣアドレスエントリーリフレッシュまたは移動のためのモードとして用いられ得る。
【００９７】
自動学習モード：
エントリーは１に設定されたＬＯＯＫＵＰ＿ＶＡＬＩＤを用いて追加またはアップデートされ得る。
【００９８】
制御学習モード：
エントリーは０に設定されたＬＯＯＫＵＰ＿ＶＡＬＩＤを用いて追加またはアップデートされ得る。エントリーは、コントローラまたはソフトウェアがＬＯＯＫＵＰ＿ＶＡＬＩＤフィールドを１に設定するまでスイッチング及びフォーワード過程で用いられ得ない。
【００９９】
ＭＡＣアドレスエイジング:
ＭＡＣアドレスエイジングは、非アクティブエントリーを消去するために用いられ得る。ＨＩＴ＿ＶＡＬＩＤ値は、それが劣化（aged）する前に、構成可能なインターバルの後、ハードウェアによって自動的に１減じ、それはＨＩＴ＿ＶＡＬＩＤ値が０に達することを意味する。
【０１００】
下記のＭＡＣアドレスエイジングモードはサポートされ得る：自動エイジングモード及び制御エイジングモード。
【０１０１】
自動エイジングモード：
学習ＭＡＣアドレスは、エントリーがハードウェア自動学習過程または制御学習過程によって学習したかにかかわらず自動的に劣化し得る。劣化エントリーはＦＤＢテーブルから消去され得る。
【０１０２】
制御エイジングモード：
制御エイジングモードにおいて有効エントリーは、コントローラによってまたは自動エイジング過程によって消去されるまで劣化し得ない。本実施例の利点
上述した様々な実施例を用いて、ＦＩＦＯ待ち行列（または類似の待ち行列）はもはやネットワークデバイス内のデータベースまたはテーブルの間のアップデートを行うために必要ではない。さらに、学習速度は一般的にＦＩＦＯ待ち行列の深さ無しに改善され得る。
【０１０３】
様々な実施例を用いる際の他の利点コントローラ及びデータベースエンジンの機能は切り離し得る（例えば、完全に）。従って、１つの実施例において、コントローラは、それが、データベースエンジンの性能を低下させること無く可能な場合（例えば、それがフリーの場合）、同期を実行できる。
【０１０４】
上記の実施例は上記でかなり詳細に説明されたが、上記の開示が十分に理解されると、多くのバリエーション及び修正が当業者にとって容易になるだろう。下記の請求項は全てこういったバリエーション及び修正を含むと解釈されることが意図されている。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]
ネットワークデバイスにおけるフォワーディングデータベースのアップデートを受信するためのコンピュータ実施方法であって、前記方法は以下を備える、
前記ネットワークデバイスのデータベースエンジン部分に前記フォワーディングデータベースを保持する、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、ことと、
前記グローバル同期値を第２グローバル同期値へ変更し、及び前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するためにクエリーを生成するコントローラ、ここにおいて、 前記第１の１つまたは複数のエントリーは前記同期フィールドにおいてに第１グローバル同期値を有する、と、
複数のクエリー結果を返すように前記クエリーを実行する、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは前記第１の１つまたは複数のエントリーを識別するために前記第１グローバル同期値を用いる、こと。
[Ｃ２]
前記フォワーディングデータベースにおける前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を示すメッセージを受信する前記ネットワークデバイスにおける前記コントローラをさらに備え、ここにおいて、前記グローバル同期値を該変更することは、前記メッセージに応答して実行される、Ｃ１のコンピュータ実施方法。
[Ｃ３]
前記コントローラが前記グローバル同期値を前記第２グローバル同期値へ変更した後に生じる、前記フォワーディングデータベースにおける他のエントリーへの変更は、前記複数のクエリー結果の一部ではない、Ｃ１のコンピュータ実施方法。
[Ｃ４]
前記複数のクエリー結果に基づいて、前記コントローラにおけるコントローラデータベースをアップデートすることをさらに備える、Ｃ１のコンピュータ実施方法。
[Ｃ５]
前記複数のクエリー結果に基づいて、１つまたは複数の他のネットワークデバイスに複数のアップデートを提供する前記コントローラをさらに備える、Ｃ１のコンピュータ実施方法。
[Ｃ６]
前記コントローラにおいてにコントローラデータベースを保持することと、
前記複数のクエリー結果を用いて前記コントローラデータベースをアップデートすることと、
前記メッセージを該受信することと、前記グローバル同期値を該変更することと、前記クエリーを該実行することと、前記コントローラデータベース及び前記フォワーディングデータベースを同期するために、複数回前記コントローラデータベースを該アップデートすることを該実行することと
をさらに備える、Ｃ１のコンピュータ実施方法。
[Ｃ７]
前記クエリーは前記第１グローバル同期値を備える、Ｃ１のコンピュータ実施方法。
[Ｃ８]
前記複数のエントリーのそれぞれは、アップデートフィールドを備え、ここにおいて、前記クエリーは、前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更のうちの少なくとも１つを判断するため、前記アップデートフィールドのための値を備える、Ｃ１のコンピュータ実施方法。
[Ｃ９]
前記複数のエントリーのそれぞれは、学習フィールドを備え、ここにおいて、前記方法は、
前記データベースエンジンによる変更を示す状態と関連付けられるように前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーを修正する、ここにおいて、前記メッセージを該受信することは該修正することに応じて実行され、及びここにおいて、前記複数のクエリー結果は前記状態を有する前記少なくとも１つのエントリーに基づく、ことと、
前記クエリーを実行した後、前記少なくとも１つのエントリーに関する前記状態を異なる状態に変更することと
をさらに備える、Ｃ１のコンピュータ実施方法。
[Ｃ１０]
前記グローバル同期値を変更した後、前記フォワーディングデータベースにおける第２エントリーを修正する、ここにおいて、前記第２エントリーの前記同期フィールドは前記第２グローバル同期値を備え、ここにおいて、前記複数のクエリー結果は前記第２グローバル同期値に基づく前記第２エントリーを備えない、ことをさらに備えるＣ１のコンピュータ実施方法。
[Ｃ１１]
第２メッセージに応じて、前記グローバル同期値を前記第１グローバル同期値へ変更し、及び１つまたは複数の付加的な変更を判断するために、第２クエリーを生成する前記コントローラと、
第２の複数のクエリー結果を返すように前記第２クエリーを実行する、ここにおいて、前記第２複数のクエリー結果は、前記新しいエントリーを備える、ことと
をさらに備えるＣ１０のコンピュータ実施方法。
[Ｃ１２]
前記第１グローバル同期値と前記第２グローバル同期値の間の前記グローバル同期値を変更し、及び複数回前記フォワーディングデータベースにおける新しい変更を判断するために、前のグローバル同期値を用いて複数のクエリーを生成する、前記コントローラをさらに備える、Ｃ１のコンピュータ実施方法。
[Ｃ１３]
ネットワークデバイスであり、前記ネットワークデバイスは以下を備える、
データベースエンジン、ここにおいて、前記データベースエンジンは第１フォワーディングテーブルを保持するように構成され、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースは、グローバル同期値を備える、と、
前記データベースエンジンに結合されるコントローラ、ここにおいて、前記コントローラは、
前記グローバル同期値を第２グローバル同期値へ変更し、
前記第１グローバル同期値を用いて、前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するためにクエリーを生成し、ここにおいて、前記第１の１つまたは複数のエントリーは、前記同期フィールドにおいて第１グローバル同期値を有し、
前記データベースエンジンから複数のクエリー結果を受信する、ここにおいて、前記複数のクエリー結果は、前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは、前記第１の１つまたは複数のエントリーを識別するために前記第１グローバル同期値を用いる
ように構成され、及び
ここにおいて、前記コントローラが、前記グローバル同期値を前記第２グローバル同期値へ変更した後に生じる前記フォワーディングデータベースにおける他の複数のエントリーへの複数の変更は、前記複数のクエリー結果の一部ではない。
[Ｃ１４]
前記コントローラは、前記第１フォワーディングテーブルに対応する第２フォワーディングテーブルを格納し、
前記複数のクエリー結果に基づいて、前記第２フォワーディングテーブルをアップデートする
ようにさらに構成される、Ｃ１３のネットワークデバイス。
[Ｃ１５]
前記コントローラは、前記複数のクエリー結果に基づいて、１つまたは複数の他のネットワークデバイスに複数のアップデートを提供するようにさらに構成される、Ｃ１３のネットワークデバイス。
[Ｃ１６]
前記コントローラは、前記第１フォワーディングテーブルにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を示すメッセージを受信する、ここにおいて、前記グローバル同期値を該変更することは、前記メッセージを受信することに応じて実行される、ようにさらに構成される、Ｃ１３のネットワークデバイス。
[Ｃ１７]
前記コントローラは、前記メッセージを該受信することと、前記グローバル同期値を該変更することと、前記複数のクエリー結果を該受信することと、及び前記第１フォワーディングテーブルと前記第２フォワーディングテーブルを同期するために前記第２フォワーディングテーブルを複数回該アップデートすることと、を実行するようにさらに構成される、Ｃ１３のネットワークデバイス。
[Ｃ１８]
前記複数のエントリーのそれぞれは、アップデートフィールドを備え、ここにおいて、前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーは、前記少なくとも１つのエントリーの変更を示す前記アップデートフィールドにおける第１の値を備え、ここにおいて、前記複数のクエリー結果は前記アップデートフィールドの前記第１の値に基づく、Ｃ１３のネットワークデバイス。
[Ｃ１９]
前記エントリーのそれぞれは学習フィールドを備え、ここにおいて、前記データベースエンジンは、
前記データベースエンジンによる変更を示す状態と関連付けられるように前記第１の１つまたは複数のエントリーのうちの少なくとも１つのエントリーを修正し、ここにおいて、前記メッセージを該受信することは該修正することに応じて実行され、及びここにおいて、前記複数のクエリー結果は前記状態を有する前記少なくとも１つのエントリーに基づく、
前記複数のクエリー結果を提供するために前記クエリーを実行し、
前記クエリーを実行した後、前記少なくとも１つのエントリーに関する前記状態を異なる状態に変更する、
ように構成される、Ｃ１３のネットワークデバイス。
[Ｃ２０]
ネットワークデバイスにおいてフォワーディングデータベースからアップデートを受信するプログラム命令を記憶する非一時的なコンピュータアクセス可能記憶媒体であって、ここにおいて、前記プログラム命令はプロセッサによって以下をするように実行できる、
前記フォワーディングデータベースにおける前記第１の１つまたは複数のエントリーへの１つまたは複数の変更を示すメッセージを受信し、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備え、ここにおいて、前記第１の１つまたは複数のエントリーは前記同期フィールドにおいて第１グローバル同期値を有し、
前記グローバル同期値を第２グローバル同期値へ変更し、
前記フォワーディングデータベースにおける前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を判断するためにクエリーを生成し、ここにおいて、前記クエリーは前記１つまたは複数のエントリーを識別するために前記第１グローバル同期値を備え、
前記クエリーの複数のクエリー結果を受信する、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは前記第１の１つまたは複数のエントリーを識別するために前記第１グローバル同期値を用いる、ここにおいて、前記グローバル同期値を前記第２グローバル同期値へ該変更した後生じる前記フォワーディングデータベースにおける他のエントリーへの変更は、前記複数のクエリー結果の一部ではない。
[Ｃ２１]
前記プログラム命令は、前記ネットワークデバイスのコントローラのプロセッサによって実行可能であり、及びここにおいて、前記メッセージは、前記ネットワークデバイスのデータベースエンジンから受信される、Ｃ２０の前記非一時的なコンピュータアクセス可能記憶媒体。
[Ｃ２２]
前記複数のプログラム命令は、前記フォワーディングデータベースに対応する第２フォワーディングデータベースを保持し、
前記複数のクエリー結果に基づいて、前記第２フォワーディングデータベースをアップデートするためにさらに実行可能である、Ｃ２０の前記非一時的な、コンピュータアクセス可能記憶媒体。
[Ｃ２３]
ネットワークデバイスのフォワーディングデータベースのアップデートを提供するための方法であって、前記方法は以下を備える、
前記ネットワークデバイスのデータベースエンジン部分における前記フォワーディングデータベースを保持する、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、ことと、
前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーを修正する、ここにおいて、前記第１の１つまたは複数のエントリーは、前記同期フィールドにおいて第１グローバル同期値を有する、ことと、
前記コントローラからのコマンドに応じて、前記グローバル同期値を第２グローバル同期値へ修正することと、
前記第１グローバル同期値を用いて前記フォワーディングデータベースのクエリーを実行する、ここにおいて、前記クエリーは前記第１の１つまたは複数のエントリーへの１つまたは複数の変更を備え、ここにおいて、前記グローバル同期値を前記第２グローバル同期値へ該修正した後生じる前記フォワーディングデータベースにおける他のエントリーへの変更は、前記複数のクエリー結果の一部ではない、ことと及び
前記コントローラに前記複数のクエリー結果を提供する、こと。
[Ｃ２４]
前記フォワーディングデータベースへの変更を示す前記ネットワークデバイスにおけるコントローラにメッセージを提供することをさらに備える、Ｃ２３の方法。
[Ｃ２５]
前記コントローラは第２フォワーディングデータベースを保持し、ここにおいて、前記コントローラは、前記第２フォワーディングデータベースをアップデートするために前記複数のクエリー結果を用いるように構成される、Ｃ２３の方法。
[Ｃ２６]
前記コントローラは、他のデータベースエンジンにおける前記フォワーディングデータベースをアップデートするために、前記複数のクエリー結果を用いるように構成される、Ｃ２３の方法。
[Ｃ２７]
前記コントローラは、関連したデータベースエンジンをアップデートするために別のコントローラにメッセージを送信するために、前記複数のクエリー結果を用いるように構成されるＣ２３の方法。
[Ｃ２８]
ネットワークデバイスのフォワードデータベースのアップデートを受信するためのシステムであって、前記システムは以下を備える、
前記ネットワークデバイスのデータベースエンジン部分における前記フォワーディングデータベースを保持するための手段、ここにおいて、前記フォワーディングデータベースは複数のエントリーを備え、ここにおいて、前記複数のエントリーのそれぞれは同期値を有する同期フィールドを備え、ここにおいて、前記フォワーディングデータベースはグローバル同期値を備える、と、
前記グローバル同期値を第２グローバル同期値へ変更し、及び前記フォワーディングデータベースにおける第１の１つまたは複数のエントリーへの１つまたは複数の変更を判断するために、クエリーを生成する手段、ここにおいて、前記第１の１つまたは複数のエントリーは前記同期フィールドにおける第１グローバル同期値を有する、と、
複数のクエリー結果を返すように前記クエリーを実行するための手段、ここにおいて、前記複数のクエリー結果は前記第１の１つまたは複数のエントリーへの前記１つまたは複数の変更を備え、ここにおいて、該実行することは、前記第１の１つまたは複数のエントリーを識別するために前記第１グローバル同期値を用いる。
【図１】
0005813887.tif 000002
【図２】
0005813887.tif 000003
【図３】
0005813887.tif 000004
【図４Ａ】
0005813887.tif 000005
【図４Ｂ】
0005813887.tif 000006
【図４Ｃ】
0005813887.tif 000007
【図４Ｄ】
0005813887.tif 000008
【図４Ｅ】
0005813887.tif 000009
【図５】
0005813887.tif 000010
【図６Ａ】
0005813887.tif 000011
【図６Ｂ】
0005813887.tif 000012
【図６Ｃ】
0005813887.tif 000013
【図６Ｄ】
0005813887.tif 000014
【図６Ｅ】
0005813887.tif 000015
【図６Ｆ】
0005813887.tif 000016
【図６Ｇ】
0005813887.tif 000017
【図６Ｈ】
0005813887.tif 000018
【図６Ｉ】
0005813887.tif 000019
【図６Ｊ】
0005813887.tif 000020
【図６Ｋ】
0005813887.tif 000021
【図６Ｌ】
0005813887.tif 000022
【図６Ｍ】
0005813887.tif 000023
【図６Ｎ】
0005813887.tif 000024