(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-24
(45)【発行日】2025-01-08
(54)【発明の名称】ソフトウェア定義ワイドエリアネットワーク(SD-WAN)において複数のソフトウェアバージョンを管理するための方法、システム、およびコンピュータ読取可能媒体
(51)【国際特許分類】
H04L 41/085 20220101AFI20241225BHJP
H04L 41/0895 20220101ALI20241225BHJP
【FI】
H04L41/085
H04L41/0895
(21)【出願番号】P 2022562353
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 US2021020112
(87)【国際公開番号】W WO2021211217
(87)【国際公開日】2021-10-21
【審査請求日】2024-01-19
(32)【優先日】2020-08-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-04-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】マーティン,トッド
(72)【発明者】
【氏名】パーソンズ,クリストファー・ウェイン
(72)【発明者】
【氏名】フアン,ウェイ
(72)【発明者】
【氏名】アダムス,シェリル・リン
(72)【発明者】
【氏名】ウォーレイ,ポール・ディ
【審査官】長谷川 未貴
(56)【参考文献】
【文献】特開2019-016889(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-101/00
(57)【特許請求の範囲】
【請求項1】
複数のソフトウェア定義ワイドエリアネットワーク(SD-WAN)ソフトウェアバージョンを管理するための方法であって、前記方法は、
SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、前記全体構成のそれらのそれぞれの部分を実現するように作成するコントローラを提供するステップと、
前記コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンを実行する第1のSD-WAN機器のための第1の構成レジストリを生成するステップと、
前記コントローラで、および前記中間構成言語レジストリフォーマットで、前記SD-WANソフトウェアの前記第1のバージョンとは異なる前記SD-WANソフトウェアの第2のバージョンを実行する第2のSD-WAN機器のための第2の構成レジストリを生成するステップと、
前記第1の構成レジストリを前記第1のSD-WAN機器へ送信し、前記第2の構成レジストリを前記第2のSD-WAN機器へ送信するステップと、
前記第1のSD-WAN機器で前記第1の構成レジストリを受信し、前記第1のSD-WAN機器を構成するために前記第1の構成レジストリを使用するステップと、
前記第2のSD-WAN機器で前記第2の構成レジストリを受信し、前記第2のSD-WAN機器を構成するために前記第2の構成レジストリを使用するステップと、
前記第1のSD-WAN機器と前記第2のSD-WAN機器との間で、前記第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通のSD-WAN機能についてネゴシエーションするステップとを含む、方法。
【請求項2】
中間構成言語で前記第1および第2の構成レジストリを生成するステップは、属性名がSD-WAN構成要素に割り当てられるフォーマットで前記第1および第2の構成レジストリを生成するステップを含む、請求項1に記載の方法。
【請求項3】
前記第1および第2のSD-WAN機器を構成するために前記第1および第2の構成レジストリを使用するステップは、SD-WANサービスを提供するために前記第1および第2のSD-WAN機器によって使用される構成要素に対応する前記第1および第2の構成レジストリにおける前記属性の名前を識別するステップと、前記属性の値を読取るステップと、前記第1および第2のSD-WAN機器によって維持される構成データベースにおけるレコードに前記値を格納するステップとを含む、請求項2に記載の方法。
【請求項4】
前記第1および第2の構成レジストリを生成するステップは、前記第1および第2のSD-WAN機器によってサポートされる最上位の中間構成言語レジストリバージョンを入力として受信するステップと、サポートされる前記最上位の中間構成言語レジストリバージョンで前記第1および第2の構成レジストリを生成するステップとを含む
、請求項
1~3のいずれか1項に記載の方法。
【請求項5】
前記第1のSD-WAN機器と前記第2のSD-WAN機器との間でネゴシエーションするステップは、前記第1および第2のSD-WAN機器によって実現されるバージョニングプロトコルを使用してネゴシエーションするステップを含む
、請求項
1~4のいずれか1項に記載の方法。
【請求項6】
前記バージョニングプロトコルを使用してネゴシエーションするステップは、
前記第1のSD-WAN機器から前記第2のSD-WAN機器へバージョニングプロトコルチェックメッセージを送信するステップを含み、前記バージョニングプロトコルチェックメッセージは、前記第1のSD-WAN機器によってサポートされるプロトコルの最上位のバージョンを示すレコードを含み、前記バージョニングプロトコルを使用してネゴシエーションするステップはさらに、
前記第2のSD-WAN機器で、前記バージョニングプロトコルチェックメッセージを受信し、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートするかどうかを判断するステップと、
前記第2のSD-WAN機器で、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートするという判断に応答して、前記バージョニングプロトコルチェックメッセージにおいて示された前記プロトコルの前記バージョンへのサポートを示すバージョニングプロトコルOKメッセージを送信するステップと、
前記第2のSD-WAN機器で、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートしていないという判断に応答して、前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンよりも下位である、前記第2のSD-WAN機器によってサポートされる前記プロトコルの最上位のバージョンを示すバージョニングプロトコルノーケイメッセージを送信するステップとを含む、請求項5に記載の方法。
【請求項7】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して前記第1のSD-WAN機器と前記第2のSD-WAN機器との間でトラフィックを運ぶためのコンジットメッセージのためのフォーマットを定義するプロトコルを含む、請求項6に記載の方法。
【請求項8】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して送信されるトラフィックを暗号化するために使用される暗号化パラメータについてネゴシエーションするための暗号化ネゴシエーション方法を含む、請求項6に記載の方法。
【請求項9】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して前記第1のSD-WAN機器と前記第2のSD-WAN機器との間で送信される制御メッセージのためのフォーマットを定義するプロトコルを含む、請求項6に記載の方法。
【請求項10】
前記制御メッセージは、共有メモリ管理メッセージを含む、請求項9に記載の方法。
【請求項11】
複数のソフトウェア定義ワイドエリアネットワーク(SD-WAN)ソフトウェアバージョンを管理するためのシステムであって、前記システムは、
SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、前記全体構成のそれらのそれぞれの部分を実現するように作成するためのコントローラを含み、前記コントローラは、第1および第2の構成レジストリを中間構成言語で生成して、前記第1および第2の構成レジストリを送信し、前記システムはさらに、
第1のSD-WAN機器を含み、前記第1のSD-WAN機器は、SD-WANソフトウェアの第1のバージョンを実行し、前記第1の構成レジストリを受信し、前記第1のSD-WAN機器を構成するために前記第1の構成レジストリを使用するためのものであり、前記システムはさらに、
第2のSD-WAN機器を含み、前記第2のSD-WAN機器は、前記SD-WANソフトウェアの前記第1のバージョンとは異なる前記SD-WANソフトウェアの第2のバージョンを実行し、前記第2の構成レジストリを受信し、前記第2のSD-WAN機器を構成するために前記第2の構成レジストリを使用するためのものであり、
前記第1および第2のSD-WAN機器は、前記第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通のSD-WAN機能について互いにネゴシエーションするように構成される、システム。
【請求項12】
前記中間構成言語レジストリフォーマットは、SD-WAN構成要素に割り当てられる属性名を含む、請求項11に記載のシステム。
【請求項13】
前記第1および第2のSD-WAN機器は、SD-WANサービスを提供するために前記第1および第2のSD-WAN機器によって使用される構成要素に対応する前記第1および第2の構成レジストリにおける前記属性の名前を識別し、前記属性の値を読取り、前記第1および第2のSD-WAN機器によって維持される構成データベースにおけるレコードに前記値を格納するように構成される、請求項12に記載のシステム。
【請求項14】
前記コントローラは、前記第1および第2のSD-WAN機器によってサポートされる最上位の中間構成言語レジストリバージョンを入力として受信し、サポートされる前記最上位の中間構成言語レジストリバージョンで前記第1および第2の構成レジストリを生成するように構成される、請求項11~13のいずれか1項に記載のシステム。
【請求項15】
前記第1および第2のSD-WAN機器は、前記第1および第2のSD-WAN機器によって実現されるバージョニングプロトコルを使用して、互換性のあるSD-WAN機能について互いにネゴシエーションするように構成される、請求項11~14のいずれか1項に記載のシステム。
【請求項16】
前記バージョニングプロトコルを使用してネゴシエーションすることは、
前記第1のSD-WAN機器から前記第2のSD-WAN機器へバージョニングプロトコルチェックメッセージを送信することを含み、前記バージョニングプロトコルチェックメッセージは、前記第1のSD-WAN機器によってサポートされるプロトコルの最上位のバージョンを示すレコードを含み、前記バージョニングプロトコルを使用してネゴシエーションすることはさらに、
前記第2のSD-WAN機器で、前記バージョニングプロトコルチェックメッセージを受信し、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートするかどうかを判断することと、
前記第2のSD-WAN機器で、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートするという判断に応答して、前記バージョニングプロトコルチェックメッセージにおいて示された前記プロトコルの前記バージョンへのサポートを示すバージョニングプロトコルOKメッセージを送信することと、
前記第2のSD-WAN機器で、前記第2のSD-WAN機器が前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンをサポートしていないという判断に応答して、前記バージョニングプロトコルチェックメッセージにおける前記レコードにおいて識別された前記プロトコルの前記バージョンよりも下位である、前記第2のSD-WAN機器によってサポートされる前記プロトコルの最上位のバージョンを示すバージョニングプロトコルノーケイメッセージを送信することとを含む、請求項15に記載のシステム。
【請求項17】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して前記第1のSD-WAN機器と前記第2のSD-WAN機器との間でトラフィックを運ぶためのコンジットメッセージのためのフォーマットを定義するプロトコルを含む、請求項16に記載のシステム。
【請求項18】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して送信されるトラフィックを暗号化するために使用される暗号化パラメータについてネゴシエーションするための暗号化ネゴシエーション方法を含む、請求項16に記載のシステム。
【請求項19】
前記バージョニングプロトコルを使用してネゴシエーションされる前記プロトコルは、前記第1のSD-WAN機器と前記第2のSD-WAN機器との間のコンジットを通して前記第1のSD-WAN機器と前記第2のSD-WAN機器との間で送信される制御メッセージのためのフォーマットを定義するプロトコルを含む、請求項16に記載のシステム。
【請求項20】
請求項1~10のいずれか1項に記載の方法をコンピュータのプロセッサに実行
させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本願は、2020年8月25日に出願された米国特許出願連続番号第17/002,762号、および2020年4月13日に出願された米国仮特許出願連続番号第63/009,235号の利益を主張する。当該各出願の開示は、それら全体がここに引用により援用される。
【0002】
技術分野
ここに説明される主題は、ソフトウェア定義ワイドエリアネットワーク(software defined wide area network:SD-WAN)に関する。より特定的には、ここに説明される主題は、複数のSD-WANソフトウェアバージョンを管理することに関する。
【背景技術】
【0003】
背景
SD-WANでは、SD-WAN機器と呼ばれるネットワークノードが、ワイドエリアネットワーク上で、ここにコンジットと呼ばれるトンネルを通して互いに通信する。1つの例示的なネットワークアーキテクチャでは、中央コントローラがSD-WANの単一構成を定義し、SD-WANの個々の要素が全体構成を実現するために適切に構成されることを保証する。コントローラはまた、SD-WANのソフトウェア更新を管理する。SD-WAN機能を実現することは、SD-WANネットワーク要素間のインテリジェントコラボレーションを必要とする。そのようなインテリジェントコラボレーションは、SD-WANネットワーク要素が互換性のあるSD-WANソフトウェアバージョンを実行することを必要とする。SD-WANソフトウェアとは、SD-WAN機能を実現するためにSD-WAN機器上で実行されるソフトウェアである。
【0004】
いくつかのSD-WANネットワークアーキテクチャでは、すべてのSD-WAN機器はSD-WANソフトウェアの同じバージョンを実行し、新しいSD-WANソフトウェアバージョンが利用可能になると、コントローラは、SD-WAN機器のすべてに、同時に新しいリリースに更新するよう強制する。すべてのSD-WAN機器に、同じソフトウェアバージョンを実行させ、同時に新しいソフトウェアバージョンに更新させることは、SD-WAN機器間の互換性を保証する。しかしながら、すべてのSD-WAN機器に、同時にSD-WANソフトウェアの新しいバージョンに更新するよう強制することは、更新プロセス中にネットワークが利用できなくなることをもたらす。SD-WANはすべての時間帯にまたがり得るため、一部のユーザに対する日中のサービス停止をもたらさないであろうネットワーク規模のSD-WANソフトウェア更新のための都合のいい時間はない。
【0005】
いくつかのSD-WANアーキテクチャでは、同じネットワークにおけるSD-WANネットワーク要素は、異なるソフトウェアバージョンを実行することを許可される。しかしながら、これらの異なるバージョンは典型的には、軽微なバグ修正を有し、新しい機能を実質的に有さない、パッチリリースである。新しい機能が実質的にないバグ修正である異なるソフトウェアバージョンのみを許可することは、これらの異なるソフトウェアバージョンを実現するSD-WANネットワーク要素間の互換性を保証するが、新しい機能の導入を遅らせる。そのようなアーキテクチャでは、SD-WANを新しい機能を有する主要リリースへ更新することは依然として、すべてのSD-WANネットワーク要素に、同時に更新することを要求する。
【0006】
SD-WANおよびコンピュータネットワーキング業界では、ネットワークプロトコル互換性は、構築される機能セットを定義し、その機能セットのみを使用することによって提供されることが多い。たとえば、インターネットプロトコルバージョン4(Internet protocol version 4:IPv4)は、ノードは互いに通信可能であることを遵守しなければならないという、ヘッダフィールドフォーマットなどの構築される機能セットを有する。すべてのノードがIPv4によって定義された機能セットに合意する限り、通信は可能である。IPv4アドレスなどのヘッダフィールドのサイズを変更することが望ましい場合、ネットワークノードはIPバージョン6(IP version 6:IPv6)などの新しいプロトコルにアップグレードしなければならないが、それはIPv4と互換性がない。
【0007】
SD-WANソフトウェアの異なるバージョンが異なるSDWANノード上に同時に存在することを許可することが望ましい。ここで、異なるSD-WANバージョンは、単なるバグ修正以上のものを含み、それは、互換性のない少なくともいくつかの機能を含むかもしれない。異なるソフトウェアバージョンがSD-WAN機器上に存在することを許可することに関連付けられた別の問題は、コントローラによって制御される機器の構成が、機器によって実行されているソフトウェアレベルに結び付けられるということである。各ネットワーク要素によって実現される各ソフトウェアレベルのための構成を作成する方法を知っていることをコントローラに要求することは、特にSD-WAN機器がコントローラよりも新しいソフトウェアを実行し得る場合には望ましくない。また、すべてのSD-WAN機器が同じソフトウェアバージョンを実行する場合、SD-WAN機器を構成することはより単純である。なぜなら、コントローラは、単一のソフトウェアバージョンに結び付けられた構成を作成することのみを要求されるためである。しかしながら、SD-WAN機器が異なるソフトウェアバージョンを実行するネットワークでは、SD-WAN機器のための構成を作成する際にコントローラ複雑性を減少させるためのメカニズムが必要とされる。
【0008】
したがって、これらのおよび他の難題に鑑みて、異なるSD-WANソフトウェアバージョンを管理するための改良された方法、システム、およびコンピュータ読取可能媒体に対する要望が存在する。
【発明の概要】
【0009】
概要
ここに説明される主題は、SD-WANにおける各ネットワーク要素のソフトウェア改訂を正確に制御し、SD-WANのすべての要素間の互換性を保証するためのSD-WANコントローラのための方法論を提供する。SD-WANコントローラは、SD-WANを記述し、SD-WANのどの機能がどのソフトウェアバージョンによってサポートされるかを知っている単一構成を維持することができる。SD-WANコントローラは、SD-WANのすべての要素によってサポートされ、いくつかのネットワーク要素がある機能をサポートしていないソフトウェアバージョンを実行している場合に使用できない機能をイネーブルにすることを防止できる構成オプションを、ユーザに提示することができる。
【0010】
各ネットワーク要素の低レベルの構成オプション(ここに「レジストリ」と呼ばれる)は、ソフトウェアレベルに依存して変わる場合がある。また、上述のように、各ネットワーク要素のためのレジストリを作成する方法を知っていることをSD-WANコントローラに強制することは、特にネットワーク要素がコントローラよりも新しいソフトウェアを実行し得る場合には望ましくない。この難題を避けるために、ここに説明される主題は、低レベルの詳細を詳しく述べることなく特定のネットワーク要素の構成を定義する、ここに説明される例では拡張マークアップ言語(extensible markup language:XML)を使用して実現される中間構成言語レジストリを定義する。SD-WANコントローラは、中間構成言語構成レジストリを作成し、SD-WANネットワーク要素へ分散させる。SD-WANネットワーク要素は、中間言語構成レジストリを使用して、SD-WANネットワーク要素を構成する。異なるソフトウェアバージョンを実現するSD-WANネットワーク要素は次に、バージョニングプロトコルを使用して互いにネゴシエーションし、通信プロトコルメッセージフォーマットおよび共有メモリパラメータなどの互換性のあるSD-WAN機能を実現する。
【0011】
ここに説明される主題を使用して、SD-WANコントローラは、SD-WANネットワークにおける任意のソフトウェア改訂のために作用し得る1組の中間構成言語レジストリを生成することができる。これにより、SD-WANコントローラは、ソフトウェアアップグレードが著しい新機能を追加し、ネットワークプロトコルに変更を加え、ネットワーク要素の一部のみがアップグレード可能である場合でも、ネットワークにおける任意の要素のソフトウェアを無制限でアップグレードするためのオプションを提供することができる。
【0012】
SD-WANネットワーク要素が、ここにコンジットと呼ばれる、互いへの接続部を形成すると、SD-WANネットワーク要素は、バージョニングプロトコルを使用して、使用されるコンジット通信プロトコルの詳細についてネゴシエーションする。バージョニングプロトコルを使用して1組の互換性のある機能についてネゴシエーションすることによって、より新しいソフトウェアが、より古いソフトウェアバージョンと互換性のあるモードでコンジット通信プロトコルを実行できるということが常に保証され、SD-WANコントローラは、コンジット通信プロトコルのより新しいモードを要求する機能が構成されないことを保証する。
【0013】
他の業界の解決策とは異なり、ここに説明されるこの主題は、ソフトウェアをダウングレードする場合もまったく同様に作用する。これは、新しいソフトウェアにおけるバグに遭遇した場合に、ソフトウェアを元に戻す必要がある際に役に立つ。
【0014】
ここに説明される主題の一局面によれば、複数のSD-WANソフトウェアバージョンを管理するための方法が提供される。方法は、SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、全体構成のそれらのそれぞれの部分を実現するように作成するコントローラを提供するステップを含む。方法は、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンを実行する第1のSD-WAN機器のための第1の構成レジストリを生成するステップを含む。方法はさらに、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンとは異なるSD-WANソフトウェアの第2のバージョンを実行する第2のSD-WAN機器のための第2の構成レジストリを生成するステップを含む。方法はさらに、第1の構成レジストリを第1のSD-WAN機器へ送信し、第2の構成レジストリを第2のSD-WAN機器へ送信するステップを含む。方法はさらに、第1のSD-WAN機器で第1の構成レジストリを受信し、第1のSD-WAN機器を構成するために第1の構成レジストリを使用するステップを含む。方法はさらに、第2のSD-WAN機器で第2の構成レジストリを受信し、第2のSD-WAN機器を構成するために第2の構成レジストリを使用するステップを含む。方法はさらに、第1のSD-WAN機器と第2のSD-WAN機器との間で、第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通のSD-WAN機能についてネゴシエーションするステップを含む。
【0015】
ここに説明される主題の別の局面によれば、中間構成言語で第1および第2の構成レジストリを生成するステップは、属性名がSD-WAN構成要素に割り当てられるフォーマットで第1および第2の構成レジストリを生成するステップを含む。
【0016】
ここに説明される主題の別の局面によれば、第1および第2のSD-WAN機器を構成するために第1および第2の構成レジストリを使用するステップは、SD-WANサービスを提供するために第1および第2のSD-WAN機器によって使用される構成要素に対応する第1および第2の構成レジストリにおける属性の名前を識別するステップと、属性の値を読取るステップと、第1および第2のSD-WAN機器によって維持される構成データベースにおけるレコードに値を格納するステップとを含む。
【0017】
ここに説明される主題の別の局面によれば、第1および第2の構成レジストリを生成するステップは、第1および第2のSD-WAN機器によってサポートされる最上位の中間構成言語レジストリバージョンを入力として受信するステップと、サポートされる最上位の中間構成言語レジストリバージョンで第1および第2の構成レジストリを生成するステップとを含む。
【0018】
ここに説明される主題の別の局面によれば、第1のSD-WAN機器と第2のSD-WAN機器との間でネゴシエーションするステップは、第1および第2のSD-WAN機器によって実現されるバージョニングプロトコルを使用してネゴシエーションするステップを含む。
【0019】
ここに説明される主題の別の局面によれば、バージョニングプロトコルを使用してネゴシエーションするステップは、第1のSD-WAN機器から第2のSD-WAN機器へバージョニングプロトコルチェックメッセージを送信するステップを含み、バージョニングプロトコルチェックメッセージは、第1のSD-WAN機器によってサポートされるプロトコルの最上位のバージョンを示すレコードを含み、バージョニングプロトコルを使用してネゴシエーションするステップはさらに、第2のSD-WAN機器で、バージョニングプロトコルチェックメッセージを受信し、第2のSD-WAN機器がバージョニングプロトコルチェックメッセージにおけるレコードにおいて識別されたプロトコルのバージョンをサポートするかどうかを判断するステップと、第2のSD-WAN機器で、第2のSD-WAN機器がバージョニングプロトコルチェックメッセージにおけるレコードにおいて識別されたプロトコルのバージョンをサポートするという判断に応答して、バージョニングプロトコルチェックメッセージにおいて示されたプロトコルのバージョンへのサポートを示すバージョニングプロトコルOKメッセージを送信するステップと、第2のSD-WAN機器で、第2のSD-WAN機器がバージョニングプロトコルチェックメッセージにおけるレコードにおいて識別されたプロトコルのバージョンをサポートしていないという判断に応答して、バージョニングプロトコルチェックメッセージにおけるレコードにおいて識別されたプロトコルのバージョンよりも下位である、第2のSD-WAN機器によってサポートされるプロトコルの最上位のバージョンを示すバージョニングプロトコルNOKay(ノーケイ)メッセージを送信するステップとを含む。
【0020】
ここに説明される主題の別の局面によれば、バージョニングプロトコルを使用してネゴシエーションされるプロトコルは、第1のSD-WAN機器と第2のSD-WAN機器との間のコンジットを通して第1のSD-WAN機器と第2のSD-WAN機器との間でトラフィックを運ぶためのコンジットメッセージのためのフォーマットを定義するプロトコルを含む。
【0021】
ここに説明される主題の別の局面によれば、バージョニングプロトコルを使用してネゴシエーションされるプロトコルは、第1のSD-WAN機器と第2のSD-WAN機器との間のコンジットを通して送信されるトラフィックを暗号化するために使用される暗号化パラメータについてネゴシエーションするための暗号化ネゴシエーション方法を含む。
【0022】
ここに説明される主題の別の局面によれば、バージョニングプロトコルを使用してネゴシエーションされるプロトコルは、第1のSD-WAN機器と第2のSD-WAN機器との間のコンジットを通して第1のSD-WAN機器と第2のSD-WAN機器との間で送信される制御メッセージのためのフォーマットを定義するプロトコルを含む。
【0023】
ここに説明される主題の別の局面によれば、制御メッセージは、共有メモリ管理メッセージを含む。
【0024】
ここに説明される主題の別の局面によれば、複数のソフトウェア定義ワイドエリアネットワーク(SD-WAN)ソフトウェアバージョンを管理するためのシステムが提供される。システムは、SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、全体構成のそれらのそれぞれの部分を実現するように作成するためのコントローラを含み、コントローラは、第1および第2の構成レジストリを中間構成言語で生成して、第1および第2の構成レジストリを送信する。システムはさらに、第1のSD-WAN機器を含み、第1のSD-WAN機器は、SD-WANソフトウェアの第1のバージョンを実行し、第1の構成レジストリを受信し、第1のSD-WAN機器を構成するために第1の構成レジストリを使用するためのものである。システムはさらに、第2のSD-WAN機器を含み、第2のSD-WAN機器は、SD-WANソフトウェアの第1のバージョンとは異なるSD-WANソフトウェアの第2のバージョンを実行し、第2の構成レジストリを受信し、第2のSD-WAN機器を構成するために第2の構成レジストリを使用するためのものである。第1および第2のSD-WAN機器は、第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通のSD-WAN機能について互いにネゴシエーションするように構成される。
【0025】
ここに説明される主題の別の局面によれば、第1および第2のSD-WAN機器は、SD-WANサービスを提供するために第1および第2のSD-WAN機器によって使用される構成要素に対応する第1および第2の構成レジストリにおける属性の名前を識別し、属性の値を読取り、第1および第2のSD-WAN機器によって維持される構成データベースにおけるレコードに値を格納するように構成される。
【0026】
ここに説明される主題の別の局面によれば、コントローラは、第1および第2のSD-WAN機器によってサポートされる最上位の中間構成言語レジストリバージョンを入力として受信し、サポートされる最上位の中間構成言語レジストリバージョンで第1および第2の構成レジストリを生成するように構成される。
【0027】
ここに説明される主題の別の局面によれば、第1および第2のSD-WAN機器は、第1および第2のSD-WAN機器によって実現されるバージョニングプロトコルを使用して、互換性のあるSD-WAN機能について互いにネゴシエーションするように構成される。
【0028】
ここに説明される主題の別の局面によれば、コンピュータのプロセッサによって実行されると複数のステップを行なうようにコンピュータを制御する実行可能命令が格納された、非一時的コンピュータ読取可能媒体が提供される。複数のステップは、SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、全体構成のそれらのそれぞれの部分を実現するように作成するコントローラを提供するステップを含む。複数のステップはさらに、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンを実行する第1のSD-WAN機器のための第1の構成レジストリを生成するステップを含む。複数のステップはさらに、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンとは異なるSD-WANソフトウェアの第2のバージョンを実行する第2のSD-WAN機器のための第2の構成レジストリを生成するステップを含む。複数のステップはさらに、第1の構成レジストリを第1のSD-WAN機器へ送信し、第2の構成レジストリを第2のSD-WAN機器へ送信するステップを含む。複数のステップはさらに、第1のSD-WAN機器で第1の構成レジストリを受信し、第1のSD-WAN機器を構成するために第1の構成レジストリを使用するステップを含む。複数のステップはさらに、第2のSD-WAN機器で第2の構成レジストリを受信し、第2のSD-WAN機器を構成するために第2の構成レジストリを使用するステップを含む。複数のステップはさらに、第1のSD-WAN機器と第2のSD-WAN機器との間で、第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通のSD-WAN機能についてネゴシエーションするステップを含む。
【0029】
ここに説明される主題は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実現されてもよい。そのため、ここに使用されるような「機能」、「ノード」、または「モジュール」という用語は、説明されている機能を実現するためのハードウェアを指し、それはソフトウェアおよび/またはファームウェアコンポーネントも含んでいてもよい。例示的な一実現化例では、ここに説明される主題は、コンピュータのプロセッサによって実行されると複数のステップを行なうようにコンピュータを制御する実行可能命令が格納された、コンピュータ読取可能媒体を使用して実現されてもよい。ここに説明される主題を実現するために好適な例示的なコンピュータ読取可能媒体は、ディスクメモリデバイス、チップメモリデバイス、プログラマブルロジックデバイス、および特定用途向け集積回路といった非一時的コンピュータ読取可能媒体を含む。加えて、ここに説明される主題を実現するコンピュータ読取可能媒体は、単一のデバイスまたはコンピューティングプラットフォーム上に位置していてもよく、もしくは、複数のデバイスまたはコンピューティングプラットフォーム間で分散されてもよい。
【図面の簡単な説明】
【0030】
【
図1】例示的なSD-WANネットワークアーキテクチャを示すネットワーク図である。
【
図2】異なるソフトウェアバージョンを実行するSD-WANネットワーク要素への、中間構成言語フォーマットの構成レジストリの分散を示すネットワーク図である。
【
図3】ネゴシエーション中のプロトコルのより下位のバージョンを実現するSD-WANがプロトコルについてのバージョンチェックを開始する場合の、SD-WANネットワーク要素間の機能ネゴシエーションを示すメッセージフロー図である。
【
図4】ネゴシエーション中のプロトコルのより上位のバージョンをサポートするSD-WANネットワーク要素がプロトコルについてのバージョンチェックを開始する場合の、SD-WANネットワーク要素間の機能ネゴシエーションを示すメッセージフロー図である。
【
図5】SD-WANネットワーク要素が各々、ネゴシエーション中のプロトコルの複数のバージョンをサポートする場合の、SD-WANネットワーク要素間の機能ネゴシエーションを示すメッセージフロー図である。
【
図6】SD-WANネットワーク要素が各々、ネゴシエーション中のプロトコルの複数のバージョンをサポートし、バージョンチェックを開始するSD-WAN要素が、2つのバージョン間にあるものの他方のSD-WANネットワーク要素によってサポートされていない中間バージョンを使用する場合の、SD-WANネットワーク要素間の機能ネゴシエーションを示すメッセージフロー図である。
【
図7】複数のSD-WANソフトウェアバージョンを管理するための例示的なステップを示すフローチャートである。
【発明を実施するための形態】
【0031】
詳細な説明
ここに説明される主題は、SD-WANソフトウェアの異なるバージョンを実行するSD-WANネットワーク要素を管理するための方法、システム、およびコンピュータ読取可能媒体を含む。上述のように、SD-WANコントローラは中間構成言語レジストリを生成し、その少なくともいくつかがSD-WANソフトウェアの異なるバージョンを実行するSD-WANネットワーク要素へ当該レジストリを分散させる。ネットワーク要素は中間構成言語レジストリを受信し、中間構成言語レジストリを使用してSD-WANネットワーク要素を構成する。異なるソフトウェアバージョンを実行するSD-WANネットワーク要素は次に、SD-WAN機能の互換性のあるセットを識別するために互いにネゴシエーションする。中間構成言語およびSD-WANにおけるその使用の詳細について説明する前に、例示的なSD-WANアーキテクチャについて説明する。
【0032】
例示的なアーキテクチャでは、SD-WANは適応プライベートネットワーク(adaptive private network:APN)と呼ばれる。SD-WANネットワーク要素はAPN機器(APN appliance:APNA)と呼ばれ、APNAは、コンジットと呼ばれるトンネルを介して互いに接続される。
図1は、そのようなAPNアーキテクチャの一例を示す。
図1では、アーキテクチャは、コンジット116、118、120、122、124、および126を介して互いに接続される複数のAPNA100、102、104、106、108、110、および112を含む。コンジットとは、APN機器間の接続部である。コンジットは、WAN128を通してAPNA間でトラフィックを運ぶために使用され得る。コントローラ130が、APNA100、102、104、106、108、110、および112へ構成を分散させることによって、APNの全体構成および動作を制御する。APNA100、102、104、106、108、110、および112が異なるAPNソフトウェアバージョンを実行している場合、コントローラ130は、互換性のない機能がAPNA100、102、104、106、108、110、および112によって実現されないようにする構成を分散させなければならない。上述のように、コントローラ130は、1つ以上のコンジット132を介して中間構成言語レジストリをAPNA100、102、104、106、108、110、および112へ分散させることによって、そのような構成を取り扱う。APNA100、102、104、106、108、110、および112は、中間構成言語レジストリを使用して、SD-WAN機能を実現するようにAPNA100、102、104、106、108、110、および112を構成する。APNA100、102、104、106、108、110、および112は、互換性のあるAPN機能を実現するように互いにネゴシエーションする。
【0033】
図2は、コントローラ130が構成レジストリを生成し、APNソフトウェアの異なるバージョンを実行するAPNA106および108へ送信することを示す図である。
図2では、コントローラ130は、少なくとも1つのプロセッサ200とメモリ202とを含む。コントローラ130はまた、APNA106および108を構成するための構成レジストリを生成して分散させる構成マネージャ203を含む。構成レジストリは中間構成言語レジストリフォーマットになっており、それは以下により詳細に説明される。構成マネージャ203は、構成エディタ205を介してユーザによって選択された構成オプションに基づいて構成レジストリを生成する構成コンパイラ204を含む。構成エディタ205は、互換性のある構成のみが生成されてAPN機器へ送信されるように、APN機器によって実行されているAPNソフトウェアバージョンに基づいてAPN機器を構成するためのオプションをユーザに提示する。構成エディタ205は、ネットワークにおける機器によってサポートされる最上位の共通レジストリバージョンを知り、それを、コンパイラを実行して編集可能構成オブジェクトをユーザに提示する際に適用するであろう。
【0034】
コントローラ130の先行する一実現化例では、コンパイラ204は、各APN機器のAPNソフトウェアによって読取られ、構成データベースに投入するために使用される、構成オプションおよびそれらの値を表わす数字を含む1組のレジストリファイルを生成した。以下は、コンパイラ204の先行する一実現化例が入力として受信したであろう構成ファイルの一部の一例である。
【0035】
【0036】
上に列挙された構成例は、機器を、特定のセキュリティキーを使用する特定のモデルの主コントローラとして機能するように構成する。コンパイラ204の先行する実現化例は、上述の構成例を以下のコンマ区切り値(comma separated value:CSV)構成レジストリへ変換し、それは機器へ通信されたであろう。以下は、main.regと呼ばれるCSV構成ファイルのうちの1つである。
【0037】
【0038】
以下は、上述の構成例について生成された別のCSVファイルである。このファイルはsites.regと呼ばれる。
【0039】
【0040】
これらのレジストリを読取るには、各APN機器上で実行されるAPNソフトウェアは、各行の最初の数字が何を意味するかを知っていなければならない。たとえば、724は、APNソフトウェアコードにおける以下の#defineステートメントに由来する。
【0041】
【0042】
724というID番号は、APN機器によって実行されているAPNソフトウェアのバージョンおよびコンパイラバージョンに特有である。たとえば、このID番号がコンパイラバージョン7.3を使用して生成された場合、それは、APNソフトウェアバージョン8.0によって読取可能ではないであろう。なぜなら、構成設定のためのID番号の値が、異なるAPNソフトウェアバージョン間で同じであると保証されないためである。
【0043】
コンパイラ204が異なるソフトウェアバージョンのためのレジストリを生成できるようにするために、上述のように、コンパイラ204は、ネットワークにおけるすべてのAPN機器によってサポートされる最上位のレジストリバージョンを入力として受信し、サポートされる最上位の中間構成言語レジストリフォーマットでAPN機器のための中間構成言語レジストリを生成するであろう。前の段落での例を使用すると、あるAPN機器がAPNソフトウェアバージョン7.3を実行して中間構成言語レジストリフォーマット7.3をサポートし、別のAPN機器がAPNソフトウェアバージョン8.0を実行して中間構成言語レジストリフォーマット7.3および8.0をサポートする場合、コンパイラ204は、中間構成言語レジストリバージョン7.3を入力として受信し、中間構成言語レジストリフォーマット7.3に従って中間構成言語レジストリを生成するであろう。加えて、各構成アイテムを、中間構成言語レジストリフォーマットで、以下に詳細に説明されるようなソフトウェアリリース間で変わり得るID番号に関連付けるのではなく、構成アイテムは名前によって識別され、当該名前は、APNソフトウェアリリース間で使用される構成アイテムについては同じままであろう。ソフトウェアリリースによって構成アイテムが追加される場合、当該アイテムは新しい名前を受信するであろう。異なるソフトウェアバージョンを実行するAPN機器は、異なる機能を有する場合があり、サポートされるAPN機能の共通セットについて互いにネゴシエーションする場合がある。
【0044】
図2では、APNA106および108は各々、少なくとも1つのプロセッサ206とメモリ208とを含む。APNA106および108はまた、APNA106および108を構成するために、コントローラ130から受信された中間構成言語での構成レジストリを使用するための構成ジェネレータ210を含む。一例では、構成ジェネレータ210は、構成レジストリにおけるフィールドから読取られた構成データを構成データベース211に投入するスクリプトを生成し得る。ここに説明される例示的な実現化例では、コントローラ130から受信された構成レジストリを作成するために使用される言語はXMLであり、構成ジェネレータ210はXML属性の名前および値を読取り、これらの値を使用して、対応するレコードを構成データベース211に投入する。構成データが構成データベース211にいったん投入されると、APNソフトウェア212は、データベース211における構成を読取り、対応システム構成をメモリ208で作成する。APNソフトウェア212は、メモリ208におけるシステム構成を使用して、コンジットを構築して維持すること、当該コンジットを通してトラフィックを送信すること、およびタイミング同期といったAPN機能を実現する。
【0045】
APNA106および108の各々はまた、ネットワークにおける他のAPNAと、互換性のある機能についてネゴシエーションするための機能ネゴシエータ214を含む。機能ネゴシエータ214は、互換性のある機能についてネゴシエーションするために、バージョニングプロトコルを利用し得る。バージョニングプロトコルの例示的な用途が以下に説明されるであろう。
【0046】
上述のように、ここに説明される主題は、APNAがAPNソフトウェアの異なるバージョンを実行することを可能にする。図示された例では、APNA106はAPNソフトウェア212のバージョン1.0を実行し、APNA108はAPNソフトウェア212のバージョン1.1を実行する。
【0047】
中間構成言語は、コントローラ130が各APNAの基礎的詳細を知っていることを要求しない。レジストリを作成するために使用される中間構成言語のバージョンは、ネットワークにおけるすべてのAPNAによってサポートされる最上位のバージョンであるであろう。一例では、レジストリのために設定されたバージョン番号は、ネットワークによってサポートされる最下位のAPNソフトウェアバージョンと同じである。図示された例では、APNA106はAPNソフトウェアバージョン1.0を使用し、APNA108はAPNソフトウェアバージョン1.1を使用する。APNソフトウェアバージョン1.0は、ネットワークにおけるノードによってサポートされる最下位のソフトウェアバージョンであるため、構成レジストリは、中間構成言語のバージョン1.0を使用して作成されるであろう。
【0048】
以下は、中間構成レジストリを作成するために使用される中間構成言語の例示的な仕様である。
【0049】
【0050】
以下に示す表1は、上述の例示的な構成レジストリにおけるフィールドの定義を示す。
【0051】
【0052】
上に定義された中間構成言語レジストリフォーマットでは、SD-WAN構成要素には、ソフトウェアリリース間で変わるID番号ではなく、名前が割り当てられる。たとえば、WANリンクのための構成要素には、WAN_Linkというフィールド名が割り当てられ、コンジットのための構成要素には、Conduitというフィールド名が割り当てられ得る。フィールド名は、対応する機能を実現するようにAPN機器を構成するためにAPNソフトウェアが使用する構成要素に対応する。各デバイス上で実行されるAPNソフトウェアは、属性および値を中間構成言語レジストリフォーマットで読取る方法を知っていることのみが要求される。APNソフトウェアが、構成要素に対応するID番号を有するコンマ区切り値からなるレジストリファイルを読取ることができるという要件は、もはやない。
【0053】
上述のように、各APN機器がその構成レジストリをコントローラ130からいったん受信すると、自動的に生成されたスクリプトが構成レジストリXMLファイルを読取り、構成を構成データベース211に挿入し、構成データが構成データベース211に書込まれたことをAPNソフトウェア130に通知する。XMLファイルから構成データを読取ることは、上に特定されたXML属性についての値を読取ることと、属性の値を構成データベース211における対応するレコードに書込むこととを含み得る。
【0054】
APNソフトウェアスタートアップ事例については、この通知が受信されて構成データベース211からの読取りに進むまで、APNソフトウェア212は待つであろう。構成更新事例については、自動的に生成されたスクリプトはまた、APNソフトウェア212が構成データベース211からそれらの新しい変更を読取る方法と行なわれる必要がある構成更新のタイプとを知るように、レジストリ変更のタイプをAPNソフトウェア212に通知するであろう。構成更新については、APNソフトウェア212と構成レジストリからの値を投入するスクリプトとが双方とも構成データベース211に書込んでいるため、これらの書込みは、APNソフトウェア212およびスクリプトが互いのデータを破壊しないように調整されなければならない。
【0055】
上述のように、APN機器がそれら自体の構成をコントローラ130から受信すると、APN機器は、バージョニングプロトコルを使用して、互換性のあるAPN機能について互いにネゴシエーションする。そのプロトコルはここにTVPと呼ばれ、それは、タラリ・バージョニング・プロトコル(Talari Versioning Protocol)の略である。
【0056】
複数のSD-WANまたはAPNソフトウェアバージョンをサポートするために、新しいTVPレコードタイプが、使用するための異なるAPNメッセージバージョンについてネゴシエーションするために追加される。未知のTVPレコードタイプが受信された場合、それは無視され、受信側APNAはデフォルトAPNメッセージのバージョンを使用するであろう。TVPの現行バージョンは各レコードについてのタイプ、長さ、値(type, length, value:TLV)を使用し、新しいレコードを追加しやすくし、未知のレコードを無視しやすくする。
【0057】
APNノードが互換性のあるメッセージフォーマットについてネゴシエーションするためにTVPを使用し得る1つのタイプのメッセージは、異なるサイトに位置するAPN機器間にコンジットを構築して維持するために使用されるメッセージである。これらのコンジットは、暗号化されたトラフィックをサイト間で運ぶトンネルであり、複数のWANリンクにまたがっている場合がある。コンジットトラフィックは、シーケンス番号とタイムスタンプとを含むヘッダを有するエンベロープ内でカプセル化される。このエンベロープは、トラフィックがネットワークを通る最良経路上で方向付けられてネットワーク障害の緩和を可能にするように、パケット損失、待ち時間、およびジッタが測定されることを可能にする。コンジットメッセージのためのメッセージフォーマットを定義するプロトコルはTRPと呼ばれ、それは、タラリ・リライアブル・プロトコル(Talari Reliable Protocol)の略である。
【0058】
TRPバージョンレコードは、複数のソフトウェアバージョンをサポートするために必要とされるTVPへの拡張の一例として使用され得る。APN(SD-WAN)ソフトウェアの第1の複数バージョンリリースについては、必要とされるTRPバージョンレコードはないであろう。将来のリリースについては、TRPヘッダを変更する必要がある場合、新しいレコードが作成されるであろう。以下のシナリオは、異なるAPNサイト間でTRPバージョンについてネゴシエーションするためにTVPが使用される異なる使用事例を示す。
【0059】
シナリオ1および
図3は、単一のTRPバージョンしか知らないサイト1がTRPバージョンチェックを開始する場合の、TRPレコードフォーマットについてネゴシエーションするためのTVPの使用を示す:
・シナリオ1:サイト1は、APNソフトウェアバージョン8.3.0.0.0を実行し、TRPバージョン8.3.0.0.0を有する。サイト2は、APNソフトウェアバージョン8.4.0.0.0を実行し、TRPバージョン8.3.0.0.0および8.4.0.0.0をサポートする。
図2におけるメッセージフロー図の第1のラインで、サイト1はサイト2へTVPチェックを送信する。サイト1は単一のTRPバージョンしか知らないため、ライン1におけるTVPチェックはTRPレコードを含まない。サイト2がTVPチェックを受信すると、それはサイト1がTRP8.3.0.0.0しか使用できないことを知っているため、サイト2はサイト1と通信するためにTRPバージョン8.3.0.0.0を使用する。ライン2におけるTVP OKはTRPバージョンレコードを含まない。
【0060】
シナリオ2および
図4は、複数のTRPバージョンをサポートするサイト2がTVPバージョンチェックを開始する場合の、TRPバージョンについてネゴシエーションするためのTVPの使用を示す:
・シナリオ2:シナリオ2では、サイト1およびサイト2は、シナリオ1と同じAPNソフトウェアバージョンおよびTRPバージョンを有する。しかしながら、シナリオ2では、まず、サイト2がサイト1へTVPチェックメッセージを送信する。サイト2は複数のTRPバージョンをサポートするため、サイト2がまずTVPチェックを送信する場合、サイト2は、そのサポートされる最上位のTRPバージョンレコードである8.4.0.0.0を、TVPチェックメッセージ内に含めるであろう。サイト1がTVPチェックメッセージを受信すると、サイト2は未知のTVPレコードを無視するであろう。したがって、サイト2は、TRPバージョンレコードのないTVP OKメッセージをサイト1へ送信するであろう。TRPバージョンレコードのないTVP OKメッセージを受信すると、サイト2は、それがサイト1と通信するためにTRPバージョン8.3.0.0.0を使用する必要があると判断するであろう。
【0061】
シナリオ3および
図5は、一方のサイトが2つのTRPバージョンをサポートし、他方のサイトが3つのTRPバージョンをサポートする場合の、TRPバージョンについてネゴシエーションするためのTVPの使用を示す:
・シナリオ3:サイト1は、APNソフトウェアバージョン8.4.0.0.0を実行し、TRPバージョン8.3.0.0.0および8.4.0.0.0をサポートする。サイト2は、APNソフトウェアバージョン8.5.0.0.0を実行し、TRPバージョン8.3.0.0.0、8.4.0.0.0、および8.5.0.0.0をサポートする。
図5では、サイト2はサイト1へ第1のTVPチェックメッセージを送信する。TVPチェックメッセージは、TRPバージョンレコード8.5.0.0.0を含む。サイト1はTRPバージョン8.5.0.0.0をサポートしていないため、サイト1は、TRPバージョン8.4.0.0.0(サイト1によってサポートされる、次に上位のTRPバージョン)を用いて、TVP NOKay(ノーケイ)メッセージで返答する。サイト2はTRPバージョン8.4.0.0.0をサポートすることができるため、サイト2は、TRPバージョン8.4.0.0.0を用いて別のTVPチェックメッセージを送信し、サイト1からTVP OKを受信する。
図5におけるメッセージフローの後で、サイト1およびサイト2は、TRPバージョン8.4.0.0.0を使用してトンネル管理メッセージを交換することができる。
【0062】
シナリオ4および
図6は、一方のサイトが2つのTRPバージョンをサポートし、他方のサイトが3つのTRPバージョンをサポートする場合の、TRPバージョンについてネゴシエーションするためのTVPの使用を示す:
・シナリオ4:サイト1は、APNソフトウェアバージョン8.4.0.3.0を実行し、TRPバージョン8.3.0.0.0、8.4.0.0.0、および8.4.0.3.0をサポートする。サイト2は、APNソフトウェア8.5.0.0.0を実行し、TRPバージョン8.3.0.0.0、8.4.0.0.0、および8.5.0.0.0をサポートする。
図6に示す例では、サイト1がまず、サイト2へTVPチェックメッセージを送信する。TVPチェックメッセージは、8.4.0.3.0というTRPバージョンレコードを含む。サイト2はTRPバージョン8.4.3.0をサポートしていないため、サイト2は、TRPバージョン8.4.0.0.0を用いて、TVPノーケイで返答する。TRPバージョン8.4.0.0.0は、サイト1から受信されたTRPバージョンよりも下位である、サイト2がサポートする最上位のTRPバージョンである。サイト1はTRPバージョン8.4.0.0.0をサポートすることができるため、サイト1は、TRPバージョン8.4.0.0.0を用いて別のTVPチェックメッセージを送信し、サイト2からTVP OKを受信する。
図6に示すメッセージフローの後で、サイト1およびサイト2は、サイト1とサイト2との間のトンネルを通して管理し通信するために、TRPバージョン8.4.0.0.0を使用することができる。
【0063】
図3~6では、TVPは、異なるサイトに位置するAPN機器間でトンネリングプロトコルメッセージのバージョンについてネゴシエーションするために使用される。別の例では、TVPは、異なるサイトに位置するAPN機器によって使用されるトンネル暗号化ネゴシエーション方法についてネゴシエーションするために使用されてもよい。そのようなネゴシエーションを行なうためにTVPを使用するために、暗号化ネゴシエーション方法のための新しいTVPレコードがTVPプロトコルに追加される。暗号化ネゴシエーションを行なう前に、異なるサイトに位置するAPN機器は、コントローラから受信された構成ファイルから得られるデフォルト暗号化ネゴシエーション方法を利用してもよい。暗号化ネゴシエーション方法についてのネゴシエーションは、
図3~6におけるTRPバージョンについてのネゴシエーションと同じ態様で行なわれてもよい。すなわち、あるサイトは、送信側サイトによってサポートされる暗号化ネゴシエーション方法の最上位のバージョンを特定する暗号化ネゴシエーションレコードを用いて、TVPチェックメッセージを別のサイトへ送信するであろう。受信側サイトが暗号化ネゴシエーション方法をサポートする場合、受信側サイトは、送信側サイトによってサポートされる暗号化ネゴシエーション方法バージョンへのサポートを示す暗号化ネゴシエーションレコードを含むTVP OKメッセージで応答するであろう。受信側サイトが暗号化ネゴシエーション方法をサポートしていない場合、受信側サイトは、送信側サイトからのTVPチェックメッセージにおいて受信された暗号化ネゴシエーション方法よりも下位である、受信側サイトによってサポートされる最上位の暗号化ネゴシエーション方法バージョンで応答する。2つのサイトが暗号化ネゴシエーション方法についていったん合意すると、暗号化ネゴシエーション方法は、2つのサイト間でトンネル暗号化パラメータについてネゴシエーションするために使用され得る。
【0064】
2つのサイト間でコンジットがいったん構築されると、2つのサイトは、トンネルを通して制御メッセージを交換する。そのような制御メッセージの例は、ハートビートメッセージ、ナグ(nag)メッセージ、SACK/SNAKメッセージ、時間同期メッセージ、ネットワーク再開メッセージ、および共有メモリ管理メッセージを含む。ハートビートメッセージとは、コンジットの状態を維持し判断するためにコンジットを通して送信されるメッセージである。時間同期メッセージは、APN機器のクロックを、コントローラによって維持される中央クロックと同期させるために使用される。SACK(selective acknowledgment message)、すなわち選択的確認応答メッセージは、特定のデータの受信を確認応答するために使用される。SNAK(selective negative acknowledgement message)、すなわち選択的否定確認応答メッセージは、受信されなかったデータを伝えるために使用される。ナグメッセージも、受信されなかったデータを示すために使用され得る。TRPバージョンおよび暗号化ネゴシエーション方法と同様に、これらのタイプの制御メッセージについてのバージョンは、TVPプロトコルが、送信側サイトによってサポートされる制御メッセージタイプおよび制御メッセージバージョンを示すレコードを運ぶことを除き、
図3~6に示すメッセージフローを使用するTVPプロトコルを使用してネゴシエーションされ得る。
【0065】
一例として共有メモリ管理メッセージを使用すると、異なるサイトに位置するAPNは、共有メモリを使用して互いに通信してもよい。共有メモリを使用して通信するために、メッセージは、ここにAPNメモリプロトコルまたはAPN MEMと呼ばれるプロトコルを使用して交換される。APN MEMプロトコルは、機能およびAPN MEMを定義するバージョンを有する。フィールドをAPN MEMメッセージに変更する必要がある場合、新しいAPN MEMタイプを追加することができる。
図3~6に示すTVPネゴシエーション手順は、コンジットの2つの端の間で使用するためのAPN MEMタイプについてネゴシエーションするために使用され得る。APN MEMは、共有メモリ情報とAPN MEMメッセージとの間で変換するために、APNバージョンに特有のパック/アンパック関数を使用するであろう。影響を受けたAPN MEMメッセージは、古いAPN MEMタイプの登録を解除し、新しいAPN MEMタイプを登録するために、コールバック関数を提供するであろう。TVPが新しいAPN MEMメッセージタイプについてネゴシエーションする場合、この関数が呼び出されるであろう。
【0066】
上述の制御プロトコルバージョンおよびメッセージタイプに加えて、以下のメッセージタイプおよび対応するプロトコル機能が、ネゴシエーション中のプロトコルのタイプとコンジットの各端のAPNAによってサポートされるプロトコルの現行バージョンとを識別するために適切なレコードがTVPプロトコルに追加された状態で、
図3~6に示すメッセージフローを使用してネゴシエーションされ得る:
・RACP(redundant appliance configuration protocol:冗長機器構成プロトコルの略)とは、2つの機器が冗長構成でサイトにサービスを提供する場合に使用される高可用性(high availability:HA)プロトコルである。2つの機器は、ステータスを通信し、どちらの機器がアクティブとなってサイトを表わすべきかについてネゴシエーションする;
・TAP(Talari Application Protocol:タラリ・アプリケーション・プロトコルの略):TAPプロトコルは、コンジットを通してサイト間でユーザデータを運ぶために使用される;
・動的コンジット/クラウドコネクト:これらのメッセージは、トラフィックフローに基づいて動的にコンジットの作成をトリガするために使用される;
・帯域幅テスティング:コンジット帯域幅をテストするために使用されるメッセージ;
・経路MTU:経路MTUとは、経路上でサポートされる最大メッセージ転送ユニットサイズである;
・トレースルート:トレースルートとは、トラフィックソースと宛先との間のホップを発見するために使用される経路発見プロトコルである;
・ヘッダ圧縮:コンジットメッセージにおいて使用されるヘッダ圧縮方法を定義する;
・動的ルート共有:動的ルート共有メッセージは、APNAが、たとえばオープン・ショーテスト・パス・ファースト(open shortest path first:OSPF)または境界ゲートウェイプロトコル(border gateway protocol:BGP)を介して、ネットワークから動的に学習されるルーティング情報を交換することを可能にする。
【0067】
図7は、SD-WANにおいて複数のソフトウェアバージョンを管理するための例示的なプロセスを示すフローチャートである。
図7を参照して、ステップ700で、プロセスは、SD-WANのための全体構成を定義し、個々のSD-WAN機器のための構成レジストリを、全体構成のそれらのそれぞれの部分を実現するように作成するコントローラを提供するステップを含む。たとえば、コントローラ130は、ネットワークにおけるAPNAによって実行されているソフトウェアバージョンが与えられた有効APN構成オプションをユーザに提示してもよい。コントローラ130は、ユーザによって選択された構成から、各APNAのための構成レジストリを、中間構成言語フォーマットで生成してもよい。
【0068】
ステップ702で、プロセスは、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンを実行する第1のSD-WAN機器のための第1の構成レジストリを生成するステップをさらに含む。上述のように、一例では、中間構成言語はXMLであり、構成要素には属性名が割り当てられ、属性名には対応する値が与えられる。中間構成言語構成レジストリを生成するコンパイラが、各機器の低レベルの詳細に特有のフォーマットでレジストリを生成することを要求されないように、属性名はソフトウェアリリース間で共通である。コンパイラには、ネットワークにおけるすべてのAPN機器によってサポートされる最上位のバージョンである中間構成言語レジストリバージョンが入力として提供され、コンパイラは、構成されているSD-WAN機器の各々について、そのバージョンで中間構成言語レジストリを生成する。なお、異なる機器に提供された構成は、たとえば、各機器の異なるネットワーク接続に起因して異なるであろう。しかしながら、各機器は、それがコントローラから受信する中間構成言語レジストリを読取ることができるであろう。
【0069】
ステップ704で、プロセスはさらに、コントローラで、および中間構成言語レジストリフォーマットで、SD-WANソフトウェアの第1のバージョンとは異なるSD-WANソフトウェアの第2のバージョンを実行する第2のSD-WAN機器のための第2の構成レジストリを生成するステップを含む。第1および第2のSD-WAN機器は異なるソフトウェアバージョンを実行するにもかかわらず、それらは各々、それら双方が理解する中間構成言語の最上位のバージョンで構成レジストリを受信するであろう。そのようなシステムは、APNソフトウェアのより上位のバージョンが中間構成言語のより下位のバージョンを読取ることができると仮定しており、それは、中間構成言語が、ソフトウェアリリース間で変わるID番号ではなく、構成オブジェクトについての名前を使用するという事実によって容易にされる。
【0070】
ステップ706で、プロセスはさらに、第1の構成レジストリを第1のSD-WAN機器へ送信し、第2の構成レジストリを第2のSD-WAN機器へ送信するステップを含む。たとえば、コントローラ130は、構成されているSD-WAN機器へ構成レジストリを送信してもよい。
【0071】
ステップ708で、プロセスはさらに、第1のSD-WAN機器で第1の構成レジストリを受信し、第1のSD-WAN機器を構成するために第1の構成レジストリを使用するステップを含む。ステップ710で、プロセスはさらに、第2のSD-WAN機器で第2の構成レジストリを受信し、第2のSD-WAN機器を構成するために第2の構成レジストリを使用するステップを含む。第1および第2のSD-WAN機器を構成するために構成レジストリを使用するステップは、SD-WANサービスを提供するために第1および第2のSD-WAN機器によって使用される構成要素に対応する第1および第2の構成レジストリにおけるXML属性の名前を識別するステップと、XML属性の値を読取るステップと、構成データベース211におけるレコードに値を格納するステップとを含んでいてもよい。第1および第2のSD-WAN機器上で実行されているSD-WANソフトウェアは、それらのそれぞれの構成データベース211に格納された構成を使用して、システム構成をメモリ208に書込む。SD-WANソフトウェアは、システム構成を使用して、コンジットを構築して維持すること、当該コンジットを通してトラフィックを送信すること、タイミング同期を行なうこと、および、他のSD-WAN機器とSD-WAN機能についてネゴシエーションすることといったSD-WAN機能を実現する。
【0072】
ステップ712で、プロセスはさらに、第1のSD-WAN機器と第2のSD-WAN機器との間で、第1および第2の構成レジストリにおいて特定された構成を実現するために使用可能である共通の機能についてネゴシエーションするステップを含む。たとえば、SD-WAN機器は、コンジットメッセージフォーマット、暗号化ネゴシエーション方法、制御メッセージプロトコルバージョンなどといったSD-WAN機能についてネゴシエーションしてもよい。ネゴシエーションは、
図3~6に示す例示的なメッセージングおよびバージョニングプロトコルを使用して行なわれてもよい。
【0073】
ここに開示される主題のさまざまな詳細は、ここに開示される主題の範囲から逸脱することなく変更され得るということが理解されるであろう。また、前述の説明は、限定のためではなく、単なる例示のためのものである。