本出願は、長ったらしいセグメント識別子リストのためにネットワーク伝送効率及び処理効率が低下するという技術的問題を解決するために、パケット、デバイス、及びシステムを転送するための方法を提供する。
第1の態様によれば、本出願は、パケット処理方法を提供する。方法は、セグメント・ルーティングSRネットワークに適用され、方法は、パケットを受信することであって、パケットのパケット・ヘッダは、宛先アドレス・フィールドと、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することと、第1の識別子を宛先アドレス・フィールドにコピーすることと、を含む。
方法では、新たに追加された第1のポインタがパケット・ヘッダにセットされ、セグメント・レフト(segment left、SL)ポインタ、すなわち第2のポインタと二次元ポインタを一緒に形成して、SIDリスト内で圧縮セグメント識別子(Compressed SID、C-SID)の位置を示す。したがって、パケット長さが小さくなり、ネットワークの伝送効率と処理効率が改善する。
第1の態様を参照すると、第1の態様の第1の可能な実装において、リストが、逐次的に配置された複数の識別子を含むことは、具体的には、リストが少なくとも1つの逐次的に配置された要素を含むことである。少なくとも1つの要素は、第1の要素を含み、第1の要素は、複数の識別子のうちの少なくとも2つの逐次的に配置された識別子を含み、第1の識別子は、少なくとも2つの識別子のうちの1つである。第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示すことは、具体的には、第2のポインタの値が、リスト内の第1の要素の位置を決定するために使用され、第1のポインタの値が、第1の要素における第1の識別子の位置を決定するために使用される。
方法では、SIDリストが生成されるときに、長さが128ビットのSIDの代わりにC-SIDがセグメントを示すために使用される。したがって、C-SIDの数が他のセグメントのSIDの数と同じである2つのセグメントに対して、C-SIDを含むSIDリストの長さは、SIDを含むSIDリストの長さよりもはるかに小さい。したがって、パケット長さが小さくなり、ネットワークの伝送効率と処理効率が改善する。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第2の可能な実装において、第1のポインタが、少なくとも2つの識別子のうちの最初の識別子に含まれる。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第3の可能な実装において、第1のポインタの値が、第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第1のポインタの値が、第1の要素における第2の識別子の位置を示すことである。第2の識別子が、複数の識別子のうちの第1の識別子の前の識別子である。第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することは、パケットのパケット・ヘッダ第1のポインタの値を変更して、第1のポインタの修正された値が、第1の要素における第1の識別子の位置を示すことを可能にすることと、第1のポインタの修正された値及び第2のポインタの値に基づいて、第1の識別子を決定することと、を含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第4の可能な実装において、第1のポインタの値が、第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第1のポインタの値が、第1の要素における第1の識別子の位置を示すことである。第1の識別子を宛先アドレス・フィールドにコピーした後、方法は、パケットのパケット・ヘッダ内の第1のポインタの値を修正して、第1のポインタの修正された値が、第1の要素における第2の識別子の位置を示すことを可能にすることであって、第2の識別子が、少なくとも2つの識別子における第1の識別子の後の識別子である、ことをさらに含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第5の可能な実装において、第2のポインタの値が、リスト内の第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第2のポインタの値が、リスト内の少なくとも1つの要素のうちの第2の要素の位置を示す。
第2の要素は、少なくとも1つの要素のうちの第1の要素の前の要素である。第1のポインタの値が、第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第1のポインタの値が、第2の要素における第2の識別子の位置を示す。第2の識別子が、複数の識別子のうちの第1の識別子の前の識別子であり、第2の要素が、複数の識別子のうちの少なくとも1つの識別子を含み、少なくとも1つの識別子が、逐次的に配置され、第2の識別子が、少なくとも1つの識別子のうちの1つであり、宛先アドレス・フィールドは、第2の識別子を含む。第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することは、第2の識別子が少なくとも1つの識別子のうちの最後の識別子であることを決定することと、パケットのパケット・ヘッダ内の第2のポインタの値を修正して、第2のポインタの修正された値が、リスト内の第1の要素の位置を示すことを可能にすることと、パケットのパケット・ヘッダ内の第1のポインタの値を修正して、第1のポインタの修正された値が、第1の要素における第1の識別子の位置を示すことを可能にすることと、第1のポインタの修正された値及び第2のポインタの修正された値に基づいて、第1の識別子を決定することと、を含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第6の可能な実装において、第2のポインタの値が、リスト内の第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第2のポインタの値が、リスト内の第1の要素の位置を示す。第1のポインタの値が、第1の要素における第1の識別子の位置を決定するために使用されることは、具体的には、第1のポインタの値が、第1の要素における第1の識別子の位置を示す。第1の識別子を宛先アドレス・フィールドにコピーした後、方法は、第1の識別子が少なくとも2つの識別子のうちの最後の識別子であることを決定することと、パケットのパケット・ヘッダ内の第2のポインタの値を修正して、第2のポインタの修正された値がリスト内の第2の要素の位置を示すことを可能にすることであって、第2の要素が、少なくとも1つの要素のうちの第1の要素の後の要素であることと、パケットのパケット・ヘッダ内の第1のポインタの値を修正して、第1のポインタの修正された値が、第2の要素における第2の識別子の位置を示すことを可能にすることであって、第2の識別子が、複数の識別子のうちの第1の識別子の後の識別子であり、第2の要素が、第2の識別子を含む、ことと、をさらに含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第7の可能な実装において、複数のセグメントが、複数のセグメント識別子に1対1でマッピングされ、複数の識別子が、複数のセグメント識別子に1対1でマッピングされ、複数のセグメント識別子の各々が、第1の部分及び第2の部分を含み、第1の部分が、第2の部分の前にあり、複数のセグメント識別子のすべての第1の部分が、同じであり、複数の識別子の各々が、各識別子がマッピングされるセグメント識別子の第2の部分を含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第8の可能な実装において、宛先アドレス・フィールドが、第1の部分を含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の態様の第9の可能な実装において、要素の長さは、128ビット、64ビット、又は32ビットである。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、複数のセグメントが、複数のセグメント識別子に1対1でマッピングされ、複数の識別子が、複数のセグメント識別子に1対1でマッピングされ、複数のセグメント識別子の各々が、逐次的に配置された第1の部分、第2の部分及び第3の部分を含み、複数のセグメント識別子のすべての第1の部分が、同じであり、複数のセグメント識別子のすべての第3の部分が、同じであり、複数の識別子の各々が、各識別子がマッピングされるセグメント識別子の第2の部分を含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、第1の部分、第2の部分、及び第3の部分の全長は、128ビットである。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、方法は、宛先アドレス・フィールドの構造情報を受信することであって、構造情報が、宛先アドレス・フィールドにおける第1の識別子の追加位置を示す、ことをさらに含み、第1の識別子を宛先アドレス・フィールドにコピーすることは、構造情報に基づいて、第1の識別子を宛先アドレス・フィールドにおける第1の識別子の追加位置にコピーすることを含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、宛先アドレス・フィールドの構造情報を受信することは、制御パケットを受信することであって、制御パケットが、構造情報を含み、制御パケットが、インターメディエイト・システム・トゥー・インターメディエイトIS-ISプロトコル・パケット、オープン・ショーテスト・パス・ファーストOSPFプロトコル・パケット、又は境界ゲートウェイ・プロトコルBGPパケットである、ことを含む。
第1の態様又は第1の態様の可能な実装の任意の1つを参照すると、複数の識別子の各々の長さが、32ビット又は16ビットである。
第2の態様によれば、本出願は、パケット転送方法を提供する。パケット処理方法であって、方法は、セグメント・ルーティングSRネットワークに適用され、パケットを受信することと、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することであって、パケット・ヘッダが、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストが、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、パケット・ヘッダでカプセル化されたパケットを送信することと、を含む。
方法では、CLポインタがパケット・ヘッダ内にセットされ、SLポインタと二次元ポインタを一緒に形成して、SIDリスト内のC-SIDの位置を示す。したがって、パケット長さが小さくなり、ネットワークの伝送効率と処理効率が改善する。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、複数のセグメントが、複数のセグメント識別子に1対1でマッピングされ、複数の識別子が、複数のセグメント識別子に1対1でマッピングされ、複数のセグメント識別子の各々が、第1の部分及び第2の部分を含み、第1の部分が、第2の部分の前にあり、複数のセグメント識別子のすべての第1の部分が、同じであり、複数の識別子の各々が、各識別子がマッピングされるセグメント識別子の第2の部分を含む。
方法では、セグメント識別子リストが生成されるときに、長さが128ビットのSIDの代わりに、圧縮セグメント識別子がセグメントを示すために使用され、複数のセグメントに対応する複数の圧縮セグメント識別子が、長さが128ビットであり、かつSLポインタがセグメント識別子リストにおいて指し示す要素に収容され得るようにする。したがって、パケット長さが小さくなり、ネットワークの伝送効率と処理効率が改善する。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、パケット・ヘッダを生成することは、複数のセグメントうちの各セグメントがマッピングされるセグメント識別子の第2の部分を、各セグメントがマッピングされる識別子として使用して、リストを作成することと、リストに基づいてパケット・ヘッダを生成することと、を含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第3の可能な実装において、パケット・ヘッダを生成することは、リストを受信することであって、リスト内の複数の識別子の各々が、各識別子がマッピングされるセグメントがマッピングされるセグメント識別子の第2の部分を含む、ことを含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第4の可能な実装において、第1の部分の長さが、Xビットであり、Xが、整数であり、Xが、1以上128未満であり、複数の識別子の各々の長さが、128-Xビットである。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第5の可能な実装において、リストが、第1の部分を含まない。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第6の可能な実装において、パケット・ヘッダが、宛先アドレス・フィールドをさらに含み、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することは、第1の部分を宛先アドレス・フィールドに追加することと、複数の識別子のうちの最初の識別子を宛先アドレス・フィールドにコピーすることと、をさらに含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第7の可能な実装において、リストが、逐次的に配置された複数の識別子を含むことは、具体的には、リストが、逐次的に配置された少なくとも1つの要素を含むことである。少なくとも1つの要素のうちの第1の要素が、複数の識別子のうちの逐次的に配置された少なくとも2つの識別子を含み、第1の識別子が、少なくとも2つの識別子のうちの1つである。第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示すことは、具体的には、第2のポインタの値が、リスト内の第1の要素の位置を示し、第1のポインタの値が、第1の要素における第1の識別子の位置を示す。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第8の可能な実装において、第1のポインタが、少なくとも2つの識別子のうちの最初の識別子に含まれる。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第9の可能な実装において、リストが、第1のセグメント識別子を含み、第1のセグメント識別子が、複数の識別子のうちの最初の識別子の前にあり、第1のセグメント識別子が、SRネットワークでのセグメントにマッピングされ、第1のセグメント識別子の長さが、128ビットである。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第10の可能な実装において、第1のセグメント識別子が、複数の識別子における最初の識別子に隣接しており、第1のセグメント識別子が、開始表示を含み、開始表示が、リスト内の第1のセグメント識別子の後の識別子が、複数の識別子のうちの最初の識別子であることを示すために使用される。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第11の可能な実装において、第1のセグメント識別子が、機能フィールドと引数フィールドとを含み、機能フィールドが、開始表示を含み、引数フィールドが、第1のポインタと数表示とを含み、数表示が、複数の識別子の数を示すために使用される。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第12の可能な実装において、リストが、第2のセグメント識別子を含み、第2のセグメント識別子が、複数の識別子のうちの最後の識別子の後にあり、第2のセグメント識別子が、SRネットワークでのセグメントにマッピングされ、第2のセグメント識別子の長さが、128ビットである。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第2の態様の第13の可能な実装において、第2のセグメント識別子が、複数の識別子における最後の識別子に隣接しており、第2のセグメント識別子が、終了表示を含み、終了表示が、リスト内の第2のセグメント識別子の前の識別子が、複数の識別子のうちの最後の識別子であることを示すために使用される。
第2の態様を参照すると、第2の態様の第1の可能な実装において、複数のセグメントが、複数のセグメント識別子に1対1でマッピングされ、複数の識別子が、複数のセグメント識別子に1対1でマッピングされ、複数のセグメント識別子の各々が、逐次的に配置された第1の部分、第2の部分及び第3の部分を含み、複数のセグメント識別子のすべての第1の部分が、同じであり、複数のセグメント識別子のすべての第3の部分が、同じであり、複数の識別子の各々が、各識別子がマッピングされるセグメント識別子の第2の部分を含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、第1の部分、第2の部分、及び第3の部分の全長は、128ビットである。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、パケット・ヘッダが、宛先アドレス・フィールドをさらに含み、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することは、第1の部分及び第3の部分を宛先アドレス・フィールドに追加することと、複数の識別子のうちの最初の識別子を宛先アドレス・フィールドにコピーすることと、をさらに含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、構造情報を中間ネットワーク・デバイスに送信することであって、構造情報が、宛先アドレス・フィールドにおける第1の識別子の追加位置を示す、ことをさらに含む。
第2の態様又は第2の態様の可能な実装の任意の1つを参照すると、複数の識別子の各々の長さは、32ビット又は16ビットである。
第3の態様によれば、本出願は、第1の態様、又は第1の態様の可能な実装の任意の1つにおける方法を実行するためのネットワーク・デバイスを提供する。具体的には、ネットワーク・デバイスは、第1の態様、又は第1の態様の可能な実装の任意の1つにおける方法を実行するように構成されているユニットを含む。
第4の態様によれば、本出願は、第2の態様、又は第2の態様の可能な実装の任意の1つにおける方法を実行するためのネットワーク・デバイスを提供する。具体的には、ネットワーク・デバイスは、第2の態様、又は第2の態様の可能な実装の任意の1つにおける方法を実行するように構成されているユニットを含む。
第5の態様によれば、本出願は、ネットワーク・デバイスを提供する。ネットワーク・デバイスは、プロセッサ、ネットワーク・インターフェース、及びメモリを含む。ネットワーク・インターフェースは、トランシーバであってもよい。メモリは、プログラム・コードを記憶するように構成されてもよく、プロセッサは、メモリ内のプログラム・コードを呼び出して、ネットワーク・デバイスが第1の態様、又は第1の態様の可能な実装の任意の1つにおける方法を実行することを可能にするように構成されている。詳細は、ここでは再度説明しない。
第6の態様によれば、本出願は、ネットワーク・デバイスを提供する。ネットワーク・デバイスは、プロセッサ、ネットワーク・インターフェース、及びメモリを含む。ネットワーク・インターフェースは、トランシーバであってもよい。メモリは、プログラム・コードを記憶するように構成されてもよく、プロセッサは、メモリ内のプログラム・コードを呼び出して、ネットワーク・デバイスが第2の態様、又は第2の態様の可能な実装の任意の1つにおける方法を実行することを可能にするように構成されている。詳細は、ここでは再度説明しない。
第7の態様によれば、本出願は、ネットワーク・システムを提供する。ネットワーク・システムは、第3の態様で提供されるネットワーク・デバイスと、第4の態様で提供されるネットワーク・デバイスとを含むか、又は、ネットワーク・システムは、第5の態様で提供されるネットワーク・デバイスと、第6の態様で提供されるネットワーク・デバイスとを含む。
第8の態様によれば、本出願は、コンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は、命令を記憶する。命令がコンピュータで動作するときに、コンピュータは、前述の態様での方法を実行することが可能となる。
第9の態様によれば、本出願は、コンピュータ・プログラム命令を含むコンピュータ・プログラム製品を提供する。コンピュータ・プログラム製品がネットワーク・デバイスで動作するときに、ネットワーク・デバイスは、第1の態様、第2の態様、第1の態様の任意の可能な実装、又は第2の態様の任意の可能な実装において提供される方法を実行することが可能となる。
第9の態様によれば、本出願は、メモリ及びプロセッサを含むチップを提供する。メモリは、コンピュータ・プログラムを記憶するように構成されており、プロセッサは、メモリからコンピュータ・プログラムを呼び出し、コンピュータ・プログラムを動作させて、チップが、第1の態様、又は第1の態様の可能な実装の任意の1つにおける方法を実行することを可能にするように構成されている。代替的には、プロセッサは、メモリからコンピュータ・プログラムを呼び出し、コンピュータ・プログラムを動作させて、チップが、第2の態様、又は第2の態様の可能な実装の任意の1つにおける方法を実行することを可能にするように構成されている。
任意選択で、チップは、プロセッサのみを含む。プロセッサは、メモリに記憶されたコンピュータ・プログラムを読み出して実行するように構成されている。コンピュータ・プログラムが実行されるときに、チップは、第1の態様、若しくは第1の態様の可能な実装の任意の1つにおける方法を実行するか、又はチップは、第2の態様、又は第2態様の可能な実装の任意の1つにおける方法を実行する。
以下、添付の図面を参照して、本出願の実施形態を説明する。
図1は、本出願の一実施形態による可能なアプリケーション・シナリオの概略図である。シナリオは、SRネットワークが含む。SRネットワークは、ネットワーク・デバイスS、ネットワーク・デバイス1、ネットワーク・デバイス2、ネットワーク・デバイス3、ネットワーク・デバイス4、ネットワーク・デバイス5、ネットワーク・デバイス6、及びネットワーク・デバイス7を含む。ネットワーク・デバイスは、スイッチ、ルータ、又はフォワーダであってもよい。代替的には、ネットワーク・デバイスは仮想マシンであってもよい。ネットワーク・デバイスSは、ネットワーク・イングレス・デバイスであってもよい。ネットワークは、図1には示さないコントローラをさらに含んでもよい。コントローラは、パケットの転送パスに対応するSIDリストを生成し、SIDリストをネットワーク・イングレス・デバイスに送信してもよい。コントローラは、ネットワーク設定情報を含む制御パケットを、ネットワークで別のネットワーク・デバイスに送信してもよい。
SRネットワークでは、パケット処理プロセスは、複数のセグメントを含み、各セグメントは、パケットを処理するための命令又は命令セットである。各セグメントは対応するセグメント識別子、すなわちSIDを有する。セグメント識別子は、ノードセグメント識別子(node SID)と隣接セグメント識別子(adjacent SID)の2つのタイプを含む。図2Aは、SRv6ネットワークでのSIDのフォーマットを示す。図2Aに示すように、各SIDは、ロケータ(Locator)フィールド及び機能(Function)フィールドを含んでもよい。
SIDのロケータ・フィールドは、セグメントに含まれる命令又は命令セットを実行する特定のネットワーク・デバイスを特定するために使用される。ロケータ・フィールドは、プレフィックス(Prefix)部分とノードID(Node ID)部分を含む。SRv6ネットワーク・ドメイン(domain)において、すべてのネットワーク・デバイスのSIDのプレフィックス部分は同じである。SRv6ネットワーク・ドメインでは、各ネットワーク・デバイスのSIDのノードID部分が異なり、各ノードID部分が、ドメインにおいてネットワーク・デバイスを一意に決定するために使用される。特定のSIDの場合、SID内のノードID部分によって一意に決定されるネットワーク・デバイスは、SIDによって識別されるセグメントを実行するネットワーク・デバイスである。
SID内の機能フィールドは、セグメントに含まれる命令又は命令セットの特定のコンテンツを示すために使用される。言い換えると、機能フィールドは、SRv6ネットワークでの機能(Function)を示すために使用される。SRv6ネットワークでの機能は、引数にさらに関係してもよく、引数は、SID内の引数(Argument)フィールド(図2には示さず)を使用して示される。機能が引数に関係しないときに、SIDは、引数フィールドを含まなくてもよい。
一般に、SRv6ネットワークでのSIDの全長は128ビットである。ロケータ・フィールドと機能フィールドは別々に特定の長さになっており、ネットワーク・セッティングによって特定の長さが変わることがある。例えば、ロケータ・フィールドは48ビットで、機能フィールドは80ビットである。代替的には、ロケータ・フィールドは64ビットで、フィールドは64ビットである。代替的には、ロケータ・フィールドは48ビットで、機能フィールドは64ビットで、引数フィールドは16ビットである。
SIDリストは、複数のSIDを含む。図2Aは、SRv6ネットワークでのパケットのフォーマットを示す。図2Bに示すように、パケットのパケット・ヘッダはIPv6パケット・ヘッダ及びSRHを含む。IPv6パケット・ヘッダは、宛先アドレス(destination address、DA)フィールドを含む。SRHは、SIDリストを含み、SIDリストは、複数の逐次的に配置されたSIDを含む。SRHはさらに、セグメント・レフト(segments left、SL)ポインタを含み、SLポインタは、処理されるセグメントの残りの数を示すために使用される。具体的には、SLポインタの各値は、処理されるセグメントの残りの特定の数に対応する。例えば、SLポインタの値が3であるときに、それは、処理されるセグメントの残りの数が4であることを示し、SLポインタが、現在処理されているSID、すなわち、最後から3つ目のSIDを指し示すと理解されてもよい。SLポインタの値が0であるときに、それは、処理されるセグメントの残りの数が1であることを示し、SLポインタが、現在処理されているSID、すなわち、最後のSIDを指し示すと理解されてもよい。SLポインタに基づいて現在処理されているSIDを決定した後、ネットワーク・デバイスは、SIDをIPv6パケット・ヘッダ内のDAフィールドにコピーし、DAフィールドのコンテンツに基づいてパケットを処理する、例えば、パケットを転送する。パケット処理中、セグメントが実行されるたびにSLポインタの値が更新される。各更新の後、SLポインタがSIDリスト内で指し示す場所は、1つのSIDの長さ、すなわち128ビットオフセットされる。SIDリスト内の複数のSIDを使用して示された複数のセグメントが逐次的に実行されるので、SLポインタの値が連続的に更新されて、SLポインタが常に現在処理されているSIDを指示すことを保証する。
図1に示すアプリケーション・シナリオを参照して、説明のために例が使用される。図1に示すSRネットワークを使用してパケットが転送され得るときに、パケットの転送経路は、ネットワーク・デバイスSがネットワーク・デバイス1にパケットを送信し、ネットワーク・デバイス2、ネットワーク・デバイス3、ネットワーク・デバイス4、ネットワーク・デバイス5、ネットワーク・デバイス6の逐次的な通過に成功した後、ネットワーク・デバイス7に到達するものである。ヘッド・ノード、すなわち、ネットワーク・デバイスSに加えて、転送経路は、合計7つのネットワーク・デバイス、すなわち、ネットワーク・デバイス1~ネットワーク・デバイス7をさらに含む。各ネットワーク・デバイスはパケットを転送する。例えば、各ネットワーク・デバイスでの転送処理挙動は、1セグメントに対応する。このようにして、パケット転送プロセス全体を示すSIDリストは、7つのSIDを含む。SIDリストの長さは128バイトであり、SIDリストの長さは112バイトである。その結果、パケット長さが大きくなり、ネットワークの伝送効率と処理効率が低下する。
本出願の一実施形態は、この方法に基づくパケット処理方法、及びデバイス並びにシステムを提供する。方法、デバイス、及びシステムは、同一の発明概念に基づく。方法、デバイス、及びシステムによる問題を解決する原理は同様である。したがって、方法、装置及びシステムの実施形態については、相互に参照し、同一又は同様のコンテンツについては、再度説明しない。
本発明の一実施形態は、パケット処理方法を提供する。方法は、SRネットワークに適用され、ネットワーク・デバイス301及びネットワーク・デバイス302に関係する。ネットワーク・デバイス301は、ネットワーク・イングレス・デバイス、例えば、図1に示すネットワーク・デバイスSであってもよく、SIDリストをパケットにカプセル化するように構成されている。ネットワーク・デバイス302は、ネットワーク内の転送デバイス、例えば、図1に示すネットワーク・デバイス1、ネットワーク・デバイス2、ネットワーク・デバイス3、ネットワーク・デバイス4、ネットワーク・デバイス5、ネットワーク・デバイス6、又はネットワーク・デバイス7であってもよく、SIDリストに基づいてパケットを処理するように構成されている。本方法では、SIDリストが生成されるときに、圧縮セグメント識別子(Compressed SID、C-SID)が使用されて、セグメントを示すために長さが128ビットのSIDを置き換える。CLポインタは、SLポインタと一緒に二次元ポインタを形成するために、パケット・ヘッダ内にセットされ、SIDリストにおいてC-SIDの位置を示す。したがって、1つのセグメントのC-SIDの数が他のセグメントのSIDの数と同じである2つのセグメントに対して、C-SIDを含むSIDリストの長さは、SIDを含むSIDリストの長さよりもはるかに小さい。したがって、パケット長さが小さくなり、ネットワークの伝送効率と処理効率が改善する。図3は、本方法の手順を示し、本方法は、具体的には、以下のステップを含む。
S310:ネットワーク・デバイス301は、パケットを受信する。
ネットワーク・イングレス・デバイスとして、ネットワーク・デバイス301は、ホストによって送信されたパケットを受信してもよい。パケットはサービス・パケットであってもよい。ホストは、端末デバイス、例えば、パーソナル・コンピュータ、携帯電話、又はタブレット・コンピュータであってもよい。
S315:ネットワーク・デバイス301は、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化し、パケット・ヘッダが、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含む。リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す。
SRv6ネットワークでは、パケット・ヘッダは、IPv6パケット・ヘッダとSRHを含み、リストは、SRH内のSIDリストである。受信したパケットに対して、ネットワーク・デバイス301は、SIDリストを含むパケット・ヘッダを生成し、パケット・ヘッダを、受信したパケットにカプセル化して、パケットを処理する。
SRネットワークでは、パケットを処理するために使われる各セグメントは、特定のセグメント識別子、すなわちSIDを有する。言い換えると、パケットを処理するために使用される複数のセグメントは、複数のSIDに1対1でマッピングされる。前述の説明を参照すると、各SIDは、ロケータ・フィールド及び機能フィールドを含むことができ、ロケータ・フィールドは、プレフィックス部分及びノードID部分を含む。ロケータ・フィールドと機能フィールドの長さの合計は128ビットかもしれません。SRv6ネットワーク・ドメインにおいて、すべてのネットワーク・デバイスのSIDのプレフィックス部分は同じである。各ネットワーク・デバイスのSIDのノードID部分は異なり、各ノードID部分が、ドメインにおいてネットワーク・デバイスを一意に決定するために使用される。言い換えると、各SIDは、2つの部分に分割されてもよい。第1の部分は、プレフィックス部分を含み、第2の部分は、ノードID部分と機能フィールドを含む。すべてのSIDの第1の部分は、同じである。しかしながら、各SIDの第2の部分は異なる。第1の部分と第2の部分の長さの合計は、128ビットである。したがって、SIDリストの長さを小さくするために、第1の部分が省略されてもよい。言い換えると、SID内のロケータ・フィールドのプレフィックス部分は省略される。図4Aに示すように、第2の部分、すなわち、ノードID部分及び機能フィールドは、圧縮されたセグメント識別子、すなわち、C-SIDとして使用されてもよい。したがって、SIDリストは、複数の逐次的に配置されたC-SIDを含み、各C-SIDは、SRネットワークでの1つのセグメントにマッピングされる。
図1に示すアプリケーション・シナリオを参照すると、ネットワーク・デバイス1のSIDは、A1::0001:1111であり、SIDの長さは128ビットであり、「::」はすべて0バイトを示す。A1::0001は、長さが112ビットのロケータ・フィールドであり、A1/96は、プレフィックス部分であり、「/96」は、96ビットのマスクを示し、0001は、長さが16ビットのノードID部分である。1111は、長さが16ビットの機能フィールドである。SID内の第1の部分はA1であり、SID内の第2の部分は、0001:1111である。第2の部分は、C-SIDとして使用される。言い換えると、C-SIDは、長さが32ビットの0001:1111である。
同様に、ネットワーク・デバイス2、ネットワーク・デバイス3、ネットワーク・デバイス4、ネットワーク・デバイス5、ネットワーク・デバイス6、又はネットワーク・デバイス7のSIDは、それぞれ、A1::0002:2222、A1::0003:3333、A1::0004:4444、A1::0005:5555、A1::0006:6666、及びA1::0007:7777としてもよい。ネットワーク・デバイスのC-SIDは、0002:2222、0003:3333、0004:4444、0005:5555、0006:6666、及び0007:7777としてもよい。各C-SIDの長さは、32ビットである。
前述の説明を参照すると、C-IDは、SID内のノードID部分及び機能フィールドを含む。C-SIDの長さは、SID内のノードID部分の長さと機能フィールドの長さの和によって決定される。具体的には、C-SIDの長さは、SID内のノードID部分の長さと機能フィールドの長さの和と同じである。例えば、C-SIDの長さは、32ビットであることがあるか、又はC-SIDの長さは、16ビットであることがある。
任意選択で、ネットワーク計画プロセスにおいて、各SIDは、3つの部分に分割されてもよい。第1の部分は、プレフィックス部分を含み、第2の部分は、ノードID部分と機能フィールドを含み、第3の部分は、パディング(padding)コンテンツを含む。すべてのSIDの第3の部分は同じであり、同じコンテンツ、例えば、すべて0で埋められる。第1の部分、第2の部分、及び第3の部分の長さの和は128ビットである。したがって、第1の部分と第2の部分の長さの和は、128ビット未満である。図4Dに示すように、SIDを使用してC-SIDが生成されるときに、第1の部分及び第3の部分は省略され、第2の部分は依然としてC-SIDとして使用される。図1に示すアプリケーション・シナリオを参照すると、ネットワーク・デバイス1のSIDは、A1::0001:1111::であり、SIDの長さは128ビットであり、「::」はすべて0バイトを示す。A1::0001は、長さが64ビットのロケータ・フィールドであり、A1/48は、プレフィックス部分であり、「/48」は、48ビットのマスクを示し、0001は、長さが16ビットのノードID部分である。1111は、長さが16ビットの機能フィールドである。言い換えると、SIDの第1の部分は、長さが48ビットのA1を含み、SIDの第2の部分は、長さが32ビットの0001:1111を含み、第3の部分は、長さが48ビットのすべて0の部分を含む。第2の部分は、C-SIDとして使用される。言い換えると、C-SIDは、長さが32ビットの0001:1111である。実際のネットワーク・アプリケーションでは、いくつかのデバイスは、128ビットデータを一度に処理できないことがある。例えば、いくつかのASICチップは、一度に80ビットのデータしか処理できない可能性がある。この場合、ネットワーク計画プロセスにおいて、各SIDは、第3の部分にパディング・コンテンツを含むようにセットされる。ネットワーク処理プロセスにおいて、DAフィールドにおける第3の部分は、処理されないことがある。第1の部分と第2の部分だけが処理されるので、処理される必要のあるデータの長さが小さくなり、ネットワーク・デバイスの適応範囲が拡張される。
図4Bは、パケット・ヘッダでカプセル化されたパケットの構造を示す。パケット・ヘッダは、IPv6パケット・ヘッダとSRHを含み、SRHは、SIDリストを含む。図1に示すアプリケーション・シナリオを参照すると、パケットの転送経路は、ネットワーク・デバイスSがネットワーク・デバイス1にパケットを送信し、パケットが、ネットワーク・デバイス2、ネットワーク・デバイス3、ネットワーク・デバイス4、ネットワーク・デバイス5、及びネットワーク・デバイス6の逐次的な通過に成功した後、ネットワーク・デバイス7に到達するものである。転送パスに対応するSIDリストを図4Bに示し、これは、7つのC-SIDを含む。各C-SIDリストの長さは、32ビットであり、7つのC-SIDの長さは、224バイトである。SIDリストの長さが大幅に小さくなる。これは、ネットワークの伝送効率と処理効率を改善する。
各ネットワーク・デバイスのC-SIDは、拡張制御プレーン・プロトコルを使用することによって、広告されてもよい。SRv6ネットワーク・ドメインにおけるSIDのプレフィックス部分は、拡張制御プレーン・プロトコルを使用することによって広告されてもよい。制御プレーン・プロトコルは、例えば、内部ゲートウェイ・プロトコル(Interior Gateway Protocol、IGP)、境界ゲートウェイ・プロトコル(Border Gateway Protocol、BGP)、境界ゲートウェイ・プロトコル・リンク状態(Border Gateway Protocol link state、BGP-LS)、又はパス計算要素通信プロトコル(Path Computation Element Communication Protocol、PCEP)であってもよい。
C-SIDを含むSIDリストは、コントローラによって生成されてもよいし、ネットワーク・イングレス・デバイスによって生成されてもよい。例えば、コントローラは、計算によってパケットの転送パスを取得し、転送パスに対応するSIDリストを生成する。SIDリストはC-SIDを含み、コントローラはSIDリストをネットワーク・イングレス・デバイスに送信する。代替的には、ネットワーク・イングレス・デバイスは、計算によってパケットの転送パスを取得し、転送パスに対応するSIDリストを生成する。SIDリストは、C-SIDを含む。代替的には、コントローラは、計算によってパケットの転送パスを取得し、転送パスに対応するSIDリストを生成する。SIDリストはSIDが含むが、C-SIDを含まず、コントローラは、SIDリストをネットワーク・イングレス・デバイスに送信する。ネットワーク・イングレス・デバイスは、受信したSIDリストに基づいて新しいSIDリストを生成する。新しいSIDリストは、C-SIDを含む。
SIDリストを送信するために使用される制御プレーン・プロトコルは、例えば、境界ゲートウェイ・プロトコル(Border Gateway Protocol、BGP)又はパス計算要素通信プロトコル(Path Computation Element Communication Protocol、PCEP)であってもよい。制御プレーン・プロトコルは、C-SIDを含むSIDリストを送信するために拡張されてもよい。制御プレーン・プロトコルの新しい属性は、SIDを含むSIDリストが、C-SIDを含むSIDリストに変換されることがあること、又はSIDを含むSIDリストが、C-SIDを含むSIDリストに変換されるべきことを識別するために拡張されてもよい。例えば、コントローラは、計算によってパケットの転送パスを取得した後、転送パスに対応するSIDリストを生成する。SIDリストはSIDが含むが、C-SIDを含まず、コントローラは、SIDリストをネットワーク・イングレス・デバイスに送信する。制御プレーン・プロトコルの拡張された新しい属性は、SIDリストがC-SIDを含むSIDリストに変換されることがあることを識別するために使用される。ネットワーク・イングレス・デバイスは、属性の表示に基づいて、受信したSIDリストに基づいて新しいSIDリストを生成する。新しいSIDリストは、C-SIDを含む。
任意選択で、ネットワーク・デバイス301は、制御プレーン・プロトコルを使用することによって、ネットワーク・デバイス301の能力属性を別のネットワーク・デバイスに広告してもよい。能力属性は、ネットワーク・デバイス301が、C-SIDと互換性があることを示す、例えば、セグメントにマッピングされたC-SIDを広告し、C-SIDを含むSIDリストを生成し、C-SIDを含むSIDリストをパケットにカプセル化し、C-SIDに基づいてパケットを処理することを示すために使用される。制御プレーン・プロトコルは、例えば、内部ゲートウェイ・プロトコル(Interior Gateway Protocol、IGP)、境界ゲートウェイ・プロトコル(Border Gateway Protocol、BGP)、又はパス計算要素通信プロトコル(Path Computation Element Communication Protocol、PCEP)であってもよい。一例では、ネットワーク・デバイス301は、SIDの省略された第1の部分をDAフィールドに追加する。前述の分析を参照すると、SIDリスト内の複数のC-SIDは、複数のセグメントに1対1でマッピングされる。さらに、複数のセグメントは、複数のSIDに1対1でマッピングされる。SIDリストの長さを小さくするために、SID内の第1の部分、すなわちSID内のロケータ・フィールドのプレフィックス部分は省略される。SID内の第2の部分、すなわちノードID部分と機能フィールドのみがC-SIDとして使用され、SIDリストに記憶される。任意選択で、SIDリストは、C-SIDのみを含むことがあるが、C-SIDに対応するプレフィックス部分は含まない。ネットワーク・デバイス301は、SID内の第1の部分、すなわち、ロケータ・フィールドのプレフィックス部分を宛先アドレス・フィールドに追加し、ネットワーク・デバイス301は、SIDリスト内の複数のC-SIDのうちの現在処理されているC-SIDをDAフィールドにコピーする。DAフィールド内の第1の部分及び現在処理されているC-SIDは、現在処理されているSIDを形成し、ネットワーク・デバイスが、依然としてDAフィールド内のコンテンツに基づいてパケットを処理し得るようにする。例えば、図4Bを参照のこと。ネットワーク・デバイス301は、複数のC-SIDのうちの最初のC-SID、すなわちC-SID1をDAフィールドにコピーする。DAフィールド内のプレフィックス部分とC-SID1は、複数のSIDのうちの最初のSIDを形成する。ネットワーク・デバイス301は、例えば、最初のSIDに基づいてパケットを処理し、パケットを転送する。
ネットワークでのSIDがパディング・コンテンツを含む第3の部分を含むときに、ネットワーク・デバイス301は、SID内の省略された第3の部分をDAフィールドにさらに追加する。追加的に、第1の部分、第2の部分、及び第3の部分は、SID内の第1の部分、第2の部分、及び第3の部分の位置に基づいて、DAフィールドに逐次的に配置される。したがって、ネットワーク・デバイス301は、DAフィールドの先頭に第1の部分を追加する。第1の部分の最初のビットは、DAフィールドの最初のビットと位置合わせされる。ネットワーク・デバイス301は、第3の部分をDAフィールドの終了に追加する。第1の部分の最後のビットは、DAフィールドの最後のビットと位置合わせされる。DAフィールド内の第1の部分、現在処理されているC-SID、及び第3の部分は、現在処理されているSIDを形成する。したがって、パケットを受信するときに、パケット転送経路での後のネットワーク・デバイスは、依然としてDAフィールド内のコンテンツに基づいてパケットを処理してもよい。任意選択で、ネットワークでのSIDがパディング・コンテンツを含む第3の部分を含むときに、ネットワーク・デバイス301又はネットワークでのコントローラは、制御プレーン・プロトコルを使用することによって、他のネットワーク・デバイスにDAフィールドの構造情報を広告してもよく、他のネットワーク・デバイスがDAフィールド内のコンテンツを正しく解析できるようにする。構造情報は、DAフィールド内のC-SIDの追加位置を示す。言い換えると、構造情報は、DAフィールド内のSID内の第2の部分の追加位置を示す。前述の説明を参照すると、第1の部分、第2の部分、及び第3の部分は、SID内の第1の部分、第2の部分、及び第3の部分の位置に基づいてDAフィールドに逐次的に配置され、構造情報は、SIDにおいてSID内の第2の部分の位置を示す。例えば、構造情報は、第1の部分の長さ及び第2の部分の長さを含んでもよい。言い換えると、プレフィックス部分の長さとC-SIDの長さが広告される。代替的には、構造情報は、第1の部分の長さ及び第3の部分の長さを含んでもよいし、構造情報は、第1の部分の長さ、第2の部分の長さ、第3の部分の長さなどを含んでもよい。構造情報を通知するために使用される制御プレーン・プロトコルは、インターメディエイト・システム・トゥー・インターメディエイト・システム(Intermediate system to intermediate system、IS-IS)プロトコル、オープン・ショーテスト・パス・ファースト(Open Shortest Path First、OSPF)プロトコル、境界ゲートウェイ・プロトコル(Border Gateway Protocol, BGP)プロトコルなどであってもよい。別のネットワーク・デバイスがDAフィールド内のコンテンツを解析する特定のプロセスについては、以下の説明を参照のこと。
前述の説明を参照すると、SRHは、処理される残りのセグメントの数を示すために使用されるSLポインタを含む。各更新の後、SLポインタがSIDリスト内で指し示す場所は、1つのSIDの長さ、すなわち128ビットオフセットされる。C-SIDが使用されるときに、C-SIDの長さはSIDの長さより小さいので、1つのSIDを記憶するための元の空間は、複数のC-SIDを記憶することができる。したがって、各更新の後、SIDリスト内でSLポインタが指し示す位置が複数のC-SIDの長さによってオフセットされ、各C-SIDが正確に位置することができない。
本出願の本実施形態において、SIDリスト内の空間は複数の要素に分割され、各更新の後、SLポインタは異なる要素を指し示す。さらに、新しいポインタが、各要素において現在処理されているC-SIDを決定するためにセットされてもよい。新しいポインタは、CLポインタと呼ばれてもよく、CLポインタとSLポインタは二次元ポインタを形成する。SLポインタの値は、SIDリスト内の現在処理されている要素の位置を決定するために使用され、CLポインタの値は、要素において現在処理されているC-SIDの位置を決定するために使用される。したがって、SIDリスト内の現在処理されているC-SIDの位置は、SLポインタの値及びCLポインタの値に基づいて決定されてもよい。言い換えると、SLポインタの値とCLポインタの値は、SIDリスト内のC-SIDの位置を一緒に示す。
一例では、各SIDによって占有される空間は、1つの要素に分割されてもよい。具体的には、各要素の長さは128ビットであり、各更新の後も、SIDリスト内のSLポインタが指し示す位置は、依然として128ビットずつオフセットされる。図4Bに示すパケットのパケット・ヘッダ内のSIDリストを参照すると、SIDリスト内の第1の要素は4つのC-SIDを含み、第2の要素は3つのC-SIDを含む。したがって、7つのC-SIDが、合計でSIDリスト内の2つの要素を占める。
ネットワーク・デバイスによるSIDリスト内のC-SIDのDAフィールドへのコピーの動作と共に、CLポインタの値も更新される必要があり、CLポインタの値が要素において現在処理されているC-SIDの位置を決定するために常に使用されることを保証する。
CLポインタが更新される方式は、CLポインタの初期値に関連する。図4Bに示すように、SIDリスト内の第1の要素が4つのC-SIDを含むときに、CLポインタの初期値は0であってもよく、要素において最初のC-SIDを示すために使用される。CLポインタの値は、各更新で1ずつ増加する。具体的には、CLポインタの値は、1、2、及び3に逐次的に更新され、要素における2番目のC-SID、3番目のC-SID、及び4番目のC-SIDを示すために逐次的に使用される。同様に、CLポインタの初期値が3であり、要素において最初のC-SIDを示すために使用される場合、CLポインタの値は、更新のたびに1ずつ減少する。具体的には、CLポインタの値は、2、1、及び0に逐次的に更新され、要素における2番目のC-SID、3番目のC-SID、及び4番目のC-SIDを示すために逐次的に使用される。
CLポインタの値が更新されるアクションと、C-SIDがDAフィールドにコピーされるアクションの間に、2つの実行シーケンスがある。第1のシーケンスは、CLポインタの値が更新され、次いで、C-SIDがコピーされることである。第2のシーケンスは、C-SIDがコピーされ、次いで、CLポインタの値が更新されることである。前述の2つの実行シーケンスは、ネットワーク・セッティングによって選択されてもよい。実行シーケンスが選択された後、ネットワークでのすべてのネットワーク・デバイスは、実行シーケンスに従って前述の2つのアクションを実行して、CLポインタの値が、要素において現在処理されているC-SIDの位置を決定するために常に使用されることを保証する。
CLポインタは、パケット・ヘッダ内の特定の位置を有する。一例では、CLポインタはC-SIDに含まれてもよい。図4Cは、C-SIDの構造を示す。図4Cを参照する。C-SID内のフィールドの最後の部分は分割され、CLポインタの候補フィールドとして使用されてもよい。候補フィールドは、特定の長さ、例えば、3ビットにセットされてもよい。候補フィールドの値は、特定の初期値、例えば、すべての0にセットされてもよい。SIDリスト内に複数の逐次的に配置されたC-SIDがあるときに、特定のC-SID内の候補フィールドが、CLポインタとして、SIDリスト内の各要素から選択されてもよい。特定のC-SID内の候補フィールドの値が、要素において現在処理されているC-SIDの位置を決定するために使用される。要素における別のC-SIDの候補フィールドの値は、初期値のままである。好ましくは、特定のC-SIDは、各要素におけるエッジにあるC-SIDである。例えば、特定のC-SIDは、要素における最初のC-SID、すなわち、図4Bに示すC-SID1であり、CLポインタを含んでもよい。イタリック体のフォントは、これが、任意選択の実装であることを示す。最初のC-SIDの候補フィールドがCLポインタとして使用され、CLポインタの値が、要素において現在処理されているC-SIDの位置に基づいて修正される。要素における別のC-SIDの候補フィールドの値は、初期値として残り、例えばすべて0である。例えば、特定のC-SIDは、代替的には、要素における最後のC-SIDであってもよい。
一例では、CLポインタは、分割によってSRHから取得されるフィールドであってもよい。これは、図4Bには示さない。例えば、CLポインタは、分割によってフラグ(Flag)フィールド、最後のエントリ(Last Entry)フィールド、又はタグ(Tag)フィールドから取得される部分であってもよい。CLポインタは、特定の長さ、例えば、3ビットにセットされてもよい。
一例では、CLポインタは、分割によってIPv6パケット・ヘッダ内のDAフィールドから取得される部分であってもよい。具体的には、CLポインタはDAフィールドの最後の部分、すなわちDAフィールド内のC-SIDの最後の部分に位置する。図4Bに示すように、イタリック体のフォントは、これが、任意選択の実装であることを示す。CLポインタは、特定の長さ、例えば、3ビットにセットされてもよい。DAフィールド内のCLポインタの値は、要素において現在処理されているC-SIDの位置に基づいて修正される。この場合、C-SIDのフォーマットは、依然として前述の候補フィールドを含み、候補フィールドの長さは、CLポインタの長さと同じである。しかしながら、SIDリスト内のすべてのC-SIDの候補フィールドの初期値は変わらない。
前述の説明を参照すると、ネットワーク・デバイス301は、ネットワーク・デバイス301がC-SIDを処理できる別のネットワーク・デバイスを広告してもよい。ネットワークでは、いくつかのネットワーク・デバイスは、C-SIDと互換性を有することができない。C-SIDと互換性を有することができないネットワーク・デバイスがパケットの転送パスに位置するときに、ネットワーク・デバイスはまた、セグメントに基づいてパケットを処理する。ネットワーク・デバイスは、C-SIDと互換性を有することができず、セグメントにマッピングされたC-SIDを広告せず、セグメントにマッピングされたSIDのみを広告する。したがって、転送パスに対応するSIDリストは、セグメントにマッピングされたSIDを含む。転送パスがC-SIDと互換性を有するネットワーク・デバイスをさらに通過するときに、中継パスに対応するSIDリストはC-SIDとSIDの両方を含む。
図5Aは、パケット・ヘッダでカプセル化されたパケットの構造を示す。パケット・ヘッダは、IPv6パケット・ヘッダとSRHを含み、SRHは、SIDリストを含み、SIDリストは、C-SIDとSIDの両方を含む。具体的には、SIDリストは、C-SIDの前にSIDを含んでもよいし、C-SIDの後にSIDを含んでもよいし、C-SIDの前のSID及びC-SIDの後のSIDの両方を含んでもよい。C-SIDは、複数のC-SIDを指すことがあり、C-SIDの前又は後のSIDは複数のSIDを指すことがある。対応する実際のネットワーク状況は以下の通りである。パケットの転送パスは、C-SIDと互換性のあるネットワーク・ドメインを通過する前に、まずC-SIDと互換性のないネットワーク・ドメインを通過することがあってもよいし、C-SIDと互換性のあるネットワーク・ドメインを通過した後に、C-SIDと互換性のないネットワーク・ドメインを通過してもよいし、C-SIDと互換性のあるネットワーク・ドメインを通過する前に、まずC-SIDと互換性のないネットワーク・ドメインを通過し、次いで、C-SIDと互換性のあるネットワーク・ドメインを通過した後に、C-SIDと互換性のないネットワーク・ドメインを通過してもよい。C-SIDと互換性のあるネットワーク・ドメインは、複数のネットワーク・デバイスを含んでもよく、C-SIDと互換性のないネットワーク・ドメインは、複数のネットワーク・デバイスを含んでもよい。
図1に示すアプリケーション・シナリオを参照すると、ネットワーク・デバイス1に加えて、パケットの転送経路は、C-SIDと互換性を有することができない他のネットワーク・デバイスをさらに通過してもよい。C-SIDと互換性を有することができないネットワーク・デバイスは、ネットワーク・デバイスSとネットワーク・デバイス1との間に位置してもよく、ネットワーク・デバイス7の後に位置する。これは、図1には示さない。
SIDリストがC-SIDとSIDの両方を含むときに、SIDリストは、依然として前述の拡張制御プレーン・プロトコルを使用することによって、送信されてもよい。
SIDリストがC-SIDとSIDの両方を含むときに、C-SIDの開始を示す開始表示がパケット・ヘッダ内にセットされてもよい。
一例では、SIDリスト内のC-SIDは、C-SIDと互換性があるすべてのネットワーク・デバイスによって実行されるセグメントを示すために使用され、開始表示は、最初のC-SIDの前の最後のSIDに含まれてもよい。例えば、開始表示は、SRv6ネットワークでの特定の機能であってもよく、最後のSIDの機能フィールドに記憶される。
一例では、C-SIDと互換性を有することができるすべてのネットワーク・デバイスによって実行されるセグメントにおいて、最初のセグメントは、依然として長さが128ビットのSIDを使用することによってSIDリスト内に示され、残りのセグメントは、C-SIDを使用することによって示される。開始表示は、最初のセグメントがマッピングするSIDに含められてもよいし、SIDは、特殊SIDと呼ばれてもよい。図5Bは、特別なSIDのフォーマットを示す。SIDは、ロケータ・フィールド、機能フィールド、及び引数フィールド、すなわち、Locator、Function、及びArgumentを含む。ロケータ・フィールドはプレフィックス部分とノードID部分、すなわちPrefix-1及びNodeIDを含む。追加的に、Prefix-1は、C-SIDがマッピングされるSID内のプレフィックスとは異なる。引数フィールドは、数表示とCLポインタを含む。数表示は、図5Cを使用することによって示され、SIDリスト内の特別なSIDを含むパケットを示す。SPECIAL SIDは、特殊SIDである。
特殊SIDが使用されるときに、C-SIDによって占有される空間は、1つの要素に分割されてもよく、要素の長さは、128ビットより大きいことがある。各残りのSIDによって占有される空間は、1つの要素に分割され、要素の長さは、128ビットである。したがって、すべてのスペースの長さは同じではないことがあり、各更新後にSIDリスト内のSLポインタによって指し示す位置によってオフセットされる長さも、必ずしも同じではない。図5Aに示すパケットのパケット・ヘッダ内のSIDリストを参照すると、SIDリスト内の、すべてC-SIDを含む要素は、7つのC-SIDを含み、要素の長さは、128ビットより大きい。
特殊SID内のCLポインタは、C-SIDを含む要素から現在処理されているC-SIDを決定するために使用される。ネットワーク・デバイスによるSIDリスト内のC-SIDのDAフィールドへのコピーの動作と共に、CLポインタの値も更新され、CLポインタの値が要素において現在処理されているC-SIDの位置を決定するために常に使用されることを保証する。図5Cに示すパケットを参照して、特殊SID内のCLポインタの値は、7つの異なる値、例えば、0~6であってもよい。
数表示の値は、すべてのC-SIDの数を示すために使用される。数表示の値は、複数のC-SIDが終了したときに、SLポインタが更新されるときにオフセットされる長さを決定するために使用される。図5Cに示すパケットを参照すると、複数のC-SIDが終了したときに、オフセットされ、SLポインタの長さは、複数のC-SIDの後の最初のSIDを指し示すために、224ビットであってもよい。
例では、特殊SIDの機能フィールドの値がSRv6ネットワークでの特定の機能を示すために使用され、数表示とCLポインタが特定の機能の引数として使用される。特定の機能は、CLポインタの値が初期値であるとき、すなわち、SIDリスト内の複数のC-SIDが開始するときに、プレフィックス部分をコピーする、すなわち、C-SIDがDAフィールドにマッピングされるSIDのプレフィックス部分をコピーし、複数のC-SIDのうちの最初のC-SIDをDAフィールドにコピーするために使用される。
一実施形態では、ネットワーク・デバイス301は、前述の特殊SIDを含む、同じセグメントに対するSID及びC-SIDを取得してもよい。SID及びC-SIDは、セグメントを実行するネットワーク・デバイスによって広告されてもよい。SIDリストが生成されるときに、C-SIDによって示され得る複数のセグメントにおいて、C-SIDの代わりに、特殊SIDが最初のセグメントとして使用されるべきである。
SIDリストがC-SIDとSIDの両方を含む場合、C-SIDの終了を示す終了表示がパケット・ヘッダ内にさらにセットされてもよい。ネットワーク・デバイスは、終了表示に基づいて複数のC-SIDのうちの最後のC-SIDを決定し、最後のC-SIDの後の128ビットをDAフィールドにコピーする、すなわち、最後のC-SIDの後のSIDをDAフィールドにコピーしてもよい。
一例では、SIDリストにおいて、1つの終了表示が、複数のC-SIDの後にセットされて、複数のC-SIDの終了を示す。終了表示は、C-SIDの長さと同じ長さのタイプ・フィールドであってもよいし、終了表示の値は、特定の値、例えば、すべて0である。図5Aに示すように、終了表示は、EOCによって示されてもよい。イタリック体のフォントは、これが、任意選択の実装であることを示す。
一例では、SIDリストにおいて、1つの終了表示が、複数のC-SIDのうちの最後のC-SID内にセットされて、複数のC-SIDの終了を示す。図5Aに示すように、終了表示はC-SID7に含まれてもよい。
任意選択で、終了表示は、SRv6ネットワークにおける特定の機能であってもよく、最後のC-SIDの機能フィールドに記憶される。
任意選択で、終了表示は、C-SID内の特定のフィールドであってもよい。前述の説明を参照すると、C-SID内のフィールドの最後の部分は分割され、CLポインタの候補フィールドとして使用されてもよい。これに基づいて、CLポインタの候補フィールドの前のいくつかのフィールドは、終了表示の候補フィールドとして分割されてもよい。図5Dは、終了表示の候補フィールドとCLポインタの候補フィールドとを含むC-SIDのフォーマットを示す。終了表示の候補フィールドは、Sを使用することによって示され、終了表示の候補フィールドは、特定の長さ、例えば、1ビットにセットされてもよい。終了表示の候補フィールドの値は、特定の初期値、例えば、0にセットされてもよい。SIDリスト内の最後のC-SID内の終了表示の候補フィールドの値は、1にセットされる。これは、C-SIDの終了を示す。残りのC-SID内の終了表示の候補フィールドの値は初期値のままである。CLポインタが更新される方式は、前述の方式と同じである。詳細は、ここでは再度説明しない。
一例では、ネットワーク・デバイス301は、終了表示の候補フィールド及びCLポインタの候補フィールドを含むC-SIDのフォーマットを含む、同一セグメントに対する異なるフォーマットのC-SIDを取得してもよい。異なるフォーマットのC-SIDは、セグメントを実行するネットワーク・デバイスによって広告されてもよい。終了表示の候補フィールド及びCLポインタの候補フィールドを含むC-SIDのフォーマットは、SIDリスト内の各要素における最後のC-SIDに対して選択されてもよい。CLポインタの候補フィールドは、CLポインタとして使用されてもよく、要素において現在処理されているC-SIDを決定するために使用される。要素における最後のC-SIDが同時にすべてのC-SIDのうちの最後のC-SIDであるときに、最後のC-SID内の終了表示がC-SIDの終了を示すために使用されてもよい。
S320:ネットワーク・デバイス301は、パケット・ヘッダでカプセル化されたパケットを送信する。
前述の説明を参照すると、ネットワーク・デバイス301は、SIDリスト内の最初のC-SIDをDAフィールドにコピーする。DAフィールド内にあるSIDの第1の部分と最初のC-SIDは、SIDを再形成する。ネットワーク・デバイス301は、パケット・ヘッダでカプセル化されたパケットを送信する。任意選択で、ネットワーク・デバイス301は、SID内の機能フィールドによって示されるSRv6ネットワーク機能に基づいてパケットを処理し、処理プロセスは、SRv6ネットワーク機能における特定の命令によって決定される。任意選択で、処理プロセスは、パケットを送信することを含んでもよい。例えば、ネットワーク・デバイス301は、パケットをネットワーク・デバイス302に送信する。
S325:ネットワーク・デバイス302は、パケットを受信する。パケットのパケット・ヘッダは、宛先アドレス・フィールド、第1のポインタ、第2のポインタ、及びパケットを処理するために使用されるリストを含む。リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す。
S330:ネットワーク・デバイス302は、第1のポインタの値及び第2のポインタの値に基づいて第1の識別子を決定する。
S335:ネットワーク・デバイス302は、第1の識別子を宛先アドレス・フィールドにコピーする。
ネットワーク・デバイス302は、C-SIDを含むSIDリストを受信し、SLポインタ及びCLポインタに基づいて現在処理されているC-SIDを決定し、C-SIDをDAフィールドにコピーする。C-SIDは、DAフィールド内のオリジナルのC-SIDを上書きし、DAフィールド内のプレフィックス部分と共にSIDを形成してもよい。パケット転送パスでの後のネットワーク・デバイスは、SIDに基づいてパケットを処理してもよい。
ネットワークでのSIDがパディング・コンテンツを含む第3の部分を含むときに、ネットワーク・デバイス302は、ネットワーク・デバイス301又はネットワークでのコントローラによって広告されたSIDの構造情報に基づいて、DAフィールド内の第2の部分の特定の位置を学習する。したがって、ネットワーク・デバイス302は、現在処理されているC-SIDを、DAフィールド内の第2の部分の特定の位置に基づいて、DAフィールド内の第2の部分の対応する位置にコピーして、C-SIDがDAフィールド内の元のC-SIDを上書きするようにしてもよい。言い換えると、ネットワーク・デバイス302は、DAフィールド内の第2の部分を更新するが、DAフィールド内の第1の部分及び第3の部分を更新しない。更新された第2の部分は、第1の部分と第3の部分と組み合わされて、SIDを形成する。パケット転送パスでの後のネットワーク・デバイスは、SIDに基づいてパケットを処理してもよい。前述の説明を参照すると、CLポインタの値が更新されるアクションと、C-SIDがDAフィールドにコピーされるアクションとの間に、2つの実行シーケンスがある。これに関連して、ネットワーク・デバイス302において、SLポインタ及びCLポインタに基づいて、現在処理されているC-SIDを決定するための2つの実行方式もある。追加的に、SIDリスト内のC-SIDを含む空間は、複数の要素に分割されてもよいし、又は1つの要素に分割されてもよい。これに関連して、ネットワーク・デバイス302では、SLポインタ及びCLポインタに基づいて、現在処理されているC-SIDを決定するための異なる実行方式が存在する。
実行シーケンスが、まずCLポインタの値が更新され、次いで、C-SIDがコピーされるものであり、SIDリスト内のC-SIDを含む空間が複数の要素に分割されるときに、例は、図1に示すアプリケーション・シナリオを参照した説明のために使用される。ネットワーク・デバイス302は、図1のネットワーク・デバイス1であってもよい。ネットワーク・デバイス1は、ネットワーク・デバイスSから送信されたパケットを受信する。パケットのパケット・ヘッダを図4に示す。パケット・ヘッダは、DAフィールド、SLポインタ、CLポインタ、SIDリストを含み、SIDリストは、複数のC-SIDを含む。この場合、DAフィールドは、プレフィックス部分及びC-SID1を含む。プレフィックス部分はA1であり、C-SID1は、0001:1111であり、プレフィックス部分とC-SID1の組み合わせは、A1:0001:1111、すなわちネットワーク・デバイス1のSIDである。この場合、パケット・ヘッダのSLポインタの値は1であり、SIDリスト内の第1の要素の位置を示す。図4を参照すると、第1の要素の要素は、C-SID1、C-SID2、C-SID3、及びC-SID4の4つのC-SIDを含む。パケット・ヘッダ内のCLポインタの値は1であり、要素におけるコンテナ内の最初のC-SIDの位置、すなわちC-SID1を示す。ネットワーク・デバイス1は、まずCLポインタの値を更新する、例えば、要素におけるコンテナ内の2番目のC-SIDの位置を示すために、CLポインタの値を2に変更する。ネットワーク・デバイス1は、SLポインタ及びCLポインタの表示に基づいて、第1の要素における2番目のC-SID、すなわちC-SID2を取得し、C-SID2をパケット・ヘッダ内のDAフィールドにコピーして、DAフィールド内の元のC-SID1を置き換える。この場合に、DAフィールドはプレフィックス部分とC-SID2の組み合わせ、すなわち、ネットワーク・デバイス2のSIDであるA1:0002:2222を含む。ネットワーク・デバイス1は、DAフィールド内のネットワーク・デバイス2のSIDに基づいて転送エントリを照会し、照会結果に基づいてパケットをネットワーク・デバイス2に送信する。
代替的には、ネットワーク・デバイス302は、図1のネットワーク・デバイス2であってもよい。ネットワーク・デバイス2は、ネットワーク・デバイス1から送信されたパケットを受信する。この場合、パケットのパケット・ヘッダ内のDAフィールドは、プレフィックス部分とC-SID2、すなわち、ネットワーク・デバイス2のSIDであるA1:0002:2222を含む。パケット・ヘッダにおいて、SLポインタの値は1であり、CLポインタの値は2である。これは、第1の要素における2番目のC-SID、すなわちC-SID2の位置を示す。ネットワーク・デバイス2は、まずCLポインタの値を更新する、例えば、要素におけるコンテナ内の3番目のC-SIDの位置を示すために、CLポインタの値を3に変更する。ネットワーク・デバイス2は、SLポインタ及びCLポインタの表示に基づいて、第1の要素における3番目のC-SID、すなわちC-SID3を取得し、C-SID3をパケット・ヘッダ内のDAフィールドにコピーして、DAフィールド内の元のC-SID2を置き換える。この場合に、DAフィールドはプレフィックス部分とC-SID3の組み合わせ、すなわちネットワーク・デバイス3のSIDであるA1:0003:333を含む。ネットワーク・デバイス2は、DAフィールド内のネットワーク・デバイス3のSIDに基づいて転送エントリを照会し、照会結果に基づいてパケットをネットワーク・デバイス3に送信する。
代替的には、ネットワーク・デバイス302は、図1のネットワーク・デバイス3であってもよい。ネットワーク・デバイス3によってパケットを処理するプロセスは、前述の説明と同様である。詳細は、ここでは再度説明しない。
まず実行シーケンスがC-SIDがコピーされ、次いで、CLポインタの値が更新され、SIDリスト内のC-SIDを含む空間が複数の要素に分割されるときに、ネットワーク・デバイス1によって受信されたパケット内では、CLポインタの値は既に2である。これは、要素における2番目のC-SIDの位置を示す。ネットワーク・デバイス1は、SLポインタ及びCLポインタの表示に基づいて、第1の要素における2番目のC-SID、すなわちC-SID2を取得し、C-SID2をパケット・ヘッダ内のDAフィールドにコピーして、DAフィールド内の元のC-SID1を置き換える。ネットワーク・デバイス1は、CLポインタの値を更新する、例えば、要素におけるコンテナ内の3番目のC-SIDの位置を示すために、CLポインタの値を3に変更する。この場合に、DAフィールドはプレフィックス部分とC-SID2の組み合わせ、すなわち、ネットワーク・デバイス2のSIDであるA1:0002:2222を含む。ネットワーク・デバイス1は、DAフィールド内のネットワーク・デバイス2のSIDに基づいて転送エントリを照会し、照会結果に基づいてパケットをネットワーク・デバイス2に送信する。前述の説明に基づいて、別の実行プロセスが類推によってされてもよい。詳細は、ここでは再度説明しない。
一例では、ネットワーク・デバイス302は、現在のDAフィールド内のC-SIDがSIDリストの要素における最後のC-SIDであるかどうかを決定する。現在のDAフィールド内のC-SIDがSIDリストの要素における最後のC-SIDである場合、ネットワーク・デバイス302は、SLポインタの値及びCLポインタの値を更新する必要がある。パケット転送パスでの複数のネットワーク・デバイスは、SIDリスト内の複数のC-SIDを逐次的に処理し、SIDリスト内の1つの要素におけるC-SIDを処理した後、次の要素におけるC-SIDを処理し続ける。この場合に、CLポインタの値及びSLポインタの値に基づいて現在処理されているC-SIDが依然として決定されることを保証するために、CLポインタの値とSLポインタの値の両方が変更される必要がある。
図1に示すアプリケーション・シナリオ及び図4Bに示すパケット内のSIDリストを参照すると、実行シーケンスは、まずSLポインタの値及びCLポインタの値が更新され、次いで、C-SIDがコピーされるという例が説明のために依然として使用される。ネットワーク・デバイス302は、図1のネットワーク・デバイス4であってもよく、ネットワーク・デバイス4は、ネットワーク・デバイス3によって送信されたパケットを受信する。この場合、パケットのパケット・ヘッダ内のDAフィールドは、プレフィックス部分とC-SID4、すなわち、ネットワーク・デバイス4のSIDであるA1:0004:4444を含む。パケット・ヘッダにおいて、SLポインタの値は1であり、CLポインタの値は4である。これは、第1の要素における4番目のC-SID、すなわちC-SID4の位置を示す。ネットワーク・デバイス4が、現在のDAフィールド内のC-SID4がSIDリストの要素における最後のC-SIDであると決定する場合、ネットワーク・デバイス4は、SLポインタの値及びCLポインタの値を更新する必要がある。具体的には、ネットワーク・デバイス4は、まずSLポインタの値を更新する、例えば、SIDリスト内の第2の要素を示すために、SLポインタの値を0に変更する。第2の要素は、C-SID5、C-SID6、及びC-SID7の3つのC-SIDを含む。次いで、ネットワーク・デバイス4は、CLポインタの値を更新する、例えば、要素における最初のC-SIDの位置、すなわち要素内のC-SID5の位置を示すために、CLポインタの値を1に変更する。ネットワーク・デバイス4は、SLポインタ及びCLポインタの表示に基づいて、第2の要素における最初のC-SID、すなわちC-SID5を取得し、C-SID5をパケット・ヘッダ内のDAフィールドにコピーして、DAフィールド内の元のC-SID4を置き換える。この場合、DAフィールドは、プレフィックス部分とC-SID5の組み合わせ、すなわち、ネットワーク・デバイス5のSIDであるA1:0005:5555を含む。ネットワーク・デバイス4は、DAフィールド内のネットワーク・デバイス5のSIDに基づいて転送エントリを照会し、照会結果に基づいてパケットをネットワーク・デバイス5に送信する。
実行シーケンスが、まずC-SIDがコピーされ、次いで、SLポインタの値及びCLポインタの値が更新されることであるときに、実行プロセスは、前述の説明に基づいて類推により推測されてもよい。詳細は、ここでは再度説明しない。
さらに、ネットワーク・デバイス302は、代替的には、図1のネットワーク・デバイス5、ネットワーク・デバイス6、又はネットワーク・デバイス7であってもよい。ネットワーク・デバイスによってパケットを処理するプロセスは、前述の説明と同様である。詳細は、ここでは再度説明しない。
SIDリスト内のC-SIDを含む空間が1つの要素に分割されるときに、実行プロセスは、前述の説明に基づいて類推によって推測されてもよい。詳細は、ここでは再度説明しない。
しかしながら、図1に示すアプリケーション・シナリオの前述の例では、転送処理は、各ネットワーク・デバイスでパケットに対して実行され、各時間で実行される転送処理挙動は、1つのセグメントに対応する。このようにして、パケット転送プロセス全体を示すSIDリストは、7つのSIDを含む。しかしながら、当業者は、パケットを処理するプロセスにおいて、いくつかのネットワーク・デバイスが複数回パケットを処理してもよいことを容易に予想することができる。処理は、転送処理と非転送処理を含む。各時間で実行される処理挙動は、1セグメントに対応する。したがって、図1に示すアプリケーション・シナリオでは、パケット転送プロセス全体を示すSIDリストは、7つを超えるSID、例えば10のSIDを含んでもよい。
図6は、前述の実施形態におけるネットワーク・デバイスの構造の可能な概略図である。ネットワーク・デバイス600は、図3に示す実施形態においてネットワーク・デバイス301の機能を実装してもよい。図6を参照する。ネットワーク・デバイス600は、受信ユニット601及び処理ユニット602を含む。これらのユニットは、前述の方法の実施形態においてネットワーク・デバイスの対応する機能を実行してもよい。例えば、受信ユニット601は、パケットを受信するように構成されており、処理ユニット602は、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することであって、パケット・ヘッダが、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストが、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、リストに基づいて、パケット・ヘッダでカプセル化されたパケットを処理することと、を行うように構成されている。
図7は、前述の実施形態におけるネットワーク・デバイス301の別の可能な構造の概略図である。ネットワーク・デバイス700は、プロセッサ702、ネットワーク・インターフェース703、及びメモリ701を含む。
メモリ701は、命令を記憶するように構成されている。ソフトウェアを使用することによって、図6に示す実施形態が実装され、図6に説明されたユニットが実装されるときに、図6の処理ユニット602の機能を実行するために必要なソフトウェア、又はプログラム・コードがメモリ701に記憶される。
プロセッサ702は、メモリ701内の命令を実行して、図3に示す実施形態に適用される前述のパケット処理方法を実行するように構成されている。
ネットワーク・インターフェース703は、別のネットワーク・デバイスと通信するように構成されている。
ネットワーク・インターフェース703、プロセッサ702、及びメモリ701は、互いに接続される。例えば、ネットワーク・インターフェース703、プロセッサ702、及びメモリ701は、バスを介して互いに接続される。バスは、周辺構成要素相互接続(peripheral component interconnect、略してPCI)バス、拡張産業標準アーキテクチャ(extended industry standard architecture、略してEISA)バスなどであってもよい。バスは、アドレス・バス、データ・バス、制御バスなどに分類されてもよい。表現を容易にするために、図7のバスを表すためには太線が1本のみが使用されるが、これはバスが1本のみ、又はバスのタイプが1つのみであることを意味するものではない。
具体的な実施形態では、プロセッサ702は、ネットワーク・インターフェース703を介してパケットを受信することと、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することであって、パケット・ヘッダが、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストが、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、リストに基づいて、パケット・ヘッダでカプセル化されたパケットを処理することと、を行うように構成されている。プロセッサ702の詳細な処理プロセスについては、図3に示す前述の実施形態におけるプロセスS310、S315、及びS320の詳細な説明を参照のこと。詳細は、ここでは再度説明しない。
ネットワーク・インターフェース703は、ネットワーク・システムを使用することによってパケットを受信及び送信するために、ネットワーク・デバイス700によって使用される。特定のプロセスについては、図3に示す前述の実施形態のプロセスS310の詳細な説明を参照のこと。詳細は、ここでは再度説明しない。
図8は、前述の実施形態におけるネットワーク・デバイスの構造の可能な概略図である。ネットワーク・デバイス800は、図3に示す実施形態においてネットワーク・デバイス302の機能を実装してもよい。図8を参照する。ネットワーク・デバイス800は、受信ユニット801及び処理ユニット802を含む。これらのユニットは、前述の方法の実施形態においてネットワーク・デバイスの対応する機能を実行してもよい。例えば、受信ユニット801は、パケットを受信するように構成されている。パケットのパケット・ヘッダは、宛先アドレス・フィールドと、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す。処理ユニット802は、第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することと、第1の識別子を宛先アドレス・フィールドにコピーすることとを行うように構成されている。
図9は、前述の実施形態におけるネットワーク・デバイスの構造の可能な概略図である。ネットワーク・デバイス900は、プロセッサ902、ネットワーク・インターフェース903、及びメモリ901を含む。
メモリ901は、命令を記憶するように構成されている。ソフトウェアを使用することによって、図8に示す実施形態が実装され、図8に説明されたユニットが実装されるときに、図8の受信ユニット801の機能を実行するために必要なソフトウェア、又はプログラム・コードがメモリ901に記憶される。
プロセッサ902は、メモリ901内の命令を実行して、図3に示す実施形態に適用される前述のパケット処理方法を実行するように構成されている。
ネットワーク・インターフェース903は、別のネットワーク・デバイスと通信するように構成される
ネットワーク・インターフェース903、プロセッサ902、及びメモリ901は、互いに接続される。例えば、ネットワーク・インターフェース903、プロセッサ902、及びメモリ901は、バスを介して互いに接続される。バスは、PCIバス、EISAバスなどであってもよい。バスは、アドレス・バス、データ・バス、制御バスなどに分類されてもよい。表現を容易にするために、図9のバスを表すためには太線が1本のみが使用されるが、これはバスが1本のみ、又はバスのタイプが1つのみであることを意味するものではない。
特定の実施形態で、プロセッサ902は、ネットワーク・インターフェース903を介してパケットを受信することであって、パケットのパケット・ヘッダは、宛先アドレス・フィールドと、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することと、第1の識別子を宛先アドレス・フィールドにコピーすることと、を行うように構成されている。プロセッサ902の詳細な処理プロセスについては、図3に示す前述の実施形態におけるプロセスS325、S330、及びS335の詳細な説明を参照のこと。詳細は、ここでは再度説明しない。
ネットワーク・インターフェース903は、ネットワーク・システムを使用することによってパケットを送信及び受信するために、ネットワーク・デバイス900によって使用される。特定のプロセスについては、図3に示す前述の実施形態のプロセスS325の詳細な説明を参照のこと。詳細は、ここでは再度説明しない。
メモリ701及びメモリ901は、ランダム・アクセス・メモリ(random access memory、RAM)、フラッシュ(flash)メモリ、読み出し専用メモリ(read-only memory、ROM)、消去可能なプログラマブル読み出し専用メモリ(erasable programmable read-only memory、EPROM)、電気的に消去可能なプログラマブル読み出し専用メモリ(electrically erasable programmable read-only memory、EEPROM)、レジスタ(register)、ハード・ディスク、リムーバブル・ハード・ディスク、CD-ROM、又は当業者に既知の任意の他の形態の記憶媒体であってもよい。
プロセッサ702及びプロセッサ902は、例えば、中央処理ユニット(central processing unit、CPU)、汎用プロセッサ、デジタル信号プロセッサ(digital signal processing、DSP)、フィールド・プログラマブル・ゲート・アレイ(field programmable gate array、FPGA)、又は他のプログラマブル論理デバイス、トランジスタ論理デバイス、ハードウェア・コンポーネント、又はそれらの任意の組み合わせであってもよい。プロセッサ702及びプロセッサ902は、本出願に開示されたコンテンツに関連して説明された様々な例示的な論理ブロック、モジュール、及び回路を実装又は実行してもよい。代替的には、プロセッサは、計算機能を実装するプロセッサの組み合わせ、例えば、1つ以上のマイクロプロセッサの組み合わせ、又はDSPとマイクロプロセッサの組み合わせであってもよい。
ネットワーク・インターフェース703及びネットワーク・インターフェース903は、例えば、インターフェース・カードであってもよいし、イーサネット(Ethernet)インターフェース又は非同期トランスファー・モード(asynchronous transfer mode、ATM)インターフェースであってもよい。ネットワーク・インターフェース703及びネットワーク・インターフェース903は、有線インターフェース又は無線インターフェースであってもよい。
プロセッサ702及びプロセッサ902は、例えば、特定用途向け集積回路(application-specific integrated circuit、ASIC)であってもよい。この場合に、プロセッサ702及びプロセッサ902は、プロセッサ702及びプロセッサ902の回路に基づいて、図3に示す実施形態に適用される前述のパケット処理方法を実行する。言い換えると、この場合、メモリ701及びメモリ901は、プロセッサ702及びプロセッサ902によって実行された命令を記憶する必要がなく、プロセッサ702及びプロセッサ902は、メモリ701及びメモリ901内の命令をもはや実行しない。任意選択で、この場合に、ネットワーク・デバイスはメモリ701又はメモリ901を含まなくてもよい。
図10は、本出願の一実施形態によるネットワーク・システムの可能な構造の概略図である。ネットワーク・システム1000は、第1のネットワーク・デバイス1001及び第2のネットワーク・デバイス1002を含む。ネットワーク・システムにおける第1のネットワーク・デバイス1001は、図3に示す実施形態におけるネットワーク・デバイス301の処理ステップを実行してもよく、ネットワーク・システムにおける第2のネットワーク・デバイス1002は、図3に示す実施形態におけるネットワーク・デバイス302の処理ステップを実行してもよい。これに対応して、ネットワーク・システムにおける第1のネットワーク・デバイス1001は、図6に示す実施形態におけるネットワーク・デバイス600であってもよく、第2のネットワーク・デバイス1002は、図8に示す実施形態におけるネットワーク・デバイス800であってもよい。代替的には、これに対応して、ネットワーク・システムにおける第1のネットワーク・デバイス1001は、図7に示す実施形態におけるネットワーク・デバイス700であってもよく、第2のネットワーク・デバイス1002は、図9に示す実施形態におけるネットワーク・デバイス900であってもよい。
具体的には、第1のネットワーク・デバイスは、パケットを受信することと、パケット・ヘッダを生成し、パケット・ヘッダをパケットにカプセル化することであって、パケット・ヘッダが、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストが、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、リストに基づいて、パケット・ヘッダでカプセル化されたパケットを処理することと、を行うように構成されている。
第2のネットワーク・デバイスは、パケットを受信することであって、パケットのパケット・ヘッダは、宛先アドレス・フィールドと、第1のポインタと、第2のポインタと、パケットを処理するために使用されるリストとを含み、リストは、逐次的に配置された複数の識別子を含み、複数の識別子が、SRネットワークで複数のセグメントに1対1でマッピングされ、第1のポインタの値及び第2のポインタの値が、リスト内の複数の識別子のうちの第1の識別子の位置を一緒に示す、ことと、第1のポインタの値及び第2のポインタの値に基づいて、第1の識別子を決定することと、第1の識別子を宛先アドレス・フィールドにコピーすることと、を行うように構成されている。
本発明の一実施形態は、前述の実施形態で使用されるソフトウェア命令を記憶するように構成されている非一時的な記憶媒体をさらに提供する。非一時的な記憶媒体は、前述の実施形態に示す方法を実行するために使用されるプログラムを含む。プログラムがコンピュータ又はネットワーク・デバイスで実行されるときに、コンピュータ又はネットワーク・デバイスは、前述の方法の実施形態における方法を実行することが可能となる。
本発明の一実施形態は、コンピュータ・プログラム命令を含むコンピュータ・プログラム製品をさらに提供する。コンピュータ・プログラム製品がコンピュータで動作するときに、ネットワーク・ノードは、前述の方法の実施形態における方法を実行することを可能となる。
本出願の本明細書、特許請求の範囲及び添付の図面において、用語「第1」、「第2」、「第3」、「第4」など(存在する場合)は、類似の対象を区別することを意図しており、必ずしも特定の順序又はシーケンスを示すものではない。このような用語のデータは、適切な状況において互換性があると理解すべきであり、本明細書で説明された本発明の実施形態が、本明細書に図示又は説明された順序以外の順序でされ得るようにする。さらに、用語「含む」、「含有する」、及び任意の他の変形は、非排他的な包含をカバーすることを意味し、例えば、ステップ又はユニットのリストを含むプロセス、方法、システム、製品、又はデバイスは、それらのステップ又はユニットに必ずしも限定されず、そのようなプロセス、方法、製品、又はデバイスに明示的にリストされていないか、固有ではない他のステップ又はユニットを含んでもよい。
便利で簡単な説明のために、前述のシステム、装置、及びユニットの詳細な作業プロセスについては、前述の方法の実施形態における対応するプロセスを参照することが、当業者によって明らかに理解されよう。詳細は、ここでは再度説明しない。
この出願において提供されるいくつかの実施形態では、開示されたシステム、装置、及び方法は、他の方式で実装され得ると理解されたい。例えば、記載された装置の実施形態は、単なる一例である。例えば、ユニット分割は、論理サービス分割に過ぎず、実際の実装においては他の分割であってもよい。例えば、複数のユニット又はコンポーネントを別のシステムに組み合わせたり、一体化したりしてもよいし、いくつかの特徴を無視したり、実行しなかったりしてもよい。追加的に、表示又は議論された相互結合、直接結合、又は通信接続は、いくつかのインターフェースを介して実装されてもよい。装置又はユニット間の間接結合又は通信接続は、電子的、機械的、又は他の形態で実装されてもよい。
別個の部分として説明されるユニットは、物理に分離されていても、されていなくてもよく、ユニットとして表示される部分は、物理ユニットであっても、なくてもよく、すなわち、1つの位置に位置していてもよいし、複数のネットワーク・ユニットに分散されていてもよい。ユニットの一部又は全部は、実施形態の解決策の目的を達成するために実際の要件に基づいて選択されてもよい。
追加的に、本出願の実施形態におけるサービス・ユニットは、1つの処理ユニットに一体化されてもよいし、ユニットの各々は、物理的に単独で存在してもよいし、2つ以上のユニットは、1つのユニットに一体化される。一体化されたユニットは、ハードウェアの形態で実装されてもよいし、ソフトウェア・サービス・ユニットの形態で実装されてもよい。
サービス・ユニットがソフトウェア機能ユニットの形態で実装され、独立した製品として販売又は使用されるときに、一体化されたユニットは、コンピュータ可読記憶媒体に記憶されてもよい。このような理解に基づいて、本出願の技術的解決策が、本質的にソフトウェア製品の形態で実装されてもよいし、従来技術に寄与する部分が、ソフトウェア製品の形態で実装されてもよいし、技術的解決策の全部又は一部が、ソフトウェア製品の形態で実装されてもよい。コンピュータ・ソフトウェア製品は、記憶媒体に記憶され、コンピュータ・デバイス(パーソナル・コンピュータ、サーバ、又はネットワーク・デバイスであってもよい)に、本出願の実施形態で説明された方法のステップの全部又は一部を実行させるように指示するためのいくつかの命令を含む。前述の記憶媒体は、種々の媒体、例えば、USBフラッシュ・ドライブ、リムーバブル・ハード・ディスク、読み出し専用メモリ(ROM, Read-Only Memory)、ランダム・アクセス・メモリ、磁気ディスク、光ディスク、又はプログラム・コードを記憶することができる別の媒体を含む。
当業者は、前述の1つ以上の例において、本発明で説明されたサービスは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを使用することによって実装され得ると認識すべきである。サービスがソフトウェアによって実装されるときに、サービスは、コンピュータ可読媒体に記憶されるか、又はコンピュータ可読媒体内の1つ以上の命令又はコードとして送信される。コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含む。通信媒体は、コンピュータ・プログラムをある場所から別の場所へ送信することを可能にする任意の媒体を含む。記憶媒体は、汎用又は専用コンピュータにアクセス可能な任意の利用可能な媒体であってもよい。
本発明の目的、技術的解決策、及び有益な効果については、前述の具体的な例においてさらに詳細に説明されている。前述の説明は、本発明の具体的な実装に過ぎないと理解されたい。
前述の実施形態は、本出願を限定する代わりに、本出願の技術的解決策を説明することを意図したに過ぎない。本出願は、前述の実施形態を参照して詳細に説明されているが、当業者は、本出願の実施形態の技術的解決策の範囲から逸脱することなく、前述の実施形態に説明された技術的解決策に修正するか、又はその技術的特徴のいくつかを同等のものに置換することを依然として行ってもよいと理解されたい。