(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-05
(54)【発明の名称】ファブリック可用性および同期化
(51)【国際特許分類】
H04L 41/0823 20220101AFI20240129BHJP
【FI】
H04L41/0823
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023541953
(86)(22)【出願日】2022-01-11
(85)【翻訳文提出日】2023-09-05
(86)【国際出願番号】 US2022011944
(87)【国際公開番号】W WO2022155121
(87)【国際公開日】2022-07-21
(32)【優先日】2021-01-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シッダバスニ,アジョイ・シィ
(72)【発明者】
【氏名】ヨンセン,ビョルン・ダグ
(72)【発明者】
【氏名】シェンバガム,ラグナス
(57)【要約】
本開示の局面は、ファブリックネットワーク内でファブリック可用性および同期(FAS)エージェントを実現することを含む。一例では、第1のネットワークデバイス上で実行される第1のFASエージェントは、第2のネットワークデバイスから、第2のネットワークデバイスの構成を修正するためのコマンドを受信してもよい。第1のFASは、コマンドに基づいて第1のネットワークデバイスの構成を現在の構成から新たな構成にアップグレードしてもよい。第1のFASエージェントは、第1のネットワークデバイスの構成に関連付けられる状態識別子を、新たな構成に関連付けられる新たな状態識別子にインクリメントする。次いで、第1のFASエージェントは、新たな状態識別子を含む制御パケットを送信してもよい。第2のネットワークデバイス上で実行される第2のFASエージェントは、制御パケットを受信し、コマンドを実行して、第2のネットワークデバイスの構成を新たな構成に更新してもよい。
【特許請求の範囲】
【請求項1】
方法であって、
ファブリックネットワークにおける第1のネットワークデバイスにおいて、前記ファブリックネットワークにおける第2のネットワークデバイスから、前記第2のネットワークデバイスの現在の構成を修正するコマンドの識別を受信することを含み、前記第1のネットワークデバイスは前記現在の構成に従って構成され、前記方法はさらに、
前記第1のネットワークデバイス上で実行される第1のファブリック可用性および同期(FAS)エージェントが、前記コマンドを認証することと、
前記コマンドを認証することに応答して、前記第1のネットワークデバイスが、前記コマンドに基づいて前記第1のネットワークデバイスの前記現在の構成を修正することとを含み、前記第1のネットワークデバイスの前記現在の構成を修正することは、新たな構成を定義し、前記方法はさらに、
前記コマンドの識別を記憶することと、
前記第1のネットワークデバイスの前記現在の構成を修正することに応答して、前記第1のネットワークデバイスの前記現在の構成に関連付けられる状態識別子を、前記新たな構成に関連付けられる新たな状態識別子に対応するよう更新することと、
前記第1のFASエージェントが、前記ファブリックネットワークの前記第2のネットワークデバイス上で実行される第2のFASエージェントに、前記新たな状態識別子を含む制御パケットを送信することとを含み、前記制御パケットを受信すると、前記第2のFASエージェントは、前記コマンドの前記識別を取り出し、前記コマンドを前記第2のネットワークデバイス上で実現して、前記第2のネットワークデバイスの前記現在の構成を前記新たな構成にアップグレードする、方法。
【請求項2】
前記制御パケットは、前記第1のネットワークデバイスによって管理されるネットワーク接続と並列に動作する仮想ローカルエリアネットワークを介して送信される、請求項1に記載の方法。
【請求項3】
前記方法はさらに、
前記第1のネットワークデバイスが、前記ファブリックネットワークの第3のネットワークデバイスから、第2のコマンドの識別を受信することと、
前記第1のネットワークデバイスが、前記第2のコマンドは無効である、と判断することと、
前記第2のコマンドが前記新たな構成を変更することを防止することとを含む、請求項1に記載の方法。
【請求項4】
前記方法はさらに、
前記第1のネットワークデバイスが、前記新たな構成において障害を検出することと、
前記新たな構成における前記障害の検出に応答して、前記第1のネットワークデバイスの前記新たな構成を以前の構成に自動的に戻すことと、
前記第1のネットワークデバイスが、以前の既知の良好な構成に関連付けられる状態識別子の識別を含む第2の制御パケットを送信することとを含む、請求項1に記載の方法。
【請求項5】
前記新たな構成とは異なる構成で動作する前記ファブリックネットワークのネットワークデバイスが、前記ファブリックネットワークから除去される、請求項1に記載の方法。
【請求項6】
前記方法はさらに、
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記FASネットワークの第4のネットワークデバイスの接続障害を検出することと、
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記接続障害が持続する間、前記第1のネットワークデバイスの前記新たな構成に対する修正を防止することとを含む、請求項1に記載の方法。
【請求項7】
前記方法はさらに、
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記ファブリックネットワークの新たなネットワークデバイスに関連付けられる優先度値を含む優先度パケットを受信することを含み、前記新たなネットワークデバイスのFASエージェントに関連付けられる前記優先度値は、前記第1のFASエージェントに関連付けられる優先度値よりも大きく、前記方法はさらに、
前記第1のFASエージェントが、前記ファブリックネットワークを介して、前記第1のネットワークデバイスがプライマリネットワークデバイスステータスを前記新たなネットワークデバイスに譲ることを示す第3の制御パケットをブロードキャストすることを含む、請求項1に記載の方法。
【請求項8】
システムであって、
1つ以上のプロセッサと、
命令を記憶する非一時的コンピュータ可読媒体とを備え、前記命令は、前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、動作を実行させ、前記動作は、
ファブリックネットワークにおける第1のネットワークデバイスにおいて、前記ファブリックネットワークにおける第2のネットワークデバイスから、前記第2のネットワークデバイスの現在の構成を修正するコマンドの識別を受信することを含み、前記第1のネットワークデバイスは前記現在の構成に従って構成され、前記動作はさらに、
前記第1のネットワークデバイス上で実行される第1のファブリック可用性および同期(FAS)エージェントが、前記コマンドを認証することと、
前記コマンドを認証することに応答して、前記第1のネットワークデバイスが、前記コマンドに基づいて前記第1のネットワークデバイスの前記現在の構成を修正することとを含み、前記第1のネットワークデバイスの前記現在の構成を修正することは、新たな構成を定義し、前記動作はさらに、
前記コマンドの識別を記憶することと、
前記第1のネットワークデバイスの前記現在の構成を修正することに応答して、前記第1のネットワークデバイスの前記現在の構成に関連付けられる状態識別子を、前記新たな構成に関連付けられる新たな状態識別子に対応するよう更新することと、
前記第1のFASエージェントが、前記ファブリックネットワークの前記第2のネットワークデバイス上で実行される第2のFASエージェントに、前記新たな状態識別子を含む制御パケットを送信することとを含み、前記制御パケットを受信すると、前記第2のFASエージェントは、前記コマンドの前記識別を取り出し、前記コマンドを前記第2のネットワークデバイス上で実現して、前記第2のネットワークデバイスの前記現在の構成を前記新たな構成にアップグレードする、システム。
【請求項9】
前記制御パケットは、前記第1のネットワークデバイスによって管理されるネットワーク接続と並列に動作する仮想ローカルエリアネットワークを介して送信される、請求項8に記載のシステム。
【請求項10】
前記第1のネットワークデバイスが、前記ファブリックネットワークの第3のネットワークデバイスから、第2のコマンドの識別を受信することと、
前記第1のネットワークデバイスが、前記第2のコマンドは無効である、と判断することと、
前記第2のコマンドが前記新たな構成を変更することを防止することとをさらに含む、請求項8に記載のシステム。
【請求項11】
前記第1のネットワークデバイスが、前記新たな構成において障害を検出することと、
前記新たな構成における前記障害の検出に応答して、前記第1のネットワークデバイスの前記新たな構成を以前の構成に自動的に戻すことと、
前記第1のネットワークデバイスが、以前の既知の良好な構成に関連付けられる状態識別子の識別を含む第2の制御パケットを送信することとをさらに含む、請求項8に記載のシステム。
【請求項12】
前記新たな構成とは異なる構成で動作する前記ファブリックネットワークのネットワークデバイスが、前記ファブリックネットワークから除去される、請求項8に記載のシステム。
【請求項13】
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記FASネットワークの第4のネットワークデバイスの接続障害を検出することと、
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記接続障害が持続する間、前記第1のネットワークデバイスの前記新たな構成に対する修正を防止することとをさらに含む、請求項8に記載のシステム。
【請求項14】
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記ファブリックネットワークの新たなネットワークデバイスに関連付けられる優先度値を含む優先度パケットを受信することをさらに含み、前記新たなネットワークデバイスのFASエージェントに関連付けられる前記優先度値は、前記第1のFASエージェントに関連付けられる優先度値よりも大きく、さらに、
前記第1のFASエージェントが、前記ファブリックネットワークを介して、前記第1のネットワークデバイスがプライマリネットワークデバイスステータスを前記新たなネットワークデバイスに譲ることを示す第3の制御パケットをブロードキャストすることを含む、請求項8に記載のシステム。
【請求項15】
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、動作を実行させ、前記動作は、
ファブリックネットワークにおける第1のネットワークデバイスにおいて、前記ファブリックネットワークにおける第2のネットワークデバイスから、前記第2のネットワークデバイスの現在の構成を修正するコマンドの識別を受信することを含み、前記第1のネットワークデバイスは前記現在の構成に従って構成され、前記動作はさらに、
前記第1のネットワークデバイス上で実行される第1のファブリック可用性および同期(FAS)エージェントが、前記コマンドを認証することと、
前記コマンドを認証することに応答して、前記第1のネットワークデバイスが、前記コマンドに基づいて前記第1のネットワークデバイスの前記現在の構成を修正することとを含み、前記第1のネットワークデバイスの前記現在の構成を修正することは、新たな構成を定義し、前記動作はさらに、
前記コマンドの識別を記憶することと、
前記第1のネットワークデバイスの前記現在の構成を修正することに応答して、前記第1のネットワークデバイスの前記現在の構成に関連付けられる状態識別子を、前記新たな構成に関連付けられる新たな状態識別子に対応するよう更新することと、
前記第1のFASエージェントが、前記ファブリックネットワークの前記第2のネットワークデバイス上で実行される第2のFASエージェントに、前記新たな状態識別子を含む制御パケットを送信することとを含み、前記制御パケットを受信すると、前記第2のFASエージェントは、前記コマンドの前記識別を取り出し、前記コマンドを前記第2のネットワークデバイス上で実現して、前記第2のネットワークデバイスの前記現在の構成を前記新たな構成にアップグレードする、非一時的コンピュータ可読媒体。
【請求項16】
前記制御パケットは、前記第1のネットワークデバイスによって管理されるネットワーク接続と並列に動作する仮想ローカルエリアネットワークを介して送信される、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
前記第1のネットワークデバイスが、前記ファブリックネットワークの第3のネットワークデバイスから、第2のコマンドの識別を受信することと、
前記第1のネットワークデバイスが、前記第2のコマンドは無効である、と判断することと、
前記第2のコマンドが前記新たな構成を変更することを防止することとをさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項18】
前記第1のネットワークデバイスが、前記新たな構成において障害を検出することと、
前記新たな構成における前記障害の検出に応答して、前記第1のネットワークデバイスの前記新たな構成を以前の構成に自動的に戻すことと、
前記第1のネットワークデバイスが、以前の既知の良好な構成に関連付けられる状態識別子の識別を含む第2の制御パケットを送信することとをさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記FASネットワークの第4のネットワークデバイスの接続障害を検出することと、
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記接続障害が持続する間、前記第1のネットワークデバイスの前記新たな構成に対する修正を防止することとをさらに含む、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記第1のネットワークデバイス上で実行される前記第1のFASエージェントが、前記ファブリックネットワークの新たなネットワークデバイスに関連付けられる優先度値を含む優先度パケットを受信することをさらに含み、前記新たなネットワークデバイスのFASエージェントに関連付けられる前記優先度値は、前記第1のFASエージェントに関連付けられる優先度値よりも大きく、さらに、
前記第1のFASエージェントが、前記ファブリックネットワークを介して、前記第1のネットワークデバイスがプライマリネットワークデバイスステータスを前記新たなネットワークデバイスに譲ることを示す第3の制御パケットをブロードキャストすることを含む、請求項15に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本願は、米国特許法119条(e)のもと、2021年1月12日に提出された米国非仮出願17/147,327の恩恵および優先権を主張する。前述の出願の全内容は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【0002】
技術分野
本開示は、概して分散ネットワーク管理に関する。より具体的には、限定ではなく、本開示は、ファブリックネットワークの管理のためのファブリック可用性および同期エージェントに関する。
【背景技術】
【0003】
背景
現代のネットワークは、多くの場合、複数の相互接続されたデバイスによって管理される。例えば、ビジネスネットワークは、大量のワークステーションを含み得る。ネットワークは、ワークステーションのための通信を管理するために一連のルータおよび/またはスイッチを採用するネットワーク管理者によって管理されてもよい。大学キャンパスまたは非常に大規模な企業にわたって運用されるネットワークなどのいくつかのネットワークは、大きい地域にわたって動作する場合がある。接続性を維持するために、これらのネットワークは、ネットワークを横断して中央サーバまたはトランクに通信を中継するネットワークデバイスの層を採用してもよい。マイクロレイヤは、特定のマイクロロケーション(建物など)における接続性を維持してもよく、マクロレイヤは、複数のマイクロロケーション(複数の建物のネットワークなど)にわたる接続性を維持してもよい。マイクロレイヤまたはマクロレイヤのネットワークデバイスが動作を停止すると(例えば、サーバ保守、ソフトウェア障害、ネットワーク侵入など)、ネットワークを横断する通信は、無効となるよう中断され得る。
【発明の概要】
【0004】
概要
さまざまな方法およびシステムが、ファブリックネットワークにおいてネットワークデバイスの構成を更新することに関してもよい。ある方法は、ファブリックネットワークにおける第1のネットワークデバイスにおいて、ファブリックネットワークにおける第2のネットワークデバイスから、第2のネットワークデバイスの現在の構成を修正するコマンドの識別を受信することを含み、第1のネットワークデバイスは現在の構成に従って構成され、上記方法はさらに、第1のネットワークデバイス上で実行される第1のファブリック可用性および同期(FAS)エージェントが、コマンドを認証することと、コマンドを認証することに応答して、第1のネットワークデバイスが、コマンドに基づいて第1のネットワークデバイスの現在の構成を修正することとを含み、第1のネットワークデバイスの現在の構成を修正することは、新たな構成を定義し、上記方法はさらに、コマンドの識別を記憶することと、第1のネットワークデバイスの現在の構成を修正することに応答して、第1のネットワークデバイスの現在の構成に関連付けられる状態識別子を、新たな構成に関連付けられる新たな状態識別子に対応するよう更新することと、第1のFASエージェントが、ファブリックネットワークの第2のネットワークデバイス上で実行される第2のFASエージェントに、新たな状態識別子を含む制御パケットを送信することとを含み、制御パケットを受信すると、第2のFASエージェントは、コマンドの識別を取り出し、コマンドを第2のネットワークデバイス上で実現して、第2のネットワークデバイスの現在の構成を新たな構成にアップグレードする。
【0005】
本開示の別の局面は、1つ以上のプロセッサと、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに本明細書で説明する方法の一部またはすべてを実行させる命令を含む非一時的コンピュータ可読媒体とを備えるシステムを含む。
【0006】
本開示の別の局面は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、本明細書で説明する1つ以上の方法の一部またはすべてを実行させる命令を含む非一時的コンピュータ可読媒体を含む。
【0007】
これらの例示的な実施例は、本開示を限定または定義するためではなく、その理解を助けるための実施例を提供するために言及される。さらなる実施形態は、発明を実施するための形態において議論され、そこでさらなる説明が提供される。
【図面の簡単な説明】
【0008】
【
図1】本開示の局面によるファブリックネットワークの例を示す。
【
図2】本開示の局面によるFAS管理ネットワークデバイスのブロック図の一例を示す。
【
図3】本開示の局面による、プライマリFASエージェントを選択するためのプロセスの一例を示す。
【
図4】本開示の局面による、ネットワークデバイスのファブリックの構成を管理するためのプロセスの例を示す。
【
図5】本開示の局面による、ネットワークデバイスのファブリックの構成を更新するためのプロセスの例を示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
本開示は、ファブリック可用性および同期(FAS)エージェントによって半自律的に管理される、改善されたネットワークトポロジーに関する。ネットワークは、しばしば、デバイスをネットワーク内の他のデバイスおよびネットワークの外部のデバイスに接続するネットワークデバイス(例えば、他のデバイスとの通信を容易にするデバイス)を使用して管理される。大量の接続されたデバイスおよび/または広い地域にわたって分散されたデバイスを有する大規模ネットワークは、ネットワークのすべてのデバイスを接続するために大量のネットワークデバイスを使用し得る。これらの大規模ネットワークはファブリックネットワーク(例えば、スイッチドファブリックと呼ばれることもある)を動作させてもよく、ここで、ネットワークのデバイスは、(1つのネットワークデバイスがいくつかのデバイスのための通信を排他的に管理するブロードキャストネットワークとは区別して、)複数のネットワークデバイスを介して相互接続される。
【0010】
ファブリックネットワークのネットワークデバイスは、ファブリックネットワークおよびファブリックネットワークを構成するネットワークデバイスの動作を管理するためにファブリック可用性および同期エージェントがプロビジョニングされてもよい。場合によっては、ネットワークの他のデバイス(例えば、ワークステーション、サーバなど)にもFASエージェントをプロビジョニングしてもよい。FASエージェントは、それが実行され、ファブリックネットワークの動作を同期させるために他のFASエージェントと通信するネットワークデバイスの動作を管理する。FASエージェントは、単一のネットワークデバイスからのファブリックネットワークのネットワークデバイスの管理を可能にする、ネットワークデバイスのファブリックレベル管理を提供してもよい。
【0011】
FASエージェントが実行されると、FASエージェントは、FASエージェントの1つ以上の特性またはFASエージェントが実行されるネットワークデバイスの特性に基づいて、FASエージェントの階層を自動的に定義してもよい。たとえば、FASエージェントは、各FASエージェントまたはネットワークデバイスの特性に基づいて、どのFASエージェントがプライマリFASエージェントとして動作するのに最も適しているかを判断してもよい。1つ以上の特性の例は、利用可能な帯域幅、利用可能な処理リソースプロセッサおよび/またはメモリ、ネットワークデバイスに接続されたデバイスの数、別のネットワークデバイスまたはサーバとの接続の品質などを含み得るが、これらに限定されない。
【0012】
一例では、プライマリFASエージェントを判断するために、各FASは、当該FASエージェントがプライマリFASエージェントである好適性を示す優先度値を導出してもよい。優先度値は、FASエージェントおよび/またはFASエージェントが実行されるネットワークデバイスの特性から導出されてもよい。次いで、各FASエージェントは、優先度値を含む他のFASエージェントに制御パケットを送信することによって、プライマリFASエージェントの役割を主張してもよい。特定のFASエージェントによって受信されると、特定のFASエージェントは、制御パケットからの優先度値を特定のFASエージェントに関連付けられた優先度値と比較してもよい。制御パケットの優先度値が特定のFASエージェントに関連付けられた優先度値よりも大きい場合、特定のFASエージェントは、プライマリの役割を他のFASエージェントに譲ってもよい。そうではなく、特定のFASエージェントの優先度値が他方のFASエージェントの優先度値より高い場合、特定のFASエージェントはプライマリFASエージェントになる。次いで、特定のFASエージェントは、制御パケットを他のFASエージェントに送信して、特定のFASエージェントがプライマリFASエージェントであることを他のFASエージェントに確認してもよい。いくつかの事例では、特定のFASエージェントは、プライマリパケットを他のFASエージェントに周期的に送信して、プライマリFASエージェントとしてのその状態を維持してもよい。いつでも、特定のFASエージェントが、特定のFASエージェントの優先度値より大きい優先度値を別のFASエージェントから受信する場合には、特定のFASエージェントは、プライマリFASエージェントとしてのそのステータスをそのFASエージェントに譲ってもよい。プライマリFASエージェントが障害を有する場合、他のFASエージェントは、新たなプライマリFASエージェントを選択し、それによりファブリックネットワークにおいてフォールトトレランスおよび冗長性を提供してもよい。
【0013】
FASエージェントは、ネットワークデバイスのリソースを使用して他のFASエージェントと通信してもよい。場合によっては、FASエージェントは、ネットワークデバイスがネットワークのデバイスを接続するために使用するネットワークチャネルと同様のネットワークチャネルを使用してもよい。他の事例では、FASエージェントは、ネットワークデバイスの、隔離された通信チャネルを使用してもよい。例えば、ネットワークデバイスは、外部デバイスがコマンドをネットワークデバイスに送信することを可能にする管理チャネルを含んでもよい。FASエージェントの通信を容易にするために、管理チャネルを用いて、仮想ローカルエリアネットワーク(VLAN)を確立してもよい。VLANは、FASエージェントおよびネットワーク管理者によって使用可能であってもよいネットワークデバイスによって管理される接続と並行して動作するプライベートネットワークであってもよい。VLANは、ファブリックネットワークのデバイス(例えば、接続性のためにネットワークデバイスに依存するデバイス)にとってアクセス不可能であってもよい。
【0014】
プライマリFASエージェントはファブリックネットワークの構成を管理してもよい。プライマリFASエージェントは、あるネットワークデバイスの構成の変化をファブリックネットワークの他のネットワークデバイスに同期させる。たとえば、ファブリックネットワークの特定のネットワークデバイスの構成を修正するためのコマンドが、プライマリFASエージェントに伝搬され得る。プライマリFASエージェントは、構成に対する修正を認証して、構成に対する修正をファブリックネットワークにおける他のネットワークデバイスに伝搬させてもよい。同様に、現在の構成がエラーを引き起こすと判断された場合、FASエージェントは、現在の構成のロールバックを前の構成に伝搬することができる。ファブリックネットワークのネットワークデバイスの構成の修正は、各ネットワークデバイスを個々に修正する必要なく達成されてもよい。いくつかの例では、確認に対する修正は、プライマリFASエージェントから他のネットワークデバイスによって取得されてもよい。他の事例では、構成に対する修正は、修正された構成を動作させるネットワークデバイス上で実行されるFASエージェントから取得されてもよい。
【0015】
FASエージェントをファブリックネットワークに統合することは、いくつかの利点を提供し得る。FASエージェントは、誤った構成および矛盾した構成を回避することによってファブリックの可用性を改善し、それによってダウンタイムおよびグレイアウトを低減してもよい。FASエージェントはまた、各ネットワークデバイス上で実行されるFASエージェントにネットワークに対する変更を伝搬することによってファブリックネットワーク内の個々のネットワークデバイスの状態を同期させてもよい。あるネットワークデバイスにおける変更が認証され、各ネットワークデバイスを個々に修正する必要なくファブリックネットワークにわたって同じ変更が実現されてもよい。
【0016】
図1は、本開示の局面によるネットワークのファブリックの例を示す図である。ファブリック環境100は、1つ以上のネットワークデバイスを介して接続された複数のデバイスを含んでもよい。ファブリックネットワーク100は、相互接続された複数のネットワークデバイスを含んでもよい。ネットワークデバイス104,108,および116などの各ネットワークデバイスは、限定はしないが、ルータ、ゲートウェイ、ネットワークスイッチ、プロキシデバイスなど、通信を容易にする任意のタイプのデバイスを含んでもよい。ネットワークデバイスはまた、ファブリックネットワーク100にネットワークセキュリティおよび通信冗長性を提供するために、1つ以上の他のネットワークデバイス間または(たとえば図示されるような)すべての他のネットワークデバイスの間の接続を維持してもよい。1つ以上の他のデバイスは、通信が発信される、または通信がアドレス指定される、任意のタイプのデバイスであってもよい。1つ以上の他のデバイスに含まれ得るデバイスの例は、サーバ、コンピューティングデバイス、ネットワークデバイス、モバイルデバイスなどを含むが、これらに限定されない。
【0017】
ファブリックネットワーク100を確立することは、各ネットワークデバイスにおいてファブリック可用性および同期(FAS)エージェントをプロビジョニングすることを含んでもよい。例えば、ネットワークデバイス104にはFASエージェント108がプロビジョニングされてもよく、ネットワークデバイス112にはFASエージェント116がプロビジョニングされてもよく、ネットワークデバイス120にはFASエージェント124がプロビジョニングされてもよい。各FASエージェントは、少なくとも1つの他のネットワークデバイスと(およびすべての他のネットワークデバイスまで)プライベート接続を確立してもよい。例えば、各ネットワークデバイスは、リモートデバイスがネットワークデバイスにコマンドを発行してもよい管理チャネルを含んでもよい。いくつかの事例では、各FASエージェントは、管理ネットワークを介して仮想ローカルエリアネットワーク(VLAN)を構成してもよい。例えば、FASエージェント108は、ネットワークデバイス104上にVLAN128を確立してもよい。FASエージェント116は、ネットワークデバイス112上にVLAN128を確立してもよい。FASエージェント108は、ネットワークデバイス120上にVLAN128を確立してもよい。管理チャネルは、ネットワークデバイスによって管理される接続から隔離されたチャネルであってもよい。その結果、ネットワークデバイスは、ネットワーク環境100のデバイス(ネットワークデバイス104、108、および/または112以外)がVLAN116を介して通信することを防止するように構成されてもよい。
【0018】
あるFASエージェントが最初に実行されると、そのFASエージェントは、ファブリックネットワーク内のどのFASエージェントがプライマリFASエージェントになるかを判断してもよい。たとえば、ネットワークデバイス104は、ネットワークに追加された第1のネットワークデバイスであってもよい。FASエージェント108が実行されると、FASエージェント108は、ネットワークデバイス104の所定の特性を識別して優先度値を導出してもよい。所定の特性は、利用可能な帯域幅、利用可能な処理リソースプロセッサおよび/またはメモリ、ネットワークデバイスに接続されたデバイスの数、別のネットワークデバイスまたはサーバとの接続の品質、それらの組合せなどに対応してもよい。FASエージェント120は、実行される唯一のFASエージェントであるので、FASエージェントは、デフォルトでプライマリFASエージェントであってもよい。
【0019】
ネットワークデバイス112およびネットワークデバイス120はファブリックネットワークに追加されてもよい。FASエージェント116およびFASエージェント124がそれぞれネットワークデバイス112およびネットワークデバイス120によって実行されると、FASエージェント116およびFASエージェント124はそれぞれの優先度値を判断してもよい。FASエージェント116は、その優先度値を他の各FASエージェント(例えば、FASエージェント108およびFASエージェント124)にブロードキャストしてもよい。同様に、FASエージェント124は、その優先度値を他の各FASエージェント(例えば、FASエージェント108およびFASエージェント116)にブロードキャストしてもよい。いくつかの事例では、FASエージェント116およびFASエージェント124から優先度値を受信すると、FASエージェント108は、新たな優先度値を生成(して、優先度値がネットワークデバイス104の現在の動作特性を反映することを保証)してもよい。
【0020】
FASエージェント108は、その優先度値が、受信された優先度値のいずれかよりも大きいかどうかを判断してもよい。FASエージェント108が最大優先度値を含む場合、FASエージェント108は、VLAN116を介してFASエージェント116およびFASエージェント124に制御パケットを送信して、FASエージェント104をファブリックネットワーク100のプライマリFASエージェントとして宣言してもよい。いくつかの事例では、FASエージェント108はまた、FASエージェント116およびFASエージェント124が、FASエージェント108がプライマリFASエージェントであることを独立して検証し得るように、VLAN116を介してその優先度値を送信してもよい。FASエージェント108の優先度値が、FASエージェント116およびFASエージェント124の各々の優先度値よりも大きくない場合、FASエージェント108は、プライマリFASエージェントの役割を放棄する制御パケットを、より大きい優先度値を有するFASエージェントに送信してもよい。
【0021】
FASエージェントは、それが実行されるネットワークデバイスの優先度値をいつでも導出してもよい。いくつかの事例では、優先度値は、規則的な間隔で、ユーザ入力を受信するか、別のネットワークデバイスから優先度値を生成および/または送信するためのコマンドを受信するか、イベント(たとえば、構成変更、ネットワークトポロジーの変更、ネットワークデバイスの処理リソースの変更、ネットワークデバイスの帯域幅もしくは信号品質の変更、それらの組合せなど)の発生を検出するか、またはそれらの組合せなどで、判断されてもよい。
【0022】
ファブリックネットワーク100は、ファブリックネットワーク100内のデバイス間の通信およびファブリックネットワーク100のデバイスと外部デバイスとの間の通信を容易にしてもよい。たとえば、ネットワークデバイス104は、1つ以上のサーバ132、コンピューティングデバイス136-1、およびコンピューティングデバイス136-2との接続を管理してもよい。コンピューティングデバイスは、コンピュータ、モバイルデバイス(例えば、スマートフォン、ウェアラブルデバイスなど)、サーバ、スマートデバイス(例えば、ネットワーク対応自動化デバイス等)、ネットワークデバイスなどの任意のタイプのネットワーク対応電子デバイスであってもよい。いくつかの例では、コンピューティングデバイスは、1つ以上の仮想デバイスを含んでもよい。たとえば、コンピューティングデバイスは、1つ以上の仮想マシンを動作させてもよく、各仮想マシンはハードウェアプラットフォームをエミュレートしてもよい。それらの事例では、ネットワークデバイス104は、コンピューティングデバイスおよび各仮想マシン(例えば、別々にアドレス指定可能で別個のコンピューティングデバイスとして扱われる)のための通信を容易にしてもよい。ネットワークデバイス112も、1つ以上のサーバ140と、コンピューティングデバイス144-1および144-2とを含んでもよい。ネットワークデバイス120は、1つ以上のサーバ148ならびにコンピューティングデバイス152-1および152-2を含んでもよい。
【0023】
いくつかの事例では、いくつかのデバイスは、2つ以上のネットワークデバイスに接続してもよい。たとえば、1つ以上のサーバ148は、ネットワークデバイス112およびネットワークデバイス120の各々との接続を維持してもよい。これらの例では、FASエージェント116およびFASエージェント120は、1つ以上のサーバ148のアドレスを定義するジョイントサブネットマスクを動作させてもよい。ジョイントサブネットマスクは、ファブリックネットワーク100の現在のステータスに基づいて、FASエージェントが接続ネットワークデバイス112またはネットワークデバイス120を介して1つ以上のサーバ148に通信をルーティングすることを可能にする、FASエージェントによって管理される動的ルーティングプロトコルに基づいてもよい。ファブリックネットワーク100の現在のステータスは、ファブリックネットワーク100を通るスループット、ネットワークデバイス116および/またはネットワークデバイス120に利用可能な処理リソース、信号品質、ネットワークデバイス116および/またはネットワークデバイス120のネットワーク負荷、それらの組合せ等に基づいてもよいが、これらに限定されない。1つ以上のサーバ148にアドレス指定された通信がファブリックネットワーク100によって受信されると、FASエージェントは、ジョイントサブネットマスクを用いて、通信を1つ以上のサーバ148にルーティングするためにどの接続を使用すべきかを判断してもよい。
【0024】
ファブリックネットワーク100のネットワークデバイスは共通の構成を含んでもよい。たとえば、ネットワークデバイス104は、ネットワークデバイス116および120にも含まれる共通の構成を含んでもよい。ブロードキャストおよびメッシュネットワークでは、ネットワークデバイス104などのネットワークデバイスの構成を修正すること(たとえば、構成の不整合を引き起こすこと)は、下流デバイス(例えば、デバイス140、144-1、144-2、148、151-1、および152-2などのデバイス)にアドレス指定された通信がネットワークを介して宛先デバイスに伝搬されるのを妨げ得る。その場合、ネットワーク管理者は、各ネットワークデバイスの構成をネットワークデバイス104の構成に適合するように修正するために、各ネットワークデバイスに個々に接続しなければならなくなり得る。
【0025】
ファブリックネットワーク100は、不一致の構成を防止し、構成が更新されたときに通信がネットワークを通じて伝播し続けることを確実にするために、ネットワークを通して構成変更を自動的に同期させてもよい。たとえば、ネットワークデバイス112の構成に対する修正が受信される場合がある。ネットワークデバイス112がプライマリFASエージェントを含む場合、プライマリFASエージェント(例えば、FASエージェント116)は、構成変更を認証してもよい。認証は、(例えば、修正が許可されたユーザによって生成されたことを確実にする)セキュリティ認証および/または(たとえば、修正がファブリックネットワーク100の動作を妨害しないこと、および/またはファブリックネットワーク100を介して送信される通信を妨害しないこと、を保証する)動作認証を含んでもよい。修正が認証された場合、FASエージェント116は、ネットワークデバイス112の構成の構成バージョンをインクリメントする。次いで、FASエージェント116は、インクリメントされた構成のバージョン識別子を提供するFASエージェント108およびFASエージェント124にVLAN128を介して制御パケットを送信してもよい。次いで、FASエージェント108およびFASエージェント124は、ネットワークデバイス112の構成(および/またはネットワークデバイス112の現在の構成)に対する修正を、VLAN128を介してネットワークデバイス112から取得してもよい。
【0026】
FASエージェント116がプライマリFASエージェントでない場合、FASエージェント116は、修正の識別をプライマリFASエージェントに送信してもよい。次いで、プライマリFASエージェントは、修正を認証し、認証された場合、VLAN128を介して制御パケットを他のFASエージェントに送信してもよい。
【0027】
現在の構成が障害を含むとFASエージェントが判断した場合、同様のプロセスが起こってもよい。FASエージェントは、まず、例えば、構成をテストすること、所定の量の報告された障害があったと判断すること、ファブリックネットワーク100を介してスループットをテストすること、所定の量の通信が配信されなかったかどうかを判断すること、またはそれらの組み合わせなどによって、ロールバックが必要とされるかどうかを判断する。たとえば、ネットワークデバイス104の現在の構成に障害がある場合、FASエージェント108は、ロールバックが必要であるかどうかを判断してもよい。ロールバックが必要である場合、FASエージェント108は、ネットワークデバイスに、良好な構成であることが分かっていてもよい以前の構成にロールバックさせてもよい。FASエージェント108がプライマリFASエージェントである場合、FASエージェント108は、ネットワークデバイス104に、以前の既知の良好な構成に復帰させ、ネットワークデバイス104の構成のバージョン識別子を既知の良好な構成のバージョン識別子にデクリメントさせてもよい。次いで、FASエージェント108は、新たな(デクリメントされた)構成バージョン識別子の識別を含む制御パケットをFASエージェント116およびFASエージェント124に送信してもよい。
【0028】
FASエージェント108がプライマリFASエージェントでない場合、FASエージェント108は、ロールバックの識別をプライマリFASエージェントに送信してもよい。次いで、プライマリFASエージェントは、(たとえば、FASエージェント108によって実行される同様のプロセスを使用して、)ロールバックが必要かどうかを判断してもよい。ロールバックが必要とされる場合、プライマリFASエージェントは、プライマリFASエージェントのネットワークデバイス上でロールバックを実行し、新たな(デクリメントされた)構成識別子を含む制御パケットを他の各FASエージェントに送信してもよい。他のFASエージェントは、(これらのFASエージェントのネットワークデバイスが以前の構成のインスタンスを含む場合、)同様のロールバックを実行するか、またはプライマリFASエージェントから以前の構成を取得してもよい。
【0029】
3つのネットワークデバイスが図示されており(たとえばネットワークデバイス204,212,および220)、その各々が3つのデバイス(例えば、デバイス132、136-1、136-2、140、144-1、144-2、148、152-1、および152-2)のための通信を容易にするが、任意の数のネットワークデバイスがファブリックネットワーク内で動作可能であってもよい。各ネットワークデバイスは、任意の数のデバイスの通信を容易にしてもよい。
【0030】
図2は、本開示の局面によるFAS管理ネットワークデバイスのブロック図の一例を示す。
図1のファブリックネットワーク100のようなファブリックネットワークは、企業ネットワーク、制御センタ、住宅ネットワークなどのような異なるタイプの環境において用いられてもよい。制御センタなどのいくつかの環境は、スパインリーフアーキテクチャを使用してもよい。スパイン層(例えば、スパインデバイス204-1~204-n)は、リーフ層デバイスをメッシュネットワークトポロジーに相互接続するネットワークデバイスを含んでもよい。各スパインデバイスには、それぞれのFASエージェントがプロビジョニングされてもよい(たとえば、FASエージェント208-1はスパイン1 204-1上で実行されてもよく、FASエージェント208-nはスパインn 204-n上で実行されてもよい等)。
【0031】
リーフ層(例えば、コンピューティングデバイス212-1~212-n)は、サーバ、クライアントデバイス、ユーザデバイスなどからのトラフィックを集約するアクセスデバイスを含んでもよい。コンピューティングデバイス212-1~212-nは、コンピューティングデバイス212-1~212-n内に組み込まれた1つ以上のデバイスのネットワーク動作を管理する1つ以上のFASエージェント(FASエージェント220,228,252,および256など)を各々が含む1つ以上のリーフ(リーフ2167,224,244,および248など)を含んでもよい。例えば、コンピューティングデバイス212-1は、FASエージェント220を実行するリーフ216と、FASエージェント228を実行するリーフ224とを含んでもよい。FASエージェント220は、デバイス232-1、232-2、232-3等のネットワーク動作を管理するために実行されてもよい。デバイス232-1、232-2、232-3などは、制御センタ内で動作するコンピューティングデバイスを含んでもよい。場合によっては、コンピューティングデバイスは、他のデバイスを(例えば、物理的または仮想的に)組み込んでもよい。例えば、デバイス232-3は、仮想マシン236および仮想マシン240を実行する物理コンピューティングデバイスであってもよい。仮想マシン236および仮想マシン240は、1つ以上の他のデバイス(例えば、クライアントデバイス、ユーザデバイス、他のコンピューティングデバイスなど)のために異なる実行環境をエミュレートするために、または特定のアプリケーションの実行のために構成された実行環境を提供するために、実行されてもよい。
【0032】
リーフデバイス216(およびFASエージェント220)ならびにリーフ層224(およびFASエージェント228)は各々、(例えば、図示される)異なる通信チャネルを介して、または同じ通信チャネル(図示せず)を介して、デバイス232-1、232-2、232-3などを管理してもよい。リーフ層は、図示のようにデバイス232-1、232-2、232-3に加えて任意の数のデバイスを管理してもよい。リーフ層によって管理される各デバイスは、任意の数の仮想環境を実行してもよい。例えば、コンピューティングデバイス212-nは、FASエージェント252を実行するリーフ244と、FASエージェント256を実行するリーフ248とを含む。リーフ244およびリーフ256の各々は、デバイス260-1、260-2~260-nを管理してもよい。
【0033】
各リーフは、リーフ層の各コンピューティングデバイス内の管理冗長性を可能にするために各スパインに接続されてもよい。例えば、リーフ216に障害が生ずるか、または応答しなくなる場合、リーフ224は、デバイス232-1、232-2、および232-3を管理し続けてもよい。加えて、リーフ224は、スパイン204-1~204-nおよびFASエージェント208-1~208-nへの独立した接続を維持するので、ファブリックネットワーク内のFASエージェントは、ファブリックネットワーク内の各デバイス(物理的または仮想的)のネットワーク動作を管理し続けてもよい。例えば、リーフ216が無効となった状態で、リーフ224のFASエージェント228は、スパイン層のFASエージェント208-1~208-nと通信し続けてもよい。
【0034】
FASエージェントは、どのFASエージェントがプライマリFASエージェントとなるかを判断するために互いに通信してもよい。いくつかの例では、FASエージェントは、独立した管理チャネルを介して通信してもよい。たとえば、FASエージェントは、独立した管理チャネルを介してVLANを確立して、FASエージェントによって管理されるネットワーク動作とは別である他のFASエージェントとの通信を確立してもよい。FASエージェントは冗長ネットワーク管理動作を動作させるので、制御センタは、(冗長性およびネットワーク動作が、FASエージェントによって管理されるので、)冗長性またはネットワーク動作を管理するために外部のホストおよび/またはサーバを割り当てる必要がなくてもよい。
【0035】
制御センタ管理者は、FASエージェントによって管理される単一のデバイス上でコマンドを実行することによって、ファブリックネットワーク全体にわたってコマンドを実行してもよい。FASエージェントは、プライマリFASエージェントへのコマンドを識別してもよい。プライマリFASエージェントは、コマンドを認証し、コマンドを他のFASエージェントに伝搬してもよい。次いで、他のFASエージェントは、それらのFASエージェントが管理するデバイス上でコマンドを実行してもよい。(たとえばVLANを介する)ピアツーピア選択プロトコルが、ファブリックネットワーク内で同期を提供してもよい。いくつかの事例では、状態機械が、構成およびコマンドの同期を管理するためにFASエージェントによって使用されてもよい。
【0036】
図3は、本開示の局面による、プライマリFASエージェントを選択するためのプロセスの一例を示す。ブロック304において、FASエージェントが初期化されるときのプロセス。FASエージェントは、最初にプロビジョニングされたとき(例えば、FASエージェントがネットワークデバイス上で最初に実行されたとき)、またはネットワークデバイスがファブリック(または任意の他のタイプのネットワーク)に追加されたときに、初期化されてもよい。たとえば、ネットワークデバイスがネットワークに追加されると、そのネットワークデバイス上ですでに実行されているFASエージェントが初期化されてもよい。ブロック304において、FASエージェントは、FASエージェントが実行されるネットワークデバイスの特性に基づいて優先度値を判断してもよい。優先度値は、現在利用可能な処理リソース(例えば、メモリおよび/またはプロセッサリソース)、ネットワークデバイスによって管理される1つ以上のデバイスに対するスループット、帯域幅、信号品質、ネットワークデバイスによって管理されるデバイスの数、他のネットワークデバイスへの物理的近接性、またはそれらの組合せなどを含むが、それらに限定されない、ネットワークデバイスの1つ以上の性能メトリックに基づいてもよい。
【0037】
FASエージェントは、その優先度値を現在の優先度値と比較してもよい。現在の優先度値は、現在のプライマリFASエージェントの優先度値であってもよい。FASエージェントが、ネットワークデバイスの優先度値が現在の優先度値より高いと判断した場合、プロセスはブロック308に進む。ネットワークデバイスの優先度値が現在の優先度値よりも低いとFASエージェントが判断した場合、プロセスはブロック320に続き、FASエージェントは、所定の時間間隔(例えば、n秒)の間タイマを起動して待機してもよい。
【0038】
ブロック308において、FASエージェントは、FASエージェントの優先度値が現在の優先度値より高い、と判断したことに応答して、プライマリFASエージェントの役割を主張する。現在の優先度値は、FASエージェントの優先度値に設定されてもよい。FASエージェントは、所定の時間間隔が満了すると(例えば、i秒ごとに)優先度制御パケットを送信してもよい。優先度制御パケットは、ファブリックネットワークのFASエージェントによって確立されたVLANをわたって送信されてもよい。優先度制御パケットは、ファブリックネットワークにおいて実行される他のFASエージェントに、このFASエージェントが現在のプライマリFASエージェントであるという指示を提供してもよい。
【0039】
次いで、FASエージェントは、2つの並列プロセスを実行してもよい。第1のプロセス中に、FASエージェントは、FASエージェントの優先度値を現在の優先度値と比較してもよい。FASエージェントの優先度が現在の優先度値以上である場合、プロセスは所定の時間間隔の間待機し、ブロック208に戻る。このプロセスは、FASエージェントの優先度値が現在の優先度値以上である限り繰り返されてもよい。
【0040】
(今の)プライマリFASエージェントは、次いで、FASがプライマリFASエージェントの役割(たとえば、ファブリックネットワーク内のネットワークデバイスの動作を他のFASエージェントと同期させること)を実行するブロック312に続いてもよい。ブロック312において、プライマリFASエージェントは、x秒ごとにkeep_alive制御パケットを送信してもよい。keep_alive制御パケットは、プライマリFASエージェントのネットワークデバイスの現在の構成(これは、ファブリックネットワークの各ネットワークデバイスの構成であるべきである)の指示を含んでもよい。他のネットワークデバイス上で実行されるFASエージェントは、次いで、ネットワークデバイスがkeep_alive制御パケットに示される構成バージョンを実行しているかどうかを判断してもよい。ネットワークデバイスがkeep_alive制御パケットに示される構成バージョンを実行している場合、それらのFASエージェントは、いかなる追加の処理も実行しなくてもよい。FASエージェントが、それが実行されるネットワークデバイスがkeep_alive制御パケットによって識別される構成バージョンを実行していない、と判断した場合、その特定のFASエージェントは、現在の構成バージョンを取得してもよい。
【0041】
いくつかの例では、ファブリックネットワークはプルモデルを動作させてもよい。それらの事例では、特定のFASエージェントは、keep_alive制御パケットを使用して、現在の構成バージョンをどこで取得すべきかを判断してもよい。たとえば、keep_alive制御パケットは、特定のFASエージェントが現在の構成バージョンを取得し得る制御ベースまたはリポジトリの識別を含んでもよい。特定のFASエージェントは、特定のFASエージェントが、特定のFASエージェントが実行されるネットワークデバイスの構成を更新するプロセスにあることを示す制御パケットを、プライマリFASエージェントに送信してもよい。特定のFASエージェントは、ネットワークデバイスの構成バージョンが、現在、現行のものであることを示す別の制御パケットをプライマリFASエージェントに送信してもよい。プッシュモデルでは、特定のFASエージェントは、(例えば、特定のFASエージェントからの要求で、keep_alive制御パケットにおいて、)プライマリFASエージェントから現在の構成バージョンを受信してもよい。
【0042】
プライマリFASエージェントは、他のFASエージェントから優先度値を周期的に受信してもよい。例えば、各FASエージェントは、ユーザ入力を受信すると、および/またはイベントの発生を検出すると(たとえば、新たなデバイスがファブリックネットワークに追加される、またはデバイスがファブリックネットワークから除去されるなど、ネットワークトポロジーの変化、スループットの所定の変化、帯域幅の所定の変化、処理リソースの所定の変化、信号またはチャネル品質の所定の変化、それらの組合せなど)、所定の時間間隔で(例えば、ブロック320に従ってn秒おきに)そのFASエージェントの優先度値を送信してもよい。いくつかの事例では、プライマリFASエージェントも、ユーザ入力を受信すると、および/またはイベントの発生を検出すると、所定の時間間隔でその優先度値を更新してもよい。
【0043】
プライマリFASエージェントの優先度値が受信された優先度値よりも大きい場合、プライマリFASエージェントは、x秒ごとにkeep_alive制御パケットを送信し続けてもよい)。プライマリFASエージェントの優先度値が受信された優先度値のいずれよりも大きくない場合、2つの並列プロセスは、それぞれ処理ブロック308および312を停止してもよい。たとえば、第1の並列プロセスは、ブロック308の実行を停止し、ブロック320に続いてもよく、ここで、FASエージェントは、タイマ(たとえば、長さn秒)を起動し、待機してもよい。第2の並列プロセスは、ブロック312の実行を停止し、ブロック316に続いてもよい。
【0044】
ブロック316において、プライマリFASエージェントは、最高優先度値を有するFASエージェントにm_yield制御パケットを送信してもよい。いくつかの例では、プライマリFASエージェントは、ファブリックネットワーク内の各FASエージェントにm_yield制御パケットを送信してもよく、各FASエージェントは次いで、新たなプライマリFASエージェントとなるべきFASエージェントからの新たなプライマリ制御パケットを予期してもよい。次いで、プライマリFASエージェントの指定を修正して、プライマリの役割を取り除いてもよい(例えば、プライマリFASエージェントはレギュラーFASエージェントになる)。(現在は非プライマリである)FASエージェントのためのプロセスはブロック320に進む。いくつかの例では、第2の並列プロセスは、第1の並列プロセスと同時にブロック320に達してもよい。次いで、FASエージェントの2つの並列プロセスは、単一のプロセスにマージしてもよい(例えば、並列処理のうちの1つを終了してもよい)。
【0045】
いくつかの事例では、ブロック320におけるタイマの満了時に(たとえば、n秒後に)、FASエージェントは新たな優先度値を生成してもよい。あるいは、FASエージェントは、タイマの時間間隔中に(例えば、タイマが満了する前に)新たな優先度値を生成してもよい。あるいは、依然として、FASエージェントは、以前の優先度値を保持してもよい。たとえば、ファブリックネットワークおよび/またはFASエージェントが実行されるネットワークデバイスは、FASエージェントが最後に優先度レベルを生成した時点から変化していない場合、FASエージェントは、将来のプライマリFASエージェント決定のためにその優先度レベルを使用し続けてもよい。
【0046】
次いで、FASエージェントは、FASエージェントの優先度値を現在のプライマリFASエージェントの優先度値と比較してもよい。FASエージェントの優先度値が現在のプライマリFASエージェントの優先度値よりも大きい場合、プロセスはブロック308に戻る。FASエージェントは、プライマリFASエージェントになり、FASエージェントが新たなプライマリFASエージェントであることを示すプライマリ制御パケットを前のプライマリFASエージェントに送信する。FASエージェントの優先度値が現在のプライマリFASエージェントの優先度値よりも大きい場合、プロセスはブロック320に留まる。FASエージェントは、タイマ(例えば、n秒の時間間隔に対応する)を再開し、待機する。(たとえば、n秒後にタイマが満了すると)、FASエージェントは、FASエージェントの優先度値が現在のプライマリFASエージェントの優先度値よりも大きいかどうかを再び判断してもよい。ブロック320におけるタイマは、所定の時間間隔の満了時に、FASエージェントの優先度値が現在のプライマリFASエージェントの優先度値よりも大きい、とFASエージェントが判断するまで、無期限に繰り返されてもよい。
【0047】
図4は、本開示の局面による、ネットワークデバイスのファブリックの構成を管理するためのプロセスの例を示す図である。FASエージェントは、ファブリックネットワークのネットワークデバイスの構成状態を同期させてもよい。場合によっては、FASエージェントは、現在の構成を別個の状態として特徴付ける状態機械を使用してもよい。構成に対する任意の変更は、状態機械によって新たな状態として特徴付けられてもよく、構成に対する変更は、前の状態から新たな状態に遷移するための手段として識別される。FASエージェントは、変更の識別をローカルに(例えば、各FASエージェントに)またはリポジトリに記憶してもよい。古い構成状態を動作させるネットワークデバイス上で実行されるFASエージェントは、構成に対する変更の識別を実現することによって、現在の状態にアップグレードしてもよい。そのFASエージェントは、現在の状態を動作させるネットワークデバイス上で実行されるFASエージェント(例えば、プライマリFASエージェントまたは既にアップグレードされたエージェントである)から、またはリポジトリから、構成に対する変更の識別を取得してもよい。
【0048】
代替的に、ネットワークデバイスの構成は、バージョン識別子を割り当てられてもよい。構成が変更されると、構成のバージョン識別子は、新たな構成を示すようインクリメントされてもよい。FASエージェントは、構成に対する変更の識別を、各FASエージェントと、および/またはFASエージェントによってアクセス可能なリポジトリにおいて、記憶してもよい。古いバージョン識別子を有するネットワークデバイス上で動作するFASエージェントは、既にアップグレードされたFASエージェントから、またはリポジトリから、構成に対する変更の識別を取得することによって、現在のバージョン識別子にアップグレードしてもよい。加えて、現在の構成が障害を有する場合、FASエージェントは、変更の識別を使用してバージョン識別子をロールバック(例えば、デクリメント)することによって、修正への変更を元に戻す。構成に対する各変更は、バージョン識別子を所定の量だけインクリメントさせてもよい。その結果、FASエージェントは、それが動作するネットワークデバイスの現在のバージョン識別子と、別のネットワークデバイスに関連付けられるインクリメントされたバージョン識別子との間の差から、構成が変更されたかもしれない程度を判断してもよい。
【0049】
プロセスは、ネットワークデバイス上で動作するプライマリFASエージェントがプライマリロールを保持した状態(例えば、別のFASエージェントまたはユーザデバイスからの入力を処理するよう待機する)で開始してもよい(ステップ1)。ステップ2において、コマンドラインインターフェース(CLI)コマンドがネットワークデバイス2によって受信されてもよい。CLIコマンドは、ユーザデバイスから受信されてもよく、ネットワークデバイス2の構成の修正に対応してもよい。ネットワークデバイス2上で実行されるFASエージェントは、修正が実現される前に修正を検出し、修正を認証してもよい。修正を認証することは、修正が、認証されたユーザデバイスおよび/または認証されたユーザ(例えば、適切な認証情報を有するネットワーク管理者)から受信された、と判断することを含んでもよい。代替として、または加えて、修正を認証することはまた、修正によって、通信がネットワーク内のデバイスに到達することを妨害されないであろう(例えば、修正はネットワークを壊さないであろう)、と判断することを含んでもよい。このように修正を認証することは、例えば、以前の構成から、修正のシミュレーションから、確認(例えば、ユーザ入力などからのものである)から、ハッシュ値から、または同様のものから、修正がネットワークの動作を妨害しない、と判断することを含んでもよい。
【0050】
ステップ3において、ネットワークデバイス2のFASエージェントは、修正の識別をネットワークデバイス2のプライマリFASエージェントに転送してもよい。ステップ4において、プライマリFASエージェントは、修正を認証してもよい。プライマリFASエージェントは、ネットワークデバイス2のFASエージェントに関連して上述したのと同じ方法で修正を認証してもよい。いくつかの事例では、プライマリFASエージェントは、ネットワークデバイス2のFASエージェントの代わりに修正を認証してもよい。他の例では、プライマリFASエージェントは、ネットワークデバイス2のFASエージェントが修正を認証した後に、FASエージェントを認証してもよい。さらに他の例では、プライマリFASエージェントおよびネットワークデバイス2のFASエージェントは、並行して修正を認証してもよい。認証されるために、修正は、プライマリFASエージェントおよびネットワークデバイス2のFASエージェントの両方によって認証されてもよい。代替として、修正は、プライマリFASエージェントまたはネットワークデバイス2のFASエージェントのいずれかが修正を認証する場合に認証されてもよい。
【0051】
修正が認証された場合、次いで(ステップ5で)プライマリFASエージェントは、ネットワークデバイス1の構成に対する修正を実現し、(例えば、状態機械を介して)構成の状態を更新する。あるいは、バージョン識別子が使用される場合、プライマリFASエージェントは、ネットワークデバイス1の構成のバージョン識別子をインクリメントする。プライマリFASエージェントは、ネットワークの他のFASエージェントにアクセス可能であってもよいリポジトリに修正を記憶してもよい。
【0052】
ステップ6において、プライマリFASエージェントは、ネットワークデバイス1の構成の現在の状態(またはバージョン識別子)を示すkeep_alive制御パケットをブロードキャストしてもよい。keep_alive制御パケットは、プライマリFASエージェントに接続されたFASエージェントによって受信されてもよい。プライマリFASエージェントに接続されていない、ネットワーク内で動作する他のFASエージェントがある場合、プライマリFASエージェントに接続されたFASエージェントは、keep_alive制御パケットをそれらのFASエージェントに転送してもよい。
【0053】
ステップ7において、ネットワークデバイス2のFASエージェントは(ネットワーク内で動作する任意の他のFASエージェントと同様に)、keep_alive制御パケットを受信すると、構成に対する修正を取得してもよい。いくつかの例では、ネットワークデバイス2のFASエージェントは、プライマリFASエージェントなどの、(例えば、keep_alive制御パケットに一致する状態またはバージョン識別子に基づいて)更新された構成を動作させるネットワークデバイス上で実行されているFASエージェントから修正を取得してもよい。代替として、ネットワークデバイス2のFASエージェントは、状態またはバージョン識別子を使用して、リポジトリにおいてクエリを実行してもよい。リポジトリは、要求しているFASエージェントに修正を返してもよい。次いで、FASエージェントは、構成に対する修正を実施し、状態(またはバージョン識別子)をネットワークの他のネットワークデバイスと同期させてもよい。
【0054】
図5は、本開示の局面による、ネットワークデバイスのファブリックの構成を更新するためのプロセスの例を示す図である。ブロック504では、ファブリックネットワークの第1のネットワークデバイスは、コマンドの識別を第2のネットワークデバイスから受信してもよい。コマンドは、第2のネットワークデバイスの現在の構成の修正に対応してもよい。第1のネットワークデバイスは、第2のネットワークデバイスと同じ現在の構成を動作させてもよい。いくつかの例では、第2のネットワークデバイスは、コマンドラインインターフェースを介してユーザデバイスからコマンドを受信してもよい。
【0055】
ファブリックネットワークは、2つ以上のネットワークデバイス(たとえば、第1のネットワークデバイスおよび第2のネットワークデバイス、ならびに任意選択で任意の数の追加のネットワークデバイス)を含んでもよい。各ネットワークデバイスは、1つ以上の他のデバイスのために通信を容易にするデバイスを含んでもよい。ネットワークデバイスの例は、ルータ、ゲートウェイ、スイッチ、サーバなどを含み得るが、これらに限定されない。
【0056】
第1のネットワークデバイスは、仮想ローカルエリアネットワークを介して第2のネットワークデバイスからコマンドを受信してもよい。たとえば、ファブリックネットワークのネットワークデバイスは各々、それぞれのネットワークデバイスの動作を管理する管理チャネルを含んでもよい。ネットワークデバイス上で実行されるFASエージェントは、管理チャネルを介してVLANを確立してもよい。VLANは、ネットワークデバイスが通信を容易にするデバイスから隔離されてもよい。すなわち、VLANは、ネットワークデバイスが通信サービスを提供するデバイスのためにネットワークデバイスが使用するのと同じ通信チャネルによって動作されないことがある。VLANは、ファブリックネットワークの動作を管理するためにのみアクセス可能であってもよい。
【0057】
ブロック508において、第1のネットワークデバイス上で実行される第1のFASエージェントは、コマンドを認証してもよい。修正を認証することは、修正が、認証されたユーザデバイスおよび/または認証されたユーザ(例えば、適切な認証情報を有するネットワーク管理者)から受信された、と判断することを含んでもよい。代替として、または加えて、修正を認証することはまた、修正によって、通信がネットワーク内のデバイスに到達することを妨害されないであろう(例えば、修正はネットワークを壊さないであろう)、と判断することを含んでもよい。第1のFASエージェントは、たとえば以前の構成を分析すること、修正をシミュレートすること、(例えば、ユーザ入力などから)確認を受信すること、ハッシュ値を記憶されたハッシュ値と照合することなどによって、コマンドがファブリックネットワークを妨害しないと判断してもよい。コマンドが認証されない場合、コマンドは破棄されてもよく、プロセスはブロック504に戻り、新たなコマンドが受信されるのを待ってもよい。コマンドが認証された場合、プロセスはブロック512に進む。
【0058】
ブロック512において、第1のFASエージェントは、コマンドに基づいて第1のネットワークデバイスの現在の構成の修正を引き起こしてもよい。たとえば、第1のネットワークデバイスの現在の構成を修正することは、第1のネットワークデバイスの新たな構成を定義する。いくつかの事例では、第1のネットワークデバイスは、新たな構成をテストしてもよい。たとえば、新たな構成をテストすることは、ユニットテストを実行すること、パケットを所定のデバイス(例えば、ユーザデバイス等)に送信し、応答を監視すること、テストアプリケーションを実行することなどを含んでもよい。テストが失敗した場合、第1のネットワークデバイスの構成は、新たな構成から前の構成にロールバックされてもよい。
【0059】
ブロック516において、コマンドの識別を記憶してもよい。いくつかの例では、コマンドの識別は、第1のFASエージェント(選択肢的に、コマンドをそれぞれのネットワークデバイス上で実現させるすべてのFASエージェント)によって記憶されてもよい。他の例では、コマンドは、ファブリックネットワークのネットワークデバイスにアクセス可能な制御ベースに記憶されてもよい。FASエージェントは、制御ベースからコマンドを取り出すために、コマンドに関連付けられる状態(例えば、以下に記載される新たな状態など)および/またはコマンドの識別を用いて、制御ベースに問い合わせてもよい。
【0060】
ブロック520において、第1のネットワークデバイスの現在の構成に関連付けられる状態識別子が、新たな構成に関連付けられる新たな状態識別子に対応するよう更新されてもよい。状態識別子は、ネットワークデバイスの構成の状態を示す。各ネットワークデバイスの構成は有限のプロパティの組み合わせであってもよいので、プロパティの固有の組み合わせ(例えば構成)の数量も有限であってもよい。その結果、ネットワークデバイスの特定の構成は、状態機械の状態の有限セットのうちの1つとして表されてもよい。ネットワークデバイスの構成が変更されると、構成の状態が変化する(変更が行われ、プロパティの新たな組合せに対応することに相応)。ネットワークデバイスの古い構成の状態を示す状態識別子は、新たな状態を示すために新たな状態識別子に更新されてもよい。構成を構成するプロパティの組合せ内に含まれ得るプロパティの例は、ホスト名、コンソールパスワード、特定のポートの有効化または無効化、デフォルトゲートウェイの割り当て、管理チャネル有効化、インターネットプロトコルアドレス構成、サブネットマスク構成などを含むが、これらに限定されない。
【0061】
状態識別子は、制御ベース(または別のFASエージェント)に問い合わせるために使用されてもよい。制御ベースは、ネットワークデバイスの現在の構成を新たな構成にアップグレードさせるためにネットワークデバイスによって実現され得る1つ以上のコマンドの識別を返してもよい。場合によっては、クエリは(例えば、構成に対する任意の修正が実行される前の現在の状態に関連付けられる)状態識別子も含んでもよい。制御ベースは、現在の状態に関連付けられる状態識別子および新たな状態識別子を使用して、任意の構成を動作させるネットワークデバイスを新たな構成にアップグレードしてもよいコマンドを返してもよい。
【0062】
いくつかの例では、1つ以上のコマンドは、第2のネットワークデバイスによって受信されるコマンドに対応してもよい。他の例では、1つ以上のコマンドは、クエリを生成したデバイスの特性に基づいて識別されてもよい。たとえば、いくつかのネットワークデバイスは、他のネットワークデバイスとは異なるハードウェアおよび/またはファームウェアを動作させてもよい。各ネットワークデバイスは同じ構成に従って構成されてもよいが、ネットワークデバイスに新たな構成を動作させるためのコマンドは、異なるネットワークデバイスに対して異なってもよい。その結果、制御ベースは、要求側ネットワークデバイスによって実現されたときに要求側ネットワークデバイスを他のネットワークデバイスと同じ新たな構成にアップグレードさせてもよい1つ以上のコマンドの識別を含むクエリ応答を生成してもよい。
【0063】
ブロック524において、第1のネットワークデバイス上で実行される第1のFASエージェントは、第2のネットワークデバイス上で実行される第2のFASエージェントに、VLANを介して、新たな状態識別子を含む制御パケットを送信してもよい。第2のFASエージェントが制御パケットを受信すると、第2のFASエージェントは、コマンドの識別を取り出してもよい。いくつかの例では、第2のFASエージェントは、第1のFASエージェント(またはコマンドを既に実現した別のFASエージェント)に、コマンドの識別を要求してもよい。他の例では、第2のFASエージェントは、新たな状態識別子を使用して制御ベースに問い合わせてもよい。次いで、第2のFASエージェントは、第2のネットワークデバイスの構成を新たな構成にアップグレードするために、コマンドを第2のネットワークデバイス上で実現してもよい。
【0064】
第2のFASエージェントが、新たな構成が動作可能でないと判断する場合(例えば、所定量のパケットがドロップされたこと、通信障害、ソフトウェア障害などを検出する)、第2のFASエージェントは、ファブリックネットワークの構成が前の構成にロールバックされるべきであることを示す通信を第1のFASエージェントに送信してもよい。第1のFASエージェントは、通信を認証し、新たな制御パケットを、以前の既知の良好な構成の状態識別子とともに、送信してもよい。新たな制御パケットは、ファブリックネットワークの他のネットワークデバイスにも、ファブリックネットワークの構成が整合し得るように、以前の既知の良好な構成に戻させてもよい。
【0065】
いくつかの例では、第1のFASエージェントがファブリックネットワークのネットワークデバイスに関連付けられる接続障害を検出した場合、第1のFASエージェントは第1のネットワークデバイスの構成を修正しなくてもよい(または、ファブリックネットワークの任意のネットワークデバイスに対する修正を許可しなくてもよい)。たとえば、第1のFASエージェントがネットワークデバイスにおける接続障害を検出した後でコマンドが受信された場合、第1のネットワークデバイスはコマンドを記憶してもよい。影響を受けたネットワークデバイスの接続が復元されると、第1のFASエージェントは、コマンドを取り出し、コマンドを実現してもよい(例えば、ブロック508~524を実行する)。あるいは、第1のFASエージェントは、コマンドを破棄してもよい。影響を受けたネットワークデバイスの接続が復元されると、第1のネットワークデバイスは、ファブリックネットワークのネットワークデバイスの構成を修正するためのコマンドを受け入れてもよい。
【0066】
上記の説明では、実施形態の完全な理解を提供するために具体的な詳細が与えられている。しかしながら、実施形態は、これらの具体的な詳細なしに実施されてもよいことが理解される。例えば、不必要な詳細において実施形態を不明瞭にしないために、回路はブロック図で示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造および技術は、実施の形態を曖昧にすることを回避するために、不必要な詳細なしに示され得る。
【0067】
上記で説明した技術、ブロック、ステップ、および手段の実現形態は、様々な方法で行われ得る。たとえば、これらの技術、ブロック、ステップ、および手段は、ハードウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。ハードウェア実現形態の場合、処理ユニットは、上記で説明した機能を実行するように設計された1つ以上の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブル論理装置(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、他の電子ユニット、および/またはそれらの組み合わせ内に実現されてもよい。
【0068】
また、実施形態は、フローチャート、フロー図、スイム図、制御フロー図、構造図、またはブロック図として示されるプロセスとして説明され得ることに留意されたい。描写は、動作を逐次プロセスとして説明し得るが、動作の多くは、並列または同時に行われることができる。加えて、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれない追加のステップを有し得る。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応する場合、その終了は、呼び出し関数またはメイン関数への関数の戻りに対応する。
【0069】
さらに、実施形態は、ハードウェア、ソフトウェア、スクリプト言語、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、および/またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェア、スクリプト言語、および/またはマイクロコードで実現されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などの機械可読媒体に記憶されてもよい。コードセグメントまたは機械実行可能命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、スクリプト、クラス、または命令、制御構造、および/もしくはプログラムステートメントの任意の組合せを表してもよい。コードセグメントは、情報、制御、引数、パラメータ、および/もしくはメモリ内容を渡し、ならびに/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、制御などは、メモリ共有、メッセージ受け渡し、トークン受け渡し、ネットワーク伝送などを含む任意の好適な手段を介して、受け渡し、転送、または送信されてもよい。
【0070】
ファームウェアおよび/またはソフトウェア実現形態の場合、方法論は、本明細書で説明する機能を実行するモジュール(例えば、プロシージャ、関数など)を用いて実現されてもよい。本明細書で説明する方法論を実現する際に、命令を有形に具現化する任意の機械可読媒体が使用されてもよい。たとえば、ソフトウェアコードはメモリに記憶されてもよい。メモリは、プロセッサ内に、またはプロセッサの外部に、実現されてもよい。本明細書で使用する「メモリ」という用語は、任意のタイプの長期、短期、揮発性、不揮発性、または他の記憶媒体を指し、任意の特定のタイプのメモリもしくはメモリの数、またはメモリが記憶される媒体のタイプに限定されない。
【0071】
さらに、本明細書で開示されるように、「記憶媒体」という用語は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気RAM、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、制御を記憶するための1つ以上のメモリを表してもよい。用語「機械可読媒体」は、ポータブルもしくは固定記憶装置、光記憶装置、ならびに/もしくは命令および/もしくは制御を含むかまたは担持する記憶可能な様々な他の記憶媒体を含むが、これらに限定されない。
【0072】
本開示の原理は、特定の装置および方法に関連して上記で説明されたが、この説明は、本開示の範囲に対する限定としてではなく、単なる例としてなされることが明確に理解されるべきである。
【国際調査報告】