本出願の目的と技術的なソリューションと利点を明確にするため、これ以降は、添付の図面を参照しながら本出願の実装をさらに詳述する。
本出願における用語「少なくとも1つ」とは、1つまたは複数を意味し、本出願における用語「複数の」とは、2つ以上を意味する。例えば、「複数の第2のパケット」は、2つまたは2つを超える第2のパケットを意味する。「システム」および「ネットワーク」という用語は、本明細書では互換的に使用され得る。
本出願では、「第1」および「第2」などの用語は、基本的に同じ機能を有する同じ項目または類似の項目を区別するために使用される。「第1」、「第2」、および「第n」の間に論理的または時間的依存性はなく、数量および実行順序は限定されないことを理解されたい。
プロセスの順序番号は、本出願の実施形態における実行順序を意味しないことを理解されたい。プロセスの実行順序はプロセスの機能と内部ロジックとに基づいて判定されるべきであり、本出願の実施形態の実施プロセスを制限するものとして解釈されるべきではない。
Aに基づいてBを判定することが、BがAのみに基づいて判定されることを意味するだけでなく、これとは異なり、BがAおよび/または他の情報に基づいて判定されてもよいと当然理解される。
本明細書を通して言及される「一実施形態」または「実施形態」は、実施形態に関連する特定の特徴、構造、または特性が本出願の少なくとも1つの実施形態に含まれることを意味することを理解されたい。したがって、本明細書に現れる「一実施形態では、(in one embodiment)」または「一実施形態では、(in an embodiment)」は、必ずしも同じ実施形態を指すとは限らない。加えて、これらの特定の特徴、構造、または特性は、任意の適切な方式で1つまたは複数の実施形態において組み合わされてよい。
以下では、サービス機能チェーンのシステムアーキテクチャの一例について説明する。
従来の電気通信ネットワークのサービス機能(ファイアウォールおよび負荷分散など)は、通常、ハードウェアリソースと密接に結合され、各サービスノードは、専用デバイスの製品形態である。その結果、展開が複雑になり、容量拡張、移行、およびアップグレードが困難になる。SFCでは、各サービス機能が1つのSFノードに仮想化され、複数のSFノードが結合されて、順序付けられたサービス機能セット、すなわちサービス機能チェーンを取得する。SFCでは、トラフィックは、指定された順序でサービスチェーン内のSFノードを通過する。SFノードは、サービス処理手順を完了するために順次パケットを処理する。一方で、柔軟なプロビジョニングおよびサービスの迅速な展開を容易にするために、SFC技術を使用してハードウェアリソースからサービス機能を切り離すことができる。例えば、新しいサービスがプロビジョニングされる場合、従来の電気通信ネットワークにおけるハードウェアデバイスの再構成およびアップグレードの複雑な操作が回避され得る。新しいSFノードは、新しいSFノードを介して新しいサービスの実行をサポートできるように、SFCによって提供されるサービスチェーンに追加される。一方、SFCは、他の仮想化技術と柔軟に組み合わせられ得る。例えば、SFCは、ネットワーク機能仮想化(Network Function Virtualization、NFV)と組み合わされてもよい。この場合、NFV内のNFV管理ノード、例えば、仮想化ネットワーク機能マネージャ(Network Functions Virtualization Manager、VNFM)は、SFC内のノードを制御するためのSFCの制御プレーンとして機能することができる。別の例として、SFCは、ソフトウェア定義ネットワーキング(Software Defined Network、SDN)と組み合わされてもよい。この場合、SDN内のSDNコントローラ(SDN controller)は、SFC内のノードを制御するためのSFCの制御プレーンとして機能することができる。
SFCのシステムアーキテクチャは、複数のタイプのノードを含むことができ、各タイプのノードは、対応する機能を有し、異なるタイプのノードは、サービスチェーンの全体的な機能を実施するために互いに協働する。通常、SFCのシステムアーキテクチャは、トラフィック分類器(classifier、CF)、SFノード、プロキシ(proxy)ノード、サービス機能フォワーダ(Service Function Forwarder、SFF)ノード、およびルータ(router)ノードを含み得る。
例えば、図1は、本出願の一実施形態によるSFCのシステムアーキテクチャの図である。図1において、SFノードは、SFノード1、SFノード2、SFノード3、またはSFノード4である。SFFノードはSFFノード1またはSFFノード2である。プロキシノードはプロキシノード1またはプロキシノード2であるルータノードは、ルータノード1またはルータノード2である。図1のサービス機能チェーンドメイン(SFCドメイン、SFCドメイン)は、SFC対応ノードのセットである。
SFFノードおよびプロキシノードは、同じデバイスに統合されてもよく、すなわち、SFFノードが配置されるハードウェアデバイスが、プロキシノードの機能をさらに実装することに留意されたい。図1を参照されたい。例えば、SFFノード1およびプロキシノード1は同じハードウェアデバイスに配置され、SFFノード2およびプロキシノード2は同じハードウェアデバイスに配置される。
トラフィック分類器は、SFCの入口ルータであってもよい。トラフィック分類器は、分類規則に従って受信したトラフィックを分類するように構成される。トラフィックが分類基準を満たす場合、トラフィック分類器は、トラフィックがSFCによって提供されるサービスチェーンに入るように、トラフィックを転送する。通常、トラフィックが分類基準を満たすと判定した後、トラフィック分類器は、トラフィックに対応する各パケットにSFC情報を追加し、その結果、パケットは、SFC情報に基づいて、サービス機能チェーンに対応する順序でネットワーク内のSFノードに到着し、次いで、SFノードは、パケットに対して順次サービス処理を実行する。トラフィック分類器は、ルータ、スイッチ、または別のネットワークデバイスであってもよい。
SFノードは、パケットに対してサービス処理を行うように構成される。通常、SFノードは、1つまたは複数のSFFノードに接続されてもよく、1つまたは複数のSFFノードから処理対象パケットを受信してもよい。SFノードに対応するサービス機能は、サービスシナリオに基づいて構成されてもよい。例えば、SFノードに対応するサービス機能は、ユーザ認証、ファイアウォール、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)パケットは、SFFノードとSFノードとの間で直接送信される。
SFCのデータプレーンは、SFCの制御プレーンを介して制御され得る。SFCの制御プレーンは、1つまたは複数のSFCコントローラを含み得る。図1を参照されたい。例えば、SFCコントローラは、SDNコントローラ、NFV管理ノード1、またはNFV管理ノード2であってもよい。一実施形態では、パケット送信の前に、SFCのクライアントは、サービス機能チェーンの属性、構成、およびポリシーなどの情報をSFCコントローラに送信することができる。SFCコントローラは、クライアントによって送信された情報およびSFCのトポロジに基づいて、SFCに入ることになるパケットのための分類規則およびサービス機能チェーンに対応する各SFノードの識別子などのサービス機能チェーンに関する情報を生成し、サービス機能チェーンに関する情報をSFC内のトラフィック分類器および別のノードに送信することができ、その結果、トラフィック分類器は、受信したパケットを分類し、SFCコントローラによって送信された情報に基づいてSFC情報を追加する。
図1に示すSFCのシステムアーキテクチャにおけるノードのタイプは任意選択であることを理解されたい。本出願の実施形態では、SFCのシステムアーキテクチャには、図1に示されたものよりも多くのタイプのノードが存在し得る。この場合、SFCのシステムアーキテクチャは、別のタイプのノードをさらに含んでもよい。あるいは、SFCのシステムアーキテクチャには、図1に示すものよりも少ないタイプのノードが存在してもよい。SFCのシステムアーキテクチャ内のノードのタイプは、本出願の実施形態では限定されない。
図1に示すSFCのシステムアーキテクチャにおけるノードの各タイプの数は任意であることを理解されたい。本出願の実施形態では、SFCのシステムアーキテクチャ内のノードの数は、図1に示されたものよりも多くてもよいし、図1に示されたものよりも少なくてもよい。例えば、1つのルータノードのみが存在してもよいし、数十、数百、またはそれ以上のルータノードが存在してもよい。別の例では、数十、数百、またはそれ以上のSFノードがある。SFCのシステムアーキテクチャ内のノードの数は、本出願の実施形態では限定されない。
以上、SFCのシステムアーキテクチャについて説明した。SFCはSRv6と組み合わされてもよく、2つの技術の組み合わせは一般にSRv6 SFCと呼ばれる。次に、SRv6 SFCのシステムアーキテクチャの例を説明する。
セグメントルーティング(Segment Routing、SR)は、ネットワーク内でデータパケットを転送するための送信元ルーティングの概念に基づいて設計されたプロトコルである。SRは、転送経路をセグメントに分割し、セグメント識別子(セグメントID、SID)をネットワーク内のセグメントおよびノードに割り当てるために使用される。SIDを順番に並べることによって、SIDを含むリストが取得され得る。リストは、一般に、インターネットプロトコルバージョン6(Segment Routing Internet Protocol Version 6、SRv6)を介したセグメントルーティングにおいてセグメントリスト(セグメント識別子リストとも呼ばれるSIDリスト)と呼ばれ、一般に、セグメントルーティング-マルチプロトコルラベルスイッチング(Segment Routing Multi-Protocol Label Switching、SR-MPLS)におけるラベルスタックと呼ばれる。セグメントリストは、転送経路を示すことができる。トラフィック最適化要件を満たすために、SIDリストを搬送するパケットが通過するノードおよび経路は、SR技術を使用して指定され得る。計量的には、パケットは荷物に似ていてもよく、SRは荷物上のラベルに似ていてもよい。荷物が領域Aから領域Bおよび領域Cを通って領域Dに送られる必要がある場合、ラベル「最初に領域Bに移動し、次に領域Cに移動し、最後に領域Dに移動する」が起点位置、すなわち領域Aで荷物に付けられ得る。このようにして、荷物上のラベルは各領域で識別されるだけでよく、荷物は、荷物上のラベルに基づいて、ある領域から別の領域に転送される。SR技術では、送信元ノードはパケットにラベルを付加し、トランジットノードは、パケットが宛先ノードに到着するまで、ラベルに基づいてパケットを次のノードに転送することができる。パケットのヘッダには、例えば、<SID 1,SID 2,SID 3>が挿入される。この場合、パケットは、最初にSID 1に対応するノードに転送され、次にSID 2に対応するノードに転送され、最後にSID 3に対応するノードに転送される。
SRv6は、IPv6ネットワークにSR技術を適用することを意味し、128ビットのIPv6アドレスがSIDの形態として使用される。パケット転送中、SRv6をサポートするノードは、パケット内の宛先アドレス(Destination Address、DA)に基づいてローカルSIDテーブル(local SID table、ローカルセグメント識別子テーブルまたはmy SID tableとも呼ばれる)を検索する。パケット内の宛先アドレスがローカルSIDテーブル内の任意のSIDと一致するとき、ノードは、宛先アドレスがローカルSIDテーブルにヒットしたと判定し、対応する操作、例えば、SIDに対応するトポロジ、命令、またはサービスに基づいて、SIDに対応するアウトバウンドインターフェースを介してパケットを転送する操作を実行する。パケットの宛先アドレスがローカルSIDテーブル内のいずれのSIDとも一致しない場合、ノードは、宛先アドレスに基づいてIPv6フォワード・インフォメーション・データベース(forward Information database、FIB)を検索し、宛先アドレスによってヒットされたFIB内のエントリに基づいてパケットを転送する。ローカルSIDテーブルは、SIDを含み、ノードによってローカルに記憶されるテーブルである。ローカルSIDテーブルとパケットで搬送されるセグメントリストとを区別するために、ローカルSIDテーブルの名称は、通常、「ローカル(local)」という接頭辞を含む。
SRv6 SFCのシステムアーキテクチャでは、SRv6のヘッドエンドノードはSFC内のトラフィック分類子であってもよく、SRv6ノードはSFC内のルータノード、SFFノード、プロキシノード、またはSFノードであってもよい。具体的には、SFC情報はSRv6カプセル化フォーマットであってもよく、SFC情報はセグメントリストであってもよい。パケットのセグメントリスト内のSIDは、SFC内のパケットの転送経路またはパケットに対して実行されるべき様々なサービス処理操作を示すためにオーケストレーションされる。具体的には、セグメントリストは、順番に配置された1つまたは複数のSIDを含み、各SIDは128ビットIPv6アドレスの形態であり、本質的にトポロジ、命令、またはサービスを示すことができる。パケットの宛先アドレスは、セグメントリスト内にあり、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ノードのプロキシとして、プロキシノードは、SFFノードからSRHを含むパケットを受信する。プロキシノードは、SRHを含まないパケットを取得するためにパケットからSRHをストリッピングし、SRHを含まないパケットをアウトバウンドインターフェースを介して送信する。SFノードは、SRHを含まないパケットをインバウンドインターフェースを介して受信し、パケットを処理し、SRHを含まないパケットをアウトバウンドインターフェースを介して送信する。プロキシノードは、SRHを含まないパケットを受信し、SRHを含むパケットを取得するためにSRHをパケットにカプセル化し、アウトバウンドインターフェースを介してSRHを含むパケットを送信し、その結果、パケットはSFFノードに返される。プロキシノードは、ネットワークデバイス、例えば、ルータまたはスイッチであってもよく、あるいはプロキシノードは、サーバ、ホスト、パーソナルコンピュータ、または端末デバイスであってもよい。プロキシノードは、動的プロキシ、静的プロキシ、共有メモリプロキシ、マスカレーディングプロキシなどに分類され得る。動的プロキシと静的プロキシとの違いは、ストリッピングされたSRHは動的プロキシ操作でキャッシュされるが、ストリッピングされたSRHは静的プロキシ操作で破棄されることにある。
SFFノードおよびプロキシノードの上記の統合された配置は、単に任意選択の方法であることを理解されたい。別の実施形態では、SFFノードおよびプロキシノードは、代替的に、異なるハードウェアデバイスに別々に配置されてもよい。SFFノードが配置されるハードウェアデバイスは、プロキシノードが配置されるハードウェアデバイスとネットワークを介して通信することができる。
以上、SRv6 SFCの全体的なアーキテクチャについて説明した。以下では、SRv6 SFCベースのデュアルホーミングアクセスシステムアーキテクチャの一例について説明する。デュアルホーミングアクセスシステムアーキテクチャは、冗長リンクおよび/または冗長デバイスを展開することによってネットワークの信頼性が向上させられるアーキテクチャである。SRv6 SFCでは、デュアルホーミングアクセスは、プロキシノードへのSFノードのデュアルホーミングアクセスであってもよく、すなわち、同じSFノードが2つのプロキシノードに同時に接続される。SRv6 SFCベースのデュアルホーミングアクセスを介して、SFノードに送信される必要があるパケットは、ルータノードから始まり、プロキシノードを通過してからSFノードに到達することができ、または別のプロキシノードを通過してから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については、第1のプロキシノード101はローカルプロキシ(local proxy)と表記され、第2のプロキシノード102はピアプロキシ(peer proxy)と表記される場合がある。同様に、第2のプロキシノード102について、第2のプロキシノード102はlocal proxyと表記され得、第1のプロキシノード101はpeer proxyと表記され得る。第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に同時に接続されることが分かる。
デュアルホーミングアクセスにより、負荷分散機能が実装され得る。SFノード103に送信されるべきパケットについて、第1のプロキシノード101と第2のプロキシノード102との両方がパケットに対して動的プロキシ操作を行うことができ、その結果、2つのプロキシノードが一緒に動的プロキシ操作を行うことで、パケットを処理するための単一のプロキシノードの負担が軽減される。加えて、SFノード103によって処理されたパケットについて、パケットは、SFノード103によって処理されたトラフィックを分配し、パケットを転送するための単一のプロキシノードの負担を軽減するために、第1のプロキシノード101および第2のプロキシノード102の両方を介してルータノード104に返されてもよい。また、パケットが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つのノード間でパケットを転送することができる。各リンクに含まれるホップ数は、この実施形態では限定されない。
2つのノードが1ホップIPリンク上に配置される場合、2つのノードはon-linkであると称され得る。IPルーティングの観点から、2つのノードは1ホップ接続可能である。例えば、IPv4パケットが2つのノード間で転送される場合、ノードがIPv4パケットを送信するとき、IPv4パケットは、IPv4パケット内の生存時間(Time To Live、TTL)が1だけ減少した後に他方のノードに到達し得る。別の例では、IPv6パケットが2つのノード間で転送される場合、ノードがIPv6パケットを送信するとき、IPv6パケットは、IPv6パケットのホップ制限(hop-limit)が1だけ減少した後に他方のノードに到達することができる。
2つのノードが1ホップIPリンク上に配置されることは、2つのノードが物理的に直接接続されなければならないことを意味しないことに留意されたい。2つのノードが1ホップIPリンク上に配置される場合、2つのノードは物理的に直接接続されてもされなくてもよい。例えば、2つのノードが1つまたは複数のレイヤ2スイッチを介して接続されている場合も、2つのノードが1ホップIPリンク上に配置されると称され得る。
さらに、2つのノードがマルチホップIPリンク上に配置される場合、2つのノードはoff-linkであると称され得る。IPルーティングの観点から、2つのノードはマルチホップルーティングを介して接続可能である。
図3または図4に記載されたデュアルホーミングアクセスシステムは単にオプションであり、SFCに2つのピア・プロキシ・ノードがあることもまた単にオプションであることを理解されたい。別の実施形態では、SFCには、3つ以上のピア・プロキシ・ノードが存在し得る。そして、任意のプロキシノードのために、2つ以上のpeer proxyが存在し得る。任意のプロキシノードは、2つ以上のpeer linkにアクセスすることができ、プロキシノードは、各peer linkを介して対応するpeer proxyに接続されことができる。
以上、SRv6 SFCベースのデュアルホーミングアクセスシステムアーキテクチャについて説明した。以下では、前述のシステムアーキテクチャに基づいてパケットを送信するための方法手順の一例について説明する。
図5は、本出願の一実施形態によるパケット伝送方法のフローチャートである。図5に示すように、本方法における対話主体は、第1のプロキシノードと、第2のプロキシノードと、SFノードと、ルータノードとを含む。第1のプロキシノードは、図3または図4の第1のプロキシノード101であってもよく、第2のプロキシノードは、図3または図4の第2のプロキシノード102であってもよく、SFノードは、図3または図4のSFノード103であってもよく、ルータノードは、図3または図4のルータノード104であってもよい。本方法は以下のステップを含み得る。
ステップ501:SFノードは、第1のプロキシノードへ第1のパケットを送信する。
第1のパケットは、SFノードがサービス機能処理を行った後に取得されるパケットであってもよい。第1のパケットはSRHを含まなくてもよく、第1のパケットに対応するSRHは、第1のプロキシノードまたは第2のプロキシノードによって事前にストリッピングされてもよい。第1のパケットに対応するSRHは、第1のパケットがSRHを使用してネットワーク内で転送され続けるように、復元される必要がある。第1のパケットはデータパケットであってもよい。第1のパケットは、IPv4パケット、IPv6パケット、またはイーサネット(Ethernet)フレームであってもよい。
任意選択で、第1のパケットはトンネルヘッダをさらに含んでもよい。具体的には、第1のプロキシノードとSFノードとの間に伝送トンネルが確立され得、第1のパケットは伝送トンネルに対応するトンネルヘッダを含み得る。第1のプロキシノードとSFノードとの間の伝送トンネルは、VXLANトンネル、GREトンネル、IP in IPトンネルなどであってもよい。これに対応して、第1のパケットのトンネルヘッダは、VXLANトンネルヘッダ、GREトンネルヘッダ、IP in IPトンネルヘッダなどであってもよい。
いくつかの実施形態では、トンネルヘッダは、送信元アドレス、宛先アドレス、およびVPN識別子を含み得る。トンネルヘッダ内の送信元アドレスは、SFノードを識別するために使用され、トンネルヘッダ内の宛先アドレスは、第1のプロキシノードを識別するために使用される。SFノードのアドレスおよび第1のプロキシノードのアドレスは、SFノード上で事前構成され得る。第1のパケットを生成するプロセスにおいて、SFノードは、構成を検索して、SFノードのアドレスを取得し、トンネルヘッダ内の送信元アドレスにアドレスを書き込むことができる。第1のプロキシノードのアドレスを取得し、トンネルヘッダ内の宛先アドレスにアドレスを書き込む。SFノードおよび第1のプロキシノード上に別々に構成されたアドレスは、相互に参照されてもよい。例えば、SFノード上に構成されたSFノードのアドレスは、第1のプロキシノード上に構成されたSFノードのアドレスと同じであってよく、SFノード上に構成された第1のプロキシノードのアドレスは、第1のプロキシノード上に構成された第1のプロキシノードのアドレスと同じであってよい。トンネルヘッダ内の送信元アドレスおよび宛先アドレスの形式は、構成操作に基づいて判定されてもよく、例えば、IPv4アドレス形式またはIPv6アドレス形式であってもよい。もちろん、送信元アドレスおよび宛先アドレスは、代替として、要件に基づいて他の形態に構成されてもよい。
例えば、図6は、本出願の一実施形態による第1のパケットの概略図であり、第1のパケットがIPv4パケットである例が説明のために図6で使用され、第1のパケットのパケットヘッダはIPv4ヘッダを含む。図7は、本出願の一実施形態による第1のパケットの概略図であり、第1のパケットがIPv6パケットである例が説明のために図7で使用され、第1のパケットのパケットヘッダはIPv6ヘッダを含む。図8は、本出願の一実施形態による第1のパケットの概略図であり、第1のパケットがイーサネットフレームである例が説明のために図8で使用され、第1のパケットのパケットヘッダはMACフレームヘッダを含む。
ステップ502:第1のプロキシノードは、SFノードから第1のパケットを受信し、第1のプロキシノードのキャッシュを検索し、第1のパケットに対応するSRHは取得されない。
第1のプロキシノードは、第1のパケットに基づいてローカルキャッシュエントリを検索する。しかしながら、複数のシナリオでは、キャッシュミス(cache miss)イベントが第1のプロキシノードで発生する可能性があり、すなわち、第1のプロキシノードは、キャッシュ内の第1のパケットに対応するSRHを見つけられず、その結果、第1のパケットについてSRHを復元することができない。例えば、キャッシュミス事象は、以下のシナリオ1からシナリオ5のいずれか1つでトリガされ得る。
シナリオ1:キャッシュミス
例えば、第1のプロキシノードで障害が発生する可能性があり、その障害によりキャッシュされているSRHが失われる。この場合、障害状態から回復された後、第1のプロキシノードはキャッシュからSRHを見つけることができない。別の例では、第1のプロキシノードの電源がオフにされる。キャッシュは揮発性ストレージであるため、電源オフによりキャッシュされているSRHが失われる。この場合、第1のプロキシノードが再び電源投入された後、第1のプロキシノードはキャッシュからSRHを見つけることができない。さらに別の例では、第1のプロキシノードのボードまたは第1のプロキシノード全体が再起動される。この場合、キャッシュも失われる可能性がある。
シナリオ2:キャッシュエージング
第1のプロキシノードは、ルートエージング機能を有することができ、キャッシュエントリのエージングタイマを開始し、キャッシュエントリに対応するエージングフラグ(aging flag)を設定することができる。エージングフラグは、キャッシュエントリがエージングしたかどうかを識別するために使用され、エージングフラグの値は1または0であり得る。第1のプロキシノードは、エージングタイマを使用してキャッシュ内の各キャッシュエントリを定期的にスキャンすることができる。スキャンによって、任意のキャッシュエントリに対応するエージングフラグが1であることを発見した場合、第1のプロキシノードは、エージングフラグを0に修正する。あるいは、任意のキャッシュエントリに対応するエージングフラグが0であることをスキャンによって発見した場合、第1のプロキシノードはキャッシュエントリを削除する。加えて、第1のプロキシノードがパケットを転送するプロセスにおいて、キャッシュ検索中にキャッシュエントリがヒットされた場合、第1のプロキシノードは、キャッシュエントリに対応するエージングフラグを1に設定する。ルートエージング機能により、アクセス頻度の高いキャッシュエントリがキャッシュに保持され得、アクセス頻度の低いキャッシュエントリをクリアして、アクセス頻度の低いキャッシュエントリが占有するキャッシュスペースを解放することができる。このようにして、キャッシュリソースが節約される。ルートエージング機能が提供されると、第1のパケットに対応するSRHを記憶するために使用されるキャッシュエントリが、エージングタイマが満了するまで見つけられない場合、キャッシュエントリに対応するエージングフラグが0に設定されて、キャッシュエントリがクリアされる。この場合、第1のプロキシノードは、後続のキャッシュ検索中に第1のパケットに対応するSRHを見つけることができない。
シナリオ3:キャッシュクリア
ユーザが第1のプロキシノードに対してデバイスメンテナンスを行うか、または誤操作を行う場合、ユーザは、第1のプロキシノードのキャッシュエントリを手動でクリアすることができる。この場合、キャッシュエントリがクリアされた後、第1のプロキシノードは、後続のキャッシュ検索中に第1のパケットに対応するSRHを見つけることができない。
シナリオ4:第1のパケットに対応するSRHがこれまで記憶されていない
シナリオ1からシナリオ3との違いは、シナリオ1からシナリオ3では、第1のパケットを受信する前に、第1のプロキシノードは、第1のパケットに対応するSRHを履歴的に記憶しているが、第1のプロキシノードが第1のパケットを受信するときに、第1のパケットに対応するSRHがキャッシュに記憶されていないことにある。シナリオ4では、第1のプロキシノードは、第1のパケットに対応するSRHを記憶したことがない、言い換えれば、第1のパケットに対応するSRHはキャッシュに記憶されたことがない。その結果、第1のプロキシノードは、キャッシュから第1のパケットに対応するSRHを見つけることができない。
図3または図4を参照されたい。例示的なシナリオでは、SRv6パケットを受信した後、ルータノード104は、SRv6パケットを第2のプロキシノード102に送信することができる。第2のプロキシノード102は、SRv6パケットのSRHをストリッピングし、SRv6パケットのSRHをキャッシュし、SRv6パケットのペイロードをSFノード103に送信する。ペイロードに基づいて処理を実行した後、SFノード103は、第1のパケットを生成し、第1のパケットを第1のプロキシノード101へ送る。第1のプロキシノード101が第1のパケットを受信した後で、第1のパケットに対応するSRv6パケットは第1のプロキシノードではなく第2のプロキシノードによってSFノードへ以前に送信されているので、第1のパケットに対応するSRHは第2のプロキシノード102のキャッシュにあるが、第1のプロキシノード101のキャッシュにはない。この場合、第1のプロキシノード101は、第1のパケットに対応するSRHをキャッシュしないので、第1のプロキシノード101は、第1のパケットに対応するSRHを見つけることができない。
一実施形態では、第1のパケットはプロキシノード識別子を含むことができ、プロキシノード識別子は、SRv6パケットのペイロードをSFノードに送信するプロキシノードを識別するために使用され、プロキシノード識別子は、プロキシノードのデバイスIDとすることができる。第1のパケットを受信すると、第1のプロキシノードは、第1のパケット内のプロキシノード識別子を識別し、プロキシノード識別子が第1のプロキシノードの識別子であるかどうか判定することができる。プロキシノード識別子が第1のプロキシノードの識別子でない場合、第1のプロキシノードは、第1のパケットに対応するSRv6パケットがローカル側からSFノードへ以前に送信されていないと判定し、したがって以下のステップ503を遂行してよい。第1のプロキシノードは、プロキシノード識別子に対応するプロキシノードを、第2のパケットが送信されるべき第2のプロキシノードとして判定することができる。
例えば、第1のパケットを受信した後で、プロキシノード1が、第1のパケット内のプロキシノード識別子がプロキシノード2のデバイスIDであることを発見した場合には、プロキシノード1は、第1のパケットに対応するSRv6パケットがプロキシノード1の代わりにプロキシノード2によってSFノードへ以前送信されたものであると判定する。この場合、プロキシノード1は、第2のパケットを取得するために第1のパケットを再カプセル化し、第2のパケットをプロキシノード2に送信する。
シナリオ5:NAT
シナリオ1からシナリオ4との違いは、シナリオ1からシナリオ4におけるキャッシュミス理由は、第1のパケットに対応するSRHがキャッシュ内にないことであるが、シナリオ5におけるキャッシュミス理由は、第1のパケットに対応するSRHのインデックスが修正されることである。すなわち、第1のパケットに対応するSRHがまだキャッシュ内にある場合でも、検索処理で使用されるインデックスはSRHに対応しないため、キャッシュからインデックスに対応するSRHを見つけることはできない。
具体的には、NATシナリオは、SFノードのサービス機能がフロー識別子を修正することを含むことを意味する。SRHを事前記憶するプロセスでは、第1のプロキシノードは、通常、第1のパケットに対応するフロー識別子をキーとして使用して、第1のパケットに対応するSRHを記憶する。
NATシナリオでは、SFノードがパケットに対してサービス処理を行った後、通常、処理されたパケットに対応するフロー識別子は、未処理のパケットに対応するフロー識別子と一致しない。その結果、第1のプロキシノードは、処理されたパケットに対応するフロー識別子を用いて対応するSRHを見つけることができない。例えば、SFノードのサービス機能がNATの実行を含む場合、SFノードはパケットの5タプルを修正する。この場合、処理済みパケットの5タプルは未処理パケットの5タプルと一致しない。例示的なシナリオでは、SFノードがファイアウォールである場合、SFノードは通常、宛先ネットワークアドレス変換(Destination Network Address Translation、DNAT)のサービス機能を含む。SFノードは、アドレスプールを記憶し、パケット内の宛先アドレスをアドレスプール内のアドレスに置き換え、宛先アドレスを置き換えることによって得られたパケットを第1のプロキシノードに返し、その結果、第1のプロキシノードによって受信されたパケットの宛先アドレスは、SFノードに以前に送信されたパケットの宛先アドレスとは異なる。この場合、受信されたパケットの宛先アドレスに対応する5タプルを用いてSRHを検索するときに、第1のプロキシノードはSRHを見つけることができない。
この実施形態では、様々なキャッシュミスシナリオにおいて、第1のプロキシノードはSRH復元タスクをローカルに実行することができないが、第1のプロキシノードは、パケットを再カプセル化し、再カプセル化によって得られたパケットを第2のプロキシノードへ転送するために、以下のステップ503およびステップ504を実行し得る。第2のプロキシノードは、第1のプロキシノードを置き換えてSRHを復元し、パケットのSRHを確実に復元できるようにする。
ステップ503:第1のプロキシノードは、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成する。
第2のパケットは、SRHを復元するためにピア・プロキシ・ノードを制御するために使用されるパケットである。第2のパケットは、第1のバイパスSIDと、第1の制御情報と、第1のパケットのペイロードとを含む。第2のパケットの送信元アドレスは複数の場合がある。例えば、第2のパケットの送信元アドレスは、第1のプロキシノードに対応する第2のバイパスSID、第1のプロキシノードのIPアドレス、または第1のプロキシノードを識別することができる他の情報であってもよく、あるいは、第2のパケットの送信元アドレスはデフォルトアドレスであってもよい。第2のパケットはペイロードを含んでもよく、第2のパケットのペイロードは第1のパケットのペイロードであってもよく、または第1のパケット自体であってもよい。図9、図10、図11、図12、図14、図15、図16および図17を参照されたい。例えば、第2のパケットのペイロードは、第1のパケットのペイロードおよび第1のパケットのパケットヘッダを含むことができ、第1のパケットのパケットヘッダは、第1のパケットの特定のタイプに基づいて判定され、例えば、IPv4ヘッダ、IPv6ヘッダ、またはMACフレームヘッダとすることができる。
バイパスSIDは、実施形態において提供される新しいSIDである。バイパスSIDは、ローカル・プロキシ・ノードのパケットをピア・プロキシ・ノードに送信するために、言い換えれば、local proxyのパケットをpeer proxyに送信するために使用される。具体的には、ローカル・プロキシ・ノードは、ローカル側からピア・プロキシ・ノードへパケットを転送するために、パケットの宛先アドレスにピア・プロキシ・ノードのバイパスSIDを含めることによって、ピア・プロキシ・ノードへパケットを送信することができる。バイパスSIDは、End.ADB SIDと称されてもよく、End.ADB SIDは、bypass SID for End.AD SIDである(ここで、End.ADB SIDは、バイパス機能を有し、動的プロキシ操作のために拡張されたSIDである。)。End.ADB SIDの名前は、End.AD SIDおよびBの組み合わせと考えることができ、ここで、「ADB」の「B」はbypassを表す。バイパスSIDは、IPv6アドレスの形態であってもよく、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つに対応する。このようにして、バイパスSIDについて、宛先アドレスがバイパス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
上記の構成命令において、proxy 1は第1のプロキシノードを示し、構成命令の第1の行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2の行は、Locator(位置情報)が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
上記の構成命令において、proxy 2は第2のプロキシノードを示し、構成命令の第1の行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2の行は、Locator(位置情報)がt2であり、IPv6プレフィックスがC::64であり、静的ルートが10であることを意味する。構成命令の3行目は、オペレーションコードが::2であり、第1のプロキシノードに対応する第2のバイパスSIDがB::1であることを意味する。
第1のプロキシノードおよび第2のプロキシノードに設定されたバイパスSIDは、相互に参照され得ることに留意されたい。すなわち、第2のプロキシノードは、第1のバイパスSIDが第2のプロキシノードへパケットを送信するのに用いられることを指示するために、第1のプロキシノード上で構成された第1のバイパスSIDが参照される。同様に、第1のプロキシノードは、第2のバイパスSIDが第1のプロキシノードへパケットを送信するのに用いられることを指示するために、第2のプロキシノード上で構成された第2のバイパスSIDが参照される。
バイパスSIDとプロキシノードとの1対1の対応関係は単なる例であることを理解されたい。別の実施形態では、バイパスSIDとプロキシノードとは、代替的に別の対応関係にあってもよい。これはこの実施形態では限定されない。
第1の制御情報は、第2のプロキシノードに、第1のパケットに対応するSRHを復元するように指示するために使用される。一実施形態では、第1の制御情報は、第1のフラグを含み得る。第1のフラグは、SRHがローカルキャッシュエントリにヒットするかどうかを識別するために使用され、キャッシュミスフラグ(cache miss flag)、CM、またはCM-フラグとして表され得る。第1フラグの長さは1ビットである。第1のフラグが0に設定されている場合、それはSRHがローカルキャッシュエントリにヒットしたことを示す。第1のフラグが1に設定されている場合、それはSRHがローカルキャッシュエントリをミスしたことを示す。この実施形態では、第1の制御情報内の第1のフラグは、SRHが第1のプロキシノードのローカルキャッシュエントリをミスしたことを示すために1に設定されてもよく、その結果、第1のフラグの値が1であることを識別した後、第2のプロキシノードは、SRHを復元するために第2のプロキシノードのローカルキャッシュエントリを検索することができる。
第2パケットのフォーマットは複数であってもよい。第2のパケットのフォーマットは、ネットワークトポロジ構造および/または経路計画上の第1のプロキシノードの要件によって異なり得るか、または第1の制御情報を搬送する方法によって異なり得る。図9~図17を参照して、以下では、説明のための例として実施例1および実施例2を使用する。
実施例1:図9、図10、図11、および図12を参照されたい。第2のパケットは、IPヘッダを含み得る。IPヘッダ内の宛先アドレス(Destination Address、DA)が第1バイパスSIDである。
第2のパケットは、IP-IPパケットのフォーマットと同様のフォーマットであってもよく、第2のパケットは、複数のIPヘッダを含んでもよい。第2のパケットにおいて、第1のバイパスSIDを宛先アドレスとして有するIPヘッダは、第2のパケットの外側IPヘッダであってもよい。
第1バイパスSIDを宛先アドレスとするIPヘッダは、IPv6ヘッダであってもよい。例えば、第1のパケットがIPv6パケットである場合、第2のパケットは、第2のパケットのIPv6ヘッダを含むことができ、第1のパケットのIPv6ヘッダも含み得る。この場合、第2のパケットにおいて、第1のバイパスSIDを宛先アドレスとして有するIPヘッダは、第2のパケットの外側IPv6ヘッダであってもよく、第1のパケットのIPv6ヘッダは、第2のパケットの内側IPv6ヘッダであってもよい。別の例として、第1のパケットがIPv4パケットである場合、第2のパケットは、第2のパケットのIPv6ヘッダを含むことができ、第1のパケットのIPv4ヘッダも含み得る。この場合、第2のパケットにおいて、第1のバイパスSIDを宛先アドレスとするIPヘッダは、第2のパケットの外側IPv6ヘッダであってもよく、第1のパケットのIPv4ヘッダは、第2のパケットの内側IPv4ヘッダであってもよい。
いくつかの実施形態では、第1のバイパスSIDが宛先アドレスとして使用されるとき、第2のパケットは複数のフォーマットで実施されてもよい。
図9を参照されたい。例えば、第2のパケットは、IPv6ヘッダ、拡張ヘッダ、および第2のパケットのペイロードを含むことができ、拡張ヘッダは、第1の制御情報を含む。このように、SRHは、第2のパケットのオプション部分であり得る。すなわち、例えば、図9に示すように、第2パケットは、SRHを含まなくてもよく、あるいは、第2のパケットは、いくつかの情報を搬送するために、要件に基づいてSRHを含み得る。
図10を参照されたい。別の例では、第2のパケットは、IPv6ヘッダと第2のパケットのペイロードとを含むことができ、IPv6ヘッダ内の宛先アドレス、すなわち、第1のバイパスSIDは、第1の制御情報を含む。このように、SRHと拡張ヘッダの両方が、第2のパケットの任意選択の部分であり得る。すなわち、例えば、図10に示すように、第2のパケットは、SRHおよび拡張ヘッダのいずれも含まなくてもよい。あるいは、第2のパケットは、いくつかの情報を搬送するために、要件に基づいてSRHまたは拡張ヘッダを含み得る。
図11を参照されたい。別の例では、第2のパケットは、IPv6ヘッダおよび第2のパケットのペイロードを含むことができ、IPv6ヘッダは、第1の制御情報を含む。このように、SRHと拡張ヘッダの両方が、第2のパケットの任意選択の部分であり得る。すなわち、例えば、図11に示すように、第2のパケットは、SRHおよび拡張ヘッダのいずれも含まなくてもよい。あるいは、第2のパケットは、いくつかの情報を搬送するために、要件に基づいてSRHまたは拡張ヘッダを含み得る。加えて、図11のIPv6ヘッダにおいて第1の制御情報が具体的に搬送される位置は、要件に基づいて設定されてもよい。これはこの実施形態では限定されない。
図12を参照されたい。別の例では、第2のパケットは、IPv6ヘッダ、SRH、および第2のパケットのペイロードを含むことができ、第2のパケットのSRH内のTLVは、第1の拡張情報を含む。第2のパケットのSRHはセグメントリストを含むことができ、セグメントリストは第1のバイパスSIDを含む。任意選択的に、第1のバイパスSIDが宛先アドレスとして使用される場合、セグメントリストは、1つのSIDのみ、すなわち第1のバイパスSIDを含むことができ、別のSIDを含まない。このフォーマットでは、第2のパケットのSRHのSLは0である。加えて、このようにして、拡張ヘッダは第2のパケットの任意選択の部分であってもよい。すなわち、例えば、図12に示すように、第2のパケットは、拡張ヘッダを含まなくてもよく、あるいは、拡張ヘッダは、いくつかの情報を搬送するために、要件に基づいて第2のパケットに設定され得る。
第2のパケットはSRHを搬送し、少なくとも以下の効果を達成する:いくつかの追加情報は、1つまたは複数のTLVおよびSRH内のセグメントリストを使用して搬送され、第2のプロキシノードまたは2つのプロキシノード間のトランジットノードに、追加情報を使用して指定された転送挙動またはサービスを実行するよう指示することができる。このようにして、第2のパケットは、別の機能と共にSRH復元機能を提供するために良好な拡張性を有する。
実施例1は、複数のシナリオに適用されることができ、以下では、説明のための例としてシナリオ1からシナリオ3を使用する。
シナリオ1:第1のプロキシノードおよび第2のプロキシノードは、1ホップIPリンク(on-link)上に配置される。on-linkの具体的な概念については、前述の説明を参照されたい。ここでは詳細を繰り返さない。図13は、第1のプロキシノードおよび第2のプロキシノードが1ホップIPリンク上に配置される概略図である。図13には示されていないが、レイヤ2スイッチまたは別のデバイスが第1のプロキシノードと第2のプロキシノードとの間に存在してもよく、この実施形態では、第1のプロキシノードと第2のプロキシノードとが物理的に直接接続されることに限定されないことに留意されたい。
SRv6ネットワークでは、SRv6パケットのIPv6ヘッダ内の宛先アドレスは、通常、パケットを転送すべき次のSRノードを識別するために使用される。したがって、第1のプロキシノードおよび第2のプロキシノードが1ホップIPリンク上に配置される場合、第1のプロキシノードは、第2のパケットの次のSRノードが第2のプロキシノードであることを指示するために宛先アドレスに第1のバイパスSIDを含める。
シナリオ2:第1のプロキシノードおよび第2のプロキシノードは、マルチホップIPリンク(off-link)上に配置され、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードのSR機能は有効にされない。
SR機能が有効になっていないトランジットノードの場合、第2のパケットを受信すると、トランジットノードは、第2のパケットの宛先アドレス(すなわち、第1のバイパスSID)に基づいてルーティングFIBを検索し、ルーティングFIB内にあり、宛先アドレスによってヒットされたエントリに基づいてパケットを転送することができる。
シナリオ3:第1のプロキシノードおよび第2のプロキシノードはマルチホップIPリンク上に配置されるが、第2のパケットを転送するためのトランジットノードを指定するためのサービス要件はない。
シナリオ3は、複数のケースを含んでもよく、トランジットノードのSR機能が有効であるケースと、トランジットノードのSR機能が無効であるケースとを含んでもよい。例えば、マルチホップIPリンクが複数の転送経路を含み、第1のプロキシノードが第2のパケットを転送するための転送経路を指定する必要がない場合、トランジットノードのSR機能が有効または無効にされているとき、宛先アドレスは第1のバイパスSIDを搬送することができる。別の例として、マルチホップIPリンクがただ1つの転送経路を含む場合、例えば、第1のプロキシノードと第2のプロキシノードとの間にただ1つのトランジットノードが存在する場合、トランジットノードのSR機能が使用可能または使用不可能であるとき、第2のパケットは、第1のプロキシノードによってトランジットノードを指定することなく、トランジットノードによって第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のパケットを転送する。
実施例2:いくつかの実施形態では、第2のパケットはSRv6パケットであってもよい。図14、図15、図16および図17を参照されたい。例えば、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含む。IPヘッダ内の宛先アドレスは、次のSRノードに対応する1つまたは複数のターゲットSID内のSIDである。
1つまたは複数のターゲットSIDは、ターゲット転送経路を示すために使用される。ターゲットSIDは、ノードSIDであってもよいし、リンクSIDであってもよい。ターゲットSIDは、第1のプロキシノードと第2のプロキシノードとの間の1つのトランジットノード、1つのリンク、1つまたは複数の命令、1つのサービス、または1つのVPNを識別することができ、第2のパケットのSRHに1つまたは複数のターゲットSIDが存在し得る。
ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路である。ターゲット転送経路は、厳密に明示的な(strict explicit)経路、すなわち、リンクの各セグメントまたは各トランジットノードが指定される経路であってもよい。あるいは、ターゲット転送経路は、緩く明示的な(loose explicit)経路、すなわち、リンクの一部またはトランジットノードの一部が指定される経路であってもよい。ターゲット転送経路は、1つのリンクであってもよいし、複数のリンクの組み合わせであってもよい。ターゲット転送経路は、データリンク層の経路、物理層の経路、またはトンネリング技術を使用して構築された経路であってもよい。ターゲット転送経路は、光信号を伝送するための経路であってもよく、電気信号を伝送するための経路であってもよい。
第2のパケットのSRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含み得る。例えば、第2のパケットのSRHはセグメントリストを含むことができ、セグメントリストは第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。セグメントリストにおいて、1つまたは複数のターゲットSIDは、第1のバイパスSIDの前に位置してもよい。例えば、第1のバイパスSIDは、第2のパケットのSRHにおける最後のSIDであってもよい。例示的なシナリオでは、第1のプロキシノードは、第2のパケットが最初にトランジットノード1に転送され、次にトランジットノード2に転送され、最後に第2のプロキシノードに転送されることを指定する必要がある。トランジットノード1に対応するSIDがSID 1であり、トランジットノード2に対応するSIDがSID 2である場合、第2のパケットのSRHは3つのSIDを含むことができ、Segment list[0]はSID 1であり、Segment list[1]はSID 2であり、Segment list[2]は第1のバイパスSIDである。このSIDシーケンスでは、SID 1は、第2のパケットの転送プロセスにおけるセグメントリスト内の最初に処理されたSIDであり、トランジットノード1は、SID 1に基づいて対応する操作を実行する。SID 2は、セグメントリスト内の第2の処理されたSIDであり、トランジットノード2は、SID 2に基づいて対応する操作を実行する。第1のバイパスSIDは、セグメントリスト内の最後に処理されたSIDであり、第2のプロキシノードは、第1のバイパスSIDに基づいて対応する操作を実行する。
最後のSIDは、通常、セグメントリスト内のSegment list[0]、すなわちSID 0であることに留意されたい。具体的には、セグメントリストは、通常、<Segment list[0]、Segment list[1]、Segment list[2]、...、Segment list[n]>と表される。セグメントリストは、パスの最後のセグメントから開始して符号化される。すなわち、Segment list[0]は経路の最後のセグメントであり、Segment list[1]は経路の最後のセグメントであるが1つであり、Segment list[n]は経路の最後のセグメントであるがnである。残りは類推によって推測でき、プッシュ操作は逆に行われる。SRv6では、SRv6ノードが通過するたびに、SLフィールドの値が1だけ減少し、宛先アドレス情報が1回変更される。SLとセグメントリストの両方に基づいてIPv6宛先アドレスが判定される。SL値がnである場合、IPv6宛先アドレスの値は、Segment list[n]の値である。SL値が1である場合、IPv6宛先アドレスの値は、Segment list[1]の値である。SL値が0である場合、IPv6 DAの値は、Segment list[0]の値である。nは正の整数または0である。
図18を参照されたい。例えば、第1のプロキシノードと第2のプロキシノードとの間にトランジットノード1、トランジットノード2、およびトランジットノード3が存在する場合、第2のパケットのSRHは、3つのSID、すなわち、トランジットノード1に対応するSID 6、トランジットノード2に対応するSID 7、および第1のバイパスSIDを含み得る。このようにして、ターゲット転送経路は、第1のプロキシノード-トランジットノード1-トランジットノード2-第2のプロキシノードとして指定され得る。
この実施形態では、第1のプロキシノードがすべてのトランジットノードまたは転送経路上のリンク全体を指定しなければならないことは限定されないことを理解されたい。第1のプロキシノードは、転送経路上のトランジットノードの一部を指定し、第2のパケットのSRH内のトランジットノードの一部に対応するSIDを含み得る。あるいは、第2のプロキシノードは、転送経路上のリンクの一部を指定し、リンクの一部に対応するSIDを第2のパケットのSRHに含めてもよい。図19を参照されたい。例えば、第1のプロキシノードは、第2のパケットがノードN2を通過することを指定し、第2のパケットのSRHにノードN2に対応するSIDを含めることができる。この場合、図19の3つの転送経路(N1,N2,N3)、(N1,N4,N5,N3)、(N1,N6,N7,N8,N9,N3)のうち、転送経路(N1,N2,N3)のみがノードN2を通過する。したがって、ノードN1に対応するSIDおよびノードN3に対応するSIDを第2のパケットのSRHに含める代わりに、第2のパケットがノードN2を介して転送される必要があることを指定することによって、第2のパケットのターゲット転送経路が(N1,N2,N3)として指定され得る。
第2のパケットのSRHは、転送経路を示すSIDを搬送するので、第2のパケットの転送経路は、指定されたターゲット転送経路を介して送信されるべき第2のパケットを制御するために、サービス要求に基づいて選択され得る。これは、経路計画を容易にし、トラフィック最適化を実施する。したがって、実施例2は、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置され、第2のパケットを転送するためのトランジットノードを指定するためのサービス要件があるシナリオに適用され得る。第1のプロキシノードは、第2のパケットがSRノードによって第2のプロキシノードへ転送されるように、第2のパケットがローカル側からSRノードへ転送される必要があることを指示するために、宛先アドレスに、次のSRノードに対応するSIDを含めることができる。
例えば、図18は、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置される概略図であり、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードは、トランジットノード1、トランジットノード2、およびトランジットノード3を含み、トランジットノード1、トランジットノード2、およびトランジットノード3のSR機能はすべて有効になっている。第1のプロキシノードが、第2のパケットがトランジットノード3によって第2のプロキシノードに転送されるべきであると指定する必要がある場合、第2のパケットの宛先アドレスは、トランジットノード3に対応するSIDを搬送することができる。この場合、第2のパケットを受信すると、トランジットノード3は、第2のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索し、第2のパケットの宛先アドレスがローカルSIDテーブル内のSIDにヒットしたと判定し、SIDに対応する操作を実行する、例えば、第2のパケットを第2のプロキシノードに転送することができる。
第1のプロキシノードと第2のプロキシノードとの間のトランジットノードの数は、ネットワーキング要件に基づいて設定されてもよく、より大きくても小さくてもよく、例えば、1つまたは複数であってもよいことを理解されたい。マルチホップIPリンクシナリオにおける2つのプロキシノード間のトランジットノードの数は、この実施形態では限定されない。
いくつかの実施形態では、次のSRノードのSIDが宛先アドレスとして使用されるとき、第2のパケットは、第2のパケットがSRHを搬送するときに複数のフォーマットで実施され得る。
図14を参照されたい。例えば、第2のパケットは、IPv6ヘッダ、拡張ヘッダ、SRH、および第2のパケットのペイロードを含み、拡張ヘッダは、第1の制御情報を含む。
図15を参照されたい。別の例では、第2のパケットは、IPv6ヘッダと、SRHと、第2のパケットのペイロードとを含むことができ、第1のバイパスSIDは、第1の制御情報を含む。この方式では、拡張ヘッダは、第2のパケットのオプションの部分であり得る。すなわち、例えば、図15に示すように、第2のパケットは、拡張ヘッダを含まなくてもよく、あるいは、拡張ヘッダは、いくつかの情報を搬送するために、要件に基づいて第2のパケットに設定され得る。
図16を参照されたい。別の例では、第2のパケットは、IPv6ヘッダ、SRH、および第2のパケットのペイロードを含むことができ、第2のパケットのSRH内のTLVは、第1の制御情報を含み得る。この方式では、拡張ヘッダは、第2のパケットのオプションの部分であり得る。すなわち、例えば、図16に示すように、第2のパケットは、拡張ヘッダを含まなくてもよく、あるいは、拡張ヘッダは、いくつかの情報を搬送するために、要件に基づいて第2のパケットに設定され得る。
図17を参照されたい。別の例では、第2のパケットは、IPv6ヘッダ、SRH、および第2のパケットのペイロードを含むことができ、IPv6ヘッダは、第1の制御情報を含む。すなわち、例えば、図17に示すように、第2のパケットは、拡張ヘッダを含まなくてもよく、あるいは、拡張ヘッダが、いくつかの情報を搬送するために、要件に基づいて第2のパケットに設定され得る。図17はIPv6ヘッダ内の第1の制御情報の特定の位置を示していないが、IPv6ヘッダは任意のアイドル位置で第1の制御情報を搬送できることを理解されたい。これはこの実施形態では限定されない。
第1の制御情報は、第2のパケット内の任意の位置で搬送され得る。例えば、第1の制御情報の位置は、以下の(1)~(4)のいずれかであってもよい。
(1)第1の制御情報は、第2のパケットの拡張ヘッダで搬送される。
拡張ヘッダは、ホップバイホップオプションヘッダ(hop-by-hop option header)および宛先オプションヘッダ(destination option header)の2つのタイプを含み得る。プロトコルによれば、パケットがルーティングヘッダ(routing header)を搬送する場合、宛先オプションヘッダは2つの位置にあってよく、ある場合には、宛先オプションヘッダはルーティングヘッダの前にあり、拡張ヘッダはルーティングヘッダで指定されたノードによって解析される。別の場合には、宛先オプションヘッダはルーティングヘッダの後ろにあり、拡張ヘッダはパケットの最終宛先ノードによって構文解析される。
一実施形態では、第2のパケット内の拡張ヘッダは宛先オプションヘッダであってもよく、宛先オプションヘッダはSRHの前に位置してもよく、第1の制御情報は宛先オプションヘッダで搬送されてもよい。このように、第2のパケットは第1のパケットに対応するSRHを含み、SRHはルーティングヘッダのタイプであるので、SRHで指定された第2のプロキシノードは拡張ヘッダを解析することができ、その結果、第2のプロキシノードは、第1の制御情報に基づいてSRHを復元するために、拡張ヘッダ内の第1の制御情報を読み取る。
図20は、本出願の一実施形態による拡張ヘッダの概略図である。拡張ヘッダは、以下のフィールド1から16のうちの1つまたは複数を含み得る。
1.次のパケットヘッダのタイプ(next header):パケットは、拡張ヘッダの後に1つまたは複数の拡張ヘッダまたは1つまたは複数の上位層ヘッダをさらに含むことができ、next headerは、パケット内の拡張ヘッダの後の拡張ヘッダまたは上位層ヘッダのタイプを示すために使用される。next headerの長さは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バイトであり得る。オプションタイプは、異なるベンダ間の相互運用を実施するための標準化された実験タイプであってもよく、あるいはオプションタイプは実験的オプションタイプであってもよい。例えば、experimental option typeの値は、0x1E、0x3E、0x5E、0x7E、0x9E、0xBE、0xDE、または0xFEであり得る。プロトコルで指定されているように、オプションタイプ内の2つの最上位のビットは、未識別のオプションが受信されたときに実行される処理動作を定義するために使用され、オプションタイプ内の3番目の最上位のビットは、転送中にオプションのデータを修正することができるかどうかを示す。この実施形態では、拡張ヘッダのオプションタイプの値は0x1Eに設定されてもよく、オプションタイプ内の2つの最上位桁のうちの2ビットは00であり、オプションが受信されて識別されない場合、オプションは無視され、パケットの残りの部分が処理され続けることを示す。オプションタイプの第3の最上位ビットは、そのオプションのデータが転送中に修正されることを許可されることを示す。
4.オプション長(option length、OptLen):拡張ヘッダ内のオプションの長さを示すために使用される。例えば、図20において、OptLenが示す長さは、OptLenに続く最初のバイトから拡張ヘッダ内のオプションの最後のバイトまでの長さであってもよい。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バイトの長さを有する。TBは、Nフラグが1に設定されるときに設定されてもよい。Nフラグがデフォルト値である場合、TBは0に設定され得る。
9.フラグフィールド(flags):現在未定義の予約フラグフィールド。フラグフィールドの長さは28ビットであってもよい。送信側は、予約フィールドの値を0に設定することができ、受信側は、予約フィールドを無視することができる。
10.第1のフラグ:SRHがローカルキャッシュエントリにヒットするかどうかを識別するために使用され、第1のフラグは、キャッシュミスフラグ(cache miss flag)、CM、またはCM-flagとして表され得る。第1フラグの長さは1ビットである。第1のフラグの値が0である場合、それはSRHがローカルキャッシュエントリにヒットしたことを示す。第1のフラグの値が1である場合、それはSRHがローカルキャッシュエントリをミスしたことを示す。第2のパケットを生成するプロセスにおいて、第1のプロキシノードは、第1のフラグを1に設定することができる。
11.第2のフラグ:End.AD SIDに関連付けられたSFノードが、NATタイプのSFノードであるか、すなわち、SFノードがパケットを処理するプロセスにおいてパケットに対応するフロー識別子を修正するかどうかを識別するのに使用される。第2フラグは、NATフラグ(network address translation flag)、N、またはNフラグと表記されてもよい。第2フラグの長さは1ビットであってもよい。End.AD SIDに関連付けられているSFノードがNATタイプのSFノードである場合、第2のフラグの値は1に設定され得る。第2のフラグがデフォルト値である場合、第2のフラグは0に設定され得る。第2のフラグの値が1に設定される場合、TBフィールドおよびCache-Indexフィールドが設定され得る。
12.第3のフラグ:パケットがコピーによって取得されたパケットであるかどうかを識別するために使用され、第3のフラグは、copy flag、C、またはC-flagとして表され得る。第3フラグの長さは1ビットであってもよい。第3のフラグの値が1に設定されている場合、それはパケットがコピーによって取得されたパケットであり、通常は制御パケット、例えば、以下の方法実施形態ではSRHを記憶するようにピア側を制御するために使用されるパケット、すなわち第5のパケットであることを示すことができる。第3のフラグの値が0に設定されている場合、それは、パケットがコピーによって取得されたパケットではなく、通常はデータパケットであることを示すことができる。
13.第4のフラグ:パケットが確認応答パケットであるかどうか識別するのに使用され、第4のフラグは、Acknowledge-flag、A、またはA-flagとして表され得る。第4フラグの長さは1ビットであってもよい。第4のフラグの値が1に設定されている場合、それは、パケットが確認応答パケット、例えば、以下の方法実施形態においてSRHを記憶するようにピア側を制御するために使用されるパケットの受信の確認応答を示すパケットであることを示すことができる。第4のフラグの値が0に設定されている場合、それはパケットが確認応答パケットではないことを示すことができる。
14.キャッシュインデックス(cache index):キャッシュエントリの識別子を搬送するために使用される。キャッシュインデックスの長さは4バイトである。キャッシュインデックスは、第2のフラグが1に設定されるときに設定されてもよい。第2のフラグがデフォルト値である場合、キャッシュインデックスは0に設定され得る。
15.エニーキャストインデックス(anycast index):エニーキャストEnd.AD SIDに一意に対応し、4バイトの長さを有するインデックス。受信側は、パケット内のエニーキャストインデックスをチェックすることができる。
16.予約フィールド(Reserved 2):4バイトの長さを有する。規格の要件によれば、送信側は(MUST)予約フィールドの値を0に設定しなければならず、受信側は(SHOULD)予約フィールドを無視しなければならない。
(2)第1の制御情報は、第1のバイパスSIDで搬送される。
図21は、本出願の一実施形態による、バイパスSIDが第1の制御情報を搬送する概略図である。バイパスSIDは、位置情報(Locator)、機能情報(Function)、または引数情報(Arguments)のうちの1つまたは複数を含んでもよく、第1の制御情報は、第1のバイパスSIDの機能情報内で搬送されてもよく、または、第1のバイパスSIDの引数情報内で搬送されてもよい。引数情報は、関数情報に含まれてもよい。このようにして、ピア・プロキシ・ノードは、SRHを記憶するためにバイパスSIDを用いて制御され得る。このようにして、パケット内の第1の制御情報によって追加的に占有されるバイトが低減され、その結果、パケットのデータ量が低減され、したがって、パケットを送信するためのオーバーヘッドが低減される。
(3)第1の制御情報は、第2のパケットのIPヘッダで搬送される。
例えば、第1の制御情報は、第2のパケットのIPv6ヘッダで搬送され得る。第1の制御情報は、IPv6ヘッダ内の第1のバイパスSID以外の部分で搬送されてもよい。加えて、第2のパケットのペイロードがIPv6パケットである場合、すなわち、第2のパケットがIP in IPパケットの形態と同様の形態であり、外側IPv6ヘッダおよび内側IPv6ヘッダを含む場合、第1の制御情報は外側IPv6ヘッダで搬送され得る。
(4)第1の制御情報は、第2のパケットのSRHにおけるTLVで搬送される。
第2のパケットのSRHは、1つまたは複数のTLVを含み得、第1の制御情報は、TLVで搬送され得る。このようにして、第2のプロキシノードは、SRHを使用してSRHを記憶することによって制御され得る。このようにして、パケット内の第1の制御情報によって追加的に占有されるバイトが低減され、その結果、パケットのデータ量が低減され、したがって、パケットを送信するためのオーバーヘッドが低減される。
一実施形態では、第2のパケットは第2の制御情報をさらに含み得る。第2の制御情報は、転送ノードに、第2のパケットの有効性をチェックするよう指示するために使用される。例えば、第2のパケットを受信した後で、転送ノードは、第2のパケットから第2の制御情報を取得し、第2の制御情報をチェックすることができる。第2の制御情報が正常にチェックされた場合、転送ノードは、第2のパケットが有効であると判定し、第2のパケットを転送し続ける。第2の制御情報のチェックに失敗した場合、転送ノードは、第2のパケットが無効であると判定し、第2のパケットを廃棄する。このようにして、第2のパケットを送信するセキュリティを向上させることができる。なお、有効性チェックは、第2の制御情報の機能を説明するための一例である。いくつかの他の実施形態では、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、別の方法で第2のパケットを処理するよう指示するために使用される。例えば、第2の制御情報は、転送ノードの機能の識別子であってもよい。第2の制御情報を識別した後、転送ノードは、機能に対応する操作を実行する。別の例として、第2の制御情報は、代替的に、操作を実行するために必要な入力パラメータであってもよい。第2の制御情報を識別した後、転送ノードは、第2の制御情報に基づいて第2のパケットを処理する。第2のパケットは第2の制御情報を搬送し、その結果、第2のパケットが第1のプロキシノードと第2のプロキシノードとの間で転送されるプロセスにおいて、第2のパケット内の第2の制御情報は、指定された機能を実行するか、またはパケットを処理するように中間転送ノードに指示するために使用され得る。これにより、ネットワーク機能の拡張が容易になり、柔軟性が向上する。
あるいは、第2の制御情報は、第2のパケット内の任意の位置で搬送されてもよい。例えば、第1の制御情報の位置は、以下の(1)または(2)のいずれかであってもよい。
(1)第2の制御情報は、第2のパケットのSRHにおけるTLVで搬送される。第2のパケットのSRH内のTLVがSRHを復元するためにピア側を示す第1の制御情報をさらに搬送する場合、第2の制御情報と第1の制御情報とは異なる位置にあり得る。例えば、第2のパケットのSRHは第1のTLVおよび第2のTLVを含むことができ、第1の制御情報は第1のTLVに位置し、第2の制御情報は第2のTLVに配置される。第1のTLVおよび第2のTLVは、並列関係にあってもよいし、入れ子関係にあってもよい。例えば、第1のTLVと第2のTLVとは、同じレベルのTLVである。あるいは、第1のTLVおよび第2のTLVの一方は親TLVであり、他方は子TLVである。もちろん、第1の制御情報および第2の制御情報は、代替として、同じTLV内に配置されてもよく、例えば、同じTLVの異なるフィールド内に配置されてもよい。
(2)第2の制御情報は、第2のパケットのIPヘッダで搬送される。例えば、第2の制御情報は、第2のパケットの外側IPv6ヘッダで搬送されてもよい。第2の制御情報および第1の制御情報は、IPv6ヘッダ内の異なる位置で搬送されてもよい。
第2のパケットは、複数の実施態様で生成されることができる。例えば、図22、図23、図24、および図25を参照して、以下では、説明のための例として実施例1および実施例2を使用する。
実施例1:図22、図23、図24、および図25を参照されたい。第1のプロキシノードは、新しいIPヘッダを生成し、生成されたIPヘッダを第1のパケットに追加することができる。具体的には、実施例1は、以下のステップ1およびステップ2を含み得る。
ステップ1:第1のプロキシノードは、第2のパケットのIPヘッダを生成する。
第1のプロキシノードによって生成されるIPヘッダは、IPv6ヘッダであってもよい。IPヘッダの宛先アドレスは、第1のバイパスSIDであってもよいし、次のSRノードに対応するSIDであってもよい。IPヘッダの送信元アドレスは、第1のプロキシノードに対応する第2のバイパスSIDであってもよいし、第1のプロキシノードを識別することができる他の情報であってもよい。あるいは、IPヘッダの送信元アドレスはデフォルトアドレスであってもよい。
ステップ2:第1のプロキシノードは、第2のパケットのIPヘッダを第1のパケットにカプセル化する。
第1のプロキシノードは、第1のパケットおよびIPヘッダを含むパケットを取得するために、第1のパケットにIPヘッダを付加するプッシュ(push)操作を行うことができ、パケットは第2のパケットである。IPヘッダカプセル化操作は、トンネルヘッダ(tunnel header)カプセル化操作と同様であり得る。
図22を参照されたい。場合によっては、拡張ヘッダが第1の制御情報を搬送するために使用される場合、第1のプロキシノードは、ステップ1およびステップ2を実行するだけでなく、以下のステップ3も実行することができる。
ステップ3:第1のプロキシノードは、拡張ヘッダを生成し、拡張ヘッダを第1のパケットにカプセル化する。
この実施形態は、ステップ2が最初に説明され、次いでステップ3が説明される例を使用することによってのみ説明されることを理解されたい。ステップ2およびステップ3の時系列は、本実施形態において限定されず、すなわち、拡張ヘッダおよびIPヘッダをカプセル化する順序は限定されない。一実施形態では、3つのステップは、代替的に別の順序で実行されてもよい。例えば、ステップ3が最初に実行され、次いでステップ2が実行される。もちろん、2つのステップは、代替的に並行して実行されてもよく、すなわち、ステップ2およびステップ3は同時に実行されてもよい。
図22から分かるように、2つの情報、すなわち、第2のプロキシノードへパケットを送信するために使用されるIPv6ヘッダと、制御情報を搬送するために使用される拡張ヘッダが、第1のパケットに付加されてもよい。第2のパケットは、このような簡単な操作によって取得され得る。
第2のパケットはこのようにして生成され、少なくとも以下の効果を達成する:第2のパケットを取得するために、受信された第1のパケットは、IPv6ヘッダおよび拡張ヘッダを追加することによって再カプセル化される。パケット全体を再生する方式と比較して、この方式は処理操作が簡単である。そこで、プロキシノードのコントロールプレーン(例えば、CPU)に依存せずに、プロキシノードのデータプレーン(例えば、転送チップ)でパケット生成処理を行うようにしてもよい。これにより、CPUの処理リソースが節約される。転送チップはパケット生成タスクおよびパケット転送タスクを独立して実行することができるので、転送チップとCPUとの間の相互作用が低減され、その結果、転送チップとCPUとの間の相互作用に必要な処理リソースが節約される。したがって、転送チップの転送性能が改善される。実験により、前述のパケット生成ロジックは、転送チップがステップ503を実行することができるように、転送チップのマイクロコード用に構成される。したがって、この方式は、マイクロコードアーキテクチャをサポートし、強い実用性を有する。
拡張ヘッダのカプセル化は任意選択の方法であることを理解されたい。図23を参照されたい。いくつかの他の実施形態では、第1の制御情報は、生成されたIPv6ヘッダ内の第1のバイパスSIDで搬送されてもよく、IPv6ヘッダはカプセル化される。図24を参照されたい。第1の制御情報は、生成されたSRHのTLVで搬送されてもよく、IPv6ヘッダおよびSRHはカプセル化される。図25を参照されたい。第1の制御情報は、生成されたIPv6ヘッダで搬送されてもよく、IPv6ヘッダはカプセル化される。これらいくつかの例では、拡張ヘッダはカプセル化されなくてもよく、または拡張ヘッダは、いくつかの必要な情報を搬送するために、要件に基づいてカプセル化されてもよい。
任意選択で、図には示されていないが、伝送トンネルが第1のプロキシノードとSFノードとの間に確立されている場合、第1のパケットは、伝送トンネルに対応するトンネルヘッダをさらに含み得る。この場合、第1のプロキシノードは、ステップ1およびステップ2を実行するだけでなく、以下のステップ4も実行することができる、または、第1のプロキシノードは、ステップ1、ステップ2、およびステップ3を実行するだけでなく、以下のステップ4も実行することができる。
ステップ4:第1のプロキシノードは、第1のパケットのトンネルヘッダをストリッピングする。
ステップ4ならびにステップ1、2、および3の時系列は、この実施形態においても限定されないことを理解されたい。例えば、ステップ4は、ステップ1、2、および3の前に実行されてもよい。別の例では、ステップ4は、ステップ1、2、および3の間の瞬間に実行されてもよい。
実施例2:図22、図23、図24、および図25を参照されたい。第1のプロキシノードは、第1のパケットのIPヘッダが第2のパケットのIPヘッダに更新されるように、第1のパケットの元のIPヘッダを修正することができる。具体的には、第1のプロキシノードは、第1のパケットのIPヘッダを第2のパケットのIPヘッダに更新することができる。例えば、第1のプロキシノードは、第1のパケットのIPヘッダ内の宛先アドレスを第1のバイパスSIDに修正することができる。別の例として、第1のプロキシノードは、第1のパケットのIPヘッダ内の宛先アドレスを、次のSRノードに対応するSIDへ修正し得る。別の例として、第1のプロキシノードは、第1のパケットのIPヘッダ内の送信元アドレスを、第1のプロキシノードに対応する第2のバイパスSIDに修正することができる。別の例として、第1のプロキシノードは、第1のパケットのIPヘッダ内の送信元アドレスを、第1のプロキシノードを識別することができる他の情報に修正することができる。
図22を参照されたい。任意選択で、拡張ヘッダが第1の制御情報を搬送するのに使用される場合、第1のプロキシノードは、第1のパケットのIPヘッダを更新するステップを実行するだけでなく、拡張ヘッダを生成し、拡張ヘッダを第1のパケットにカプセル化することもできる。IPヘッダを更新するステップおよび拡張ヘッダを生成するステップの2つのステップの時系列は、実施例2に限定されないことを理解されたい。
任意選択で、図には示されていないが、伝送トンネルが第1のプロキシノードとSFノードとの間に確立されている場合、第1のパケットは、伝送トンネルに対応するトンネルヘッダをさらに含み得る。この場合、第1のプロキシノードは、第1のパケットのIPヘッダを更新するステップを実行するだけでなく、第1のパケットのトンネルヘッダをストリッピングすることもできる。IPヘッダを更新するステップとトンネルヘッダをストリッピングするステップとの2つのステップの時系列は、実施例2に限定されないことを理解されたい。
ステップ504:第1のプロキシノードは、第2のパケットを第2のプロキシノードに送信する。
第2のパケットを送信するために第1のプロキシノードによって使用される転送経路は、以下の転送経路1および転送経路2の一方または両方を含み得る。
転送経路1:第2のパケットはピアリンク(peer link)を介して送信される。
図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のアウトバウンドインターフェースを選択し、第2のパケットが第1のリンクを介して第2のプロキシノードに送信されるように、第1のアウトバウンドインターフェースを介して第2のパケットを送信することができる。例えば、第1のプロキシノードは、以下の構成命令を受信することができる。
[proxy 1]segment-routing ipv6
[Proxy 1-segment-routing-IPv6]service-chain peer-link Ethernet2/0/0 next-hop FE80::1
前述の構成命令では、proxy 1は第1のプロキシノードを示し、構成命令の第1の行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2の行は、サービス機能チェーン内のピアリンクに対応するアウトバウンドインターフェースが、スロット2、ボード0、およびポート0のイーサネットインターフェースであり、ネクストホップがFE 80::1であることを意味する。
ステップ1.2:第2のプロキシノードは、第1のリンクに対応する第1のインバウンドインターフェースを介して第1のプロキシノードから第2のパケットを受信する。
第1のインバウンドインターフェースは、第2のプロキシノード内にあり、第1のリンクに対応するインバウンドインターフェースである。第2のパケットは、第1のリンクを介して第2のプロキシノードの第1のインバウンドインターフェースに到着し、第1のインバウンドインターフェースを介して第2のプロキシノードに入ることができる。
一実施形態では、第1のプロキシノードは、アウトバウンドインターフェースを指定することによって転送経路1を実装することができる。具体的には、第2のパケットのアウトバウンドインターフェースは、第1のアウトバウンドインターフェースとして指定され得る。したがって、第2のパケットを送信する必要があるとき、第1のプロキシノードは、デフォルトで第1のアウトバウンドインターフェースを介して第2のパケットを送信する。あるいは、第1のプロキシノードは、ネクストホップを指定することによって転送経路1を実装してもよい。具体的には、第1のプロキシノードのネクストホップは第2のプロキシノードとして指定され得る。したがって、第2のパケットを送信する必要があるとき、第1のプロキシノードは、デフォルトで第2のプロキシノードをネクストホップとして使用し、第1のアウトバウンドインターフェースを介して第2のパケットを送信する。
転送経路2:ルータノードは転送を実行する。
図3を参照されたい。ルータノードによる転送を伴うプロセスは、以下のステップ2.1から2.3を含み得る。
ステップ2.1:第1のプロキシノードは、第2のリンクに対応する第2のアウトバウンドインターフェースを介してルータノードへ第2のパケットを送信する。
第2のアウトバウンドインターフェースは、第1のプロキシノード内にあり、第2のリンクに対応するアウトバウンドインターフェースである。第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のインバウンドインターフェースは、第2のプロキシノード内にあり、第3のリンクに対応するインバウンドインターフェースである。第2のパケットは、第3のリンクを介して第2のプロキシノードの第2のインバウンドインターフェースに到着し、第2のインバウンドインターフェースを介して第2のプロキシノードに入ることができる。
一実施形態では、第1のプロキシノードは、転送経路1上で第2のパケットを優先的に送信することができる。一実施形態では、転送経路1は、以下のステップ(1)からステップ(3)を通じて優先的に使用され得る。
ステップ(1):第1のプロキシノードは、第1のリンクのステータスを検出する。第1のリンクが利用可能な状態にある場合、第1のプロキシノードはステップ(2)を実行する、または、第1のリンクが非可用状態にある場合、第1のプロキシノードはステップ(3)を実行する。
第1のプロキシノードは、第1のリンクが配備されたかどうか、および第1のアウトバウンドインターフェースの状態がアップ(up)であるかどうかを検出することができる。第1のリンクが配備されており、第1のアウトバウンドインターフェースの状態がupである場合、第1のプロキシノードは、第1のリンクが利用可能状態にあると判定する。第1のリンクが配備されていないか、または第1のアウトバウンドインターフェースの状態がダウン(down)である場合、第1のプロキシノードは、第1のリンクが利用不可状態にあると判定する。
ステップ(2):第1のプロキシノードは、第1のリンクに対応する第1のアウトバウンドインターフェースを介して第2のプロキシノードへ第2のパケットを送信する。
ステップ(3):第1のプロキシノードは、第2のリンクに対応する第2のアウトバウンドインターフェースを介してルータノードに第2のパケットを送信する。
転送経路1が優先的に使用されるので、第2のパケットは、ピアリンクを介して第2のプロキシノードに優先的に送信される。この場合、転送経路1は転送経路2よりも短いので、転送経路1は転送経路2よりも少ないノードを通過する。これにより、第2パケットの送信遅延が低減され得る。
ステップ505:第2のプロキシノードは、第1のプロキシノードから第2のパケットを受信し、第1の制御情報が、第1のパケットに対応するSRHを復元するように第2のプロキシノードに指示していると判定する。
第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に対応するアウトバウンドインターフェースを選択し、アウトバウンドインターフェースを介して第2のパケットを次のトランジットノードに転送する。加えて、トランジットノードは、第2のパケットのSRH内のSLを1だけ減少させ、第2のパケットのIPv6ヘッダ内の宛先アドレスを、1だけ減少したSLに対応するSIDに更新することができる。例えば、第2のパケットを受信した後、トランジットノード1は、宛先アドレスをSID 6からSID 7に更新し、SLを6から5に更新する。第2のパケットを受信した後、トランジットノード2は、宛先アドレスをSID 7からSID 8に更新し、SLを5から4に更新する。第2のパケットを受信した後、トランジットノード3は、宛先アドレスをSID 8からSID 5に更新し、SLを4から3に更新する。
第2のパケットに対して行われる動作について、第1のプロキシノードは、第2のパケットの宛先アドレスを読み取り、第2のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索して、宛先アドレスがローカルSIDテーブル内のSIDと一致するか否かを判定することができる。宛先アドレスがローカルSIDテーブル内の第1のバイパスSIDと一致するとき、言い換えれば、宛先アドレスがローカルSIDテーブル内の第1のバイパスSIDにヒットするとき、第1のプロキシノードは、第2のパケットがSRv6パケットであると判定し、第1のバイパスSIDに対応する操作を実行することができる。第1のバイパスSIDに対応する操作は、第2のパケットが第1の制御情報を含むか否かを検出することと、第2のパケットが第1の制御情報を含む場合、第1のパケットに対応するSRHを復元することを判定し、ステップ506からステップ508を実行するステップと、を含む。
ステップ506:第2のプロキシノードは、第1のパケットに対応するSRHを取得するために、第2のパケットに基づいて第2のプロキシノードのキャッシュを検索する。
一実施形態では、SRH検索方式は、以下の検索方式1~検索方式3のうちのいずれか1つを含み得る。
検索方式1:第2のプロキシノードは、第2のパケットに基づいて第1のパケットに対応するフロー識別子を取得し、第1のパケットに対応するSRHを取得するために、第1のパケットに対応するフロー識別子をインデックスとして用いてキャッシュを検索することができる。第2のパケットに対応するフロー識別子は、第1のパケットに対応するフロー識別子であってもよい。
検索方式2:第2のプロキシノードは、第2のパケットに基づいて第2のキャッシュエントリの識別子を取得し、第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして使用してキャッシュを検索することができる。第2のパケットは、第2のキャッシュエントリの識別子を含み得る。この検索方式方法については、具体的には、図47Aおよび図47Bに示される以下の実施形態を参照されたい。あるいは、第2のパケットは、第1のキャッシュエントリの識別子を含むことができ、第1のキャッシュエントリの識別子は、第2のキャッシュエントリの識別子にマッピングされ得る。この検索方式については、具体的には、図49A~図49Cに示される以下の実施形態を参照されたい。
検索方式3:第2のプロキシノードは、第2のパケットに対応するフロー識別子および第2のパケットに基づくVPN識別子を取得し、第1のパケットに対応するSRHを取得するために、第2のパケットに対応するフロー識別子、VPN識別子、およびEnd.AD SIDに基づいてキャッシュを検索することができ、第2のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子とすることができ、第2のパケットはVPN識別子を含むことができ、VPN識別子はEnd.AD SIDにマッピングされ得る。この検索方式については、具体的には、図51Aおよび図51Bに示す以下の実施形態を参照されたい。
ステップ507:第2のプロキシノードは、第2のパケットと第1のパケットに対応するSRHとに基づいて第3のパケットを生成する。
第3のパケットは、SRHが復元されたパケットである。第3のパケットのフォーマットは図26に示すフォーマットであってもよく、第3のパケットはSRv6パケットであってもよい。第3のパケットは、IPv6ヘッダと、第1のパケットに対応するSRHと、第1のパケットのペイロードとを含み得る。IPv6ヘッダは、送信元アドレスおよび宛先アドレスを含むことができ、SRHは、セグメントリスト、SL、および1つまたは複数のTLVを含むことができ、セグメントリストは、1つまたは複数のSIDを含み得る。図26は、第3のパケットの概略図にすぎないことを理解されたい。本出願の本実施形態では、第3のパケット内のフィールドの数およびフィールドのタイプの数は、図26に示すものより大きくてもよく、図26に示すものより小さくてもよい。加えて、図26に示す第3のパケット内の各フィールドの位置および長さは、実際の要件に基づいて適応的に変更されてもよい。パケット内の各フィールドの位置および長さは、この実施形態では限定されない。
一実施形態では、第3のパケットは、複数の実施態様で生成されてもよい。図26、図27、および図28を参照して、以下では、説明のための例として実施例1および実施例2を使用する。
実施例1:第3のパケットを生成するプロセスにおいて、第2のプロキシノードは、第2のパケットの元のIPヘッダをストリッピングすることができる。具体的には、第3のパケットを生成するプロセスは、以下のステップ1およびステップ2を含み得る。
ステップ1:第2のプロキシノードは、第2のパケットから第2のパケットのIPヘッダをストリッピングする。
具体的には、第2のプロキシノードは、SRにおいてポップ(pop)操作を行うことによって第2のパケットのIPヘッダをポップしてIPヘッダをストリッピングすることができ、その結果、第1のプロキシノードによって以前にカプセル化または修正されたIPヘッダが第2のパケットから除去される。
第2のパケットは複数のIPヘッダを含むことができ、第2のプロキシノードによってストリッピングされ得るIPヘッダは、第2のパケットの外側IPヘッダ、すなわち、第2のパケットのものであり、第2のパケットのルートベース転送に使用されるIPヘッダであり得ることに留意されたい。任意選択で、第2のプロキシノードは、第2のパケットの内側IPヘッダをストリッピングしなくてもよく、第2のパケットの内側IPヘッダは、第1のパケットのIPヘッダであってもよい。例えば、第1のパケットがIPv6パケットである場合、第2のプロキシノードは、内側IPv6ヘッダをストリッピングすることなく外側IPv6ヘッダをストリッピングすることができる。第1のパケットがIPv4パケットである場合、第2のプロキシノードは、内側IPv4ヘッダをストリッピングことなく、外側IPv6ヘッダをストリッピングすることができる。外側IPヘッダがストリッピングされ、内側IPヘッダが保持されるので、第1のパケットの元のIPヘッダが保持され得、ルートベースの転送が元のIPヘッダを用いて行われる。
加えて、任意選択で、第2のプロキシノードは、第3のパケットのIPv6ヘッダをさらにカプセル化してもよい。第3のパケットのIPv6ヘッダは、第1のパケットに対応するIPv6ヘッダであってもよい。第3のパケットのIPv6ヘッダ内の宛先アドレスは、第2のプロキシノードの次のSRノードに対応するSIDであってもよい。第3のパケットのIPv6ヘッダ内の送信元アドレスは、トラフィック分類器に対応するSIDまたはSRネットワーク内のヘッドエンドノードに対応するSIDであってもよく、または第3のパケットのIPv6ヘッダ内の送信元アドレスは、デフォルトアドレスであってもよい。
第1のパケットに対応するIPv6ヘッダは、第2のプロキシノードに予め記憶されてもよい。例えば、第1のパケットに対応するIPv6ヘッダおよび第1のパケットに対応するSRHは、関連付けられて記憶されてもよく、例えば、同じキャッシュエントリに記憶されてもよい。この場合、キャッシュ検索中に、第2のプロキシノードは、第1のパケットに対応するIPv6ヘッダおよび第1のパケットに対応するSRHを見つけることができる。第2のプロキシノードは、第1のパケットに対応するIPv6ヘッダをカプセル化するだけでなく、第1のパケットに対応するSRHもカプセル化するので、第3のパケットのIPv6ヘッダは、第1のパケットに対応するIPv6ヘッダである。
図27を参照されたい。任意選択で、第1のプロキシノードが拡張ヘッダをさらにカプセル化する場合、第2のプロキシノードは、IPヘッダをストリッピングするだけでなく、第1のプロキシノードによってカプセル化された拡張ヘッダもストリッピングすることができる。第1のプロキシノードは、最初にIPヘッダをストリッピングし、次いで拡張ヘッダをストリッピングすることができ、最初に拡張ヘッダをストリッピングし、次いでIPヘッダをストリッピングすることができ、あるいはIPヘッダおよび拡張ヘッダを同時にストリッピングすることができる。IPヘッダのストリッピングと拡張ヘッダのストリッピングとの時系列は、本実施形態では限定されない。
図28を参照されたい。任意選択で、第1のプロキシノードが第2のパケットのSRHをさらにカプセル化する場合、第2のプロキシノードは、IPヘッダをストリッピングするだけでなく、第2のパケットのSRHをストリッピングすることもできる。第2のプロキシノードは、最初に第2のパケットのIPヘッダをストリッピングし、次いで第2のパケットのSRHをストリッピングすることができ、最初に第2のパケットのSRHをストリッピングし、次いでIPヘッダをストリッピングすることができ、またはIPヘッダと拡張ヘッダとを同時にストリッピングすることができる。IPヘッダのストリッピングおよび第2のパケットのSRHのストリッピングの時系列は、この実施形態において限定されない。
もちろん、第2のパケットが拡張ヘッダおよびSRHを含むことは任意選択であるため、第1のプロキシノードは、拡張ヘッダまたはSRHをカプセル化およびストリッピングするステップを実行しなくてもよい。例えば、図29は、第2のパケットが拡張ヘッダおよびSRHを含まない場合の第3のパケットの生成の模式図である。
任意選択で、第2のパケットがIPヘッダを第1のパケットにカプセル化することによって取得される場合、第2のプロキシノードは、第2のパケットのIPヘッダをストリッピングした後で第1のパケットを取得することもできる。IPヘッダがストリッピングされた後に取得されるパケットは、この実施形態においてSFノードによって第1のプロキシノードに送信される第1のパケットと完全に同じでなければならないことは限定されない。一実施形態では、第2のパケットのIPヘッダが除去された後に取得されるパケットは、SFノードによって第1のプロキシノードに送信された第1のパケットとメインコンテンツにおいて同じであり得るが、2つのパケットの間にはわずかな差がある。例えば、第2のパケットの送信プロセスにおいて、中間転送ノードは、第2のパケットを処理することができ、その結果、第1のパケットのものである、第2のパケットに含まれるペイロードまたはヘッダ情報が変更される。わずかに異なるこれらの場合も、本出願の実施形態の保護範囲内に含まれるべきである。
ステップ2:第2のプロキシノードは、第3のパケットを取得するために、第1のパケットに対応するSRHをカプセル化する。
第2のプロキシノードは、第1のパケットに対応するSRHを第1のパケットに追加するカプセル化操作を実行することができ、その結果、取得された第3のパケットは、第1のパケットのペイロードだけでなく、第1のパケットに対応するSRHも搬送する。
第2のプロキシノードは、ストリッピング操作を行うことによって、第1のプロキシノードによって得られたパケットを、SFノードによって第1のプロキシノードへ返されたパケットへの再カプセル化によって復元することができる。SRHカプセル化操作を行うことによって、第2のプロキシノードは、SFノードによってSRHを含むパケットに返されたパケットを復元することができる。これにより、動的なプロキシ機能が実現される。
なお、ステップ1およびステップ2は、少なくとも第3のパケット生成方法に含まれるステップであってもよい。第3のパケットを生成するプロセスでは、ステップ1およびステップ2が実行されるだけでなく、別のステップが実行されてもよいことを理解されたい。すなわち、第2のプロキシノードは、第3のパケットを生成する処理において、IPヘッダをストリッピングするステップとSRHをカプセル化するステップのみを行うのではなく、IPヘッダをストリッピングするステップとSRHをカプセル化するステップに加えて、さらに別のステップを行うようにしてもよい。これは、本明細書では逐一列挙されていない。
別のステップを実行するかどうかは、この実施形態では限定されない。
一実施形態では、第1のパケットに対応するSRHを第1のパケットにカプセル化した後、第2のプロキシノードは、SRHがカプセル化されたパケット内のアクティブSIDをさらに更新することができる。この場合、取得された第3のパケットは、更新されたアクティブSIDを有するパケットである。アクティブなSIDを更新するプロセスは、SRHが処理されるべきSIDを含むか否かを判定することを含み得る。SRHが処理対象SIDを含む場合、パケットの宛先アドレスを次の処理対象SIDに更新し、SRH内のSLを1だけ減少させ、その結果、SLは1だけ減少して次の処理対象SIDを指す。更新されたアクティブなSIDは、任意のタイプのSIDであってもよく、例えば、End.AD SIDまたはEnd.DT 4 SIDであってもよい。
実施例2:第3のパケットを生成するプロセスにおいて、第2のプロキシノードは、第2のパケットの元のIPヘッダをストリッピングするのではなく、第2のパケットの元のIPヘッダを直接修正することができる。具体的には、第3のパケットを生成するプロセスは、第2のプロキシノードによって、第2のパケットのIPヘッダを第1のパケットのIPヘッダに更新するステップと、第3のパケットを取得するために、第1のパケットに対応するSRHをカプセル化するステップとを含み得る。
第2のプロキシノードは、第2のパケットのIPヘッダ内の宛先アドレスを、第1のパケットのIPヘッダ内の宛先アドレスに更新することができる。例えば、第2のパケットのIPヘッダ内の宛先アドレスが第1のバイパスSIDであり、第1のパケットのIPヘッダ内の宛先アドレスが第1のパケットのペイロードの宛先デバイスのアドレスである場合、第2のプロキシノードは、第2のパケットのIPヘッダ内の宛先アドレスを第1のバイパスSIDから第1のパケットのペイロードの宛先デバイスのアドレスに更新することができる。加えて、第2のプロキシノードは、第1のパケットのIPヘッダ内の別のフィールドに基づいて第2のパケットのIPヘッダ内の別のフィールドをさらに対応して修正することができ、例えば、第2のパケットのIPヘッダ内の送信元アドレスを第1のパケットのIPヘッダ内の送信元アドレスに更新することができる。これは、本明細書では逐一列挙されていない。
IPヘッダを更新するステップおよびSRHをカプセル化するステップの時系列は、この実施形態では限定されないことを理解されたい。第1のプロキシノードは、まず、第2のパケットのIPヘッダを第1のパケットのIPヘッダに更新し、次いで、第1のパケットに対応するSRHを、IPヘッダが更新されたパケットにカプセル化することができる。まず、第1のパケットに対応するSRHを第2のパケットにカプセル化し、次いで、SRHがカプセル化されたパケットのIPヘッダを第1のパケットのIPヘッダに更新することができる、または、IPヘッダを更新するステップとSRHをカプセル化するステップとを同時に行ってもよい。
任意選択で、第3のパケットを生成するプロセスにおいて、第1のプロキシノードは、IPヘッダを更新するステップおよびSRHをカプセル化するステップのみを実行する代わりに、IPヘッダを更新するステップおよびSRHをカプセル化するステップに加えて別のステップをさらに実行してもよいことをさらに理解されたい。これは、本明細書では逐一列挙されていない。
第1のプロキシノードは、最初に第2のパケットのIPヘッダをストリッピングし、次いで第2のパケットのSRHをストリッピングすることができ、最初に第2のパケットのSRHをストリッピングし、次いでIPヘッダをストリッピングすることができ、またはIPヘッダと拡張ヘッダとを同時にストリッピングすることができる。IPヘッダのストリッピングおよび第2のパケットのSRHのストリッピングの時系列は、この実施形態において限定されない。ステップ508:第2のプロキシノードは、第3のパケットをルータノードに送信する。
一実施形態において、第2のプロキシノードは、第3のパケットのアクティブなSIDに基づいてローカルSIDテーブルを検索し、ローカルSIDテーブル内にあり、アクティブなSIDによってヒットされたSIDに基づいて、対応する転送操作を実行することができる。
ステップ505からステップ508を参照すると、いくつかの可能な実施形態では、第1のバイパスSIDがSとして示され、第2のプロキシノードがNとして示される例を使用して、第1のバイパスSIDに基づいて実行される操作は以下の通りであってもよい。
When N receives a packet destined to S and S is a local End.ADB SID,N does/注釈:Nが、宛先アドレスがSであるパケットを受信し、SがNのローカルSIDテーブル内のバイパスSIDである場合、Nは以下のステップを実行する。/
IF(No SRH)or(NH=SRH)and SL=0/注釈:外側IPv6ヘッダ(outer IPv6 header)がSRHを含まないか、または外側IPv6ヘッダの次のパケットヘッダ(NH)のタイプがSRHであり、SLの値が0である場合、/
pop the(outer)IPv6 header and its extension headers/注釈:外側IPv6ヘッダとIPv6ヘッダの1つまたは複数の拡張ヘッダをポップする、
restore SRv6 header from the cache using the inner packet and outer Destination option header/注釈:内側パケットおよび外側宛先オプションヘッダを使用してSRHを復元するおよび
update the active SID of the restored SRv6 packet and forward to the next-hop/注釈へ転送する、すなわち、復元されたSRv6パケットのアクティブSIDを更新し、更新されたSRv6パケットをネクストホップへ転送する。
一実施形態においては、第2のパケットを受信した後で第2のプロキシノードが第2のパケットを用いて第1のプロキシノードに応答してはならない(must not)ように構成して、第1のプロキシノードが第2のパケットを繰り返し生成し、第2のパケットを受信したときに第2のパケットを第2のプロキシノードに送信するのを防止し、したがって第1のプロキシノードと第2のプロキシノードとの間の第2のパケットの転送ループを回避するように、第2のプロキシノードの転送規則が事前構成され得る。
ステップ509:ルータノードは、第2のプロキシノードから第3のパケットを受信し、第3のパケットを転送する。
この実施形態は、SRHを復元するためにピア側にパケットを転送するための方法を提供する。バイパス機能を有する新しいSIDは、End.AD SIDのために拡張され、これにより、ローカル・プロキシ・ノードがローカルキャッシュからSRHを見つけられない場合、SRHを復元するように指示するために使用される新しいSIDおよび制御情報は、SRHが復元される必要があるパケット内で搬送される。パケットは、SRHを復元するためにローカル・プロキシ・ノードを置き換えるべきピア・プロキシ・ノードを示すために、新たなSIDを用いてピア・プロキシ・ノードに送信される。このようにして、パケットに対応するSRHを、ピア・プロキシ・ノードを介して復元することができ、次いで、パケットは、SRHを使用してネットワーク内で転送され続けることができる。これにより、SRHの復元の失敗に起因するパケット送信の失敗という問題が回避される。
前述の方法実施形態は、キャッシュミス(cache miss)が生じた場合に、ローカル・プロキシ・ノードが、ピア・プロキシ・ノードにSRHを復元するように指示するために、ピア・プロキシ・ノードへパケットを送信するプロセスを提供する。本出願の例示的な実施形態では、キャッシュミスシナリオのためのキャッシュセルフヒーリングメカニズムがさらに提供される。ローカル・プロキシ・ノードがSRHをキャッシュしない場合、ピア・プロキシ・ノードは、SRHをキャッシュするようにローカル・プロキシ・ノードに指示するために、パケットのSRHをローカル・プロキシ・ノードに送信することができ、それによって、SRHを含むキャッシュエントリを自動的に再学習するようにローカル・プロキシ・ノードを制御する。この場合、その後、SFノードからパケットを再び受信した後で、ローカル・プロキシ・ノードは、SRHをローカルに復元して、ピア・プロキシ・ノードにおいてSRHを復元するために、ピア・プロキシ・ノードへパケットを転送するプロセスを回避することができる。図30Aおよび図30Bの一実施形態を参照して、以下では、キャッシュセルフヒーリングを実施するためのパケット送信手順を具体的に説明する。図30Aおよび図30Bの実施形態は、図5の実施形態との違いを説明することに焦点を当てていることに留意されたい。図5の実施形態と同様のステップおよび他の特徴については、図5の実施形態を参照されたい。図30Aおよび図30Bの実施形態では詳細は説明しない。
図30Aおよび図30Bは、本出願の一実施形態によるパケット伝送方法のフローチャートである。本方法は以下のステップを含み得る。
ステップ3001:ルータノードは、第2のプロキシノードへ第4のパケットを送信する。
第4のパケットは、そのペイロードがサービス機能処理によってSFノードによって処理されるべきパケットである。図31は、本出願の一実施形態による第4のパケットの概略図である。第4のパケットはSRv6パケットであってもよい。第4のパケットは、IPv6ヘッダ、SRH、およびペイロードを含み得る。IPv6ヘッダは、送信元アドレスおよび宛先アドレスを含むことができ、SRHは、セグメントリスト、SL、および1つまたは複数のTLVを含むことができ、セグメントリストは、1つまたは複数のSIDを含み得る。第4のパケットのペイロードは、IPv4パケット、IPv6パケット、またはイーサネットフレームであってもよい。第4のパケットの宛先アドレスは、セグメントリストにおいてアクティブなSID(active SID)を搬送するために使用され得る。アクティブSIDは、アクティブセグメント(Active segment)とも呼ばれ、パケットを受信するSRノードによって処理されるSIDである。SR MPLSでは、アクティブSIDはラベルスタックの最も外側のラベルである。IPv6では、アクティブSIDはパケットの宛先アドレスである。例えば、セグメントリストが5つのSID、すなわちSID 0、SID 1、SID 2、SID 3、およびSID 4を含み、SLの値が2である場合、それは、セグメントリスト内に2つの未処理のSID、すなわちSID 0およびSID 1があることを指示する。セグメントリスト内の現在処理されているSIDはSID 2であり、セグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。本実施形態では、第4のパケットの宛先アドレスはEnd.AD SIDであってもよく、言い換えれば、第4のパケットのアクティブなSIDは、End.AD SIDであってもよい。
第4のパケットのIPv6ヘッダ内の送信元アドレスは、SRHをカプセル化するデバイスを識別するために使用され得る。例えば、送信元アドレスは、トラフィック分類器のアドレスまたはヘッドエンドノードのアドレスであってもよい。任意選択で、第4のパケットのIPv6ヘッダは送信元アドレスを搬送しなくてもよい。
図31は、第4のパケットの概略図にすぎないことを理解されたい。本出願の本実施形態では、第4のパケット内のフィールドの数およびフィールドのタイプの数は、図31に示すものより大きくてもよく、図31に示すものより小さくてもよい。加えて、図31に示す第4のパケット内の各フィールドの位置および長さは、実際の要件に基づいて適応的に変更され得る。パケット内の各フィールドの位置および長さは、この実施形態では限定されない。
End.AD SIDは、第1のプロキシノードまたは第2のプロキシノードが動的プロキシ操作を実行することを示すために使用される。動的プロキシ操作は、Endとも呼ばれる。AD操作は、具体的には、パケット内のSRHをストリッピングすること、パケット内のSRHをキャッシュすること、およびSRHをストリッピングすることによって取得されたパケットを送信することなどの操作を含み得る。End.AD SIDは、第1のプロキシノードまたは第2のプロキシノード上で予め構成されてもよく、第1のプロキシノードまたは第2のプロキシノードのローカルSIDテーブルに予め記憶されてもよい。End.AD SIDは、第1のプロキシノードまたは第2のプロキシノードによってネットワークに配信されてもよい。トラフィック分類器は、分散されたEnd.AD SIDを受信し、End.AD SIDを搬送するパケットが、第1のプロキシノードまたは第2のプロキシノードに転送された後に、第1のプロキシノードまたは第2のプロキシノードが、パケットに対して動的プロキシ操作を実行するようにトリガされるように、パケットにEnd.AD SIDを追加することができる。
ルータノードは、フローベース(flow-based)方式またはパケットベース(packet-based)方式で第4のパケットを送信することができる。第4のパケットを送信する方法は、この実施形態では限定されない。
ステップ3002:第2のプロキシノードは、ルータノードから第4のパケットを受信し、第4のパケットのSRHをキャッシュに記憶する。
第2のプロキシノードによって第4のパケットに対して実行される操作について、一実施形態では、第2のプロキシノードは、第4のパケットの宛先アドレスを読み取り、第4のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索して、宛先アドレスがローカルSIDテーブル内のSIDと一致するか否かを判定することができる。宛先アドレスがローカルSIDテーブル内のEnd.AD SIDと一致する場合、言い換えれば、宛先アドレスがローカルSIDテーブル内においてEnd.AD SIDにヒットすると、第2のプロキシノードは、第4のパケットがSRv6パケットであると判定し、End.AD SIDに対応する動的プロキシ操作を行うことができる。
一実施形態では、第2のプロキシノードは、第4のパケットのSRHがキャッシュに記憶されているかどうかを検出することができる。第4のパケットのSRHがキャッシュに記憶されていない場合、第2のプロキシノードは、第4のパケットのSRHにキャッシュエントリを割り当て、割り当てられたキャッシュエントリに第4のパケットのSRHを記憶する。また、第4パケットのSRHがキャッシュに記憶されたことが検出された場合には、第4パケットのSRHを記憶するステップを省略してもよい。第4のパケットのSRHがキャッシュに記憶されているかどうかを検出する方法は、各キャッシュエントリ内のSRHを第4のパケットのSRHと比較するステップを含み得る。任意のキャッシュエントリ内のSRHが第4のパケットのSRHと一致する場合、第4のパケットのSRHがキャッシュエントリに記憶されていると判定するまたは、各キャッシュエントリ内のSRHが第4のパケットのSRHと整合しない場合には、第4のパケットのSRHがキャッシュに記憶されておらず、第4のパケットのSRHを記憶するためにキャッシュを更新する必要があると判定するステップを含む。一実施形態では、キャッシュエントリ内のSRHのすべての内容は、第4のパケット内のSRHのすべての内容と比較されてもよく、キャッシュエントリ内のSRHの一部の内容は、第4のパケット内のSRHの一部の内容と比較されてもよく、またはキャッシュエントリ内のSRHのハッシュ値は、第4のパケットのSRHのハッシュ値と比較されてもよい。この実施形態では、比較方法は限定されない。
一実施形態では、第4のパケットのSRHは、以下の記憶方式1から記憶方式3のいずれか1つに記憶され得る。
記憶方式1:第2のプロキシノードは、第4のパケットに対応するフロー識別子を取得し、第4のパケットに対応するフロー識別子をインデックスとして用いて第4のパケットのSRHを記憶することができる。第2のプロキシノードは、キー値記憶方式で第4のパケットのSRHを記憶することができる。この場合、フロー識別子は鍵(key)であり、第4のパケットのSRHは値(value)である。
フロー識別子は、パケットが属するデータフローを識別するために使用される。同じデータフロー内のパケットは同じフロー識別子に対応し、フロー識別子はパケット内の1つまたは複数のフィールドの値であり得る。例えば、第4のパケットに対応するフロー識別子は、第4のパケットの5タプル、MACヘッダ情報、またはアプリケーション層情報とすることができる。5タプルは、パケットの送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号、およびトランスポート層プロトコル番号を含み得る。MACヘッダ情報は、パケットの送信元MACアドレス、宛先MACアドレス、イーサタイプ(EtherType)、VLANタグ(VLAN tag)を含んでもよい。アプリケーション層情報は、パケットのペイロード内の1つまたは複数のフィールドの値であり得る。
記憶方式2:第2のプロキシノードは、キャッシュエントリの識別子を取得し、キャッシュエントリの識別子をインデックスとして使用して第4のパケットのSRHを記憶することができる。第2のプロキシノードは、キー値記憶方式で第4のパケットのSRHを記憶することができる。この場合、キャッシュエントリの識別子はkeyであり、第4のパケットのSRHはvalueである。
記憶方式3:第2のプロキシノードは、第4のパケットに対応するフロー識別子とインデックスとしてのEnd.AD SIDとを用いて第4のパケットのSRHを記憶してもよい。第2のプロキシノードは、キー値記憶方式で第4のパケットのSRHを記憶することができる。この場合、フロー識別子とEnd.AD SIDの組み合わせはkeyであり、第4のパケットのSRHはvalueである。
ステップ3002を通じて、第4のパケットのSRHは第2のプロキシノードに記憶され得る。この場合、SFノードまたは第1のプロキシノードが後続のプロセスでSRHを含まないパケットを第2のプロキシノードに送信する場合、第2のプロキシノードは、SRHを復元するために、事前に生成されたキャッシュエントリを検索することによって第4のパケットのSRHを見つけることができる。
ステップ3003:第2のプロキシノードは、エンドポイント動的プロキシSIDと、第4のパケットと、第1のプロキシノードに対応する第2のバイパスSIDとに基づいて第5のパケットを生成する。
任意選択の実施形態では、ステップ3003はステップ505の後に実行されてもよいことに留意されたい。例えば、第2のプロキシノードが、第2のパケットを受信することによって、第1のプロキシノードでキャッシュミスが発生したことを発見した場合、第2のプロキシノードは、第5のパケットを使用してSRHを第1のプロキシノードに同期させるために、第4のパケットを受信したときに第5のパケットの送信手順をトリガし、これにより、SRHが第1のプロキシノードのキャッシュ内に復元される。これにより、第1のプロキシノードのキャッシュセルフヒーリングが容易になる。
第5のパケットは、第4のパケットのSRHをピア・プロキシ・ノードに送信するために使用されるパケットである。本実施形態では、第5のパケットは制御パケットであってもよい。第5のパケットは、第4のパケットの第2のバイパスSID、制御情報、およびSRHを含み得る。第5のパケットの送信元アドレスは、第2のプロキシノードに対応する第1のバイパスSID、または第2のプロキシノードを識別することができる他の情報とすることができる。第5のパケットはSRv6パケットであってもよく、第5のパケットは、IPv6ヘッダ、SRH、およびペイロードを含んでもよい。IPv6ヘッダは、第5のパケットの送信元アドレスおよび第5のパケットの宛先アドレスを含み得る。第5のパケットのSRHは、第4のパケットのSRHおよび第2のバイパスSIDに各SIDを含んでもよい。第5のパケットのペイロードは、第4のパケットのペイロードであってもよい。第5のパケットが第4のパケットのペイロードを含むことは任意選択であることに留意されたい。別の実施形態では、第5のパケットは、第4のパケットのペイロードを含まなくてもよい。第5のパケットのIPv6ヘッダ内の宛先アドレスは、第1のプロキシノードに対応する第2のバイパスSIDであってもよく、第2のバイパスSIDは、第5のパケットの宛先ノードが第1のプロキシノードであることを識別するために使用される。
任意選択の実施形態では、End.AD SIDに対応する処理ポリシーは、第2のプロキシノード上で事前構成されてもよい。処理ポリシーは、動的プロキシ操作、ならびに第5のパケットを生成および送信する操作を実行することを含み得る。したがって、第2のプロキシノードは、第4のパケットを受信した後、第4のパケット内のEnd.AD SIDに基づいて、動的プロキシサービスを提供するためのステップ3002、ステップ3008、およびステップ3009だけでなく、SRHを記憶するように第1のプロキシノードを制御するためのステップ3003およびステップ3004を実行する。このようにして、SIDベースのSRv6プログラミング能力が完全に利用され、End.AD SIDに対応する操作が拡張される。
End.AD SID構成プロセスの場合、一実施形態では、第2のプロキシノードに対して事前に構成操作が実行されてもよく、第2のプロキシノードは、構成命令からEnd.AD SIDを取得するために構成命令を受信してもよく、第2のプロキシノードは、End.AD SIDを記憶することができ、例えば、第2のプロキシノードのローカルSIDテーブル内にEnd.AD SIDを記憶し得る。同様に、第1のプロキシノードに対して構成操作が事前に実行されてもよく、第1のプロキシノードは、構成命令からEnd.AD SIDを取得するために、構成命令を受信することができ、第1のプロキシノードは、End.AD SIDを記憶することができ、例えば、第1のプロキシノードのローカルSIDテーブル内にEnd.AD SIDを記憶する。構成操作は、第1のプロキシノードまたは第2のプロキシノード上でユーザによって実行されてもよいし、SFCの制御プレーン、例えばSDNコントローラまたはNFVMによって実行されてもよい。これはこの実施形態では限定されない。
一実施形態では、第2のプロキシノードおよび第1のプロキシノードは、エニーキャストエンドポイント動的プロキシSID(anycast End.AD SID)関係にあってもよい。エニーキャスト(Anycast)は、IPv6通信モードであり、同じまたは対応するサービスを提供するノードのグループを識別するために同じアドレスを使用することを意味し、その宛先アドレスがそのアドレスであるパケットは、ノードのグループ内の任意のノードにルーティングされ得る。この実施形態では、第2のプロキシノードおよび第1のプロキシノードに同じEnd.AD SIDが割り当てられてもよく、その結果、第2のプロキシノードに構成されたEnd.AD SIDは、第1のプロキシノード上に構成されたEnd.AD SIDと同じである。この場合、宛先アドレスがEnd.AD SIDであるパケットをルータノードが、受信した場合において、ルータノードは、パケットを第2のプロキシノードに送信してもよく、パケットを第1のプロキシノードに送信してもよい。したがって、第2のプロキシノードまたは第1のプロキシノードは、パケットに対して動的プロキシ操作を実行することができる。これにより、デュアルホーミングアクセス機能が容易になる。加えて、対応するエニーキャストインデックス(anycast-index)がエニーキャストEnd.AD SIDのために構成されてもよい。エニーキャストインデックスは、エニーキャスト関係にあるノードの同じグループのEnd.AD SIDを識別するために使用される。同じEnd.AD SIDのために、End.AD SID用の第2のプロキシノード上で構成されたエニーキャストインデックスは、End.AD SID用に第1のプロキシノードに構成されたエニーキャストインデックスと同じであってもよい。
例えば、第2のプロキシノードは、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
上記の構成命令において、proxy 1は第2のプロキシノードを示し、構成命令の第1の行は、IPv6 SRが構成される必要があることを意味し、構成命令の第2の行は、Locator(位置情報)がt1であり、IPv6プレフィックスがA::1 64であり、静的ルートが32であることを意味する。構成命令の3行目は、IPv6 SR Locator構成を意味し、オペレーションコードが::2であり、End.AD SIDに対応するanycast-indexが10であることを意味する。構成命令の4行目はIPv6 SR End.AD SID構成を意味し、IPv4パケットがカプセル化されることを意味し、IPv4パケットは、スロット1、ボード0、およびポート0のイーサネットインターフェースをアウトバウンドインターフェースとして使用して送信され、ネクストホップアドレスは1.1.1.1であり、インバウンドインターフェースは、スロット1、ボード0、およびポート1のイーサネットインターフェースである。前述の構成命令が使用されるシナリオは、第4のパケットのペイロードがIPv4パケットであることであり、プロキシノードが第5のパケットを生成する方法は、第4のパケットで搬送されたIPv4パケットを取得し、IPv4パケットを第3のパケットとして使用することである。
第3の制御情報は、第1のパケットに対応するSRHを記憶するように第1のプロキシノードを指示するために使用される。一実施形態では、第3の制御情報は、第3のフラグおよび第4のフラグを含み得る。第3のフラグは、パケットがコピーによって取得されたパケットであるかどうかを識別するために使用される。例えば、第3フラグは、コピーフラグ(Copy flag、C-flag)と表記されてもよい。第5のパケットはコピー・フラグ・フィールドを含んでいてよく、第3のフラグはコピー・フラグ・フィールドで搬送されていてよい。例えば、第3フラグの長さは1ビットであってもよい。任意選択で、図30Aおよび図30Bの実施形態では、第5のパケットは、第4のパケットのコピーをカプセル化することによって取得されたパケットであってもよい。したがって、第3のフラグは1に設定されてもよく、第3のフラグは、第5のパケットがコピーによって取得されたパケットであることを識別してもよい。第4のフラグは、パケットが確認応答パケットであるか否かを識別するために使用される。例えば、第4フラグを確認応答フラグ(copy acknowledge flag、A-flag)と表記する場合がある。第5のパケットは確認応答フラグフィールドを含むことができ、第4のフラグは確認応答フラグフィールドで搬送されることができる。例えば、第4フラグの長さは1ビットであってもよい。任意選択で、図30Aおよび図30Bの実施形態では、第4のフラグは0に設定されてもよく、第4のフラグは、第5のパケットが確認応答パケットではないことを識別してもよい。
第3の制御情報は、第5のパケット内の任意の位置で搬送され得る。例えば、第3の制御情報の位置は、以下の(1)~(4)のいずれかであってもよい。
(1)第3の制御情報は、第5のパケットの拡張ヘッダで搬送される。
一実施形態では、第5のパケットの拡張ヘッダは宛先オプションヘッダであってもよく、宛先オプションヘッダはSRHの前に位置してもよく、第3の制御情報は宛先オプションヘッダで搬送されてもよい。このように、第5のパケットは第4のパケットのSRHを含み、SRHはルーティングヘッダのタイプであるので、SRHで指定された第1のプロキシノードは拡張ヘッダを解析することができ、その結果、第1のプロキシノードは、第3の制御情報に基づいてSRHを記憶するために、拡張ヘッダ内の第3の制御情報を読み取る。
(2)第3の制御情報は、第2のバイパスSIDで搬送される。
バイパスSIDは、位置情報、機能情報、または引数情報のうちの1つまたは複数を含んでもよく、第3の制御情報は、第2のバイパスSIDの引数情報で搬送されてもよく、または、第2のバイパスSIDの引数情報で搬送されてもよい。このようにして、ピア・プロキシ・ノードは、SRHを記憶するためにバイパスSIDを用いて制御され得る。このようにして、パケット内の第3の制御情報によって追加的に占有されるバイトが低減され、その結果、パケットのデータ量が低減され、したがって、パケットを送信するためのオーバーヘッドが低減される。
(3)第3の制御情報は、第5のパケットのIPヘッダで搬送される。
例えば、第3の制御情報は、第5のパケットのIPv6ヘッダで搬送され得る。第3の制御情報は、IPv6ヘッダ内の第2のバイパスSID以外の部分で搬送されてもよい。加えて、第5のパケットのペイロードがIPv6パケットである場合、すなわち、第5のパケットがIP in IPパケットの形態と同様の形態であり、外側IPv6ヘッダおよび内側IPv6ヘッダを含む場合、第3の制御情報は外側IPv6ヘッダで搬送され得る。
(4)第3の制御情報は、第5のパケットのSRHにおけるTLVで搬送される。
第5のパケットのSRHは、1つまたは複数のTLVを含み得、第3の制御情報は、TLV内で搬送され得る。このようにして、第1のプロキシノードは、SRHを使用してSRHを記憶することによって制御され得る。このようにして、パケット内の第3の制御情報によって追加的に占有されるバイトが低減され、その結果、パケットのデータ量が低減され、したがって、パケットを送信するためのオーバーヘッドが低減される。
第5のパケットのフォーマットは複数であってもよい。第5のパケットのフォーマットは、ネットワークトポロジ構造および/または経路計画上の第1のプロキシノードの要件によって異なり得るか、または制御情報を搬送する方法によって異なり得る。添付の図面を参照して、以下では、説明のための例として実施例1および実施例2を使用する。
実施例1:第5のパケットの宛先アドレスは第2のバイパスSIDであってもよい。図32、図33、図34および図35を参照されたい。例えば、第5のパケットのIPv6ヘッダ内の宛先アドレス(Destination Address、DA)フィールドは、第2のバイパスSIDを搬送することができる。
この方式は、複数のシナリオに適用されることができ、以下では、説明のための例としてシナリオ1からシナリオ3を使用する。
シナリオ1:第1のプロキシノードおよび第2のプロキシノードは、1ホップIPリンク上に配置される。1ホップIPリンクの具体的な概念については、前述の説明を参照されたい。ここでは詳細を繰り返さない。図13は、第1のプロキシノードと第2のプロキシノードが1ホップIPリンク上にある場合の模式図である。
SRv6ネットワークでは、SRv6パケットのIPv6ヘッダ内の宛先アドレスは、通常、パケットを転送すべき次のSRノードを識別するために使用される。したがって、第1のプロキシノードおよび第2のプロキシノードが1ホップIPリンク上に配置される場合、第2のプロキシノードは、第5のパケットの次のSRノードが第1のプロキシノードであることを指示するために宛先アドレスに第2のバイパスSIDを含める。
シナリオ2:第1のプロキシノードおよび第2のプロキシノードはマルチホップIPリンク上に位置し、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードのSR機能は有効にされない。
SR機能が有効になっていないトランジットノードの場合、第5のパケットを受信すると、トランジットノードは、第5のパケットの宛先アドレス(すなわち、第2のバイパスSID)に基づいてルーティングFIBを検索し、ルーティングFIB内にあり、宛先アドレスによってヒットされたエントリに基づいてパケットを転送することができる。
シナリオ3:第1のプロキシノードおよび第2のプロキシノードはマルチホップIPリンク上に配置されるが、第5のパケットを転送するためのトランジットノードを指定するためのサービス要件はない。
シナリオ3は、複数のケースを含んでもよく、トランジットノードのSR機能が有効であるケースと、トランジットノードのSR機能が無効であるケースとを含んでもよい。例えば、マルチホップIPリンクが複数の転送経路を含み、第1のプロキシノードが第5のパケットを転送するための転送経路を指定する必要がない場合、トランジットノードのSR機能が使用可能または使用不可能であるとき、宛先アドレスは第2のバイパスSIDを搬送することができる。別の例では、マルチホップIPリンクがただ1つの転送経路を含む場合、例えば、第1のプロキシノードと第2のプロキシノードとの間にただ1つのトランジットノードが存在する場合、トランジットノードのSR機能が使用可能または使用不可能であるとき、第5のパケットは、第2のプロキシノードによってトランジットノードを指定することなく、トランジットノードによって第1のプロキシノードに転送され得る。
SR機能が有効になっているトランジットノードについて、第5のパケットを受信すると、トランジットノードは、第5のパケットの宛先アドレス、すなわち、第2のバイパスSIDに基づいてローカルSIDテーブルを検索することができ、すなわち、第2のバイパスSIDをローカルSIDテーブル内の各SIDと照合することができる。この場合、第2のバイパスSIDは、トランジットノードによって分配されたSIDではなく、トランジットノードのローカルSIDテーブルに記憶されていないため、トランジットノードは、第2のバイパスSIDがローカルSIDテーブルをミスすると判定し、従来のIPルーティング方式で第5のパケットを転送する。具体的には、トランジットノードは、第2のバイパスSIDに基づいてルーティングFIBを検索し、ルーティングFIB内にあり、宛先アドレスによってヒットされたエントリに基づいて第5のパケットを転送する。
第3の制御情報を搬送する異なる方法に基づいて、具体的には、実施例1によって実施される第5のパケットの複数のフォーマットが存在し得る。図32~図35を参照して、以下では、説明のための例として実施例1.1~実施例1.4を使用する。
実施例1.1:図32を参照されたい。拡張ヘッダが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図32に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、拡張ヘッダ、SRH、およびペイロードを含み、第5のパケットの拡張ヘッダは、第3の制御情報を含み、拡張ヘッダは、IPv6ヘッダとSRHとの間に配置され得る。
実施例1.2:図33を参照されたい。第2のバイパスSID(すなわち、図中のEnd.ADB SID)が第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図33に示されるフォーマットであってもよい。第5のパケットは、IPv6ヘッダと、SRHと、ペイロードとを含み、第5のパケットの第2のバイパスSIDは、第3の制御情報を含む。図32と図33との比較を通して、実施例1.2では第5のパケットの長さが短縮され、その結果、第5のパケットを圧縮できることが分かる。
実施例1.3:図34を参照されたい。SRH内のTLVが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図34に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、SRH、およびペイロードを含み、第5のパケットのSRHは、TLVを含み、TLVは、第3の制御情報を含む。
実施例1.4:図35を参照されたい。IPv6ヘッダが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図35に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、SRH、およびペイロードを含み、第5のパケットのIPv6ヘッダは、第3の制御情報を含む。
実施例2:第5のパケットの宛先アドレスは、次のSRノードに対応するSIDとすることができる。図36、図37、図38および図39を参照されたい。例えば、第5のパケットのIPv6ヘッダ内の宛先アドレス(DA)フィールドは、次のSRノードに対応するSIDを搬送することができる。次のSRノードに対応するSIDは、次のSRノードによってSRネットワークに分配されてもよく、次のSRノードに対応するSIDは、次のSRノードのローカルSIDテーブルに記憶されてもよい。
この方式は、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置され、第5のパケットを転送するためのトランジットノードを指定するためのサービス要件があるシナリオに適用され得る。第2のプロキシノードは、第5のパケットがSRノードによって第1のプロキシノードへ転送されるように、第5のパケットがローカル側からSRノードへ転送される必要があることを指示するために、宛先アドレスに、次のSRノードに対応するSIDを含めることができる。
例えば、図18は、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置される概略図であり、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードは、トランジットノード1、トランジットノード2、およびトランジットノード3を含み、トランジットノード1、トランジットノード2、およびトランジットノード3のSR機能はすべて有効になっている。第2のプロキシノードが、第5のパケットがトランジットノード3によって第1のプロキシノードに転送されるべきであると指定する必要がある場合、第5のパケットの宛先アドレスは、トランジットノード3に対応するSIDを搬送することができる。この場合、第5のパケットを受信すると、トランジットノード3は、第5のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索し、第5のパケットの宛先アドレスがローカルSIDテーブル内のSIDにヒットしたと判定し、SIDに対応する操作を実行することができ、例えば、第5のパケットを第1のプロキシノードに転送する。
第3の制御情報を搬送する異なる方法に基づいて、具体的には、実施例2によって実施される第5のパケットの複数のフォーマットが存在し得る。図36、図37、図38、および図39を参照して、以下では、説明のための例として実施例2.1から実施例2.4を使用する。
実施例2.1:図36を参照されたい。拡張ヘッダが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図36に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、拡張ヘッダ、SRH、およびペイロードを含み、第5のパケットの拡張ヘッダは、第3の制御情報を含む。
実施例2.2:図37を参照されたい。第2のバイパスSID(すなわち、図37のEnd.ADB SID)が第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図37に示されるフォーマットであってもよい。第5のパケットは、IPv6ヘッダと、SRHと、ペイロードとを含み、第5のパケットの第2のバイパスSIDは、第3の制御情報を含む。
実施例2.3:図38を参照されたい。SRH内のTLVが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図38に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、SRH、およびペイロードを含み、第5のパケットのSRH内のTLVは、第3の制御情報を含む。
実施例2.4:図39を参照されたい。IPv6ヘッダが第3の制御情報を搬送するために使用される場合、第5のパケットのフォーマットは図39に示されたものであってもよい。第5のパケットは、IPv6ヘッダ、SRH、およびペイロードを含み、第5のパケットのIPv6ヘッダは、第3の制御情報を含む。
一実施形態では、第5のパケットの生成プロセスは、以下のステップ1からステップ3を含み得る。
ステップ1:第2のプロキシノードは、第2のバイパスSIDを第4のパケットのSRH内のセグメントリストに挿入する。
第2のプロキシノードは、第2のバイパスSIDが挿入された後に、セグメントリストが第4のパケットの各元のSIDに加えて第2のバイパスSIDを新たに含むように、SRにおいてプッシュ(push)操作を実行することによって第2のバイパスSIDをセグメントリストに挿入することができる。セグメントリスト内の第2のバイパスSIDの挿入位置について、第2のプロキシノードは、SRH内のアクティブSIDの後に第2のバイパスSIDを挿入することができ、言い換えると、End.AD SIDの後に第2のバイパスSIDを挿入することができる。図40は、本出願の一実施形態による第2のバイパスSIDの挿入の概略図である。図40の左側には、第4のパケットのセグメントリストが示されており、図40の右側には、第5のパケットのセグメントリストが示されている。図40では、End.AD SIDはSID 2であり、第2のバイパスSIDはSID 5である。この場合、第2のプロキシノードは、SID 2の後ろにSID 5を挿入する。
上記は、SID 0からSID 5までの順序で説明していることに留意されたい。SID 0の位置を「前方」と呼び、SID 5の位置を「後方」と呼ぶ。SRHを解析するとき、SRv6ノードは通常、SRH内のSIDを逆の順序で読み取る。例えば、図40において、SID 4は、第4のパケットのSRHにおいて読み出されて処理される第1のSIDであり、SID 3は、読み出されて処理される第2のSIDであり、SID 2は、読み出されて処理される第3のSIDである。残りは類推によって推定され得、SID 0は、読み取られて処理される最後のSIDである。
ステップ2:第2のプロキシノードは、第4のパケットのSRH内のSLを更新する。
ステップ3:第2のプロキシノードは、第5のパケットを取得するために第4のパケットの宛先アドレスを更新する。
第2のプロキシノードによって生成された第5のパケットのSLは、SL更新ステップによって受信された第4のパケットのSLよりも大きい。SRv6ネットワークでは、SRv6パケットのSRH内のSLは、通常、処理されるべきSIDの数を識別するために使用される。この場合、SLの値を修正することによって、第2のプロキシノードによって送信された第5のパケットのSRHが、第2のプロキシノードによって受信された第4のパケットのSRHよりも多くの処理対象のSIDを含むことを示すことができ、その結果、第1のプロキシノードおよび/または第1のプロキシノードと第2のプロキシノードとの間のトランジットノードは、SLによる指示の下でこれらのより多くのSIDを処理する。
第5のパケットの次の処理対象SIDは、宛先アドレス更新操作を介してEnd.AD SIDから別のSIDに更新され得、その結果、第1のプロキシノードおよび/またはトランジットノードが宛先アドレスを使用してローカルSIDテーブルを検索するときに別のSIDに対応する操作を実行する。
前述のステップ1~3は、通常のSRv6転送操作とは異なることに留意されたい。通常のSRv6の場合、SRH内の各SIDは、ヘッドエンドノードによってSRv6パケットに挿入される。ヘッドエンドノード以外の各SRv6ノードについて、SRv6ノードがSRv6パケットを受信するたびに、SRv6ノードは、SRHにSIDを挿入したりSRHからSIDを削除したりすることなく、SRH内のアクティブなSIDに対応する操作のみを実行し、言い換えれば、各中間SRv6ノードはSRH内のSIDを変更しない。さらに、SRv6ノードは、SRH内の1つのSIDがローカル側で処理されることを示すために、SRH内のSLを1だけ減少させる、すなわち、SL--を実行する。したがって、SRH内の残りの未処理のSIDの数は1だけ減少する。しかしながら、この実施形態では、SRH内の第2のバイパスSIDが第2のプロキシノードによって第4のパケットに挿入されるので、第2のプロキシノードは、SRH内の残りの未処理のSIDの数が1だけ増加することを示すために、SRH内のSLを1だけ増加させる、すなわち、SL++を実行する。新たに追加される未処理のSIDは第2のバイパスSIDであり、第2のバイパスSIDは、第1のプロキシノードが第2のバイパスSIDに対応する操作を実行するように、第1のプロキシノードに送信される必要がある。SLが1増加した後、SRHにおけるアクティブなSIDは、End.AD SIDから第2のバイパスSIDに更新される。
この実施形態は、ステップ1が最初に説明され、次にステップ2が説明され、最後にステップ3が説明される例を使用することによってのみ説明されることを理解されたい。ステップ1、ステップ2、およびステップ3の時系列は、この実施形態では限定されない。一実施形態では、3つのステップは、代替的に別の順序で実行されてもよい。例えば、最初にステップ3が実行され、次にステップ1が実行され、最後にステップ2が実行される。別の例では、最初にステップ2が実行され、次にステップ1が実行され、最後にステップ3が実行される。もちろん、3つのステップは、代替的に並行して実行されてもよく、すなわち、ステップ1、ステップ2、およびステップ3は同時に実行されてもよい。
一実施形態では、制御情報が拡張ヘッダで搬送される場合、第2のプロキシノードは、ステップ1、ステップ2、およびステップ3を実行するだけでなく、以下のステップ4も実行することができる。
ステップ4:第2のプロキシノードは、拡張ヘッダを生成し、拡張ヘッダを第4のパケットにカプセル化する。
ステップ4ならびにステップ1、2、および3の時系列は、この実施形態では限定されないことを理解されたい。例えば、ステップ4は、代替的に、ステップ1、2、および3の前に実行されてもよい。
一実施形態では、第2のプロキシノードは、2つの第4のパケットを取得するために第4のパケットをコピーすることができ、一方は第4のパケット自体であり、他方は第4のパケットのコピーである。第2のプロキシノードは、2つの第4のパケットのうちの1つを用いて第5のパケットを生成し、他方の第4のパケットを用いて第7のパケットを生成することができる。任意選択で、第2のプロキシノードは、第4のパケットのコピーを用いて第5のパケットを生成し、第4のパケット自体を用いて第3のパケットを生成することもできる。第5のパケットは、第5のパケットが第4のパケットをコピーすることによって取得されたパケットであることを示すためにC-flagを搬送することができる。
第5のパケットの前述の生成方法は、異なる特定のシナリオに基づく複数の実施態様によって実施することができる。以下では、説明のための例として実施例1および実施例2を使用する。
実施例1:第2のプロキシノードは、第4のパケットのSLを1増加させる。ステップ3は以下の通りであり得る:第4のパケットの宛先アドレスを第1のバイパスSIDに更新する。
図40を参照されたい。図40の左側は、第4のパケットのSLを示しており、第4のパケットのSLの値は2である。この場合、それは、セグメントリストに2つの未処理のSID、すなわちSID 0およびSID 1が存在することを示し、セグメントリスト内の現在アクティブなSIDはSID 2であり、セグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。第2のプロキシノードは、SLの値が2から3に更新されるように、SLを1だけ増加させることができる。この場合、図40の右側に示すように、第5のパケットのSLの値は3であり、これは、セグメントリスト内に3つの未処理のSID、すなわち、SID 0、SID 1、およびSID 2があることを示しており、セグメントリスト内の現在アクティブなSIDはSID 5であり、セグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。加えて、第2のプロキシノードは、第4のパケットの宛先アドレスがEnd.AD SIDから第2のバイパスSIDに更新されるように、第4のパケット内のIPv6ヘッダ内の宛先アドレスを修正することができる。
実施例1は、第1のプロキシノードおよび第2のプロキシノードが1ホップIPリンク上に配置されるシナリオ、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク(off-link)上に配置されるが、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードのSR機能が有効化されていないシナリオ、および第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置されるが、第5のパケットを転送するためのトランジットノードを指定するためのサービス要件がないシナリオなどの複数のシナリオに適用されることができる。第2のプロキシノードが実施例1を実行するシナリオは、この実施形態では限定されない。
実施例2:第2のプロキシノードは、代替として、第4のパケットのSRH内のセグメントリストに1つまたは複数のターゲットSIDを挿入することができる。ステップ2は以下の通りであり得る:第2のプロキシノードは、第4のパケットのSLをNだけ増加させ、Nは1より大きい正の整数である。ステップ3は以下の通りであってよく、第2のプロキシノードは、第4のパケットの宛先アドレスを、次のSRノードに対応する1つまたは複数のターゲットSID内のSIDに更新する。
図41を参照されたい。例えば、第1のプロキシノードと第2のプロキシノードとの間にトランジットノード1、トランジットノード2、およびトランジットノード3が存在する場合、第2のプロキシノードによって挿入される1つまたは複数のターゲットSIDは、3つのSID、すなわち、トランジットノード3に対応するSID 8、トランジットノード2に対応するSID 7、およびトランジットノード1に対応するSID 6であってもよい。例えば、図41の左側には、第4のパケットのSLが示されており、第4のパケットのSLの値は2である。この場合、それは、セグメントリストに2つの未処理のSID、すなわちSID 0およびSID 1があることを示し、セグメントリスト内の現在アクティブなSIDはSID 2であり、セグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。第2のプロキシノードは、SLの値を2から6に更新することができる。この場合、図41の右側に示すように、第5のパケットのSLの値は6であり、セグメントリスト内に6つの未処理のSID、すなわち、SID 0、SID 1、SID 2、SID 5、SID 6、およびSID 7が存在することを示しており、セグメントリスト内の現在アクティブなSIDはSID 8であり、セグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。
このようにして、ターゲット転送経路は、第2のプロキシノード-トランジットノード3-トランジットノード2-トランジットノード1として指定され得る。なお、各ノードに対応するSIDを対象SIDとして用いることは一例にすぎない。ターゲット転送経路が緩い経路である場合、第2のプロキシノードによって挿入された1つまたは複数のターゲットSIDは、トランジットノードの一部に対応するSIDであり得る。
実施例2は、第1のプロキシノードおよび第2のプロキシノードがマルチホップIPリンク上に配置され、第5のパケットを転送するためにトランジットノードを指定するためのサービス要件があるシナリオなどの複数のシナリオに適用されることができる。第2のプロキシノードが実施例2を実行するシナリオは、この実施形態では限定されない。
いくつかの可能な実施形態では、第2のプロキシノードは、ターゲットSIDを挿入することによってトラフィック計画を実行することができる。例えば、図42は、本出願の一実施形態によるターゲットSIDを使用してトラフィック計画を実行する概略図である。図42では、第1のプロキシノードと第2のプロキシノードとの間に、9個の転送ノード、すなわち、ノードN1、ノードN2、および、ノードN3乃至ノードN9が存在し、第1のプロキシノードと第2のプロキシノードとの間に、(N1,N2,N3)、(N1,N4,N5,N3)、および、(N1,N6,N7,N8,N9,N3)の3つのパスが存在する。第5のパケットは、3つの経路のうちの1つの指定された経路を介して第1のプロキシノードに送信されるターゲットSIDを使用することによって制御されてもよい。例えば、経路(N1,N2,N3)の帯域幅が最大である場合、ノードN3によって分配されたリンク(N2、N3)に対応するSIDは、経路(N1,N2,N3)を通じて第5のパケットを送信するために、第5のパケットのセグメントリスト内のターゲットSIDとして搬送され得る。この場合、パケットを受信すると、ノードN3は、リンクに結合されたアウトバウンドインターフェース1を見つけるためにターゲットSIDに基づいてローカルSIDテーブルを検索し(N2、N3)、第5のパケットを送信するためにアウトバウンドインターフェース1を選択し、その結果、第5のパケットは、アウトバウンドインターフェース1を介して送信された後にノードN2に到着し、次いで、(N2,N1)を介して第1のプロキシノードに到着する。
この方式は、少なくとも以下の効果を達成することができる:第5のパケットの転送経路は、指定されたターゲット転送経路を介して送信されるべき第5のパケットを制御するために、サービス要件に基づいて選択され得る。これは、経路計画を容易にし、トラフィック最適化を実施する。
加えて、第2のプロキシノードは、第4のパケット宛先アドレスがEnd.AD SIDから次のSRノードに対応するSIDに更新されるように、第4のパケット内のIPv6ヘッダ内の宛先アドレスを修正することができる。
前述の実施例1および2は単なる例であることに留意されたい。いくつかの他の実施形態では、第5のパケットは、別の実施態様で生成されてもよい。例えば、バインディングSID(Binding SID、BSID)は、ターゲット転送経路を識別するために使用され得る。この場合、第2のプロキシノードは、第2のバイパスSIDおよびBSIDを、第4のパケットのSRH内のセグメントリストに挿入し、第4のパケットのIPv6ヘッダ内の宛先アドレスをBSIDに更新し、第4のパケットのSLを2増加させてもよい。第5のパケットを受信し、BSIDを用いてローカルSIDテーブルを検索した後で、次のSRノードは、第5のパケットに新しいSRHを挿入するためのEnd.B6.Insert操作(SRv6挿入操作)を行うことができ、または第5のパケットにSRHを含む外側IPv6ヘッダを挿入するためのEnd.B6.Encaps操作(SRv6カプセル化操作)を実行することができる。BSIDは、SRHの深さを低減し、SRHを圧縮するために使用され得る。
前述のステップ1からステップ4に基づいて、図43は、本出願の一実施形態による第4のパケットが第5のパケットに進化する概略図であり、拡張ヘッダが第3の制御情報を搬送するために使用される場合を説明するように適合される。図43から分かるように、2つの情報、すなわち、第1のプロキシノードへパケットを送信するのに用いられる第2のバイパスSIDと、第3の制御情報を搬送するのに用いられる拡張ヘッダとが、第4のパケットに付加されてもよい。第5のパケットは、このような簡単な操作によって取得され得る。加えて、任意選択的に、ターゲット転送経路を示すためにターゲットSIDが追加されてもよい。図44は、バイパスSIDが第3の制御情報を搬送するために使用される場合を説明するようになっている。図44から、第5のパケットを得るために第2のバイパスSIDが第4のパケットに加えられ得ることが分かる。図45は、TLVが第3の制御情報を搬送するために使用される場合を説明するように適合されている。図45から、第5のパケットを得るために、第2のバイパスSIDが第4のパケットに加えられてもよく、第3の制御情報がSRHにおいてTLVに書き込まれることが分かる。図46では、IPヘッダを用いて第3の制御情報を搬送する場合について説明する。図46から、第5のパケットを得るために、第2のバイパスSIDが第4のパケットに加えられてもよく、第3の制御情報がIPv6ヘッダに書き込まれることが分かる。
第5のパケットは、このようにして生成され、少なくとも以下の効果を達成する。
通常、プロキシノードによってキャッシュされた各SRHは、パケット転送プロセスにおいて、プロキシノードのデータプレーン(例えば、転送チップ)によってパケットから動的に学習される。データプレーンの転送性能への影響を回避するために、データプレーンは通常、SRHをCPUに送信しない。プロキシノードのCPUの場合、CPUはSRHを取得しないため、SRHを含むパケットを生成することができず、したがって、そのパケットを使用してSRHを第2のプロキシノードにバックアップすることができない。プロキシノードのデータプレーンの場合、データプレーンは通常、単純な処理操作のみを実行することができるため、データプレーンがSRHに基づいてパケット全体を再生成することは複雑で困難であり、実行不可能である。データプレーンを介してSRHを第2のプロキシノードにバックアップする方法は、技術的に非常に困難であることが分かる。上述したパケット生成方法によれば、受信した第4パケットをコピーし、SID(第2バイパスSID)を挿入し、拡張ヘッダをカプセル化することで、第5パケットが生成され得る。パケット全体を再生する方式と比較して、この方式は処理操作が非常に簡単である。したがって、パケット生成プロセスは、制御プレーンに依存せずにデータプレーンによって実行されてもよく、その結果、この技術的困難は首尾よく克服される。実験により、前述のパケット生成ロジックは、転送チップのマイクロコード用に構成され、その結果、転送チップは、第5のパケットを生成するステップを実行することができる。したがって、この方式は、マイクロコードアーキテクチャをサポートし、強い実用性を有する。
一実施形態では、第5のパケットを生成するためのトリガ条件は、以下の条件(1)~条件(3)のうちの1つまたは複数を含み得る。
条件(1):キャッシュエントリが生成されたことを検出する。
第2のプロキシノードは、キャッシュを検出することができる。キャッシュが元々キャッシュエントリを含まないが、第4のパケットが受信された後に新しいキャッシュエントリがキャッシュに追加された場合、キャッシュエントリが生成されたことが検出される。この場合、第2のプロキシノードは、第5のパケットを生成し、第5のパケットを送信する。
条件(2):キャッシュエントリが更新されたことを検出する。
第2のプロキシノードは、キャッシュ内のキャッシュエントリを検出することができる。キャッシュエントリを更新するためにキャッシュエントリに対して書き込み操作が実行される場合、第2のプロキシノードは第5のパケットを生成し、第5のパケットを送信する。
第5のパケットの転送プロセスは、少なくとも以下の効果を達成するために、上記の条件(1)または条件(2)を使用することによってトリガされる:一方では、第2のプロキシノードが新しいSRHを受信するたびに、新しいSRHが第5のパケットの転送をトリガするためにキャッシュエントリの生成をトリガするので、新しいSRHがリアルタイムで第1のプロキシノードに同期されることを保証するために、新しいSRHは、第5のパケットを転送することによって適時に第1のプロキシノードに送信され得る。一方、以前に記憶されたSRHの場合、記憶されたSRHはキャッシュエントリの生成をトリガせず、したがって第5のパケットの転送をトリガしないため、SRHを送信して第5のパケットを生成するための処理オーバーヘッドおよび第5のパケットを送信するためのネットワークオーバーヘッドが排除される。
例示的なシナリオでは、N個のデータパケットを含むデータフローが第2のプロキシノードに到着する。第2のプロキシノードがデータフロー内の第1の第4のパケットを受信すると、第1の第4のパケットのSRHは、第2のプロキシノードの新しいSRHである。この場合、第2のプロキシノードは、第1の第4のパケットのSRHを記憶するためのキャッシュエントリを生成する。この場合、条件(1)が満たされ、第2のプロキシノードは、第5のパケットを生成し、第5のパケットを送信するようにトリガされる。したがって、第1の第4のパケットのSRHは、第5のパケットを使用して第1のプロキシノードに送信され、その結果、第1の第4のパケットのSRHも第1のプロキシノードに記憶される。第2のプロキシノードがデータフロー内の第2の第4のパケットおよび第3の第4のパケットから最後の第4のパケットのいずれかを受信すると、同じデータフロー内の各第4のパケットのSRHは通常同じであるので、これらの第4のパケットのSRHは第2のプロキシノードのために記憶されたSRHである。この場合、第2のプロキシノードはキャッシュエントリを生成しない。条件(1)が満たされないので、第2のプロキシノードは、第5のパケットを生成せず、第5のパケットを送信しない。したがって、N-1個の第5のパケットを転送するためのオーバーヘッドが排除される。加えて、データフロー内の各第4のパケットを受信するとき、第2のプロキシノードまたは第1のプロキシノードは、第1の第4のパケットのSRHを第4のパケットにカプセル化してパケットを復元することができる。Nは正の整数である
条件(3):現在の時点が第5のパケットの送信周期の終了時点であることが検出される。
第2のプロキシノードは、第5のパケットを周期的に送信することができる。具体的には、第2のプロキシノードは、第5のパケットの送信周期を設定し、1つの送信周期が経過するたびに第5のパケットを生成して送信することができる。
このようにして、第2のプロキシノードは、第5のパケットを使用して第4のパケットのSRHを第1のプロキシノードに周期的に同期させることができ、その結果、第1のプロキシノードは、SRH同期の信頼性を向上させるために、キャッシュされたSRHを周期的にリフレッシュすることができる。
ステップ3004:第2のプロキシノードは、第5のパケットを第1のプロキシノードに送信する。
第5のパケットを送信するための転送経路は、第2のパケットを送信するための転送経路と同様であり得る。例えば、第5のパケットは、ピアリンク(peer link)を介して送信され得るか、またはルータノードを介して転送され得る。本実施形態では詳細を説明しない。
任意選択で、第5のパケットの伝送信頼性は、以下の方式1および2のいずれかで実施されてもよい。
方式1:繰り返し送信
第2のプロキシノードは、複数の第5のパケットを生成することができ、複数の第5のパケットは同じであってもよい。第2のプロキシノードは、第1のプロキシノードへ複数の第5のパケットを連続して送信することができ、第1のプロキシノードは、第2のプロキシノードから複数の第5のパケットを連続して受信する。
このように、複数の第5のパケットのいずれかを用いて、第4のパケットのSRHは第1のプロキシノードに送信され得る。したがって、送信プロセスにおいてSRHが失われる確率が低減され、実装が簡単であり、実現可能性が高い。
方式2:確認応答機構
第5のパケットの受信側がACKパケットを返して、受信側が第5のパケットを受信したことを第5のパケットの送信側に通知するように、対応する確認応答(Acknowledge、ACK)パケットが第5のパケットのために設計され得る。一実施形態では、確認応答メカニズムに基づくパケット送信手順は、以下のステップ1~4を含み得る。
ステップ1:第1のプロキシノードは、第1のバイパスSID、第2のバイパスSID、および第5のパケットに基づいて第6のパケットを生成する。
第6のパケットは、第5のパケットに対応するACKパケットであり、第6のパケットは、第5のパケットの受信の確認応答を示す。第6のパケットは、第1のプロキシノードが第5のパケットを受信したというイベントを第2のプロキシノードに通知するために、第2のプロキシノードへ転送される。第6のパケットのカプセル化フォーマットは、第5のパケットのカプセル化フォーマットと同様であり得る。違いは、第6のパケットの宛先アドレスが、第2のプロキシノードに対応する第1のバイパスSIDであることにある。第6のパケットは第4のフラグを搬送することができ、第6のパケット内の第4のフラグは、第6のパケットが確認応答パケットであることを示すことができる。例えば、第6のパケットは拡張ヘッダを含むことができ、拡張ヘッダはCフラグおよびAフラグを搬送し、Cフラグは1に設定され、Aフラグは1に設定される。
一実施形態では、第1のプロキシノードは、第6のパケットを取得するために第5のパケットを再カプセル化することができる。具体的には、第6のパケットの生成プロセスは、第1のプロキシノードにより、第5のパケットの送信元アドレスを第2のバイパスSIDに更新するステップを含み得、第1のプロキシノードにより、第2のバイパスSIDから第1のバイパスSIDへの第5のパケットの宛先アドレスを更新するステップ第1のプロキシノードが、第6のパケットを取得するために、第5のパケット内の第4のフラグの値を修正するステップ、をさらに含む。送信元アドレスの更新、宛先アドレスの更新、および第4フラグの修正の3つのステップは、任意の順序で組み合わされてもよい。この実施形態では、3つのステップの時系列は限定されない。
第6のパケットはこのようにして生成され、少なくとも以下の効果を達成する:第1のプロキシノードは、受信された第5のパケットの送信元アドレス、宛先アドレス、および第4のフラグを修正することによって第6のパケットを取得することができる。パケット全体を再生する方式と比較して、この方式は処理操作が非常に簡単である。したがって、パケット生成プロセスは、CPUなどの制御プレーンに依存することなく、転送エンジンなどのデータプレーンを使用することによって実施され得るACKパケット生成方式を提供するために、制御プレーンに依存することなく、データプレーンによって実行され得る。実験により、前述のパケット生成ロジックは、転送チップのマイクロコード用に構成され、その結果、転送チップは、第6のパケットを生成するステップを実行することができる。したがって、この方式は、マイクロコードアーキテクチャをサポートし、強い実用性を有する。
ステップ2:第1のプロキシノードは、第2のプロキシノードへ第6のパケットを送信する。
ステップ3:第2のプロキシノードは、第6のパケットを受信すると、第1のプロキシノードが第5のパケットを受信したと判定する。
いくつかの実施形態では、第2のプロキシノードは、第6のパケットから第1の制御情報を取得し、第1の制御情報は第5のパケットが受信されたことを指示していると判定することができる。例えば、第1のプロキシノードは、第6のパケット内の第3のフラグの値および第4のフラグの値を識別することができる。第3のフラグの値が1に設定され、第4のフラグの値が1に設定されている場合、第1のプロキシノードは、制御情報が第5のパケットが受信されたことを示すと判定する。
ステップ4:第2のプロキシノードは、第6のパケットを受信しない場合、第5のパケットを第1のプロキシノードへ再送する。
第6のパケットの転送プロセスを介して、第2のプロキシノードは、第6のパケットが受信されたかどうかに応じて、第1のプロキシノードがSRHを受信したかどうかを判定し、第1のプロキシノードがSRHを取得しない場合に再送信を実行して、SRHが第1のプロキシノードに送信されることを保証することができる。これにより、SRHの送信信頼性が確保される。
ステップ3005:第1のプロキシノードは第2のプロキシノードから第5のパケットを受信し、第3の制御情報は第4のパケットのSRHを保管するよう第1のプロキシノードに指示していると判定する。
第5のパケットに対して行われる動作について、第1のプロキシノードは、第5のパケットの宛先アドレスを読み取り、第5のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索して、宛先アドレスがローカルSIDテーブル内のSIDと一致するか否かを判定することができる。宛先アドレスがローカルSIDテーブル内の第2のバイパスSIDと一致するとき、言い換えれば、宛先アドレスがローカルSIDテーブル内の第2のバイパスSIDにヒットするとき、第1のプロキシノードは、第5のパケットがSRv6パケットであると判定し、第2のバイパスSIDに対応する操作を実行することができる。
いくつかの可能な実施形態では、第1のプロキシノードは、第5のパケット内の第3のフラグの値および第4のフラグの値を識別することができる。第3のフラグの値が1に設定され、第4のフラグの値が0に設定されている場合、第1のプロキシノードは、第3の制御情報が第1のパケットのSRHを記憶することを示すと判定する。
第2のバイパスSIDに対応する操作は、第5のパケットが第3の制御情報を含むか否かを検出するステップと、第3の制御情報が第5のパケットから識別される場合、第4のパケットのSRHを記憶することを判定し、第5のパケットに基づいて第4のパケットのSRHを取得し、第4のパケットのSRHを記憶するステップと、を含み得る。
第3の制御情報に対応する操作とEnd.AD SIDに対応する操作は両方とも、第4のパケットのSRHを記憶するステップを含み、第3の制御情報に対応する操作とEnd.AD SIDに対応する操作との差分に留意されたい。すなわち、End.AD SIDに対応する操作は、第4のパケットのペイロードをSFノードに転送するステップを含むが、第3の制御情報に対応する操作は、第2のプロキシノードおよび第1のプロキシノードの両方が第4のパケットのペイロードをSFノードに転送した後にSFノードが同じパケットのペイロードを繰り返し処理するケースを回避するために、第4のパケットのペイロードをSFノードに転送するステップを含まなくてもよい。
ステップ3006:第1のプロキシノードは、第4のパケットのSRHを取得するために第5のパケットを解析する。
第5パケットのSRHは、第4パケットのSRHに各SIDを含めてもよいし、第4パケットのSRHにSID以外の他の情報をさらに含めてもよい。第1のプロキシノードは、第5のパケットのSRHに基づいて第4のパケットのSRHを取得することができる。具体的には、第4のパケットのSRHは、以下のステップ1およびステップ2を実行することによって取得され得る。
ステップ1:第1のプロキシノードは、第5のパケットのSRH内のセグメントリストから第2のバイパスSIDを削除する。
このステップは、ステップ3003の第5のパケットの生成プロセスにおけるステップ1の逆のプロセスと考えることができる。具体的には、第1のプロキシノードは、SR内でポップ(pop)操作を行うことによってセグメントリストから第2のバイパスSIDを削除することができ、その結果、セグメントリストは、第2のバイパスSIDが削除された後に第4のパケットの元のセグメントリストに復元される。第1のプロキシノードは、SRH内のアクティブなSIDを削除することができ、言い換えれば、End.AD SIDの後の第2のバイパスSIDを削除することができる。図40を参照されたい。図40の左側には、第4のパケットのセグメントリストが示されており、図40の右側には、第5のパケットのセグメントリストが示されている。図40では、End.AD SIDはSID 2であり、第2のバイパスSIDはSID 5である。この場合、第1のプロキシノードは、SID 2の後ろのSID 5を削除して、右側のセグメントリストから左側のセグメントリストにセグメントリストを復元することができる。
ステップ2:第1のプロキシノードは、第4のパケットのSRHを取得するために、第5のパケットのSRH内のSLを1だけ減少させる。
このステップは、ステップ3003の第5のパケットの生成プロセスにおけるステップ2の逆のプロセスと考えることができる。図40を参照されたい。例えば、図40の右側には、第5のパケットのSLが示されており、第5のパケットのSLの値は3である。これは、セグメントリスト内に3つの未処理のSID:SID 0、SID 1、およびSID 2が存在し、セグメントリスト内の現在アクティブなSIDがSID 5であり、セグメントリスト内に2つの処理済みのSID:SID 3およびSID 4が存在することを示す。第1のプロキシノードは、SLの値が3から2に更新されるように、SLを1だけ減少させることができる。この場合、図40の左側に示すように、第4のパケットのSLの値は2であり、これは、セグメントリスト内に2つの未処理のSID、すなわちSID 0およびSID 1が存在することを示し、セグメントリスト内の現在アクティブなSIDはSID 2であるセグメントリストには、SID 3とSID 4の2つの処理済みSIDが存在する。
加えて、第2のプロキシノードが第5のパケットを転送するためのトランジットノードを指定するシナリオでは、第5のパケットのSLは送信プロセスにおいてトランジットノードによって低減され得るので、第1のプロキシノードによって受信された第5のパケットと、第2のプロキシノードによって送信された第5のパケットとは、SL更新のために異なり得る。第2のプロキシノードによって受信された第5のパケットのSLは、第2のプロキシノードによって送信された第5のパケットのSLよりも小さくてもよい。図41を参照されたい。例えば、第2のプロキシノードが第5のパケットを送信するとき、第5のパケットのSLは6である。トランジットノード1はSLを6から5に更新し、トランジットノード2はSLを5から4に更新し、トランジットノード3はSLを4から3に更新するので、第1のプロキシノードによって受信された第5のパケットのSLは3である。
前述のステップ1および2は、通常のSRv6転送操作とは異なることに留意されたい。通常のSRv6の場合、SRH内の各SIDは、ヘッドエンドノードによってSRv6パケットに挿入される。ヘッドエンドノード以外の各SRv6ノードについて、SRv6ノードがSRv6パケットを受信するたびに、SRv6ノードは、SRHにSIDを押し込んだりSRHからSIDをポップしたりすることなく、SRH内のアクティブなSIDに対応する操作のみを実行し、言い換えれば、各中間SRv6ノードはSRH内のSIDを変更しない。
この実施形態では、第5のパケットのSRH内の第2のバイパスSIDが第2のプロキシノードによって挿入され、第2のバイパスSIDが第4のパケットのSRHに元々含まれるSIDではないので、第1のプロキシノードは、第2のバイパスSIDをストリッピングし、第5のパケットのSRHを第4のパケットのSRHに復元するために、第5のパケットのSRHから第2のバイパスSIDを削除する。
このようにして、一方では、ルータノードの観点から、第1のプロキシノードによって取得されたパケットのSRHは、基本的に、ルータノードによって第2のプロキシノードへ以前に送信されたパケットのSRHと一致するので、第1のプロキシノードが引き続き処理済みパケットを受信した場合、第1のプロキシノードによって復元されたSRHは、基本的に、ルータノードによって以前に送信されたSRHと一致する。この場合、第1のプロキシノードが、SRHが復元されたパケットをルータノードに返した後、ルータノードによって取得されたパケットのSRHは、基本的に、以前に送信されたパケットのSRHと一致する。これにより、SRHがSFノードによって識別されず、したがって失われるケースが回避され、第1のプロキシノードのプロキシ機能が実装される。一方、SFノードの観点からは、SFノードが処理済みパケットを第2のプロキシノードまたは第1のプロキシノードへ転送することを選択した後で、第2のプロキシノードおよび第1のプロキシノードに記憶されたSRHは基本的に一貫しているので、パケットを受信した後で、第2のプロキシノードおよび第1のプロキシノードのいずれかがパケットの基本的に一貫したSRHを復元し、それによって、第2のプロキシノードおよび第1のプロキシノードのピア機能が保証され、2つのプロキシノードに基づくデュアルホーミングアーキテクチャが実現される。
ここで、2つのパケットのSRHが基本的に一致するとは、2つのパケットのSRH内の主要な内容が一致することを意味するが、2つのパケットのSRHが必ずしも完全に同じであることに限定されないことを理解されたい。一実施形態では、2つのパケットのSRHはわずかに異なり得る。例えば、2つのパケットのSRH内のセグメントリストは同じであるが、2つのパケットのSRH内のSLは異なる。例えば、End.AD SIDは第2のプロキシノードによって処理されるので、SLは1だけ減少する。別の例では、SRHのTLVに含まれるいくつかのパラメータは、2つのプロキシノードまたは2つのプロキシノード間のトランジットノードによって識別および処理されるため、TLVの内容が変更される。わずかに異なるこれらの場合も、本出願の実施形態の保護範囲内に含まれるべきである。
ステップ3007:第1のプロキシノードは、キャッシュに第4のパケットのSRHを記憶する。
一実施形態では、第1のプロキシノードは、第4のパケットのSRHがキャッシュに記憶されているかどうかを検出することができる。第4のパケットのSRHがキャッシュに記憶されていない場合、第1のプロキシノードは、キャッシュエントリを取得するために第4のパケットのSRHにキャッシュエントリを割り当て、割り当てられたキャッシュエントリに第4のパケットのSRHを記憶する。加えて、第4のパケットのSRHがキャッシュに記憶されていることを検出した場合、第1のプロキシノードは、第4のパケットのSRHを記憶するステップをスキップすることができる。
ステップ3005からステップ3007を参照すると、いくつかの可能な実施形態では、第2のバイパスSIDがSとして示され、第1のプロキシノードがNとして示される例を使用して、第2のバイパスSIDに基づいて実行される操作は以下の通りであってもよい。
When N receives a packet destined to S and S is a local End.ADB SID,N does/注釈:Nが、宛先アドレスがSであるパケットを受信し、SがNによって分配されたバイパスSIDである場合、Nは以下のステップを実行する。/
decrement SL/注釈:SLを1減少させる/
update the IPv6 DA with SRH[SL]/注釈:SRH[SL]を用いてIPv6宛先アドレスを更新する/
lookup the local SID table using the updated DA/注釈:更新された宛先アドレスを使用してローカルSIDテーブルを検索する、および
forward accordingly to the matched entry/注釈:ローカルSIDテーブルにおける一致したエントリに基づいて転送操作を実行する。
SLが1だけ減少した後、SRH[SL]はEnd.AD SIDに対応する。この場合、宛先アドレスがSRH[SL]を用いて更新された後、宛先アドレスがEnd.AD SIDに更新される。したがって、End.AD SIDに対応する一致したエントリは、End.AD SIDを使用してローカルSIDテーブルを検索することによって発見される。ローカルSIDテーブル内の、End.AD SIDに対応する一致したエントリは、End.AD SIDに対応する操作を示すために使用され得、End.AD SIDに対応する一致したエントリは、End.AD SIDに対応する操作が、パケットが第3の制御情報を含むかどうかを検出するステップと、パケットが第3の制御情報を含む場合、パケットのペイロードをSFノードへ転送することなく、パケットのSRHを記憶するステップと、を含むように予め設定されてもよい。
一実施形態では、第1のプロキシノードの転送規則は、第1のプロキシノードが、第5のパケットを受信した後で第5のパケットを用いて第2のプロキシノードに応答してはならない(must not)ように構成して、第2のプロキシノードが、第5のパケットを繰り返し生成し、第5のパケットを受信したときに第5のパケットを第1のプロキシノードに送信するのを防止し、したがって、第2のプロキシノードと第1のプロキシノードとの間の第5のパケットの転送ループを回避するように、事前構成され得る。
ステップ3008:第2のプロキシノードは、第4のパケットに基づいて第7のパケットを生成する。
第7のパケットは、第4のパケットのペイロードをSFノードに伝送するために使用されるパケットである。第7のパケットはデータパケットであり得、第7のパケットは第4のパケットのペイロードを含み得るが、第4のパケットのSRHを含まない。第7のパケットの生成プロセスのために、第2のプロキシノードは、第7のパケットを取得するために第4のパケットからSRHをストリッピングすることができ、その結果、第4のパケットのSRHは除去されるが、第4のパケットのペイロードは第7のパケットで搬送される。
任意選択で、第7のパケットはトンネルヘッダをさらに含んでいてよい。具体的には、第2のプロキシノードとSFノードとの間に伝送トンネルを確立することができる。この場合、第2のプロキシノードは、第4のパケットのSRHをストリッピングするだけでなく、伝送トンネルに対応するトンネルヘッダを生成し、トンネルヘッダをカプセル化することができ、その結果、第7のパケットはトンネルヘッダを含む。第7のパケットのトンネルヘッダは、VXLANトンネルヘッダ、GREトンネルヘッダ、IP in IPトンネルヘッダなどであってもよい。
第2のプロキシノードは、まず、第4のパケットのSRHをストリッピングし、次いで、トンネルヘッダを、SRHがストリッピングされる第4のパケットにカプセル化することができる、または、まずトンネルヘッダを第4のパケットにカプセル化し、次いでトンネルヘッダがカプセル化されている第4のパケットからSRHをストリッピングすることができる。第7のパケットの生成プロセスにおいてSRHをストリッピングし、トンネルヘッダをカプセル化する時系列は、本実施形態では限定されない。
第7のパケットがトンネルヘッダを含むことは任意選択であることを理解されたい。別の実施形態では、第2のプロキシノードは、SRHがストリッピングされた第4のパケットを第7のパケットとして直接使用することができる。この場合、第7のパケットは、代替として、トンネルヘッダを含まなくてもよい。
ステップ3009:第2のプロキシノードは、SFノードへ第7のパケットを送信する。
ステップ3008およびステップ3009は、少なくとも以下の効果を達成するために実行することができる。一方では、第2のプロキシノードは、SFノードがペイロードを処理して、パケットを処理することによって対応するサービス機能を実施することができるように、第4のパケットのペイロードをSFノードに送信することができる。一方、パケットのSRHは、SFノードがSRHを識別することができず、したがってパケットを処理することができない場合を回避するために、SFノードに送信されることが防止される。これにより、動的なプロキシ機能が実現される。
本実施形態は、最初に第7のパケットの生成および送信プロセスを説明し、次いで第5のパケットの生成および送信プロセスを説明する例を使用してのみ説明されることを理解されたい。第5のパケットを生成し、第7のパケットを生成する順序は、この実施形態では限定されず、第5のパケットを送信し、第7のパケットを送信する順序も限定されない。一実施形態では、ステップ3003およびステップ3004は、ステップ3008およびステップ3009を順に用いて実行されてもよい。例えば、ステップ3008およびステップ3009が最初に実行されてもよく、次いでステップ3003およびステップ3004が実行される。あるいは、ステップ3003およびステップ3004が最初に実行され、次いでステップ3008およびステップ3009が実行されてもよい。別の実施形態では、ステップ3003およびステップ3004は、ステップ3008およびステップ3009と同時に実行されてもよい。
ステップ3010:SFノードは、第2のプロキシノードから第7のパケットを受信し、第1のパケットを取得するために第7のパケットを処理する。
SFノードは、構成されたサービスポリシーに従って第7のパケットに対してサービス機能処理を行うことができる。例えば、SFノードは、ファイアウォールのサービス機能を実施するために、第7のパケットに対して侵入検出を行うことができる。別の例では、SFノードは、NATサービス機能を実施するために、第7のパケットの5タプル、MAC情報、またはアプリケーション層情報を修正することができる。さらに別の例として、SFノードは、第7のパケットに対して負荷分散、ユーザ認証などを行うことができる。SFノードによる処理方法は、この実施形態では限定されない。
ステップ3011:SFノードは、第1のプロキシノードへ第1のパケットを送信する。
ステップ3012:第1のプロキシノードは、SFノードから第1のパケットを受信し、第1のパケットに対応するSRHを取得するために第1のプロキシノードのキャッシュを検索する。
第1のプロキシノードは、第1のパケットに基づいて第1のパケットに対応するSRHのインデックスを取得し、第4のパケットのSRHを見つけるために、インデックスに基づいて第1のプロキシノードのキャッシュ内のSRHを検索することができ、第4のパケットのSRHは第1のパケットに対応するSRHである。
一実施形態では、SRH検索方式は、以下の検索方式1~検索方式3のうちのいずれか1つを含み得る。
検索方式1:第1のプロキシノードは、第1のパケットに基づいて第1のパケットに対応するフロー識別子を取得し、第1のパケットに対応するSRHを取得するために、第1のパケットに対応するフロー識別子をインデックスとして用いてキャッシュを検索することができ、第1のパケットはフロー識別子を含み得る。
検索方式2:第1のプロキシノードは、第1のパケットに基づいてキャッシュエントリの識別子を取得し、第1のパケットに対応するSRHを取得するために、キャッシュエントリの識別子をインデックスとして使用してキャッシュを検索することができ、第1のパケットはキャッシュエントリの識別子を含み得る。
検索方式3:第1のプロキシノードは、第1のパケットのSRHを取得するために、第1のパケットに対応するフロー識別子および第1のパケットに基づくVPN識別子を取得し、第1のパケットに対応するフロー識別子、VPN識別子、およびEnd.AD SIDに基づいてキャッシュを検索することができ、第1のパケットはVPN識別子を含み得、VPN識別子はEnd.AD SIDにマッピングされ得る。
ステップ3013:第1のプロキシノードは、第1のパケットと第1のパケットに対応するSRHとに基づいて第3のパケットを生成する。
ステップ3014:第1のプロキシノードは第3のパケットをルータノードに送信する。
ステップ3015:ルータノードは、第1のプロキシノードから第3のパケットを受信し、第3のパケットを転送する。
本実施形態で提供される方法によれば、第2のプロキシノードは、第1のプロキシノードによって送信された第2のパケットを受信し、第1のプロキシノードがキャッシュされたSRHを失うことを発見する。この場合、続いて、第2のプロキシノードがSRHを含むパケットを受信するたびに、第2のプロキシノードは、第5のパケットにSRHを含め、第5のパケットを第1のプロキシノードに送信する。第1のプロキシノードは、SRHを再キャッシュするために、第5のパケットを使用してSRHを再取得することができる。このようにして、キャッシュミス後、第1のプロキシノードは、SRHを含むキャッシュエントリを自動的かつ迅速に再学習することができ、したがって、キャッシュセルフヒーリングを実装する。その後、SRHが復元される必要があるパケットを受信する場合、第1のプロキシノードは、第2のプロキシノードにパケットを転送することなく、動的プロキシ機能を実施するためにSRH復元タスクをローカルに実行することができ、それによって、トラフィックバイパスによって引き起こされる伝送遅延を回避する。
基本的なパケット送信手順は、前述の方法実施形態で説明されており、本出願の実施形態で提供される方法は、NATシナリオをさらにサポートすることができる。NATシナリオでは、本出願の実施形態で提供される方法は、SFノードがパケットに対応するフロー識別子を修正するときに、プロキシノードが修正されたフロー識別子を有するパケットに基づいてパケットのSRHを依然として見つけることができることを保証するために実行することができ、それによって、パケットのSRHが復元されることを保証する。以下、図47Aおよび図47Bを参照して、NATシナリオにおけるパケット送信手順を具体的に説明する。図47Aおよび図47Bの実施形態は、図5の実施形態との違いを説明することに焦点を当てていることに留意されたい。図5の実施形態と同様のステップおよび他の特徴については、図5の実施形態を参照されたい。図47Aおよび図47Bの実施形態では詳細は説明しない。
図47Aおよび図47Bは、本出願の一実施形態によるパケット伝送方法のフローチャートである。図47Aおよび図47Bに示すように、本方法は以下のステップを含み得る。
ステップ4701:ルータノードは、第2のプロキシノードへ第4のパケットを送信する。
第4のパケットは、第1のパケットに対応するSRHを含み得る。例えば、第4のパケットのSRHは、第1のパケットに対応するSRHであってもよい。
ステップ4702:第2のプロキシノードは、ルータノードから第4のパケットを受信し、SFノードのサービス機能がフロー識別子を修正することを含むと判定する。
一実施形態において、第2のプロキシノードは、第4のパケットの宛先アドレスを読み取り、第4のパケットの宛先アドレスに基づいてローカルSIDテーブルを検索して、宛先アドレスがローカルSIDテーブル内のSIDと一致するか否かを判定することができる。宛先アドレスがローカルSIDテーブル内のEnd.AD SIDと一致する場合、言い換えれば、宛先アドレスがローカルSIDテーブル内のEnd.AD SIDにヒットする場合、第2のプロキシノードは、第4のパケットがSRv6パケットであると判定し、End.AD SIDに対応する動的プロキシ操作を行うことができる。
SFノードのサービス機能を判定するプロセスについて、一実施形態では、構成命令からSFノードのサービス機能情報を取得するために、第2のプロキシノードに対して構成操作が事前に実行されてもよく、第2のプロキシノードは構成命令を受信してもよい。サービス機能情報は、SFノードのサービス機能がフロー識別子を修正することを含むことを示す。第2のプロキシノードは、SFノードのサービス機能情報を記憶し、サービス機能情報に基づいて、SFノードのサービス機能がフロー識別子を修正することを含むと判定することができる。別の実施形態では、第2のプロキシノードは、代替として、SFノードのサービス機能がフロー識別子を修正することを含むことを自動的に見つけることができる。例えば、第2のプロキシノードは、ケイパビリティ検索リクエストをSFノードに送信することができ、SFノードは、ケイパビリティ検索リクエストを受信し、ケイパビリティ検索リクエストに応答してサービス機能情報を第2のプロキシノードに送信することができる。第2のプロキシノードは、受信したサービス機能情報に基づいて、SFノードのサービス機能がフロー識別子を修正することを含むと判定することができる。もちろん、トラフィック分類器またはネットワークコントローラは、代替として、SFノードのサービス機能情報を第2のプロキシノードに送信してもよい。第2のプロキシノードがSFノードのサービス機能をどのように判定するかは、この実施形態では限定されない。
この実施形態では、SFノードのサービス機能がフロー識別子を修正することを含むと判定することによって、第2のプロキシノードは、SFノードがパケットに対応するフロー識別子を修正するときに、プロキシノードが、修正されたフロー識別子を有するパケットに基づいてパケットのSRHを依然として見つけることができることを保証するために、後続のステップで提供される方法を実行して、パケットのSRHが復元されることを保証することができる。
ステップ4703:第2のプロキシノードは、第2のキャッシュエントリの識別子をインデックスとして使用して、第1のパケットに対応するSRHを第2のキャッシュエントリに記憶する。
第2のキャッシュエントリの識別子は、第2のプロキシノードのキャッシュ内の第2のキャッシュエントリを一意に識別するために使用される。第2のキャッシュエントリの識別子は、第2のキャッシュエントリのキャッシュインデックス(cache Index)を含むことができ、キャッシュインデックスは、第2のプロキシノードのインターフェースボード上の第2のキャッシュエントリを識別するために使用される。一実施形態では、第2のプロキシノードは、複数のインターフェースボードを含み得る。この場合、第2のキャッシュエントリの識別子は、ターゲットボード(Target Board、TB)の識別子をさらに含むことができ、ターゲットボードは、第2のキャッシュエントリが配置されるボードであり、ターゲットボードの識別子は、第2のプロキシノードの特定のインターフェースボードを識別するために使用される。
一実施形態では、第2のプロキシノードは、第1のパケットに対応するSRHがキャッシュに記憶されているかどうかを検出することができる。第1のパケットに対応するSRHがキャッシュに記憶されていない場合、第2のプロキシノードは、第2のキャッシュエントリを取得するために、第1のパケットに対応するSRHにキャッシュエントリを割り当て、第1のパケットに対応するSRHを第2のキャッシュエントリに記憶する。また、第1のパケットに対応するSRHがキャッシュに記憶されていることが検出された場合、第1のパケットに対応するSRHを記憶するステップは省略されてもよい。
ステップ4704:第2のプロキシノードは、第4のパケットに基づいて第7のパケットを生成する。
任意選択で、第7のパケットは、SRHを記憶するために使用されるキャッシュエントリの識別子を含んでもよく、キャッシュエントリの識別子は、第7のパケットのペイロードで搬送されてもよい。第7のパケットはキャッシュエントリの識別子を搬送し、その結果、SFノードによって受信されたパケットはキャッシュエントリの識別子を搬送する。この場合、SFノードがパケットに対してサービス処理を行った後、取得されたパケットはキャッシュエントリの識別子も搬送する。このようにして、SFノードによってプロキシノードへ返されるパケットは、キャッシュエントリの識別子を搬送することができる。したがって、プロキシノードは、キャッシュエントリのものである、返されたパケット内の識別子を使用して、SRHを記憶するために以前に使用されたキャッシュエントリを見つけることができる。本実施形態では、SRHを記憶するために使用されるキャッシュエントリの、第7のパケットに含まれる識別子は、第2のキャッシュエントリの識別子であってもよい。
ステップ4705:第2のプロキシノードは、SFノードへ第7のパケットを送信する。
ステップ4706:SFノードは、第2のプロキシノードから第7のパケットを受信し、第1のパケットを取得するために第7のパケットを処理する。
パケットを処理するプロセスにおいて、SFノードは、第1のパケットに、キャッシュエントリのものである、第7のパケットに含まれる識別子を含めることができ、その結果、第1のパケットは、SRHをキャッシュするために使用されるキャッシュエントリの識別子を含む。キャッシュエントリのものである、第1のパケットに含まれる識別子は、キャッシュエントリのものである、第7のパケットに含まれる識別子と同じであり、キャッシュエントリの識別子は、第1のパケットのペイロードで搬送され得る。この実施形態では、第1のパケットは、第2のキャッシュエントリの識別子を含み得る。
ステップ4707:SFノードは、第1のプロキシノードへ第1のパケットを送信する。
ステップ4708:第1のプロキシノードは、SFノードから第1のパケットを受信し、第1のプロキシノードのキャッシュを検索し、第1のパケットに対応するSRHは取得されない。
ステップ4709:第1のプロキシノードは、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成する。
パケットを生成するプロセスにおいて、第1のプロキシノードは、第2のパケットに、第2のキャッシュエントリのものである、第1のパケットに含まれる識別子を含めることができる。この場合、第2のパケットは、第2のキャッシュエントリの識別子を含み得る。
加えて、図5の実施形態との違いは、この実施形態では、第1のパケットに対応するSRHを復元するように第2のプロキシノードを指示することに加えて、第2のキャッシュエントリの識別子をインデックスとして使用して第1のパケットに対応するSRHを検索するように第2のプロキシノードを指示するために第1の制御情報がさらに使用され得ることにある。例えば、第1の制御情報は第2のフラグを含むことができ、第2のフラグは、SFノードのサービス機能がフロー識別子を修正することを含むことを識別するのに使用される。第2のプロキシノードは、第2のプロキシノードが、制御情報が第2のフラグを含むと判定した場合、第2のプロキシノードが、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するように、事前構成されていてよい。例えば、第2のフラグはNATフラグとして表されてもよく、NATフラグは、SFノードのサービス機能がNATを含むことを識別するために使用される。図20を参照されたい。例えば、第2のパケットは、図20に示す拡張ヘッダを含んでもよく、キャッシュインデックスフィールドおよびTBフィールドは、第2のキャッシュエントリの識別子を搬送するために使用される。キャッシュインデックスフィールドの値は、第2のキャッシュエントリの識別子内のキャッシュインデックスであってもよい。TBフィールドの値は、第2のキャッシュエントリの識別子内のターゲットボードの識別子であり得る。Nフィールドは、第2のフラグを搬送するために使用される。例えば、Nフィールドの値は1であってもよく、これは、SFノードがNATタイプのSFであり、SFノードのサービス機能がフロー識別子の修正を含むことを示す。したがって、Nフィールドの値が1であると識別された場合、キャッシュエントリの識別子をインデックスとして使用してキャッシュを検索する必要がある。
ステップ4710:第1のプロキシノードは、第2のパケットを第2のプロキシノードに送信する。
ステップ4711:第2のプロキシノードは、第1のプロキシノードから第2のパケットを受信し、第1の制御情報が、第2のプロキシノードに、第1のパケットに対応するSRHを復元し、第2のキャッシュエントリの識別子をインデックスとして使用して第1のパケットに対応するSRHを検索するように指示すると判定する。
いくつかの可能な実施形態では、第2のプロキシノードは、第2のパケット内の第1のフラグの値および第2のフラグの値を識別することができる。第1のフラグの値が1に設定され、第2のフラグの値が1に設定されている場合、第2のプロキシノードは、制御情報が、第1のパケットのSRH、および第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を記憶することを示すと判定する。
ステップ4712:第2のプロキシノードは、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いて第2のプロキシノードのキャッシュを検索する。
例えば、ルータノードは、SRv6パケットを第2のプロキシノードに事前に送信し、SRv6パケットのペイロードはIPv4パケットであり、SRv6パケットはSRH 1を搬送する。第2のプロキシノードは、SRv6パケットからSRH 1をストリッピングし、SRH 1をTB 2に記憶する。TB 2内のSRH 1のキャッシュインデックスがcache index2である場合、第2のキャッシュエントリの識別子は(TB 2、cache index2)である。第2のプロキシノードは、IPv4パケットに(TB 2、cache index2)を含め、SFノードへIPv4パケットを送信することができる。IPv4パケットを処理した後、SFノードは、処理されたIPv4パケットを第1のプロキシノードに返し、返されたIPv4パケットは依然として搬送する(TB 2、cache index2)。第1のプロキシノードは、処理されたIPv4パケットを受信し、(TB 2、cache index2)をインデックスとして使用してローカルキャッシュを検索し、ローカルキャッシュミスが発生したことを見つける。この場合、第1のプロキシノードはIPv4パケットを再カプセル化し、再カプセル化によって得られたIPv4パケットを第2のプロキシノードへ転送し、転送されたIPv4パケットは依然として搬送する(TB 2、cache index2)。第2のプロキシノードは、転送されたIPv4パケットを受信し、(TB 2、cache index2)をインデックスとして用いてcache index2に対応するキャッシュエントリを求めてTB 2を検索し、キャッシュエントリから第1のパケットに対応するSRHを取得する。
ステップ4713:第2のプロキシノードは、第2のパケットおよび第1のパケットに対応するSRHに基づいて第3のパケットを生成する。
ステップ4714:第2のプロキシノードは、第3のパケットをルータノードに送信する。
ステップ4715:ルータノードは、第2のプロキシノードから第3のパケットを受信し、第3のパケットを転送する。
図48は、本実施形態に係るパケット送信の模式図である。この概略図は、サービス機能がNATタイプのSFノードにアクセスするときに、プロキシノードがSRHを復元する手順を示す。
関連技術では、SRv6 SFC内の動的プロキシノードは通常、パケットの5タプルを鍵として使用してキャッシュエントリにパケットのSRHを記憶する。SFノードによって返されたパケットを受信した後で、動的プロキシノードは、パケットの5タプルをkeyとしてさらに用いて、対応するキャッシュエントリを求めてキャッシュを検索する。この場合、SFノードのサービス機能がNATである場合、SFノードは、パケットを処理するプロセスにおいてパケットの5タプルを修正する。この場合、SFノードによって返されたパケットの5タプルは、以前に受信されたパケットの5タプルと一致せず、その結果、SFノードからプロキシノードによって受信されたパケットの5タプルは、SFノードに以前に送信されたパケットの5タプルと一致しない。したがって、プロキシノードが受信したパケットに基づいてキャッシュを検索するとき、キャッシュ検索に使用される鍵がキャッシュ内の記憶に使用される鍵と一致しないため、プロキシノードはSRHを見つけることができず、したがってパケットのSRHを復元することができない。その結果、パケットの送信に失敗する。例えば、プロキシノードは、5タプル1をキーとして使用してSRHを以前に記憶しているが、SFノードは、パケットの5タプルを5タプル1から5タプル2に変更する。この場合、5タプル2をキーとして使用してキャッシュを検索するとき、プロキシノードはSRHを見つけることができない。
本実施形態で提供される方法によれば、プロキシノードは、SRHを記憶するためのキャッシュエントリの識別子をキーとして使用してパケットのSRHを検索する。この場合、SFノードが修正されたフロー識別子を有するパケットをプロキシノードに返す場合、SRHを記憶するためのキャッシュエントリは通常プロキシノードに固定されており、フロー識別子の修正によって変更されないので、修正されたフロー識別子を有するパケットのSRHは、修正されたフロー識別子を有するパケットのSRHを復元するために、キャッシュエントリの識別子をインデックスとして使用することによって見つけることができる。このようにして、SFがNAT機能を有するSFであり、送信プロセスにおいてパケットのフロー識別子を変更させたとしても、プロキシノードは依然としてSRHを復元することができる。したがって、プロキシノードは、NAT機能を有するSFのための動的プロキシ機能を提供するために、NAT機能を有するSFへのアクセスをサポートすることを可能にされ得る。
図47Aおよび図47Bの実施形態は、NATシナリオにおけるSRH復元をサポートするための解決策を提供する。図47Aおよび図47Bの実施形態では、第2のプロキシノードによってキャッシュされたSRHは、ルータノードによって第2のプロキシノードに以前に送信される。第2のプロキシノードにおけるSRHの送信元は、本出願の実施形態では限定されない。いくつかの他の実施形態では、第2のプロキシノードによってキャッシュされたSRHは、ルータノードによって第2のプロキシノードに送信されなくてもよいが、別のノードによって第2のプロキシノードに以前に送信されてもよい。第1のプロキシノードが第2のプロキシノードにSRHを送信する例を使用して、以下では、図49A~図49Cの実施形態を使用して、NATシナリオにおける別のSRH復元手順を具体的に説明する。
図49A~図49Cは、本出願の一実施形態によるパケット伝送方法のフローチャートである。図49A~図49Cに示すように、本方法は以下のステップを含み得る。
ステップ4901:ルータノードは、第1のプロキシノードに第4のパケットを送信する。
ステップ4902:第1のプロキシノードは、ルータノードから第4のパケットを受信し、第1のパケットに対応するSRHを第1のキャッシュエントリに記憶する。
第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。一実施形態では、第1のプロキシノードは、第1のパケットに対応するSRHがキャッシュに記憶されているかどうかを検出することができる。第1のパケットに対応するSRHがキャッシュに記憶されていない場合、第1のプロキシノードは、第1のキャッシュエントリを取得するために、第1のパケットに対応するSRHにキャッシュエントリを割り当て、第1のパケットに対応するSRHを第1のキャッシュエントリに記憶する。また、第1のパケットに対応するSRHがキャッシュに記憶されていることが検出された場合、第1のパケットに対応するSRHを記憶するステップは省略されてもよい。第1のプロキシノードはインターフェースボードを含むことができ、インターフェースボードは転送エントリメモリを含むことができ、第1のキャッシュエントリは転送エントリメモリに記憶され得る。
第1のキャッシュエントリの識別子は、第1のプロキシノードのキャッシュ内の第1のキャッシュエントリを一意に識別するために使用される。第1のキャッシュエントリの識別子は、第1のキャッシュエントリのキャッシュインデックス(cache Index)を含むことができ、キャッシュインデックスは、第1のプロキシノードのインターフェースボード上の第1のキャッシュエントリを識別するのに使用される。一実施形態では、第1のプロキシノードは、複数のインターフェースボードを含み得る。この場合、第1のキャッシュエントリの識別子は、ターゲットボード(Target Board、TB)の識別子をさらに含むことができ、ターゲットボードは、第1のキャッシュエントリが配置されるボードであり、ターゲットボードの識別子は、第1のプロキシノードの特定のインターフェースボードを識別するために使用される。
ステップ4903:第1のプロキシノードは、第1のパケットに対応するSRHおよび第1のキャッシュエントリの識別子を第2のプロキシノードに送信する。
SRHおよび第1のキャッシュエントリの識別子を送信するためのトリガ条件について、一実施形態では、第1のプロキシノードがSRHをキャッシュするたびに、第1のプロキシノードは、SRHおよびSRHをキャッシュするために使用されるキャッシュエントリの識別子をピア・プロキシ・ノードに同期することができる。第1のプロキシノードがルータノードから第1のパケットに対応するSRHを受信した場合、第1のプロキシノードは、第1のキャッシュエントリを取得するために、第1のパケットに対応するSRHにキャッシュエントリを割り当て、第1のパケットに対応するSRHを第1のキャッシュエントリに記憶することができる。この場合、ステップ4903がトリガされてもよい。
SRHおよび第1のキャッシュエントリの識別子を送信するための方法について、一実施形態では、第1のプロキシノードは、エンドポイント動的プロキシSID、第1のパケットに対応するSRH、および第2のプロキシノードに対応する第1のバイパスSIDに基づいて第5のパケットを生成し、第5のパケットを第2のプロキシノードに送信することができる。この実施形態では、第5のパケットは、第1のパケットに対応するSRHをピア・プロキシ・ノードに送信するために使用される。第5のパケットは、第1のパケットに対応するSRHおよび第1のキャッシュエントリの識別子を含み得る。
いくつかの実施形態では、第5のパケットは、SIDを使用してネットワーク内で転送されてもよい。具体的には、第5のパケットはSRv6パケットであってもよく、第5のパケットの宛先アドレスは第1のバイパスSIDであってもよく、言い換えれば、第5のパケットのアクティブSIDは第1のバイパスSIDであってもよい。第5のパケットのSRHは、第1のパケットおよび第1のバイパスSIDに対応するSRH内の各SIDを含み得る。
任意選択の実施形態では、End.AD SIDに対応する処理ポリシーは、第1のプロキシノード上で事前構成されてもよい。処理ポリシーは、動的プロキシ操作、ならびに第5のパケットを生成および送信する操作を実行することを含み得る。したがって、第1のパケットを受信した後、第1のパケット内のEnd.AD SIDに基づいて、第1のプロキシノードは、動的なプロキシサービスを提供するだけでなく、SRHを記憶するように第2のプロキシノードを制御する。このようにして、SIDベースのSRv6プログラミング能力が完全に利用され、End.AD SIDに対応する操作が拡張される。
一実施形態では、第1のプロキシノードは、第5のパケットを取得するために第4のパケットを再カプセル化することができる。詳細は以下の通りである。
第5のパケットの生成プロセスは、以下のステップ1からステップ3を含み得る。
ステップ1:第1のプロキシノードは、第1のバイパスSIDを第4のパケットのSRH内のセグメントリストに挿入する。
ステップ2:第1のプロキシノードは、第4のパケットのSRH内のSLを1だけ増加させる。
ステップ3:第1のプロキシノードは、第5のパケットを取得するために、第4のパケットの宛先アドレスを第1のバイパスSIDに更新する。
一実施形態では、第5のパケットは第3の制御情報を含むことができ、第3の制御情報は、第1のパケットに対応するSRHを記憶するように、第2のプロキシノードに指示するために使用される。
第3の制御情報が拡張ヘッダで搬送される場合、第1のプロキシノードは、ステップ1、ステップ2、およびステップ3を実行するだけでなく、以下のステップ4も実行することができる。
ステップ4:第1のプロキシノードは、拡張ヘッダを生成し、拡張ヘッダを第4のパケットにカプセル化し、拡張ヘッダは第3の制御情報を含む。
第1のプロキシノードが第5のパケットを生成するプロセスは、第2のプロキシノードが第5のパケットを生成するプロセスと同様であり得ることに留意されたい。具体的な詳細については、ステップ1303を参照されたく、ここでは詳細を繰り返さない。
ステップ4904:第2のプロキシノードは、第1のパケットに対応するSRHと第1のキャッシュエントリの識別子とを第1のプロキシノードから受信し、SFノードのサービス機能はフロー識別子を修正することを含み、第3の制御情報は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子をインデックスとして用いて第1のパケットに対応するSRHを検索することをさらに指示する、と判定する。
一実施形態では、第2のプロキシノードは、第5のパケットを受信し、第5のパケットを構文解析して、第5のパケットで搬送される第1のパケットに対応するSRHおよび第1のキャッシュエントリの識別子を取得することができる。第2のプロキシノードによって第5のパケットに対して行われる動作は、第1のプロキシノードによって第5のパケットに対して行われる動作と同様とすることができる。具体的な詳細については、前述の説明を参照されたい。ここでは詳細を繰り返さない。加えて、SFノードのサービス機能を判定するプロセスは、前述の実施形態と同様である。具体的な詳細については、前述の説明を参照されたい。詳細はここでは再度説明されない。
第2のプロキシノードは、第5のパケット内の第2のフラグの値、第3のフラグの値、および第4のフラグの値を識別することができる。Nフラグ(これはNAT flag、すなわち前述の第2のフラグである)の値が1に設定され、Cフラグ(コピーフラグであるC flag、すなわち前述の第3フラグ)の値が1に設定され、Aフラグ(これはACK flag、すなわち前述の第4のフラグである)の値が0に設定されている場合、第2のプロキシノードは、制御情報が、第1のパケットのSRHを記憶し、第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を記憶することを示すと判定する。
ステップ4905:第2のプロキシノードは、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを第2のキャッシュエントリに記憶する。
ステップ4906:第2のプロキシノードは、第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を記憶する。
一実施形態において、第2のプロキシノードは、第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を確立し、マッピング関係を記憶することができる。例えば、第1のキャッシュエントリのものである、第1のプロキシノードによって送信された識別子が(TB 1、cache index1)であり、第2のプロキシノードがSRHをTB 2に記憶し、TB 2のSRHのキャッシュインデックスがcache index2である場合、第2のキャッシュエントリの識別子は(TB 2、cache index2)であり、第2のプロキシノードは、マッピング関係(TB 1、cache index1、TB 2、cache index2)を確立し、マッピング関係(TB 1、cache index1、TB 2、cache index2)を記憶することができる。
ステップ4907:第1のプロキシノードは第4のパケットに基づいて第7のパケットを生成する。
第1のプロキシノードが第7のパケットを生成するプロセスは、前述の実施形態における第2のプロキシノードが第7のパケットを生成するプロセスと同様である。違いは、この実施形態では、SRHを記憶するために使用されるキャッシュエントリの、第7のパケットに含まれる識別子が、第1のキャッシュエントリの識別子であることにある。
ステップ4908:第1のプロキシノードはSFノードに第7のパケットを送信する。
ステップ4909:SFノードは、第1のプロキシノードから第7のパケットを受信し、第1のパケットを取得するために第7のパケットを処理する。
ステップ4910:SFノードは、第1のプロキシノードに第1のパケットを送信する。
この実施形態では、第1のパケットは、第1のキャッシュエントリの識別子を含み得る。
ステップ4911:第1のプロキシノードは、SFノードから第1のパケットを受信し、第1のプロキシノードのキャッシュを検索し、第1のパケットに対応するSRHは取得されない。
ステップ4912:第1のプロキシノードは、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成する。
第2のパケットは、第1のキャッシュエントリの識別子をさらに含む。第2のプロキシノードに、第1のパケットに対応するSRHを復元するように指示することに加えて、第1の制御情報は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とのマッピング関係にある識別子をインデックスとして使用することによって、第1のパケットに対応するSRHを検索するように指示するためにさらに使用され得る。
ステップ4913:第1のプロキシノードは、第2のパケットを第2のプロキシノードに送信する。
ステップ4914:第2のプロキシノードは、第1のプロキシノードから第2のパケットを受信し、第1の制御情報は、第1のパケットに対応するSRHを復元し、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とのマッピング関係にある識別子をインデックスとして用いて、第1のパケットに対応するSRHを検索するように第2のプロキシノードに指示するものと判定する。
ステップ4915:第2のプロキシノードは、第2のキャッシュエントリの識別子を取得するために、第1のキャッシュエントリの識別子に基づいて第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を検索する。
ステップ4916:第2のプロキシノードは、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いて第2のプロキシノードのキャッシュを検索する。
例えば、キャッシュエントリのものであり、第2のパケットで搬送される識別子が(TB 1、cache index1)であり、第2のプロキシノードによって記憶されたマッピング関係が(TB 1、cache index1、TB 2、cache index2)を含む場合、第2のプロキシノードは、(TB 1、cache index1)に基づいてマッピング関係を検索することによってローカルキャッシュエントリの識別子(TB 2、cache index2)を取得することができる。第2のプロキシノードは、TB 2を参照してキャッシュインデックス2に対応するキャッシュエントリを探し、キャッシュエントリから第1のパケットに対応するSRHを取得する。
ステップ4917:第2のプロキシノードは、第2のパケットおよび第1のパケットに対応するSRHに基づいて第3のパケットを生成する。
ステップ4918:第2のプロキシノードは、第3のパケットをルータノードに送信する。
ステップ4919:ルータノードは、第2のプロキシノードから第3のパケットを受信し、第3のパケットを転送する。
図50は、本実施形態に係るパケット送信の模式図である。この概略図は、サービス機能がNATタイプのSFノードにアクセスするときに、プロキシノードがSRHを復元する手順を示す。
この実施形態において提供される方法によれば、プロキシノードは、ローカルキャッシュエントリとピアキャッシュエントリとの間のマッピング関係を維持する。第1のプロキシノードがローカルキャッシュからSRHを見つけられない場合、第1のプロキシノードは、キャッシュエントリの識別子を第2のプロキシノードに送信し、制御情報を用いて第2のプロキシノードに、マッピング関係を参照して、第2のプロキシノードにおいてSRHを記憶するためのキャッシュエントリを見つけるように指示することができ、これにより、第2のプロキシノードは、キャッシュエントリからパケットのSRHを見つけ、修正されたフロー識別子を有するパケットのSRHを復元する。この方式に基づき、SFがNAT機能を有するSFであって、送信プロセスにおいてパケットのフロー識別子を変更させたとしても、プロキシノードは、依然としてSRHを復元することができる。したがって、プロキシノードは、NAT機能を有するSFのための動的プロキシ機能を提供するために、NAT機能を有するSFへのアクセスをサポートすることを可能にされ得る。
NATシナリオをサポートするパケット送信手順は、前述の方法実施形態で説明されている。本出願の実施形態で提供される方法は、SRv6 VPNシナリオをさらにサポートすることができる。SRv6 VPNは、SRv6トンネルを介してVPNデータを送信することを意味する。SRv6 VPNシナリオでは、サービスチェーン内のSFノードは、VPNサービスを実施するために、VPNデータを処理する必要がある。このシナリオでは、プロキシノードは、VPNサービスを実装するSFノードをサポートし、VPNサービスを実装するSFノードに動的プロキシサービスを提供するために、以下の方法実施形態を実行することができる。以下、図51Aおよび図51Bに示す方法実施形態を使用して、VPNシナリオにおけるパケット送信手順を説明する。図51Aおよび図51Bの実施形態は、図5の実施形態との違いを説明することに焦点を当てていることに留意されたい。図5の実施形態と同様のステップまたは他の特徴については、図5の実施形態を参照されたい。図51Aおよび図51Bの実施形態では詳細は説明しない。
図51Aおよび図51Bは、本出願の一実施形態によるパケット伝送方法のフローチャートである。本方法は以下のステップを含み得る。
ステップ5101:第2のプロキシノードが構成命令を受信する。
ステップ5102:第2のプロキシノードは、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を構成命令に基づいて記憶する。
第2のプロキシノードは複数のSFノードにアクセスすることができ、複数のSFノードは異なるVPNに属することができる。したがって、第2のプロキシノードがすべての複数のSFノードに動的プロキシサービスを提供するプロセスにおいて、第2のプロキシノードは、異なる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を用いることで区別され得る。例えば、第2のプロキシノードは、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に割り当てられている。パケット内にあり、2つのEnd.AD SIDに属するEnd.AD SIDを使用して、パケットが送信されるVPNを識別することができる。例えば、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のパケットにヒットすることが防止され、その結果、前述の技術的問題が解決される。
加えて、第2のプロキシノードによってアクセスされるSFノードは、パブリックネットワークおよびVPNに別々に属することができ、対応するEnd.AD SIDは、パブリックネットワーク中のSFノードとVPN中のSFノードとに別々に割り振られてもよく、パブリックネットワーク中のSFノードに対応するEnd.AD SIDは、VPN中のSFノードに対応するEnd.AD SIDとは異なる。例えば、第2のプロキシノードがアクセスする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は、パブリックネットワークのパケットのSRHとVPNのパケットのSRHとが別々に記憶されることを保証し、同じインデックスがパブリックネットワークのパケットとVPNのパケットの両方にヒットすることを防止するために、フロー識別子およびEnd.AD SIDをインデックスとして使用して記憶される。
一実施形態では、各VPN内のSFノードに割り当てられたEnd.AD SIDを構成するために第2のプロキシノードに対して構成操作が実行され得る。第2のプロキシノードは、構成命令を受信することができ、構成命令に基づいて、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶することができる。構成命令は各VPNにおけるSFノードに対応するEnd.AD SIDを含む。第2のプロキシノードは、構成命令内で搬送され、各VPN内のSFノードに対応するEnd.AD SIDを取得するために構成命令を解析することができる。例えば、第2のプロキシノードが2つのVLAN内のSFノードにアクセスし、2つのVLANが、VLAN ID 100およびVLAN ID 200を用いてそれぞれ識別される場合、2つのEnd.AD SIDは、第2のプロキシノード上で事前構成され得、例えば、A::1は、VLAN ID 100によって識別されるVLAN内のSFに割り当てられ、A::2は、VLAN ID 200によって識別される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識別子との間のマッピング関係をコントローラから受信してもよい。
ステップ5103:ルータノードは、第2のプロキシノードへ第4のパケットを送信する。
ステップ5104:第2のプロキシノードは、ルータノードから第4のパケットを受信し、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて第1のパケットに対応するSRHを第2のキャッシュエントリに記憶する。
第4のパケットは第1のパケットに対応するSRHを含み、第4のパケットの宛先アドレスはEnd.AD SIDであり、第4のパケットに対応するフロー識別子は、第1のパケットに対応するフロー識別子である。例えば、フロー識別子は5タプルである。第4のパケットは5タプルを含むことができ、第4のパケット内の5タプルは第1のパケット内の5タプルと同じである。第4のパケットは、第1のパケットに対応するSRHを含んでもよいし、第1のパケットに対応するSRHは、End.AD SIDを含んでもよい。第2のプロキシノードは、第1のパケットに対応するフロー識別子を取得するために、第4のパケットに対応するフロー識別子を取得することができる。さらに、第2のプロキシノードは、第4のパケットで搬送されたEnd.AD SIDを取得し、フロー識別子とEnd.AD SIDとをkeyとして使用することにより、および第1のパケットに対応するSRHを値として使用することにより、第1のパケットに対応するSRHをキャッシュしてもよい。
ステップ5105:第2のプロキシノードは、第4のパケットに基づいて第7のパケットを生成する。
第7のパケットに対応するフロー識別子は、第1のパケットに対応するフロー識別子である。第7のパケットは、VPN識別子を含み得る。VPN識別子は、サービス機能ノードが属するVPNを識別するために使用され、VPNのIDであってもよい。例えば、VPN識別子はVLAN IDであってもよい。一実施形態では、第2のプロキシノードとSFノードとの間に伝送トンネルが確立され得る。第2のプロキシノードは、伝送トンネルに対応するトンネルヘッダを生成し、トンネルヘッダをカプセル化することができ、その結果、第7のパケットはトンネルヘッダを含む。VPN識別子は、トンネルヘッダ内で搬送されてもよい。
ステップ5106:第2のプロキシノードは、SFノードへ第7のパケットを送信する。
ステップ5107:SFノードは、第2のプロキシノードから第7のパケットを受信し、第1のパケットを取得するために第7のパケットを処理する。
第1のパケットはVPN識別子を含むことができ、第1のパケット内のVPN識別子は第7のパケット内のVPN識別子と同じである。例えば、第1のパケットはトンネルヘッダを含み得、VPN識別子はトンネルヘッダ内で搬送され得る。一実施形態では、SFノードは、第7のパケットを処理するプロセスにおいて第7のパケットのトンネルヘッダをストリッピングしなくてもよく、その結果、処理によって取得された第1のパケットは第7のパケットのトンネルヘッダを含む。
ステップ5108:SFノードは、第1のプロキシノードへ第1のパケットを送信する。
ステップ5109:第1のプロキシノードは、SFノードから第1のパケットを受信し、第1のプロキシノードのキャッシュを検索し、第1のパケットに対応するSRHは取得されない。
ステップ5110:第1のプロキシノードは、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成する。
第2のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子であり、第2のパケットはVPN識別子を含み得る。第2のパケットを取得するために第1のパケットを再カプセル化するプロセスにおいて、第1のプロキシノードは、生成された第2のパケットに対応するフロー識別子が第1のパケットに対応するフロー識別子と同じになるように、第1のパケットに対応するフロー識別子を変更せずに保持することができる。
ステップ5111:第1のプロキシノードは、第2のパケットを第2のプロキシノードに送信する。
ステップ5112:第2のプロキシノードは、第1のプロキシノードから第2のパケットを受信し、第1の制御情報が、第1のパケットに対応するSRHを復元するように第2のプロキシノードを指示していると判定する。
ステップ5113:第2のプロキシノードは、VPN識別子に対応するエンドポイント動的プロキシSIDを取得するために、VPN識別子に基づいてエンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を検索する。
第2のパケットは、第1のパケットに対応するフロー識別子、VPN識別子、およびペイロードを含み得る。第2のプロキシノードは、第2のパケットからVPN識別子を取得し、VPN識別子に対応するEnd.AD SIDを見つけるために、VPN識別子に基づいて、End.AD SIDとVPN識別子との間の関係を検索してもよい。例えば、End.AD SID A::1とVLAN ID 100との間にマッピング関係がある場合、End.AD SID A::2とVLAN ID 200との間にマッピング関係があり、第2のパケットから第2のプロキシノードによって取得されたVPN識別子は100であり、第2のプロキシノードは、対応するEnd.AD SID A::1を取得するために、100に基づいてマッピング関係を検索する。
ステップ5114:第2のプロキシノードは、第1のパケットに対応するSRHを取得するために、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて第2のプロキシノードのキャッシュを検索する。
ステップ5115:第2のプロキシノードは、第2のパケットと第1のパケットに対応するSRHとに基づいて第3のパケットを生成する。
ステップ5116:第2のプロキシノードは、第3のパケットをルータノードに送信する。
ステップ5117:ルータノードは、第2のプロキシノードから第3のパケットを受信し、第3のパケットを転送する。
この実施形態は、SRv6 VPNシナリオで動的プロキシサービスを提供するための方法を提供する。対応するEnd.AD SIDが各VPNのSFノードに割り振られ、これによりEnd.AD SIDがVPN識別子として使用され得る。したがって、プロキシノードは、異なるEnd.AD SIDを使用して異なるVPNのパケットのSRHのインデックスを区別するために、フロー識別子とEnd.AD SIDとをインデックスとして使用して対応するSRHを検索する。このようにして、異なるVPNのパケットのSRHが別々に記憶され、それによって異なるVPN間の情報分離が実施される。加えて、同じインデックスが複数のVPNのパケットのSRHにヒットすることが防止され、検索精度が保証される。
前述の方法の実施形態では、第1のプロキシノードまたは第2のプロキシノードは、ステートマシンを使用して2つのプロキシノード間のキャッシュエントリの同期を維持することができる。以下では、ステートマシンを説明するために例を使用する。
ステートマシンは、Peer Cache(ピアキャッシュ)ステートマシンと呼ばれる場合があり、ピア・プロキシ・ノードがSRHを記憶している状態を示す。第1のプロキシノードのステートマシンは、第2のプロキシノードがSRHを記憶している状態を示し、第2のプロキシノードのステートマシンは、第1のプロキシノードがSRHを記憶している状態を示す。第1のプロキシノードおよび第2のプロキシノードのいずれについても、プロキシノードは、キャッシュ内の各キャッシュエントリにターゲットフィールドを追加し、ステートマシンの現在の状態をターゲットフィールドに書き込み、第1のパケットを受信したときに、キャッシュエントリ内のターゲットフィールドの値に基づいて実行されるべき動作を判定することができる。ターゲットフィールドは、PeerCacheState(ピアキャッシュ状態)フィールドとして表されてもよく、ターゲットフィールドは、ステートマシンの現在の状態を記録するために使用される。ステートマシンは、現在の状態、次の状態、イベント、およびターゲット動作を含み得る。第1のプロキシノードは、検出されたイベントおよびステートマシンの現在の状態に基づいて、ステートマシン内の、イベントおよび現在の状態に対応するターゲット動作を実行し、ステートマシンを現在の状態の次の状態に切り替えることができる。例えば、ステートマシンは、第1のステートマシンおよび第2のステートマシンのいずれかであってもよい。
図52は、本出願の一実施形態による第1のステートマシンの概略図である。第1のステートマシンは、伝送信頼性を確保するために繰り返し送信が実行される場合に適用可能であり、第1のステートマシンによって提供される処理ポリシーは、以下の(1)から(9)のうちの1つまたは複数を含み得る。以下の第1のステートマシンは、第1のプロキシノードに適用されてもよいし、第2のプロキシノードに適用されてもよいことを理解されたい。第1のプロキシノードの場合、ピア・プロキシ・ノードは第2のプロキシノードである。第2のプロキシノードの場合、ピア・プロキシ・ノードは第1のプロキシノードである。
(1)第1のイベントが検出された場合、複数の第5のパケットがピア・プロキシ・ノードに連続的に送信され、ステートマシンは第1の状態に切り替えられる。
第1のイベントは、第1のキャッシュエントリが生成されることであり、第1のイベントは、local cache new(新しいキャッシュエントリがローカルに追加される)イベントとしてプログラムに記録され得る。第1の状態は、第2のキャッシュエントリが第1のキャッシュエントリと一致することを示し、第1の状態は、キャッシュイコール(cache equal)状態としてプログラムに記録され得る。
(2)第2のイベントが検出された場合、複数の第5のパケットがピア・プロキシ・ノードに連続的に送信され、ステートマシンは第1の状態に切り替えられる。
第2のイベントは、第1のキャッシュエントリが更新されることであり、第2のイベントは、LocalCache_Upd(文字通りローカルキャッシュ更新として変換され、Updはupdateであり、更新を表す)イベントとしてプログラムに記録されてもよい。
(3)第3のイベントが検出され、ステートマシンが第2の状態にある場合、複数の第5のパケットがピア・プロキシ・ノードに連続して送信され、ステートマシンは第1の状態に切り替えられる。
第3のイベントは、第4のパケットが受信されることであり、第3のイベントは、Local Cache Touch(ローカルキャッシュが読み出される)イベントとしてプログラムに記録され得る。第2の状態は、ピアキャッシュエントリがローカルキャッシュエントリよりも古い、またはピアキャッシュエントリがローカルキャッシュエントリよりも古いと疑われると判定されたことを示す。第2の状態では、ローカル・プロキシ・ノードは、ピア・プロキシ・ノードのキャッシュエントリ内のSRHを更新するために、ピア・プロキシ・ノードへ第5のパケットを送信することができる。第2の状態は、キャッシュオールド(Cache_Older)状態としてプログラムに記録されてもよい。
(4)第4のイベントが検出され、ステートマシンが第1の状態にある場合、第1のキャッシュエントリが削除される。
第4のイベントは、エージングタイマが満了したことであり、第4のイベントは、AgingTimer_Expired(エージングタイマが満了した)イベントとしてプログラムに記録されてもよい。エージングタイマが満了すると、第1のキャッシュエントリがエージング状態にあることを示し、キャッシュスペースを節約するために第1のキャッシュエントリがクリアされ得る。具体的には、第1のプロキシノードは、エージングタイマを開始し、第1のキャッシュエントリに対応するエージングフラグ(agingflag)を設定することができ、エージングフラグの値は1または0とすることができる。加えて、第1のプロキシノードは、エージングタイマを使用して第1のキャッシュエントリを定期的にスキャンすることができる。第1のキャッシュエントリに対応するエージングフラグが1であることをスキャンによって発見した場合、第1のプロキシノードは、エージングフラグを0に修正する、または、第1のキャッシュエントリに対応するエージングフラグが0であることをスキャンによって発見した場合、第1のプロキシノードは第1のキャッシュエントリを削除する。第1のプロキシノードがパケットを転送するプロセスにおいて、第1のキャッシュエントリがキャッシュ検索中にヒットされた場合、第1のプロキシノードは、第1のキャッシュエントリに対応するエージングフラグを1に設定し、その結果、第1のキャッシュエントリはキャッシュ内に残る。
(5)第5のイベントが検出され、ステートマシンが第1の状態にある場合、第5のパケットで搬送されたSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第5のパケットで搬送されたSRHが記憶されたSRHと一致しない場合、第5のパケットで搬送されたSRHはキャッシュを更新するためにキャッシュエントリに記憶され、エージングフラグは1に設定され、ステートマシンの現在の状態は変更されないままである。
第5のイベントは、第5のパケットが受信されたことであり、第5のイベントは、CacheSync_Recv(文字通り、受信キャッシュ同期メッセージ/パケットと翻訳され、SyncはSynchronizeであり、同期を表し、SRHをピア・プロキシ・ノードのキャッシュに同期させることを意味する。Recvはreceiveである)イベントとしてプログラムに記録されてもよい。
(6)第5のイベントが検出され、ステートマシンが第2の状態にある場合、第5のパケットで搬送されたSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第5のパケットで搬送されたSRHが記憶されたSRHと一致しない場合、第5のパケットで搬送されたSRHをキャッシュエントリに記憶してキャッシュを更新し、エージングフラグを1に設定し、ステートマシンを第1の状態に切り替える。
(7)第6のイベントが検出され、ステートマシンが第1の状態にある場合、ステートマシンは第3の状態に切り替えられる。
第6イベントは、第1パケットを受信したことであり、Cache_Miss(キャッシュミス)イベントとしてプログラムに記録してもよい。第3の状態は、ピアキャッシュエントリが失われたと判定され、キャッシュエントリがピア側で再作成されるように、第5のパケットが送信される必要があることを示す。第3の状態は、キャッシュミス識別子を含むパケットを受信したCacheMiss_Recv状態としてプログラムに記録されてもよい。
(8)第3のイベントが検出され、ステートマシンが第3の状態にある場合、複数の第5のパケットがピア・プロキシ・ノードに連続して送信され、ステートマシンは第1の状態に切り替えられる。
(9)第5のイベントが検出され、ステートマシンが第3の状態にある場合、第4のパケットに対応し、第5のパケットで搬送されるSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第4のパケットに対応し、第5のパケットで搬送されるSRHが記憶されたSRHと一致しない場合、第4のパケットに対応し、第5のパケットで搬送されるSRHがキャッシュエントリに記憶されてキャッシュを更新し、エージングフラグが1に設定され、ステートマシンが第1の状態に切り替えられる。
図53は、本出願の一実施形態による第2のステートマシンの概略図である。第2のステートマシンは、確認応答機構が送信信頼性を保証するために使用される場合に適用可能であり、第2のステートマシンによって提供される処理ポリシーは、以下の(1)から(13)のうちの1つまたは複数を含み得る。以下は、第2のステートマシンの第1のステートマシンとの違いに焦点を当てていることに留意されたい。第1のステートマシンの特徴と同様の特徴については、第1のステートマシンを参照されたい。以下では詳細について説明されない。
(1)第1のイベントが検出された場合、1つの第5のパケットがピア・プロキシ・ノードに送信され、ステートマシンは第4の状態に切り替えられる。
第4の状態は、キャッシュエントリがローカルに生成または更新され、第5のパケットがピア・プロキシ・ノードに送信されており、第5のパケットの演算結果に対するピア・プロキシ・ノードからの確認応答が待機されていることを示す。第4の状態は、Sync_Start(文字通り同期開始として送信され、SyncはSynchronizeであり、Startは開始である)状態としてプログラムに記録されてもよい。
(2)第2のイベントが検出され、ステートマシンが第4の状態にある場合、1つの第5のパケットがピア・プロキシ・ノードに送信され、ステートマシンの現在の状態は変更されないままである。
(3)第2のイベントが検出され、ステートマシンが第1の状態にある場合、1つの第5のパケットがピア・プロキシ・ノードに送信され、ステートマシンは第4の状態に切り替えられる。
(4)第3のイベントが検出され、ステートマシンが第4の状態にある場合、ステートマシンは第1の状態に切り替えられる。
(5)第4のイベントが検出され、ステートマシンが第4の状態にある場合、ステートマシンは第1の状態に切り替えられる。
(4)および(5)では、2つのプロキシノードが同時に第4の状態にあり、したがってインターロックされることを防止するために、第5のパケットを送信する動作は実行されない場合がある。
(6)第5のイベントが検出され、ステートマシンが第1の状態にある場合、第5のパケットで搬送されたSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第5のパケットで搬送されたSRHが記憶されたSRHと一致しない場合、第5のパケットで搬送されたSRHはキャッシュを更新するためにキャッシュエントリに記憶され、エージングフラグは1に設定され、ステートマシンの現在の状態は変更されないままである。
(7)第4のイベントが検出され、ステートマシンが第1の状態にある場合、ステートマシンは第2の状態に切り替えられる。
(8)第5のイベントが検出され、ステートマシンが第2の状態にある場合、第5のパケットで搬送されたSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第5のパケットで搬送されたSRHが記憶されたSRHと一致しない場合、第5のパケットで搬送されたSRHをキャッシュエントリに記憶してキャッシュを更新し、エージングフラグを1に設定し、ステートマシンを第1の状態に切り替える。
(9)第3のイベントが検出され、ステートマシンが第2の状態にある場合、1つの第5のパケットがピア・プロキシ・ノードに送信され、ステートマシンは第4の状態に切り替えられる。
(10)第6のイベントが検出され、ステートマシンが第4の状態にある場合、ステートマシンは第1の状態に切り替えられる。
第6のイベントは、第6のパケットを受信したことであり、第6のイベントは、CacheSync_Ack(文字通り、キャッシュ同期確認応答として変換され、SyncはSynchronizeされ、AckはAcknowledgeであり、確認応答を表す)イベントとしてプログラムに記録されてもよい。
(11)第6のイベントが検出され、ステートマシンが第1の状態にある場合、ステートマシンは第3の状態に切り替えられる。
(12)第3のイベントが検出され、ステートマシンが第3の状態にある場合、1つの第5のパケットがピア・プロキシ・ノードに送信され、ステートマシンは第4の状態に切り替えられる。
(13)第5のイベントが検出され、ステートマシンが第3の状態にある場合、第4のパケットに対応し、第5のパケットで搬送されるSRHがキャッシュに記憶されたSRHと一致するかどうかが比較される。第4のパケットに対応し、第5のパケットで搬送されるSRHが記憶されたSRHと一致しない場合、第4のパケットに対応し、第5のパケットで搬送されるSRHがキャッシュエントリに記憶されてキャッシュを更新し、エージングフラグ(agingflag)が1に設定され、ステートマシンは第1の状態に切り替えられる。
ステートマシン機構は、少なくとも以下の効果を達成するために使用されてもよい。ピア・プロキシ・ノードがSRHをキャッシュしている状態に基づいて、現在実行されるべきアクションが、ピア・プロキシ・ノードにSRHを適時に送信するために、ステートマシンを使用することによってリアルタイムで判定され得、その結果、ローカル・プロキシ・ノードおよびピア・プロキシ・ノードのキャッシュエントリが同期したままであることが保証され得、それによって、同じSFノードにデュアルホーム接続されたプロキシノード間のSRH一貫性が実現される。
以上、本出願の実施形態におけるパケット伝送方法について説明した。以下では、第1のプロキシノードおよび第2のプロキシノードについて説明する。
図54は、本出願の一実施形態による第1のプロキシノードの構造の概略図である。図54に示すように、第1のプロキシノードは、受信モジュール5401と、検索モジュール5402と、生成モジュール5403と、送信モジュール5404とを含む。受信モジュール5401は、第1のパケットを受信するステップを実行するように構成されており、例えば、前述の方法実施形態におけるステップ502、ステップ3012、ステップ4708、ステップ4911、またはステップ5109を実行してもよい。検索モジュール5402は、キャッシュ検索ステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ502、ステップ3012、ステップ4708、ステップ4911、またはステップ5109を実行することができる。生成モジュール5403は、第2のパケットを生成するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ503、ステップ3013、ステップ4709、ステップ4912、またはステップ5110を実行することができる。送信モジュール5404は、第2のパケットを送信するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ504、ステップ3014、ステップ4710、ステップ4913、またはステップ5111を実行することができる。
任意選択で、第2のパケットはIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
任意選択で、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を示すために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
任意選択で、生成モジュール5403は、第2のパケットのIPヘッダを生成し、第2のパケットのIPヘッダを第1のパケットにカプセル化するように構成されている。
任意選択で、生成モジュール5403は、第1のパケットのIPヘッダを第2のパケットのIPヘッダに更新するように構成されている。
任意選択で、第2のパケットは第2の制御情報をさらに含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、第2のパケットの有効性をチェックするよう指示するために用いられる。
任意選択で、第2の制御情報は、第2のパケットのSRH内のタイプ長値TLVで搬送される、または
第2の制御情報は第2のパケットのIPヘッダで搬送される。
任意選択で、第1の制御情報は第2のパケットの拡張ヘッダで搬送され、
第1の制御情報は、第1のバイパスSIDで搬送され、
第1の制御情報は第2のパケットのインターネットプロトコルIPヘッダで搬送され、または
第1の制御情報は、第2のパケットのSRH内のTLVで搬送される。
任意選択で、第1のパケットは、第2のプロキシノードからのパケットに対してサービス機能処理が行われた後に取得され、第1のパケットは第2のキャッシュエントリの識別子を含み、第2のキャッシュエントリは、第1のパケットに対応するSRHを記憶するために第2のプロキシノードによって使用されるキャッシュエントリである。
第2のパケットは第2のキャッシュエントリの識別子をさらに含み、第1の制御情報は第2のプロキシノードに、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するよう指示するのにさらに用いられる。
任意選択で、第1のパケットは、第1のプロキシノードからのパケットに対してサービス機能処理が行われた後に取得され、第1のパケットは第1のキャッシュエントリの識別子を含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。
第2のパケットは第1のキャッシュエントリの識別子を含み、第1の制御情報は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子をインデックスとして使用することによって、第1のパケットに対応するSRHを検索するように第2のプロキシノードに指示するためにさらに使用される。
任意選択で、第1のプロキシノードは第1のリンクを介して第2のプロキシノードに接続されており、送信モジュール5404は、第1のリンクに対応する第1のアウトバウンドインターフェースを介して第2のプロキシノードへ第2のパケットを送信するように構成されている、または
第1のプロキシノードは第2のリンクを介してルータノードに接続されており、ルータノードは第3のリンクを介して第2のプロキシノードに接続されており、送信モジュール5404は、第2のリンクに対応する第2のアウトバウンドインターフェースを介してルータノードへ第2のパケットを送信するように構成されており、第2のパケットはルータノードによって第3のリンクを介して第2のプロキシノードへ転送される。
任意選択で、第1のプロキシノードは、第1のリンクのステータスを検出するように構成された検出モジュールをさらに含む。
送信モジュール5404は、第1のリンクが利用可能な状態にある場合、第1のリンクに対応する第1のアウトバウンドインターフェースを介して第2のプロキシノードへ第2のパケットを送信するように構成されている。あるいは、第1のリンクが利用不可能な状態にある場合、第2のリンクに対応する第2のアウトバウンドインターフェースを介して第2のパケットをルータノードに送信する。
図54の実施形態で提供される第1のプロキシノードは、前述の方法の実施形態における第1のプロキシノードに対応することを理解されたい。第1のプロキシノードのモジュールならびに前述の他の操作および/または機能は、方法の実施形態において第1のプロキシノードによって実施される様々なステップおよび方法を実施するために使用される。具体的な詳細については、前述の方法の実施形態を参照されたい。簡潔にするために、ここでは詳細を繰り返さない。
図54の実施形態で提供される第1のプロキシノードがパケットを送信するとき、前述の機能モジュールへの分割は説明のための例として使用されているにすぎないことに留意されたい。実際の用途では、前述の機能は、要件に基づいて実装のために異なる機能モジュールに割り当てられてもよく、すなわち、第1のプロキシノードの内部構造は、上述の機能のすべてまたは一部を完了するために、異なる機能モジュールに分割される。加えて、前述の実施形態で提供された第1のプロキシノードおよび前述のパケット伝送方法の実施形態は、同じ概念に属する。第1のプロキシノードの具体的な実装プロセスについては、方法の実施形態を参照されたい。ここでは詳細を繰り返さない。
図55は、本出願の一実施形態による第2のプロキシノードの構造の概略図である。図55に示すように、第2のプロキシノードは、受信モジュール5501と、判定モジュール5502と、検索モジュール5503と、生成モジュール5504と、送信モジュール5505とを含む。受信モジュール5501は、第2のパケットを受信するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ505、ステップ3011、ステップ4714、またはステップ5112を実行することができる。判定モジュール5502は、第1の制御情報がSRHを復元することを示すと判定するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ505、ステップ3011、ステップ4714、またはステップ5112を実行することができる。検索モジュール5503は、キャッシュ検索ステップを実行するように構成され、例えば、前述の方法の実施形態におけるステップ506、ステップ3012、ステップ4716、またはステップ5114を実行することができる。生成モジュール5504は、第3のパケットを生成するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ507、ステップ3013、ステップ4717、またはステップ5115を実行することができる。送信モジュール5505は、第3のパケットを送信するステップを実行するように構成され、例えば、前述の方法実施形態におけるステップ508、ステップ3014、ステップ4718、またはステップ5116を実行することができる。
任意選択で、第2のパケットはインターネットプロトコルIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
任意選択で、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を示すために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
任意選択で、生成モジュール5504は、第3のパケットを取得するために、第2のパケットから第2のパケットのIPヘッダをストリッピングし、第1のパケットに対応するSRHをカプセル化するように構成されている。
任意選択で、生成モジュール5504は、第3のパケットを取得するために、第2のパケットのIPヘッダを第1のパケットのIPヘッダに更新し、第1のパケットに対応するSRHをカプセル化するように構成されている。
任意選択で、第2のパケットのSRHはタイプ長値TLVを含み、TLVは第2の制御情報を含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに第2のパケットの有効性をチェックするよう指示するめに使用される。
任意選択で、第2の制御情報は、第2のパケットのSRH内のタイプ長値TLVで搬送される、または
第2の制御情報は第2のパケットのIPヘッダで搬送される。
任意選択で、第1の制御情報は第2のパケットの拡張ヘッダで搬送され、
第1の制御情報は第1のバイパスSIDで搬送され、
第1の制御情報は第2のパケットのIPヘッダで搬送され、または
第1の制御情報は、第2のパケットのSRH内のTLVで搬送される。
任意選択で、第2のパケットは第2のキャッシュエントリの識別子をさらに含み、判定モジュール5502は、第2のキャッシュエントリの識別子をインデックスとして用いて第1の制御情報が第1のパケットに対応するSRHを検索することをさらに指示すると判定するようにさらに構成されている。
検索モジュール5503は、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いて第2のプロキシノードのキャッシュを検索するように構成されている。
任意選択で、第2のパケットは第1のキャッシュエントリの識別子をさらに含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。
判定モジュール5502は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子をインデックスとして用いて、第1の制御情報が第1のパケットに対応するSRHを検索することをさらに指示すると判定するようにさらに構成されている。
検索モジュール5503は、第2のキャッシュエントリの識別子を取得するために、第1のキャッシュエントリの識別子に基づいて第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を検索するようにさらに構成されている。
検索モジュール5503は、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いて第2のプロキシノードのキャッシュを検索するように構成されている。
任意選択で、判定モジュール5502は、サービス機能ノードのサービス機能がフロー識別子を修正することを含むと判定するようにさらに構成される。
任意選択で、第2のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子であり、検索モジュール5503は、第1のパケットに対応するSRHを取得するために、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて第2のプロキシノードのキャッシュを検索するように構成されている。
任意選択で、第2のパケットは、SFノードが属する仮想プライベートネットワークVPNのVPN識別子を含む。検索モジュール5503は、VPN識別子に対応するエンドポイント動的プロキシSIDを取得するために、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をVPN識別子に基づいて検索するようにさらに構成される。
場合によっては、受信モジュール5501は、構成命令を受信するようにさらに構成され、構成命令は、各VPNにおけるサービス機能ノードに対応するエンドポイント動的プロキシSIDを含む。
記憶モジュールは、構成命令に基づいて、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を記憶するようにさらに構成される。
任意選択で、受信モジュール5501は、第4のパケットを受信するようにさらに構成されており、第4のパケットは第1のパケットに対応するSRHを含み、第4のパケットの宛先アドレスはエンドポイント動的プロキシSIDであり、第4のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子である。
記憶モジュールは、第1のパケットに対応するフロー識別子およびエンドポイント動的プロキシSIDをインデックスとして用いて、第1のパケットに対応するSRHを第2のキャッシュエントリに記憶するように構成される。
任意選択で、第2のプロキシノードは第1のリンクを介して第1のプロキシノードに接続されており、受信モジュール5501は、第1のリンクに対応する第1のインバウンドインターフェースを介して第1のプロキシノードから第2のパケットを受信するように構成されている、または
第2のプロキシノードは第3のリンクを介してルータノードに接続されており、ルータノードは第2のリンクを介して第1のプロキシノードに接続されており、受信モジュール5501は第3のリンクに対応する第2のインバウンドインターフェースを介してルータノードから第2のパケットを受信するように構成されており、第2のパケットは第2のリンクを介して第1のプロキシノードによってルータノードに送信される。
図55の実施形態で提供される第2のプロキシノードは、前述の方法の実施形態における第2のプロキシノードに対応することを理解されたい。第2のプロキシノードのモジュールならびに前述の他の操作および/または機能は、方法の実施形態において第2のプロキシノードによって実施される様々なステップおよび方法を実施するために使用される。具体的な詳細については、前述の方法の実施形態を参照されたい。簡潔にするために、ここでは詳細を繰り返さない。
図55の実施形態で提供される第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)などであり得るが、これらに限定されない。本出願のこの実施形態では、通信インターフェースは、別のノードによって送信されたパケットを受信するように構成されてもよく、または別のノードにパケットを送信してもよい。
いくつかの可能な実施形態では、プロキシノードは、ネットワークデバイスとして実装されてもよく、ネットワークデバイス内のネットワークプロセッサは、前述の方法の実施形態のステップを実行してもよい。例えば、ネットワークデバイスは、ルータ、スイッチ、またはファイアウォールであってもよい。
図56は、本出願の例示的な実施形態によるネットワークデバイスの構造の概略図である。ネットワークデバイスは、第1のプロキシノードまたは第2のプロキシノードとして構成されてもよい。
ネットワークデバイス5600は、主制御ボード5610と、インターフェースボード5630と、スイッチングボード5620と、インターフェースボード5640とを含む。主制御ボード5610は、システム管理、装置メンテナンス、プロトコル処理などの機能を完了するように構成される。スイッチングボード5620は、インターフェースボード(インターフェースボードはラインカードまたはサービスボードとも呼ばれる)間のデータ交換を完了するように構成される。インターフェースボード5630および5640は、様々なサービスインターフェース(例えば、イーサネットインターフェースおよびPOSインターフェース)を提供し、データパケット転送を実施するように構成される。主制御ボード5610、インターフェースボード5630,5640、およびスイッチングボード5620は、システムバスを介してシステムバックボードと通信可能に接続されている。インターフェースボード5630上の中央処理装置5631は、インターフェースボードを制御および管理し、主制御ボード5610上の中央処理装置5611と通信するように構成される。
ネットワークデバイス5600が第1のプロキシノードとして構成されている場合、物理インターフェースカード5633は第1のパケットを受信し、第1のパケットをネットワークプロセッサ5632に送信する。ネットワークプロセッサ5632は、転送エントリメモリ5634を検索し、第1のパケットに対応するセグメントルーティングヘッダSRHを取得することに失敗する。この場合、ネットワークプロセッサ5632は、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成し、第2のパケットが第2のプロキシノードに送信されるように、リンク層カプセル化が完了した後にアウトバウンドインターフェースなどの情報に基づいて物理インターフェースカード5633を通じて第2のパケットを送信する。
一実施形態では、第2のパケットはIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
一実施形態において、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を指示するために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
一実施形態では、ネットワークプロセッサ5632は、第2のパケットのIPヘッダを生成し、第2のパケットのIPヘッダを第1のパケットにカプセル化してもよい。
一実施形態では、第2のパケットは第2の制御情報をさらに含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、第2のパケットの有効性をチェックするよう指示するために使用される。
一実施形態では、第2の制御情報は、第2のパケットのSRH内のTLVで搬送される、または、第2の制御情報は第2のパケットのIPヘッダで搬送される。
一実施形態では、第1の制御情報は、第2のパケットの拡張ヘッダで搬送される。第1の制御情報は、第1のバイパスSIDで搬送される。第1の制御情報は第2のパケットのIPヘッダで搬送され、または、第2のパケットのSRHにおいてTLVで第1の制御情報が搬送される。
一実施形態では、第1のパケットは、第2のプロキシノードからのパケットに対してサービス機能処理が実行された後に取得され、第1のパケットは第2のキャッシュエントリの識別子を含み、第2のキャッシュエントリは、第1のパケットに対応するSRHを記憶するために第2のプロキシノードによって使用されるキャッシュエントリである。第2のパケットは第2のキャッシュエントリの識別子をさらに含み、第1の制御情報は第2のプロキシノードに、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するよう指示するのにさらに用いられる。
一実施形態では、第1のパケットは、第1のプロキシノードからのパケットに対してサービス機能処理が実行された後に取得され、第1のパケットは第1のキャッシュエントリの識別子を含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。第2のパケットは第1のキャッシュエントリの識別子を含み、第1の制御情報は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子をインデックスとして使用することによって、第1のパケットに対応するSRHを検索するように第2のプロキシノードに指示するためにさらに使用される。
一実施形態では、第1のプロキシノードは第1のリンクを介して第2のプロキシノードに接続されており、ネットワークプロセッサ5632は、物理インターフェースカード5633内の第1のアウトバウンドインターフェースを介して第2のパケットを送信するために、物理インターフェースカード5633内の、第1のリンクに対応する第1のアウトバウンドインターフェースを選択する。
一実施形態では、第1のプロキシノードは第2のリンクを介してルータノードに接続され、ルータノードは第3のリンクを介して第2のプロキシノードに接続され、ネットワークプロセッサ5632は、物理インターフェースカード5633内の第2のアウトバウンドインターフェースを介して第2のパケットを送信するために、物理インターフェースカード5633内にあり、第2のリンクに対応する第2のアウトバウンドインターフェースを選択し、第2のパケットは、第3のリンクを介してルータノードによって第2のプロキシノードへ転送される。
一実施形態では、ネットワークプロセッサ5632は、第1のリンクのステータスを検出する。第1のリンクが利用可能状態にある場合、ネットワークプロセッサ5632は、物理インターフェースカード5633内の第1のアウトバウンドインターフェースを介して第3のパケットを送信するために、物理インターフェースカード5633内の、第1のリンクに対応する第1のアウトバウンドインターフェースを選択する。あるいは、第1のリンクが利用不可状態にある場合、ネットワークプロセッサ5632は、物理インターフェースカード5633内の第2のアウトバウンドインターフェースを介して第3のパケットを送信するために、物理インターフェースカード5633内の、第2のリンクに対応する第2のアウトバウンドインターフェースを選択する。
ネットワークデバイス5600が第2のプロキシノードとして構成されている場合、物理インターフェースカード5633は第2のパケットを受信し、第2のパケットをネットワークプロセッサ5632に送信する。ネットワークプロセッサ5632は、第1の制御情報は第2のプロキシノードに、第1のパケットに対応するSRHを復元するよう指示していると判定する。第1のパケットに対応するSRHを取得するために、第2のパケットに基づいて第2のプロキシノードのキャッシュを検索する第2のパケットおよび第1のパケットに対応するSRHに基づいて第3のパケットを生成し、第3のパケットは、第1のパケットに対応するSRHおよび第1のパケットのペイロードを含むリンク層カプセル化が完了した後にアウトバウンドインターフェースなどの情報に基づいて物理インターフェースカード5633を介して第3のパケットを送信し、その結果、第3のパケットは第1のプロキシノードに送信される。
一実施形態において、第2のパケットはインターネットプロトコルIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
一実施形態において、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を指示するために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
一実施形態では、ネットワークプロセッサ5632は、第3のパケットを取得するために、第2のパケットから第2のパケットのIPヘッダをストリッピングし、第1のパケットに対応するSRHをカプセル化する。
一実施形態では、ネットワークプロセッサ5632は、第3のパケットを取得するために、第2のパケットのIPヘッダを第1のパケットのIPヘッダに更新し、第1のパケットに対応するSRHをカプセル化する。
一実施形態では、第2のパケットは第2の制御情報をさらに含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、第2のパケットの有効性をチェックするよう指示するために使用される。
一実施形態では、第2の制御情報は、第2のパケットのSRH内のタイプ長値TLVで搬送される、または、第2の制御情報は第2のパケットのIPヘッダで搬送される。
一実施形態では、第1の制御情報は、第2のパケットの拡張ヘッダで搬送される。第1の制御情報は第1のバイパスSIDで搬送され、第1の制御情報は第2のパケットのインターネットプロトコルIPヘッダで搬送され、または、第1の制御情報は、第2のパケットのSRH内のTLVで搬送される。
一実施形態では、ネットワークプロセッサ5632は、第1の制御情報が、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するようにさらに指示していると判定し、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いて転送エントリメモリ5634内の第2のキャッシュエントリを検索する。
一実施形態では、第2のパケットは第1のキャッシュエントリの識別子をさらに含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。ネットワークプロセッサ5632は、第1の制御情報が、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子を用いて第1のパケットに対応するSRHを検索することをさらに指示していると判定する。ネットワークプロセッサ5632は、第1のキャッシュエントリの識別子に基づいて、転送エントリメモリ5634に記憶されている、第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を検索して、第2のキャッシュエントリの識別子を取得し、第2のキャッシュエントリの識別子をインデックスとして用いて転送エントリメモリ5634を検索して、転送エントリメモリ5634に記憶された第2のキャッシュエントリから第1のパケットに対応するSRHを取得する。
一実施形態では、ネットワークプロセッサ5632は、サービス機能ノードのサービス機能がフロー識別子を修正することを含むと判定する。
一実施形態では、第2のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子であり、ネットワークプロセッサ5632は、第1のパケットに対応する、転送エントリメモリ5634に記憶されているSRHを取得するために、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて転送エントリメモリ5634を検索する。
一実施形態では、第2のパケットは、SFノードが属するVPNのVPN識別子を含む。ネットワークプロセッサ5632は、VPN識別子に基づいて、転送エントリメモリ5634に記憶されている、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を検索して、VPN識別子に対応するエンドポイント動的プロキシSIDを取得する。
一実施形態において、主制御ボード5610上の中央処理装置5611は、構成命令を受信し、構成命令に基づいてエンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を転送エントリメモリ5634に記憶することができる。
一実施形態では、物理インターフェースカード5633は、第4のパケットを受信し、第4のパケットをネットワークプロセッサ5632に送信する。ネットワークプロセッサ5632は、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて、第1のパケットに対応するSRHを転送エントリメモリ5634内の第2のキャッシュエントリに記憶する。
一実施形態では、物理インターフェースカード5633は、第1のリンクに対応する第1のインバウンドインターフェースを介して第2のパケットを受信する、または、物理インターフェースカード5633は、第3のリンクに対応する第2のインバウンドインターフェースを介して第2のパケットを受信する。
本願のこの実施形態では、インターフェースボード5640上の操作は、インターフェースボード5630上の操作と一致することを理解されたい。簡潔にするために、詳細は再度説明されない。この実施形態におけるネットワークデバイス5600は、前述の方法の実施形態における第1のプロキシノードまたは第2のプロキシノードに対応し得ることを理解されたい。主制御ボード5610、ならびにネットワークデバイス5600内のインターフェースボード5630および/またはインターフェースボード5640は、前述の方法の実施形態における第1のプロキシノードまたは第2のプロキシノードによって実施される機能および/またはステップを実施することができる。簡潔にするため、ここでは詳細を再度説明しない。
1つまたは複数の主制御ボードが存在してもよいことに留意されたい。複数の主制御ボードが存在する場合、主制御ボードは、アクティブ主制御ボードとスタンバイ主制御ボードとを含んでもよい。1つまたは複数のインターフェースボードがあってもよく、より強いデータ処理能力を有するネットワークデバイスは、より多くのインターフェースボードを提供する。インターフェースボード上には1つまたは複数の物理インターフェースカードがあってよい。スイッチングボードはなくてもよく、または1つまたは複数のスイッチングボードがあってもよい。複数のスイッチングボードが存在するとき、スイッチングボードは、負荷共有および冗長バックアップを一緒に実現することができる。集中転送アーキテクチャでは、ネットワークデバイスはスイッチングボードを必要としない場合があり、インターフェースボードはシステム全体のサービスデータを処理する機能を提供する。分散転送アーキテクチャでは、ネットワークデバイスは少なくとも1つのスイッチングボードを有することができ、大容量データ交換および処理能力を提供するために、複数のインターフェースボード間のデータ交換はスイッチングボードを使用して実施される。したがって、分散アーキテクチャにおけるネットワークデバイスのデータアクセスおよび処理能力は、集中アーキテクチャにおけるデバイスのデータアクセスおよび処理能力よりも優れている。任意選択で、ネットワークデバイスは、代替的に、カードが1つしかない形態であってもよい。具体的には、スイッチングボードはなく、インターフェースボードおよび主制御ボードの機能がカード上に統合される。この場合、インターフェースボード上の中央処理装置および主制御ボード上の中央処理装置は、2つの中央処理装置が組み合わされた後に得られる機能を実行するために、カード上の1つの中央処理装置に組み合わされてもよい。この形態のデバイス(例えば、ローエンドスイッチまたはルータなどのネットワークデバイス)は、弱いデータ交換および処理能力を有する。使用されるべき具体的なアーキテクチャは、具体的なネットワーク展開シナリオに依存する。これはここでは限定されない。
いくつかの可能な実施形態では、プロキシノードは、コンピューティングデバイスとして実装されてもよく、コンピューティングデバイス内の中央処理装置は、前述の方法の実施形態におけるステップを実行してもよい。例えば、コンピューティングデバイスは、ホスト、サーバ、またはパーソナルコンピュータであってもよい。コンピューティングデバイスは、一般的なバスアーキテクチャを使用して実装することができる。
図57は、本出願の例示的な実施形態によるコンピューティングデバイスの構造の概略図である。コンピューティングデバイスは、第1のプロキシノードまたは第2のプロキシノードとして構成され得る。
コンピューティングデバイス5700は、プロセッサ5710と、トランシーバ5720と、ランダムアクセスメモリ5740と、読み出し専用メモリ5750と、バス5760とを含む。プロセッサ5710は、バス5760を介してトランシーバ5720、ランダムアクセスメモリ5740、および読み出し専用メモリ5750に結合されている。コンピューティングデバイス5700を実行する必要があるとき、コンピューティングデバイス5700は、読み出し専用メモリ5750に組み込まれた基本入出力システムまたは組み込みシステム内のブートローダブートストラップシステムを使用して起動され、コンピューティングデバイス5700をブートして通常の実行状態に入る。
コンピューティングデバイス5700が第1のプロキシノードとして構成されている場合、トランシーバ5720は第1のパケットを受信し、第1のパケットをプロセッサ5710に送信する。プロセッサ5710は、ランダムアクセスメモリ5740を参照し、第1のパケットに対応するセグメントルーティングヘッダSRHを取得することに失敗する。この場合、プロセッサ5710は、第1のパケットと第2のプロキシノードに対応する第1のバイパスSIDとに基づいて第2のパケットを生成し、リンク層カプセル化が完了した後にアウトバウンドインターフェースなどの情報に基づいてトランシーバ5720を介して第2のパケットを送信し、これにより、第2のパケットは第2のプロキシノードに送信される。
一実施形態では、第2のパケットはIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
一実施形態において、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を指示するために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
一実施形態では、プロセッサ5710は、第2のパケットのIPヘッダを生成し、第2のパケットのIPヘッダを第1のパケットにカプセル化してもよい。
一実施形態では、第2のパケットは第2の制御情報をさらに含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、第2のパケットの有効性をチェックするよう指示するために使用される。
一実施形態では、第2の制御情報は、第2のパケットのSRH内のTLVで搬送される、または、第2の制御情報は第2のパケットのIPヘッダで搬送される。
一実施形態では、第1の制御情報は、第2のパケットの拡張ヘッダで搬送される。第1の制御情報は、第1のバイパスSIDで搬送される。第1の制御情報は第2のパケットのIPヘッダで搬送され、または、第2のパケットのSRHにおいてTLVで第1の制御情報が搬送される。
一実施形態では、第1のパケットは、第2のプロキシノードからのパケットに対してサービス機能処理が実行された後に取得され、第1のパケットは第2のキャッシュエントリの識別子を含み、第2のキャッシュエントリは、第1のパケットに対応するSRHを記憶するために第2のプロキシノードによって使用されるキャッシュエントリである。第2のパケットは第2のキャッシュエントリの識別子をさらに含み、第1の制御情報は第2のプロキシノードに、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するよう指示するのにさらに用いられる。
一実施形態では、第1のパケットは、第1のプロキシノードからのパケットに対してサービス機能処理が実行された後に取得され、第1のパケットは第1のキャッシュエントリの識別子を含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。第2のパケットは第1のキャッシュエントリの識別子を含み、第1の制御情報は、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子をインデックスとして使用することによって、第1のパケットに対応するSRHを検索するように第2のプロキシノードに指示するためにさらに使用される。
一実施形態では、第1のプロキシノードは第1のリンクを介して第2のプロキシノードに接続されており、プロセッサ5710は、トランシーバ5720内の第1のアウトバウンドインターフェースを介して第2のパケットを送信するために、トランシーバ5720内の、第1のリンクに対応する第1のアウトバウンドインターフェースを選択する。
一実施形態では、第1のプロキシノードは第2のリンクを介してルータノードに接続され、ルータノードは第3のリンクを介して第2のプロキシノードに接続され、プロセッサ5710は、トランシーバ5720内の第2のアウトバウンドインターフェースを介して第2のパケットを送信するために、トランシーバ5720内にあり、第2のリンクに対応する第2のアウトバウンドインターフェースを選択し、第2のパケットは、ルータノードによって第3のリンクを介して第2のプロキシノードに転送される。
一実施形態では、プロセッサ5710は、第1のリンクのステータスを検出する。第1のリンクが利用可能な状態にある場合、プロセッサ5710は、トランシーバ5720内の第1のアウトバウンドインターフェースを介して第3のパケットを送信するために、トランシーバ5720内の、第1のリンクに対応する第1のアウトバウンドインターフェースを選択する。あるいは、第1のリンクが非可用状態にある場合、プロセッサ5710は、トランシーバ5720内の第2のアウトバウンドインターフェースを介して第3のパケットを送信するために、トランシーバ5720内の、第2のリンクに対応する第2のアウトバウンドインターフェースを選択する。
コンピューティングデバイス5700が第2のプロキシノードとして構成されている場合、トランシーバ5720は第2のパケットを受信し、第2のパケットをプロセッサ5710に送信する。プロセッサ5710は、第1の制御情報は第2のプロキシノードに、第1のパケットに対応するSRHを復元するよう指示していると判定する。第1のパケットに対応するSRHを取得するために、第2のパケットに基づいて第2のプロキシノードのキャッシュを検索する第2のパケットおよび第1のパケットに対応するSRHに基づいて第3のパケットを生成し、第3のパケットは、第1のパケットに対応するSRHおよび第1のパケットのペイロードを含むリンク層カプセル化が完了した後、アウトバウンドインターフェースなどの情報に基づいてトランシーバ5720を介して第3のパケットを送信し、その結果、第3のパケットは第1のプロキシノードに送信される。
一実施形態において、第2のパケットはインターネットプロトコルIPヘッダを含み、IPヘッダの宛先アドレスは第1のバイパスSIDである。
一実施形態において、第2のパケットは、第2のパケットのIPヘッダおよびSRHを含み、IPヘッダの宛先アドレスは、次のセグメントルーティングSRノードに対応する1つまたは複数のターゲットSIDにおけるSIDであり、1つまたは複数のターゲットSIDは、ターゲット転送経路を指示するために使用され、ターゲット転送経路は、第1のプロキシノードから第2のプロキシノードまでの経路であり、SRHは、第1のバイパスSIDおよび1つまたは複数のターゲットSIDを含む。
一実施形態では、プロセッサ5710は、第3のパケットを取得するために、第2のパケットから第2のパケットのIPヘッダをストリッピングし、第1のパケットに対応するSRHをカプセル化する。
一実施形態では、プロセッサ5710は、第3のパケットを取得するために、第2のパケットのIPヘッダを第1のパケットのIPヘッダに更新し、第1のパケットに対応するSRHをカプセル化する。
一実施形態では、第2のパケットは第2の制御情報をさらに含み、第2の制御情報は、第1のプロキシノードと第2のプロキシノードとの間のトランジットノードに、第2のパケットの有効性をチェックするよう指示するために使用される。
一実施形態では、第2の制御情報は、第2のパケットのSRH内のタイプ長値TLVで搬送される、または、第2の制御情報は第2のパケットのIPヘッダで搬送される。
一実施形態では、第1の制御情報は、第2のパケットの拡張ヘッダで搬送される。第1の制御情報は第1のバイパスSIDで搬送され、第1の制御情報は第2のパケットのインターネットプロトコルIPヘッダで搬送され、または、第1の制御情報は、第2のパケットのSRH内のTLVで搬送される。
一実施形態では、プロセッサ5710は、第1の制御情報が、第2のキャッシュエントリの識別子をインデックスとして用いて第1のパケットに対応するSRHを検索するようにさらに指示していると判定し、第2のキャッシュエントリから第1のパケットに対応するSRHを取得するために、第2のキャッシュエントリの識別子をインデックスとして用いてランダムアクセスメモリ5740内の第2のキャッシュエントリを検索する。
一実施形態では、第2のパケットは第1のキャッシュエントリの識別子をさらに含み、第1のキャッシュエントリは、第1のパケットに対応するSRHを履歴的に記憶するために第1のプロキシノードによって使用されるキャッシュエントリである。プロセッサ5710は、第1の制御情報が、第2のキャッシュエントリのものである、第1のキャッシュエントリの識別子とマッピング関係にある識別子を用いて第1のパケットに対応するSRHを検索することをさらに指示していると判定する。プロセッサ5710は、第1のキャッシュエントリの識別子に基づいて、ランダムアクセスメモリ5740に記憶された、第1のキャッシュエントリの識別子と第2のキャッシュエントリの識別子との間のマッピング関係を検索して、第2のキャッシュエントリの識別子を取得し、第2のキャッシュエントリの識別子をインデックスとして用いてランダムアクセスメモリ5740を検索して、ランダムアクセスメモリ5740に記憶された第2のキャッシュエントリから第1のパケットに対応するSRHを取得する。
一実施形態では、プロセッサ5710は、サービス機能ノードのサービス機能がフロー識別子を修正することを含むと判定する。
一実施形態では、第2のパケットに対応するフロー識別子は第1のパケットに対応するフロー識別子であり、プロセッサ5710は、第1のパケットに対応する、ランダムアクセスメモリ5740に記憶されたSRHを取得するために、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いてランダムアクセスメモリ5740を検索する。
一実施形態では、第2のパケットは、SFノードが属するVPNのVPN識別子を含む。プロセッサ5710は、VPN識別子に基づいて、ランダムアクセスメモリ5740に記憶されている、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係を検索して、VPN識別子に対応するエンドポイント動的プロキシSIDを取得する。
一実施形態において、プロセッサ5710は、構成命令を受信し、構成命令に基づいて、エンドポイント動的プロキシSIDとVPN識別子との間のマッピング関係をランダムアクセスメモリ5740に記憶することができる。
一実施形態では、トランシーバ5720は、第4のパケットを受信し、第4のパケットをプロセッサ5710に送信する。プロセッサ5710は、第1のパケットに対応するフロー識別子とエンドポイント動的プロキシSIDとをインデックスとして用いて、第1のパケットに対応するSRHをランダムアクセスメモリ5740内の第2のキャッシュエントリに記憶する。
一実施形態では、トランシーバ5720は、第1のリンクに対応する第1のインバウンドインターフェースを介して第2のパケットを受信する、またはトランシーバ5720は、第3のリンクに対応する第2のインバウンドインターフェースを介して第2のパケットを受信する。
本出願のこの実施形態におけるコンピューティングデバイスは、前述の方法の実施形態における第1のプロキシノードまたは第2のプロキシノードに対応することができ、コンピューティングデバイス内のプロセッサ5710、トランシーバ5720などは、前述の方法の実施形態における第1のプロキシノードまたは第2のプロキシノードによって実施される機能および/またはステップおよび方法を実施することができる。簡潔にするため、ここでは詳細を再度説明しない。
いくつかの可能な実施形態では、プロキシノードは、仮想化デバイスとして実装されてもよい。
例えば、仮想化装置は、パケット送信機能を有するプログラムが操作する仮想マシン(Virtual Machine、VM)であってもよく、仮想マシンは、ハードウェア装置(例えば、物理サーバ)上に展開される。仮想マシンは、ソフトウェアによってシミュレートされ、完全なハードウェアシステム機能を有し、完全に隔離された環境で操作する完全なコンピュータシステムである。仮想マシンは、第1のプロキシノードまたは第2のプロキシノードとして構成されてもよい。例えば、第1のプロキシノードまたは第2のプロキシノードは、NFV技術と組み合わせた汎用物理サーバに基づいて実装されてもよい。第1のプロキシノードまたは第2のプロキシノードは、仮想ホスト、仮想ルータ、または仮想スイッチである。本出願を読んだ後、当業者は、NFV技術と組み合わせて汎用物理サーバ上で、前述の機能を有する第1のプロキシノードまたは第2のプロキシノードを仮想化することができる。ここでは詳細は説明されない。
例えば、仮想化デバイスはコンテナであってもよく、コンテナは、分離された仮想化環境を提供するために使用されるエンティティである。例えば、コンテナは、dockerコンテナであってもよい。コンテナは、第1のプロキシノードまたは第2のプロキシノードとして構成され得る。例えば、プロキシノードは、対応する画像を使用して作成されてもよい。例えば、proxy-containerの画像を使用することによって、proxy-container(プロキシサービスを提供するコンテナ)に対して、2つのコンテナ・インスタンス、すなわち、コンテナ・インスタンスproxy-container1およびコンテナ・インスタンスproxy-container2が作成され得る。コンテナ・インスタンスproxy-container1は、第1のプロキシノードとして提供され、コンテナ・インスタンスproxy-container2は、第2のプロキシノードとして提供される。コンテナ技術が実装に使用される場合、プロキシノードは、物理マシンのカーネルを使用して実行することができ、複数のプロキシノードは、物理マシンのオペレーティングシステムを共有することができる。コンテナ技術を使用して、異なるプロキシノードを分離することができる。コンテナ化されたプロキシノードは、仮想化環境で実行されてもよく、例えば、仮想マシンで実行されてもよく、またはコンテナ化されたプロキシノードは、物理マシンで直接実行されてもよい。
例えば、仮想化デバイスはPodであってもよい。Podは、コンテナ化されたアプリケーションを配備、管理、およびオーケストレーションするためのKubernetes(Kubernetesは、Googleのオープンソースのコンテナオーケストレーションエンジンであり、K8である。)の基本単位である。Podは、1つまたは複数の容器を含み得る。一般に、同じPod内のコンテナは、同じホスト上に配備される。したがって、同じPod内のコンテナは、ホストを介して互いに通信することができ、ホストのストレージリソースおよびネットワークリソースを共有することができる。Podは、第1のプロキシノードまたは第2のプロキシノードとして構成されてもよい。例えば、具体的には、サービスとしてのコンテナ(container as a service、CaaS、これはコンテナベースのPaaSサービスである。)を指示してPodを作成することができ、Podは、第1のプロキシノードまたは第2のプロキシノードとして提供される。
もちろん、プロキシノードは、代替的に、本明細書では1つずつ列挙されていない別の仮想化デバイスであってもよい。
いくつかの可能な実施形態では、プロキシノードは、代替的に、汎用プロセッサによって実装されてもよい。例えば、汎用プロセッサの形態はチップであってもよい。具体的には、第1のプロキシノードまたは第2のプロキシノードを実現する汎用プロセッサは、処理回路と、処理回路に内部的に接続され、処理回路と通信する入力インターフェースおよび出力インターフェースとを含む。処理回路は、入力インターフェースを介して前述の方法実施形態におけるパケット生成ステップを実行するように構成される。処理回路は、入力インターフェースを介して前述の方法実施形態における受信ステップを実行するように構成される。処理回路は、出力インターフェースを介して前述の方法実施形態における送信ステップを実行するように構成される。任意選択で、汎用プロセッサは、記憶媒体をさらに含んでもよい。処理回路は、記憶媒体を使用して前述の方法実施形態における記憶ステップを実行するように構成される。
可能な製品形態では、本出願の実施形態における第1のプロキシノードまたは第2のプロキシノードは、代替的に、1つまたは複数のフィールドプログラマブルゲートアレイ(field-programmable gate array、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))、半導体媒体(例えば、ソリッドステートドライブ)などであってもよい。
当業者は、実施形態のステップの全部または一部がハードウェア、または関連するハードウェアに命令するプログラムによって実施され得ることを理解し得る。プログラムは、コンピュータ可読記憶媒体に記憶されてもよい。記憶媒体は、読み出し専用メモリ、磁気ディスク、または光ディスクなどであってもよい。前述の説明は、本出願の任意選択の実施形態にすぎず、本出願を限定することを意図するものではない。この出願の原理から逸脱することなく成される修正、同等の置換、改良等はこの出願の保護範囲内に入るものとする。