本願の目的、技術的解決手段および利点をより明確にするために、以下では、添付図面を参照して、本願の実装を更に詳細に説明する。
本願における「少なくとも1つ」という用語は、1または複数を意味し、本願における「複数」という用語は、2以上を意味する。例えば、「複数の第2パケット」は2以上の第2パケットを意味する。「システム」および「ネットワーク」という用語は、本明細書において交換可能に使用され得る。
本願において、「第1」および「第2」などの用語は、基本的に同一の機能を有する同一の項目または同様の項目を区別するために使用される。「第1」、「第2」および「第n」の間には論理的または時系列的依存性が無く、数および実行順序は限定されないことが理解されるべきである。
上記のプロセスのシーケンス番号は、本願の実施形態における実行順序を意味していないことを理解されたい。プロセスの実行順序は、プロセスの機能および内部ロジックに基づいて決定されるべきであり、本願の実施形態の実装プロセスに対するなんらかの限定として解釈されるべきではない。
Aに基づいてBを判定することは、Aのみに基づいてBが判定されることを意味するものではなく、代替的に、BはAおよび/または他の情報に基づいて判定され得ることが理解されるべきである。
本明細書全体において言及される「一実施形態」または「実施形態」は、実施形態に関連するその特定の特徴、構造、または特性が、本願の少なくとも1つの実施形態に含まれることを意味するものと理解されるべきである。このようにして、明細書全体において現れる「一実施形態において」または「実施形態において」は、同一の実施形態を参照するものではない。加えて、これらの特定の機能、構造、または特徴は、任意の適切な方式で1または複数の実施形態で組み合わされ得る。
以下では、サービス機能チェーンのシステムアーキテクチャの例を説明する。
従来のテレコミュニケーションネットワークのサービス機能(ファイアウォールおよび負荷分散など)は通常、ハードウェアリソースと緊密に結合される。各サービスノードは専用デバイスの製品形態である。その結果、展開が複雑になり、容量の拡張、移行、およびアップグレードが難しくなる。SFCにおいて、各サービス機能は1つのSFノードとして仮想化され、複数のSFノードは組み合わされて、順序付けされたサービス機能セット、すなわちサービス機能チェーンが取得される。SFCにおいて、トラフィックは、指定された順序で、サービスチェーン上のSFノードを通過し、SFノードは、パケットを順番に処理し、サービス処理手順を完了する。SFC技術に基づくと、サービス機能は、ハードウェアリソースから切り離され得、柔軟なサービスプロビジョニングおよび迅速なサービス展開が容易になる。例えば、新しいサービスがプロビジョニングされた場合、従来のテレコミュニケーションネットワークにおけるハードウェアデバイスの再構築およびアップグレードの複雑な動作を回避でき、新しいSFノードが、SFCによって提供されるサービスチェーンに追加され得、その結果、新しいサービスの実行が、新たに追加されたSFノードに基づいてサポートされ得る。加えて、SFCは、他の仮想化技術と柔軟に組み合わされ得る。例えば、SFCは、ネットワーク機能仮想化(Network Function Virtualization, NFV)と組み合わされ得る。この場合、NFV管理ノード、例えばNFVにおける仮想化ネットワーク機能マネージャ(Virtualized Network Function Manager, VNFM)は、SFCの制御プレーンとして機能し、SFC上の各ノードを制御し得る。別の例として、SFCは、ソフトウェア定義型ネットワーキング(Software-Defined Networking, SDN)と組み合わされ得る。この場合、SDNにおけるSDNコントローラ(SDN controller)は、SFCの制御プレーンとして機能し、SFC上の各ノードを制御し得る。
SFCのシステムアーキテクチャは、複数のノードを含み得、各ノードは、対応する機能を有し、異なるノードが互いに連携して、サービスチェーンの機能全体を実装する。通常、SFCのシステムアーキテクチャは、トラフィック分類器(classifier, CF)、SFノード、プロキシ(proxy)ノード、サービス機能転送器(Service Function Forwarder, SFF)ノード、およびルーティング(routing)ノードを含み得る。
例えば、図1は、本願の実施形態によるSFCのシステムアーキテクチャの図である。図1において、SFノードは、SFノード1、SFノード2、SFノード3、またはSFノード4であり、SFFノードは、SFFノード1またはSFFノード2であり、プロキシノードは、プロキシノード1またはプロキシノード2であり、ルーティングノードは、ルーティングノード1またはルーティングノード2である。図1におけるサービス機能チェーンドメイン(SFCドメイン)は、SFC対応ノードのセットである。
SFFノードおよびプロキシノードは同一のデバイスに統合され得る、すなわち、SFFノードが位置するハードウェアデバイスが、プロキシノードの機能も実装することに留意されたい。例えば図1を参照されたい。SFFノード1およびプロキシノード1は同一のハードウェアデバイスに位置し、SFFノード2およびプロキシノード2は同一のハードウェアデバイスに位置する。
トラフィック分類器は、SFC上の入口ルータであり得る。トラフィック分類器は、分類規則に従って、受信されたトラフィックを分類するよう構成される。トラフィックが分類基準を満たす場合、トラフィック分類器はトラフィックを転送し、その結果、トラフィックは、SFCによって提供されたサービスチェーンに入る。通常、トラフィックが分類基準を満たすと判定した後に、トラフィック分類器は、トラフィックに対応するパケットの各々にSFC情報を追加し、その結果、パケットは、サービス機能チェーンに対応する順序で、SFC情報に基づいてネットワーク上のSFノードに順番に到着する。このようにして、SFノードは、サービス処理を順番に実行する。トラフィック分類器は、ルータ、スイッチ、または別のネットワークデバイスであり得る。
SFノードは、パケットに対してサービス処理を実行するよう構成される。通常、SFノードは、1または複数のSFFノードに接続され得、SFノードは、1または複数の処理予定のパケットを1または複数のSFFノードから受信し得る。SFノードに対応するサービス機能は、サービスシナリオに基づいて設定され得る。例えば、SFノードに対応するサービス機能は、ユーザ認証、ファイアウォール、ネットワークアドレス変換(Network Address Translation, NAT)、帯域幅制御、ウイルス検出、クラウドストレージ、ディープパケットインスペクション(Deep Packet Inspection, DPI)、侵入検出、または侵入防止であり得る。SFノードは、サーバ、ホスト、パーソナルコンピュータ、ネットワークデバイス、または端末デバイスであり得る。
SFFノードは、SFC情報に基づいて、受信されたパケットをSFノードへ転送するよう構成される。通常、パケットを処理した後に、SFノードは、パケットを同一のSFFノード、すなわち、処理の前に存在したパケットをSFノードへ以前に送信したSFFノードに返し、SFFノードは、処理されたパケットをネットワークに返す。SFFノードは、ルータ、スイッチ、または別のネットワークデバイスであり得る。
SFFノードおよびSFノードは各々、SFC上のデータプレーンとして使用され得る。実施形態において、SFFノードおよびSFノードは、トンネルを確立し得、SFFノードおよびSFノードはトンネルを通じてパケットを伝送し得る。トンネルは仮想拡張可能ローカルエリアネットワーク(Virtual Extensible Local Area Network, VXLAN)、汎用ルーティングカプセル化(generic routing encapsulation, GRE)トンネル(tunnel)、モバイルIP-in-IP(IP-in-IP)カプセル化トンネル、または同様のものであり得る。別の実施形態において、SFFノードおよびSFノードは、トンネルを通じてパケットを伝送しないことがあり得るが、IPパケットまたはイーサネット(登録商標)(Ethernet(登録商標))パケットを直接的に伝送し得る。
SFC上のデータプレーンは、SFC上の制御プレーンによって制御され得る。SFC上の制御プレーンは1または複数のSFCコントローラを含み得る。例えば、図1を参照されたい。SFCコントローラは、SDNコントローラ、NFV管理ノード1、またはNFV管理ノード1であり得る。実施形態において、パケット伝送の前に、SFC上のクライアントは、サービス機能チェーンの属性、構成、およびポリシーなどの情報をSFCコントローラへ送信し得、SFCコントローラは、クライアントによって送信された情報およびSFCのトポロジーに基づいてサービス機能チェーンについての情報、例えば、SFCに入るパケットの分類規則、および、サービス機能チェーンに対応する各SFノードの識別子を生成し、サービス機能チェーンについての情報をトラフィック分類器およびSFC上の別のノードへ送信し得、その結果、トラフィック分類器は、受信されたパケットを分類し、SFCコントローラによって送信された情報に基づいてSFC情報を追加する。
図1に示されるSFCのシステムアーキテクチャにおける各ノードの種類は任意であることが理解されるべきである。本願の本実施形態において、図1に示されるものより多くの種類のノードがSFCのシステムアーキテクチャにあり得る。この場合、SFCのシステムアーキテクチャは更に別の種類のノードを含み得る。代替的に、図1に示されるものより少ない種類のノードがSFCのシステムアーキテクチャにあり得る。SFCのシステムアーキテクチャにおけるノードの種類は、本願の本実施形態において限定されない。
図1に示されるSFCのシステムアーキテクチャにおけるノードの数は任意であることが理解されるべきである。本願の本実施形態において、図1に示されるものより多い、または、少ないノードがSFCのシステムアーキテクチャにあり得る。例えば、1つのルーティングノードのみがあり得るか、または、数十、数百、またはより多くのルーティングノードがある。別の例では、数十、数百、または、より多くのSFノードがある。SFCのシステムアーキテクチャにおけるノードの数は、本願の本実施形態において限定されない。
上記では、SFCのシステムアーキテクチャを説明した。SFCは、SRv6技術と組み合わされ得る。2つの技術の組み合わせは通常、SRv6 SFCと称される。以下では、SRv6 SFCのシステムアーキテクチャの例を説明する。
セグメントルーティング(Segment Routing, SR)は、ネットワーク上でデータパケットを転送するためにソースルーティングに基づいて設計されるプロトコルである。SRは、転送経路をセグメントに分割し、セグメント識別子(Segment ID, SID)をネットワークにおけるセグメントおよびノードに割り当て、SIDを順序付け方式で配置して、SIDを含むリストを取得するために使用される。このリストは通常、インターネットプロトコルバージョン6上のセグメントルーティング(Segment Routing over Internet Protocol Version 6, SRv6)において、セグメントリスト(SIDリスト、セグメント識別子リストとも称される)と称され、通常、セグメントルーティングマルチプロトコルラベルスイッチング(Segment Routing-MultiProtocol Label Switching, SR-MPLS)においてラベルスタックと称される。セグメントリストは転送経路を指示し得る。SR技術に基づくと、SIDリストを保持するパケットが通過するノードおよび経路は、トラフィック最適化要件を満たすように指定され得る。例えば、パケットは荷物と比較され得、SRは荷物上のラベルと比較され得る。荷物が領域Bおよび領域Cを通じて領域Aから領域Dへ送信される必要がある場合、「最初に領域B、次に領域C、最終的に領域D」というラベルが起点領域、すなわち領域Aにおいて荷物に貼られ得る。このようにして、各領域において、荷物上のラベルを識別するだけでよく、荷物は、荷物上のラベルに基づいて、1つの領域から別の領域へ転送される。SR技術に基づくと、送信元ノードは、ラベルをパケットに追加し、中間ノードは、パケットが宛先ノードに到着するまで、ラベルに基づいてパケットを次のノードに転送し得る。例えば、<SID1,SID2,SID3>がパケットのパケットヘッダに挿入される。この場合、パケットは最初に、SID1に対応するノードへ転送され、SID2に対応するノードへ転送され、次に、SID3に対応するノードへ転送される。
SRv6は、SR技術がIPv6ネットワークに適用され、128ビットIPv6アドレスがSIDとして使用されることを意味する。パケットを転送するとき、SRv6をサポートするノードは、パケットの宛先アドレス(Destination Address, DA))に基づいて、ローカルSIDテーブル(local SID table、ローカルセグメント識別子テーブルまたはマイSIDテーブルとも称される)をクエリする。パケットの宛先アドレスがローカルSIDテーブルにおける任意のSIDにマッチするとき、ノードは、宛先アドレスがローカルSIDテーブルにヒットすると判定し、SIDに対応するトポロジー、命令、またはサービスに基づいて対応する動作を実行し、例えば、SIDに対応するアウトバウンドインタフェースを通じてパケットを転送し得る。パケットの宛先アドレスがローカルSIDテーブルにおけるいずれのSIDともマッチしない場合、ノードは、宛先アドレスに基づいてIPv6ルーティングFIBをクエリし、ルーティングFIBにおける宛先アドレスにヒットしたエントリに基づいてパケットを転送する。ローカルSIDテーブルは、SIDを含み、かつ、ノードにローカルに記憶されたリストである。ローカルSIDテーブルの名称は通常、ローカルSIDテーブルと、パケットに保持されるセグメントリストとを区別するために、「ローカル」(local)というプレフィックスを含む。
SRv6 SFCのシステムアーキテクチャにおいて、SRv6におけるヘッドノードは、SFC上のトラフィック分類器であり得、SRv6におけるSRv6ノードは、SFCにおけるルーティングノード、SFFノード、プロキシノード、またはSFノードであり得る。具体的には、SFC情報は、SRv6カプセル化フォーマットであり得、SFC情報はセグメントリストであり得る。パケットにおけるセグメントリストにおけるSIDは、オーケストレートされ、その結果、SFCにおけるパケットの転送経路、または、パケットに対して実行される様々なサービス処理動作が指示され得る。具体的には、セグメントリストは、順序付けて配置された1または複数のSIDを含む。各SIDは、128ビットIPv6アドレスの形態であり、各SIDは基本的に、トポロジー、命令、またはサービスを表し得る。パケットの宛先アドレスは、SLが現在指しているセグメントリストにおけるSIDである。パケットを受信した後に、SFCにおけるノードは、パケットの宛先アドレスを読み出し、宛先アドレスに基づいて転送動作を実行する。パケットを受信するノードがSRv6をサポートする場合、ノードは、宛先アドレスに基づいてローカルSIDテーブルをクエリする。宛先アドレスがローカルSIDテーブルにおけるSIDにヒットするとき、ノードは、SIDに対応するトポロジー、命令、またはサービスに基づいて対応する動作を実行する。宛先アドレスがローカルSIDテーブルにおけるSIDにヒットしないとき、ノードは、宛先アドレスに基づいて、IPv6ルーティングFIBをクエリし、ルーティングFIBにおける宛先アドレスにヒットしたエントリに基づいてパケットを転送する。パケットを受信したノードがSRv6をサポートしない場合、ノードは、宛先アドレスに基づいて、IPv6ルーティングFIBを直接的にクエリし、パケットを転送する。
いくつかのシナリオにおいて、SFノードは、SRv6をサポートしないノード、すなわち、SRv6非対応(SRv6-unaware)ノードであり得る。SFノードはSRHを識別しないことがあり得る。この場合、プロキシノードは、SRHを識別しないSFノードがパケットを正常に処理できることを確実にするために使用され得る。
プロキシノードは、SFノードの代理でSRHを識別し、パケットのSRHを除去し、SRHを含まないパケットをSFノードへ転送するよう構成される。この場合、SFノードによって受信されたパケットはSRHを含まないので、SRv6をサポートしないSFノードはパケットを処理し得る。
図2は、本願の実施形態によるSRv6 SFCにおけるプロキシ動作の実行の概略図である。プロキシノードは、SFFノードおよびSFノードと通信し得、プロキシノードは、SFノードの代理で、SRHを含むパケットをSFFノードから受信する。プロキシノードは、SRHをパケットから除去して、SRHを含まないパケットを取得し、アウトバウンドインタフェースを通じて、SRHを含まないパケット送信する。SFノードは、インバウンドインタフェースを通じて、SRHを含まないパケットを受信し、パケットを処理し、次に、アウトバウンドインタフェースを通じて、SRHを含まないパケットを送信する。プロキシノードは、SRHを含まないパケットを受信し、SRHをパケットにカプセル化して、SRHを含むパケットを取得し、アウトバウンドインタフェースを通じて、SRHを含むパケットを送信し、その結果、パケットはSFFノードに返される。プロキシノードは、ネットワークデバイス、例えば、ルータもしくはスイッチであり得るか、または、プロキシノードは、サーバ、ホスト、パーソナルコンピュータ、もしくは端末デバイスであり得る。プロキシノードは、動的プロキシ、静的プロキシ、共有メモリプロキシ、疑似プロキシなどを含み得る。動的プロキシと静的プロキシとの間の相違点として、除去されたSRHは、動的プロキシ動作においてキャッシュされ、除去されたSRHは、静的プロキシ動作において破棄される。
SFFノードおよびプロキシノードを統合方式で配置することは、単に任意の方式であることが理解されるべきである。別の実施形態において、SFFノードおよびプロキシノードは代替的に、異なるハードウェアデバイスに配置され得る。SFFノードが位置するハードウェアデバイスは、ネットワークを通じて、プロキシノードが位置するハードウェアデバイスと通信し得る。
上記では、SRv6 SFCのアーキテクチャ全体を説明した。以下では、SRv6 SFCに基づいて、デュアルホーミングアクセスシステムのアーキテクチャの例を説明する。デュアルホーミングアクセスは、SFノードがプロキシノードにデュアルホーミングされること、すなわち、同一のSFノードが2つのプロキシノードに接続されることを意味し得る。SRv6 SFCに基づくデュアルホーミングアクセスに基づくと、処理のためにSFノードへ送信される必要があるパケットは、1つのプロキシノードを通じて、または、他のプロキシノードを通じて、ルーティングノードからSFノードへ送信され得る。このようにして、ネットワーク信頼性は、冗長経路を通じて大幅に改善され得る。
図3は、本願の実施形態によるデュアルホーミングアクセスシステムのアーキテクチャ図である。システムは、第1プロキシノード101、第2プロキシノード102、SFノード103およびルーティングノード104を含む。第1プロキシノード101および第2プロキシノード102は同一のSFノード103に接続される。システムにおける各ノードはSFC上のノードであり得る。例えば、第1プロキシノード101は、図1におけるプロキシノード1であり得、第2プロキシノード102は、図1におけるプロキシノード2であり得、SFノード103は、図1におけるSFノード1またはSFノード2であり得、ルーティングノード104は、図1におけるルーティングノード2であり得る。
図3に示されるシステムにおいて、異なるノードがリンクを確立し得、リンクを通じて接続される。例えば、図3において、第1プロキシノード101は、第1リンクを通じて第2プロキシノード102に接続され得、第1プロキシノード101は、第2リンクを通じてルーティングノード104に接続され得、ルーティングノード104は、第3リンクを通じて第2プロキシノード102に接続され得、第1プロキシノード101は、第4リンクを通じてSFノード103に接続され得、第2プロキシノード102は、第5リンクを通じてSFノード103に接続され得る。
第1プロキシノード101および第2プロキシノード102は、等価関係を有するノードであり得る。すなわち、第1プロキシノード101および第2プロキシノード102はパケット伝送プロセスにおいて同一機能を有するか、または、同一の役割を果たす。第1プロキシノード101は、ローカルプロキシ(local proxy)として示され得、第2プロキシノード102は、ピアプロキシ(peer proxy)として示され得る。同様に、第2プロキシノード102は、ローカルプロキシとして示され得、第1プロキシノード101は、ピアプロキシとして示され得る。第1プロキシノード101と第2プロキシノード102との間のリンクはピアリンク(peer link)として示され得る。
第1プロキシノード101および第2プロキシノード102は等価関係を有するので、ルーティングノード104は通常、受信されたパケットを第1プロキシノード101へ送信することを選択し得るか、または、受信されたパケットを第2プロキシノード102へ送信することを選択し得る。このようにして、パケットは、第1プロキシノード101からSFノード103へ転送され得るか、または、第2プロキシノード102からSFノード103へ転送され得る。同様に、パケットの処理後、SFノード103は、処理されたパケットを第1プロキシノード101へ送信することを選択し得るか、または、処理されたパケットを第2プロキシノード102へ送信することを選択し得る。このようにして、処理されたパケットは、第1プロキシノード101からルーティングノード104へ返され得るか、または、第2プロキシノード102からルーティングノード104へ返され得る。SFノード103は第1プロキシノード101および第2プロキシノード102の両方に接続され、デュアルホーミングアクセス機能が実装されることが分かる。
デュアルホーミングアクセスが実行される。このようにして、負荷共有機能が実装され得る。第1プロキシノード101は、SFノード103へ伝送されるパケットに対して動的プロキシ動作を実行し得るか、または、第2プロキシノード102は、SFノード103へ伝送されるパケットに対して動的プロキシ動作を実行し得、その結果、2つのプロキシノードは、動的プロキシ動作を共同で実行するために使用され、単一のプロキシノードによってパケットを処理する負担が低減される。加えて、SFノード103によって処理されるパケットは、第1プロキシノード101を通じてルーティングノード104に返され得るか、または、第2プロキシノード102を通じてルーティングノード104に返され得、その結果、SFノード103によって処理されたトラフィックがオフロードされ、単一のプロキシノードによってパケットを転送する負担が低減される。加えて、パケットは2つのリンク上で伝送され、伝送帯域幅が増加し、伝送速度が改善される。加えて、伝送信頼性が改善され得る。第1プロキシノード101または第4リンクに障害がある場合、パケットはなお、第2プロキシノード102を通じてルーティングノード104に返され得るか、または、第2プロキシノード102もしくは第5リンクに障害がある場合、パケットはなお、第1プロキシノード101を通じてルーティングノード104に返され得る。これにより、単一のプロキシノードに障害があるときにパケット伝送が中断されるという問題が回避される。
図3に示されるネットワーキングモードは単に任意であることが理解されるべきである。図3において、第1プロキシノード101と第2プロキシノード102との間にピアリンクが展開され、その結果、ネットワーク信頼性が改善され得る。障害シナリオにおいて、第1プロキシノード101に到着するトラフィックは、ピアリンクを通じてバイパス方式で第2プロキシノード102へ伝送され得る。これにより、ルーティングノードとプロキシノードとの間の帯域幅を占有することを回避する。
別の実施形態において、デュアルホーミングアクセスシステムは代替的に、別のネットワーキングモードを使用し得る。例えば図4を参照されたい。第1プロキシノード101と第2プロキシノード102との間にピアリンクは展開されないことがあり得る。このネットワーキング展開は単純であり、ピアリンクによって占有されるアウトバウンドインタフェースが回避される。このようにして、第1プロキシノード101のインタフェースリソースおよび第2プロキシノード102のインタフェースリソースが節約される。
図3または図4に示される各リンクは、1つのホップについてのIPリンクであり得るか、または、複数のホップについてのIPリンクの組み合わせであり得ることが理解されるべきである。2つのノードが複数のホップについてのIPリンクを通じて接続される場合、2つのノード間の転送経路は、1または複数の中間ノードを含み得、中間ノードは、2つのノード間でパケットを転送し得る。各リンクに含まれるIPリンクのホップの数は、本実施形態において限定されない。
2つのノードが1つのホップについてのIPリンクに位置する場合、2つのノードがオンリンクであるとみなされ得る。IPルーティングの観点からは、2つのノードは1つのホップを通じて到達可能である。例えば、IPv4パケットが2つのノード間で転送される場合、1つのノードがIPv4パケットを送信するとき、IPv4パケットにおける生存時間(Time To Live, TTL)値が1減少され、他のノードに到達され得る。別の例では、IPv6パケットが2つのノード間で転送される場合、1つのノードがIPv6パケットを送信するとき、IPv6パケットにおけるホップリミット(hop limit)が1減少され、他のノードに到達され得る。
2つのノードが1つのホップについてのIPリンクに位置する場合、2つのノードは物理的に直接接続されている必要があることを意味するものではないことに留意されたい。2つのノードが1つのホップについてのIPリンクに位置する場合、2つのノードは物理的に直接接続されるか、または、当然ながら2つのノードは物理的に直接接続されない。例えば、2つのノードが1または複数のレイヤ2スイッチを使用して接続されるときも、2つのノードは1つのホップについてのIPリンクに位置するとみなされ得る。
加えて、2つのノードが複数のホップについてのIPリンクに位置する場合、2つのノードはオフリンクであるとみなされ得る。IPルーティングの観点から、2つのノードは複数のホップを通じて到達可能である。
図3または図4に説明されたデュアルホーミングアクセスシステムは、単に任意であり、SFC上で等価関係を有する2つのプロキシノードも、単に任意であることが理解されるべきである。別の実施形態においてSFCは、等価関係を有する2つより多くのプロキシノードを有し得る。任意のプロキシノードは、1または複数のピアプロキシを有し得、任意のプロキシノードは、1または複数のピアリンクにアクセスし得る。プロキシノードは各ピアリンクを通じて、対応するピアプロキシに接続され得る。
上記では、SRv6 SFCに基づいてデュアルホーミングアクセスシステムのアーキテクチャを説明した。以下では、上記のシステムのアーキテクチャに基づくパケット伝送方法の手順の例を説明する。
図5Aおよび図5Bは、本願の実施形態によるパケット伝送方法のフローチャートである。図5Aおよび図5Bに示されるように、方法のインタラクション主体は、第1プロキシノード、第2プロキシノード、SFノードおよびルーティングノードを含む。本明細書における「ノード」という用語はデバイスであり得る。例えば、ルーティングノードは、ネットワークデバイス、例えばルータまたはスイッチであり得る。例えば、ルーティングノードは、図3または図4におけるルーティングノード104であり得る。第1プロキシノードは、ネットワークデバイス、例えば、ルータ、スイッチ、またはファイアウォールであり得る。例えば、第1プロキシノードは、図3または図4における第1プロキシノード101であり得る。第1プロキシノードは代替的に、コンピューティングデバイスであり得、例えば、ホスト、サーバ、パーソナルコンピュータ、または別のデバイスであり得る。第2プロキシノードは、ネットワークデバイス、例えば、ルータ、スイッチ、またはファイアウォールであり得る。例えば、第2プロキシノードは、図3または図4における第2プロキシノード102であり得る。第2プロキシノードは代替的に、コンピューティングデバイスであり得、例えば、ホスト、サーバ、パーソナルコンピュータ、または別のデバイスであり得る。SFノードはコンピューティングデバイスであり得、例えば、ホスト、サーバ、パーソナルコンピュータ、または別のデバイスであり得る。例えば、SFノードは、図3または図4におけるSFノード103であり得る。方法は以下の段階を含み得る。
段階501:ルーティングノードは第1パケットを第1プロキシノードへ送信する。
第1パケットは、ペイロードがSFノードによって処理されるパケットである。図6は、本願の実施形態による第1パケットの概略図である。第1パケットはSRv6パケットであり得る。第1パケットは、IPv6ヘッダ、SRH、およびペイロードを含み得る。IPv6ヘッダは、送信元アドレスおよび宛先アドレスを含み得、SRHは、セグメントリスト、SL、および1または複数のTLVを含み得、セグメントリストは1または複数のSIDを含み得る。第1パケットのペイロードは、IPv4パケット、IPv6パケット、またはイーサネット(Ethernet)フレームであり得る。第1パケットの宛先アドレスは、セグメントリストにおけるアクティブSID(active SID)を保持するために使用され得る。アクティブSIDはまた、アクティブセグメント(Active segmen)と称され、パケットを受信したSRノードによって処理される必要があるSIDである。SR MPLSにおいて、アクティブSIDは、ラベルスタックの最も外側のラベルである。IPv6において、アクティブSIDはパケットの宛先アドレスである。例えば、セグメントリストが5個のSID、すなわち、SID0、SID1、SID2、SID3、およびSID4を含み、かつ、SLの値が2である場合、セグメントリストにおいて実行されない2つのSIDはSID0およびSID1であり、セグメントリストにおいて現在実行されているSIDはSID2であり、セグメントリストにおける2つの実行されたSIDはSID3およびSID4であると指示する。本実施形態において、第1パケットの宛先アドレスは、エンドポイント動的プロキシSID(End.AD SID、ADは動的プロキシを表す)であり得る。すなわち、第1パケットのアクティブSIDはEnd.AD SIDであり得る。
第1パケットのIPv6ヘッダにおける送信元アドレスは、SRHをカプセル化するデバイスを識別するために使用され得る。例えば、送信元アドレスは、トラフィック分類器のアドレスであり得るか、または、送信元アドレスは、ヘッドノードのアドレスであり得る。任意選択的に、第1パケットのIPv6ヘッダは、送信元アドレスを保持しないことがあり得る。
図6は単に、第1パケットの例であることが理解されるべきである。本願の本実施形態において、第1パケットにおけるフィールドの数は、図6に示されるものより大きい、または少ないことがあり得、第1パケットにおけるフィールドの種類は、図6に示されるものより多い、または少ないことがあり得る。加えて、図6に示される第1パケットにおける各フィールドの場所および長さは、実際の要件に基づいて適応的に変更され得る。パケットにおける各フィールドの場所およびパケットにおける各フィールドの長さは、本実施形態において限定されない。
End.AD SIDは、動的プロキシ動作を実行するように第1プロキシノードまたは第2プロキシノードに指示するために使用される。動的プロキシ動作はまた、End.AD動作と称され、動的プロキシ動作は具体的には、パケットのSRHの除去、パケットのSRHのキャッシュ、および、SRHが除去されたパケットの送信などの動作を含み得る。End.AD SIDは、第1プロキシノードまたは第2プロキシノードで事前構成され得、End.AD SIDは、第1プロキシノードまたは第2プロキシノードのローカルSIDテーブルにおいて予め記憶され得る。End.AD SIDは、第1プロキシノードまたは第2プロキシノードによってネットワークに公開され得る。トラフィック分類器は、公開されたEnd.AD SIDを受信し、End.AD SIDをパケットに追加し得、その結果、End.AD SIDを保持するパケットが第1プロキシノードまたは第2プロキシノードへ転送された後に、第1プロキシノードまたは第2プロキシノードは、パケットに対して動的プロキシ動作を実行するようにトリガされる。
ルーティングノードによって第1パケットを送信する方式は、フローベース(flow-based)方式またはパケットベース(packet-based)方式であり得る。第1パケットを送信する方式は、本実施形態に限定されない。
段階502:第1プロキシノードは、第1パケットをルーティングノードから受信し、第1プロキシノードは、第1パケットのSRHを第1キャッシュエントリに記憶する。
第1パケットに対して第1プロキシノードによって実行される動作については、実施形態において、第1プロキシノードは、第1パケットの宛先アドレスを読み出し得、第1プロキシノードは、第1パケットの宛先アドレスに基づいてローカルSIDテーブルをクエリし、宛先アドレスがローカルSIDテーブルにおけるSIDにマッチするかどうかを判定し得る。宛先アドレスがローカルSIDテーブルにおけるEnd.AD SIDにマッチする、すなわち、宛先アドレスがローカルSIDテーブルにおけるEnd.AD SIDにヒットするとき、第1プロキシノードは、第1パケットがSRv6パケットであると判定し、End.AD SIDに対応する動的プロキシ動作を実行し得る。
第1キャッシュエントリは、第1パケットのSRHを記憶するために第1プロキシノードによって使用されるキャッシュエントリである。第1プロキシノードはインタフェースボードを含み得、インタフェースボードは転送エントリメモリを含み得、第1キャッシュエントリは転送エントリメモリに記憶され得る。実施形態において、第1プロキシノードは、第1パケットのSRHがキャッシュに既に記憶されているかどうかを検出し得る。第1パケットのSRHがキャッシュに記憶されていない場合、第1プロキシノードは、キャッシュエントリを第1パケットのSRHに割り当て第1キャッシュエントリを取得し、第1パケットのSRHを第1キャッシュエントリに記憶する。加えて、第1プロキシノードが、第1パケットのSRHがキャッシュに記憶されていると検出した場合、第1プロキシノードは、第1パケットのSRHを記憶する段階をスキップし得る。
第1パケットのSRHがキャッシュに既に記憶されているかどうかを検出する方式は、以下を含み得る。第1プロキシノードが、各キャッシュエントリにおけるSRHを第1パケットのSRHと比較し、任意のキャッシュエントリにおけるSRHが第1パケットのSRHと同一である場合、第1パケットのSRHがキャッシュエントリに記憶されていると判定する、または、各キャッシュエントリにおけるSRHが第1パケットのSRHと異なる場合、第1パケットのSRHがキャッシュに記憶されていないと判定し、第1パケットのSRHを記憶するためにキャッシュを更新する必要がある。実施形態において、第1プロキシノードは、キャッシュエントリにおけるSRHの内容の全部を第1パケットのSRHの内容の全部と比較し得るか、または、キャッシュエントリにおけるSRHの一部の内容を第1パケットのSRHの一部の内容と比較し得、キャッシュエントリにおけるSRHのハッシュ値を第1パケットのSRHのハッシュ値と比較し得る。比較方式は、本実施形態において限定されない。
実施形態において、第1パケットのSRHを記憶する方式は、以下の記憶方式1から3のいずれか1つを含み得る。
記憶方式1:第1プロキシノードは、第1パケットに対応するフロー識別子を取得し、第1パケットに対応するフロー識別子をインデックスとして使用することによって、第1パケットのSRHを記憶し得る。第1プロキシノードが、第1パケットのSRHをキー値記憶方式で記憶し得る場合、フロー識別子はキー(key)であり、第1パケットのSRHは値(value)である。
フロー識別子は、パケットが属するデータフローを識別するために使用される。同一のデータフローにおけるパケットは、同一のフロー識別子に対応し、フロー識別子は、パケットにおける1または複数のフィールドの1または複数の値であり得る。例えば、第1パケットに対応するフロー識別子は、5タプル、MACフレームヘッダ情報、または、第1パケットのアプリケーション層情報であり得る。5タプルは、パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号、およびトランスポート層プロトコル番号を含み得る。MACフレームヘッダ情報は、パケットの送信元MACアドレス、宛先MACアドレス、イーサネットタイプ(Ether Type)、およびVLANタグ(VLAN tag)を含み得る。アプリケーション層情報は、パケットのペイロードにおける1または複数のフィールドの1または複数の値であり得る。
記憶方式2:第1プロキシノードは、第1キャッシュエントリの識別子を取得し、第1キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを記憶し得る。第1プロキシノードが第1パケットのSRHをキー値記憶方式に記憶し得る場合、第1キャッシュエントリの識別子はキーであり、第1パケットのSRHは値である。加えて、記憶方式2が使用される場合、パケット伝送手順については、図36Aおよび図36Bに示される以下の実施形態、ならびに、図37Aおよび図37Bにおいて示される以下の実施形態が参照され得る。
記憶方式3:第1プロキシノードは、第1パケットに対応するフロー識別子およびEnd.AD SIDをインデックスとして使用することによって第1パケットのSRHを記憶し得る。第1プロキシノードが第1パケットのSRHをキー値記憶方式で記憶し得る場合、フロー識別子およびEnd.AD SIDの組み合わせがキーであり、第1パケットのSRHは値である。加えて、記憶方式3が使用される場合、パケット伝送手順については、図38Aおよび図38Bに示される以下の実施形態、ならびに、図39Aおよび図39Bに示される以下の実施形態が参照され得る。
段階502が実行され、その結果、第1パケットのSRHは第1プロキシノードに記憶され得る。この場合、SFノードまたは第2プロキシノードが、後の処理において、SRHを含まないパケットを第1プロキシノードへ送信する場合、第1プロキシノードは、予め記憶されたキャッシュから第1パケットのSRHを発見してSRHを復元し得る。
段階503:第1プロキシノードは、エンドポイント動的プロキシSID、第1パケット、および第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
第2パケットは、第1パケットのSRHをピアプロキシノードへ伝送するために使用されるパケットである。本実施形態において、第2パケットは制御パケットであり得る。第2パケットは、第1バイパスSID、制御情報、および第1パケットのSRHを含み得る。第2パケットの送信元アドレスは、第1プロキシノードに対応する第2バイパスSID、または、第1プロキシノードを識別し得る他の情報であり得る。第2パケットはSRv6パケットであり得、第2パケットは、IPv6ヘッダ、SRHおよびペイロードを含み得る。IPv6ヘッダは第2パケットの送信元アドレスおよび第2パケットの宛先アドレスを含み得る。第2パケットのSRHは、第1パケットのSRHにおける各SIDおよび第1バイパスSIDを含み得る。第2パケットのペイロードは第1パケットのペイロードであり得る。第2パケットが第1パケットのペイロードを含むことは任意の方式であることに留意されたい。別の実施形態において、第2パケットは第1パケットのペイロードを含まないことがあり得る。第2パケットのIPv6ヘッダの送信元アドレスは、第1プロキシノードに対応する第2バイパスSIDであり得、第2バイパスSIDは、第2パケットの送信元ノードが第1プロキシノードであると識別するために使用される。
任意の実施形態において、End.AD SIDに対応する処理ポリシーは、第1プロキシノードにおいて事前構成され得る。処理ポリシーは、動的プロキシ動作、および、第2パケットを生成して送信する動作を実行することを含み得る。このようにして、第1パケットを受信した後に、第1パケットにおけるEnd.AD SIDに基づいて、第1プロキシノードは、段階502、段階508、および段階509を実行して動的プロキシサービスを提供し、また、段階503および段階504を実行して、SRHを記憶するよう第2プロキシノードを制御する。この方式により、SRv6においてSIDを使用することによってプログラムを実行する能力が十分に利用され、End.AD SIDに対応する動作が拡張される。
End.AD SIDを構成するプロセスにおいて、実施形態において、構成動作は、第1プロキシノード上で事前に実行され得る。第1プロキシノードは、構成命令を受信し、End.AD SIDを構成命令から取得し得る。第1プロキシノードは、End.AD SIDを記憶し得、例えば、End.AD SIDを第1プロキシノードのローカルSIDテーブルに記憶し得る。同様に、構成動作は、第2プロキシノード上で事前に実行され得る。第2プロキシノードは、構成命令を受信し、End.AD SIDを構成命令から取得し得る。第2プロキシノードは、End.AD SIDを記憶し得、例えば、End.AD SIDを第2プロキシノードのローカルSIDテーブルに記憶し得る。構成動作は、第1プロキシノードまたは第2プロキシノード上でユーザによって実行され得る、または、SFC上の制御プレーン、例えばSDNコントローラまたはNFVMによって実行され得る。これは本実施形態において限定されない。
実施形態において、第1プロキシノードおよび第2プロキシノードは、エニキャストエンドポイント動的プロキシSID(anycast End.AD SID)関係にあり得る。フラッドキャストとも称されるエニキャスト(Anycast)は、IPv6における通信モードであり、同一または対応するサービスを提供するノードのグループを識別するために同一のアドレスが使用され、その結果、このアドレスを宛先アドレスとして使用するパケットは、ノードのグループにおける任意のノードへルーティングされ得ることを意味する。本実施形態において、同一のEnd.AD SIDは、第1プロキシノードおよび第2プロキシノードに割り当てられ得、その結果、第1プロキシノード上で構成されたEnd.AD SIDは、第2プロキシノード上で構成されたEnd.AD SIDと同一である。この場合、ルーティングノードが、宛先アドレスがEnd.AD SIDであるパケットを受信した場合、ルーティングノードは、パケットを第1プロキシノードへ送信し得るか、または、パケットを第2プロキシノードへ送信し得る。このようにして、第1プロキシノードを使用することによって動的プロキシ動作がパケットに対して実行され得るか、または、第2プロキシノードを使用することによって動的プロキシ動作がパケットに対して実行され得、これにより、デュアルホーミングアクセス機能の実装を容易にする。加えて、対応するエニキャストインデックス(anycast index)がエニキャストEnd.AD SIDについて構成され得る。エニキャストインデックスは、エニキャスト関係を有するノードの同一グループのEnd.AD SIDを識別するために使用される。同一のEnd.AD SIDについては、第1プロキシノード上のEnd.AD SIDについて構成されたエニキャストインデックスは、第2プロキシノード上のEnd.AD SIDについて構成されたエニキャストインデックスと同一であり得る。
例えば、第1プロキシノードは、以下の構成命令を受信してEnd.AD SIDをエニキャストEnd.AD SIDとして構成し、End.AD SIDに対応するエニキャストインデックスを構成し得る。
[proxy1]segment-routing ipv6
[proxy1- segment-routing-ipv6] locator t1 ipv6-prefix A::1 64 static 32
[proxy1- segment-routing-ipv6-locator]opcode ::2 end-ad anycast-index 10
[proxy1- segment-routing-ipv6-locator-endad]encapsulation ip ipv4 outbound Ethernet1/0/0 next-hop 1.1.1.1 inbound Ethernet1/0/1
上記構成命令において、proxy1は第1プロキシノードを表し、構成命令の第1行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2行は、ロケータ(ロケータ情報)がt1であり、IPv6プレフィックスがA::1 64であり、静的ルーティングが32であることを意味し、構成命令の第3行は、IPv6 SRのロケータが構成され、オペレーションコードが::2であり、End.AD SIDに対応するエニキャストインデックスが10であることを意味し、構成命令の第4行は、IPv6 SRのEnd.AD SIDが構成され、IPv4パケットがカプセル化を通じて取得され、スロット1およびサブボード0のイーサネットポート0をアウトバウンドインタフェースとして使用することによってIPv4パケットが送信され、ネクストホップアドレスは1.1.1.1であり、インバウンドインタフェースは、スロット1およびサブボード0のイーサネットポート1であることを意味する。上記の構成命令において反映されるシナリオでは、第1パケットのペイロードはIPv4パケットであり、プロキシノードによって第3パケットを生成する方式は、第1パケットに保持されるIPv4パケットを取得し、IPv4パケットを第3パケットとして使用する。
バイパスSIDは、本実施形態において提供される新しいSIDである。バイパスSIDは、パケットの宛先ノードがピアプロキシノードであると識別するために使用される。ローカルプロキシノードが、バイパスSIDを保持するパケットを使用して、パケットをピアプロキシノードへ送信し得る、すなわち、ローカルプロキシのパケットをピアプロキシへ送信し得る。具体的には、ローカルプロキシノードは、ピアプロキシノードのバイパスSIDを保持するパケットを使用して、パケットをピアプロキシノードへ伝送し、それにより、パケットをローカル端からピアプロキシノードへバイパス方式で伝送する機能を実装する。バイパスSIDは、End.ADB SIDと称され得、End.ADB SIDは、End.AD SIDについてのバイパスSIDである(バイパス機能を有し、かつ、動的プロキシ動作を通じて拡張されるSIDである)。End.ADB SIDの名称は、「End.AD SID」および「B」の組み合わせとしてみなされ得る。ここで、「ADB」における「B」はバイパスを表す。バイパスSIDは、IPv6アドレスの形態であり得、バイパスSIDは128ビットを含み得る。バイパスSIDは、ロケータ情報(Locator)および機能情報(Function)を含み得、バイパスSIDのフォーマットはLocator:Functionである。Locatorは、バイパスSIDの高ビットを占有し、Functionは、バイパスSIDの低ビットを占有する。任意選択的に、バイパスSIDは更に、引数情報(Arguments)を含み得、バイパスSIDのフォーマットはLocator:Function:Argumentsである。
実施形態において、バイパスSIDはノードSIDであり得、各バイパスSIDは1つのプロキシノードに一意に対応し得る。SFCのシステムアーキテクチャが複数のプロキシノードを含む場合、複数のバイパスSIDがあり得る。各バイパスSIDは、複数のプロキシノードの1つに対応する。このようにして、1つのバイパスSIDを保持するパケットは、1つのプロキシノードに一意にルーティングされ得、バイパスSIDに対応するプロキシノードへ送信される。本実施形態において、デュアルホーミングアクセスシステムのアーキテクチャは、説明のための例として使用される。システムは、第1プロキシノードおよび第2プロキシノードを含む。区別および説明を容易にするべく、第2プロキシノードに対応するバイパスSIDは、第1バイパスSIDと称される。第1バイパスSIDは、パケットを第2プロキシノードへ送信するために使用される。第1バイパスSIDは、第1プロキシノードによってネットワークに公開され得る。この場合、SFC上の別のノードは、公開された第1バイパスSIDを受信し得る。加えて、同様に、第1プロキシノードに対応するバイパスSIDは、第2バイパスSIDと称される。第2バイパスSIDは、パケットを第1プロキシノードへ送信するために使用される。第2バイパスSIDは、第2プロキシノードによってネットワークに公開され得る。この場合、SFC上の別のノードは、公開された第2バイパスSIDを受信し得る。
第1プロキシノードによって第1バイパスSIDを取得する方式については、構成動作が第1プロキシノード上で事前に実行され得る。第1プロキシノードは、構成命令を受信し、第1バイパスSIDを構成命令から取得し得る。第1プロキシノードは第1バイパスSIDを記憶し得、例えば、第1バイパスSIDを第1プロキシノードのローカルSIDテーブルに記憶し得る。第1プロキシノードは、第1パケットを受信するとき、予め記憶された第1バイパスSIDを読み出して第1バイパスSIDを取得し得る。構成動作は、第1プロキシノード上でユーザによって実行され得るか、または、ネットワークコントローラ、例えばSDNコントローラまたはNFVMによって実行され得る。これは本実施形態において限定されない。
例えば、第1プロキシノードは、以下の構成命令を受信し得る。
[proxy1] segment-routing ipv6
[proxy1- segment-routing-ipv6] locator t2 ipv6-prefix B:: 64 static 32
[proxy1- segment-routing-ipv6-locator] opcode ::1 end-adb peer-sid C::2
上記構成命令において、proxy1は第1プロキシノードを表し、構成命令の第1行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2行は、ロケータ(ロケータ情報)がt2であり、IPv6プレフィックスがB::64であり、静的ルーティングが32であることを意味し、構成命令の第3行は、オペレーションコードが::1であり、第2プロキシノードに対応する第1バイパスSIDがC::2であることを意味する。
同様に、構成動作は、第2プロキシノード上で事前に実行され得る。第2プロキシノードは、構成命令を受信し、第2バイパスSIDを構成命令から取得し、例えば、第2バイパスSIDを第2プロキシノードのローカルSIDテーブルに記憶し得る。例えば、第2プロキシノードは、以下の構成命令を受信し得る。
[proxy2] segment-routing ipv6
[proxy2- segment-routing-ipv6] locator t2 ipv6-prefix C:: 64 static 10
[proxy2- segment-routing-ipv6-locator] opcode ::2 end-adb peer-sid B::1
上記の構成命令において、proxy2は第2プロキシノードを表し、構成命令の第1行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2行は、ロケータ(ロケータ情報)がt2であり、IPv6プレフィックスがC::64であり、静的ルーティングが10であることを意味し、構成命令の第3行は、オペレーションコードが::2であり、第1プロキシノードに対応する第2バイパスSIDがB::1であることを意味する。
第1プロキシノードおよび第2プロキシノードで構成されたバイパスSIDは、相互参照関係にあり得ることに留意されたい。具体的には、第1プロキシノードで構成される第1バイパスSIDは、第2プロキシノードを参照し、第1バイパスSIDがパケットを第2プロキシノードへ伝送するために使用されることを指示する。同様に、第2プロキシノードで構成される第2バイパスSIDは、第1プロキシノードを参照して、第2バイパスSIDが、パケットを第1プロキシノードへ伝送するために使用されることを指示する。
バイパスSIDとプロキシノードとの間の1:1の対応関係は単に例であることが理解されるべきである。別の実施形態において、代替的に、バイパスSIDとプロキシノードとの間に別の対応関係があり得る。これは本実施形態において限定されない。
制御情報は、第1パケットのSRHを記憶するように第2プロキシノードに指示するために使用される。実施形態において、制御情報は、第1フラグおよび第2フラグを含み得る。第1フラグは、パケットがコピーされたパケットであるかどうかを識別するために使用される。例えば、第1フラグは、コピーフラグ(Copy flag、Cフラグ)として示され得る。第2パケットは、コピーフラグフィールドを含み得、第1フラグは、コピーフラグフィールドに保持され得る。例えば、第1フラグの長さは1ビットであり得る。任意選択的に、図5Aおよび図5Bにおける実施形態において、第2パケットは、第1パケットのコピーをカプセル化することによって取得されるパケットであり得る。このようにして、第1フラグは1に設定され得、第1フラグは、第2パケットがコピーされたパケットであると識別し得る。第2フラグは、パケットが確認応答パケットであるかどうかを識別するために使用される。例えば、第2フラグは、確認応答フラグ(acknowledgment flag、Aフラグ)として示され得る。第2パケットは、確認応答フラグフィールドを含み得、第2フラグは、確認応答フラグフィールドに保持され得る。例えば、第2フラグの長さは1ビットであり得る。任意選択的に、図5Aおよび図5Bにおける実施形態において、第2フラグは0に設定され得、第2フラグは、第2パケットが確認応答パケットでないと識別し得る。
制御情報は第2パケットにおける任意の場所に保持され得る。例えば、制御情報の場所は、以下の(1)から(4)のいずれか1つを含み得る。
(1)制御情報は第2パケットの拡張ヘッダに保持される。
拡張ヘッダは、2つの種類、すなわち、ホップバイホップオプションヘッダ(hop-by-hop option header)および宛先オプションヘッダ(destination option header)を含み得る。プロトコルにおいて指定されるように、パケットがルーティングヘッダ(routing header)を保持する場合、宛先オプションヘッダは、2つの場所を含み得る。1つの場所は、宛先オプションヘッダがルーティングヘッダの前である。この場合、拡張ヘッダは、ルーティングヘッダにおいて指定されたノードによって解析される。他の場所は、宛先オプションヘッダがルーティングヘッダの後である。この場合、拡張ヘッダは、パケットの最終宛先ノードによって解析される。
実施形態において、第2パケットの拡張ヘッダは宛先オプションヘッダであり得、宛先オプションヘッダはSRHの前に位置し得、制御情報は宛先オプションヘッダに保持され得る。この方式により、第2パケットが第1パケットのSRHを含み、かつ、SRHがルーティングヘッダの種類であるので、SRHにおいて指定される第2プロキシノードは拡張ヘッダを解析し得、その結果、第2プロキシノードは拡張ヘッダにおいて制御情報を読み出し、制御情報に基づいてSRHを記憶する。
図7は、本願の実施形態による拡張ヘッダの概略図である。拡張ヘッダは、以下のフィールドの1または複数を含み得る。
1.次のヘッダの種類(next header):パケットは更に、拡張ヘッダの後に、1または複数の拡張ヘッダ、または、1または複数の上位層ヘッダを含み得、次のヘッダは、パケットの拡張ヘッダの後の拡張ヘッダまたは上位層ヘッダの種類を指示するために使用される。次のヘッダの長さは1バイトであり得る。
2.ヘッダ拡張長さ(header Extended Length, Hdr Ext Len):ヘッダ拡張長さは、拡張ヘッダの長さを指示するために使用される。Hdr Ext Lenによって指示される長さは、拡張ヘッダの最初の8バイトを含まない。すなわち、Hdr Ext Lenによって指示される長さは、拡張ヘッダの9バイトから最後のバイトまでの長さである。Hdr Ext Lenは、8バイトの単位であり得る。Hdr Ext Lenの値は2に設定され得る。
3.オプションタイプ(option Type, OptType):オプションタイプは、拡張ヘッダにおけるオプションの種類を指示するために使用される。オプションタイプの長さは1バイトであり得る。オプションタイプは、標準化された実験的な種類であり得、その結果、異なるベンダは、互いに通信できる、または、オプションタイプは実験的なオプションタイプであり得る。例えば、実験的オプションタイプの値は、0x1E、0x3E、0x5E、0x7E、0x9E、0xBE、0xDEまたは0xFEを含み得る。プロトコルに指定されるように、オプションタイプにおける2つの最上位桁の2つのビットは、未定義オプションが受信されるときに実行される処理アクションを定義し、オプションタイプにおける第3最上位桁のビットは、オプションのデータが転送プロセスにおいて修正されることが許可されているかどうかを指示する。本実施形態において、拡張ヘッダのオプションタイプの値は0x1Eに設定され得る。オプションタイプにおける2つの最上位桁の2つのビットが00である場合、オプションが受信されかつ、識別されない場合、オプションが無視され、パケットの残り部分が引き続き処理されることを指示する。オプションタイプにおける最上位から3番目のビットは、オプションのデータが転送プロセスにおいて修正されることが許可されていることを指示する。
4.オプション長(option length, OptLen):オプション長は、拡張ヘッダにおいてオプションの長さを指示するために使用される。例えば、図7において、OptLenによって指示される長さは、OptLenの後の第1のバイトから、拡張ヘッダにおけるオプションの最後のバイトまでの長さであり得る。OptLenの値は20に設定され得る。
5.サブオプションタイプ(suboption type, SubOptType)):オプションがネスト構造であり得る。1つのオプションは、1または複数のサブオプションを含み得る。サブオプションタイプの値は1に設定され得る。この値は、SRv6 SFC動的プロキシ動作をサポートする2つのノード間で実行される情報同期、すなわちSRH同期のためにサブオプションが使用されることを指示する。
6.サブオプション長(suboption length, SubOptLen):サブオプション長は、サブオプションのデータ部分の長さを指示するために使用される。SubOptLenの長さは1バイトであり、SubOptLenはバイト単位であり得る。サブオプション長の値は20に設定され得る。
7.予約フィールド(reserved1):予約フィールドの長さは1バイトである。送信端は、予約フィールドの値を0に設定し得、受信端は、予約フィールドを無視し得る。
8.対象ボード(Target Board, TB)インデックス:対象ボードインデックスは、キャッシュエントリを生成するボードのハードウェアインデックスであり、対象ボードインデックスの長さは1バイトである。Nフラグが1に設定されるとき、TBインデックスが設定され得る。Nフラグがデフォルトである場合、TBインデックスは0に設定され得る。
9.フラグフィールド(flags):フラグフィールドは現在、未定義の予約フラグフィールドであり、フラグフィールドの長さは28ビットであり得る。送信端は、予約フィールドの値を0に設定し得、受信端は予約フィールドを無視し得る。
10.第1フラグ:第1フラグは、パケットがコピーされたパケットであるかどうかを識別するために使用され、コピーフラグ、C、またはCフラグとして示され得る。第1フラグの長さは1ビットであり得る。第1フラグの値が1に設定される場合、パケットがコピーされたパケットであることを指示し得、通常は制御パケットである。例えば、パケットは通常のシナリオにおいて転送される第2パケットまたは第6パケットである。第1フラグの値が0に設定される場合、パケットはコピーされたパケットでなく、通常、データパケットであることを指示し得る。例えば、パケットは、障害シナリオにおいて転送される第2パケットである。通常のシナリオで第2パケットを伝送する手順については、図5Aおよび図5Bにおける実施形態を参照されたい。障害シナリオにおいて第2パケットを伝送する手順については、図41Aおよび図41Bにおける以下の実施形態を参照されたい。
11.第2フラグ:第2フラグは、パケットが確認応答パケットであるかどうかを識別するために使用され、確認応答フラグ、A、またはAフラグとして示され得る。第2フラグの長さは1ビットであり得る。第2フラグの値が1に設定される場合、パケットが確認応答パケットである、例えば、パケットが第6パケットであることを指示し得る。第2フラグの値が0に設定される場合、パケットは確認応答パケットでない、例えば、パケットは通常シナリオで転送される第2パケットであることを指示し得る。
12.第3フラグ:第3フラグは、End.AD SIDに関連付けられたSFノードがNATタイプのSFノードであるかどうか、すなわち、SFノードがパケット処理プロセスにおいて、パケットに対応するフロー識別子を修正するかどうかを識別するために使用され、NATフラグ(ネットワークアドレス変換フラグ)、N、NAT flag、またはNフラグとして示され得る。第3フラグの長さは1ビットであり得る。End.AD SIDに関連付けられたSFノードがNATタイプのSFノードである場合、第3フラグの値は1に設定され得る。第3フラグがデフォルトである場合、第3フラグは0に設定され得る。第3フラグの値が1に設定される場合、TBフィールドおよびキャッシュインデックスフィールドが設定され得る。
13.キャッシュインデックス(cache index):キャッシュインデックスは、キャッシュエントリの識別子を保持するために使用される。キャッシュインデックスの長さは4バイトである。第3フラグが1に設定されるとき、キャッシュインデックスが設定され得る。第3フラグがデフォルトである場合、キャッシュインデックスは0に設定され得る。
14.エニキャストインデックス(anycast index):エニキャストインデックスは、エニキャストEnd.AD SIDに一意に対応するインデックスであり、エニキャストインデックスの長さは4バイトである。受信端は、パケットにおけるエニキャストインデックスをチェックし得る。
15.予約フィールド(Reserved2):予約フィールドの長さは4バイトである。送信端は、予約フィールドの値を0に設定し、受信端は、予約フィールドを無視する。
(2)制御情報は、第1バイパスSIDに保持される。
図8は、本願の実施形態による、バイパスSIDを使用して制御情報を保持することの概略図である。バイパスSIDは、ロケータ情報(Locator)、機能情報(Function)、または引数情報(Arguments)の1または複数を含み得る。制御情報は第1バイパスSIDの機能情報に保持され得るか、または、第1バイパスSIDの引数情報に保持され得る。引数情報は機能情報に含まれ得る。この方式により、SRHを記憶するためにピアプロキシノードを制御する機能は、バイパスSIDを使用して実装され得る。このようにして、パケットにおいて制御情報によって占有される余分なバイトの数が低減され、パケットのデータ量が低減され、パケット伝送オーバヘッドが低減される。
(3)制御情報は、第2パケットのIPヘッダに保持される。
例えば、制御情報は、第2パケットのIPv6ヘッダに保持され得る。制御情報は、IPv6ヘッダにおける第1バイパスSID以外の部分に保持され得る。加えて、第2パケットのペイロードがIPv6パケットである、すなわち、第2パケットの形態がIP-in-IPパケットの形態と同様であり、かつ、IP-in-IPパケットが外側のIPv6ヘッダおよび内側のIPv6ヘッダを含む場合、制御情報は外側のIPv6ヘッダに保持され得る。
(4)制御情報は第2パケットのSRHにおけるTLVに保持される。
第2パケットのSRHは、1または複数のTLVを含み得、制御情報はTLVに保持され得る。この方式により、SRHを記憶するために第2プロキシノードを制御する機能が、SRHを使用することによって実装され得る。このようにして、パケットにおいて制御情報によって占有される余分なバイトの数が低減され、パケットのデータ量が低減され、パケット伝送オーバヘッドが低減される。
第2パケットの複数のフォーマットがあり得る。第2パケットのフォーマットは、ネットワークトポロジー構造および/または経路プランニングについての第1プロキシノードの要件に応じて異なり得る、または、制御情報を保持する方式に応じて異なり得る。実装1および実装2の例が、図9~図18を参照して下で説明される。
実装1:第2パケットの宛先アドレスは第1バイパスSIDであり得る。例えば、図10、図11、図12および図13を参照されたい。第2パケットのIPv6ヘッダの宛先アドレス(Destination Address, DA)フィールドは第1バイパスSIDを保持し得る。
この方式は複数のシナリオに適用され得る。シナリオ1からシナリオ3の例を下で説明する。
シナリオ1:第1プロキシノードおよび第2プロキシノードは1つのホップについてのIPリンクに位置する(オンリンク)。オンリンクの具体的な概念については、上記の説明を参照されたい。ここでは詳細を再び説明しない。図9は、第1プロキシノードおよび第2プロキシノードが1つのホップについてのIPリンクに位置する概略図である。
SRv6ネットワークにおいて、SRv6パケットのIPv6ヘッダの宛先アドレスは通常、パケットを転送する次のSRノードを識別するために使用される。このようにして、第1プロキシノードおよび第2プロキシノードが1つのホップについてのIPリンクに位置する場合、第1プロキシノードは宛先アドレスを使用して第1バイパスSIDを保持し、第2パケットの次のSRノードが第2プロキシノードであると指示する。
シナリオ2:第1プロキシノードおよび第2プロキシノードは、複数のホップについてのIPリンクに位置し(オフリンク)、SR機能は、第1プロキシノードと第2プロキシノードとの間の中間ノード上で有効でない。
SR機能が有効でない中間ノードについては、第2パケットを受信するとき、中間ノードは、第2パケットの宛先アドレス(すなわち第1バイパスSID)に基づいてルーティングFIBをクエリし、ルーティングFIBにおける宛先アドレスにヒットしたエントリに基づいてパケットを転送し得る。
シナリオ3:第1プロキシノードおよび第2プロキシノードは、複数のホップについてのIPリンクに位置し、第2パケットを転送する中間ノードを指定するサービス要件を有しない。
シナリオ3は複数の場合を含み得、中間ノードでSR機能が有効である場合を含み得るか、または、中間ノードでSR機能が有効でない場合を含み得る。例えば、複数のホップについてのIPリンクが複数の転送経路を形成し、かつ、第1プロキシノードが、第2パケットが転送される必要がある転送経路を指定しない場合、中間ノードでSR機能が有効であるかどうかに関係なく、第1バイパスSIDは宛先アドレスに保持され得る。別の例では、複数のホップについてのIPリンクが一意の転送経路を形成する、例えば、第1プロキシノードと第2プロキシノードとの間に1つのみの中間ノードがある場合、SR機能が中間ノードで有効であるかどうかに関係なく、第1プロキシノードは中間ノードを指定する必要がなく、第2パケットはなお、中間ノードを通じて第2プロキシノードへ転送され得る。
SR機能が有効である中間ノードについては、第2パケットを受信するとき、中間ノードは、第2パケットの宛先アドレス、すなわち第1バイパスSIDに基づいてローカルSIDテーブルをクエリし、すなわち、第1バイパスSIDをローカルSIDテーブルにおける各SIDとマッチさせ得る。このようにして、第1バイパスSIDが、中間ノードによって公開されるSIDでなく、中間ノードのローカルSIDテーブルに記憶されないので、中間ノードは、第1バイパスSIDがローカルSIDテーブルにヒットしないと判定し、中間ノードは、従来のIPルーティング方式で第2パケットを転送する。具体的には、中間ノードは、第1バイパスSIDに基づいてルーティングFIBをクエリし、ルーティングFIBにおける宛先アドレスにヒットしたエントリに基づいて第2パケットを転送する。
制御情報を保持する異なる方式に基づくと、具体的には、実装1において実装される第2パケットの複数のフォーマットがあり得る。実装1.1から実装1.4の例は、図10から図13を参照して下で説明される。
実装1.1:図10を参照されたい。拡張ヘッダが制御情報を保持するために使用される場合、第2パケットのフォーマットが図10に示され得る。第2パケットはIPv6ヘッダ、拡張ヘッダ、SRH、およびペイロードを含み、拡張ヘッダは、IPv6ヘッダとSRHとの間に位置し得る。
実装1.2:図11を参照されたい。第1バイパスSID(すなわち、図におけるEnd.ADB SID)が制御情報を保持するために使用される場合、第2パケットのフォーマットが図11に示され得る。第2パケットは、IPv6ヘッダ、SRH、およびペイロードを含む。図10と図11との間の比較から、実装1.2において、第2パケットの長さが低減され、第2パケットを圧縮する機能が実装され得ることが分かる。
実装1.3:図12を参照されたい。SRHにおけるTLVが、制御情報を保持するために使用される場合、第2パケットのフォーマットが図12に示され得る。第2パケットはIPv6ヘッダ、SRH、およびペイロードを含む。
実装1.4:図13を参照されたい。IPv6ヘッダが、制御情報を保持するために使用される場合、第2パケットのフォーマットが図13に示され得る。第2パケットはIPv6ヘッダ、SRH、およびペイロードを含む。
実装2:第2パケットの宛先アドレスは、次のSRノードに対応するSIDであり得る。例えば、図15、図16、図17および図18を参照されたい。第2パケットのIPv6ヘッダの宛先アドレス(DA)フィールドは、次のSRノードに対応するSIDを保持し得る。次のSRノードに対応するSIDは、次のSRノードによってSRネットワークに公開され得、次のSRノードに対応するSIDは、次のSRノードのローカルSIDテーブルに記憶され得る。
この方式は、第1プロキシノードおよび第2プロキシノードが複数のホップについてのIPリンクに位置するシナリオに適用され、第2パケットを転送する中間ノードを指定するサービス要件を有し得る。第1プロキシノードは、宛先アドレスを使用して、次のSRノードに対応するSIDを保持して、第2パケットがローカル端からSRノードへ転送される必要があることを指示し得、その結果、第2パケットは、SRノードによって転送された後に第2プロキシノードに到着する。
例えば、図14は、第1プロキシノードおよび第2プロキシノードが複数のホップについてのIPリンクに位置する概略図である。第1プロキシノードと第2プロキシノードとの間の中間ノードは、中間ノード1、中間ノード2、および中間ノード3を含む。SR機能は、中間ノード1、中間ノード2、および中間ノード3上で有効である。第1プロキシノードが、第2パケットが中間ノード3を通じて第2プロキシノードへ転送されることを指定する必要があるとき、第2パケットの宛先アドレスは中間ノード3に対応するSIDを保持し得る。この場合、中間ノード3は、第2パケットを受信するとき、第2パケットの宛先アドレスに基づいてローカルSIDテーブルをクエリし、第2パケットの宛先アドレスがローカルSIDテーブルにおけるSIDにヒットしたと判定し、SIDに対応する動作を実行し、例えば、第2パケットを第2プロキシノードへ転送し得る。
第1プロキシノードと第2プロキシノードとの間の中間ノードの数はネットワーキング要件に基づいて設定され得ることが理解されるべきである。より多くの、またはより少ない中間ノードがあり得る。例えば、1つのみの中間ノードがあり得、または、より多くの中間ノードがあり得る。複数にリンクについてのIPリンクに位置する2つのプロキシノード間の中間ノードの数は本実施形態において限定されない。
制御情報を保持する異なる方式に基づき、具体的には、実装2において実装される第2パケットの複数のフォーマットがあり得る。実装2.1~実装2.4の例が、図15、図16、図17および図18を参照して下で説明される。
実装2.1:図15を参照されたい。拡張ヘッダが制御情報を保持するために使用される場合、第2パケットのフォーマットが図15に示され得る。第2パケットは、IPv6ヘッダ、拡張ヘッダ、SRH、およびペイロードを含む。
実装2.2:図16を参照されたい。第1バイパスSID(すなわち、図16におけるEnd.ADB SID)が制御情報を保持するために使用される場合、第2パケットのフォーマットが図16に示され得る。第2パケットは、IPv6ヘッダ、SRH、およびペイロードを含む。
実装2.3:図17を参照されたい。SRHにおけるTLVが、制御情報を保持するために使用される場合、第2パケットのフォーマットが図17に示され得る。第2パケットは、IPv6ヘッダ、SRH、およびペイロードを含む。
実装2.4:図18を参照されたい。IPv6ヘッダが制御情報を保持するために使用される場合、第2パケットのフォーマットが図18に示され得る。第2パケットは、IPv6ヘッダ、SRH、およびペイロードを含む。
実施形態において、第2パケットを生成するプロセスは段階1~段階3を含み得る。
段階1:第1プロキシノードは第1バイパスSIDを第1パケットのSRHのセグメントリストに挿入する。
第1プロキシノードは、SRにおいてプッシュ(push)動作を実行することによって、第1バイパスSIDをセグメントリストに挿入し得、その結果、第1バイパスSIDが挿入された後に、セグメントリストは更に、元の第1パケットの各SIDに加えて、第1バイパスSIDを含む。第1バイパスSIDがセグメントリストに挿入される場所については、第1プロキシノードは、SRHにおけるアクティブSIDの後に第1バイパスSIDを挿入し得、すなわち、End.AD SIDの後に第1バイパスSIDを挿入し得る。図19は、本願の実施形態による第1バイパスSIDを挿入する概略図である。図19の左側は、第1パケットのセグメントリストを示し、図19の右側は、第2パケットのセグメントリストを示す。図19において、End.AD SIDはSID2であり、第1バイパスSIDはSID5である。この場合、第1プロキシノードはSID2の後にSID5を挿入する。
上記の説明は、SID0からSID5の順序で提供されることに留意されたい。SID0の場所は、前の場所と称され、SID5の場所は、後ろの場所と称される。SRHを解析するとき、SRv6ノードは通常、SRHにおけるSIDを逆の順序で読み出す。例えば、図19において、第1パケットのSRHにおいて、第1読み出しおよび実行SIDはSID4であり、第2読み出しおよび実行SIDはSID3であり、第3読み出しおよび実行SIDはSID2であり、...最後の読み出しおよび実行SIDはSID0である。
段階2:第1プロキシノードは、第1パケットのSRHのSLを更新する。
段階3:第1プロキシノードは、第1パケットの宛先アドレスを更新して第2パケットを取得する。
SLを更新する段階が実行される。このようにして、第1プロキシノードによって生成された第2パケットのSLは、受信された第1パケットのSLより大きい。SRv6ネットワークにおいて、SRv6パケットのSRHのSLは通常、処理予定のSIDの数を識別するために使用される。このようにして、SLの値は、第1プロキシノードによって受信された第1パケットと比較して、第1プロキシノードによって送信された第2パケットにおいて、SRHは、より多くの処理予定のSIDを含むことを指示するように修正され、その結果、第2プロキシノードおよび/または第1プロキシノードと第2プロキシノードとの間の中間ノードはSLに基づいて、より多くのSIDを処理する。
宛先アドレスを更新する動作が実行される。このようにして、第2パケットの次の処理予定のSIDが、End.AD SIDから別のSIDに更新され得、その結果、宛先アドレスに基づいてローカルSIDテーブルをクエリするとき、第2プロキシノードおよび/または中間ノードは、別のSIDに対応する動作を実行する。
段階1~段階3は、SRv6における通常の転送動作と異なることに留意されたい。SRv6において、通常、SRHにおける各SIDは、ヘッドノードによってSRv6パケットに挿入される。ヘッドノード以外の各SRv6ノードについては、SRv6ノードは、SRv6パケットを受信するたびに、SRHにおけるアクティブSIDに対応する動作を実行するのみであり、SIDをSRHに挿入しない、または、SIDをSRHから削除しない、すなわち、各中間SRv6ノードは、SRHにおけるSIDリストを変更しない。加えて、SRv6ノードは、SRHのSLを1つずつ減少させ、すなわち、SLを実行し、ローカル端がSRHにおける1つのSIDを実行することを指示する。このようにして、SRHにおける残りの未実行SIDの数は1減少される。本実施形態において、SRHにおける第1バイパスSIDは、第1プロキシノードによって第1パケットに挿入されるので、第1プロキシノードは、SRHのSLを1増加させ、すなわち、SL++を実行し、SRHにおける残りの未実行SIDの数が1増加することを指示する。新たに追加された未実行SIDは第1バイパスSIDであり、第1バイパスSIDは、第2プロキシノードを伝送する必要があり、その結果、第2プロキシノードは、第1バイパスSIDに対応する動作を実行する。SLが1増加された後に、SRHにおけるアクティブSIDがEnd.AD SIDから第1バイパスSIDに更新される。
説明は、本実施形態において、例を使用することによって提供されるのみであり、段階1、段階2、段階3が順番に実行されることが理解されるべきである。段階1、段階2、および段階3の時系列は、本実施形態において限定されない。実施形態において、3つの段階は、別の順序で実行され得る。例えば、段階3、段階1、および段階2が順番に実行され、または、段階2、段階1、および段階3が順番に実行される。当然、3つの段階は代替的に、並列に実行され得る。すなわち、段階1、段階2および段階3は同時に実行され得る。
実施形態において、制御情報が拡張ヘッダに保持される場合、第1プロキシノードは、段階1、段階2、段階3を実行するだけでなく、段階4も実行し得る。
段階4:第1プロキシノードは拡張ヘッダを生成し、拡張ヘッダを第1パケットにカプセル化する。
段階4、段階1、段階2、および段階3の時系列は、本実施形態において限定されないことが理解されるべきである。例えば、段階4は代替的に、段階1、段階2、および段階3の前に実行され得る。
実施形態において、第1プロキシノードは、第1パケットをコピーして、第1パケットの2つのコピーを取得し得、1つの第1パケットであり、他方は第1パケットのコピーである。第1プロキシノードは、第1パケットの1つのコピーを使用することによって第2パケットを生成し、第1パケットの他のコピーを使用することによって第3パケットを生成し得る。任意選択的に、第1プロキシノードは、第1パケットのコピーを使用することによって第2パケットを生成し得、第1パケットを使用することによって第3パケットを生成し得る。第2パケットは、第2パケットが、第1パケットをコピーすることによって取得されたパケットであることを指示するために第1フラグ(Cフラグ)を保持し得る。
第2パケットを生成する、上記で説明した方式は、異なる特定のシナリオに基づいて複数の実装を含み得る。実装1および実装2の例を下に説明する。
実装1:第1プロキシノードは第1パケットのSLを1増加させる。段階2は、第1パケットの宛先アドレスを第1バイパスSIDに更新し得る。
図19を参照されたい。図19の左側は、第1パケットのSLを示す。第1パケットのSLの値が2である場合、セグメントリストにおける2つの未実行SIDはSID0およびSID1であり、セグメントリストにおける現在のアクティブSIDはSID2であり、セグメントリストにおける2つの実行済みSIDはSID3およびSID4であることを指示する。第1プロキシノードは、SLを1増加させ得、その結果、SLの値は2から3に更新される。図19の右側に示されるように、第2パケットのSLの値が3である場合、セグメントリストにおける3つの未実行SIDは、SID0、SID1、およびSID2であり、セグメントリストにおける現在のアクティブSIDはSID5であり、セグメントリストにおける2つの実行済みSIDはSID3およびSID4であることを指示する。加えて、第1プロキシノードは、第1パケットのIPv6ヘッダの宛先アドレスを修正し得、その結果、第1パケットの宛先アドレスはEnd.AD SIDから第1バイパスSIDに更新される。
実装1は複数のシナリオに適用され得る。例えば、第1プロキシノードおよび第2プロキシノードは1つのホップについてのIPリンクに位置する。別の例では、第1プロキシノードおよび第2プロキシノードは複数のホップについてのIPリンクに位置し(オフリンク)、SR機能は、第1プロキシノードと第2プロキシノードとの間の中間ノードで有効でない。なお別の例において、第1プロキシノードおよび第2プロキシノードは、複数のホップについてのIPリンクに位置し、第2パケットを転送する中間ノードを指定するサービス要件を有しない。第1プロキシノードが実装1を実行する具体的なシナリオは、本実施形態において限定されない。
実装1において取得された第2パケットが、図10、図11、図12、または図13において示され得る。
実装2:第1プロキシノードは更に、1または複数の対象SIDを第1パケットのSRHのセグメントリストに挿入し得る。段階1は、第1プロキシノードは、第1パケットのSLをN増加させ、Nは1より大きい正の整数であることであり得る。段階2は、第1プロキシノードは、第1パケットの宛先アドレスを、1または複数の対象SIDにおける次のSRノードに対応するSIDに更新することであり得る。
1または複数の対象SIDは、対象転送経路を指示するために使用され、対象SIDは、ノードSIDまたはリンクSID(隣接SIDとも称される)であり得る。対象SIDは、1つの中間ノード、1つのリンク、1または複数の命令、1つのサービス、または1つのVPNを識別し得る。
対象転送経路は、第1プロキシノードから第2プロキシノードへの経路である。対象転送経路は、厳密で明示的な(strict explicit)経路、すなわち、各リンクまたは各中間ノードが指定される経路であり得る。対象転送経路は代替的に、緩い明示的な(loose explicit)経路、すなわち、いくつかのリンクまたはいくつかの中間ノードが指定される経路であり得る。対象転送経路は1つのリンクであり得るか、または、複数のリンクの組み合わせであり得る。対象転送経路は、データリンク層の経路、物理層の経路、または、トンネル技術を使用することによって確立された経路であり得る。対象転送経路は、光信号を伝送するための経路であり得るか、または、電気信号を伝送するための経路であり得る。
例えば、図14および図20を参照する。第1プロキシノードと第2プロキシノードとの間に中間ノード1、中間ノード2および中間ノード3がある場合、第1プロキシノードによって挿入される1または複数の対象SIDは、3つのSID、すなわち、中間ノード1に対応するSID6、中間ノード2に対応するSID7、および、中間ノード3に対応するSID20であり得る。例えば、図20の左側は、第1パケットのSLを示す。第1パケットのSLの値が2である場合、セグメントリストにおける2つの未実行SIDはSID0およびSID1であり、セグメントリストにおける現在のアクティブSIDはSID2であり、セグメントリストにおける2つの実行済みSIDはSID3およびSID4であることを指示する。第1プロキシノードは、SLの値を2から6に更新し得る。図20の右側に示されるように、第2パケットのSLの値が6である場合、セグメントリストにおける6の未実行SIDは、SID0、SID1、SID2、SID5、SID8およびSID7であり、セグメントリストにおける現在のアクティブSIDはSID6であり、セグメントリストにおける2の実行済みSIDはSID3およびSID4であることを指示する。
この方式により、対象転送経路は、第1プロキシノード->中間ノード1->中間ノード2->中間ノード3->第2プロキシノードであると指定され得る。各ノードに対応するSIDを対象SIDとして使用することは単に例であることに留意されたい。対象転送経路が緩い明示的な経路である場合、第1プロキシノードによって挿入される1または複数の対象SIDはいくつかの中間ノードに対応するSIDであり得る。
実装2において取得される第2パケットは、図15、図16、図17、または図18に示され得る。
実装2は複数のシナリオに適用され得る。例えば、第1プロキシノードおよび第2プロキシノードは、複数のホップについてのIPリンクに位置し、第2パケットを転送する中間ノードを指定するサービス要件を有する。第1プロキシノードが実装2を実行する具体的なシナリオは、本実施形態において限定されない。
いくつかの可能な実施形態において、第1プロキシノードは、対象SIDを挿入することによってトラフィックプランニングを実行し得る。例えば、図21は、本願の実施形態による、対象SIDを使用することによってトラフィックプランニングを実行することの概略図である。図21において、第1プロキシノードと第2プロキシノードとの間に10の転送ノード、すなわち、ノードN1、ノードN2、ノードN3、...およびノードN9があり、第1プロキシノードから第2プロキシノードへの3の経路、すなわち、(N1、N2、N3)、(N1、N4、N5、N3)、および(N1、N6、N7、N8、N9、N3)がある。対象SIDは、3つの経路のうち指定された1の経路を通じて第2プロキシノードへ伝送されるように第2パケットを制御するために使用され得る。例えば、経路(N1、N2、N3)の帯域幅が最も大きい場合、経路(N1、N2、N3)を通じて第2パケットを伝送するために、リンク(N1、N2)に対応し、かつ、ノードN1によって公開されるSIDは、対象SIDとして使用され得、対象SIDは、第2パケットのセグメントリストにおいて保持され得る。このようにして、パケットを受信するとき、ノードN1は、対象SIDに基づいてローカルSIDテーブルをクエリし、クエリを通じて、リンク(N1、N2)にバインドされたアウトバウンドインタフェース1を取得し、アウトバウンドインタフェース1を選択して第2パケットを送信し、その結果、パケットがアウトバウンドインタフェース1を通じて送信された後に、パケットはノードN2に到達し、次に、リンク(N2、N3)を通じて第2プロキシノードに到達する。
この方式により、少なくとも以下の効果が実現され得る。すなわち、第2パケットの転送経路をサービス要件に基づいて選択でき、指定された対象転送経路を通じて伝送されるように第2パケットを制御でき、それにより、経路プランニングを容易にし、トラフィック最適化を実装する。
加えて、第1プロキシノードは、第1パケットのIPv6ヘッダの宛先アドレスを修正し得、その結果、第1パケットの宛先アドレスは、End.AD SIDから、次のSRノードに対応するSIDに更新される。
実装1および実装2は単に例であることに留意されたい。いくつかの他の実施形態において、第2パケットは別の実装において生成され得る。例えば、バインディングSID(Binding SID, BSID)は、対象転送経路を識別するために使用され得る。この場合、第1プロキシノードは、第1バイパスSIDおよびBSIDを第1パケットのSRHのセグメントリストに挿入し、第1パケットのIPv6ヘッダの宛先アドレスをBSIDに更新し、第1パケットのSLを2増加させ得る。第2パケットを受信するとき、次のSRノードは、BSIDに基づいてローカルSIDテーブルをクエリし、次に、End.B6.Insert動作(SRv6における挿入動作)を実行して、新しいSRHを第2パケットに挿入し得るか、または、End.B6.Encaps動作(SRv6におけるカプセル化動作)を実行して、SRHを含む外側IPv6ヘッダを第2パケットに挿入し得る。BSIDに基づいて、SRHの深度が低減され得、SRHを圧縮する機能が実装され得る。
段階1から段階4に基づいて、図22、図23、図24、および図25を参照されたい。図22は、本願の実施形態による、第1パケットを第2パケットに変換する概略図である。図22は、制御情報を保持するために拡張ヘッダが使用される場合を説明するために適用可能である。2つの情報が第1パケットに追加され得ることが図22から分かる。一方は、パケットを第2プロキシノードへ伝送するために使用される第1バイパスSIDであり、他方は、制御情報を保持するために使用される拡張ヘッダである。第2パケットは、そのような単純な動作を通じて取得され得る。加えて、任意選択的に、対象転送経路を指示するために対象SIDが追加され得る。図23は、バイパスSIDが制御情報を保持するために使用である場合を説明するために適用可能である。第2パケットは、第1バイパスSIDを第1パケットに追加することによって取得され得ることが図23から分かる。図24は、制御情報を保持するためにTLVが使用される場合を説明するために適用可能である。第1バイパスSIDを第1パケットに追加し、制御情報をSRHにおけるTLVに書き込むことによって第2パケットが取得され得ることが図24から分かる。図25は、制御情報を保持するためにIPヘッダが使用される場合を説明するために適用可能である。第1バイパスSIDを第1パケットに追加し、制御情報をIPv6ヘッダに書き込むことによって、第2パケットが取得され得ることが図25から分かる。
第2パケットはこの方式により生成され、その結果、少なくとも以下の効果が実現され得る。
通常、プロキシノードによってキャッシュされた各SRHは、パケット転送プロセスにおけるプロキシノードのデータプレーン(例えば転送チップ)によって、パケットから動的に認識される。データプレーンは通常、データプレーンの転送性能に影響することを回避するために、SRHをCPUへ送信しない。プロキシノードのCPUについては、CPUはSRHを取得しないので、CPUは、SRHを含むパケットを生成できず、CPUは、パケットを使用することによって、SRHを第2プロキシノードにバックアップできない。プロキシノードのデータプレーンについては、データプレーンは通常、単純な処理動作を実行できるだけなので、データプレーンが、SRHに基づいて0から開始するパケット全体を生成することは非常に複雑で、難しく、実現可能でない。どのようにSRHを第2プロキシノードにバックアップし、データプレーンを使用することによってバックアップを実装するかは、技術的に大きな困難であることが分かる。上記の提案されたパケット生成方法において、受信された第1パケットはコピーされ、SID(第1バイパスSID)が挿入され、拡張ヘッダはカプセル化され、第2パケットが取得される。0から開始するパケット全体を生成する方式と比較して、この方式により、処理動作が非常に単純である。このようにして、パケットを生成する処理は、制御プレーンに依存することなくデータプレーンによって実行され得、この技術的困難を無事に克服する。実験によれば、上記のパケット生成ロジックは、転送チップのマイクロコードについて構成され、その結果、転送チップは段階503を実行し得る。このようにして、マイクロコードアーキテクチャがサポートされ、実用性が高い。
実施形態において、第2パケットを生成するためのトリガ条件は、条件(1)から条件(3)のうち1または複数を含み得る。
条件(1):第1キャッシュエントリが生成されることが検出された。
第1プロキシノードはキャッシュを検出し得る。キャッシュが第1キャッシュエントリを元々含まず、かつ、第1パケットが受信された後に第1キャッシュエントリが新たにキャッシュに追加された場合、第1キャッシュエントリが生成されたと検出される。このようにして、第1プロキシノードは、第2パケットを生成し、第2パケットを送信する。
条件(2):第1キャッシュエントリが更新されることが検出される。
第1プロキシノードは、キャッシュにおける第1キャッシュエントリを検出し得る。書き込み動作が第1キャッシュエントリにおいて実行される場合、第1キャッシュエントリが更新される。このようにして、第1プロキシノードは、第2パケットを生成し、第2パケットを送信する。
加えて、第1パケットが受信された後に、第1キャッシュエントリが生成または更新されたことが検出されない場合、第1プロキシノードは、第1パケットのSRHを以前に記憶したことを指示する。このようにして、本実施形態において、キャッシュエントリの同期は通常、第1プロキシノードと第2プロキシノードとの間で維持される。第1プロキシノードがSRHを記憶した場合、第2プロキシノードも高い可能性で第1パケットのSRHを記憶したことを指示する。この場合、第1プロキシノードは、第2パケットを生成し第2パケットを送信する段階を実行しないことがあり得る。
条件(1)または条件(2)は、第2パケットを転送する手順をトリガするために使用される。このようにして、少なくとも以下の効果が実現され得る。すなわち、第1プロキシノードが新しいSRHを受信するたびに、新しいSRHがキャッシュエントリの生成をトリガするので、第2パケットの転送がトリガされる。このようにして、新しいSRHが、第2パケットの転送を通じて、適時の方式で第2プロキシノードへ伝送され得、新しいSRHがリアルタイムで第2プロキシノードと同期されることを確実にする。加えて、以前に記憶されたSRHはキャッシュエントリの生成をトリガしないので、第2パケットの転送がトリガされない。このようにして、SRHを伝送するために第2パケットを生成する処理オーバヘッド、および、第2パケットを伝送するネットワークオーバヘッドが回避される。
例示的シナリオにおいて、N個のデータパケットを含むデータフローが、第1プロキシノードに到着する。第1プロキシノードがデータフローにおける第1の第1パケットを受信したとき、第1の第1パケットのSRHは、第1プロキシノードの新しいSRHである。この場合、第1プロキシノードは第1キャッシュエントリを生成して第1パケットのSRHを記憶する。この場合、条件(1)が満たされるので、第2パケットを生成し第2パケットを送信するために第1プロキシノードがトリガされ、その結果、第1の第1パケットのSRHが、第2パケットを使用することによって第2プロキシノードへ伝送され、第1の第1パケットのSRHも、第2プロキシノードに記憶される。第1プロキシノードが、データフローにける第2の第1パケット、第3の第1パケット、...および最後の第1パケットにおける任意の第1パケットを受信するとき、同一のデータフローにおける全部の第1パケットのSRHが通常同一であるので、第1パケットのSRHは、第1プロキシノードについての記憶されたSRHである。この場合、第1プロキシノードは第1キャッシュエントリを生成しない。この場合、条件(1)が満たされないので、第1プロキシノードは、第2パケットを生成しない、または、第2パケットを送信しない。その結果、(N-1)の第2パケットを転送するオーバヘッドが回避される。加えて、データフローにおいて各第1パケットを受信するとき、第1プロキシノードまたは第2プロキシノードは、第1の第1パケットのSRHを第1パケットにカプセル化して、パケットを復元し得る。ここで、Nは正の整数である。
条件(3)現在の時点で第2パケットの送信期間が経過したことが検出される。
第1プロキシノードは、第2パケットを定期的に送信し得る。具体的に、第1プロキシノードは、第2パケットについて送信期間を設定し、第2パケットを生成し、送信期間が経過するたびに第2パケットを送信し得る。
この方式により、第1プロキシノードは、第2パケットを使用することによって、第1パケットのSRHを第2プロキシノードと定期的に同期し得、その結果、第2プロキシノードは、キャッシュされたSRHを定期的にリフレッシュして、SRH同期の信頼性を改善し得る。
段階504:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
第1プロキシノードが第2パケットを送信する転送経路は、以下の転送経路1および転送経路2のうち1または複数を含み得る。
転送経路1:第1プロキシノードがピアリンク(peer link)を通じて第2パケットを送信する。
図3を参照されたい。第1プロキシノードと第2プロキシノードとの間のピアリンクは第1リンクであり得、第1プロキシノードは、第1リンクを通じて第2パケットを送信し得、第2プロキシノードは、第1リンクを通じて第2パケットを受信し得る。
ピアリンクを通じて第2パケットを伝送するプロセスは、段階1.1および段階1.2を含み得る。
段階1.1:第1プロキシノードが、第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを第2プロキシノードへ送信する。
第1アウトバウンドインタフェースは、第1リンクに対応する、第1プロキシノードのアウトバウンドインタフェースである。第1プロキシノードは、構成命令を事前に受信し得、構成命令は、第1リンクと第1アウトバウンドインタフェースとの間の対応関係を指示するために使用され、第1プロキシノードは、第1リンクと第1アウトバウンドインタフェースとの間の対応関係を構成命令から取得し、第1リンクと第1アウトバウンドインタフェースとの間の対応関係をルーティングエントリに記憶し得る。第2パケットを生成した後に、第1プロキシノードは、第1リンクに対応する第1アウトバウンドインタフェースを選択し、第1アウトバウンドインタフェースを通じて第2パケットを送信し得、その結果、第2パケットは、第1リンクを通じて第2プロキシノードへ伝送される。例えば、第1プロキシノードは以下の構成命令を受信し得る。
[proxy1] segment-routing ipv6
[proxy1- segment-routing-ipv6] service-chain peer-link Ethernet2/0/0 next-hop FE80::1
上記の構成命令において、proxy1は第1プロキシノードを表し、構成命令の第1行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2行は、サービス機能チェーン上のピアリンクに対応するアウトバウンドインタフェースがスロット2およびサブボード0のイーサネットポート0であり、次のホップがFE80::1であることを意味する。
段階1.2:第2プロキシノードが、第1リンクに対応する第1インバウンドインタフェースを通じて第1プロキシノードから第2パケットを受信する。
第1インバウンドインタフェースは、第1リンクに対応する、第2プロキシノードのインバウンドインタフェースである。第2パケットは、第1リンクを通じて第2プロキシノードの第1インバウンドインタフェースに到達し、第1インバウンドインタフェースを通じて第2プロキシノードに入り得る。
実施形態において、第1プロキシノードは、アウトバウンドインタフェースを指定する方式で転送経路1を実装し得る。具体的に、第2パケットのアウトバウンドインタフェースは、第1アウトバウンドインタフェースとして指定され得る。このようにして、第2パケットが送信される必要があるとき、第1プロキシノードは、第1アウトバウンドインタフェースを通じてデフォルトで第2パケットを送信するか、または、次のホップを指定する方式で転送経路1を実装し得る。具体的には、第1プロキシノードの次のホップは、第2プロキシノードとして指定され得る。このようにして、第2パケットが送信される必要があるとき、第1プロキシノードは、デフォルトで第2プロキシノードを次のホップとして使用し、第1アウトバウンドインタフェースを通じて第2パケットを送信する。
転送経路2:ルーティングノードが第2パケットを転送する。
図3を参照されたい。ルーティングノードによって第2パケットを転送するプロセスは段階2.1~段階2.3を含み得る。
段階2.1:第1プロキシノードが、第2リンクに対応する第2アウトバウンドインタフェースを通じて、第2パケットをルーティングノードへ送信する。
第2アウトバウンドインタフェースは、第2リンクに対応する、第1プロキシノードのアウトバウンドインタフェースである。第1プロキシノードは、構成命令を事前に受信し得、構成命令は、第2リンクと第2アウトバウンドインタフェースとの間の対応関係を指示するために使用され、第1プロキシノードは、第2リンクと第2アウトバウンドインタフェースとの間の対応関係を構成命令から取得し、第2リンクと第2アウトバウンドインタフェースとの間の対応関係をルーティングエントリに記憶し得る。第2パケットを生成した後に、第1プロキシノードは、第2リンクに対応する第2アウトバウンドインタフェースを選択し、第2アウトバウンドインタフェースを通じて第2パケットを送信し得、その結果、第2パケットは、第2リンクを通じて第2プロキシノードへ伝送される。
段階2.2:ルーティングノードは、第3リンクを通じて第2パケットを第2プロキシノードへ転送する。
段階2.3:第2プロキシノードは、第3リンクに対応する第2インバウンドインタフェースを通じて第2パケットをルーティングノードから受信する。
第2インバウンドインタフェースは、第3リンクに対応する、第2プロキシノードのインバウンドインタフェースである。第2パケットは、第3リンクを通じて第2プロキシノードの第2インバウンドインタフェースに到達し、第2インバウンドインタフェースを通じて第2プロキシノードに入り得る。
実施形態において、第1プロキシノードは、第2パケットを伝送するために、転送経路1を優先的に使用し得る。実施形態において、転送経路1は、段階(1)~段階(3)を実行することによって優先的に使用され得る。
段階(1):第1プロキシノードは、第1リンクのステータスを検出し、第1リンクが利用可能な状態にある場合、第1プロキシノードが段階(2)を実行する、または、第1リンクが利用不可能な状態にある場合、第1プロキシノードは段階(3)を実行する。
第1プロキシノードは、第1リンクが展開されているかどうか、および、第1アウトバウンドインタフェースのステータスがアップ(up)であるかどうかを検出し得、第1リンクが展開され、かつ、第1アウトバウンドインタフェースのステータスがアップである場合、第1リンクが利用可能状態にあると判定する、または、第1リンクが展開されない、もしくは、第1アウトバウンドインタフェースのステータスがダウン(down)である場合、第1リンクが利用不可能な状態にあると判定する。
段階(2):第1プロキシノードが、第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを第2プロキシノードへ送信する。
段階(3):第1プロキシノードが、第2リンクに対応する第2アウトバウンドインタフェースを通じて、第2パケットをルーティングノードへ送信する。
転送経路1が優先的に使用され、その結果、第2パケットが、ピアリンクを通じて第2プロキシノードへ優先的に伝送される。この場合、転送経路1は転送経路2より短いので、転送経路1は、転送経路2より少ないノードを含み、その結果、第2パケットを伝送する遅延が低減され得る。
任意選択的に、第2パケットの伝送信頼性は、方式1および2のいずれかで実装され得る。
方式1:反復送信
第1プロキシノードは複数の第2パケットを生成し得、複数の第2パケットは同一であり得る。第1プロキシノードは、複数の第2パケットを第2プロキシノードへ継続的に送信し得、第2プロキシノードは、複数の第2パケットを第1プロキシノードから継続的に受信し得る。
この方式により、第1パケットのSRHは、複数の第2パケットのいずれか1つを使用することによって第2プロキシノードへ伝送され得るので、SRHが伝送プロセスにおいて失われる可能性が低減し、実装が単純になり、実現可能性が高くなる。
方式2:確認応答機構
対応する確認応答(Acknowledgment, ACK)パケットが第2パケットについて設計され得、その結果、第2パケットの受信端が、ACKパケットを返し、第2パケットの送信端に対して、第2パケットの送信端が第2パケットを受信したことを通知する。実施形態において、確認応答機構によるパケット伝送手順は、段階1~段階4を含み得る。
段階1:第2プロキシノードは、第1バイパスSIDに基づく第6パケット、第2プロキシノードに対応する第2バイパスSID、および第2パケットを生成する。
第6パケットは、第2パケットに対応するACKパケットであり、第6パケットは、第2パケットが受信されたという確認応答を指示する。第6パケットは、第1プロキシノードへ転送され、その結果、第2プロキシノードが第2パケットを受信するイベントが第1プロキシノードに通知され得る。第6パケットのカプセル化フォーマットは、第2パケットと同様であり得る。相違点として、第6パケットは、第1プロキシノードに対応する第2バイパスSIDを含む。例えば、第6パケットの宛先アドレスは、第2バイパスSIDであり得る。第6パケットは、第2フラグを保持し得、第6パケットにおける第2フラグは、第6パケットが確認応答パケットであることを指示し得る。例えば、第6パケットは、拡張ヘッダを含み得、拡張ヘッダはCフラグおよびAフラグを保持し、Cフラグは1に設定され、Aフラグは1に設定される。
実施形態において、第2プロキシノードは第2パケットを再カプセル化して第6パケットを取得し得る。具体的には、第6パケットを生成するプロセスは、以下を含み得る。第2プロキシノードは第2パケットの送信元アドレスを第1バイパスSIDに更新する。第2プロキシノードは第2パケットの宛先アドレスを第1バイパスSIDから第2バイパスSIDに更新する。第2プロキシノードは第2パケットにおける第2フラグの値を修正し、第6パケットを取得する。送信元アドレスを更新する段階、宛先アドレスを更新する段階、および、第2フラグを修正する段階の3段階が任意の順序で組み合わされ得る。3段階の時系列は本実施形態において限定されない。
第6パケットはこの方式により生成される。このようにして、少なくとも以下の効果が実現され得る。すなわち、第2プロキシノードが、受信された第2パケットについての送信元アドレス、宛先アドレスおよび第2フラグを修正することによって、第2パケットを取得し得る。0から開始するパケット全体を生成する方式と比較して、この方式により、処理動作が非常に単純である。このようにして、制御プレーンに依存することなくパケットを生成するプロセスがデータプレーンによって実行され得、CPUなどの制御プレーンに依存することなく転送エンジンなどのデータプレーンによって実装され得るACKパケット生成方式を提供する。実験によれば、上記のパケット生成ロジックは、転送チップのマイクロコードについて構成され、その結果、転送チップは、第6パケットを生成する段階を実行し得る。このようにして、マイクロコードアーキテクチャがサポートされ、実用性が高くなる。
段階2:第2プロキシノードは第6パケットを第1プロキシノードへ送信する。
段階3:第1プロキシノードは、第6パケットを受信するとき、第2プロキシノードが第2パケットを受信すると判定する。
いくつかの実施形態において、第1プロキシノードは、制御情報を第2パケットから取得し、第2パケットが受信されたことを制御情報が指示していると判定し得る。例えば、第1プロキシノードは、第2パケットにおける第1フラグの値および第2パケットにおける第2フラグの値を識別し得、第1フラグの値が1に設定され、かつ、第2フラグの値が1に設定される場合、第2パケットが受信されたことを制御情報が指示していると判定し得る。
段階4:第1プロキシノードが第6パケットを受信しないとき、第1プロキシノードは、第2パケットを第2プロキシノードへ再伝送する。
第6パケットを転送する手順において、第1プロキシノードは、第1プロキシノードが第6パケットを受信したかどうか、第2プロキシノードがSRHを受信したかどうかを判定することによって確認応答し得る。第2プロキシノードがSRHを取得しないとき、第1プロキシノードは、再伝送を通じて、SRHが第2プロキシノードへ伝送されることを確実にし、SRH伝送信頼性を確実にする。
段階505:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
第1プロキシノードと第2プロキシノードとの間で第2パケットを伝送する具体的な手順は、異なるネットワーキングに基づく複数の実装を含み得る。実装1および実装2の例を下で説明する。
実装1:第1プロキシノードおよび第2プロキシノードが1つのホップについてのIPリンクに位置する場合、第1プロキシノードがアウトバウンドインタフェースを通じて第2パケットを送信した後に、第2パケットは、第1プロキシノードと第2プロキシノードとの間のリンクを通じて、第2プロキシノードのインバウンドインタフェースに到達し得る。この場合、第2プロキシノードは、インバウンドインタフェースを通じて第2パケットを受信し得る。
実装2:第1プロキシノードおよび第2プロキシノードが複数のリンクについてのIPリンクに位置する場合、第1プロキシノードがアウトバウンドインタフェースを通じて第2パケットを送信した後に、第2パケットは、第1プロキシノードと次のノードとの間のリンクを通じて次のノードのインバウンドインタフェースに到達し得る。次のノードは、インバウンドインタフェースを通じて第2パケットを受信し、第2パケットが第2プロキシノードのインバウンドインタフェースに到達するまで、アウトバウンドインタフェースを通じて第2パケットを送信し得る。この場合、第2プロキシノードは、インバウンドインタフェースを通じて第2パケットを受信する。
第1プロキシノードと第2プロキシノードとの間の中間ノードがパケットを転送するプロセスにおいて、中間ノードは、第2パケットのIPv6ヘッダの宛先アドレスを識別し、宛先アドレスに基づいてローカルSIDテーブルをクエリし得る。対象SIDがローカルSIDテーブルにおける対象SIDにマッチしたとき、中間ノードは、対象SIDに対応する動作を実行し、例えば、対象SIDに対応するアウトバウンドインタフェースを選択し、アウトバウンドインタフェースを通じて第2パケットを次の中間ノードへ転送する。加えて、中間ノードは、第2パケットのSRHのSLを1減少させ、第2パケットのIPv6ヘッダの宛先アドレスを、1減算された後に取得されたSLに対応するSIDに更新し得る。例えば、図20を参照されたい。第2パケットのSRHは、図20の右側に示される。この場合、第2パケットを受信した後に、中間ノード1は、宛先アドレスをSID6からSID7に更新し、SLを6から5に更新する。第2パケットを受信した後に、中間ノード2は、宛先アドレスをSID7からSID8に更新し、SLを5から4に更新する。第2パケットを受信した後に、中間ノード3は、宛先アドレスをSID8からSID5に更新し、SLを4から3に更新する。
第2パケットに対して実行されるアクションについては、第1プロキシノードは、第2パケットの宛先アドレスを読み出し得、第1プロキシノードは、第2パケットの宛先アドレスに基づいてローカルSIDテーブルをクエリして、宛先アドレスがローカルSIDテーブルにおけるSIDにマッチするかどうかを判定し得る。宛先アドレスがローカルSIDテーブルにおける第1バイパスSIDにマッチするとき、すなわち、宛先アドレスが、ローカルSIDテーブルにおける第1バイパスSIDにヒットするとき、第1プロキシノードは、第2パケットがSRv6パケットであると判定し、第1バイパスSIDに対応する動作を実行し得る。
第1バイパスSIDに対応する動作は、第2パケットにおける制御情報を識別すること、および、第1パケットのSRHを記憶するように制御情報が指示している場合、第2パケットに基づいて第1パケットのSRHを取得し、第1パケットのSRHを記憶することを含み得る。第1バイパスSIDに対応する動作は、第2プロキシノード上で事前構成され得る。例えば、第1バイパスSIDに対応する動作は、ローカルSIDテーブルにおける第1バイパスSIDに対応するエントリに記憶され得る。第2パケットが受信されたとき、ローカルSIDテーブルは、第2パケットの宛先アドレスに基づいてクエリされ、宛先アドレスが第1バイパスSIDにマッチすること、すなわち、第1バイパスSIDに対応するエントリがヒットすることが分かった場合、エントリに含まれる第1バイパスSIDに対応する動作が実行される。
いくつかの可能な実施形態において、第2プロキシノードは、第2パケットにおける第1フラグの値、および、第2パケットにおける第2フラグの値を識別し得、第1フラグの値が1に設定され、かつ、第2フラグが0に設定される場合、第1パケットのSRHを記憶するよう制御情報が指示していると判定し得る。
制御情報に対応する動作およびEnd.AD SIDに対応する動作は各々、第1パケットのSRHを記憶する段階を含み、制御情報に対応する動作と、End.AD SIDに対応する動作との間の相違点として、End.AD SIDに対応する動作は、第1パケットのペイロードをSFノードへ転送する段階を含み、制御情報に対応する動作は、第1パケットのペイロードをSFノードへ転送する段階を含まないことがあり得、これにより、第1プロキシノードおよび第2プロキシノードの両方が第1パケットのペイロードをSFノードへ転送した後に同一パケットのペイロードをSFノードが反復的に処理する場合を回避することに留意されたい。
段階506:第2プロキシノードは、第2パケットを解析して、第1パケットのSRHを取得する。
第2パケットのSRHは、第1パケットのSRHにおいて各SIDを含み得、第1パケットのSRHにおいてSID以外の情報を更に含み得る。第2プロキシノードは、第2パケットのSRHに基づいて、第1パケットのSRHを取得し得る。具体的に、第2プロキシノードは、段階1および段階2を実行することによって、第1パケットのSRHを取得し得る。
段階1:第2プロキシノードは、第1バイパスSIDを、第2パケットのSRHのセグメントリストから削除する。
この段階は、段階503において第2パケットを生成するプロセスにおける段階1の逆のプロセスとみなされ得る。具体的には、第2プロキシノードは、SRにおいてポップ(pop)動作を実行することによって、第1バイパスSIDをセグメントリストから削除し得、その結果、第1バイパスSIDが削除された後に、セグメントリストが第1パケットの元のセグメントリストに復元される。第2プロキシノードは、SRHにおけるアクティブSIDを削除し得る、すなわち、End.AD SIDの後の第1バイパスSIDを削除し得る。図19を参照されたい。図19の左側は、第1パケットのセグメントリストを示し、図19の右側は、第2パケットのセグメントリストを示す。図19において、End.AD SIDはSID2であり、第1バイパスSIDはSID5である。この場合、第2プロキシノードは、SID2の後にSID5を削除し得、セグメントリストを右側から左側に復元する。
任意選択的に、第2プロキシノードは更に、1または複数の対象SIDを第2パケットのSRHのセグメントリストから削除し得る。
図20を参照されたい。図20の左側は、第1パケットのセグメントリストを示し、図20の右側は、第2パケットのセグメントリストを示す。図20において、合計で3の対象SID、すなわち、SID6、SID7、およびSID8がある。この場合、第2プロキシノードは、SID6、SID7、およびSID8を削除して、セグメントリストを右側から左側に復元し得る。
段階2:第2プロキシノードは、第2パケットのSRHのSLを1減少させて、第1パケットのSRHを取得する。
この段階は、段階503において第2パケットを生成するプロセスにおける段階2の逆のプロセスとみなされ得る。例えば、図19を参照されたい。図19の右側は、第2パケットのSLを示す。第2パケットのSLの値が3である場合、セグメントリストにおける3の未実行SIDが、SID0、SID1、およびSID2であり、セグメントリストにおける現在のアクティブSIDがSID5であり、セグメントリストにおける2つの実行済みSIDがSID3およびSID4であることを指示する。第2プロキシノードは、SLを1減少させ得、その結果、SLの値が3から2に更新される。図19の左側に示されるように、第1パケットのSLの値が2である場合、セグメントリストにおける2の未実行SIDがSID0およびSID1であり、セグメントリストにおける現在のアクティブSIDがSID2であり、セグメントリストにおける2の実行済みSIDがSID3およびSID4であることを指示する。加えて、第1プロキシノードが、第2パケットを転送する中間ノードを指定するシナリオにおいて、第2パケットのSLは、伝送プロセスにおいて中間ノードによって減少され得るので、第2プロキシノードによって受信された第2パケットは、SLの更新に起因して第1プロキシノードによって送信された第2パケットと異なり得る。このようにして、第2プロキシノードによって受信された第2パケットのSLは、第1プロキシノードによって送信された第2パケットのSLより小さいことがあり得る。例えば、図20を参照されたい。第1プロキシノードが第2パケットを送信するとき、第2パケットのSLは6である。中間ノード1は、SLを6から5に更新し、中間ノード2は、SLを5から4に更新し、中間ノード3は、SLを4から3に更新する。この場合、第2プロキシノードによって受信された第2パケットのSLは3である。
段階1および段階2は、SRv6における通常の転送動作と異なることに留意されたい。SRv6において、通常、SRHにおける各SIDは、ヘッドノードによってSRv6パケットに挿入される。ヘッドノード以外の各SRv6ノードについて、SRv6ノードは、SRv6パケットを受信するたびに、SRHにおけるアクティブSIDに対応する動作を実行するだけであり、SIDをSRHにプッシュしない、または、SRHにおいてSIDをポップアップしない、すなわち、各中間SRv6ノードはSRHにおけるSIDリストを変更しない。
本実施形態において、第2パケットのSRHにおける第1バイパスSIDは、第1プロキシノードによって挿入され、第1バイパスSIDは、第1パケットのSRHに元々含まれるSIDではない。このようにして、第2プロキシノードは、第1バイパスSIDを第2パケットのSRHから削除し、第1バイパスSIDのカプセル化を除去し、第2パケットのSRHを第1パケットのSRHに復元する。
この方式により、ルーティングノードの観点からは、第2プロキシノードによって取得されたパケットのSRHは基本的に、ルーティングノードによって第1プロキシノードへ以前に送信されたパケットのSRHと同一であるので、第2プロキシノードが処理済みパケットを後に受信する場合、第2プロキシノードによって復元されたSRHは基本的に、ルーティングノードによって以前に送信されたパケットのSRHと同一であり得る。この場合、第2プロキシノードが、SRHが復元されたパケットをルーティングノードへ返した後に、ルーティングノードによって取得されたパケットのSRHは基本的に、以前に送信されたパケットのSRHと同一であり、これにより、SRHがSFノードによって識別されないのでSRHが紛失する場合を回避し、第2プロキシノードのプロキシ機能を実装する。加えて、SFノードの観点からは、SFノードが処理済みパケットを第1プロキシノードまたは第2プロキシノードへ転送することを選択した後に、第1プロキシノードおよび第2プロキシノードに記憶されたSRHは基本的に同一であるので、第1プロキシノードおよび第2プロキシノードのいずれかがパケットを受信した後に、パケットに復元されたSRHは基本的に同一であり、第1プロキシノードおよび第2プロキシノードは、同等の機能を有し、デュアルホーミングが2つのプロキシノードに基づいて実装されるアーキテクチャを満たすことを確実にする。
2つのパケットのSRHが基本的に同一であるとは、ここでは、2つのパケットのSRHの主な内容が同一であることを意味するが、2つのパケットのSRHは、完全に同一である必要はないことが理解されるべきである。実施形態において、2つのパケットのSRHはわずかに異なり得る。例えば、2つのパケットのSRHのセグメントリストは同一であるが、2つのパケットのSRHのSLは異なる。例えば、End.AD SIDが第1プロキシノードによって実行されるので、SLは1減少する。別の例として、SRHにおけるTLVに含まれるいくつかのパラメータが2つのプロキシノードによって識別および処理される、または、2つのプロキシノード間の転送ノードによって識別および処理されるので、TLVの内容は変化する。わずかな相違点があるこれらの場合も、本願の実施形態の保護範囲に含まれる。
段階507:第2プロキシノードは、第1パケットのSRHを第2キャッシュエントリに記憶する。
第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。第2プロキシノードはインタフェースボードを含み得、インタフェースボードは転送エントリメモリを含み得、第2キャッシュエントリは、第2プロキシノードの転送エントリメモリに位置し得る。実施形態において、第2プロキシノードは、第1パケットのSRHがキャッシュに既に記憶されているかどうかを検出し得る。第1パケットのSRHがキャッシュに記憶されていない場合、第2プロキシノードは、キャッシュエントリを第1パケットのSRHに割り当てて第2キャッシュエントリを取得し、第1パケットのSRHを第2キャッシュエントリに記憶する。加えて、第2プロキシノードが、第1パケットのSRHがキャッシュに記憶されていると検出した場合、第2プロキシノードは、第1パケットのSRHを記憶する段階をスキップし得る。
段階505から段階507を参照して、いくつかの可能な実施形態において、第1バイパスSIDがSとして示され、第2プロキシノードがNとして示される例において、第1バイパスSIDに基づいて実行される動作は以下の通りであり得る。
NがS宛てのパケットを受信し、かつ、SがローカルEnd.ADB SIDであるとき、Nは以下を行う/注釈:宛先アドレスがSであるデータパケットをNが受信し、かつ、SがNによって公開されるバイパスSIDであるとき、Nは以下の段階を実行する/
SLをデクリメントする/注釈:SLを1減少させる/
IPv6 DAをSRH[SL]で更新する/注釈:SRH[SL]を使用することによって、IPv6宛先アドレスを更新する/
更新されたDAを使用してローカルSIDテーブルをルックアップする/注釈:更新された宛先アドレスを使用することによってローカルSIDテーブルをクエリする/
マッチしたエントリに従って転送する/注釈:ローカルSIDテーブルにおけるマッチしたエントリに基づいて、転送動作を実行する。
SLが1減少した後に、SRH[SL]はEnd.AD SIDに対応する。SRH[SL]を使用することによって宛先アドレスが更新された後に、宛先アドレスはEnd.AD SIDに更新される。この場合、ローカルSIDテーブルは、End.AD SIDを使用することによってクエリされ、その結果、End.AD SIDに対応するマッチしたエントリが発見される。ローカルSIDテーブルにおけるEnd.AD SIDに対応するマッチしたエントリは、End.AD SIDに対応する動作を指示するために使用され得る。End.AD SIDに対応するマッチしたエントリは事前構成され得、その結果、End.AD SIDに対応する動作は、パケットが制御情報を含むかどうかを検出し、パケットが制御情報を含む場合にパケットのSRHを記憶し、パケットのペイロードをSFノードへ転送することをスキップすることを含む。
実施形態において、第2プロキシノードの転送ルールは事前構成され得る。第2プロキシノードは、第2パケットを受信した後に第2パケットを使用することによって第1プロキシノードに応答することを禁止する(してはならない)ように構成される。このようにして、第2パケットを受信するとき、第1プロキシノードが、第2パケットを生成して第2パケットを第2プロキシノードへ送信する段階を反復的に実行することが防止され、第1プロキシノードと第2プロキシノードとの間で第2パケットを転送するループが回避される。
段階508:第1プロキシノードは第1パケットに基づいて第3パケットを生成する。
第3パケットは、第1パケットのペイロードをSFノードへ伝送するために使用されるパケットである。第3パケットは、第1パケットのペイロードを含み得るが、第1パケットのSRHを含まない。いくつかの実施形態において、第3パケットは第1パケットのペイロードであり得る。いくつかの他の実施形態において、第3パケットは、第1パケットのペイロードおよびトンネルヘッダを含み得る。第3パケットを生成するプロセスにおいて、第1プロキシノードは、SRHを第1パケットから除去して第3パケットを取得し得る。第3パケットはデータパケットであり得る。
任意選択的に、第3パケットは更に、トンネルヘッダ(tunnel heade)を含み得る。具体的に、第1プロキシノードはSFノードとの伝送トンネルを確立し得る。この場合、第1プロキシノードは、第1パケットのSRHを除去するだけでなく、伝送トンネルに対応するトンネルヘッダを生成し、トンネルヘッダをカプセル化し得、その結果、第3パケットはトンネルヘッダを含む。第3パケットのトンネルヘッダは、VXLANトンネルヘッダ、GREトンネルヘッダ、IP-in-IPトンネルヘッダ、または同様のものであり得る。第1プロキシノードは、最初に第1パケットのSRHを除去し、次に、トンネルヘッダを、SRHが除去された第1パケットにカプセル化し得るか、または、最初にトンネルヘッダを第1パケットにカプセル化し、次に、SRHを、トンネルヘッダがカプセル化された第1パケットから除去し得る。第3パケットを生成するプロセスにおいてSRHを除去しトンネルヘッダをカプセル化する時系列は本実施形態において限定されない。第3パケットがトンネルヘッダを含むことは任意の方式であることが理解されるべきである。別の実施形態において、第1プロキシノードは、SRHが除去された第1パケットを第3パケットとして直接的に使用し得る。この場合、第3パケットは代替的に、トンネルヘッダを含まないことがあり得る。
第3パケットは、送信元アドレスおよび宛先アドレスを含み得る。第1プロキシノードおよびSFノードが伝送トンネルを確立する場合、第3パケットのトンネルヘッダは送信元アドレスおよび宛先アドレスを含み得、第3パケットのトンネルヘッダにおける送信元アドレスは、第1プロキシノードを識別するために使用され、第3パケットのトンネルヘッダにおける宛先アドレスは、SFノードを識別するために使用される。第1プロキシノードのアドレスおよびSFノードのアドレスは、第1プロキシノード上で事前構成され得る。第3パケットを生成するプロセスにおいて、第1プロキシノードは、第1プロキシノードのアドレスおよびSFノードのアドレスを取得するために構成をクエリし、第1プロキシノードのアドレスをトンネルヘッダにおける送信元アドレスに書き込み、SFノードのアドレスをトンネルヘッダにおける宛先アドレスに書き込み得る。第1プロキシノードおよびSFノード上で構成されるアドレス間で相互参照が行われ得る。例えば、第1プロキシノード上で構成される、第1プロキシノードのアドレスは、SFノード上で構成される、第1プロキシノードのアドレスと同一であり得、第1プロキシノード上で構成される、SFノードのアドレスは、SFノード上で構成される、SFノードのアドレスと同一であり得る。トンネルヘッダにおける送信元アドレスおよび宛先アドレスの形態は、構成動作に基づいて判定され得、例えば、各々はIPv4アドレスの形態であり得、各々はIPv6アドレスの形態であり得、または当然、各々は要件に基づいて別の形態として構成され得る。
加えて、第1プロキシノードおよびSFノードが伝送トンネルを確立しない場合、第3パケットの送信元アドレスは、ペイロードの送信元デバイスのアドレス、例えば、端末デバイスのアドレスであり得、第3パケットの宛先アドレスは、ペイロードが処理された後に最終的に到達する宛先デバイスのアドレス、例えば別の端末デバイスのアドレスであり得る。
第1プロキシノードによってSFノードへ送信された第3パケットは、異なる実際のサービスシナリオに基づいて、複数のフォーマットを有し得る。
例えば、図26を参照されたい。第1パケットのペイロードがIPv4パケットである場合、第3パケットが図26に示され得、第3パケットがIPv4パケットであり得る。任意選択的に、第1プロキシノードおよびSFノードが伝送トンネルを確立する場合、第3パケットは更に、IPv4パケットに加えて、トンネルヘッダを含み得、トンネルヘッダは、IPv4パケットのIPv4ヘッダの前であり得る。
図27を参照されたい。第1パケットのペイロードがIPv6パケットである場合、第3パケットは、図27に示され得、第3パケットはIPv6パケットであり得る。任意選択的に、第1プロキシノードおよびSFノードが伝送トンネルを確立する場合、第3パケットは更に、IPv6パケットに加えて、トンネルヘッダを含み得、トンネルヘッダはIPv6パケットのIPv6ヘッダの前であり得る。
図28を参照されたい。第1パケットのペイロードがイーサネットフレームである場合、第3パケットは図28に示され得、第3パケットはイーサネットフレームであり得る。任意選択的に、第1プロキシノードおよびSFノードが伝送トンネルを確立する場合、第3パケットは更に、イーサネットフレームに加えて、トンネルヘッダを含み得、トンネルヘッダはイーサネットフレームのフレームヘッダの前であり得る。
第1プロキシノードおよびSFノードが伝送トンネルを確立しないシナリオにおいて、図29は、第1パケットを第3パケットに推移させる概略図であり、第1パケットのペイロードは第3パケットとして取得および使用され得る。第1プロキシノードおよびSFノードが伝送トンネルを確立するシナリオにおいて、図30は、第1パケットを第3パケットに推移させる概略図であり、第1パケットのペイロードが取得され得、トンネルヘッダがペイロードの前にカプセル化され、第3パケットが取得される。
段階509:第1プロキシノードが第3パケットをSFノードへ送信する。
段階508および段階509によってもたらされる少なくとも以下の効果が実現され得る。第1プロキシノードは第1パケットのペイロードをSFノードへ伝送し得、その結果、SFノードはペイロードを処理し、パケットを処理することによって対応するサービス機能を実装し得る。加えて、パケットのSRHがSFノードへ伝送されることが防止され、SFノードがSRHを識別しないことが原因でパケット処理が失敗する場合が回避され、その結果、動的プロキシ機能が実装される。
本実施形態において、説明は、第2パケットを生成および送信するプロセスが説明される前に第3パケットを生成および送信するプロセスが説明されることを単に例として使用することによって提供されることが理解されるべきである。第2パケットを生成すること、および、第3パケットを生成することの順序は、本実施形態において限定されない。第2パケットを送信すること、および、第3パケットを送信することの順序も限定されない。実施形態において、段階503および段階504、ならびに、段階508および段階509は、順番に実行され得る。例えば、段階508および段階509は、段階503および段階504の前に実行され得る、または、段階503および段階504は、段階508および段階509の前に実行され得る。別の実施形態において、段階503および段階504、ならびに、段階508および段階509は、同時に実行され得る。
段階510:SFノードが、第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
第4パケットは、SFノードが処理を実行するときに取得されるパケットである。SFノードは、構成されたサービスポリシーに従って、第3パケットに対してサービス機能処理を実行して、第4パケットを取得し得る。本実施形態において、説明は、プロキシノードの自己送信および他の受信シナリオを例として使用することによって本実施形態において提供される。自己送信および他の受信シナリオは、1つのプロキシノードがパケットをSFノードへ送信し、別のプロキシノードは、SFノードによって返されたパケットを受信することを意味する。このシナリオにおいて、SFノードがパケットを第1プロキシノードから受信した後に、処理されたパケットを第2プロキシノードへ送信する例を使用することによって説明が本実施形態において提供される。
SFノードが処理されたパケット(すなわち第4パケット)を第2プロキシノードへ送信することを選択する複数のアプリケーションシナリオがあり得る。例えば、第1プロキシノードに接続されたアウトバウンドインタフェースのステータスがダウン(down)であるとSFノードが判定した場合、SFノードは、処理されたパケットを第2プロキシノードへ送信することを選択し得る。別の例では、SFノードと第1プロキシノードとの間のリンクが輻輳した場合、SFノードは、処理されたパケットを第2プロキシノードへ送信することを選択し得、その結果、パケットは、SFノードと第2プロキシノードとの間のリンクを通じて伝送され、オフロードを実装する。
SFノードがパケットを処理する方式において、例えば、SFノードは、第3パケットに対して侵入検出を実行し、ファイアウォールのサービス機能を実装し得る。別の例では、SFノードは、第3パケットの5タプル、MACフレーム情報、または、アプリケーション層情報を修正してNATサービス機能を実装し得る。更に別の例では、SFノードは、第3パケットに対して負荷分散、ユーザ認証などを実行し得る。SFノードの処理方式は、本実施形態において限定されない。
第4パケットは送信元アドレスおよび宛先アドレスを含み得る。第1プロキシノードおよびSFノードが伝送トンネルを確立しない場合、第4パケットの送信元アドレスは第3パケットの送信元アドレスと同一であり得、第4パケットの送信元アドレスはペイロードの送信元アドレス、すなわち、ペイロードの送信元デバイスのアドレス、例えば、端末デバイスのアドレスであり得、第4パケットの宛先アドレスは、第3パケットの宛先アドレスと同一であり得、ペイロードが処理された後に最終的に到達する宛先デバイスのアドレス、例えば、別の端末デバイスのアドレスである。第1プロキシノードおよびSFノードが伝送トンネルを確立した場合、第4パケットのトンネルヘッダは送信元アドレスおよび宛先アドレスを含み得、第4パケットのトンネルヘッダにおける送信元アドレスは、SFノードを識別するために使用され、第4パケットのトンネルヘッダにおける宛先アドレスは、第1プロキシノードを識別するために使用される。第1プロキシノードのアドレスおよびSFノードのアドレスはSFノード上で事前構成され得る。第4パケットを生成するプロセスにおいて、SFノードは、構成をクエリし、SFノードのアドレスをトンネルヘッダにおける送信元アドレスに書き込み、第1プロキシノードのアドレスをトンネルヘッダにおける宛先アドレスに書き込み得る。
段階511:SFノードが第4パケットを第2プロキシノードへ送信する。
SFノードは、SFノードの具体的な機能および異なるネットワーキング展開に基づいて複数の方式で第4パケットを送信し得る。例えば、自己送信および他の受信シナリオにおいて、SFノードは、第1プロキシノードに対応するインバウンドインタフェースと、第2プロキシノードに対応するアウトバウンドインタフェースとの間のバインド関係を予め記憶し得る。この場合、インバウンドインタフェースを通じて第3パケットを受信し、第4パケットを生成した後に、SFノードは、バインド関係に基づいて、インバウンドインタフェースにバインドされたアウトバウンドインタフェースを選択して、第4パケットへ送信し、その結果、パケットは、アウトバウンドインタフェースを通じて送信された後に第2プロキシノードに到着する。バインド関係は構成動作に基づいて判定され得る。例えば、SFノードがインバウンドインタフェース1を通じてproxy1に接続され、アウトバウンドインタフェース2を通じてproxy2に接続される場合、転送ルールがSFノードについて事前構成され得る。インバウンドインタフェース1を通じて受信されたパケットが処理された後に、取得されたパケットは、アウトバウンドインタフェース2を通じて送信される。このようにして、proxy1が第3パケットを送信した後に、SFノードは、インバウンドインタフェース1を通じて第3パケットを受信し、SFノードは、転送テーブルにおいて転送ルールをクエリし、アウトバウンドインタフェース2を通じて第3パケットをproxy2へ送信する。
段階512:第2プロキシノードが、第4パケットをSFノードから受信し、第4パケットに基づいて第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
第2プロキシノードは、第4パケットに基づいてSRHに対応するインデックスを取得し、インデックスに基づいて第2プロキシノードのキャッシュをクエリし、第2キャッシュエントリを発見し、第1パケットのSRHを第2キャッシュエントリから取得し得る。
実施形態において、第1パケットのSRHのクエリ方式は、以下のクエリ方式1から3のいずれか1つを含み得る。
クエリ方式1:第2プロキシノードが、第4パケットに基づいて、第1パケットに対応するフロー識別子を取得し、第1パケットに対応するフロー識別子をインデックスとして使用することによってキャッシュをクエリし、第1パケットのSRHを取得し得る。第4パケットに対応するフロー識別子は第1パケットに対応するフロー識別子であり得る。
クエリ方式2:第2プロキシノードは、第4パケットに基づいて、第1キャッシュエントリの識別子を取得し、第1キャッシュエントリの識別子をインデックスとして使用することによってキャッシュをクエリして、第1パケットのSRHを取得し得、第4パケットは第1キャッシュエントリの識別子を含み得る。このクエリ方式についての詳細については、図36Aおよび図36Bに示される以下の実施形態、ならびに、図37Aおよび図37Bに示される以下の実施形態を参照されたい。
クエリ方式3:第2プロキシノードは、第4パケットに基づいて、第4パケットに対応するフロー識別子およびVPN識別子を取得し、第4パケットに対応するフロー識別子、VPN識別子、およびEnd.AD SIDに基づいてキャッシュをクエリし、第1パケットのSRHを取得し得、第4パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり得、第4パケットはVPN識別子を含み得、VPN識別子は、End.AD SIDにマッピングされ得る。このクエリ方式についての詳細については、図38Aおよび図38Bに示される以下の実施形態、ならびに、図39Aおよび図39Bに示される以下の実施形態を参照されたい。
段階513:第2プロキシノードは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。
第5パケットは、第4パケットに基づいてSRHを復元することによって取得されるパケットである。第5パケットは、第4パケットのペイロードおよび第1パケットのSRHを含む。第2プロキシノードは、第1パケットのSRHを第4パケットにおいてカプセル化して、第5パケットを取得し得る。
段階508に対応して、実施形態において、第2プロキシノードは、第1パケットのSRHが第5パケットとしてカプセル化される第4パケットを直接的に使用し得る。別の実施形態において、第2プロキシノードは、SFノードとの伝送トンネルを確立し得、第4パケットは、伝送トンネルに対応するトンネルヘッダを含む。この場合、第2プロキシノードは、第1パケットのSRHをカプセル化するだけでなく、第4パケットのトンネルヘッダを除去することがあり得、その結果、第5パケットは第4パケットのトンネルヘッダを含まない。第4パケットのトンネルヘッダは、VXLANトンネルヘッダ、GREトンネルヘッダ、IP-in-IPトンネルヘッダ、または同様のものであり得る。第2プロキシノードは、まず第1パケットのSRHを第4パケットにカプセル化し、次に、SRHがカプセル化されている第4パケットからトンネルヘッダを除去し得るか、または、まずトンネルヘッダを第4パケットから除去し、次に、トンネルヘッダが除去された第4パケットにSRHをカプセル化し得る。トンネルヘッダを除去しSRHをカプセル化するタイミングは本実施形態において限定されない。
段階514:第2プロキシノードは、第5パケットをルーティングノードへ送信する。
段階515:ルーティングノードは、第5パケットを第2プロキシノードから受信し、第5パケットを転送する。
本実施形態において提供される方法によれば、バイパス機能を有する新しいSIDは、End.AD SIDについて拡張される。したがって、End.AD SIDを保持するパケットを受信するとき、ローカルプロキシノードは、この新しいSIDを使用して、バイパス方式で、パケットのSRHをピアプロキシノードへ伝送し、その結果、ピアプロキシノードはまた、パケットのSRHを取得し得、したがって、パケットのSRHはピアプロキシノードに記憶され得る。このようにして、同一のSFノードにデュアルホーミングされた2つのプロキシノード間で、パケットのSRHの同期が実装され得、その結果、パケットのSRHは冗長的にバックアップされる。この場合、パケットを処理した後、SFノードは、処理されたパケットをピアプロキシノードへ返すことを選択し得る。ピアプロキシノードは、パケットのSRHを事前に取得するので、ピアプロキシノードは、以前に記憶されたSRHを使用することによって、パケットのSRHを復元し得、その結果、SFノードによって処理されたパケットは、復元されたSRHを使用することによって正常に伝送され得る。
上記の方法の実施形態において、第1プロキシノードまたは第2プロキシノードは、ステートマシンを使用することによって2つのプロキシノード間のキャッシュエントリの同期を維持し得る。以下では、ステートマシンの例を説明する。
ステートマシンは、ピアキャッシュ(peer cache)ステートマシンとして示され得、ステートマシンは、ローカルプロキシノードはパケットをピアプロキシノードへ送信するステータスを指示する。第1プロキシノードのステートマシンは、第1プロキシノードがパケットを第2プロキシノードへ送信するステータスを指示し、第2プロキシノードのステートマシンは、第1プロキシノードがパケットを第2プロキシノードへ送信するステータスを指示する。第1プロキシノードおよび第2プロキシノードのいずれかについて、プロキシノードは、対象フィールドをキャッシュにおける各キャッシュエントリに追加し、ステートマシンの現在の状態を対象フィールドに書き込み、第1パケットを受信するとき、キャッシュエントリにおける対象フィールドの値に基づいて、実行予定のアクションを判定し得る。対象フィールドは、ピアキャッシュ状態(peer cache state)フィールドとして示され得、対象フィールドは、ステートマシンの現在の状態を記録するために使用される。ステートマシンは現在の状態、次の状態、イベント、および対象アクションを含み得る。第1プロキシノードは、検出されたイベントおよびステートマシンの現在の状態に基づいて、イベントおよび現在の状態に対応するステートマシンの対象アクションを実行し、ステートマシンを現在の状態の次の状態に切り替え得る。例えば、ステートマシンは、第1ステートマシンおよび第2ステートマシンのいずれかであり得る。
図31は、本願の実施形態による第1ステートマシンの概略図である。第1ステートマシンは、伝送信頼性が反復送信を通じて確実にされる場合に適用可能であり、第1ステートマシンによって提供される処理ポリシーは以下の(1)~(6)の1または複数を含み得る。以下の第1ステートマシンは第1プロキシノードに適用され得る、または、第2プロキシノードに適用され得ることが理解されるべきである。第1プロキシノードについては、ピアプロキシノードは第2プロキシノードであり、第2プロキシノードについては、ピアプロキシノードは第1プロキシノードである。
(1)第1イベントが検出された場合、複数の第2パケットは、ピアプロキシノードへ継続的に送信され、ステートマシンは第1状態に切り替えられる。
第1イベントは、第1キャッシュエントリが生成されることであり、第1イベントはプログラムにおいて新しいローカルキャッシュ(local cache new)イベントとして示され得る。第1状態は、第2キャッシュエントリが第1キャッシュエントリと同一であると指示し、第1状態はプログラムにおいて、等しいキャッシュ(cache equal)状態として示され得る。
(2)第2イベントが検出された場合、複数の第2パケットがピアプロキシノードへ継続的に送信され、ステートマシンは第1状態に切り替えられる。
第2イベントは、第1キャッシュエントリが更新されることであり、第2イベントはプログラムにおいて、LocalCache_Upd(ローカルキャッシュ更新を指示し、Updは「更新」を表す)イベントとして示され得る。
(3)第3イベントが検出され、かつ、ステートマシンが第2状態である場合、複数の第2パケットが、ピアプロキシノードへ継続的に送信され、ステートマシンは第1状態に切り替えられる。
第3イベントは、第1パケットが受信されることであり、第3イベントはプログラムにおいて、ローカルキャッシュタッチ(local cache touch)イベントとして示され得る。第2状態は、ピアキャッシュエントリがローカルキャッシュエントリより古いと判定されること、または、ピアキャッシュエントリがローカルキャッシュエントリより古いと疑われることを指示する。第2状態において、ローカルプロキシノードは、第2パケットをピアプロキシノードへ送信し、ピアプロキシノードのキャッシュエントリにおけるSRHを更新し得る。第2状態はプログラムにおいて、古いキャッシュ(Cache_Older)状態として示され得る。
(4)第4イベントが検出され、かつ、ステートマシンが第1状態にある場合、第1キャッシュエントリが削除される。
第4イベントは、エイジングタイマが満了することであり、第4イベントはプログラムにおいて、AgingTimer_Expired(エイジングタイマ満了)イベントとして示され得る。エイジングタイマ満了は、第1キャッシュエントリが古い状態にあることを指示する。この場合、キャッシュ空間を節約するために第1キャッシュエントリは消去され得る。具体的には、第1プロキシノードはエイジングタイマを開始させ、第1キャッシュエントリについて対応するエイジングフラグ(aging flag)を設定し得、エイジングフラグの値は1または0であり得る。加えて、第1プロキシノードは、エイジングタイマを使用することによって第1キャッシュエントリを定期的にスキャンし得る。第1プロキシノードが、第1キャッシュエントリに対応するエイジングフラグが1であることを発見した場合、第1プロキシノードは、エイジングフラグを0に変更する、または、第1プロキシノードが、第1キャッシュエントリに対応するエイジングフラグが0であることを発見した場合、第1プロキシノードは第1キャッシュエントリを削除する。パケットを転送するプロセスにおいて、キャッシュをクエリするときに第1プロキシノードが第1キャッシュエントリにヒットした場合、第1プロキシノードは、第1キャッシュエントリに対応するエイジングフラグを1に設定し、その結果、第1キャッシュエントリはキャッシュに入る。
(5)第5イベントが検出され、かつ、ステートマシンが第1状態にある場合、第2パケットに保持されたSRHがキャッシュに記憶されたSRHと同一であるかどうかが、比較を通じて判定され、第2パケットに保持されるSRHが記憶されたSRHと異なる場合、第2パケットに保持されるSRHはキャッシュエントリに記憶され、キャッシュを更新し、エイジングフラグを1に設定し、ステートマシンの現在の状態を未変更に維持する。
第5イベントは、第2パケットを受信するイベントであり、第5イベントはプログラムにおいて、CacheSync_Recv(キャッシュ同期受信を指示し、Syncは「同期」を表し、SRHがピアプロキシノードのキャッシュと同期されることを意味し、Recvは「受信」を表す)イベントとして示され得る。
(6)第5イベントが検出され、かつ、ステートマシンが第2状態にある場合、第2パケットに保持される第1パケットのSRHがキャッシュに記憶されたSRHと同一であるかどうかが、比較を通じて判定され、第2パケットに保持される第1パケットのSRHが記憶されたSRHと異なる場合、第2パケットに保持された第1パケットのSRHはキャッシュエントリに記憶され、キャッシュが更新され、エイジングフラグが1に設定され、ステートマシンが第1状態に切り替えられる。
図32は、本願の実施形態による第2ステートマシンの概略図である。第2ステートマシンは、確認応答機構を使用することによって伝送信頼性が確実にされる場合に適用可能であり、第2ステートマシンによって提供される処理ポリシーは以下の(1)~(10)の1または複数を含み得る。以下では主に、第2ステートマシンと第1ステートマシンとの間の相違点に焦点を当てることに留意されたい。第1ステートマシンと同様の特徴については第1ステートマシンを参照されたい。詳細については、以下で説明しない。
(1)第1イベントが検出された場合、1つの第2パケットがピアプロキシノードへ送信され、ステートマシンは第3状態に切り替えられる。
第3状態は、キャッシュエントリがローカルに生成または更新されることを指示し、第2パケットはピアプロキシノードから第2パケットの動作結果の確認応答を待機するためにピアプロキシノードへ送信され、第3状態はプログラムにおいて、Sync_Start(同期開始を指示し、Syncは「同期」を表し、Startは「開始」を表す)状態として示され得る。
(2)第2イベントが検出され、かつ、ステートマシンが第3状態にある場合、1つの第2パケットがピアプロキシノードへ送信され、ステートマシンの現在の状態は未変更のままである。
(3)第2イベントが検出され、かつ、ステートマシンが第1状態である場合、1つの第2パケットがピアプロキシノードへ送信され、ステートマシンが第3状態にスイッチされる。
(4)第3イベントが検出され、かつ、ステートマシンが第3状態にある場合、ステートマシンが第1状態に切り替えられる。
(5)第4イベントが検出され、かつ、ステートマシンが第3状態である場合、ステートマシンが第1状態に切り替えられる。
(4)および(5)において、2つのプロキシノードが同時に第3状態にあり互いをロックすることを防止するために、第2パケットを送信するアクションは実行されないことがあり得る。
(6)第5イベントが検出され、かつ、ステートマシンが第1状態にある場合、第2パケットに保持される第1パケットのSRHがキャッシュに記憶されたSRHと同一であるかどうかが比較を通じて判定され、第2パケットに保持される第1パケットのSRHが記憶されたSRHと異なる場合、第2パケットに保持された第1パケットのSRHはキャッシュエントリに記憶され、キャッシュが更新され、エイジングフラグ(aging flag)が1に設定され、ステートマシンの現在の状態が未変更のまま維持される。
(7)第4イベントが検出され、かつ、ステートマシンが第1状態にある場合、ステートマシンが第2状態に切り替えられる。
(8)第5イベントが検出され、かつ、ステートマシンが第2状態にある場合、第2パケットに保持される第1パケットのSRHがキャッシュに記憶されたSRHと同一であるかどうかが、比較を通じて判定され、第2パケットに保持される第1パケットのSRHが記憶されたSRHと異なる場合、第2パケットに保持された第1パケットのSRHはキャッシュエントリに記憶され、キャッシュが更新され、エイジングフラグ(aging flag)が1に設定され、ステートマシンが第1状態に切り替えられる。
(9)第3イベントが検出され、かつ、ステートマシンが第2状態にある場合、1つの第2パケットがピアプロキシノードへ送信され、ステートマシンが第3状態に切り替えられる。
(10)第6イベントが検出され、かつ、ステートマシンが第3状態にある場合、ステートマシンが第1状態に切り替えられる。
第6イベントは、第6パケットが受信されることであり得、第6イベントはプログラムにおいて、CacheSync_Ack(キャッシュ同期確認応答を指示し、Syncは「同期」を表し、Ackは「確認応答」を表す)イベントとして示され得る。
ステートマシンの機構によれば、少なくとも以下の効果が実現され得る。ステートマシンは、ローカルプロキシノードがパケットをピアプロキシノードへ送信するステータスに基づいてリアルタイムで現在実行されているアクションを判定して、適時の方式でSRHをピアプロキシノードへ伝送し得、それにより、キャッシュエントリの同期がローカルプロキシノードとピアプロキシノードとの間で維持されることを確実にし、同一のSFノードにデュアルホーミングされるプロキシノード間のSRH一貫性を実装する。
上記の方法の実施形態は、プロキシノードの自己送信および他の受信シナリオに適用され得る。図33は、本願の実施形態による自己送信および他の受信シナリオにおけるパケット伝送の概略図である。図33において、パケットをプロキシノード1から受信した後に、SFノードは、処理されたパケットをプロキシノード2へ返す。自己送信および他の受信シナリオは任意である。本願の本実施形態において提供されるパケット伝送方法は更に、プロキシノードの自己送信および自己受信シナリオに適用され得る。自己送信および自己受信シナリオは、プロキシノードがパケットをSFノードへ送信した後に、プロキシノードが更にSFノードによって返されたパケットを受信することを意味する。このシナリオにおいて、パケットをプロキシノードから受信した後に、SFノードは処理されたパケットをプロキシノードへ返す。図34は、本願の実施形態による自己送信および自己受信シナリオにおけるパケット伝送の概略図である。図34において、パケットをプロキシノード1から受信した後に、SFノードは処理されたパケットをプロキシノード1へ返す。
以下では、図35Aおよび図35Bにおける実施形態を参照して、自己送信および自己受信シナリオにおけるパケット伝送手順の例を説明する。図35Aおよび図35Bにおける実施形態は主に、図5Aおよび図5Bにおける実施形態との相違点に焦点を当てることに留意されたい。図5Aおよび図5Bにおける実施形態と同様の段階については、図5Aおよび図5Bにおける実施形態を参照されたい。図35Aおよび図35Bにおける実施形態では詳細は説明されない。
図35Aおよび図35Bは、本願の実施形態によるパケット伝送方法のフローチャートである。方法は以下の段階を含み得る。
段階3501:ルーティングノードは第1パケットを第1プロキシノードへ送信する。
段階3502:第1プロキシノードは、第1パケットをルーティングノードから受信し、第1プロキシノードは、第1パケットのSRHを第1キャッシュエントリに記憶する。
段階3503:第1プロキシノードは、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
段階3504:第1プロキシノードは第2パケットを第2プロキシノードへ送信する。
段階3505:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
段階3506:第2プロキシノードは第2パケットを解析して、第1パケットのSRHを取得する。
段階3507:第2プロキシノードは第1パケットのSRHを第2キャッシュエントリに記憶する。
段階3508:第1プロキシノードは第1パケットに基づいて第3パケットを生成する。
段階3509:第1プロキシノードは第3パケットをSFノードへ送信する。
段階3510:SFノードは第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階3511:SFノードが第4パケットを第1プロキシノードへ送信する。
図5Aおよび図5Bにおける実施形態と異なり、本実施形態において、SFノードは第4パケットを第1プロキシノードへ返し得る。具体的には、SFノードは第1プロキシノードに対応するアウトバウンドインタフェースを選択し、アウトバウンドインタフェースを通じて第4パケットを送信し得る。
例えば、自己送信および自己受信シナリオにおいて、SFノードは、第1プロキシノードに対応するインバウンドインタフェースと、第1プロキシノードに対応するアウトバウンドインタフェースとの間のバインド関係を予め記憶し得る。この場合、インバウンドインタフェースを通じて第3パケットを受信し、第4パケットを生成した後に、SFノードは、バインド関係に基づいて、インバウンドインタフェースにバインドされたアウトバウンドインタフェースを選択して、第4パケットへ送信し、その結果、パケットは、アウトバウンドインタフェースを通じて送信された後に第1プロキシノードに到着する。バインド関係は、構成動作に基づいて判定され得る。例えば、SFノードがインタフェース3を通じてproxy1に接続される場合、転送ルールがSFノードのために事前構成され得る。インタフェース3を通じて受信されたパケットが処理された後に、取得されたパケットはインタフェース3を通じて返される。SFノードは転送ルールを転送テーブルに記憶する。proxy1が第3パケットを送信した後に、SFノードは、インタフェース3を通じて第3パケットを受信し、SFノードは、転送テーブルにおける転送ルールをクエリし、インタフェース3を通じて第3パケットを第1プロキシノードへ返す。
段階3512:第1プロキシノードが第4パケットをSFノードから受信し、第4パケットに基づいて第1キャッシュエントリをクエリして第1パケットのSRHを取得する。
段階3513:第1プロキシノードが、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。
段階3514:第1プロキシノードが第5パケットをルーティングノードへ送信する。
段階3515:ルーティングノードが第5パケットを第1プロキシノードから受信し、第5パケットを転送する。
本実施形態において提供される方法によれば、バイパス機能を有する新しいSIDは、End.AD SIDについて拡張される。したがって、End.AD SIDを保持するパケットを受信するとき、ローカルプロキシノードは、この新しいSIDを使用して、バイパス方式で、パケットのSRHをピアプロキシノードへ伝送し、その結果、ピアプロキシノードはまた、パケットのSRHを取得し得、したがって、パケットのSRHはピアプロキシノードに記憶され得る。このようにして、同一のSFノードにデュアルホーミングされた2つのプロキシノード間で、パケットのSRHの同期が実装され得、その結果、パケットのSRHは冗長的にバックアップされ、パケットのSRHのセキュリティが改善される。
基本のパケット伝送手順が上記の方法の実施形態において説明される。本願の本実施形態において提供される方法は更に、NATシナリオをサポートし得る。NATシナリオにおいて、SFノードのサービス機能はフロー識別子の修正を含む。NATシナリオにおいて、SFノードがパケットに対してサービス処理を実行した後に、通常、処理されたパケットに対応するフロー識別子は、処理前に存在したパケットに対応するフロー識別子と異なる。例えば、SFノードのサービス機能が、NATの実行を含む場合、SFノードは、パケットの5タプルを修正する。この場合、パケットの5タプルの処理は、処理前に存在したパケットの5タプルと異なる。例示的シナリオにおいて、SFがファイアウォールである場合、SFは通常、宛先ネットワークアドレス変換(Destination Network Address Translation, DNAT)サービス機能を含む。SFノードは、アドレスプールを記憶し、パケットの宛先アドレスをアドレスプールにおけるアドレスで置換し、置換された宛先アドレスを有するパケットをプロキシノードへ返し、その結果、プロキシノードによって受信されたパケットの宛先アドレスは、ローカルプロキシノードまたはピアプロキシノードによって以前にSFノードへ送信されたパケットの宛先アドレスと異なる。
NATシナリオにおいて、本願の本実施形態において提供される方法は、SFノードがパケットに対応するフロー識別子を修正するとき、プロキシノードがなお、フロー識別子が修正されたパケットに基づいてパケットのSRHを発見し得ることを確実にするために実行され得、それにより、パケットのSRHが復元されることを確実にする。以下では、図36Aおよび図36Bを参照して、NATシナリオにおけるパケット伝送手順を詳細に説明する。図36Aおよび図36Bにおける実施形態は主に、図5Aおよび図5Bにおける実施形態との相違点に焦点を当てることに留意されたい。図5Aおよび図5Bにおける実施形態および他の特徴と同様の段階については、図5Aおよび図5Bにおける実施形態を参照されたい。図36Aおよび図36Bにおける実施形態では詳細は説明されない。
図36Aおよび図36Bは、本願の実施形態によるパケット伝送方法のフローチャートである。図36Aおよび図36Bに示されるように、方法は以下の段階を含み得る。
段階3601:ルーティングノードが第1パケットを第1プロキシノードへ送信する。
段階3602:第1プロキシノードが第1パケットをルーティングノードから受信し、第1プロキシノードは、SFノードのサービス機能がフロー識別子の修正を含むと判定する。
SFノードのサービス機能を判定するプロセスにおいて、実施形態において、構成動作は、第1プロキシノードにおいて事前に実行され得る。第1プロキシノードは構成命令を受信し、SFノードのサービス機能情報を構成命令から取得し得、サービス機能情報は、SFノードのサービス機能がフロー識別子の修正を含むことを指示する。第1プロキシノードはSFノードのサービス機能情報を記憶し、サービス機能情報に基づいて、SFノードのサービス機能がフロー識別子の修正を含むと判定し得る。別の実施形態において、第1プロキシノードは代替的に、SFノードのサービス機能がフロー識別子の修正を含むと自動的に発見し得る。例えば、第1プロキシノードは能力クエリ要求をSFノードへ送信し得、SFノードは能力クエリ要求を受信し、能力クエリ要求に応答してサービス機能情報を第1プロキシノードへ送信し得る。第1プロキシノードは、受信されたサービス機能情報に基づいて、SFノードのサービス機能がフロー識別子の修正を含むと判定し得る。当然、トラフィック分類器またはネットワークコントローラは代替的に、SFノードのサービス機能情報をSFノードへ送信し得る。第1プロキシノードがSFノードのサービス機能をどのように判定するかは本実施形態において限定されない。
本実施形態において、第1プロキシノードは、SFノードのサービス機能がフロー識別子の修正を含むと判定することによって、以下の段階において提供される方式を実行し得、SFノードがパケットに対応するフロー識別子を修正するとき、プロキシノードはなお、フロー識別子が修正されたパケットに基づいてパケットのSRHを発見できることを確実にし、それにより、パケットのSRHが復元されることを確実にする。
段階3603:第1プロキシノードが、第1キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを第1キャッシュエントリに記憶する。
第1キャッシュエントリの識別子は、第1プロキシノードのキャッシュにおける第1キャッシュエントリを一意に識別するために使用される。第1キャッシュエントリの識別子は、第1キャッシュエントリのキャッシュインデックス(cache Index)を含み得、キャッシュインデックスは、第1プロキシノードのインタフェースボード上の第1キャッシュエントリを識別するために使用される。実施形態において、第1プロキシノードは複数のインタフェースボードを含み得る。この場合、第1キャッシュエントリの識別子は更に、対象ボード(Target Board、TB)の識別子を含み得、対象ボードは、第1キャッシュエントリが位置するインタフェースボードであり、対象ボードの識別子は、第1プロキシノードの各インタフェースボードにおける対象ボードを識別するために使用される。
段階3604:第1プロキシノードが、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
段階3605:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
第2パケットは、第1キャッシュエントリの識別子を含み得る。第1パケットのSRHを記憶するために第2プロキシノードを指示することに加えて、第2パケットにおける制御情報は更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するために第2プロキシノードを指示し得る。第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。
第1プロキシノードは、第1キャッシュエントリの識別子および制御情報を保持するために第2パケットを使用し、その結果、第1プロキシノードは、第2パケットを使用することによって、SRHを記憶するためにローカル端によって使用されるキャッシュエントリの識別子を第2プロキシノードへ伝送し得、制御情報を使用することによって、SRHが第1プロキシノードに記憶されるキャッシュエントリと、SRHが第2プロキシノードに記憶されるキャッシュエントリとの間のマッピング関係を維持するように第2プロキシノードに指示する。
任意選択的に、制御情報は第3フラグを含み得る。第3フラグは、SFノードのサービス機能がフロー識別子の修正を含むことを識別するために使用される。第2プロキシノードは事前構成され得、その結果、制御情報が第3フラグを含むと第2プロキシノードが判定した場合、第2プロキシノードは、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶する。例えば、第3フラグは、NATフラグとして示され得、NATフラグは、SFノードのサービス機能が実行されたNATを含むことを識別するために使用される。例えば、図7を参照されたい。第2パケットは、図7に示された拡張ヘッダを含み得る。キャッシュインデックスフィールドおよびTBフィールドは、第1キャッシュエントリの識別子を保持するために使用され、キャッシュインデックスフィールドの値は第1キャッシュエントリの識別子におけるキャッシュインデックスであり得、TBフィールドの値は、第1キャッシュエントリの識別子における対象ボードの識別子であり得る。N個のフィールドは第3フラグを保持するために使用される。例えば、N個のフィールドの値が1であり得る場合、SFノードはNATタイプのSFノードであることを指示し、SFノードのサービス機能はフロー識別子の修正を含む。このようにして、N個のフィールドの値が1であると識別されるとき、2つのプロキシノードのキャッシュエントリの識別子間のマッピング関係が維持される必要がある。
段階3606:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
段階3607:第2プロキシノードは第2パケットを解析して第1パケットのSRHを取得する。
段階3608:第2プロキシノードが、SFノードのサービス機能はフロー識別子の修正を含むと判定する。
第2プロキシノードの判定段階は、第1プロキシノードの判定段階と同一である。詳細については段階3602を参照されたい。ここでは詳細について再び説明しない。
段階3609:第2プロキシノードが、第2キャッシュエントリの識別子をインデックスとして使用することによって第1パケットのSRHを第2キャッシュエントリに記憶する。
第2キャッシュエントリの識別子は、第2プロキシノードのキャッシュにおける第2キャッシュエントリを一意に識別するために使用される。第2キャッシュエントリの識別子は、第2キャッシュエントリのキャッシュインデックス(cache Index)を含み得、キャッシュインデックスは、第2プロキシノードのインタフェースボード上の対応する第2キャッシュエントリを識別するために使用される。実施形態において、第2プロキシノードは複数のインタフェースボードを含み得る。この場合、第2キャッシュエントリの識別子は更に、対象ボードの識別子を含み得、対象ボードは、第2キャッシュエントリが位置するインタフェースボードであり、対象ボードの識別子は、第2プロキシノードの各インタフェースボードにおける対象ボードを識別するために使用される。加えて、第2プロキシノードの記憶段階は第1プロキシノードの記憶段階と同一である。詳細については、段階3603を参照されたい。ここでは詳細について再び説明しない。
実施形態において、第2プロキシノードは、第2パケットにおける制御情報に基づいて、制御情報が、第1パケットのSRHを記憶するよう、および、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示していると判定し得る。この場合、第2プロキシノードは、第1キャッシュエントリの識別子を第2パケットから取得し、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶し得る。例えば、第1プロキシノードがSRHをTB1に記憶する場合、TB1上のSRHのキャッシュインデックスはキャッシュインデックス1であり、第2プロキシノードはSRHをTB2に記憶し、TB2上のSRHのキャッシュインデックスはキャッシュインデックス2であり、第1キャッシュエントリの識別子は(TB1、キャッシュインデックス1)であり、第2キャッシュエントリの識別子は(TB2、キャッシュインデックス2)であり、第2プロキシノードによって記憶されたマッピング関係は、(TB1、キャッシュインデックス1、TB2、キャッシュインデックス2)を含み得る。
第2プロキシノードは、第2パケットにおける第1フラグの値、第2パケットにおける第2フラグの値、および、第2パケットにおける第3フラグの値を識別し得、第1フラグの値が1に設定される場合、第2フラグの値は0に設定され、第3フラグの値が1に設定される場合、制御情報が、第1パケットのSRHを記憶するように、および、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう指示していると判定し得る。
段階3610:第1プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階3611:第1プロキシノードが第3パケットをSFノードへ送信する。
第3パケットは第1キャッシュエントリの識別子を含み得る。例えば、第1キャッシュエントリの識別子は第3パケットのペイロードに保持され得る。第3パケットは第1キャッシュエントリの識別子を保持し、その結果、SFノードによって受信されたパケットは、第1キャッシュエントリの識別子を保持する。この場合、SFノードがパケットに対してサービス処理を実行した後に、取得されたパケットはまた、第1キャッシュエントリの識別子を保持し、その結果、SFノードによってプロキシノードへ返されたパケットは、第1キャッシュエントリの識別子を保持する。このようにして、プロキシノードは、返されたパケットにおける第1キャッシュエントリの識別子を使用することによって、SRHが以前に記憶されたキャッシュエントリを発見し得る。
段階3612:SFノードが第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階3613:SFノードが第4パケットを第2プロキシノードへ送信する。
段階3614:第2プロキシノードが、第4パケットをSFノードから受信し、第2キャッシュエントリの識別子をインデックスとして使用することによって第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
いくつかの実施形態において、第4パケットは、第1キャッシュエントリの識別子およびペイロードを含み得る。第2プロキシノードは、第1キャッシュエントリの識別子に基づいて、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係をクエリし、第1キャッシュエントリの識別子に対応する、第2キャッシュエントリの識別子を取得し得る。例えば、第2パケットにおける、第1キャッシュエントリの識別子が(TB1、キャッシュインデックス1)であり、かつ、第2プロキシノードによって記憶されたマッピング関係が(TB1、キャッシュインデックス1、TB2、キャッシュインデックス2)を含む場合、第2プロキシノードは、(TB1、キャッシュインデックス1)に基づいてマッピング関係をクエリして(TB2、キャッシュインデックス2)を取得し、キャッシュインデックス2に対応するキャッシュエントリをTB2から検索し、第1パケットのSRHをキャッシュエントリから取得する。
段階3615:第2プロキシノードは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットは、第4パケットのペイロードおよび第1パケットのSRHを含む。
段階3616:第2プロキシノードが第5パケットをルーティングノードへ送信する。
段階3617:ルーティングノードが第5パケットを第2プロキシノードから受信し、第5パケットを転送する。
関連する技術において、SRv6 SFC上の動的プロキシノードは通常、パケットの5タプルをキーとして使用することによって、パケットのSRHをキャッシュエントリに記憶し、SFノードによって返されたパケットを受信した後に、パケットの5タプルをキーとしてなお使用することによって、対応するキャッシュエントリについてキャッシュにクエリする。この場合、SFノードのサービス機能がNATを実行している場合、SFノードはパケット処理プロセスにおいてパケットの5タプルを修正するので、SFノードによって返されたパケットの5タプルは以前に受信されたパケットの5タプルと異なり、すなわち、プロキシノードによってSFノードから受信されたパケットの5タプルは、以前にSFノードへ送信されたパケットの5タプルと異なる。この場合、プロキシノードが受信されたパケットに基づいてキャッシュをクエリしたとき、キャッシュがクエリされたときに使用されるキーは、SRHがキャッシュに記憶されるときに使用されるキーと異なるので、SRHを発見できず、SRHをパケットに復元できない。その結果、パケット伝送が失敗する。例えば、プロキシノードは以前に、5タプル1をキーとして使用することによってSRHを記憶し、パケットの5タプルはSFノードによって5タプル1から5タプル2へ変更される。プロキシノードが5タプル2をキーとして使用することによってキャッシュをクエリするとき、SRHを取得できない。
本実施形態において提供される方法によれば、プロキシノードは、SFノードのサービス機能がフロー識別子の修正を含むと判定することによって、および、SRHが記憶されるキャッシュエントリの識別子をキーとして使用することによって、パケットSRHを記憶する。この場合、SFノードが、フロー識別子が修正されたパケットをプロキシノードへ返す場合、SRHが記憶されたキャッシュエントリは通常、プロキシノードについて固定され、フロー識別子の修正に伴って変化しないので、SRHが記憶されるときに使用されるキャッシュエントリの識別子は、SRHがクエリを通じて取得されるときに使用されるキャッシュエントリの識別子と同一であり得る。このようにして、キャッシュエントリの識別子はインデックスとして使用され、その結果、フロー識別子が修正されたパケットのSRHはクエリを通じて取得され得、SRHは、フロー識別子が修正されたパケットに復元される。この方式により、SFノードがNAT機能を有するSFノードである場合でも、パケットに対応するフロー識別子はパケット伝送プロセスにおいて変更されるとき、プロキシノードはまた、SRHを復元し得る。このようにして、プロキシノードは、NAT機能を有するSFノードへのアクセスをサポートして、NAT機能を実装するSFノードに動的プロキシ機能を提供し得る。
上記の方法の実施形態において、NATシナリオは、自己送信および他の受信手順に基づいてサポートされる。本願の本実施形態において、NATシナリオは更に、自己送信および自己受信手順に基づいてサポートされ得る。具体的な説明は、図37Aおよび図37Bに示される以下の方法の実施形態を使用することによって以下で提供される。図37Aおよび図37Bにおける実施形態は主に、図36Aおよび図36Bにおける実施形態との相違点に焦点を当てることに留意されたい。図36Aおよび図36Bにおける実施形態と同様の段階については、図36Aおよび図36Bにおける実施形態を参照されたい。詳細は図37Aおよび図37Bにおける実施形態において説明されない。
図37Aおよび図37Bは、本願の実施形態によるパケット伝送方法のフローチャートである。図37Aおよび図37Bに示されるように、方法のインタラクション主体は、第1プロキシノード、第2プロキシノード、SFノード、およびルーティングノードを含む。方法は以下の段階を備え得る。
段階3701:ルーティングノードが第1パケットを第1プロキシノードへ送信する。
段階3702:第1プロキシノードが第1パケットをルーティングノードから受信し、第1プロキシノードは、SFノードのサービス機能がフロー識別子の修正を含むと判定する。
段階3703:第1プロキシノードが、第1キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを第1キャッシュエントリに記憶する。
段階3704:第1プロキシノードが、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて、第2パケットを生成する。
段階3705:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
段階3706:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
段階3707:第2プロキシノードが第2パケットを解析して、第1パケットのSRHを取得する。
段階3708:第2プロキシノードが、SFノードのサービス機能がフロー識別子の修正を含むと判定する。
段階3709:第2プロキシノードが、第2キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
段階3710:第1プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階3711:第1プロキシノードが第3パケットをSFノードへ送信する。
第2パケットは更に第1キャッシュエントリの識別子を含む。本実施形態において、制御情報は更に、第1キャッシュエントリの識別子と、第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示するために使用され、第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。
段階3712:SFノードが、第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階3713:SFノードが第4パケットを第1プロキシノードへ送信し、第4パケットは、第1キャッシュエントリの識別子およびペイロードを含む。
段階3714:第1プロキシノードが第4パケットをSFノードから受信し、第1キャッシュエントリの識別子をインデックスとして使用することによって第1キャッシュエントリにクエリして第1パケットのSRHを取得する。
この段階は、段階3614とは異なり得る。第4パケットにおける、キャッシュエントリの識別子は、ローカルキャッシュに対応する。
このようにして、第1プロキシノードは、ローカルキャッシュエントリとピアキャッシュエントリとの間のマッピング関係をクエリする段階をスキップし、第1キャッシュエントリの識別子を第4パケットから取得し、第1キャッシュエントリの識別子をキーとして使用することによってキャッシュをクエリして第1キャッシュエントリを発見し得る。
段階3715:第1プロキシノードは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。
段階3716:第1プロキシノードが第5パケットをルーティングノードへ送信する。
段階3717:ルーティングノードが第5パケットを第1プロキシノードから受信し、第5パケットを転送する。
本実施形態において提供される方法によれば、プロキシノードは、SFノードのサービス機能がフロー識別子の修正を含むと判定することによって、および、SRHが記憶されるキャッシュエントリの識別子をキーとして使用することによって、パケットSRHを記憶する。この場合、SFノードが、フロー識別子が修正されたパケットをプロキシノードへ返す場合、SRHが記憶されたキャッシュエントリは通常、プロキシノードについて固定され、フロー識別子の修正に伴って変化しないので、SRHが記憶されるときに使用されるキャッシュエントリの識別子は、SRHがクエリを通じて取得されるときに使用されるキャッシュエントリの識別子と同一であり得る。このようにして、キャッシュエントリの識別子はインデックスとして使用され、その結果、フロー識別子が修正されたパケットのSRHはクエリを通じて取得され得、SRHは、フロー識別子が修正されたパケットに復元される。この方式により、SFノードがNAT機能を有するSFノードである場合でも、パケットに対応するフロー識別子はパケット伝送プロセスにおいて変更されるとき、プロキシノードはまた、SRHを復元し得る。このようにして、プロキシノードは、NAT機能を有するSFノードへのアクセスをサポートして、NAT機能を実装するSFノードに動的プロキシ機能を提供し得る。
上記の方法の実施形態は、NATシナリオをサポートするパケット伝送手順を説明する。本願の本実施形態において提供される方法は更にSRv6 VPNシナリオをサポートし得る。SRv6 VPNにおいて、VPNデータは、SRv6トンネルに基づいて伝送される。SRv6 VPNシナリオにおいて、サービスチェーン上のSFノードは、VPNデータを処理してVPNサービスを実装する必要がある。このシナリオにおいて、プロキシノードは、VPNサービスを実装するSFノードをサポートし、以下の方法の実施形態を実行することによって、VPNサービスを実装するSFノードに動的プロキシサービスを提供し得る。以下では、図38Aおよび図38Bに示される以下の方法の実施形態を使用することによって、VPNシナリオにおけるパケット伝送手順を説明する。図38Aおよび図38Bにおける実施形態は主に、図5Aおよび図5Bにおける実施形態からの相違点に焦点を当てることに留意されたい。図5Aおよび図5Bにおける実施形態または他の特徴と同様の段階については、図5Aおよび図5Bにおける実施形態を参照されたい。詳細は、図38Aおよび図38Bにおける実施形態において説明されない。
図38Aおよび図38Bは、本願の実施形態によるパケット伝送方法のフローチャートである。方法は以下の段階を含み得る。
段階3801:ルーティングノードは第1パケットを第1プロキシノードへ送信する。
段階3802:第1プロキシノードが、第1パケットをルーティングノードから受信し、第1プロキシノードが、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを第1キャッシュエントリに記憶する。
第1プロキシノードは複数のSFノードにアクセスし得、複数のSFノードは異なるVPNに属し得る。このようにして、第1プロキシノードが複数のSFノードのために動的プロキシサービスを共同で提供するプロセスにおいて、第1プロキシノードは、異なるVPNへ送信されるパケットを受信し得る。異なるVPNにおけるパケットは同一のフロー識別子に対応し得る。その結果、フロー識別子をインデックスとして使用することによってSRHが記憶される場合、異なるVPNにおけるパケットのSRHのインデックスは同一であり、その結果、異なるVPNにおけるパケットのSRHは、同一の場所に記憶される。この場合、異なるVPN間の情報隔離を実装できず、セキュリティに影響が生じる。加えて、同一のインデックスがキャッシュにおける複数のSRHにヒットするので、パケットに復元するために特定のSRHを判定することができず、その結果、SRH復元が失敗する。
本実施形態において、対応するEnd.AD SIDは、各VPNにおけるSFノードに事前に割り当てられ得、異なるVPNにおけるSFノードは異なるEnd.AD SIDに対応する。End.AD SIDを割り当てるこの方式により、End.AD SIDは、VPN識別子として使用され得、異なるVPNにおけるSFノードへ送信されたパケットは、異なるEnd.AD SIDを保持し、異なるVPNにおけるパケットは、異なるEnd.AD SIDに基づいて区別され得る。例えば、第1プロキシノードが10のSFノード、すなわち、SFノード0、SFノード1、...およびSFノード9にアクセスする場合、10のSFノードは、2つの異なるVPNに別個に属し、ここで、SFノード0からSFノード5はVPN1に属し、SFノード6からSFノード9はVPN2に属する。この例において、2つのEnd.AD SIDが10のSFノードに割り当てられ得、1つのEnd.AD SIDがSFノード0からSFノード5に割り当てられ、他のEnd.AD SIDがSFノード6からSFノード9に割り当てられる。このようにして、パケットが送信されたVPNを、パケットにおけるEnd.AD SIDである、2つのEnd.AD SIDのうちの特定のEnd.AD SIDに基づいて識別され得る。例えば、SFノード0からSFノード5に割り当てられたEnd.AD SIDは、A::1であり得、SFノード6からSFノード9に割り当てられたEnd.AD SIDは、B::2であり得る。この場合、パケット1およびパケット2が受信され、かつ、パケット1に保持されるEnd.AD SIDはA::1であり、かつ、パケット2に保持されるEnd.AD SIDはB::2である場合、パケット1はVPN1に対応するパケットであり、パケット2はVPN2に対応するパケットであることを指示する。
異なるVPNにおけるSFノードへ送信されたパケットは異なるEnd.AD SIDを保持する。このようにして、SRHは、フロー識別子およびEnd.AD SIDをインデックスとして使用することによって記憶され、その結果、異なるVPNにおけるパケットのインデックスは、異なるEnd.AD SIDに基づいて区別され得、異なるVPNのパケットのSRHが別個に記憶されることを確実にし、異なるVPN間の情報隔離を実装し、同一のインデックスが複数のVPNにおけるパケットにヒットする場合を回避し、それにより、上記の技術的問題を解決する。
加えて、第1プロキシノードによってアクセスされたSFノードは、公共のネットワークおよびVPNに別個に属し得、対応するEnd.AD SIDは、公共ネットワークにおけるSFノードおよびVPNにおけるSFノードに別個に割り当てられ得る。公共ネットワークにおけるSFノードに対応するEnd.AD SIDは、VPNにおけるSFノードに対応するEnd.AD SIDと異なる。例えば、第1プロキシノードによってアクセスされる10のSFノードにおいて、SFノード0からSFノード4は公共ネットワークに属し、SFノード5からSFノード9はVPN1に属する。この例において、2つのEnd.AD SIDは10のSFノードに割り当てられ得、1つのEnd.AD SIDはSFノード0からSFノード4に割り当てられ、他のEnd.AD SIDはSFノード5からSFノード9に割り当てられる。この割り当て方式において、SRHは、フロー識別子およびEnd.AD SIDをインデックスとして使用することによって記憶され、公共ネットワークにおけるパケットのSRHおよびVPNにおけるパケットのSRHが別個に記憶されることを確実にし、同一のインデックスが公共ネットワークにおけるパケットおよびVPNにおけるパケットにヒットする場合を回避する。
段階3803:第1プロキシノードが、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
段階3804:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
段階3805:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
段階3806:第2プロキシノードが第2パケットを解析して第1パケットのSRHを取得する。
段階3807:第2プロキシノードが、第2パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDに基づいて、第1パケットのSRHを第2キャッシュエントリに記憶し、第2パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり得る。
第2パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり得る。例えば、第2パケットは5タプルを含み得、第2パケットにおける5タプルは、第1パケットにおける5タプルと同一である。第2パケットは、End.AD SIDを含み得る。例えば、第2パケットは、第1パケットのSRHを含み得、第1パケットのSRHは、End.AD SIDを含み得る。このようにして、第2プロキシノードは、第1パケットに対応するフロー識別子およびEnd.AD SIDを第2パケットから取得し得る。VPN識別子は、サービス機能ノードが属するVPNを識別するために使用される。異なるVPNは異なるVPN識別子を有する。このようにして、異なるVPNは、VPN識別子に基づいて区別され得る。例えば、VPN識別子はVLAN IDであり得る。VPN識別子は第2プロキシノードに予め記憶され得る。
SRHは、複数の方式で、フロー識別子およびEnd.AD SIDに基づいて記憶され得る。方式1および方式2の例を以下で説明する。
方式1:第2プロキシノードが、第1パケットに対応するフロー識別子およびEnd.AD SIDをインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
異なるVPNにおけるパケットについては、異なるVPNにおけるパケットは同一のフロー識別子を有し得るとみなし、SRHがフロー識別子をインデックスとして使用することのみによって記憶される場合、インデックスは同一なので、異なるVPNにおけるパケットは、同一の場所に記憶され得る。その結果、異なるVPN間の情報隔離を実装できない。方式1において、異なるVPNにおけるパケットが同一のフロー識別子に対応する場合でも、異なるVPNにおけるパケットは異なるEnd.AD SIDに対応するので、異なるVPNにおけるパケットに対応するインデックスがEnd.AD SIDに基づいて区別され得ることが確実にされ得る。このようにして、異なるVPNにおけるパケットのSRHが異なる場所に記憶されることが確実にされ得、異なるVPN間の情報隔離が実装される。
方式2:第2プロキシノードが、第1パケットに対応するフロー識別子、End.AD SID、およびVPN識別子をインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
異なるVPNにおけるパケットについては、異なるVPNにおけるパケットは同一のフロー識別子を有し得るとみなし、SRHがフロー識別子をインデックスとして使用することのみによって記憶される場合、インデックスは同一なので、異なるVPNにおけるパケットは、同一の場所に記憶され得る。その結果、異なるVPN間の情報隔離を実装できない。方式2において、異なるVPNにおけるパケットが同一のフロー識別子に対応する場合でも、異なるVPNにおけるパケットは異なるEnd.AD SIDおよび異なるVPN識別子に対応するので、異なるVPNにおけるパケットに対応するインデックスは、End.AD SIDおよびVPN識別子に基づいて区別され得ることが確実にされ得る。このようにして、異なるVPNにおけるパケットのSRHが異なる場所に記憶されることが確実にされ得、異なるVPN間の情報隔離が実装される。
段階3808:第1プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階3809:第1プロキシノードが、第3パケットをSFノードへ送信する。
第3パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子と同一であり得、第3パケットはVPN識別子を含み得る。実施形態において、第1プロキシノードはSFノードとの伝送トンネルを確立し得る。第1プロキシノードは、伝送トンネルに対応するトンネルヘッダを生成し、トンネルヘッダをカプセル化し得、その結果、第3パケットはトンネルヘッダを含み、トンネルヘッダはVPN識別子を含み得る。
段階3810:サービス機能ノードが第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階3811:サービス機能ノードが第4パケットを第2プロキシノードへ送信する。
段階3812:第2プロキシノードが第4パケットをSFノードから受信し、VPN識別子、End.AD SID、および第4パケットに対応するフロー識別子に基づいて第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
第2プロキシノードは、複数の方式で、クエリを通じてSRHを取得し得る。例えば、クエリを通じてSRHを取得する方式は、方式1または方式2を含み得る。
方式1は具体的には、段階1および段階2を含み得る。
段階1:第2プロキシノードは、VPN識別子に基づいて、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をクエリして、VPN識別子に対応するエンドポイント動的プロキシSIDを取得する。
第4パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり得、第4パケットはVPN識別子およびペイロードを含む。第2プロキシノードは、第4パケットからVPN識別子を取得、VPN識別子に基づいてEnd.AD SIDとVPN識別子との間のマッピング関係をクエリし、VPN識別子に対応する特定のEnd.AD SIDを発見し得る。例えば、End.AD SID A::1とVLAN ID100との間にマッピング関係があり、かつ、End.AD SID A::2とVLAN ID200との間にマッピング関係がある場合、第4パケットに保持されるVPN識別子が100であるとき、第2プロキシノードは、100に基づいてマッピング関係をクエリしてA::1を取得する。
第2プロキシノードがEnd.AD SIDとVPN識別子との間のマッピング関係を記憶するプロセスにおいて、実施形態において、各VPNにおけるSFノードに割り当てられたEnd.AD SIDを構成するために構成動作が第2プロキシノードに対して実行され得る。第2プロキシノードは、構成命令を受信し得る。第2プロキシノードは、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶し得る。ここで、構成命令は、各VPNにおけるSFノードに対応するEnd.AD SIDを含む。第2プロキシノードは構成命令を解析して、構成命令に保持される、各VPNにおけるSFノードに対応するEnd.AD SIDを取得し得る。例えば、第2プロキシノードが2つのVLANにおけるSFノードにアクセスし、かつ、2つのVLANがそれぞれ、VLAN ID100およびVLAN ID200を使用することによって識別される場合、2つのEnd.AD SIDは第2プロキシノード上で事前構成され得、例えば、A::1は、VLAN ID100を有するVLANにおけるSFノードに割り当てられ、A::2は、VLAN ID200を有するVLANにおけるSFノードに割り当てられ、A::1と100との間のマッピング関係、および、A::2と200との間のマッピング関係が記憶され得る。当然、End.AD SIDとVPN識別子との間のマッピング関係が上記の方式で記憶されることは単に例である。第2プロキシノードは代替的に、End.AD SIDとVPN識別子との間のマッピング関係を別の方式で、例えば、End.AD SIDとVPN識別子との間のマッピング関係を自動的に認識することによって、または、End.AD SIDとVPN識別子との間のマッピング関係をコントローラから受信することによって記憶し得る。
フロー識別子およびEnd.AD SIDの両方はインデックスとして使用され、その結果、異なるVPNにおけるパケットのインデックスはEnd.AD SIDに基づいて区別されることが確実にされ得る。このようにして、同一のインデックスが複数のVPNにおけるパケットのSRHにヒットする場合が回避され得、クエリ正確性を確実にする。
段階2:第2プロキシノードが、第4パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
方式2:第2プロキシノードが、End.AD SID、VPN識別子、および、第4パケットに対応するフロー識別子をインデックスとして使用することによって、第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
フロー識別子、End.AD SID、およびVPN識別子は、インデックスとして使用され、その結果、異なるVPNにおけるパケットのインデックスは、End.AD SIDおよびVPN識別子に基づいて区別されることが確実にされ得る。このようにして、同一のインデックスが複数のVPNにおけるパケットのSRHにヒットする場合を回避でき、クエリ正確性を確実にする。
段階3813:第2プロキシノードは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットは、第4パケットのペイロードおよび第1パケットのSRHを含む。
段階3814:第2プロキシノードが第5パケットをルーティングノードへ送信する。
段階3815:ルーティングノードが第5パケットを第2プロキシノードから受信し、第5パケットを転送する。
この実施形態は、SRv6 VPNシナリオにおいて動的プロキシサービスを提供するための方法を提供する。対応するEnd.AD SIDが各VPNにおけるSFノードに割り当てられ、End.AD SIDはVPN識別子として使用され得る。このようにして、プロキシノードは、フロー識別子およびEnd.AD SIDに基づいてSRHを記憶し、その結果、異なるVPNにおけるパケットのSRHのインデックスを異なるEnd.AD SIDに基づいて区別でき、異なるVPNにおけるパケットのSRHのインデックスが異なることを確実にする。このようにして、異なるVPNにおけるパケットのSRHが別個に記憶され、異なるVPN間の情報隔離を実装し、同一のインデックスが複数のVPNにおけるパケットのSRHにヒットする場合を回避して、クエリ正確性を確実にする。
上記の方法の実施形態において、VPNシナリオは、自己送信および他の受信手順に基づいてサポートされる。本願の本実施形態において、VPNシナリオは更に、自己送信および自己受信手順に基づいてサポートされ得る。図39Aおよび図39Bに示される以下の方法の実施形態を使用することによって、具体的な説明を以下において提供する。図39Aおよび図39Bにおける実施形態は主に、図38Aおよび図38Bにおける実施形態との相違点に焦点を当てることに留意されたい。図38Aおよび図38Bにおける実施形態と同様の段階については、図38Aおよび図38Bにおける実施形態を参照されたい。図39Aおよび図39Bにおける実施形態において詳細は説明されない。
図39Aおよび図39Bは、本願の実施形態によるパケット伝送方法のフローチャートである。方法は以下の段階を備え得る。
段階3901:ルーティングノードが第1パケットを第1プロキシノードへ送信する。
段階3902:第1プロキシノードが、第1パケットをルーティングノードから受信し、第1プロキシノードが、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDに基づいて第1パケットのSRHを第1キャッシュエントリに記憶する。
第1プロキシノードはSRHを複数の方式で記憶し得る。方式1および方式2の例を下で説明する。
方式1:第1プロキシノードが、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
方式2:第1プロキシノードが、第1パケットに対応するフロー識別子、エンドポイント動的プロキシSID、およびVPN識別子をインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
段階3903:第1プロキシノードが、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
段階3904:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
段階3905:第2プロキシノードが、第2パケットを第1プロキシノードから受信し、制御情報が第2プロキシノードに第1パケットのSRHを記憶するように指示していると判定する。
段階3906:第2プロキシノードが第2パケットを解析して第1パケットのSRHを取得する。
段階3907:第2プロキシノードが、第2パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDに基づいて、第1パケットのSRHを第2キャッシュエントリに記憶し、第2パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子である。
第2プロキシノードはSRHを複数の方式で記憶し得る。方式1および方式2の例を下で説明する。
方式1:第2プロキシノードが、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
方式2:第2プロキシノードが、第1パケットに対応するフロー識別子、エンドポイント動的プロキシSID、およびVPN識別子をインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
段階3908:第1プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階3909:第1プロキシノードが第3パケットをSFノードへ送信する。
段階3910:SFノードが第3パケットを第1プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階3911:SFノードが、第4パケットを第1プロキシノードへ送信する。
段階3912:第1プロキシノードが、第4パケットをSFノードから受信し、VPN識別子、エンドポイント動的プロキシSID、および、第4パケットに対応するフロー識別子に基づいて、第1キャッシュエントリをクエリして、第1パケットのSRHを取得する。
第4パケットに対応するフロー識別子は第1パケットに対応するフロー識別子である。
第1プロキシノードは複数の方式のクエリを通じてSRHを取得し得る。方式1および方式2の例を下で説明する。
方式1は段階1および段階2を含み得る。
段階1:第1プロキシノードは、VPN識別子に基づいて、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をクエリして、VPN識別子に対応するエンドポイント動的プロキシSIDを取得する。
段階2:第1プロキシノードが、第4パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって第1キャッシュエントリをクエリし、第1パケットのSRHを取得する。
方式2:第1プロキシノードが、VPN識別子、エンドポイント動的プロキシSID、および、第4パケットに対応するフロー識別子をインデックスとして使用することによって、第1キャッシュエントリをクエリして、第1パケットのSRHを取得する。
段階3912は、段階3907における方式2の場合に固有である。
段階3913:第1プロキシノードは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットは、第4パケットのペイロードおよび第1パケットのSRHを含む。
段階3914:第1プロキシノードが第5パケットをルーティングノードへ送信する。
段階3915:ルーティングノードが第5パケットを第1プロキシノードから受信して第5パケットを転送する。
本実施形態は、SRv6 VPNシナリオにおいて動的プロキシサービスを提供するための方法を提供する。対応するEnd.AD SIDは、各VPNにおけるSFノードに割り当てられ、End.AD SIDはVPN識別子として使用され得る。このようにして、プロキシノードは、フロー識別子およびEnd.AD SIDをインデックスとして使用することによってSRHを記憶し、その結果、異なるVPNにおけるパケットのSRHのインデックスを異なるEnd.AD SIDに基づいて区別でき、異なるVPNにおけるパケットのSRHのインデックスが異なることを確実にする。このようにして、異なるVPNにおけるパケットのSRHが別個に記憶され、異なるVPN間の情報隔離を実装し、同一のインデックスが複数のVPNにおけるパケットのSRHにヒットする場合を回避して、クエリ正確性を確実にする。
上記の方法の実施形態は通常の状態でパケット伝送方法を提供する。本願の本実施形態において提供される方法は更に、障害シナリオをサポートし得る。プロキシノードに障害がある、または、プロキシノードに接続されたリンクに障害があるときも、動的プロキシサービスが提供され得、通常のパケット伝送を確実にする。例えば、図40を参照されたい。2つのリンク、すなわち、プロキシノード1とSFノードとの間のリンク、および、プロキシノード2とSFノードとの間のリンクが冗長リンクを形成し得る。プロキシノード1とSFノードとの間のリンクに障害があるとき、トラフィックはバイパス方式でプロキシノード2に伝送され得る。動的プロキシ動作が、プロキシノード2によってトラフィックに対して実行され、トラフィックは、プロキシノード2を通じてSFノードへ継続的に伝送される。
以下では、図41Aおよび図41Bに示される以下の方法の実施形態を使用することによって、障害シナリオにおける伝送手順を詳細に説明する。図41Aおよび図41Bにおける実施形態は主に、上記の実施形態との相違点に焦点を当てることに留意されたい。上記の実施形態と同様の段階については、上記の説明を参照されたい。図41Aおよび図41Bにおける実施形態では、詳細は説明されない。
図41Aおよび図41Bは、本願の実施形態によるパケット伝送方法のフローチャートである。方法は以下の段階を含み得る。
段階4101:ルーティングノードが第1パケットを第1プロキシノードへ送信する。
段階4102:第1プロキシノードが第1パケットをルーティングノードから受信し、障害イベントを検出する。
障害イベントは2つの種類を含み得る。一方の種類はリンク障害であり、他方の種類はノード障害である。2種類のいずれかで障害イベントを検出するとき、第1プロキシノードは、本実施形態において提供される方法を実行することによって、動的プロキシ処理が実行される予定のパケットを再カプセル化し、再カプセル化されたパケットを第2プロキシノードへ転送し得、第1プロキシノードの代わりに動的プロキシ動作を実行するよう第2プロキシノードに指示し、再カプセル化されたパケットをSRHから除去し、再カプセル化されたパケットのペイロードをSFノードへ伝送する。
障害イベントは、第1プロキシノードとSFノードとの間のリンクに障害があるイベント、または、第1プロキシノードに障害があるイベントの少なくとも1つを含む。図3および図4を参照されたい。第1プロキシノードとSFノードとの間のリンクに障害があるイベントは、第4リンクに障害があるイベントであり得る。例えば、第1プロキシノードは、第3アウトバウンドインタフェースを通じてSFノードに接続され得、第1プロキシノードは、第3アウトバウンドインタフェースを通じて第4リンクへパケットを伝送し得、第1プロキシノードは、第3アウトバウンドインタフェースのステータスを検出し得る。第3アウトバウンドインタフェースのステータスがダウン(down)である場合、第1プロキシノードは、第4リンクに障害があるイベントを検出する。
実施形態において、双方向転送検出(Bidirectional forwarding detection, BFD)機構が第1プロキシノード上で事前に展開され得る。BFD機構は、リンクの転送接続性ステータス、または、ネットワークにおけるIPルートを迅速に検出および監視するために使用される。BFD機構が展開され、その結果、第1プロキシノードが、第4リンクが接続状態にあるかどうかをリアルタイムに監視し、第4リンクの障害を迅速に検知することを確実にし得る。可能な実装において、BFD機構を展開するプロセスは、第1プロキシノードに対して構成動作を実行すること、および、第1プロキシノードによって、構成命令を受信し、構成命令に従って、第3アウトバウンドインタフェースについてBFDを有効にし、SFノードとのBFDセッションを確立することを含み得る。BFDセッションを確立した後に、第1プロキシノードは、予め定められた期間の間隔で、第3アウトバウンドインタフェースを通じてBFDパケットを送信する。返されたBFD応答パケットが、予め定められた期間内に受信されない場合、第4リンクに障害があると判定され得る。
本実施形態においては、障害イベントが検出される前に第1パケットが受信される例を使用することによって説明が提供されることが理解されるべきである。別の実施形態において、第1プロキシノードは代替的に、第1パケットを受信する前に障害イベントを検出し得る、または、第1プロキシノードは、第1パケットを受信するときに障害イベントを検出する。第1パケットを受信すること、および、障害イベントを検出することの2つの段階の時系列は本実施形態において限定されない。
段階4103:第1プロキシノードが第1パケットのSRHを第1キャッシュエントリに記憶する。
段階4104:第1プロキシノードが、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する。
本実施形態において、第2パケットは、第1パケットのバイパスパケットとみなされ得、第2パケットはデータパケットであり得る。第2パケットは、第1パケットのペイロードを含む。加えて、第1パケットのSRHを記憶するように第2プロキシノードに指示するために、第2パケットにおける制御情報は更に、第1パケットのペイロードをサービス機能ノードへ送信するよう第2プロキシノードに指示し得る。任意選択的に、制御情報は第1フラグおよび第2フラグを含み得る。図41Aおよび図41Bにおける実施形態において、第1フラグの値が0に設定され得る場合、パケットはコピーされたパケットではなく、通常はデータパケットであることを指示する。パケットを受信した後に、受信端は、パケットのペイロードを転送する必要がある。制御情報における第2フラグの値が0に設定され得る場合、パケットは確認応答パケットでないことを指示する。
任意選択的に、本実施形態における第2パケットを生成するためのトリガ条件は、図5Aおよび図5Bにおける実施形態において第2パケットを生成するためのトリガ条件と異なり得る。図5Aおよび図5Bにおける実施形態において、第2パケットを生成するためのトリガ条件は、第1キャッシュエントリが生成または更新されたと検出すること、または、現在の時点において第2パケットの送信期間が経過したと検出することであり得る。第2パケットの数は、第1パケットの数と著しく異なり得る。例えば、1のデータフローはNの第1パケットを含み、Nの第1パケットのSRHは通常、同一である可能性が高い。この場合、図5Aおよび図5Bにおける実施形態において、第1プロキシノードは、1のSRHを記憶するために、1のデータフローについて1のキャッシュエントリを生成し得る。このようにして、データフローは合計1の第2パケットをトリガする。各第1パケットのペイロードは、第1プロキシノードによってSFノードへ伝送され得る。しかしながら、本実施形態において、ノード障害またはリンク障害が第1プロキシノード上で生じるので、各第1パケットのペイロードが対応する第2パケットに保持され得、その結果、各第1パケットのペイロードが第2プロキシノードへ伝送され、各第1パケットのペイロードは、第2プロキシノードを通じてSFノードへ伝送される。この場合、第2パケットを生成するためのトリガ条件は以下の通りであり得る。1の第1パケットが受信されるたびに、1の第2パケットが対応して生成され、第2パケットの数は、第1パケットの数とほぼ同一であり得る。
段階4105:第1プロキシノードが第2パケットを第2プロキシノードへ送信する。
段階4106:第2プロキシノードが第2パケットを第1プロキシノードから受信し、制御情報が、第1パケットのSRHを記憶するように、および、第2パケットのペイロードをSFノードへ送信するように第2プロキシノードに指示していると判定し、第2パケットのペイロードは第1パケットのペイロードである。
例えば、第2プロキシノードは、第2パケットにおける第1フラグの値、および、第2パケットにおける第2フラグの値を識別し得、第1フラグの値が0に設定され、かつ、第2フラグの値が0に設定される場合、制御情報が、第1パケットのSRHを記憶するように、および、第2パケットのペイロードを送信するように指示していると判定する。
段階4107:第2プロキシノードが第2パケットを解析して第1パケットのSRHを取得する。
段階4108:第2プロキシノードが第1パケットのSRHを第2キャッシュエントリに記憶する。
段階4109:第2プロキシノードが第2パケットに基づいて第3パケットを生成する。
第3パケットは第1パケットのペイロードを含み、第2プロキシノードによって生成された第3パケットは、図5Aおよび図5Bにおける実施形態において第1プロキシノードによって生成された第3パケットと同一であり得る。実施形態において、段階4109は段階1および段階2を含み得る。
段階1:第2プロキシノードが第2パケットを第1パケットに復元する。
実施形態において、第2プロキシノードは、第1バイパスSIDを第2パケットのSRHから削除し、第2パケットのSRHのSLを1減少させ、第2パケットの宛先アドレスをエンドポイント動的プロキシSIDに更新して第1パケットを取得し得る。
段階2:第2プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階2は段階508と同様である。ここでは詳細を説明しない。
本実施形態において、段階4108の前に段階4107が実行される例を使用することによって説明が提供されることが理解されるべきである。別の実施形態において、第1プロキシノードは代替的に、段階4107の前に段階4108を実行し得る、または、第1プロキシノードは、段階4107を実行するときに段階4108を実行する。段階4107および段階4108の時系列は本実施形態において限定されない。
段階4110:第2プロキシノードが第3パケットをSFノードへ送信する。
第2プロキシノードが第3パケットを転送する手順は、図5Aおよび図5Bにおける実施形態において第1プロキシノードが第3パケットを転送する手順と同一である。ここでは詳細を説明しない。
段階4111:SFノードが第3パケットを第2プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階4112:SFが第4パケットを第2プロキシノードへ送信する。
段階4113:第2プロキシノードが、第4パケットをSFノードから受信し、第4パケットに基づいて第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
段階4114:第2プロキシノードが、第4パケットおよび第1パケットのSRHに基づいて、第5パケットを生成する。
段階4115:第2プロキシノードが、第5パケットをルーティングノードへ送信する。
段階4116:ルーティングノードが第5パケットを第2プロキシノードから受信し、第5パケットを転送する。
実施形態において、障害は時間と共に除去され得る。このようにして、リンクまたはノードは障害状態から通常の状態に回復し得る。この場合、第1プロキシノードは後に、第1パケットをルーティングノードから再度受信し、障害回復イベントを検出し得る。このようにして、第1プロキシノードは、本実施形態において提供される方法の手順の実行を停止し得、第1パケットのペイロードを第2プロキシノードへ伝送しなくなり、第2プロキシノードは第1パケットのペイロードをSFノードへ伝送する。代わりに、第1プロキシノードは、図4における実施形態において提供される方法の手順を実行し、ローカル端は第1パケットのペイロードをSFノードへ伝送する。このようにして、通常の転送シナリオにおけるトラフィックバイパスが回避される。第1プロキシノードが第3アウトバウンドインタフェースのステータスを検出し得、第3アウトバウンドインタフェースのステータスがアップ(up)である場合、第1プロキシノードは、第4リンクが接続状態に復元されることを検出する。
本実施形態において、障害シナリオにおいて動的プロキシサービスを提供するための方法が提供される。障害イベントが検出されたとき、ローカルプロキシノードは、動的プロキシ処理が実行されるパケットを再カプセル化し、再カプセル化されたパケットをピアプロキシノードへ転送し、ピアプロキシノードに対して、ローカルプロキシノードの代わりに動的プロキシ動作を実行し、SRHを再カプセル化されたパケットから除去し、再カプセル化されたパケットのペイロードをSFノードへ伝送するように指示する。このようにして、デバイス障害またはリンク障害がローカルプロキシノード上で生じるとき、ローカルトラフィックは、更なる転送のために、バイパス方式でピアエンドへ伝送される。このようにして、障害シナリオにおいて、これはまた、パケットがSFノードによって処理されて正常に伝送され、ネットワーク安定性、信頼性、および堅牢性を大幅に改善することを確実にし得る。
上記方法の実施形態において、第1プロキシノードが障害イベントを検出した後にトリガされるパケット伝送手順が提供される。本願の実施形態において、ルーティングノードが障害イベントを検出した後にトリガされるパケット伝送手順が更に提供される。例えば、図42を参照されたい。ルーティングノードが、プロキシノード1に障害があることを検知した、または、ルーティングノードとプロキシノード1との間のリンクに障害があることを検知した場合、ルーティングノードは、本願の本実施形態において提供される方法を実行し得、動的プロキシ動作がパケットに対して実行されること、および、パケットがSFノードによって処理され得ることを確実にする。以下では、図43における以下の実施形態を使用することによって、詳細な説明を提供する。
図43は、本願の実施形態によるパケット伝送方法のフローチャートである。方法は、以下の段階を含み得る。
段階4301:ルーティングノードが障害イベントを検出し、第1パケットを第2プロキシノードへ送信する。
図3を参照されたい。障害イベントは、第2リンクに障害があるイベント、第4リンクに障害があるイベント、または、第1プロキシノードに障害があるイベントの少なくとも1つを含む。例えば、ルーティングノードが第4アウトバウンドインタフェースを通じて第2リンクにアクセスする場合、ルーティングノードは、第4アウトバウンドインタフェースのステータスを検出し得る。第4アウトバウンドインタフェースのステータスがダウン(down)である場合、ルーティングノードは、第2リンクに障害があるイベントを検出する。
任意選択的に、モニタリンク(monitor link)グループが第1プロキシノード上に展開され得る。モニタリンクグループは、第2リンクおよび第4リンクを含み、第2リンクは、モニタリンクグループにおける監視されたオブジェクトであり得、第4リンクは、モニタリンクグループにおける監視オブジェクトであり得る。第1プロキシノードは、第2アウトバウンドインタフェースのステータスを検出し得、第2アウトバウンドインタフェースのステータスがダウン(down)である場合、第2リンクに障害があると判定し得る。この場合、第1プロキシノードは、第3アウトバウンドインタフェースのステータスをダウンに設定する。このようにして、第4リンクは、第2リンクの障害と同期的にダウンであり、第4リンクは第2リンクに関連付けられる。例えば、図44を参照されたい。プロキシノード1は、SFノードに接続されたアウトバウンドインタフェースのステータスを検出し得る。SFノードに接続されたアウトバウンドインタフェースのステータスがダウンである場合、プロキシノード1は、ルーティングノードに接続されたアウトバウンドインタフェースのステータスをダウンに設定し、その結果、プロキシノード1とルーティングノードとの間のリンクはダウンである。図44における破線は、第2リンクの無効化が第4リンクの無効化を引き起こすことを指示する。
障害イベントを検出した後に、ルーティングノードは、第1パケットのペイロードが第1プロキシノードによってSFノードへ一時的に転送されることができないと判定し得る。この場合、ルーティングノードは、デュアルホーミングアクセスネットワーキングアーキテクチャを使用することによって、第1パケットを第2プロキシノードへ送信し、それにより、第1パケットのペイロードを第2プロキシノードへ伝送し、その結果、第1パケットのペイロードが第2プロキシノードによってSFノードへ転送される。例えば、図3を参照されたい。ルーティングノードが第5アウトバウンドインタフェースを通じて第3リンクにアクセスする場合、ルーティングノードは、第5アウトバウンドインタフェースを第1パケットのアウトバウンドインタフェースとして選択し、第5アウトバウンドインタフェースを通じて第1パケットを送信し得る。この場合、第1パケットは、第3リンクを通じて第2プロキシノードへ伝送される。
段階4302:第2プロキシノードが、第1パケットをルーティングノードから受信し、第2プロキシノードは、第1パケットのSRHを第2キャッシュエントリに記憶する。
段階4303:第2プロキシノードが第1パケットに基づいて第3パケットを生成する。
段階4304:第2プロキシノードが第3パケットをSFノードへ送信する。
段階4305:SFノードが第3パケットを第2プロキシノードから受信し、第3パケットを処理して第4パケットを取得する。
段階4306:SFノードが第4パケットを第2プロキシノードへ送信する。
段階4307:第2プロキシノードが、第4パケットをSFノードから受信し、第4パケットに基づいて第2キャッシュエントリをクエリし、第1パケットのSRHを取得する。
段階4308:第2プロキシノードが、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。
段階4309:第2プロキシノードが第5パケットをルーティングノードへ送信する。
段階4310:ルーティングノードが第5パケットを第2プロキシノードから受信し、第5パケットを転送する。
本実施形態において、障害シナリオにおいて動的プロキシサービスを提供するための方法が提供される。1のプロキシノードに接続されたリンクに障害があると検出したとき、ルーティングノードはパケットを他のプロキシノードへ転送し、その結果、他のプロキシノードは、障害プロキシノードの代わりに動的プロキシ動作を実行する。このようにして、障害シナリオにおいて、これにより、パケットがSFによって処理されて正常に伝送されることも確実にでき、ネットワーク安定性、信頼性、および堅牢性を大幅に改善する。
図41Aおよび図41B~図44における上記実施形態は、障害シナリオにおけるパケット伝送方法の手順を示す。図41Aおよび図41B~図44における上記実施形態は単に障害シナリオの例であることが理解されるべきである。本願の本実施形態において提供される方法は、別の障害シナリオにも同様に適用され得る。本願の本実施形態において提供される方法は適応的な特徴を有する。具体的には、様々なシナリオにおけるトラフィック転送要件を正確に処理するために、転送手順のセットが適用され得る。簡潔には、いくつかの障害シナリオのみが上で説明され、他の障害シナリオにおける処理は、上記の障害シナリオと同様である。ここでは詳細を再び説明しない。
上記では、本願の実施形態におけるパケット伝送方法を説明する。以下では、第1プロキシノードおよび第2プロキシノードを説明する。
図45は、本願の実施形態による第1プロキシノードの概略構造図である。図45に示されるように、第1プロキシノードは、第1パケットを受信する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階502、段階3502、段階3602、段階3702、段階3802、段階3902、段階4102、または段階4302を実行し得る受信モジュール4501と、第2パケットを生成する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階503、段階3503、段階3604、段階3704、段階3803、段階3903、または段階4104を実行し得る生成モジュール4502と、第2パケットを送信する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階504、段階3504、段階3605、段階3705、段階3804、段階3904、または段階4105を実行し得る送信モジュール4503とを含む。
任意選択的に、生成モジュール4502は、第1バイパスSIDを第1パケットのSRHのセグメントリストに挿入し、第1パケットのSRHのセグメント残数SLを1増加させ、第1パケットの宛先アドレスを第1バイパスSIDに更新して第2パケットを取得するよう構成される。
任意選択的に、制御情報は第2パケットの拡張ヘッダに保持され、制御情報は第1迂回SIDに保持され、制御情報は第2パケットのIPヘッダに保持され、または、制御情報は第2パケットのSRHにおけるTLVに保持される。
任意選択的に、第1プロキシノードは更に、第1パケットのSRHを記憶する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階502、段階3502、段階3603、段階3703、段階3802、段階3902、または段階4103を実行し得る記憶モジュールを含む。
生成モジュール4502は更に、第3パケットを生成する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階508、段階3508、段階3610、段階3710、段階3808、または段階3908を実行し得る。
送信モジュール4503は更に、第3パケットを送信する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階509、段階3509、段階3611、段階3711、段階3809、または段階3909を実行し得る。
任意選択的に、記憶モジュールは、第1キャッシュエントリの識別子をインデックスとして使用することによってSRHを記憶する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3602および段階3603または段階3702および段階3703を実行し得る。
任意選択的に、第1プロキシノードは更に、サービス機能ノードのサービス機能がフロー識別子の修正を含むと判定するよう更に構成される判定モジュールを含む。
任意選択的に、第2パケットは更に、第1キャッシュエントリの識別子を含み、制御情報は更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示するために使用され、第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。
任意選択的に、受信モジュール4501は更に、第4パケットを受信する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3714を実行し得る。第1プロキシノードは更に、クエリを実行して第1パケットのSRHを取得する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階3714を実行し得るクエリモジュールを含む。生成モジュール4502は更に、第5パケットを生成する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3715を実行し得る。送信モジュール4503は更に、第5パケットを送信する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3716を実行し得る。
任意選択的に、第2パケットを生成するためのトリガ条件は、第1キャッシュエントリが生成されたと検出されること、および、第1キャッシュエントリが更新されたと検出されることのうち1または複数を含む。
任意選択的に、記憶モジュールは、第1パケットに対応するフロー識別子、および、エンドポイント動的プロキシSIDをインデックスとして使用することによってSRHを記憶する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3802を実行し得る。
任意選択的に、受信モジュール4501は、構成命令を受信する段階を実行するよう構成される。記憶モジュールは、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶する段階を実行するよう構成される。
任意選択的に、第3パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり、第3パケットはVPN識別子を含む。受信モジュール4501は更に、第4パケットを受信する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3912を実行する。第1プロキシノードは更に、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をクエリする段階を実行するよう構成される、例えば、上記の方法の実施形態における段階3912を実行するクエリモジュールを含む。クエリモジュールは更に、第1パケットのSRHを取得するためにクエリを実行する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3913を実行する。生成モジュール4502は更に、第5パケットを生成する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3914を実行する。送信モジュール4503は更に、第5パケットを生成する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3915を実行する。
任意選択的に、第2パケットは更に、第1パケットのペイロードを含み、制御情報は更に、第1パケットのペイロードをサービス機能ノードへ送信するよう第2プロキシノードに指示するために使用される。第1プロキシノードは更に、障害イベントを検出する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階4102を実行する検出モジュールを含む。
任意選択的に、第1プロキシノードは、第1リンクを通じて第2プロキシノードに接続され、送信モジュール4503は、第1リンクに対応する第1アウトバウンドインタフェースを通じて、第2パケットを第2プロキシノードへ送信するよう構成される。代替的に、第1プロキシノードは、第2リンクを通じてルーティングノードに接続され、ルーティングノードは、第3リンクを通じて第2プロキシノードに接続され、送信モジュール4503は、第2リンクに対応する第2アウトバウンドインタフェースを通じて第2パケットをルーティングノードへ送信するよう構成され、第2パケットは、ルーティングノードによって、第3リンクを通じて第2プロキシノードへ転送される。
任意選択的に、検出モジュールは更に、第1リンクのステータスを検出するよう構成される。送信モジュール4503は、第1リンクが利用可能状態にある場合に、第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを第2プロキシノードへ送信するよう、または、第1リンクが利用不可能状態にある場合に、第2リンクに対応する第2アウトバウンドインタフェースを通じて第2パケットをルーティングノードへ送信するよう構成される。
任意選択的に、送信モジュール4503は、複数の第2パケットを第2プロキシノードへ継続的に送信するよう、または、第6パケットが受信されないとき、第2パケットを第2プロキシノードへ再伝送するよう構成され、第6パケットの送信元アドレスは第1バイパスSIDであり、第6パケットは、第1プロキシノードに対応する第2バイパスSIDを含み得、例えば、第6パケットの宛先アドレスは、第2バイパスSIDであり、第6パケットは、第2パケットが受信されたと指示するために使用される。
図45における実施形態において提供される第1プロキシノードは、上記の方法の実施形態における第1プロキシノードに対応することが理解されるべきである。第1プロキシノードにおけるモジュールおよび上記他の動作および/または機能はそれぞれ、方法の実施形態において第1プロキシノードによって実装される様々な段階および方法を実装するために使用される。具体的な詳細については、上記の方法の実施形態を参照されたい。簡潔にする目的で、ここでは詳細について再び説明しない。
図45における実施形態において提供される第1プロキシノードがパケットを伝送するとき、上記の機能モジュールへの分割は、説明のための例としてのみ使用されることに留意されたい。実際の適用において、上記の機能は、要件に基づいて実装のために異なる機能モジュールに割り当てられ得、すなわち、第1プロキシノードの内部構造は異なる機能モジュールに分割され、上で説明された機能の全部または一部を完成させる。加えて、上記実施形態において提供される第1プロキシノードおよびパケット伝送方法の実施形態は同一の概念に属する。第1プロキシノードの具体的な実装プロセスについては、方法の実施形態を参照されたい。ここでは詳細を再び説明しない。
図46は、本願の実施形態による第2プロキシノードの概略構造図である。図46に示されるように、第2プロキシノードは、第2パケットを受信する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階505、段階3505、段階3606、段階3709、段階3805、段階3905、または段階4106を実行し得る受信モジュール4601と、第1パケットのSRHを記憶するよう制御情報が第2プロキシノードに指示していると判定する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階505、段階3505、段階3606、段階3706、段階3805、段階3905、または段階4106を実行し得る判定モジュール4602と、第2パケットを解析する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階506、段階3506、段階3607、段階3707、段階3806、段階3906、または段階4107を実行し得る解析モジュール4603と、第1パケットのSRHを記憶する段階を実行するよう構成される、例えば、上記の方法の実施形態における段階507、段階3507、段階3609、段階3709、段階3807、段階3907、段階4108、または段階4302を実行し得る記憶モジュール4604とを備える。
任意選択的に、解析モジュール4603は、第2パケットのSRHのセグメントリストから第1バイパスSIDを削除するように、および、第2パケットのSRHのSLを1減少させて第1パケットのSRHを取得するよう構成される。
任意選択的に、制御情報は第2パケットの拡張ヘッダに保持され、制御情報は第1迂回SIDに保持され、制御情報は第2パケットのIPヘッダに保持され、または、制御情報は第2パケットのSRHにおけるTLVに保持される。
任意選択的に、記憶モジュール4604は、第2キャッシュエントリの識別子をインデックスとして使用することによって、SRHを記憶する段階を実行するよう構成され、例えば、上記の方法の実施形態における段階3608から段階3609、または、段階3708および段階3709を実行し得る。
任意選択的に、判定モジュール4602は更に、サービス機能ノードのサービス機能がフロー識別子を修正することを含むと判定するよう構成される。
任意選択的に、第2パケットは更に、第1キャッシュエントリの識別子を含み、第1キャッシュエントリは、第1プロキシノードによって第1パケットのSRHを記憶するために使用されるキャッシュエントリである。判定モジュール4602は更に、制御情報が更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示していると判定するよう構成される。記憶モジュール4604は更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう構成される。
任意選択的に、受信モジュール4601は更に、第1キャッシュエントリの識別子を保持する第4パケットを受信する段階を実行するよう構成される。第2プロキシノードは更に、第1キャッシュエントリの識別子に基づいて、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係をクエリし、第1キャッシュエントリの識別子に対応する、第2キャッシュエントリの識別子を取得するよう構成されるクエリモジュールを含む。クエリモジュールは更に、第2キャッシュエントリの識別子をインデックスとして使用することによって、第2キャッシュエントリをクエリし、第1パケットのSRHを取得するよう構成され、生成モジュールは、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成するよう構成され、第5パケットは第4パケットのペイロードおよび第1パケットのSRHを含み、送信モジュールは、第5パケットを送信するよう構成される。
任意選択的に、第2パケットに対応するフロー識別子は、第1パケットに対応するフロー識別子であり、第1パケットのSRHはエンドポイント動的プロキシSIDを含む。記憶モジュール4604は、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによってSRHを記憶する段階を実行し、例えば、上記の方法の実施形態における段階3807または段階3907を実行するよう構成される。
任意選択的に、受信モジュール4601は更に、構成命令を受信するよう構成され、構成命令は、各仮想プライベートネットワークVPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含む。記憶モジュール4604は更に、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶するよう構成される。
任意選択的に、受信モジュール4601は更に、段階3812における第4パケットを受信する段階を実行するよう構成される。第2プロキシノードは更に、VPN識別子、エンドポイント動的プロキシSID、および、第4パケットに対応するフロー識別子に基づいてクエリを実行する段階を実行してSRHを取得するよう構成される、例えば、段階3812を実行するクエリモジュールと、段階3813を実行するよう更に構成される生成モジュールと、段階3814を実行するよう更に構成される送信モジュールとを備える。
任意選択的に、第2プロキシノードは、制御情報が更に、第1パケットのペイロードをサービス機能ノードへ送信するよう第2プロキシノードに指示していると判定する段階を実行するよう更に構成される、例えば、段階4106を実行する判定モジュール4602と、第3パケットを生成する段階を実行するよう更に構成される、例えば、段階4109を実行する生成モジュールと、段階4110を実行するよう更に構成される送信モジュールとを更に備える。
任意選択的に、第2プロキシノードは、第1リンクを通じて第1プロキシノードに接続され、受信モジュール4601は、第1リンクに対応する第1インバウンドインタフェースを通じて第1プロキシノードから第2パケットを受信するよう構成されるか、または、第2プロキシノードは、第3リンクを通じてルーティングノードに接続され、ルーティングノードは、第2リンクを通じて第1プロキシノードに接続され、受信モジュール4601は、第3リンクに対応する第2インバウンドインタフェースを通じて第2パケットをルーティングノードから受信するよう構成され、第2パケットは、第1プロキシノードによって、第2リンクを通じてルーティングノードへ送信される。
任意選択的に、受信モジュール4601は、複数の第2パケットを第1プロキシノードから継続的に受信するよう構成される。代替的に、第2プロキシノードは更に、第1バイパスSID、第2プロキシノードに対応する第2バイパスSID、および第2パケットに基づいて第6パケットを生成するよう構成される生成モジュールと、第6パケットを第1プロキシノードへ送信するよう更に構成される送信モジュール(第6パケットの送信元アドレスは第1バイパスSIDである)とを含み、第6パケットは、第1プロキシノードに対応する第2バイパスSIDを含み、第6パケットは、第2パケットが受信されたと指示するために使用される。
図46における実施形態において提供される第2プロキシノードは、上記の方法の実施形態における第2プロキシノードに対応することが理解されるべきである。第2プロキシノードにおけるモジュールおよび上記他の動作および/または機能はそれぞれ、方法の実施形態において第2プロキシノードによって実装される様々な段階および方法を実装するために使用される。具体的な詳細については、上記の方法の実施形態を参照されたい。簡潔にする目的で、ここでは詳細について再び説明しない。
図46における実施形態において提供される第2プロキシノードがパケットを伝送するとき、上記の機能モジュールへの分割は、説明のための例としてのみ使用されることに留意されたい。実際の適用において、上記の機能は、要件に基づいて実装のために異なる機能モジュールに割り当てられ得、すなわち、第2プロキシノードの内部構造は異なる機能モジュールに分割され、上で説明された機能の全部または一部を完成させる。加えて、上記実施形態において提供される第2プロキシノードおよびパケット伝送方法の実施形態は同一の概念に属する。第2プロキシノードの具体的な実装プロセスについては、方法の実施形態を参照されたい。簡潔にする目的で、ここでは詳細を再び説明しない。
上記では、本願の実施形態において提供される第1プロキシノードおよび第2プロキシノードを説明する。以下では、第1プロキシノードおよび第2プロキシノードの可能な製品形態を説明する。第1プロキシノードの特徴を有する製品の任意の形態、および、第2プロキシノードの特徴を有する製品の任意の形態は、本願の保護範囲に含まれることが理解されるべきである。以下の説明は単に例であり、本願の実施形態における第1プロキシノードおよび第2プロキシノードの製品形態は、これに限定されないことが更に理解されるべきである。
本願の実施形態はプロキシノードを提供する。プロキシノードは第1プロキシノードまたは第2プロキシノードであり得る。
プロキシノードはプロセッサを含み、プロセッサは命令を実行するよう構成され、その結果、プロキシノードは、上記の方法の実施形態において提供されるパケット伝送方法を実行する。
例えば、プロセッサはネットワークプロセッサ(Network Processor, NP)、中央演算処理装置(central processing unit, CPU)、特定用途向け集積回路(application-specific integrated circuit, ASIC)、または、本願の解決手段におけるプログラム実行を制御するよう構成される集積回路であり得る。プロセッサはシングルコアプロセッサ(single-CPU)であり得るか、または、マルチコアプロセッサ(multi-CPU)であり得る。1または複数のプロセッサがあり得る。
いくつかの可能な実施形態において、プロキシノードは更にメモリを含み得る。
メモリは、リードオンリメモリ(read-only memory, ROM)、静的情報および命令を記憶し得る別の種類の静的記憶デバイス、ランダムアクセスメモリ(random access memory, RAM)、もしくは、情報および命令を記憶し得る別の種類の動的ストレージデバイスであり得るか、または、電気的消去可能プログラマブルリードオンリメモリ(electrically erasable programmable read-only memory, EEPROM)、コンパクトディスクリードオンリメモリ(compact disc read-only Memory, CD-ROM)、もしくは、別のコンパクトディスク記憶装置、光学ディスクストレージ(コンパクト光学ディスク、レーザディスク、光学ディスク、デジタル多用途ディスク、ブルーレイディスク、または同様のものを含む)、磁気ディスク記憶媒体、もしくは、別の磁気記憶デバイス、または、コンピュータによってアクセスされ得る、命令もしくはデータ構造体の形態の所望のプログラムコードを保持もしくは記憶するために使用され得る任意の他の媒体であり得る。しかしながら、メモリはこれに限定されない。
メモリおよびプロセッサは、別個に配置され得るか、または、メモリおよびプロセッサは共に統合され得る。
いくつかの可能な実施形態において、プロキシノードは更に送受信機を含み得る。
送受信機は、別のデバイスまたは通信ネットワークと通信するよう構成される。ネットワーク通信方式は、イーサネットネットワーク、無線アクセスネットワーク(RAN)、無線ローカルエリアネットワーク(wireless local area network, WLAN)または同様のものであり得るか、これらに限定されない。本願の本実施形態において、通信インタフェースは、別のノードによって送信されたパケットを受信するよう構成され得るか、または、パケットを別のノードへ送信し得る。
いくつかの可能な実施形態において、プロキシノードはネットワークデバイスとして実装され得、ネットワークデバイスにおけるネットワークプロセッサは、上記の方法の実施形態における段階を実行し得る。例えば、ネットワークデバイスは、ルータ、スイッチ、またはファイアウォールであり得る。
図47は、本願の例示的実施形態によるネットワークデバイスの概略構造図である。ネットワークデバイスは、第1プロキシノードまたは第2プロキシノードとして構成され得る。
ネットワークデバイス4700は、メイン制御ボード4710、インタフェースボード4730、スイッチングボード4720、およびインタフェースボード4740を含む。メイン制御ボード4710は、システム管理、デバイス保守およびプロトコル処理などの機能を完成させるように構成される。スイッチングボード4720は、インタフェースボード間のデータ交換を完成させるよう構成される(インタフェースボードはまた、ラインカードまたはサービスボードと称される)。インタフェースボード4730および4740は、様々なサービスインタフェース(例えばイーサネットインタフェースおよびPOSインタフェース)を提供し、データパケット転送を実装するよう構成される。メイン制御ボード4710、インタフェースボード4730および4740およびスイッチングボード4720は、通信のためにシステムバスを通じてシステムバックボードに接続される。インタフェースボード4730上の中央演算処理装置4731は、インタフェースボードを制御および管理し、メイン制御ボード4710上の中央演算処理装置4711と通信するよう構成される。
ネットワークデバイス4700が第1プロキシノードとして構成される場合、物理インタフェースカード4733は第1パケットを受信し、第1パケットをネットワークプロセッサ4732へ送信する。ネットワークプロセッサ4732は、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成し、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、物理インタフェースカード4733を通じて第2パケットを送信し、その結果、第2パケットは第2プロキシノードへ伝送される。
実施形態において、ネットワークプロセッサ4732は、第1パケットのSRHのSLを更新し、第1パケットの宛先アドレスを更新して第2パケットを取得し得、第2パケットのSLは、第1パケットのSLより大きい。
実施形態において、ネットワークプロセッサ4732は、第1パケットのSLを1増加させ、第1パケットの宛先アドレスを第1バイパスSIDに更新し得る。
実施形態において、ネットワークプロセッサ4732は、1または複数の対象SIDを第1パケットのSRHのセグメントリストに挿入し(1または複数の対象SIDは、対象転送経路を指示するために使用され、対象転送経路は、第1プロキシノードから第2プロキシノードへの経路である)、第1パケットのSLをN増加させ(Nは1より大きい正の整数である)、第1パケットの宛先アドレスを、1または複数の対象SIDにおける次のSRノードに対応するSIDに更新し得る。
実施形態において、制御情報は、第2パケットの拡張ヘッダに保持され、制御情報は、第1バイパスSIDに保持され、制御情報は、第2パケットのIPヘッダに保持され、または、制御情報は、第2パケットのSRHにおけるTLVに保持される。
実施形態において、ネットワークプロセッサ4732は、第1パケットのSRHを転送エントリメモリ4734に記憶し得る。ネットワークプロセッサ4732は、第1パケットに基づいて第3パケットを生成し、リンク層カプセル化を完了した後にアウトバウンドインタフェースなどの情報に基づいて、物理インタフェースカード4733を通じて第3パケットを送信し得、その結果、第3パケットはSFノードへ伝送される。
実施形態において、ネットワークプロセッサ4732は、第1キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを転送エントリメモリ4734に記憶し得る。
実施形態において、第2パケットは更に、第1キャッシュエントリの識別子を含み、制御情報は更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示するために使用され、第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。
実施形態において、物理インタフェースカード4733は、第4パケットを受信し、第4パケットをネットワークプロセッサ4732へ送信する。ネットワークプロセッサ4732は、第1キャッシュエントリの識別子をインデックスとして使用することによってクエリを実行し、第1パケットのSRHを取得する。ネットワークプロセッサ4732は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットは、第4パケットのペイロード、および、第1パケットのSRHを含む。ネットワークプロセッサ4732は、物理インタフェースカード4733を通じて第5パケットを送信する。
実施形態において、ネットワークプロセッサ4732は、第1キャッシュエントリが生成されたことを検出したときに、第2パケットを生成する。
実施形態において、ネットワークプロセッサ4732は、第1キャッシュエントリが更新されたことを検出したときに第2パケットを生成する。
実施形態において、ネットワークプロセッサ4732は、第1パケットに対応するフロー識別子、および、エンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを転送エントリメモリ4734に記憶する。
実施形態において、メイン制御ボード4710上の中央演算処理装置4711は、構成命令を受信し、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を転送エントリメモリ4734に記憶し得る。
実施形態において、物理インタフェースカード4733は、第4パケットを受信する。ネットワークプロセッサ4732は、VPN識別子、第1パケットに対応するフロー識別子、および、エンドポイント動的プロキシSIDに基づいて転送エントリメモリ4734をクエリし、第1パケットのSRHを取得する。ネットワークプロセッサ4732は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、物理インタフェースカード4733を通じて第5パケットを送信する。
実施形態において、ネットワークプロセッサ4732は、障害イベントを検出し得、障害イベントは、第1プロキシノードとサービス機能ノードとの間のリンクに障害があるイベント、または、第1プロキシノードに障害があるイベントの少なくとも1つを含む。
実施形態において、ネットワークプロセッサ4732は第1リンクのステータスを検出する。第1リンクが利用可能状態にある場合、ネットワークプロセッサ4732は、物理インタフェースカード4733を選択し、第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを送信する。代替的に、第1リンクが利用不可能状態にある場合、ネットワークプロセッサ4732は、物理インタフェースカード4733を選択し、第2リンクに対応する第2アウトバウンドインタフェースを通じて第2パケットを送信する。
実施形態において、ネットワークプロセッサ4732は、複数の第2パケットを継続的に生成し、複数の第2パケットを物理インタフェースカード4733へ送信する。物理インタフェースカード4733は、複数の第2パケットを第2プロキシノードへ継続的に送信する。
実施形態において、物理インタフェースカード4733が第6パケットを受信しないとき、ネットワークプロセッサ4732は、第2パケットを第2プロキシノードへ再伝送する。
ネットワークデバイス4700が第2プロキシノードとして構成される場合、物理インタフェースカード4733は第2パケットを受信し、第2パケットをネットワークプロセッサ4732へ送信する。ネットワークプロセッサ4732は、制御情報が、第1パケットのSRHを記憶するよう第2プロキシノードに指示していると判定し、第2パケットを解析して第1パケットのSRHを取得し、第1パケットのSRHを転送エントリメモリ4734における第2キャッシュエントリに記憶する。
実施形態において、ネットワークプロセッサ4732は、第1バイパスSIDを第2パケットのSRHのセグメントリストから削除し、第2パケットのSRHのセグメント残数SLを1減少させて第1パケットのSRHを取得する。
実施形態において、制御情報は、第2パケットの拡張ヘッダに保持され、制御情報は、第1バイパスSIDに保持され、制御情報は、第2パケットのIPヘッダに保持され、または、制御情報は、第2パケットのSRHにおけるTLVに保持される。
実施形態において、ネットワークプロセッサ4732は、第2キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHを転送エントリメモリ4734における第2キャッシュエントリに記憶する。
実施形態において、ネットワークプロセッサ4732は、SFノードのサービス機能がフロー識別子の修正を含むと判定する。
実施形態において、ネットワークプロセッサ4732は、制御情報が更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示していると判定する。ネットワークプロセッサ4732は、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を転送エントリメモリ4734に記憶する。
実施形態において、物理インタフェースカード4733は、第4パケットを受信し、第4パケットをネットワークプロセッサ4732へ送信する。ネットワークプロセッサ4732は、第1キャッシュエントリの識別子に基づいて、転送エントリメモリ4734における第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係をクエリして、第1キャッシュエントリの識別子に対応する第2キャッシュエントリの識別子を取得する。ネットワークプロセッサ4732は、第2キャッシュエントリの識別子をインデックスとして使用することによって、転送エントリメモリ4734における第2キャッシュエントリをクエリして、第1パケットのSRHを取得する。ネットワークプロセッサ4732は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。ネットワークプロセッサ4732は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて物理インタフェースカード4733を通じて第5パケットを送信する。
実施形態において、ネットワークプロセッサ4732は、第2パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
実施形態において、メイン制御ボード4710上の中央演算処理装置4711は、構成命令を受信し、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を転送エントリメモリ4734に記憶し得る。
実施形態において、物理インタフェースカード4733は、第4パケットを受信し、第4パケットをネットワークプロセッサ4732へ送信する。ネットワークプロセッサ4732は、VPN識別子、エンドポイント動的プロキシSID、および、第4パケットに対応するフロー識別子に基づいて、転送エントリメモリ4734における第2キャッシュエントリをクエリして、第1パケットのSRHを取得する。ネットワークプロセッサ4732は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。ネットワークプロセッサ4732は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、物理インタフェースカード4733を通じて第5パケットを送信する。
実施形態において、ネットワークプロセッサ4732は、制御情報が更に、第1パケットのペイロードをサービス機能ノードへ送信するよう第2プロキシノードに指示していると判定する。ネットワークプロセッサ4732は、第2パケットに基づいて第3パケットを生成し、ネットワークプロセッサ4732は、物理インタフェースカード4733を通じて第3パケットを送信し、その結果、第3パケットはSFノードへ伝送される。
実施形態において、物理インタフェースカード4733は、第1リンクに対応する第1インバウンドインタフェースを通じて第2パケットを受信する。代替的に、物理インタフェースカード4733は、第3リンクに対応する第2インバウンドインタフェースを通じて第2パケットを受信する。
実施形態において、物理インタフェースカード4733は、複数の第2パケットを継続的に受信し、複数の第2パケットをネットワークプロセッサ4732へ送信する。
実施形態において、ネットワークプロセッサ4732は、第1バイパスSID、第2プロキシノードに対応する第2バイパスSID、および第2パケットに基づいて、第6パケットを生成する。ネットワークプロセッサ4732は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて物理インタフェースカード4733を通じて第6パケットを送信する。
本願の本実施形態において、インタフェースボード4740上で実行される動作は、インタフェースボード4730上で実行される動作と同一であることが理解されるべきである。簡潔にする目的で、詳細は再び説明されない。本実施形態におけるネットワークデバイス4700は、上記方法の実施形態における第1プロキシノードまたは第2プロキシノードに対応し得ることが理解されるべきである。メイン制御ボード4710、ならびに、ネットワークデバイス4700におけるインタフェースボード4730および/またはインタフェースボード4740は、上記の方法の実施形態における第1プロキシノードまたは第2プロキシノードによって実装される機能および/または段階を実装し得る。簡潔にする目的で、ここでは詳細を再び説明しない。
1または複数のメイン制御ボードがあり得ることに留意されたい。複数のメイン制御ボードがあるとき、メイン制御ボードは、アクティブメイン制御ボードおよびスタンバイメイン制御ボードを含み得る。1または複数のインタフェースボードがあり得、より強いデータ処理機能を有するネットワークデバイスはより多くのインタフェースボードを提供する。インタフェースボード上に1または複数の物理インタフェースカードもあり得る。スイッチングボードが無いこと、または、1または複数のスイッチングボードがあることがあり得る。複数のスイッチングボードがあるとき、負荷共有および冗長バックアップが共に実装され得る。集中転送アーキテクチャにおいて、ネットワークデバイスは、スイッチングボードを必要としないことがあり得、インタフェースボードは、システム全体におけるサービスデータを処理する機能を提供する。分散転送アーキテクチャにおいて、ネットワークデバイスは、少なくとも1つのスイッチングボードを有し得、複数のインタフェースボード間のデータ交換は、スイッチングボードを使用することによって実装され、大容量データ交換および処理能力を提供する。このようにして、分散アーキテクチャにおけるネットワークデバイスのデータアクセスおよび処理能力は、集中アーキテクチャにおけるデバイスより良い。任意選択的に、ネットワークデバイスは代替的に、1つのカードのみがある形態であり得る。具体的には、スイッチングボードが無く、インタフェースボードおよびメイン制御ボードの機能はカード上に統合される。この場合、インタフェースボード上の中央演算処理装置およびメイン制御ボード上の中央演算処理装置は組み合わされて、カード上に1つの中央演算処理装置を形成して、2つの中央演算処理装置が組み合わされた後に取得される機能を実行し得る。この形態のデバイス(例えば、ローエンドスイッチまたはルータなどのネットワークデバイス)は、弱いデータ交換および処理能力を有する。使用される具体的なアーキテクチャは、具体的なネットワーキング展開シナリオに依存する。これは、本明細書において限定されない。
いくつかの可能な実施形態において、プロキシノードは、コンピューティングデバイスとして実装され得、コンピューティングデバイスにおける中央演算処理装置は、上記の方法の実施形態における段階を実行し得る。例えば、コンピューティングデバイスは、ホスト、サーバ、パーソナルコンピュータ、または同様のものであり得る。コンピューティングデバイスは、汎用バスアーキテクチャを使用することによって実装され得る。
図48は、本願の例示的実施形態によるコンピューティングデバイスの概略構造図である。コンピューティングデバイスは、第1プロキシノードまたは第2プロキシノードとして構成され得る。
コンピューティングデバイス4800は、プロセッサ4810、送受信機4820、ランダムアクセスメモリ4840、リードオンリメモリ4850、およびバス4860を含む。プロセッサ4810は、バス4860を通じて、送受信機4820、ランダムアクセスメモリ4840、およびリードオンリメモリ4850に別個に結合される。コンピューティングデバイス4800が実行される必要があるとき、コンピューティングデバイス4800は、リードオンリメモリ4850に内蔵された基本入出力システム、または、組み込みシステムにおけるブートローダ(bootloader)ブートストラップシステムを使用することによって起動され、コンピューティングデバイス4800をブートし、通常の実行状態に入る。
コンピューティングデバイス4800が第1プロキシノードとして構成される場合、コンピューティングデバイス4800が通常の実行状態に入った後に、アプリケーションプログラムおよびオペレーティングシステムがランダムアクセスメモリ4840において実行される。
送受信機4820は第1パケットを受信し、第1パケットをプロセッサ4810へ送信する。プロセッサ4810は、エンドポイント動的プロキシSID、第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて、第2パケットを生成し、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて第2パケットを送受信機4820から送信し、その結果、第2パケットが第2プロキシノードへ伝送される。
実施形態において、プロセッサ4810は、第1パケットのSRHのセグメント残数SLを更新し、第1パケットの宛先アドレスを更新して第2パケットを取得し得、第2パケットのSLは、第1パケットのSLより大きい。
実施形態において、プロセッサ4810は、第1パケットのSLを1増加させ、第1パケットの宛先アドレスを第1バイパスSIDに更新し得る。
実施形態において、プロセッサ4810は、1または複数の対象SIDを第1パケットのSRHのセグメントリストに挿入し(1または複数の対象SIDは、対象転送経路を指示するために使用され、対象転送経路は、第1プロキシノードから第2プロキシノードへの経路である)、第1パケットのSLをN増加させ(Nは1より大きい正の整数である)、第1パケットの宛先アドレスを、1または複数の対象SIDにおける次のSRノードに対応するSIDに更新し得る。
実施形態において、制御情報は、第2パケットの拡張ヘッダに保持され、制御情報は、第1バイパスSIDに保持され、制御情報は、第2パケットのIPヘッダに保持され、または、制御情報は、第2パケットのSRHにおけるTLVに保持される。
実施形態において、プロセッサ4810は、第1パケットのSRHをランダムアクセスメモリ4840に記憶し得る。プロセッサ4810は、第1パケットに基づいて第3パケットを生成し、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、第3パケットを送受信機4820から送信し得、その結果、第3パケットがSFノードへ伝送される。
実施形態において、プロセッサ4810は、第1キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHをランダムアクセスメモリ4840に記憶し得る。
実施形態において、第2パケットは更に、第1キャッシュエントリの識別子を含み、制御情報は更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示するために使用され、第2キャッシュエントリは、第1パケットのSRHを記憶するために第2プロキシノードによって使用されるキャッシュエントリである。
実施形態において、送受信機4820は、第4パケットを受信し、第4パケットをプロセッサ4810へ送信する。プロセッサ4810は、第1キャッシュエントリの識別子をインデックスとして使用することによってクエリを実行して、第1パケットのSRHを取得する。プロセッサ4810は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットは、第4パケットのペイロードおよび第1パケットのSRHを含む。プロセッサ4810は、第5パケットを送受信機4820から送信する。
実施形態において、プロセッサ4810は、第1キャッシュエントリが生成されたと検出したとき、第2パケットを生成する。
実施形態において、プロセッサ4810は、第1キャッシュエントリが更新されたと検出したときに第2パケットを生成する。
実施形態において、プロセッサ4810は、第1パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHをランダムアクセスメモリ4840に記憶する。
実施形態において、プロセッサ4810は、構成命令を受信し、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をランダムアクセスメモリ4840に記憶し得る。
実施形態において、送受信機4820は第4パケットを受信する。プロセッサ4810は、VPN識別子、第1パケットに対応するフロー識別子、およびエンドポイント動的プロキシSIDに基づいてランダムアクセスメモリ4840をクエリして第1パケットのSRHを取得する。プロセッサ4810は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成し、第5パケットを送受信機4820から送信する。
実施形態において、プロセッサ4810は、障害イベントを検出し得、障害イベントは、第1プロキシノードとサービス機能ノードとの間のリンクに障害があるイベント、または、第1プロキシノードに障害があるイベントの少なくとも1つを含む。
実施形態において、プロセッサ4810は第1リンクのステータスを検出する。第1リンクが利用可能状態にある場合、プロセッサ4810は送受信機4820を選択し、第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを送信する。代替的に、第1リンクが利用不可能状態にある場合、プロセッサ4810は、送受信機4820を選択し、第2リンクに対応する第2アウトバウンドインタフェースを通じて第2パケットを送信する。
実施形態において、プロセッサ4810は、複数の第2パケットを継続的に生成し、複数の第2パケットを送受信機4820へ送信する。送受信機4820は、複数の第2パケットを第2プロキシノードへ継続的に送信する。
実施形態において、送受信機4820が第6パケットを受信しないとき、プロセッサ4810は、第2パケットを第2プロキシノードへ再伝送する。
コンピューティングデバイス4800が第2プロキシノードとして構成される場合、送受信機4820は第2パケットを受信し、第2パケットをプロセッサ4810へ送信する。プロセッサ4810は、制御情報が、第1パケットのSRHを記憶するよう第2プロキシノードに指示していると判定し、第2パケットを解析して第1パケットのSRHを取得し、第1パケットのSRHをランダムアクセスメモリ4840における第2キャッシュエントリに記憶する。
実施形態において、プロセッサ4810は、第1バイパスSIDを第2パケットのSRHのセグメントリストから削除し、第2パケットのSRHのセグメント残数SLを1減少させて第1パケットのSRHを取得する。
実施形態において、制御情報は、第2パケットの拡張ヘッダに保持され、制御情報は、第1バイパスSIDに保持され、制御情報は、第2パケットのIPヘッダに保持され、または、制御情報は、第2パケットのSRHにおけるTLVに保持される。
実施形態において、プロセッサ4810は、第2キャッシュエントリの識別子をインデックスとして使用することによって、第1パケットのSRHをランダムアクセスメモリ4840における第2キャッシュエントリに記憶する。
実施形態において、プロセッサ4810は、SFノードのサービス機能がフロー識別子の修正を含むと判定する。
実施形態において、プロセッサ4810は、制御情報が更に、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係を記憶するよう第2プロキシノードに指示していると判定する。プロセッサ4810は、第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係をランダムアクセスメモリ4840に記憶する。
実施形態において、送受信機4820は第4パケットを受信し、第4パケットをプロセッサ4810へ送信する。プロセッサ4810は、第1キャッシュエントリの識別子に基づいて、ランダムアクセスメモリ4840における第1キャッシュエントリの識別子と第2キャッシュエントリの識別子との間のマッピング関係をクエリして、第1キャッシュエントリの識別子に対応する、第2キャッシュエントリの識別子を取得する。プロセッサ4810は、第2キャッシュエントリの識別子をインデックスとして使用することによって、ランダムアクセスメモリ4840における第2キャッシュエントリをクエリして、第1パケットのSRHを取得する。プロセッサ4810は、第4パケットおよび第1パケットのSRHに基づいて、第5パケットを生成する。プロセッサ4810は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、第5パケットを送受信機4820から送信する。
実施形態において、プロセッサ4810は、第2パケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして使用することによって、第1パケットのSRHを第2キャッシュエントリに記憶する。
実施形態において、プロセッサ4810は、構成命令を受信し、構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をランダムアクセスメモリ4840に記憶し得る。
実施形態において、送受信機4820は、第4パケットを受信し、第4パケットをプロセッサ4810へ送信する。プロセッサ4810は、VPN識別子、エンドポイント動的プロキシSID、および、第4パケットに対応するフロー識別子に基づいて、ランダムアクセスメモリ4840における第2キャッシュエントリをクエリして、第1パケットのSRHを取得する。プロセッサ4810は、第4パケットおよび第1パケットのSRHに基づいて第5パケットを生成する。プロセッサ4810は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、第5パケットを送受信機4820から送信する。
実施形態において、プロセッサ4810は、制御情報が更に、第1パケットのペイロードをサービス機能ノードへ送信するよう第2プロキシノードに指示していると判定する。プロセッサ4810は、第2パケットに基づいて第3パケットを生成し、プロセッサ4810は、第3パケットを送受信機4820から送信し、その結果、第3パケットはSFノードへ伝送される。
実施形態において、送受信機4820は、第1リンクに対応する第1インバウンドインタフェースを通じて第2パケットを受信する。代替的に、送受信機4820は、第3リンクに対応する第2インバウンドインタフェースを通じて第2パケットを受信する。
実施形態において、送受信機4820は、複数の第2パケットを継続的に受信し、複数の第2パケットをプロセッサ4810へ送信する。
実施形態において、プロセッサ4810は、第1バイパスSID、第2プロキシノードに対応する第2バイパスSID、および、第2パケットに基づいて、第6パケットを生成する。プロセッサ4810は、リンク層カプセル化を完了した後に、アウトバウンドインタフェースなどの情報に基づいて、第6パケットを送受信機4820から送信する。
本願の本実施形態におけるコンピューティングデバイスは、上記の方法の実施形態における第1プロキシノードまたは第2プロキシノードに対応し得、コンピューティングデバイスにおけるプロセッサ4810、送受信機4820、および同様のものは、上記の方法の実施形態における第1プロキシノードまたは第2プロキシノードによって実装される機能および/または方法の段階を実装し得る。簡潔にする目的で、ここでは詳細を再び説明しない。
いくつかの可能な実施形態において、プロキシノードは、仮想化デバイスとして実装され得る。
例えば、仮想化デバイスは、パケット送信機能を有するプログラムが実行される仮想マシン(Virtual Machine, VM)であり得、仮想マシンは、ハードウェアデバイス(例えば物理サーバ)上に展開される。仮想マシンは、完全に隔離された環境において実行する、完全なハードウェアシステム機能を有する、ソフトウェアによってシミュレートされる完全なコンピュータシステムである。仮想マシンは、第1プロキシノードまたは第2プロキシノードとして構成され得る。例えば、第1プロキシノードまたは第2プロキシノードは、NFV技術を使用することによって、汎用物理サーバに基づいて実装され得る。第1プロキシノードまたは第2プロキシノードは、仮想ホスト、仮想ルータ、または仮想スイッチである。本願を読んだ後、当業者は、NFV技術を使用することによって、汎用物理サーバ上に、上記機能を有する第1プロキシノードまたは第2プロキシノードを仮想化し得る。ここでは詳細を再び説明しない。
例えば、仮想化デバイスはコンテナであり得、コンテナは、隔離仮想化環境を提供するために使用されるエンティティである。例えば、コンテナはドッカーコンテナであり得る。コンテナは、第1プロキシノードまたは第2プロキシノードとして構成され得る。例えば、プロキシノードは、対応する画像を使用することによって作成され得る。例えば、2つのコンテナインスタンス、すなわち、コンテナインスタンスプロキシコンテナ1およびコンテナインスタンスプロキシコンテナ2は、プロキシコンテナの画像を使用することによって、プロキシコンテナ(プロキシサービスを提供するコンテナ)について作成され得る。コンテナインスタンスプロキシコンテナ1は、第1プロキシノードとして提供され、コンテナインスタンスプロキシコンテナ2は、第2プロキシノードとして提供される。コンテナ技術が実装のために使用されるとき、プロキシノードは、物理マシンのカーネルを使用することによって動作し得、複数のプロキシノードは、物理マシンのオペレーティングシステムを共有し得る。コンテナ技術は、異なるプロキシノードを隔離するために使用され得る。コンテナ化されたプロキシノードは、仮想化環境において動作し得、例えば、仮想マシンにおいて動作し得、または、コンテナ化されたプロキシノードは、物理マシンにおいて直接的に動作し得る。
例えば、仮想化デバイスはポッドであり得る。ポッドは、コンテナ化されたアプリケーションを展開、管理、およびオーケストレートするためのKubernetesの基本ユニットである(Kubernetesは、Googleのオープンソースコンテナまたはオーケストレーションエンジンであり、英語で完結にK8sと称される)。ポッドは1または複数のコンテナを含み得る。同一のポッドにおける全部のコンテナは通常、同一のホスト上に展開される。このようにして、同一のポッドにおける全部のコンテナは、ホストを通じて互いに通信し得、ホストの記憶リソースおよびネットワークリソースを共有し得る。ポッドは、第1プロキシノードまたは第2プロキシノードとして構成され得る。例えば、具体的には、コンテナアズアサービス(container as a service, CaaS、コンテナベースのPaaSサービス)は、ポッドを作成するよう指示され得、ポッドは、第1プロキシノードまたは第2プロキシノードとして提供される。
当然、プロキシノードは代替的に、別の仮想化デバイスであり得る。ここでは詳細を説明しない。
いくつかの可能な実施形態において、プロキシノードは代替的に、汎用プロセッサによって実装され得る。例えば、汎用プロセッサはチップの形態であり得る。具体的に、第1プロキシノードまたは第2プロキシノードを実装する汎用プロセッサは、処理回路、ならびに、処理回路に内部的に接続され通信するインバウンドインタフェースおよびアウトバウンドインタフェースを含む。処理回路は、インバウンドインタフェースを通じて、上記の方法の実施形態におけるパケット生成段階を実行するよう構成される。処理回路は、インバウンドインタフェースを通じて、上記方法の実施形態における受信段階を実行するよう構成される。処理回路は、アウトバウンドインタフェースを通じて、上記の方法の実施形態における送信段階を実行するよう構成される。任意選択的に、汎用プロセッサは更に記憶媒体を含み得る。処理回路は、記憶媒体を使用することによって、上記方法の実施形態における記憶段階を実行するよう構成される。
可能な製品形態において、本願の本実施形態における第1プロキシノードまたは第2プロキシノードは代替的に、1または複数のフィールドプログラマブルゲートアレイ(field programmable gate arrays, FPGA)、プログラマブルロジックデバイス(programmable logic device, PLD)、コントローラ、ステートマシン、ゲートロジック、別個のハードウェアコンポーネント、任意の他の適切な回路、または、本願において説明された機能を実行し得る回路の任意の組み合わせを使用することによって実装され得る。
いくつかの可能な実施形態において、プロキシノードは代替的に、コンピュータプログラム製品を使用することによって実装され得る。具体的に、本願の実施形態は、コンピュータプログラム製品を提供する。コンピュータプログラム製品が第1プロキシノード上で実行するとき、第1プロキシノードは、上記の方法の実施形態におけるパケット伝送方法を実行することが可能である。本願の実施形態は更に、コンピュータプログラム製品を提供する。コンピュータプログラム製品が第2プロキシノード上で実行するとき、第2プロキシノードは、上記の方法の実施形態におけるパケット伝送方法を実行することが可能である。
上記の製品形態における第1プロキシノードまたは第2プロキシノードはそれぞれ、上記の方法の実施形態における第1プロキシノードまたは第2プロキシノードの任意の機能を有することが理解されるべきである。ここでは詳細を再び説明しない。
当業者であれば、本明細書に開示される実施形態を参照して説明される方法の段階およびユニットは、電子的ハードウェア、コンピュータソフトウェア、またはそれらの組み合わせによって実装され得ることに気付き得る。ハードウェアとソフトウェアとの間の互換性を明確に説明するべく、上記では概して、機能に基づいて、各実施形態の段階および組成を説明した。これらの機能がハードウェアおよびソフトウェアのどちらで実行されるかは、技術的解決策の特定の用途および設計上の制約で決まる。当業者であれば、異なる方法を用いて、説明された機能を特定の応用ごとに実装してよいが、こうした実装が本願の範囲を超えるものとみなされるべきではない。
当業者であれば、便宜上、および、簡潔な説明の目的で、上記で説明されたシステム、装置、およびユニットの詳細な動作プロセスについては、上記の方法の実施形態における対応の処理を参照することを明確に理解し得る。ここでは詳細を再び説明しない。
本願において提供されるいくつかの実施形態では、開示されたシステム、装置および方法が他の方式で実装されてよいことが理解されるべきである。例えば、説明される装置の実施形態は単に例である。例えば、ユニットの区分けは、論理的な機能の区分けに過ぎず、実際の実装では、別の区分けであってよい。例えば、複数のユニットもしくはコンポーネントが組み合わされるかまたは統合されて別のシステムになってもよく、いくつかの特徴が無視されても行われなくてもよい。加えて、示されたまたは説明された相互連結、すなわち直接的な連結または通信接続が、いくつかのインタフェースを介して実装されてよい。装置間またはユニット間の間接的結合または通信接続は、電気的形式、機械的形式、または別の形式で実現されてもよい。
別個の部分として説明されるユニットは、物理的に別個であっても、そうでなくてもよく、ユニットとして表示される部分は、物理ユニットであっても、そうでなくてもよく、1つの場所に位置しても、複数のネットワークユニットに分散されてもよい。ユニットの一部または全部は、本願における実施形態における解決手段の目的を実現するために、実際の要件に基づいて選択され得る。
加えて、本願の実施形態における機能ユニットは、1つの処理ユニットに統合され得、ユニットの各々は、物理的に単独で存在し得るか、または、2以上のユニットが1つのユニットに統合され得る。統合されたユニットは、ハードウェアの形で実装されてもよく、ソフトウェア機能ユニットの形で実装されてもよい。
統合されたユニットがソフトウェア機能ユニットの形式で実装され、独立の製品として販売または使用されるとき、統合されたユニットは、コンピュータ可読記憶媒体に記憶されてよい。そのような理解に基づいて、本願における本質的な技術的解決手段、または、従来技術に貢献する部分、または、技術的解決手段の全部もしくは一部は、ソフトウェア製品の形態で実装され得る。コンピュータソフトウェア製品は、記憶媒体に記憶され、本願の実施形態において説明される方法の段階の全部または一部を実行するようコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイス、または同様のものであり得る)に指示するための複数の命令を含む。上述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク、または光ディスクなどの、プログラムコードを記憶できる任意の媒体を含む。
上述の説明は単に、本願の特定の実装であり、本願の保護範囲を限定する意図は無い。本願において開示された技術的範囲内で当業者が容易に考え出すあらゆる修正または置き換えは、本願の保護範囲に含まれることになる。したがって、本願の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
前述の実施形態の全部または一部が、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組み合わせを使用して実装されてよい。これらの実施形態を実装するためにソフトウェアが使用される場合は、当該実施形態は、コンピュータプログラム製品の形態で完全にまたは部分的に実装され得る。コンピュータプログラム製品は、1または複数のコンピュータプログラム命令を含む。コンピュータプログラム命令がコンピュータ上でロードおよび実行されるとき、本願の実施形態に係る手順または機能の全部または一部が生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラマブル装置であり得る。コンピュータ命令は、コンピュータ可読記憶媒体に記憶され得るか、またはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信され得る。例えば、コンピュータプログラム命令は、有線または無線方式で、ウェブサイト、コンピュータ、サーバ、または、データセンタから、別のウェブサイト、コンピュータ、サーバ、またはデータセンタへ伝送され得る。コンピュータ可読記憶媒体は、コンピュータ、または、1もしくは複数の使用可能な媒体を統合するサーバもしくはデータセンタ等のデータ記憶デバイスによってアクセス可能な任意の使用可能な媒体であってよい。使用可能な媒体は、磁気媒体(例えば、フロッピディスク、ハードディスクまたは磁気テープ)、光媒体(例えば、デジタルビデオディスク(digital video disc、DVD))または半導体媒体(例えば、ソリッドステートドライブ)等であってよい。
当業者であれば、実施形態の段階の全部またはいくつかがハードウェアまたは関連ハードウェアに命令するプログラムによって実装されてよいことを理解し得る。プログラムは、コンピュータ可読記憶媒体に記憶されてよい。記憶媒体は、リードオンリメモリ、磁気ディスク、光ディスク等であってよい。
上記の説明は、単に本願の任意の実施形態であり、本願を限定することを意図するものではない。本願の原理を逸脱しない任意の修正、同等の置換、または改善は、本願の保護範囲に含まれるものとする。
[他の可能な項目]
(項目1)
第1プロキシノードに適用されるパケット伝送方法であって、
第1パケットを受信する段階であって、前記第1パケットはセグメントルーティングヘッダSRHを含み、前記第1パケットの宛先アドレスは、エンドポイント動的プロキシセグメント識別子SIDである、段階と、
前記エンドポイント動的プロキシSID、前記第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する段階であって、前記第2パケットは前記第1バイパスSID、制御情報、および前記第1パケットの前記SRHを含み、前記第1バイパスSIDは、前記第2パケットの宛先ノードが前記第2プロキシノードであると識別するために使用され、前記制御情報は、前記第1パケットの前記SRHを記憶するように前記第2プロキシノードに指示するために使用され、前記第2プロキシノードおよび前記第1プロキシノードは同一のサービス機能ノードに接続される、段階と、
前記第2パケットを前記第2プロキシノードへ送信する段階と
を備える方法。
(項目2)
前記エンドポイント動的プロキシSID、前記第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成する前記段階は、
前記第1バイパスSIDを前記第1パケットの前記SRHのセグメントリストに挿入する段階と、
前記第1パケットの前記SRHのセグメント残数SLを更新する段階と、
前記第1パケットの前記宛先アドレスを更新する段階であって、それにより前記第2パケットを取得し、前記第2パケットのSLは前記第1パケットのSLより大きい、段階と
を備える項目1に記載の方法。
(項目3)
前記第1パケットの前記SRHのセグメント残数SLを更新する前記段階は、
前記第1パケットの前記SLを1増加させる段階を含み、
前記第1パケットの前記宛先アドレスを更新する前記段階は、
前記第1パケットの前記宛先アドレスを前記第1バイパスSIDに更新する段階を含む、
項目2に記載の方法。
(項目4)
前記方法は更に、
1または複数の対象SIDを前記第1パケットの前記SRHの前記セグメントリストに挿入する段階であって、前記1または複数の対象SIDは対象転送経路を指示するために使用され、前記対象転送経路は、前記第1プロキシノードから前記第2プロキシノードへの経路である、段階を備え、
前記第1パケットの前記SRHのセグメント残数SLを更新する前記段階は、
前記第1パケットの前記SLをN増加させる段階であって、Nは1より大きい正の整数である、段階を含み、
前記第1パケットの前記宛先アドレスを更新する前記段階は、
前記第1パケットの前記宛先アドレスを、前記1または複数の対象SIDにおける次のセグメントルーティングSRノードに対応するSIDに更新する段階を含む、
項目2に記載の方法。
(項目5)
前記制御情報は、前記第2パケットの拡張ヘッダに保持されるか、
前記制御情報は、前記第1バイパスSIDに保持されるか、
前記制御情報は、前記第2パケットのインターネットプロトコルIPヘッダに保持されるか、または、
前記制御情報は、前記第2パケットのSRHにおけるタイプ長値TLVに保持される、
項目1から4のいずれか一項に記載の方法。
(項目6)
第1パケットを受信する前記段階の後に、前記方法は更に、
前記第1パケットの前記SRHを第1キャッシュエントリに記憶する段階と、
前記第1パケットに基づいて第3パケットを生成する段階であって、前記第3パケットは、前記第1パケットのペイロードを含むが、前記第1パケットの前記SRHを含まない、段階と、
前記第3パケットを前記サービス機能ノードへ送信する段階と
を備える、項目1から5のいずれか一項に記載の方法。
(項目7)
前記第1パケットの前記SRHを第1キャッシュエントリに記憶する前記段階は、
前記第1キャッシュエントリの識別子をインデックスとして使用することによって前記第1パケットの前記SRHを前記第1キャッシュエントリに記憶する段階を含む、項目6に記載の方法。
(項目8)
前記第2パケットは更に、前記第1キャッシュエントリの前記識別子を含み、前記制御情報は更に、前記第1キャッシュエントリの前記識別子と、第2キャッシュエントリの識別子との間のマッピング関係を記憶するように前記第2プロキシノードに指示するために使用され、前記第2キャッシュエントリは、前記第1パケットの前記SRHを記憶するために前記第2プロキシノードによって使用されるキャッシュエントリである、項目7に記載の方法。
(項目9)
前記第3パケットは、前記第1キャッシュエントリの識別子を含み、前記第3パケットを前記サービス機能ノードへ送信する前記段階の後に、前記方法は更に、
第4パケットを前記サービス機能ノードから受信する段階であって、前記第4パケットは前記第1キャッシュエントリの識別子を含む、段階と、
前記第1キャッシュエントリの前記識別子をインデックスとして使用することによってクエリを実行する段階であって、それにより前記第1パケットの前記SRHを取得する、段階と、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて第5パケットを生成する段階であって、前記第5パケットは、前記第4パケットのペイロードおよび前記第1パケットの前記SRHを含む、段階と、
前記第5パケットを送信する段階と
を備える、項目6に記載の方法。
(項目10)
前記第2パケットを生成するためのトリガ条件は、
前記第1キャッシュエントリが生成されたことが検出されたこと、および、
前記第1キャッシュエントリが更新されたことが検出されたこと
のうち1または複数を含む、項目6に記載の方法。
(項目11)
前記第1パケットの前記SRHを第1キャッシュエントリに記憶する前記段階は、
前記第1パケットに対応するフロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによって、前記第1パケットの前記SRHを前記第1キャッシュエントリに記憶する段階を含む、
項目6に記載の方法。
(項目12)
前記方法は更に、
構成命令を受信する段階であって、前記構成命令は、各仮想プライベートネットワークVPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含む、段階と、
前記構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶する段階と
を備える、項目11に記載の方法。
(項目13)
前記第3パケットに対応するフロー識別子が、前記第1パケットに対応する前記フロー識別子であり、前記第3パケットはVPN識別子を含み、前記第3パケットを前記サービス機能ノードへ送信する前記段階の後に、前記方法は更に、
第4パケットを前記サービス機能ノードから受信する段階であって、前記第4パケットに対応するフロー識別子は、前記第1パケットに対応する前記フロー識別子であり、前記第4パケットは前記VPN識別子およびペイロードを含む、段階と、
前記VPN識別子、前記エンドポイント動的プロキシSID、および前記第4パケットに対応する前記フロー識別子に基づいてクエリを実行する段階であって、前記第1パケットの前記SRHを取得する、段階と、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて、第5パケットを生成する段階であって、前記第5パケットは、前記第4パケットのペイロードおよび前記第1パケットの前記SRHを含む、段階と、
前記第5パケットを送信する段階と
を備える、項目11または12に記載の方法。
(項目14)
前記第2パケットは更に、前記第1パケットの前記ペイロードを含み、前記制御情報は更に、前記第1パケットの前記ペイロードを前記サービス機能ノードへ送信するように前記第2プロキシノードに指示するために使用され、前記第2パケットを前記第2プロキシノードへ送信する前記段階の前に、前記方法は更に、
障害イベントを検出する段階であって、前記障害イベントは、前記第1プロキシノードと前記サービス機能ノードとの間のリンクに障害が発生するイベント、または、前記第1プロキシノードに障害が発生するイベントのうち少なくとも1つを含む、段階を備える、項目1から13のいずれか一項に記載の方法。
(項目15)
前記第1プロキシノードは、第1リンクを通じて前記第2プロキシノードに接続され、前記第2パケットを前記第2プロキシノードへ送信する前記段階は、前記第1リンクに対応する第1アウトバウンドインタフェースを通じて第2パケットを前記第2プロキシノードへ送信する段階を含むか、または、
前記第1プロキシノードは、第2リンクを通じてルーティングノードに接続され、前記ルーティングノードは、第3リンクを通じて前記第2プロキシノードに接続され、前記第2パケットを前記第2プロキシノードへ送信する前記段階は、前記第2リンクに対応する第2アウトバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードへ送信する段階であって、前記第2パケットは、前記ルーティングノードによって、前記第3リンクを通じて前記第2プロキシノードへ転送される、段階を含む、
項目1から14のいずれか一項に記載の方法。
(項目16)
前記第2パケットを前記第2プロキシノードへ送信する前記段階は、
前記第1リンクのステータスを検出する段階と、
前記第1リンクが利用可能な状態にある場合、前記第1リンクに対応する前記第1アウトバウンドインタフェースを通じて前記第2パケットを前記第2プロキシノードへ送信する段階、または、
前記第1リンクが利用不可能な状態にある場合、前記第2リンクに対応する前記第2アウトバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードへ送信する段階と
を含む、項目15に記載の方法。
(項目17)
前記第2パケットを前記第2プロキシノードへ送信する前記段階は、複数の第2パケットを前記第2プロキシノードへ継続的に送信する段階を含む、または、
前記第2パケットを前記第2プロキシノードへ送信する前記段階の後に、前記方法は更に、第6パケットが受信されないとき、前記第2パケットを前記第2プロキシノードへ再伝送する段階であって、前記第6パケットの送信元アドレスは前記第1バイパスSIDであり、前記第6パケットは、前記第1プロキシノードに対応する第2バイパスSIDを含み、前記第2バイパスSIDは、前記第6パケットの宛先ノードが前記第1プロキシノードであると識別するために使用され、前記第6パケットは、前記第2パケットが受信されたことを指示するために使用される、段階を備える、
項目1から16のいずれか一項に記載の方法。
(項目18)
第2プロキシノードに適用されるパケット伝送方法であって、前記方法は、
第2パケットを第1プロキシノードから受信する段階であって、前記第1プロキシノードおよび第2プロキシノードは同一のサービス機能ノードに接続され、前記第2パケットは、前記第2プロキシノードに対応する第1バイパスセグメント識別子SID、制御情報、および、第1パケットのセグメントルーティングヘッダSRHを含み、前記第1バイパスSIDは、前記第2パケットの宛先ノードが前記第2プロキシノードであると識別するために使用される、段階と、
前記制御情報が、前記第1パケットの前記SRHを記憶するように前記第2プロキシノードに指示していると判定する段階と、
前記第2パケットを解析する段階であって、それにより前記第1パケットの前記SRHを取得する、段階と、
前記第1パケットの前記SRHを第2キャッシュエントリに記憶する段階と
を備える方法。
(項目19)
前記第2パケットを解析する前記段階であって、それにより前記第1パケットの前記SRHを取得する、前記段階は、
前記第1バイパスSIDを前記第2パケットのSRHのセグメントリストから削除する段階と、
前記第2パケットの前記SRHのセグメント残数SLを1減少させる段階であって、それにより前記第1パケットの前記SRHを取得する、段階と
を含む、項目18に記載の方法。
(項目20)
前記制御情報は、前記第2パケットの拡張ヘッダに保持されるか、
前記制御情報は、前記第1バイパスSIDに保持されるか、
前記制御情報は、前記第2パケットのインターネットプロトコルIPヘッダに保持されるか、または、
前記制御情報は、前記第2パケットのSRHにおけるタイプ長値TLVに保持される、
項目18または19に記載の方法。
(項目21)
前記第1パケットの前記SRHを第2キャッシュエントリに記憶する前記段階は、
前記第2キャッシュエントリの識別子をインデックスとして使用することによって、前記第1パケットの前記SRHを前記第2キャッシュエントリに記憶する段階を含む、項目18から20のいずれか一項に記載の方法。
(項目22)
前記第2パケットは更に、第1キャッシュエントリの識別子を含み、前記第1キャッシュエントリは、前記第1パケットの前記SRHを記憶するために前記第1プロキシノードによって使用されるキャッシュエントリであり、前記方法は更に、
前記制御情報が更に、前記第1キャッシュエントリの前記識別子と、前記第2キャッシュエントリの前記識別子との間のマッピング関係を記憶するよう前記第2プロキシノードに指示していると判定する段階と、
前記第1キャッシュエントリの前記識別子と、前記第2キャッシュエントリの前記識別子との間の前記マッピング関係を記憶する段階と
を備える、項目21に記載の方法。
(項目23)
前記第1キャッシュエントリの前記識別子と、前記第2キャッシュエントリの前記識別子との間の前記マッピング関係を記憶する前記段階の後に、前記方法は更に、
第4パケットを前記サービス機能ノードから受信する段階であって、前記第4パケットは、前記第1キャッシュエントリの前記識別子およびペイロードを含む、段階と、
前記第1キャッシュエントリの前記識別子に基づいて、前記第1キャッシュエントリの前記識別子と、前記第2キャッシュエントリの前記識別子との間の前記マッピング関係をクエリする段階であって、それにより、前記第1キャッシュエントリの前記識別子に対応する、前記第2キャッシュエントリの識別子を取得する、段階と、
前記第2キャッシュエントリの前記識別子を前記インデックスとして使用することによって前記第2キャッシュエントリをクエリする段階であって、それにより、前記第1パケットの前記SRHを取得する、段階と、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて第5パケットを生成する段階であって、前記第5パケットは、前記第4パケットのペイロード、および、前記第1パケットの前記SRHを含む、段階と、
前記第5パケットを送信する段階と
を備える、項目22に記載の方法。
(項目24)
前記第2パケットに対応するフロー識別子は、前記第1パケットに対応するフロー識別子であり、前記第1パケットの前記SRHはエンドポイント動的プロキシSIDを含み、前記第1パケットの前記SRHを第2キャッシュエントリに記憶する前記段階は、
前記第2パケットに対応する前記フロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによって、前記第1パケットの前記SRHを前記第2キャッシュエントリに記憶する段階を含む、
項目18から23のいずれか一項に記載の方法。
(項目25)
前記方法は更に、
構成命令を受信する段階であって、前記構成命令は、各仮想プライベートネットワークVPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含む、段階と、
前記構成命令に従って、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶する段階と
を備える、項目24に記載の方法。
(項目26)
前記第2パケットに対応する前記フロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによって、前記第1パケットの前記SRHを前記第2キャッシュエントリに記憶する前記段階の後に、前記方法は更に、
前記第4パケットを前記サービス機能ノードから受信する段階であって、前記第4パケットに対応するフロー識別子は、前記第1パケットに対応する前記フロー識別子であり、前記第4パケットは、前記VPN識別子および前記ペイロードを含む、段階と、
前記VPN識別子、前記エンドポイント動的プロキシSID、および、前記第4パケットに対応する前記フロー識別子に基づいて前記第2キャッシュエントリをクエリする段階であって、それにより前記第1パケットの前記SRHを取得する、段階と、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて、前記第5パケットを生成する段階であって、前記第5パケットは、前記第4パケットの前記ペイロードおよび前記第1パケットの前記SRHを含む、段階と、
前記第5パケットを送信する段階と
を備える、項目24または25に記載の方法。
(項目27)
第2パケットを第1プロキシノードから受信する前記段階の後に、前記方法は更に、
前記制御情報が更に、前記第1パケットのペイロードを前記サービス機能ノードへ送信するように前記第2プロキシノードに指示していると判定する段階と、
前記第2パケットに基づいて第3パケットを生成する段階であって、前記第3パケットは、前記第1パケットの前記ペイロードを含む、段階と、
前記第3パケットを前記サービス機能ノードへ送信する段階と
を備える、項目18から26のいずれか一項に記載の方法。
(項目28)
前記第2プロキシノードは、第1リンクを通じて前記第1プロキシノードに接続され、第2パケットを第1プロキシノードから受信する前記段階は、前記第1リンクに対応する第1インバウンドインタフェースを通じて、前記第2パケットを前記第1プロキシノードから受信する段階を含む、または、
前記第2プロキシノードは、第3リンクを通じてルーティングノードに接続され、前記ルーティングノードは、第2リンクを通じて前記第1プロキシノードに接続され、第2パケットを第1プロキシノードから受信する前記段階は、前記第3リンクに対応する第2インバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードから受信する段階であって、前記第2パケットは、前記第1プロキシノードによって、前記第2リンクを通じて前記ルーティングノードへ送信される、段階を含む、
項目18から27のいずれか一項に記載の方法。
(項目29)
第2パケットを第1プロキシノードから受信する前記段階は、複数の第2パケットを前記第1プロキシノードから継続的に受信する段階を含む、または、
第2パケットを第1プロキシノードから受信する前記段階の後に、前記方法は更に、前記第1バイパスSID、前記第2プロキシノードに対応する第2バイパスSID、および、前記第2パケットに基づいて、第6パケットを生成する段階と、
前記第6パケットを前記第1プロキシノードへ送信する段階であって、前記第6パケットの送信元アドレスは前記第1バイパスSIDであり、前記第6パケットは、前記第1プロキシノードに対応する第2バイパスSIDを含み、前記第2バイパスSIDは、前記第6パケットの宛先ノードが前記第1プロキシノードであると識別するために使用され、前記第6パケットは、前記第2パケットが受信されたことを指示するために使用される、段階と
を備える、項目18から27のいずれか一項に記載の方法。
(項目30)
第1プロキシノードであって、前記第1プロキシノードは、
第1パケットを受信するよう構成される受信モジュールであって、前記第1パケットはセグメントルーティングヘッダSRHを含み、前記第1パケットの宛先アドレスは、エンドポイント動的プロキシセグメント識別子SIDである、受信モジュールと、
前記エンドポイント動的プロキシSID、前記第1パケット、および、第2プロキシノードに対応する第1バイパスSIDに基づいて第2パケットを生成するよう構成される生成モジュールであって、前記第2パケットは、前記第1バイパスSID、制御情報、および、前記第1パケットの前記SRHを含み、前記第1バイパスSIDは、前記第2パケットの宛先ノードが前記第2プロキシノードであると識別するために使用され、前記制御情報は、前記第1パケットの前記SRHを記憶するよう前記第2プロキシノードに指示するために使用され、前記第2プロキシノードおよび前記第1プロキシノードは同一のサービス機能ノードに接続される、生成モジュールと、
前記第2パケットを前記第2プロキシノードへ送信するよう構成される送信モジュールと
を備える第1プロキシノード。
(項目31)
前記生成モジュールは、前記第1バイパスSIDを前記第1パケットの前記SRHのセグメントリストに挿入し、前記第1パケットの前記SRHのセグメント残数SLを更新し、前記第1パケットの前記宛先アドレスを更新して前記第2パケットを取得するよう構成され、前記第2パケットのSLは、前記第1パケットのSLより大きい、項目30に記載の第1プロキシノード。
(項目32)
前記生成モジュールは、前記第1パケットの前記SLを1増加させ、前記第1パケットの前記宛先アドレスを前記第1バイパスSIDに更新するよう構成される、項目31に記載の第1プロキシノード。
(項目33)
前記生成モジュールは、1または複数の対象SIDを前記第1パケットの前記SRHの前記セグメントリストに挿入することであって、前記1または複数の対象SIDは対象転送経路を指示するために使用され、前記対象転送経路は、前記第1プロキシノードから前記第2プロキシノードへの経路である、こと、前記第1パケットの前記SLをN増加させることであって、Nは1より大きい正の整数である、こと、および、前記第1パケットの前記宛先アドレスを、前記1または複数の対象SIDにおける次のセグメントルーティングSRノードに対応するSIDに更新することを行うよう構成される、項目31に記載の第1プロキシノード。
(項目34)
前記制御情報は、前記第2パケットの拡張ヘッダに保持されるか、
前記制御情報は、前記第1バイパスSIDに保持されるか、
前記制御情報は、前記第2パケットのインターネットプロトコルIPヘッダに保持されるか、または、
前記制御情報は、前記第2パケットのSRHにおけるタイプ長値TLVに保持される、
項目30から33のいずれか一項に記載の第1プロキシノード。
(項目35)
前記第1プロキシノードは更に、
前記第1パケットの前記SRHを第1キャッシュエントリに記憶するよう構成される記憶モジュールを含み、
前記生成モジュールは更に、前記第1パケットに基づいて第3パケットを生成するよう構成され、前記第3パケットは、前記第1パケットのペイロードを含むが、前記第1パケットの前記SRHを含まず、
前記送信モジュールは更に、前記第3パケットを前記サービス機能ノードへ送信するよう構成される、
項目30から34のいずれか一項に記載の第1プロキシノード。
(項目36)
前記記憶モジュールは、前記第1キャッシュエントリの識別子をインデックスとして使用することによって、前記第1パケットの前記SRHを前記第1キャッシュエントリに記憶するよう構成される、項目35に記載の第1プロキシノード。
(項目37)
前記第2パケットは更に、前記第1キャッシュエントリの前記識別子を含み、前記制御情報は更に、前記第1キャッシュエントリの前記識別子と、第2キャッシュエントリの識別子との間のマッピング関係を記憶するように前記第2プロキシノードに指示するために使用され、前記第2キャッシュエントリは、前記第1パケットの前記SRHを記憶するために前記第2プロキシノードによって使用されるキャッシュエントリである、項目36に記載の第1プロキシノード。
(項目38)
前記受信モジュールは更に、前記サービス機能ノードから第4パケットを受信するよう構成され、前記第4パケットは、前記第1キャッシュエントリの識別子を含み、
前記第1プロキシノードは更に、前記第1キャッシュエントリの前記識別子をインデックスとして使用することによってクエリを実行して前記第1パケットの前記SRHを取得するよう構成されるクエリモジュールを備え、前記生成モジュールは更に、前記第4パケットおよび前記第1パケットの前記SRHに基づいて第5パケットを生成するよう構成され、前記第5パケットは、前記第4パケットのペイロード、および、前記第1パケットの前記SRHを含み、
前記送信モジュールは更に、前記第5パケットを送信するよう構成される、項目35に記載の第1プロキシノード。
(項目39)
前記第2パケットを生成するためのトリガ条件は、
前記第1キャッシュエントリが生成されたと検出されたこと、および、
前記第1キャッシュエントリが更新されたと検出されたこと
のうち1または複数を含む、項目35に記載の第1プロキシノード。
(項目40)
前記記憶モジュールは、前記第1パケットに対応するフロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによって、前記第1パケットの前記SRHを前記第1キャッシュエントリに記憶するよう構成される、項目35に記載の第1プロキシノード。
(項目41)
前記受信モジュールは更に、構成命令を受信するよう構成され、前記構成命令は、各仮想プライベートネットワークVPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含み、
前記記憶モジュールは更に、前記構成命令に従って、前記エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶するよう構成される、
項目40に記載の第1プロキシノード。
(項目42)
前記第3パケットに対応するフロー識別子が、前記第1パケットに対応する前記フロー識別子であり、前記第3パケットはVPN識別子を含み、
前記受信モジュールは更に、第4パケットを前記サービス機能ノードから受信するよう構成され、前記第4パケットに対応するフロー識別子は、前記第1パケットに対応する前記フロー識別子であり、前記第4パケットは前記VPN識別子を含み、
前記第1プロキシノードは更に、前記VPN識別子、前記エンドポイント動的プロキシSID、および、前記第4パケットに対応する前記フロー識別子に基づいてクエリを実行して前記第1パケットの前記SRHを取得するよう構成されるクエリモジュールを含み、
前記クエリモジュールは更に、前記第1パケットに対応する前記フロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによってクエリを実行して前記第1パケットの前記SRHを取得するよう構成され、
前記生成モジュールは更に、前記第4パケットおよび前記第1パケットの前記SRHに基づいて、第5パケットを生成するよう構成され、前記第5パケットは、前記第4パケットのペイロードおよび前記第1パケットの前記SRHを含み、
前記送信モジュールは更に、前記第5パケットを送信するよう構成される、
項目40または41に記載の第1プロキシノード。
(項目43)
前記第2パケットは更に、前記第1パケットの前記ペイロードを含み、前記制御情報は更に、前記第1パケットの前記ペイロードを前記サービス機能ノードへ送信するように前記第2プロキシノードに指示するために使用され、前記第1プロキシノードは更に、障害イベントを検出するよう構成される検出モジュールを含み、前記障害イベントは、前記第1プロキシノードと前記サービス機能ノードとの間のリンクに障害が発生するイベント、または、前記第1プロキシノードに障害が発生するイベントの少なくとも1つを含む、項目30から42のいずれか一項に記載の第1プロキシノード。
(項目44)
前記第1プロキシノードは、第1リンクを通じて前記第2プロキシノードに接続され、前記送信モジュールは、前記第1リンクに対応する第1アウトバウンドインタフェースを通じて、前記第2パケットを前記第2プロキシノードへ送信するよう構成されるか、または、
前記第1プロキシノードは、第2リンクを通じてルーティングノードに接続され、前記ルーティングノードは、第3リンクを通じて前記第2プロキシノードに接続され、前記送信モジュールは、前記第2リンクに対応する第2アウトバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードへ送信するよう構成され、前記第2パケットは、前記ルーティングノードによって、前記第3リンクを通じて前記第2プロキシノードへ転送される、
項目30から43のいずれか一項に記載の第1プロキシノード。
(項目45)
前記検出モジュールは更に、前記第1リンクのステータスを検出するよう構成され、
前記送信モジュールは、前記第1リンクが利用可能な状態にある場合、前記第1リンクに対応する前記第1アウトバウンドインタフェースを通じて、前記第2パケットを前記第2プロキシノードへ送信するか、または、前記第1リンクが利用不可能な状態にある場合、前記第2リンクに対応する前記第2アウトバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードへ送信するよう構成される、
項目44に記載の第1プロキシノード。
(項目46)
前記送信モジュールは、複数の第2パケットを前記第2プロキシノードへ継続的に送信するよう構成されるか、または、第6パケットが受信されないとき、前記第2パケットを前記第2プロキシノードへ再伝送するよう構成され、前記第6パケットの送信元アドレスは前記第1バイパスSIDであり、前記第6パケットは、前記第1プロキシノードに対応する第2バイパスSIDを含み、前記第2バイパスSIDは、前記第6パケットの宛先ノードが前記第1プロキシノードであると識別するために使用され、
前記第6パケットは、前記第2パケットが受信されることを指示するために使用される、
項目30から45のいずれか一項に記載の第1プロキシノード。
(項目47)
第2プロキシノードであって、前記第2プロキシノードは、
第2パケットを第1プロキシノードから受信するよう構成される受信モジュールであって、前記第1プロキシノードおよび前記第2プロキシノードは同一のサービス機能ノードに接続され、前記第2パケットは、前記第2プロキシノードに対応する第1バイパスセグメント識別子SID、制御情報、および、第1パケットのセグメントルーティングヘッダSRHを含み、前記第1バイパスSIDは、前記第2パケットの宛先ノードが前記第2プロキシノードであると識別するために使用される、受信モジュールと、
前記制御情報が、前記第1パケットの前記SRHを記憶するよう前記第2プロキシノードに指示していると判定するよう構成される判定モジュールと、
前記第2パケットを解析して前記第1パケットの前記SRHを取得するよう構成される解析モジュールと、
前記第1パケットの前記SRHを第2キャッシュエントリに記憶するよう構成される記憶モジュールと
を備える第2プロキシノード。
(項目48)
前記解析モジュールは、前記第1バイパスSIDを前記第2パケットのSRHのセグメントリストから削除し、前記第2パケットの前記SRHのセグメント残数SLを1減少させて前記第1パケットの前記SRHを取得するよう構成される、項目47に記載の第2プロキシノード。
(項目49)
前記制御情報は、前記第2パケットの拡張ヘッダに保持されるか、
前記制御情報は、前記第1バイパスSIDに保持されるか、
前記制御情報は、前記第2パケットのインターネットプロトコルIPヘッダに保持されるか、または、
前記制御情報は、前記第2パケットのSRHにおけるタイプ長値TLVに保持される、
項目47または48に記載の第2プロキシノード。
(項目50)
前記記憶モジュールは、前記第2キャッシュエントリの識別子をインデックスとして使用することによって、前記第1パケットの前記SRHを前記第2キャッシュエントリに記憶するよう構成される、項目47から49のいずれか一項に記載の第2プロキシノード。
(項目51)
前記第2パケットは更に、第1キャッシュエントリの識別子を含み、前記第1キャッシュエントリは、前記第1パケットの前記SRHを記憶するために前記第1プロキシノードによって使用されるキャッシュエントリであり、
前記判定モジュールは更に、前記制御情報が更に、前記第1キャッシュエントリの前記識別子と前記第2キャッシュエントリの前記識別子との間のマッピング関係を記憶するように前記第2プロキシノードに指示していると判定するよう構成され、
前記記憶モジュールは更に、前記第1キャッシュエントリの前記識別子と、前記第2キャッシュエントリの前記識別子との間の前記マッピング関係を記憶するよう構成される、
項目50に記載の第2プロキシノード。
(項目52)
前記受信モジュールは更に、第4パケットを前記サービス機能ノードから受信するよう構成され、前記第4パケットは、前記第1キャッシュエントリの前記識別子およびペイロードを含み、
前記第2プロキシノードは更に、
前記第1キャッシュエントリの前記識別子に基づいて、前記第1キャッシュエントリの前記識別子と前記第2キャッシュエントリの前記識別子との間の前記マッピング関係をクエリして、前記第1キャッシュエントリの前記識別子に対応する前記第2キャッシュエントリの前記識別子を取得するよう構成されるクエリモジュールであって、前記第2キャッシュエントリの前記識別子を前記インデックスとして使用することによって、前記第2キャッシュエントリをクエリして、前記第1パケットの前記SRHを取得するよう更に構成されるクエリモジュールと、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて第5パケットを生成するよう構成される生成モジュールであって、前記第5パケットは、前記第4パケットのペイロードおよび前記第1パケットの前記SRHを含む、生成モジュールと、
前記第5パケットを送信するよう構成される送信モジュールと
を備える、項目51に記載の第2プロキシノード。
(項目53)
前記第2パケットに対応するフロー識別子は、前記第1パケットに対応するフロー識別子であり、前記第1パケットの前記SRHは、エンドポイント動的プロキシSIDを含み、前記記憶モジュールは、前記第1パケットに対応する前記フロー識別子および前記エンドポイント動的プロキシSIDをインデックスとして使用することによって、前記第1パケットの前記SRHを前記第2キャッシュエントリに記憶するよう構成される、項目47から52のいずれか一項に記載の第2プロキシノード。
(項目54)
前記受信モジュールは更に、構成命令を受信するよう構成され、前記構成命令は、各仮想プライベートネットワークVPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含み、
前記記憶モジュールは更に、前記構成命令に従って、前記エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶するよう構成される、
項目53に記載の第2プロキシノード。
(項目55)
前記受信モジュールは更に、前記第4パケットを前記サービス機能ノードから受信するよう構成され、前記第4パケットに対応するフロー識別子は、前記第1パケットに対応する前記フロー識別子であり、前記第4パケットは、前記VPN識別子および前記ペイロードを含み、
前記第2プロキシノードは更に、
前記VPN識別子、前記エンドポイント動的プロキシSID、および、前記第4パケットに対応する前記フロー識別子に基づいてクエリを実行して、前記第1パケットの前記SRHを取得するよう構成される前記クエリモジュールと、
前記第4パケットおよび前記第1パケットの前記SRHに基づいて、前記第5パケットを生成するよう構成される前記生成モジュールであって、前記第5パケットは、前記第4パケットの前記ペイロードおよび前記第1パケットの前記SRHを含む、前記生成モジュールと、
前記第5パケットを送信するよう構成される前記送信モジュールと
を備える、項目53または54に記載の第2プロキシノード。
(項目56)
前記判定モジュールは更に、前記制御情報が更に、前記第1パケットのペイロードを前記サービス機能ノードへ送信するよう前記第2プロキシノードに指示していると判定するよう構成され、
前記生成モジュールは更に、前記第2パケットに基づいて、第3パケットを生成するよう構成され、前記第3パケットは、前記第1パケットの前記ペイロードを含み、
前記送信モジュールは更に、前記第3パケットを前記サービス機能ノードへ送信するよう構成される、
項目47から55のいずれか一項に記載の第2プロキシノード。
(項目57)
前記第2プロキシノードは、第1リンクを通じて前記第1プロキシノードに接続され、前記受信モジュールは、前記第1リンクに対応する第1インバウンドインタフェースを通じて前記第2パケットを前記第1プロキシノードから受信するよう構成されるか、または、
前記第2プロキシノードは、第3リンクを通じてルーティングノードに接続され、前記ルーティングノードは、第2リンクを通じて前記第1プロキシノードに接続され、前記受信モジュールは、前記第3リンクに対応する第2インバウンドインタフェースを通じて、前記第2パケットを前記ルーティングノードから受信するよう構成され、前記第2パケットは、前記第1プロキシノードによって、前記第2リンクを通じて前記ルーティングノードへ送信される、
項目47から56のいずれか一項に記載の第2プロキシノード。
(項目58)
前記受信モジュールは、複数の第2パケットを第1プロキシノードから継続的に受信するよう構成されるか、または、
前記生成モジュールは更に、前記第1バイパスSID、前記第2プロキシノードに対応する第2バイパスSID、および前記第2パケットに基づいて、第6パケットを生成するよう構成され、
前記送信モジュールは更に、前記第6パケットを前記第1プロキシノードへ送信するよう構成され、前記第6パケットの送信元アドレスは前記第1バイパスSIDであり、前記第6パケットは、前記第1プロキシノードに対応する第2バイパスSIDを含み、前記第2バイパスSIDは、前記第6パケットの宛先ノードが前記第1プロキシノードであると識別するために使用され、前記第6パケットは、前記第2パケットが受信されたことを指示するために使用される、
項目47から57のいずれか一項に記載の第2プロキシノード。
(項目59)
第1プロキシノードであって、前記第1プロキシノードはプロセッサを含み、前記プロセッサは、命令を実行するよう構成され、その結果、前記第1プロキシノードは、項目1から17のいずれか一項に記載の方法を実行する、第1プロキシノード。
(項目60)
第2プロキシノードであって、前記第2プロキシノードはプロセッサを含み、前記プロセッサは、命令を実行するよう構成され、前記第2プロキシノードは、項目18から29のいずれか一項に記載の方法を実行する、第2プロキシノード。
(項目61)
コンピュータ可読記憶媒体であって、前記記憶媒体は、少なくとも1つの命令を記憶し、前記命令は、プロセッサによって読み出され、その結果、第1プロキシノードは、項目1から17のいずれか一項に記載の方法を実行する、コンピュータ可読記憶媒体。
(項目62)
コンピュータ可読記憶媒体であって、前記記憶媒体は、少なくとも1つの命令を記憶し、前記命令は、プロセッサによって読み出され、その結果、第2プロキシノードは、項目18から29のいずれか一項に記載の方法を実行する、コンピュータ可読記憶媒体。