(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】SRネットワークでパケットを転送するための方法、装置、及びシステム
(51)【国際特許分類】
H04L 45/50 20220101AFI20231215BHJP
H04L 45/741 20220101ALI20231215BHJP
【FI】
H04L45/50
H04L45/741
(21)【出願番号】P 2022513191
(86)(22)【出願日】2020-05-06
(86)【国際出願番号】 CN2020088788
(87)【国際公開番号】W WO2021036328
(87)【国際公開日】2021-03-04
【審査請求日】2022-04-22
(31)【優先権主張番号】201910819877.6
(32)【優先日】2019-08-31
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】201911317222.5
(32)【優先日】2019-12-19
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ホゥ,ジーボー
(72)【発明者】
【氏名】リー,チュヨン
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特表2019-505140(JP,A)
【文献】米国特許出願公開第2019/0081897(US,A1)
【文献】米国特許出願公開第2014/0369356(US,A1)
【文献】米国特許出願公開第2017/0250908(US,A1)
【文献】米国特許出願公開第2018/0034727(US,A1)
【文献】C. Filsfils et al.,Segment Routing Architecture,Request for Comments: 8402,2018年07月,<URL> https://www.ietf.org/rfc/rfc8402.html
【文献】NOCTION,Segment Routing and the SRv6 Network Programming,2018年02月13日,<URL> https://www.noction.com/blog/segment-routing-srv6-network-programming
【文献】R. Bonica et al.,The IPv6 Compressed Routing Header (CRH),draft-bonica-6man-comp-rtg-hdr-03,2019年03月23日,<URL> https://datatracker.ietf.org/doc/html/draft-bonica-6man-comp-rtg-hdr-03#appendix-A
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
(57)【特許請求の範囲】
【請求項1】
パケットを転送するための方法であって、当該方法は、
第1のパケットを受信するステップであって、該第1のパケットの第1のパケットヘッダにはセグメントリストが含まれ、該セグメントリストには複数の識別子が含まれ、前記セグメントリストには、長さが128ビットである第1の要素が含まれ、該第1の要素は前記複数の識別子内の少なくとも2つの隣接する識別子を含み、前記第1のパケットには第1のポインタが含まれる
、ステップと、
前記第1のポインタの値に基づいて、前記第1の要素内の第1の識別子の位置を決定するステップであって、前記第1の識別子は前記少なくとも2つの隣接する識別子のうちの1つである
、ステップと、
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダにコピーして、第2のパケットを生成するステップと、
該第2のパケットを
前記第1の識別子に対応するネットワーク装置に送信するステップと、を含む、
方法。
【請求項2】
前記複数の識別子は圧縮セグメント識別子であり、前記複数の識別子は1対1の方法で複数のセグメント識別子にマッピングされ、前記複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、前記複数のセグメント識別子のそれぞれの前記第1の部分はプレフィックス部分であり、前記複数の識別子のそれぞれは、前記識別子がマッピングされるセグメント識別子内の第2の部分を含む、請求項1に記載の方法。
【請求項3】
前記第2のパケットヘッダは、宛先アドレスフィールドを含むインターネットプロトコルバージョン6(IPv6)プロトコルであり、前記宛先アドレスフィールドには第1の部分及び第2の部分が含まれ、前記宛先アドレスフィールド内の前記第1の部分は前記プレフィックス部分を含み、
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーするステップは、
前記第1の識別
子を前記宛先アドレスフィールド内の前記第2の部分にコピーするステップを含む、請求項2に記載の方法。
【請求項4】
前記セグメントリストには前記プレフィックス部分が含まれない、請求項2又は3に記載の方法。
【請求項5】
前記複数の識別子の長さが同じであり、
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーする前に、当該方法は、
前記複数の識別子の前記長さ及び前記プレフィックス部分の長さに基づいて、前記少なくとも1つの識別子の数量を決定するステップをさらに含む、請求項2乃至4のいずれか一項に記載の方法。
【請求項6】
前記第1のパケットには宛先アドレスフィールドが含まれ、該宛先アドレスフィールドには第2の識別子が含まれ、該第2の識別子は前記複数の識別子のうちの1つであり、
前記第1のポインタの値に基づいて前記第1の要素内の第1の識別子の位置を前記決定する前に、当該方法は、
前記第2の識別子内のスイッチングフラグに基づいて、前記セグメントリストには前記第2の識別子のタイプとは異なるタイプの識別子が含まれると判定するステップをさらに含み、
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーするステップは、
前記少なくとも1つの識別子を前記第2のパケットヘッダにコピーして転送識別子スタックを形成するステップを含み、前記少なくとも1つの識別子のタイプが前記第2の識別子の前記タイプとは異なる、請求項1に記載の方法。
【請求項7】
前記第1のパケットには数量フラグが含まれ、
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーする前に、当該方法は、
前記数量フラグの値に基づいて、前記少なくとも1つの識別子の数量を決定するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記少なくとも1つの識別子は、マルチプロトコルラベルスイッチ(MP
LS)ラベル又はインターネットプロトコルバージョン4(IPv4)アドレスである、請求項6
又は7に記載の方法。
【請求項9】
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーした後に、当該方法は、
前記第1のポインタの前記値を変更するステップであって、これにより、前記第1のポインタの前記変更した値は、前記第1の要素内の第3の識別子の位置を示すために使用され、該第3の識別子は前記少なくとも1つの識別子に属していない
、ステップをさらに含む、請求項1乃至
8のいずれか一項に記載の方法。
【請求項10】
前記第1の識別
子を前記第1のパケットの第2のパケットヘッダに前記コピーした後に、当該方法は、
前記第1のポインタの前記値を変更するステップであって、これにより、前記第1のポインタの前記変更した値は、第2の要素内の第3の識別子の位置を示すために使用され、前記第3の識別子は前記少なくとも1つの識別子に属しておらず、前記第2の要素は前記第1の要素とは異なる
、ステップをさらに含む、請求項1乃至
8のいずれか一項に記載の方法。
【請求項11】
前記第1のパケットには第2のポインタがさらに含まれ、該第2のポインタは残りセグメント(SL)ポインタであり、
前記第1のポインタの値に基づいて前記第1の要素内の第1の識別子の位置を前記決定する前に、当該方法は、
前記第2のポインタの値に基づいて、前記第1のパケット内の前記第1の要素の位置を決定するステップをさらに含む、請求項1乃至
10のいずれか一項に記載の方法。
【請求項12】
パケットを
生成するための方法であって、当該方法は、
第2のネットワーク装置が、第1のパケットを受信するステップと、
前記第2のネットワーク装置が、セグメントリストを取得するステップであって、該セグメントリストは前記第1のパケットの転送パスに対応し、前記セグメントリストには複数の識別子が含まれ、前記セグメントリストには、長さが128ビットである第1の要素が含まれ、該第1の要素は、前記複数の識別子内の少なくとも2つの隣接する識別子を含む
、ステップと、
前記第2のネットワーク装置が、前記セグメントリストを前記第1のパケットに追加して第2のパケットを生成するステップであって、該第2のパケットには第1のポインタが含まれ、該第1のポインタの値は
、第1のネットワーク装置に前記第1の要素内の第1の識別子の位置を
決定するように指示す
るために使用され、前記第1の識別子は前記少なくとも2つの隣接する識別子のうちの1つである、前記生成するステップと、
前記第2のネットワーク装置が、前記第2のパケットを
前記第1のネットワーク装置に送信するステップと、を含む、
方法。
【請求項13】
前記複数の識別子は圧縮セグメント識別子であり、前記複数の識別子は1対1の方法で複数のセグメント識別子にマッピングされ、前記複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、各セグメント識別子の前記第1の部分はプレフィックス部分であり、前記複数のセグメント識別子のプレフィックス部分は同じであり、前記複数の識別子のそれぞれが、前記識別子がマッピングされるセグメント識別子内の第2の部分を含む、請求項
12に記載の方法。
【請求項14】
前記第1のパケットのパケットヘッダは、宛先アドレスフィールドを含むインターネットプロトコルバージョン6(IPv6)であり、該宛先アドレスフィールドには第1の部分及び第2の部分が含まれ、
前記第2のネットワーク装置が、前記セグメントリストを前記第1のパケットに追加して第2のパケットを前記生成するステップは、
前記第2のネットワーク装置が、前記宛先アドレスフィールド内の前記第1の部分に前記プレフィックス部分を追加するステップと、
前記第2のネットワーク装置が、前記複数の識別子のうちの1つ又は複数を前記宛先アドレスフィールド内の前記第2の部分に追加するステップと、を含む、請求項
13に記載の方法。
【請求項15】
前記セグメントリストには前記プレフィックス部分が含まれない、請求項
13又は
14に記載の方法。
【請求項16】
前記複数の識別子のうちの少なくとも1つは、マルチプロトコルラベルスイッチ(MPLS)ラベル又はインターネットプロトコルバージョン4(IPv4)アドレスである、請求項
12に記載の方法。
【請求項17】
前記第2のパケットには数量フラグが含まれ、該数量フラグの値は、前記少なくとも1つの識別子の数量を示すために使用される、請求項
16に記載の方法。
【請求項18】
前記第1のポインタは、前記第2のパケットのパケットヘッダに配置される、請求項
12乃至
17のいずれか一項に記載の方法。
【請求項19】
ネットワークシステムであって、当該ネットワークシステムは、第1のネットワーク装置及び第2のネットワーク装置を含み、
前記第1のネットワーク装置は、請求項1乃至
11のいずれか一項に記載の方法を実施するように構成されたネットワーク装置であり、前記第2のネットワーク装置は、請求項
12乃至
18のいずれか一項に記載の方法を実施するように構成されたネットワーク装置である、
ネットワークシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年8月31日に中国国家知識産権局に出願した、“METHOD FOR FORWARDING PACKET IN SR NETWORK, DEVICE, AND SYSTEM”という表題の中国特許出願第201910819877.6号に対する優先権を主張するとともに、2019年12月19日に中国国家知識産権局に出願した、“METHOD FOR FORWARDING PACKET IN SR NETWORK, DEVICE, AND SYSTEM”という表題の中国特許出願第201911317222.5号に対する優先権を主張するものであり、これらの文献は、その全体が参照により本明細書に組み込まれる。
【0002】
本願は、通信分野、特に、セグメントルーティング(segment routing, SR)ネットワークにおいてパケットを転送するための方法、ネットワーク装置、及びシステムに関連する。
【背景技術】
【0003】
SRは、ネットワーク上でデータパケットを転送するためのソースルーティングの概念に基づいて設計されたプロトコルである。SRは、送信元(source:ソース)ノード上でのデータパケットの転送パスの明示的な指定をサポートする。SRは、インターネットプロトコルバージョン6(Internet Protocol Version, IPv6)データプレーンに展開される場合に、IPv6セグメントルーティング(SRv6)と呼ばれる。SRは、マルチプロトコルラベルスイッチ(Multiple Protocol Label Switch, MPLS)データプレーンに展開される場合に、SR-MPLSと呼ばれる。SRv6は、IPv6ヘッダへの拡張であるセグメントルーティングヘッダ(segment routing header, SRH)を規定する。
【0004】
SRHにはセグメントリスト(segment list)が含まれ、セグメントリストには、順次配置される複数のセグメント識別子(segment identification, SID)が含まれ、各SIDは、パケットの転送パス上の1つのノード又はリンクに対応する。SRHはパケットにカプセル化され、SRH内のセグメントリストは、SRネットワークでのパケットの転送及び処理プロセスを担うために使用される。各SIDは128ビット(bit)のIPv6アドレスである。各SIDはパケット内で128ビットを占める。従って、SIDがセグメントリストに追加される度に、SRHの長さは128ビットだけ増加し、それに応じて、パケットの長さは128ビットだけ増加する。パケットの長さが長くなるため、転送プロセスでは帯域幅等の大量のネットワークリソースが占有される。例えば、パケットの転送パスに100個のノードが含まれる場合に、SRHには100個のSIDが含まれ、セグメントリストの長さは最大1600バイトになる。従って、セグメントリストが長過ぎるため、SRネットワークでのパケット伝送効率が低下する。
【発明の概要】
【0005】
本願は、セグメントリストが長過ぎるために、SRネットワークでのパケット伝送効率が低下するという技術的問題を解決するための、パケットを転送するための方法、装置、及びシステムを提供する。
【0006】
第1の態様によれば、パケットを転送するための方法が提供される。この方法は、第1のパケットを受信するステップであって、第1のパケットの第1のパケットヘッダには、第1のパケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は複数の識別子内の少なくとも2つの隣接する識別子を含み、第1のパケットには第1のポインタが含まれる、受信するステップと;第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定するステップであって、第1の識別子は少なくとも2つの識別子のうちの1つである、決定するステップと;第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーして、第2のパケットを生成するステップと;第2のパケットを送信するステップと;を含む。
【0007】
この方法は、パケットの転送パス上の中間ノードによって実行され得る。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置に対応する少なくとも2つの識別子をセグメントリスト内の128ビットの長さの要素に格納することができ、各識別子は128ビットを占める必要はない。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。各128ビット要素に格納される識別子の数量は、実際のネットワークステータスに基づいて調整することができる。1つの128ビット要素に複数の識別子が含まれる場合に、これらの識別子は、圧縮セグメント識別子(又はマイクロセグメントID、uSIDと呼ばれる)として理解され得る。要素内の圧縮セグメント識別子の位置は、パケットヘッダに含まれる第1のポインタを使用して正確且つ迅速に取得することができる。
【0008】
可能な実施態様では、複数の識別子は1対1の方法で複数のセグメント識別子にマッピングされ、複数のセグメント識別子のそれぞれは1つのネットワーク装置又は1つのリンクに対応し、複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、複数のセグメント識別子のそれぞれの第1の部分はプレフィックス(prefix)部分であり、複数のセグメント識別子のプレフィックス部分は同じであり、複数の識別子のそれぞれは、識別子がマッピングされるセグメント識別子内の第2の部分を含む。SIDのコンテンツの一部を省略することによってuSIDを取得することができる。ドメイン(domain)では、全てのネットワーク装置のSID内のBLOCK(ブロック)部分は同じである。従って、SID内のBLOCK部分を省略することによってuSIDを取得し、uSIDをセグメントリストに配置して、セグメントリストの長さを短くすることができる。
【0009】
可能な実施態様では、第2のパケットヘッダには宛先アドレス(destination address, DA)フィールドが含まれ、宛先(destination:送信先)アドレスフィールドには第1の部分及び第2の部分が含まれる。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーするステップは、第1の識別子から始まる少なくとも1つの識別子を宛先アドレスフィールド内の第2の部分にコピーするステップを含む。第1の識別子は、DAフィールドに追加すべき識別子であり、追加対象となる(to-be-added)識別子とも呼ばれ得る。さらに、第1の識別子はuSIDであり得る。セグメントリスト内の要素に複数の識別子が含まれる場合に、ネットワーク装置は、第1のポインタに基づいて、複数の識別子から第1の識別子を決定し、第1の識別子から始まる少なくとも1つの識別子をDAフィールドにコピーし、ここで、SID内のプレフィックス部分もDAフィールドに直接配置され、それによって、SID内のプレフィックス部分と第1の識別子から始まる少なくとも1つの識別子とを組み合わせて、パケット転送をガイドする。
【0010】
可能な実施態様では、複数の識別子の長さは同じである。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーする前に、この方法は、複数の識別子の長さ及びプレフィックス部分の長さに基づいて、少なくとも1つの識別子の数量を決定するステップをさらに含む。DAフィールドでは、一方の部分がプレフィックス部分で占められ、他方の部分が、DAフィールドにコピーされる少なくとも1つのuSIDで占められる。ネットワーク装置は、uSIDの長さ及びプレフィックス部分の長さに基づいて、DAフィールドにコピーすることができる少なくとも1つのuSIDの数量を決定することができる。
【0011】
可能な実施態様では、セグメントリストにはプレフィックス部分が含まれない。SRHをパケットに追加する場合に、ヘッドノードは、現在処理対象となる(to-be-processed)uSIDとuSIDに対応するBLOCK部分もDAフィールドに格納する。DAフィールド内のBLOCK部分に隣接するuSIDは、アクティブuSIDと呼ばれ得る。従って、アクティブuSIDと、アクティブuSIDと同じプレフィックス部分に対応する別のuSIDについて、セグメントリストは、これらのuSIDに対応するプレフィックス部分を格納せず、これらのuSIDのみを格納して、セグメントリストの長さを短くする。
【0012】
可能な実施態様では、第1のパケットには宛先アドレスフィールドが含まれ、宛先アドレスフィールドには第2の識別子が含まれ、第2の識別子は複数の識別子のうちの1つである。第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定する前に、この方法は、第2の識別子内のスイッチングフラグに基づいて、セグメントリストには第2の識別子のタイプとは異なるタイプの識別子が含まれると判定するステップをさらに含み;第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーするステップは、少なくとも1つの識別子を第2のパケットヘッダにコピーして、転送識別子スタックを形成するステップを含み、少なくとも1つの識別子のタイプが第2の識別子のタイプとは異なる。セグメントリストには、別のタイプの識別子、例えば、MPLSラベル又はインターネットプロトコルバージョン4(Internet Protocol, IPv4)のアドレスをさらに含めることができる。ネットワーク装置は、パケットヘッダにおいて転送識別子スタックを確立し、別のタイプの識別子を転送識別子スタックにコピーする。従って、この方法は、より多くのネットワークシナリオと互換性があり得、転送パス全体がセグメントリストを使用してプログラムされ、それにより転送効率が向上する。
【0013】
可能な実施態様では、第1のパケットには数量フラグが含まれる。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーする前に、この方法は、数量フラグの値に基づいて、少なくとも1つの識別子の数量を決定するステップをさらに含む。少なくとも1つの識別子は、別のタイプの識別子、例えばMPLSラベル又はIPv4アドレスである。別のタイプの識別子を転送識別子スタックにコピーする前に、ネットワーク装置は、最初に、数量フラグに基づいて別のタイプの識別子の数量を決定し、別のタイプの識別子の対応する数量を転送識別子スタックにコピーすることができる。
【0014】
可能な実施態様では、第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定するステップは、宛先アドレスフィールド内の冗長識別子の数量を決定するステップであって、冗長識別子のタイプが第2の識別子のタイプとは異なる、決定するステップと;冗長識別子の数量に基づいて第1のポインタの値を修正するステップと;第1のポインタの修正した値に基づいて、第1の要素内の第1の識別子の位置を決定するステップと;を含む。第1の識別子は、別のタイプの少なくとも1つの識別子の1番目の識別子であり、冗長識別子は、DAフィールドに追加されている別のタイプの識別子である。ネットワーク装置は、DAフィールドに追加されている別のタイプの識別子の数量に基づいて第1のポインタの値を修正し、第1のポインタの修正した値に基づいて、セグメントリスト内にあり且つDAフィールドに追加される少なくとも1つの識別子の開始位置を決定する。
【0015】
可能な実施態様では、第1の識別子から始まる少なくとも1つの識別子を転送識別子スタックにコピーするステップは、少なくとも1つの識別子の最後の識別子の次の識別子を、第1のパケットの宛先アドレスフィールドに追加するステップを含む。ネットワーク装置は、セグメントリスト内の別のタイプの識別子に続く圧縮されるセグメント識別子をDAフィールドにさらにコピーし、それによって、ネットワーク装置は、転送識別子スタックがポップアップされた後も、DAフィールドに基づいてパケットを転送し続ける。
【0016】
可能な実施態様では、少なくとも1つの識別子は、MPLSラベル又はIPv4アドレスである。別のタイプの識別子は、MPLSラベル又はIPv4アドレスであり得る。
【0017】
可能な実施態様では、第1のポインタは、第1のパケットヘッダに含まれる。第1のポインタは、SRH内の特定のフィールドにあってもよく、又はセグメントリスト内にあってもよい。
【0018】
可能な実施態様では、第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーした後に、この方法は、第1のポインタの値を変更するステップであって、これにより、第1のポインタの変更した値は、第1の要素内の第2の識別子の位置を示す(indicate:指し示す)ために使用され、第2の識別子は少なくとも1つの識別子に属していない、変更するステップをさらに含む。ネットワーク装置は第1のポインタの値を変更し、それによって、第1のポインタの値は常に追加対象となる識別子を指す。従って、転送パス上のネットワーク装置は、その後も継続して、第1のポインタの値に基づいて追加対象となる識別子ポインタを決定することができる。
【0019】
可能な実施態様では、第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーした後に、この方法は、第1のポインタの値を変更するステップであって、これにより、第1のポインタの変更した値は、第2の要素内の第2の識別子の位置を示すために使用され、第2の識別子は少なくとも1つの識別子に属しておらず、第2の要素は第1の要素とは異なる、変更するステップをさらに含む。現在の要素の識別子を処理した後に、ネットワーク装置は、第1のポインタを次の要素の識別子に向けることができる。例えば、ネットワーク装置は、第1のポインタの値を0にリセットして、次の要素の開始位置を指し示す。
【0020】
第2の態様によれば、パケットを転送するための方法が提供される。この方法は、第1のパケットを受信するステップと;セグメントリストを取得するステップであって、セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、取得するステップと;セグメントリストを第1のパケットに追加して第2のパケットを生成するステップであって、第2のパケットには第1のポインタが含まれ、第1のポインタの値は第1の要素内の第1の識別子の位置を示すために使用され、第1の識別子は少なくとも2つの識別子のうちの1つである、生成するステップと;第2のパケットを送信するステップと;を含む。
【0021】
この方法は、パケットの転送パス上の入力ノードによって実行され得る。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置に対応する少なくとも2つの識別子を、セグメントリスト内の128ビットの長さの要素に格納することができ、各識別子は128ビットを占める必要はない。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。各128ビット要素に格納される識別子の数量は、実際のネットワークステータスに基づいて調整することができる。1つの128ビット要素に複数の識別子が含まれる場合に、パケットの転送パス上の入力ノードは、第1のポインタをパケットヘッダに追加して、要素内の異なる識別子の位置を示し、それによって、パケットの転送パス上の中間ノードは、要素内の識別子の位置を正確且つ迅速に取得することができる。
【0022】
可能な実施態様では、複数の識別子は1対1の方法で複数のセグメント識別子にマッピングされ、複数のセグメント識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、各セグメント識別子内の第1の部分はプレフィックス部分であり、複数のセグメント識別子のプレフィックス部分は同じであり、複数の識別子のそれぞれは、識別子がマッピングされるセグメント識別子内の第2の部分を含む。SIDのコンテンツの一部を省略することによってuSIDを取得することができる。ドメインでは、全てのネットワーク装置のSID内のBLOCK部分は同じである。従って、SID内のBLOCK部分を省略することによってuSIDを取得し、uSIDをセグメントリストに配置して、セグメントリストの長さを短くすることができる。
【0023】
可能な実施態様では、第1のパケットのパケットヘッダには宛先アドレスフィールドが含まれ、宛先アドレスフィールドには第1の部分及び第2の部分が含まれる。セグメントリストを第1のパケットに追加して第2のパケットを生成するステップは、宛先アドレスフィールド内の第1の部分にプレフィックス部分を追加するステップと;複数の識別子のうちの1つ又は複数を宛先アドレスフィールド内の第2の部分に追加するステップと;を含む。SID内のプレフィックス部分がセグメントリスト内のuSIDで省略されるため、転送パス上の入力ノードは、プレフィックス部分をDAフィールドに直接追加し、さらにセグメントリストの1番目の識別子をDAフィールドに追加し、それによって、SID内のプレフィックス部分と第1の識別子とを組み合わせて、パケット転送をガイドする。
【0024】
可能な実施態様では、セグメントリストにはプレフィックス部分が含まれない。SID内のプレフィックス部分はDAフィールドに格納される。セグメントリストの長さを短くするために、セグメントリストにはuSIDのみが格納され、プレフィックス部分をSIDに格納しない。
【0025】
可能な実施態様では、複数の識別子のうちの少なくとも1つは、MPLSラベル又はIPv4アドレスである。
【0026】
可能な実施態様では、第2のパケットには数量フラグが含まれ、数量フラグの値は、少なくとも1つの識別子の数量を示すために使用される。セグメントリストには、別のタイプの識別子がさらに含まれ得る。この場合に、転送パス上の入力ノードは、別のタイプの識別子の数量を示すために、数量フラグをパケットに追加する。
【0027】
可能な実施態様では、第1のポインタは、第2のパケットのパケットヘッダに配置される。第1のポインタは、SRH内の特定のフィールドにあってもよく、又はセグメントリスト内にあってもよい。
【0028】
可能な実施態様では、第2のパケットには第2のポインタがさらに含まれ、第2のポインタの値は、セグメントリスト内の第1の要素の位置を示すために使用される。第2のポインタは、残りセグメント(Segment Left, SL)ポインタであり得る。
【0029】
可能な実施態様では、セグメントリストを取得するステップは、セグメントリストを受信するステップを含む。セグメントリストは、ネットワーク内のコントローラから転送パス上の入力ノードによって受信され得る。
【0030】
可能な実施態様では、セグメントリストを取得するステップは、第1のパケットの転送パスを決定するステップと、転送パスに対応するセグメントリストを生成するステップとを含む。セグメントリストは、転送パス上の入力ノードによって生成され得る。
【0031】
第3の態様によれば、パケットを転送するために使用されるセグメントリストを生成するための方法が提供される。この方法は、パケットの転送パスを決定するステップであって、転送パスには複数のネットワーク装置が含まれる、決定するステップと;転送パスに対応するセグメントリストを生成するステップであって、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、生成するステップと;を含む。
【0032】
この方法は、セグメントリストを生成するネットワーク装置によって実行され得る。セグメントリストを生成するネットワーク装置は、ネットワーク内のコントローラであってもよく、又はネットワーク内のパケットの転送パス上の入力ノードであってもよい。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置は、128ビット毎に1つの識別子だけを格納するのではなく、セグメントリスト内の128ビットの長さの要素に、ネットワーク装置に対応する少なくとも2つの識別子を格納する。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。各128ビット要素に格納される識別子の数量は、実際のネットワークステータスに基づいて調整することができる。1つの128ビット要素に複数の識別子が含まれる場合に、これらの識別子は圧縮セグメント識別子(uSID)として理解することができる。
【0033】
可能な実施態様では、複数の識別子は、1対1の方法で複数のセグメント識別子にマッピングされ、複数のセグメント識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、各セグメント識別子内の第1の部分はプレフィックス部分であり、複数の識別子のそれぞれは、識別子がマッピングされるセグメント識別子内の第2の部分を含む。SIDのコンテンツの一部を省略することによってuSIDを取得することができる。ドメインでは、全てのネットワーク装置のSID内のBLOCK部分は同じである。従って、SID内のBLOCK部分を省略することによってuSIDを取得し、uSIDをセグメントリストに配置して、セグメントリストの長さを短くすることができる。
【0034】
可能な実施態様では、複数のセグメント識別子内のセグメント識別子には第3の部分がさらに含まれ、第3の部分はパディング部分であり、複数のセグメント識別子内のパディング部分は同じであり、複数のセグメント識別子内の識別子にはパディング部分が含まれない。uSID内の関数フィールドは圧縮関数フィールドであり得、圧縮関数フィールドの長さは非圧縮関数フィールドの長さよりも短い。従って、uSIDの長さはSIDの長さよりも短く、uSIDはセグメントリストに配置され、セグメントリストの長さを短くする。
【0035】
可能な実施態様では、複数のセグメント識別子には第1のセグメント識別子が含まれ、セグメントリストには第1のセグメント識別子のプレフィックス部分が含まれない。複数のセグメント識別子には第1のセグメント識別子が含まれ、セグメントリストには第1のセグメント識別子のプレフィックス部分が含まれない。セグメントリストの長さを短くするために、セグメントリストにはuSIDのみが格納されるが、プレフィックス部分はSIDに格納されない。
【0036】
可能な実施態様では、複数のセグメント識別子には第2のセグメント識別子がさらに含まれ、第1のセグメント識別子のプレフィックス部分は、第2のセグメント識別子のプレフィックス部分とは異なり、セグメントリストには第2のセグメント識別子のプレフィックス部分が含まれる。転送パス上の複数のネットワーク装置が異なるネットワークドメインに属している場合に、これらのネットワーク装置のSIDには少なくとも2種類のプレフィックス部分がある。この場合に、第1のタイプのプレフィックス部分はセグメントリストに格納されず、第2のタイプのプレフィックス部分はセグメントリストに格納される。第1のタイプのプレフィックス部分は、転送パス上の入力ノードによってDAフィールドに直接配置される。
【0037】
可能な実施態様では、複数の識別子のうちの少なくとも1つは、セグメント識別子、MPLSラベル、又はIPv4アドレスである。
【0038】
可能な実施態様では、セグメントリストには数量フラグがさらに含まれ、数量フラグの値は、少なくとも1つの他の識別子の数量を示すために使用される。
【0039】
可能な実施態様では、転送パスに対応するセグメントリストを生成した後に、この方法は、セグメントリストを転送パス上の入力装置に送信するステップ、又は、セグメントリストをパケットにカプセル化して、パケットを送信するステップをさらに含む。セグメントリストを生成するネットワーク装置がネットワーク内のコントローラである場合に、コントローラは、セグメントリストを生成し、セグメントリストを転送パス上の入力ノードに送信し、それによって、入力ノードは、セグメントリストをパケットにカプセル化してパケット転送をガイドする。セグメントリストを生成するネットワーク装置がパケットの転送パス上の入力ノードである場合に、入力ノードは、セグメントリストをパケットにカプセル化して、パケットの転送をガイドする。
【0040】
第4の態様によれば、ネットワーク装置が提供され、このネットワーク装置は、第1の態様又は第1の態様の可能な実施態様のいずれか1つ、或いは第15の態様又は第15の態様の可能な実施態様のいずれか1つによる方法を実行する。具体的には、ネットワーク装置は、第1の態様又は第1の態様の可能な実施態様のいずれか1つ、或いは第15の態様又は第15の態様の可能な実施態様のいずれか1つによる方法を実行するように構成されたユニットを含む。
【0041】
第5の態様によれば、ネットワーク装置が提供され、このネットワーク装置は、第2の態様又は第2の態様の可能な実施態様のいずれか1つ、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行する。具体的には、ネットワーク装置は、第2の態様又は第2の態様の可能な実施態様のいずれか1つ、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行するように構成されたユニットを含む。
【0042】
第6の態様によれば、ネットワーク装置が提供され、このネットワーク装置は、第3の態様又は第3の態様の可能な実施態様のいずれか1つによる方法を実行する。具体的には、ネットワーク装置は、第3の態様又は第3の態様の可能な実施態様のいずれか1つによる方法を実行するように構成されたユニットを含む。
【0043】
第7の態様によれば、ネットワーク装置が提供される。ネットワーク装置は、プロセッサ、通信インターフェイス、及びメモリを含む。通信インターフェイスはトランシーバであり得る。メモリは、プログラムコードを格納するように構成され得、プロセッサは、メモリ内のプログラムコードを呼び出して、第1の態様又は第1の態様の可能な実施態様のいずれか1つ、或いは第15の態様又は第15の態様の可能な実施態様のいずれか1つによる方法を実行するように構成される。詳細については、ここでは再び説明しない。
【0044】
第8の態様によれば、ネットワーク装置が提供される。ネットワーク装置は、プロセッサ、通信インターフェイス、及びメモリを含む。通信インターフェイスはトランシーバであり得る。メモリは、プログラムコードを格納するように構成され得、プロセッサは、メモリ内のプログラムコードを呼び出して、第2の態様又は第2の態様の可能な実施態様のいずれか1つ、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行するように構成する。詳細については、ここでは再び説明しない。
【0045】
第9の態様によれば、ネットワーク装置が提供される。ネットワーク装置は、プロセッサ、通信インターフェイス、及びメモリを含む。通信インターフェイスはトランシーバであり得る。メモリは、プログラムコードを格納するように構成され得、プロセッサは、メモリ内のプログラムコードを呼び出して、第3の態様又は第3の態様の可能な実施態様のいずれか1つによる方法を実行するように構成される。詳細については、ここでは再び説明しない。
【0046】
第10の態様によれば、ネットワークシステムが提供される。ネットワークシステムは、第4の態様、第5の態様、又は第6の態様によるネットワーク装置を含むか、又はネットワークシステムは、第7の態様、第8の態様、又は第9の態様によるネットワーク装置を含む。
【0047】
第11の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は命令を記憶し、命令がコンピュータで実行されると、コンピュータは、第1の態様又は第1の態様の可能な実施態様のいずれか1つ、第2の態様又は第2の態様の可能な実施態様のいずれか1つ、第3の態様又は第3の態様の可能な実施態様のいずれか1つ、第15の態様又は第15の態様の可能な実施態様のいずれか1つ、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行することができる。
【0048】
第12の態様によれば、コンピュータプログラム命令を含むコンピュータプログラム製品が提供される。コンピュータプログラム製品がネットワーク装置で実行されると、ネットワーク装置は、第1の態様又は第1の態様の可能な実施態様のいずれか1つ、第2の態様又は第2の態様の可能な実施態様のいずれか1つ、第3の態様又は第3の態様の可能な実施態様のいずれか1つ、第15の態様又は第15の態様の可能な実施態様のいずれか1つ、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つを実行することができる。
【0049】
第13の態様によれば、チップが提供され、このチップは、メモリ及びプロセッサを含む。メモリは、コンピュータプログラムを格納するように構成され、プロセッサは、メモリからコンピュータプログラムを呼び出してコンピュータプログラムを実行し、第1の態様及び第1の態様の可能な実施態様のいずれか1つによる方法、第2の態様又は第2の態様の可能な実施態様のいずれか1つによる方法、第3の態様又は第3の態様の可能な実施態様のいずれか1つによる方法、第15の態様又は第15の態様の可能な実施態様のいずれか1つによる方法、或いは第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行するように構成される。
【0050】
オプションで、チップはプロセッサのみを含む。プロセッサは、メモリに格納したコンピュータプログラムを読み取って実行するように構成され、コンピュータプログラムが実行されると、プロセッサは、第1の態様及び第1の態様の可能な実施態様のいずれか1つによる方法を実行し、プロセッサは、第2の態様又は第2の態様の可能な実施態様のいずれか1つによる方法を実行し、プロセッサは、第3の態様又は第3の態様の可能な実施態様のいずれか1つによる方法を実行し、プロセッサは、第15の態様又は第15の態様の可能な実施態様のいずれか1つによる方法を実行し、或いはプロセッサは、第16の態様又は第16の態様の可能な実施態様のいずれか1つによる方法を実行する。
【0051】
第14の態様によれば、パケットを転送するための方法が提供される。この方法は、第1のパケットを受信するステップであって、第1のパケットの第1のパケットヘッダには、第1のパケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子内の識別子は、1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには第1の要素及び第2の要素が含まれ、第1の要素の長さ及び第2の要素の長さはそれぞれ128ビットであり、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含み;第1のパケットの第2のパケットヘッダには宛先アドレスフィールドが含まれ、宛先アドレスフィールドには第1の識別子が含まれ、第1の識別子は、複数の識別子のうちの1つである、受信するステップと;第1の識別子の識別子に従って第2の要素を宛先アドレスフィールドに追加して、第2のパケットを生成するステップと;第2のパケットを送信するステップと;を含む。
【0052】
この方法は、パケットの転送パス上の中間ノードによって実行され得る。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置に対応する少なくとも2つの識別子をセグメントリスト内の128ビットの長さの要素に格納することができ、各識別子は128ビットを占める必要はない。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。1つの128ビット要素に複数の識別子が含まれる場合に、これらの識別子は圧縮セグメント識別子(uSID)として理解することができる。セグメントリストには、長さが128ビットであるセグメント識別子(SID)をさらに格納することができる。換言すると、SIDとuSIDとの両方がセグメントリストに格納される。DAフィールドに追加される場合に、SID及びuSIDは異なる追加方法に対応する。従って、uSIDとSIDとの間にスイッチングフラグを設定する必要がある。ネットワーク装置は、DAフィールドからスイッチングフラグを取得し、スイッチングフラグの指標に従って対応する追加方法を使用することができる。例えば、SIDをDAフィールドに追加する場合に、ネットワーク装置は、セグメントリスト内の長さが128ビットである要素全体をDAフィールドに追加して、パケット転送を確実にする。
【0053】
第15の態様によれば、パケットを転送するための方法が提供される。この方法は、第1のパケットを受信するステップであって、第1のパケットの第1のパケットヘッダには、第1のパケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含み、第1のパケットには第1のポインタが含まれる、受信するステップと;第1のポインタの値に基づいて、セグメントリスト内の第1の識別子の位置を決定するステップであって、第1の識別子は少なくとも2つの識別子のうちの1つである、決定するステップと;第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーして、第2のパケットを生成するステップと;第2のパケットを送信するステップと;を含む。
【0054】
この方法は、パケットの転送パス上の中間ノードによって実行され得る。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置に対応する少なくとも2つの識別子をセグメントリスト内の128ビットの長さの要素に格納することができ、各識別子は128ビットを占める必要はない。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。各128ビット要素に格納される識別子の数量は、実際のネットワークステータスに基づいて調整することができる。1つの128ビット要素に複数の識別子が含まれる場合に、これらの識別子は圧縮セグメント識別子(又はマイクロセグメントID、uSIDと呼ばれる)として理解することができる。要素内の圧縮セグメント識別子の位置は、パケットヘッダに含まれる第1のポインタを使用して正確且つ迅速に取得することができる。
【0055】
可能な実施態様では、複数の識別子は、1対1の方法で複数のセグメント識別子にマッピングされ、複数のセグメント識別子のそれぞれは、1つのネットワーク装置又は1つのリンクに対応し、複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、複数のセグメント識別子のそれぞれの第1の部分はプレフィックス部分であり、複数のセグメント識別子のプレフィックス部分は同じであり、複数の識別子のそれぞれは、識別子がマッピングされるセグメント識別子内の第2の部分を含む。SIDのコンテンツの一部を省略することによってuSIDを取得することができる。ドメイン(domain)では、全てのネットワーク装置のSID内のBLOCK部分は同じである。従って、SID内のBLOCK部分を省略することによってuSIDを取得し、uSIDをセグメントリストに配置して、セグメントリストの長さを短くすることができる。
【0056】
可能な実施態様では、第2のパケットヘッダには宛先アドレス(destination address, DA)フィールドが含まれ、宛先アドレスフィールドには第1の部分及び第2の部分が含まれる。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーするステップは、第1の識別子から始まる少なくとも1つの識別子を宛先アドレスフィールド内の第2の部分にコピーするステップを含む。第1の識別子は、DAフィールドに追加すべき識別子であり、追加対象となる識別子とも呼ばれ得る。さらに、第1の識別子はuSIDであり得る。セグメントリスト内の要素に複数の識別子が含まれる場合に、ネットワーク装置は、第1のポインタに基づいて複数の識別子から第1の識別子を決定し、第1の識別子から始まる少なくとも1つの識別子をDAフィールドにコピーし、ここで、SID内のプレフィックス部分もDAフィールドに直接配置され、それによって、SID内のプレフィックス部分と第1の識別子から始まる少なくとも1つの識別子とを組み合わせて、パケット転送をガイドする。
【0057】
可能な実施態様では、複数の識別子の長さは同じである。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーする前に、この方法は、複数の識別子の長さ及び複数のプレフィックス部分の長さに基づいて少なくとも1つの識別子の数量を決定するステップをさらに含む。DAフィールドでは、一方の部分がプレフィックス部分で占められ、他方の部分がDAフィールドにコピーされる少なくとも1つのuSIDで占められる。ネットワーク装置は、uSIDの長さ及びプレフィックス部分の長さに基づいて、DAフィールドにコピーすることができる少なくとも1つのuSIDの数量を決定することができる。
【0058】
可能な実施態様では、セグメントリストにはプレフィックス部分が含まれない。SRHをパケットに追加する場合に、ヘッドノードはまた、現在処理対象となるuSIDとuSIDに対応するBLOCK部分とをDAフィールドに格納する。DAフィールド内のBLOCK部分に隣接するuSIDは、アクティブuSIDと呼ばれ得る。従って、アクティブuSIDと、アクティブuSIDと同じプレフィックス部分に対応する別のuSIDとについて、セグメントリストは、これらのuSIDに対応するプレフィックス部分を格納せず、これらのuSIDのみを格納して、セグメントリストの長さを短くすることができる。
【0059】
可能な実施態様では、第1のパケットには宛先アドレスフィールドが含まれ、宛先アドレスフィールドには第2の識別子が含まれ、第2の識別子は複数の識別子のうちの1つである。第1のポインタの値に基づいてセグメントリスト内の第1の識別子の位置を決定する前に、この方法は、第2の識別子内のスイッチングフラグに基づいて、セグメントリストには第2の識別子のタイプとは異なるタイプの識別子が含まれると判定するステップをさらに含み、第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーするステップは、少なくとも1つの識別子を第2のパケットヘッダにコピーして、転送識別子スタックを形成するステップを含み、少なくとも1つの識別子のタイプが第2の識別子のタイプとは異なる。セグメントリストには、別のタイプの識別子、例えば、MPLSラベル、又はインターネットプロトコルバージョン4(Internet Protocol, IPv4)アドレスをさらに含めることができる。ネットワーク装置は、パケットヘッダに転送識別子スタックを確立し、別のタイプの識別子を転送識別子スタックにコピーする。従って、この方法は、より多くのネットワークシナリオと互換性があり、転送パス全体がセグメントリストを使用してプログラムされ、それにより転送効率が向上する。
【0060】
可能な実施態様では、第1のパケットには数量フラグが含まれる。第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーする前に、この方法は、数量フラグの値に基づいて少なくとも1つの識別子の数量を決定するステップをさらに含む。少なくとも1つの識別子は、別のタイプの識別子、例えばMPLSラベル又はIPv4アドレスである。別のタイプの識別子を転送識別子スタックにコピーする前に、ネットワーク装置は、最初に、数量フラグに基づいて別のタイプの識別子の数量を決定し、別のタイプの識別子の対応する数量を転送識別子スタックにコピーすることができる。
【0061】
可能な実施態様では、第1の識別子から始まる少なくとも1つの識別子を転送識別子スタックにコピーするステップは、少なくとも1つの識別子の最後の識別子の次の識別子を、第1のパケットの宛先アドレスフィールドに追加するステップを含む。ネットワーク装置は、セグメントリスト内の別のタイプの識別子に続く圧縮セグメント識別子をDAフィールドにさらにコピーし、それによって、ネットワーク装置は、転送識別子スタックがポップアップされた後も、DAフィールドに基づいてパケットを転送し続ける。
【0062】
可能な実施態様では、少なくとも1つの識別子は、MPLSラベル又はIPv4アドレスである。別のタイプの識別子は、MPLSラベル又はIPv4アドレスであり得る。
【0063】
可能な実施態様では、第1のポインタは、第1のパケットヘッダに含まれる。第1のポインタは、SRH内の特定のフィールドにあってもよく、又はセグメントリスト内にあってもよい。
【0064】
可能な実施態様では、第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーした後に、この方法は、第1のポインタの値を変更するステップであって、これにより、第1のポインタの変更した値は、セグメントリスト内の第2の識別子の位置を示すために使用され、第2の識別子は、少なくとも1つの識別子に属していない、変更するステップをさらに含む。ネットワーク装置は、第1のポインタの値を変更し、それによって、第1のポインタの値が常に追加対象となる識別子を指す。従って、転送パス上のネットワーク装置は、第1のポインタの値に基づいて、その後も、追加対象となる識別子を決定し続けることができる。
【0065】
第16の態様によれば、パケットを転送するための方法が提供される。この方法は、第1のパケットを受信するステップと;セグメントリストを取得するステップであって、セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、取得するステップと;セグメントリストを第1のパケットに追加して第2のパケットを生成するステップであって、第2のパケットには第1のポインタが含まれ、第1のポインタの値はセグメントリスト内の第1の識別子の位置を示すために使用され、第1の識別子は少なくとも2つの識別子のうちの1つである、生成するステップと;第2のパケットを送信するステップと;を含む。
【0066】
この方法は、パケットの転送パス上の入力ノードによって実行され得る。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。ネットワーク装置に対応する少なくとも2つの識別子をセグメントリスト内の128ビットの長さの要素に格納することができ、各識別子は128ビットを占める必要はない。従って、セグメントリストの長さが短くなり、パケットの長さが短くなり、パケット伝送効率が向上する。各128ビット要素に格納される識別子の数量は、実際のネットワークステータスに基づいて調整することができる。1つの128ビット要素に複数の識別子が含まれる場合に、パケットの転送パス上の入力ノードは、第1のポインタをパケットヘッダに追加して、セグメントリスト内の異なる識別子の位置を示し、それによって、パケットの転送パス上の中間ノードは、セグメントリスト内の識別子の位置を正確且つ迅速に取得することができる。
【0067】
可能な実施態様では、複数の識別子は、1対1の方法で複数のセグメント識別子にマッピングされ、複数のセグメント識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、複数のセグメント識別子のそれぞれには第1の部分及び第2の部分が含まれ、各セグメント識別子内の第1の部分はプレフィックス部分であり、複数のセグメント識別子のプレフィックス部分は同じであり、複数の識別子のそれぞれは、識別子がマッピングされるセグメント識別子内の第2の部分を含む。SIDのコンテンツの一部を省略することによってuSIDを取得することができる。ドメインでは、全てのネットワーク装置のSID内のBLOCK部分は同じである。従って、SID内のBLOCK部分を省略することによってuSIDを取得し、uSIDをセグメントリストに配置して、セグメントリストの長さを短くすることができる。
【0068】
可能な実施態様では、第1のパケットのパケットヘッダには宛先アドレスフィールドが含まれ、宛先アドレスフィールドには第1の部分及び第2の部分が含まれる。セグメントリストを第1のパケットに追加して第2のパケットを生成するステップは、宛先アドレスフィールド内の第1の部分にプレフィックス部分を追加するステップと;複数の識別子のうちの1つ又は複数を、宛先アドレスフィールド内の第2の部分に追加するステップと;を含む。SID内のプレフィックス部分がセグメントリスト内のuSIDで省略されるため、転送パス上の入力ノードはプレフィックス部分をDAフィールドに直接追加し、さらにセグメントリストの第1番目の識別子をDAフィールドに追加し、それによって、SID内のプレフィックス部分と第1の識別子を組み合わせて、パケット転送をガイドする。
【0069】
可能な実施態様では、セグメントリストにはプレフィックス部分が含まれない。SID内のプレフィックス部分はDAフィールドに格納される。セグメントリストの長さを短くするために、セグメントリストにはuSIDのみが格納され、プレフィックス部分をSIDに格納しない。
【0070】
可能な実施態様では、複数の識別子のうちの少なくとも1つは、MPLSラベル又はIPv4アドレスである。
【0071】
可能な実施態様では、第2のパケットには数量フラグが含まれ、数量フラグの値は、少なくとも1つの識別子の数量を示すために使用される。セグメントリストには、別のタイプの識別子がさらに含まれ得る。この場合に、転送パス上の入力ノードは、別のタイプの識別子の数量を示すために、数量フラグをパケットに追加する。
【0072】
可能な実施態様では、第1のポインタは、第2のパケットのパケットヘッダに配置される。第1のポインタは、SRH内の特定のフィールドにあってもよく、又はセグメントリスト内にあってもよい。
【0073】
可能な実施態様では、セグメントリストを取得するステップは、セグメントリストを受信するステップを含む。セグメントリストは、ネットワーク内のコントローラから転送パス上の入力ノードによって受信され得る。
【0074】
可能な実施態様では、セグメントリストを取得するステップは、第1のパケットの転送パスを決定するステップと;転送パスに対応するセグメントリストを生成するステップと;を含む。セグメントリストは、転送パス上の入力ノードによって生成され得る。
【図面の簡単な説明】
【0075】
本願の技術的解決策をより明確に説明するために、以下では、実施形態を説明するための添付の図面について簡単に説明する。以下の添付図面は、本願のいくつかの実施形態を単に示しているだけであり、当業者は、創造的な努力なしに、これらの添付の図面から他の技術的解決策及び添付の図面を導き出すことができることは明らかである。
【
図1】本願の一実施形態による適用シナリオの概略図である。
【
図2】本願の一実施形態によるSIDのフォーマットの概略図である。
【
図3】本願の一実施形態によるパケットの概略構造図である。
【
図4】本願の一実施形態によるセグメントリストの概略構造図である。
【
図5】本願の一実施形態によるSIDの概略構造図である。
【
図6】本願の一実施形態によるセグメントリストの概略構造図である。
【
図7】本願の一実施形態によるセグメントリストの概略構造図である。
【
図8】本願の一実施形態によるセグメントリストの概略構造図である。
【
図9】本願の一実施形態によるパケットの概略構造図である。
【
図10】本願の一実施形態によるパケットの概略構造図である。
【
図11】本願の一実施形態によるパケットの概略構造図である。
【
図12】本願の一実施形態によるパケットの概略構造図である。
【
図13】本願の一実施形態によるパケットの概略構造図である。
【
図14】本願の一実施形態によるパケットの概略構造図である。
【
図15】本願の一実施形態によるパケットの概略構造図である。
【
図16】本願の一実施形態によるパケットの概略構造図である。
【
図17】本願の一実施形態によるパケットの概略構造図である。
【
図18】本願の一実施形態によるパケット処理方法のフローチャートである。
【
図19】本願の一実施形態によるパケット処理方法のフローチャートである。
【
図20】本願の一実施形態によるネットワーク装置の概略構造図である。
【
図21】本願の一実施形態によるネットワーク装置の概略構造図である。
【
図22】本願の一実施形態によるネットワーク装置の概略構造図である。
【
図23】本願の一実施形態によるネットワーク装置の概略構造図である。
【
図24】本願の一実施形態によるネットワーク装置の概略構造図である。
【
図25】本願の一実施形態によるネットワークシステムの概略構造図である。
【発明を実施するための形態】
【0076】
以下では、添付の図面を参照して、本願の実施形態について説明する。
【0077】
図1は、本願の一実施形態による可能な適用シナリオを示している。適用シナリオのネットワークは、ネットワーク装置を含み、具体的には、ネットワーク装置S、ネットワーク装置1、ネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、ネットワーク装置9、ネットワーク装置10、ネットワーク装置11、及びネットワーク装置12を含む。これらのネットワーク装置は、スイッチ、ルータ、又はフォワーダであり得る。ネットワーク装置Sは、ネットワーク入力装置であり得る。ネットワークは、
図1には示されていないコントローラをさらに含み得る。コントローラは、ネットワーク装置1~10に接続され得る。コントローラは、パケットの転送パスに対応するセグメントリストを生成し、セグメントリストをネットワーク入力装置に送信することができる。コントローラは、ネットワーク構成情報を含む制御パケットをネットワーク装置1~12に送信することができる。本願のこの実施形態におけるネットワーク装置は、ネットワークノード又はノードとも呼ばれ得る。
【0078】
ネットワーク装置Sは、SRをサポートするネットワーク装置である。ネットワーク装置1~ネットワーク装置12は、SRをサポートするネットワーク装置であり得る。具体的には、ネットワーク装置は、SRv6をサポートするネットワーク装置であってもよく、又はネットワーク装置は、MPLSをサポートするネットワーク装置であってもよい。ネットワーク装置1~ネットワーク装置12は、代替的に、IPv4をサポートするがSRをサポートしないネットワーク装置であってもよい。
【0079】
SRネットワークでは、パケット処理プロセスには複数のセグメントが含まれ、各セグメントは、パケットを処理するための命令又は命令セットである。SRv6ネットワークでは、各セグメントには対応するセグメント識別子、つまりSIDがある。セグメント識別子には、2つのタイプ:ノードセグメント識別子(node SID)及び隣接セグメント識別子(adjacent SID)がある。
図2は、SRv6ネットワークにおけるSIDのフォーマットを示している。
図2に示されるように、各SIDは、ロケータ(Locator)フィールド及び関数(Function)フィールドを含み得る。
【0080】
SID内のロケータフィールドは、セグメントに含まれる命令又は命令セットを実行する特定のネットワーク装置を見つけるために使用される。ロケータフィールドには、プレフィックス(BLOCK)部分及びシーケンス番号(Node ID)部分が含まれる。SRv6ネットワークドメイン(domain)では、ネットワーク装置のSID内のプレフィックス部分が同じであり得る。SRv6ネットワークドメイン(domain)では、ネットワーク装置のSID内のシーケンス番号部分が異なり、各シーケンス番号部分は、ドメインにおいてネットワーク装置を一意に決定するために使用される。特定のSIDについて、SID内のシーケンス番号部分を使用して一意に決定されるネットワーク装置は、SIDによって識別されるセグメントを実行するネットワーク装置である。
【0081】
SID内の関数フィールドは、セグメントに含まれる命令又は命令セットの特定のコンテンツ、つまりSRv6ネットワークの関数(Function:機能)を示すために使用される。SRv6ネットワークの関数は、パラメータをさらに含むことができ、パラメータは、SID内のパラメータ(引数)フィールド(
図2には示されていない)によって示される。関数にパラメータが含まれない場合に、SIDはパラメータフィールドを含まない場合がある。
【0082】
一般に、SRv6ネットワークにおけるSIDの全長は128ビットである。ロケータフィールド及び関数フィールドは別々に特定の長さであり、これらの特定の長さはネットワーク設定によって変更することができる。例えば、ロケータフィールドは48ビットであり、関数フィールドは80ビットである。あるいはまた、ロケータフィールドは64ビットであり、関数フィールドは64ビットである。あるいはまた、ロケータフィールドは48ビットであり、関数フィールドは64ビットであり、パラメータフィールドは16ビットである。
【0083】
セグメントリストには複数のSIDが含まれる。
図3は、SRv6ネットワークにおけるパケットのフォーマットを示している。
図3に示されるように、パケットのパケットヘッダは、IPv6パケットヘッダ及びSRHを含む。IPv6パケットヘッダは、宛先アドレス(destination address, DA)フィールドを含む。SRHはセグメントリストを含み、セグメントリストは順次配置される複数のSIDを含む。これらのSIDは、ノードセグメント識別子、隣接セグメント識別子、又はノードセグメント識別子と隣接セグメント識別子との組合せであり得る。
【0084】
セグメントリストは、パケットの転送パス上の入力ノードによってパケット内にカプセル化され得る。パケットの転送パス上のネットワーク装置は、その後、パケット内のセグメントリストに基づいてパケットを処理することができる。具体的には、パケットは、転送パス上の入力ノードによって送信され、転送パス上の特定のネットワーク装置によって受信される。ネットワーク装置が、パケットのIPv6パケットヘッダ内のDAフィールドにネットワーク装置のSIDが含まれると判定した場合に、ネットワーク装置は、SIDによって識別されるセグメントに対応する命令セットに従ってパケットを処理する。パケットを処理する特定の方法は、例えばパケットを転送することであり得る。ネットワーク装置はDAフィールドをさらに更新する必要がある。DAフィールドを更新するプロセスでは、SRH内の残りセグメント(segments left, SL)ポインタを使用する必要がある。
図3に示されるように、セグメントリストは、順次配置される複数のSID:セグメントリスト[0]~セグメントリスト[n]を含む。複数のSIDは、パケットの転送パス上の複数のネットワーク装置に別々に対応し、複数のネットワーク装置は、複数のセグメントに対応する命令セットを別々に実行する。SLポインタは、セグメントリスト内の複数のSIDを順番に指すことができる。具体的には、パケット処理プロセスでは、セグメントが実行されると、SLポインタの値が更新される。各更新後に、セグメントリスト内でSLポインタが指す位置は、1つのSIDの長さ、つまり128ビットだけオフセットされる。セグメントリスト内の複数のSIDによって示される複数のセグメントが順次実行されるため、SLポインタの値は継続的に更新される。従って、SLポインタは、セグメントリスト内の残りの処理対象のセグメントの数量を示すために使用される。換言すると、SLポインタの各値は、セグメントリスト内の残りの処理対象のセグメントの特定の数量に対応し、SLポインタは常に現在処理対象となるSIDを指す。また、複数のSIDによって示されるセグメントのシーケンスに基づいて、パケット処理プロセスにおいて、複数のSIDは、セグメントリスト内に降順で配置される。具体的には、最初に実行されるセグメントのSIDがセグメントリストの下部に配置され、その後に実行されるセグメントのSIDが上に順番に配置され、最後に実行されるセグメントのSIDがセグメントリストの上部に配置される。
図3を参照すると、セグメントリスト[n]は、最初に実行されるセグメントを示し、セグメントリスト[0]は、最後に実行されるセグメントを示す。例えば、SLポインタの値が3である場合に、それは、セグメントリスト内の残りの処理対象のセグメントの数量が4であることを示す、又は、SLポインタが現在処理対象となるセグメント、つまり下から上に数えた4番目のSIDを指していると理解することができる。SLポインタの値が0である場合に、それは、残りの処理対象のセグメントの数量が1であることを示す、又は、SLポインタが現在処理対象となるSID、つまり下から上に数えた最後のSID、すなわち
図3のセグメントリスト[0]を指していると理解することができる。SLポインタに基づいて現在処理対象となるSIDを決定した後に、ネットワーク装置は、そのSIDをIPv6パケットヘッダ内のDAフィールドにコピーし、その後、DAフィールドのコンテンツに基づいてパケットを処理する。パケットを処理する特定の方法は、例えばパケットを転送することであり得る。
【0085】
パケットは、
図1に示されるネットワークを介して処理され得る。例えば、処理方法は転送であり得る。具体的には、パケットは、
図1に示されるネットワークを介して転送される。例えば、ネットワーク装置Sはパケットをネットワーク装置10に送信する。この場合に、パケットの転送パスは、ネットワーク装置S->ネットワーク装置1->ネットワーク装置2->ネットワーク装置3->ネットワーク装置4->ネットワーク装置5->ネットワーク装置6->ネットワーク装置7->ネットワーク装置8->ネットワーク装置9->ネットワーク装置10である。換言すると、ネットワーク装置Sは、転送パス上のヘッドノードである。ヘッドノード、つまりネットワーク装置Sに加えて、転送パスには、合計10個のネットワーク装置、つまりネットワーク装置1~ネットワーク装置10がさらに含まれる。10個のネットワーク装置全てがSRv6をサポートするネットワーク装置であり、各ネットワーク装置の転送動作が1つのセグメントに対応する場合に、それは、パケット転送プロセス全体のセグメントリストに10個のSIDが含まれることを示す。各SIDの長さが128ビットであり、セグメントリストの長さは160バイトである。従って、パケット内にセグメントリストが存在するため、パケットの長さが長くなり、ネットワークの伝送効率及び処理効率が低下する。
【0086】
本願の一実施形態は、パケットを転送するための方法、並びにその方法に基づく装置及びシステムを提供する。方法、装置、及びシステムは、同じ発明の概念に基づいている。この方法によれば、比較的短い長さの圧縮セグメント識別子を使用して、長さが128ビットであるSIDを置き換えて、セグメントリストの長さを短くし、パケットの長さを短くし、ネットワークの伝送効率及び処理効率を向上させることができる。
【0087】
本発明の一実施形態は、パケットを転送するための方法を提供する。この方法は、パケットの転送パス上の各ノードに適用される。
図1に示される適用シナリオを参照すると、ネットワーク装置Sはパケットをネットワーク装置10に送信する。この場合に、パケットの転送パスは、ネットワーク装置S->ネットワーク装置1->ネットワーク装置2->ネットワーク装置3->ネットワーク装置4->ネットワーク装置5->ネットワーク装置6->ネットワーク装置7->ネットワーク装置8->ネットワーク装置9->ネットワーク装置10である。この方法は、以下のステップを含む。
【0088】
ネットワーク装置Sは、パケットを受信する。ネットワーク装置Sは、ネットワーク内のネットワーク入力装置であり、パケットの転送パス上の入力ノードである。ネットワーク装置Sはパケットを受信する。パケットは、ホスト(
図1には示されていない)によって生成されたパケットであり得、ホストは、パーソナルコンピュータ、携帯電話、又はタブレットコンピュータ等の端末装置であり得る。
【0089】
パケットの転送パス上の入力ノードとして、ネットワーク装置Sは、受信したパケットの転送パスを決定する必要がある。オプションで、ネットワーク装置Sは、パケットの特性に基づいて格納した複数の転送パスから、パケットを転送するために使用する転送パスを見つけて、パケットの転送パスを決定することができる。格納した複数の転送パスは、ネットワーク内のコントローラからネットワーク装置Sによって受信され得る。パケットの特性は、パケットの5タプル内の任意の要素又は複数の要素の組合せであり、5タプルに含まれる要素は、パケットに関するものである送信元IPアドレス、送信元ポート、宛先IPアドレス、宛先ポート、及びプロトコル番号である。オプションで、ネットワーク装置Sは、代替的に、パケットで搬送される情報及びネットワークトポロジー情報に基づく計算を通じて、パケットを転送するために使用される転送パスを取得することができる。転送パスには複数のネットワーク装置が含まれる。
図1に示される適用シナリオを参照すると、ネットワーク装置Sはパケットをネットワーク装置10に送信する。この場合に、パケットの転送パスは、ネットワーク装置S->ネットワーク装置1->ネットワーク装置2->ネットワーク装置3->ネットワーク装置4->ネットワーク装置5->ネットワーク装置6->ネットワーク装置7->ネットワーク装置8->ネットワーク装置9->ネットワーク装置10である。
【0090】
ネットワーク装置Sは、セグメントリストを取得する。セグメントリストは、SRv6パケットのSRH内のセグメントリストであり得る。
図4に示されるように、この場合に、セグメントリストはパケットの転送パスに対応し、転送パスにはネットワーク装置1~ネットワーク装置10が含まれ、セグメントリストには順次配置される複数のSIDが含まれ、複数のSIDのそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、各SIDの長さが128ビットである。
【0091】
セグメントリストは、ネットワーク装置Sによってコントローラから受信され、装置に格納され得る。具体的には、ネットワーク装置Sは、格納した複数の転送パスから、パケットを転送するために使用する転送パスを見つけ、転送パスに対応するセグメントリストを見つける。セグメントリストは、代替的に、ネットワーク装置Sによって生成され得る。具体的には、ネットワーク装置Sは、パケットで搬送される情報に基づく計算を通じて、パケットを転送するために使用される転送パスを取得し、転送パスに対応するセグメントリストを生成する。
【0092】
SRv6ネットワークでは、パケットの転送パスは、複数のセグメントによっても示され得る。各セグメントは特定のネットワーク装置によって実行され、各セグメントには対応するSIDがある。従って、1つのセグメントについて、セグメントのSIDとセグメントを実行するネットワーク装置との間に対応関係がある。換言すると、SIDは1つのネットワーク装置に対応している、又はそのSIDは1つのネットワーク装置のSIDであると見なすことができる。
【0093】
図1に示される適用シナリオを参照して例を使用して説明する。ネットワーク装置1のセグメント識別子はA:1:01:11::であり、セグメント識別子の長さが128ビットであり、「::」は全てゼロのバイトを示す。A:1:01は長さが48ビットであるロケータフィールドであり、A:1/48は長さが32ビットであるBLOCK(ブロック)部分であり、「/48」は48ビットのマスクを示し、01は長さが16ビットであるシーケンス番号部分である。換言すると、ロケータフィールドの長さは48ビットである。11::は長さが80ビットである関数フィールドである。同様に、ネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、ネットワーク装置9、又はネットワーク装置10は、同じドメインにおけるネットワーク装置でもあり得る。この場合に、これらのネットワーク装置のセグメント識別子は、それぞれ、A:1:02:22::、A:1:03:33::、A:1:04:44::、A:1:05:55::、A:1:06:66::、A:1:07:77::、A:1:08:88::、A:1:09:99::、及びA:1:0a:aa::であり得る。
【0094】
各SIDの長さを短くするために、SID内の1つ又は複数の部分を省略して、圧縮セグメント識別子(又はマイクロセグメントID、uSIDと呼ばれる)を形成することができる。uSIDは、SIDの代わりに使用され、セグメントリストに配置され、それによって、セグメントリストの長さを短くすることができる。
【0095】
ドメインにおいて、全てのネットワーク装置のSID内のBLOCK部分は同じであり得る。従って、セグメントリストにおいて、各SIDの長さを短くするために、SID内のBLOCK部分を省略してuSIDを形成することができる。具体的には、ネットワーク装置のSIDを2つの部分に分割する。第1の部分はBLOCK部分であり、第2の部分はSID内のBLOCK部分以外の部分である。SIDがセグメントリストに配置されると、同じBLOCK部分が省略される。例えば、
図1のネットワーク装置1のSIDはA:1:01:11::であり、ここで、A:1/48はBLOCK部分であり、01は長さが16ビットであるシーケンス番号部分である。SID内のBLOCK部分は省略される。この場合に、残りの部分は、01:11::であり、96ビットの長さを有する。同様に、ネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、ネットワーク装置9、及びネットワーク装置10のSID内のロケータフィールドのBLOCK部分は省略され得る。この場合に、残りの部分は、それぞれ、02:22::、03:33::、04:44::、05:55::、06:66::、07:77::、08:88::、09:99::、及び0a:aa::である。残りの部分の長さはそれぞれSIDの長さよりも短い。
【0096】
オプションで、セグメントリストにおいて、SIDの長さを短くするために、SID内の関数フィールドを圧縮形式にさらに設定することができ、圧縮形式の関数フィールドは、非圧縮形式の関数フィールドよりも小さい。SID計画中に、全ての関数フィールドは、2つの部分:圧縮関数フィールド及び非圧縮関数フィールドに分割される。
図5は、圧縮関数フィールドを含むSIDと、非圧縮関数フィールドを含むSIDとを示している。圧縮関数フィールドは、一般的に使用される関数を示すために使用され、非圧縮関数フィールドは、一般的に使用されない関数を示すために使用される。圧縮関数フィールドの長さが、非圧縮関数フィールドの長さよりも短い。例えば、圧縮関数フィールドの長さは16ビットであり、非圧縮関数フィールドの長さは80ビットである。
図5に示されるように、圧縮関数フィールドがSIDに使用される場合に、パディング部分が圧縮関数フィールドの後に続き、パディング部分は同じ特定のコンテンツを含み、それによって、SID全体の長さは依然として128ビットである。例えば、パディング部分は全てゼロであり得る。従って、SIDの長さを短くするために、SID内の関数フィールドが圧縮関数フィールドである場合に、圧縮関数フィールドに続くパディング部分を省略してuSIDを形成することができる。例えば、
図1のネットワーク装置1のSIDはA:1:01:11::であり得、ここで、11は、関数フィールドであり、長さが16ビットである圧縮関数フィールドである。具体的には、パディング部分の長さが64ビットである。SID内の圧縮関数フィールドに続くパディング部分は省略される。この場合に、残りの部分は、A:1:01:11であり、64ビットの長さを有する。同様に、ネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、ネットワーク装置9、及びネットワーク装置10のSID内の圧縮関数フィールドに続くパディング部分は省略され得る。この場合に、残りの部分は、それぞれ、A:1:02:22、A:1:03:33、A:1:04:44、A:1:05:55、A:1:06:66、A:1:07:77、A:1:08:88、A:1:09:99、及びA:1:0a:aaである。残りの部分の長さがそれぞれSIDの長さよりも短い。
【0097】
オプションで、圧縮関数フィールドの第1(最初)のビット及び非圧縮関数フィールドの第1(最初)のビットは、異なる値に設定され得る。従って、得られたSIDについて、ネットワーク装置は、関数フィールドの第1(最初)のビットを使用して、SID内の関数フィールドが圧縮関数フィールドであるか又は非圧縮関数フィールドであるかを判定することができる。例えば、圧縮関数フィールドの第1(最初)のビットは0であり、非圧縮関数フィールドの第1(最初)のビットは1である。或いは、圧縮関数フィールドの第1(最初)のビットは1であり、非圧縮関数フィールドの第1(最初)のビットは0である。
【0098】
好ましくは、SID内のロケータフィールドのBLOK部分と、SID内の圧縮関数フィールドに続くパディング部分との両方を省略した場合に、残りの部分の長さをさらに短くすることができる。この場合に、uSIDは、SID内のロケータフィールド及び圧縮関数フィールド内にシーケンス番号部分を含む。例えば、
図1のネットワーク装置1のSID内のBLOCK部分と、圧縮関数フィールドに続くパディング部分との両方が、省略され得る。この場合に、残りの部分は、01:11であり、32ビットの長さを有する。同様に、ネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、ネットワーク装置9、及びネットワーク装置10のSID内のロケータフィールドのBLOCK部分と、圧縮関数フィールドに続くパディング部分とが、省略され得る。この場合に、残りの部分は、それぞれ、02:22、03:33、04:44、05:55、06:66、07:77、08:88、09:99、及び0a:aaである。残りの部分の長さはそれぞれSIDの長さよりも短い。
【0099】
uSIDの長さが128ビット未満であることが分かり得る。オプションで、uSIDの長さは可変である。uSIDがSID内のロケータフィールド及び圧縮関数フィールド内にシーケンス番号部分を含む場合に、uSIDの長さは、SID内のロケータフィールドのシーケンス番号部分の長さと圧縮関数フィールドの長さとの合計によって決定される。例えば、uSIDの長さは、16ビット、32ビット、64ビット等であってもよい。uSIDとSIDとの間には1対1のマッピング関係があり、uSIDとSIDによって示されるセグメントとの間にも1対1のマッピング関係がある。換言すると、SID毎に1つの一意のuSIDを取得することができ、SIDとuSIDとの間には1対1のマッピング関係がある。従って、1つのセグメントについて、セグメントのuSIDとセグメントのSIDとの間に対応関係があり、セグメントのuSIDとセグメントを実行するネットワーク装置との間に対応関係がある。換言すると、uSIDは1つのネットワーク装置に対応する、又はuSIDは1つのネットワーク装置のuSIDであると見なすことができる。
【0100】
オプションで、全てのSID内の圧縮関数フィールドの長さは同じであり、全てのuSIDの長さは同じである。
【0101】
複数のSIDが、転送パス上の対応するネットワーク装置のシーケンスに基づいて順次配置され、セグメントリストを形成する。セグメントリスト内のSIDは、対応するuSIDに置き換えられ、セグメントリストの長さを短くし、パケットの長さを短くし、ネットワーク効率を向上させる。
【0102】
本願のこの実施形態では、セグメントリスト内のスペースは複数の要素に分割され、各更新後に、SLポインタは異なる要素を指す。例えば、各SIDが占めるスペースを1つの要素に分割することができる。具体的には、各要素の長さが128ビットであり、各更新後に、セグメントリスト内でSLポインタが指す位置は128ビットだけオフセットされる。セグメントリスト内の複数の要素は、SLポインタのオフセットシーケンスに基づいてソートすることができる。SLポインタが最初に指す要素は、1番目の要素と呼ばれ得、他の要素は類推によって得られる。uSIDの長さが128ビット未満であるため、例えば、uSIDの長さは32ビットであり得、ネットワーク装置Sは、複数のuSID、例えば少なくとも2つのuSIDを、セグメントリスト内の128ビットの長さの要素に格納して、セグメントリストの長さを短くする。オプションで、SID内のロケータフィールドのBLOCK部分をセグメントリストに含めることができ、BLOCK部分をセグメントリストの1番目の要素に含めることができる。オプションで、SID内のロケータフィールドのBLOCK部分をセグメントリストに含めない場合がある。
図6は、セグメントリストの構造を示している。例えば、uSIDの長さが32ビットである場合に、4つのuSIDがセグメントリストの各要素に格納される。例えば、uSID1、uSID2、uSID3、及びuSID4は1番目の要素に格納され、uSID5、uSID6、uSID7、及びuSID8は2番目の要素に格納される。
【0103】
従って、ネットワーク装置Sは、セグメントリストを取得する。セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子内の識別子は、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには長さが128ビットである要素が含まれ、要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む。
【0104】
本願のこの実施形態では、セグメントリスト内の複数のuSIDは、転送パス上の対応するネットワーク装置のシーケンスに基づいて順次配置される。しかしながら、複数のuSIDが要素内に配置される方法は限定されない。複数のuSIDは、要素内に順番に、又は逆の順序で配置され得る。
図6に示されるように、1番目の要素に格納した4つのuSIDの配置順序は、上から下にuSID1、uSID2、uSID3、及びuSID4であり得る、又は4つのuSIDの配置順序は、上から下にuSID4、uSID3、uSID2、及びuSID1であり得る。
【0105】
オプションで、セグメントリストを生成するネットワーク装置は、uSIDを含むセグメントリストを生成するかどうかを選択することができる。ネットワーク装置は、異なる長さのマスクをアドバタイズ(advertise:提供)することができ、異なる長さのマスクは、圧縮関数フィールド及び非圧縮関数フィールドにそれぞれ対応する。例えば、圧縮セグメント識別子のマスクの長さは、SID内のロケータフィールドの長さ及び圧縮関数フィールドの長さの合計であり、非圧縮セグメント識別子のマスクの長さは、SID内のロケータフィールドの長さ及び非圧縮関数フィールドの長さの合計である。さらに、圧縮セグメント識別子のマスクの長さは、非圧縮セグメント識別子のマスクの長さよりも短い。
図1に示される適用シナリオを参照すると、ネットワーク装置1に対応する圧縮マスクの長さは64ビットであり、ネットワーク装置1に対応する非圧縮マスクの長さは128ビットである。従って、セグメントリストを生成するネットワーク装置は、別のネットワーク装置によってアドバタイズされる異なる長さのマスクを取得する。uSIDを含むセグメントリストを生成する場合に、セグメントリストを生成するネットワーク装置は、uSIDを含むセグメントリストを圧縮セグメント識別子のマスクに結合する。SIDを含むセグメントリストを生成する場合に、セグメントリストを生成するネットワーク装置は、SIDを含むセグメントリストを非圧縮マスクに結合する。従って、セグメントリストをパケットにカプセル化した後に、パケットを転送するネットワーク装置は、異なる長さのマスクを使用して、セグメントリストからSID又はuSIDを取得することができる。
【0106】
オプションで、セグメントリストは、uSIDと別のタイプの識別子との両方を含み得る。別のタイプの識別子はSIDであり得る。具体的には、SIDは、uSIDが使用されるセグメントリストに引き続き含まれ得る。パケットが通過する全てのネットワーク装置の中で、ネットワーク装置はuSIDを処理する能力を有さない場合がある。この場合に、ネットワーク装置に対応し、且つ長さが128ビットであるSIDをセグメントリストに引き続き格納して、ネットワークの互換性を向上させることができる。
図6に示されるように、ネットワーク装置9がuSIDを処理する能力を有さない場合に、セグメントリストは、ネットワーク装置9に対応するSID9、つまり、長さが128ビットであるA:1:09:99::を格納する。
【0107】
オプションで、セグメントリストを生成するネットワーク装置は、別のネットワーク装置がuSIDを処理する能力を有するかどうかに基づいて、別のネットワーク装置のuSID又はSIDをセグメントリストに配置すべきかどうかを判定することができる。セグメントリストを生成するネットワーク装置は、ネットワーク内のコントローラであり得るか、又はパケットの転送パス上の入力ノード、例えば
図1に示されるネットワーク装置Sであり得る。例えば、ネットワーク装置Sは、ネットワーク装置9に対応する圧縮能力フラグを取得し、ここで、圧縮能力フラグは、ネットワーク装置9がuSIDを処理する能力を有するかどうかを示すために使用される。圧縮能力フラグが、ネットワーク装置9がuSIDを処理する能力を有することを示す場合に、ネットワーク装置Sは、ネットワーク装置9に対応するuSIDを生成されるセグメントリストに格納する。圧縮能力フラグが、ネットワーク装置9がuSIDを処理する能力を有さないことを示す場合に、ネットワーク装置Sは、ネットワーク装置9に対応するSIDを生成されるセグメントリストに格納する。
【0108】
オプションで、ネットワーク装置に対応し、且つ長さが128ビットであるSIDがセグメントリストに格納される場合に、プロンプトフラグは、セグメントリスト内のセグメント識別子の前の最後のuSIDに含められ、プロンプトフラグは、現在のuSIDの次の識別子が128ビットの長さのSIDであることを示すために使用される。オプションで、プロンプトフラグをuSID内の圧縮関数フィールド部分に含めてもよい。例えば、uSID毎に2つの関連する圧縮関数フィールドを設定することができる。uSIDにプロンプトフラグが含まれる場合に、圧縮関数フィールドのうちの一方が使用される。uSIDにプロンプトフラグが含まれない場合に、他方の圧縮関数フィールドが使用される。
図6に示されるように、2つの関連する圧縮関数フィールド87及び88が、uSID8に設定され得る。uSID8にプロンプトフラグが含まれる場合に、圧縮関数フィールド87が使用される。uSID8にプロンプトフラグが含まれない場合に、圧縮関数フィールド88が使用される。
図6に示されるセグメントリストが、ネットワーク装置9に対応し、且つ長さが128ビットであるSID9を格納するため、uSID8にはプロンプトフラグを含める必要があり、つまり、uSID8は08:87である。
【0109】
オプションで、ネットワーク装置に対応し、且つ長さが128ビットであるSIDがセグメントリストに格納される場合に、プロンプトフラグは、複数の連続するuSIDの最後のuSID以外のuSIDに含められ得、プロンプトフラグは、現在のuSIDの次の識別子が依然として128ビット未満の長さのuSIDであることを示すために使用される。オプションで、プロンプトフラグをuSIDの圧縮関数フィールド部分に含めてもよい。例えば、uSID毎に2つの関連する圧縮関数フィールドを設定することができる。uSIDにプロンプトフラグが含まれる場合に、圧縮関数フィールドのうちの一方が使用される。uSIDにプロンプトフラグが含まれない場合に、他方の圧縮関数フィールドが使用される。
図6に示されるように、2つの関連する圧縮関数フィールド77及び78が、uSID7に設定され得る。uSID7にプロンプトフラグが含まれる場合に、圧縮関数フィールド77が使用される。uSID7にプロンプトフラグが含まれない場合に、圧縮関数フィールド78が使用される。
図6に示されるセグメントリストが、ネットワーク装置8に対応し、且つ長さが128ビット未満であるuSID8を格納するため、uSID7にはプロンプトフラグを含める必要があり、つまり、uSID7は07:77である。
【0110】
オプションで、セグメントリストにuSIDと別のタイプの識別子との両方が含まれる場合に、プロンプトフラグは固定長の間隔に設定され得る。プロンプトフラグは、次の固定長の識別子のタイプを示すために使用され、つまり、次の固定長の単一の識別子の長さを示すために使用される。例えば、固定長は128ビットであってもよい。オプションで、プロンプトフラグを固定長の最後の識別子に配置してもよく、又はプロンプトフラグを、独立した識別子にし、ネットワーク装置に対応する識別子に含めないようにしてもよい。プロンプトフラグの異なる値は、異なるタイプの識別子に対応する。
図6に示されるように、プロンプトフラグは128ビットの間隔で設定され得る。プロンプトフラグは、最後の識別子に128ビットで配置される。uSID8内のプロンプトフラグの値が0である場合に、それは、次の128ビットの識別子のタイプがSIDであることを示す。具体的には、次の128ビットの識別子はSID9である。uSID4内のプロンプトフラグの値が1である場合に、それは、次の128ビットの識別子のタイプがuSIDであることを示す。具体的には、次の128ビットの識別子は、uSID5、uSID6、uSID7、及びuSID8である。
【0111】
オプションで、セグメントリストにuSIDと別のタイプの識別子との両方が含まれる場合に、プロンプトフラグは、代替的に、固定長の間隔に設定され得る。プロンプトフラグは、次の固定長が現在の識別子に依然として属しているかどうかを示すために使用される。従って、プロンプトフラグに基づいて現在の識別子の境界を決定して、現在の識別子が、128ビットの長さのSID又は128ビット未満の長さのuSIDであると判定することができる。例えば、固定長は32ビットであってもよい。固定長は、代替的に、8ビット、16ビット等であってもよい。例えば、プロンプトフラグを1ビットに配置することができる。例えば、プロンプトフラグは、固定長の最初のビット又は最後のビットに配置され得る。
図6に示されるように、プロンプトフラグは32ビットの間隔で設定され得る。プロンプトフラグは、最後のビットに32ビットで配置される。ビットの値が1である場合に、それは、次の固定長が現在の識別子に依然として属していることを示す。ビットの値が0である場合に、それは、次の固定長がもはや現在の識別子に属していないことを示す。uSID7が属する32ビットについて、最後のビットの値が0である場合に、それは、後続の32ビットがもはや現在の識別子に属していないことを示す。換言すると、後続の32ビットはuSID8である。SID8が属する32ビットについて、最後のビットの値が0である場合に、それは、後続の32ビットがもはや現在の識別子に属していないことを示す。換言すると、後続の32ビットはSID9の最初の32ビットである。SID9の最初の32ビットについて、最後のビットの値が1である場合に、それは、後続の32ビットが現在の識別子に依然として属していることを示す。換言すると、後続の32ビットはSID9の第2(次の)の32ビットである。
【0112】
オプションで、長さが128ビットであるSIDをセグメントリストに格納した後に、SID内のBLOCK部分を、セグメントリスト内のSID内の次の要素の開始位置に配置する必要がある。
図6に示されるように、ネットワーク装置9に対応し、且つ長さが128ビットであるSID9が、セグメントリストに格納される。この場合に、BLOCK部分は、セグメントリスト内の次の要素の開始位置に格納される。BLOCK部分は、A:1であり得、32ビットの長さを有する。ネットワーク装置10に対応するuSID10は、BLOCK部分の後に引き続き格納される。
【0113】
オプションで、セグメントリスト内の要素に、複数のuSIDが順次格納される。複数のuSIDを格納した後に、要素の最後に冗長ビットが未だある場合に、冗長ビットをパディング(padding:埋める)ことができる。例えば、冗長ビットには全てゼロがパディングされる。
【0114】
オプションで、パケットの転送パス上の複数のネットワーク装置が異なるドメインに属する場合に、SID内のBLOCK部分もセグメントリストに配置する必要がある。ドメインでは、全てのネットワーク装置のSID内のBLOCK部分は同じである。しかしながら、異なるドメインでは、ネットワーク装置のSID内のBLOCK部分は異なる。転送パス上のネットワーク装置及び以前のホップ(previous-hop)ネットワーク装置が異なるドメインに属している場合に、ネットワーク装置のSID内のBLOCK部分をセグメントリストに配置する必要がある。オプションで、BLOCK部分を要素の開始部分に配置する必要がある。換言すると、BLOCK部分は、以前のホップネットワーク装置のuSIDの次の要素の開始部分に配置され、次にネットワーク装置のuSIDはBLOCK部分の後に配置される。
図7は、セグメントリストの構造を示している。
図1に示される適用シナリオを参照すると、ネットワーク装置9及びネットワーク装置8は、異なるドメインに属する。この場合に、ネットワーク装置8のSIDはA:1:8:88::であり、ネットワーク装置9のSIDはA2:9:99::である。具体的には、ネットワーク装置8のSID内のBLOCK部分はA:1であり、ネットワーク装置9のSID内のBLOCK部分はA2であり、ネットワーク装置8のuSID8は8:88であり、ネットワーク装置9のuSID9は9:99である。
図7に示されるように、ネットワーク装置に対応するuSID9は、uSID8内の次の要素に格納され、BLOCK部分は、uSID9の前に格納され、ここで、BLOCK部分は、A2であり、32ビットの長さを有する。
【0115】
パケットの転送パス上の入力ノードとして、ネットワーク装置Sは、セグメントリストをパケットに追加する。具体的には、ネットワーク装置Sは、セグメントリストをパケットのSRHに追加する。
【0116】
オプションで、パケットにはSLポインタがさらに含まれる。前述の説明を参照すると、SRHにはSLポインタが含まれ、SLポインタはセグメントリスト内の要素を指す。パケット転送プロセスでは、転送パス上の中間ノードが、SRH外部レイヤにおけるIPv6パケットヘッダ内の宛先アドレス(destination address, DA)フィールドに、SLポインタが指す要素に格納されるSIDを追加する。換言すると、SLポインタは、セグメントリストで現在処理対象となる要素を示すために使用される。
【0117】
uSIDを使用する場合に、uSIDの長さがSIDの長さよりも短いため、1つのSIDが元々格納される要素スペースに複数のuSIDを格納することができる。従って、各要素内の異なるuSIDの位置を示すために、新しいポインタを設定する必要がある。オプションで、パケットには第1のポインタが含まれ、第1のポインタの値は、パケットヘッダにコピーする必要があり、且つ要素内にある第1の識別子の位置を示すために使用され、新しいポインタはPIポインタと呼ばれ得る。パケット内のSLは、第2のポインタと呼ばれ得、SLポインタの値は、セグメントリスト内の異なる要素の位置を示すために使用され、PIポインタの値は、要素内の異なるuSIDの位置を示すために使用される。PIポインタ及びSLポインタは、一緒に2次元ポインタを形成する。従って、転送パス上の中間ノードは、PIポインタの値(例えば、現在追加対象となるuSID)に基づいて、セグメントリスト内の要素における現在追加対象となる識別子を決定することができる。
【0118】
PIポインタは、パケットヘッダに配置され得、パケットヘッダは、SRH又はIPv6パケットヘッダであり得る。例えば、PIポインタをSRH内のPIフィールドに配置してもよく、又はPIポインタをIPv6パケットヘッダ内のDAフィールドに配置してもよい。代替的に、PIポインタをセグメントリストに配置してもよい。例えば、PIポインタは、セグメントリスト内の各要素の第1(最初)のuSIDに配置され得る。
【0119】
オプションで、PIポインタは、SLポインタに隣接してもよい。2つの隣接するポインタは、例えば、SLフィールドを含むがこれに限定されない、SRH内の特定のフィールドに配置され得る。例えば、PIポインタはSRH内のSLフィールドの一部である。具体的には、SLフィールドの最後のいくつかのビットがPIポインタとして分類され得、SLフィールドの別の部分がSLポインタとして使用される。例えば、SLフィールドの最後の2ビットはPIポインタとして分類され得、SLフィールドの別の部分はSLポインタとして使用される。具体的には、PIポインタは、SLフィールドの最後の2ビット、つまり最下位ビット及び第2(次の)の最下位ビットであり得る。この場合に、SLポインタは、セグメントリスト内の現在処理対象となる要素を示すために使用され、PIポインタは、パケットヘッダにコピーする必要があり、且つ現在処理対象となる要素内にある第1の識別子の位置を示すために使用される。この場合に、SLポインタがPIポインタに隣接しているため、SLポインタ及びPIポインタを含む全体も新しいポインタと見なすことができ、SLポインタ及びPIポインタは別々に新しいポインタの一部になる。
【0120】
オプションで、パケットには第1のポインタのみが含まれ得、第1のポインタの値は、パケットヘッダにコピーする必要があり、且つセグメントリスト内にある第1の識別子の位置を示すために使用され、新しい第1のポインタはXLポインタと呼ばれ得る。XLポインタは1次元ポインタである。オプションで、XLポインタは、SRH内の特定のフィールド、例えばSLフィールドに配置してもよい。具体的には、SLフィールド全体をXLポインタとして使用することができる。具体的には、XLポインタは、セグメントリスト内の複数の識別子を順次指すことができる。複数の識別子は、複数のタイプの識別子、例えばSID又はuSIDであり得る。パケット処理プロセスでは、セグメントリスト内の識別子によって示されるコンテンツが実行される度に、セグメントリスト内のXLポインタが指す位置が、セグメントに対応する識別子の長さだけオフセットされる。例えば、オフセット識別子がSIDである場合に、長さは128ビットである。オフセット識別子がuSIDである場合に、長さは128ビット未満である。セグメントリスト内の複数の識別子によって示される複数のセグメントが順次実行されるため、XLポインタが指す位置が連続的にオフセットされる。従って、XLポインタは、セグメントリスト内の現在処理対象となる識別子の位置を示すために使用される。
【0121】
オプションで、ネットワーク装置Sは、SID内のBLOK部分を、パケットのIPv6パケットヘッダ内のDAフィールドにさらに追加する。オプションで、ネットワーク装置Sは、少なくとも1つの識別子をDAフィールドにさらに追加する。少なくとも1つの識別子は、複数の識別子であり得る。複数の識別子は、複数のuSIDであり得るか、又はuSIDと別のタイプの識別子との組合せであり得る。具体的には、パケットのIPv6パケットヘッダ内のDAフィールドも2つの部分に分割することができる。セグメントリストで省略されたBLOCK部分は、DAフィールドの第1の部分に配置され、少なくとも1つの識別子がDAフィールドの第2の部分に配置される。
【0122】
オプションで、ネットワーク装置SによってDAフィールドに追加される少なくとも1つの識別子の数量は、BLOCK部分の長さ及び識別子の長さによって決定される。ネットワーク装置Sは、できるだけ多くの識別子をDAフィールド内のBLOCK部分以外の部分に追加する。例えば、複数の識別子が複数のuSIDである場合に、複数のuSIDの数量は、(128-LBLOCK)/LuSIDの整数部分であり得、ここで、LBLOCKはBLOCK部分の長さであり、LuSIDはuSIDの長さである。例えば、BLOCK部分の長さが32ビットであり、uSIDの長さが32ビットである場合に、3つのuSIDがDAフィールドに追加される。例えば、別のタイプの識別子の長さがuSIDの長さと同じである場合に、uSIDと別のタイプの識別子との組合せを含む複数の識別子の数量も(128-LBLOCK)/LuSIDの整数部分であり得る。例えば、BLOCK部分の長さが32ビットであり、uSIDの長さが32ビットであり、MPLSラベルの長さが32ビットである場合に、2つのuSIDと1つのMPLSラベルとの組合せがDAフィールドに追加される。
【0123】
図9を参照して例を使用して説明する。
図9は、セグメントリスト及びPIポインタが追加されるパケットの構造を示している。PIポインタは、SRH内のPIフィールドに配置される。さらに、ネットワーク装置Sは、SID内のBLOCK部分をDAフィールドに追加し、DAフィールド内のBLOCK部分の後に3つのuSIDを追加する。
図9に示されるように、3つのuSIDは、uSID1、uSID2、及びuSID3である。PIポインタの値が3である場合に、それは、セグメントリスト内の要素の最初の3つのuSIDがDAフィールドに追加されることを示す。要素内に追加対象となる識別子、つまり第4のuSID、すなわちuSID4は、PIポインタの値に基づいて決定することができる。
【0124】
ネットワーク装置Sは、パケットを送信する。パケットを送信するときに、ネットワーク装置Sは、最長一致(longest match)ルールに従って、DAフィールド内のコンテンツに基づいて、パケットのネクストホップ(next-hop)ネットワーク装置を決定する。DAフィールドには、BLOCK部分と順次配置される複数のuSIDとが含まれる。BLOCK部分と第1のuSIDとの組合せは、第1のuSIDに対応するSIDを形成する。従って、決定したネクストホップネットワーク装置は、第1のuSIDに対応するネットワーク装置である。
【0125】
図9に示されるパケットの構造を参照して、
図1に示される適用シナリオを参照して例を使用して説明する。ネットワーク装置Sは、最長一致ルールに従って、パケットのパケットヘッダ内のDAフィールドのコンテンツに基づいて、ローカルルーティングテーブルを照会する。具体的には、BLOCK部分とuSID1とを含む部分は、A:1:01:11であり、ルーティングテーブルのエントリと一致し、SID1と成功裏に一致する。具体的には、ネットワーク装置Sは、ネクストホップネットワーク装置がネットワーク装置1であると決定して、セグメントリストを含むパケットをネットワーク装置1に送信する。
【0126】
パケットを受信した後に、ネットワーク装置1は、最長一致ルールに従って、DAフィールドのコンテンツに基づいてローカルセグメント識別子テーブル(local SID table)を照会し、パケット処理動作を決定する。DAフィールドには、BLOCK部分と順次配置される複数のuSIDとが含まれる。BLOCK部分と第1のuSIDとの組合せは、第1のuSIDに対応するSIDを形成する。従って、決定したパケット処理動作は、第1のuSID内の関数フィールドに対応するパケット処理動作であり、第1のuSIDに対応するパケット処理動作と呼ばれ得る。
【0127】
図9に示されるパケットの構造を参照して、
図1に示される適用シナリオを参照して例を使用して説明する。セグメントリストを含むパケットが、ネットワーク装置Sによってネットワーク装置1に送信される。ネットワーク装置1は、最長一致ルールに従って、パケット内のDAフィールドに基づいてローカルセグメント識別子テーブルを照会する。BLOCK部分とuSID1とを含む部分がローカルセグメント識別子テーブルのエントリと成功裏に一致した場合に、ネットワーク装置1は、uSID1に対応するパケット転送処理動作を実行する。
【0128】
オプションで、パケット転送処理動作は、DAフィールドを更新することを含み得る。具体的には、ネットワーク装置1は、DAフィールド内のBLOCK部分に続く部分からuSIDの長さのビットを削除し、残りの部分を前方に移動し、最後の空白部分を全てゼロで埋める。
【0129】
オプションで、DAフィールドを更新した後に、ネットワーク装置1は、DAフィールド内のBLOCK部分に続く部分が全てゼロで埋められるかどうかをさらに判定する。部分に全てゼロが埋め込まれていない場合に、ネットワーク装置1は、最長一致ルールに従って、DAフィールドのコンテンツに基づいてローカルルーティングテーブルを照会し、パケットの転送を続行する。
【0130】
オプションで、パケットが転送パス上の別の中間ノードに到着した後に、別の中間ノードによってパケットに対して実行される処理動作は、ネットワーク装置1の前述のパケット処理動作と同じであり得る。転送パス上の複数の中間ノードによってパケットに対して実行される全ての処理動作は、DAフィールドを更新すること、及びDAフィールド内のBLOCK部分に続く部分に全てゼロが埋め込まれているかどうかを判定することを含む。
【0131】
図1に示される適用シナリオを参照して例を使用して説明する。ネットワーク装置1がDAフィールドを更新するときに、DAフィールド内のBLOCK部分に続くuSID1が削除され、残りの部分が前方に移動し、最後の空白部分に全てゼロが埋め込まれる。この場合に、DAフィールドは、BLOCK部分、uSID2、及びuSID3を含み、パケットの構造が
図11に示される。ネットワーク装置1が、DAフィールド内のBLOCK部分に続く部分に全てゼロが埋め込まれていないと判定した場合に、ネットワーク装置1はパケットの転送を続行する。この場合に、DAフィールドのコンテンツは、最長一致ルールに従って、ネットワーク装置2のSIDと成功裏に一致する。換言すると、BLOCK部分とuSID2とを含む部分は、ネットワーク装置2のSIDと成功裏に一致する。この場合に、ネットワーク装置1は、パケットをネットワーク装置2に送信する。
【0132】
パケットがネットワーク装置2に到着した後に、ネットワーク装置2は、最長一致ルールに従って、パケット内のDAフィールドに基づいてローカルセグメント識別子テーブルを照会し、BLOCK部分とuSID2とを含む部分が成功裏に一致している場合に、対応するパケット処理動作を実行する。さらに、DAフィールドを更新するときに、ネットワーク装置2は、DAフィールドからuSID2を削除し、残りの部分を前方に移動し、最後の空白の部分を全てゼロで埋める。この場合に、DAフィールドは、BLOCK部分及びuSID3を含み、パケットの構造が
図12に示される。ネットワーク装置2が、DAフィールド内のBLOCK部分に続く部分に全てゼロが埋め込まれていないと判定した場合に、ネットワーク装置2はパケットの転送を続行する。この場合に、DAフィールドのコンテンツは、最長一致ルールに従って、ネットワーク装置3のSIDと成功裏に一致する。換言すると、BLOCK部分とuSID3とを含む部分は、ネットワーク装置3のSIDと成功裏に一致する。この場合に、ネットワーク装置2は、パケットをネットワーク装置3に送信する。
【0133】
ネットワーク装置3は、パケットを受信する。オプションで、DAフィールドを更新した後に、ネットワーク装置3は、DAフィールド内のBLOCK部分の後に未だ識別子が残っているかどうかをさらに判定する。識別子が残っていない、例えば、BLOCK部分に続く部分が全てゼロである場合に、ネットワーク装置3は、識別子をDAフィールドに引き続きコピーする必要がある。コピー動作を実行するネットワーク装置は、コピーノードと呼ばれ得る。換言すると、ネットワーク装置3はコピーノードである。
【0134】
コピーノードは、第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定する。第1のポインタはPIポインタであり、第1の識別子は現在追加対象となる識別子である。オプションで、PIポインタの値に基づいて現在追加対象となる識別子を決定する前に、ネットワーク装置3は、最初に、SLポインタの値に基づいて現在の要素を決定する。ネットワーク装置3は、PIポインタの値に基づいて、現在の要素の現在追加対象となる識別子をさらに決定する。現在追加対象となる識別子は、PIポインタの値に基づいて決定される。現在追加対象となる識別子は第1の識別子である。
【0135】
図1に示される適用シナリオを参照して例を使用して説明する。ネットワーク装置3は、最長一致ルールに従って、パケット内のDAフィールドに基づいてローカルセグメント識別子テーブルを照会し、BLOCK部分とuSID3とを含む部分が成功裏に一致した場合に、対応する転送動作を実行する。さらに、DAフィールドを更新するときに、ネットワーク装置3は、DAフィールドからuSID3を削除し、残りの部分を前方に移動し、最後の空白の部分を全てゼロで埋める。この場合に、DAフィールドはBLOCK部分のみを含む。ネットワーク装置3が、DAフィールド内のBLOCK部分に続く部分が全てゼロであると判定した場合に、ネットワーク装置3は、uSIDをDAフィールドに追加する必要がある。この場合に、ネットワーク装置3は、SLポインタの値に基づいて現在の要素を決定する。例えば、パケット内のSLポインタの値は4であり得る。この場合に、ネットワーク装置3は、現在の要素がセグメントリストの1番目の要素であると判定する。さらに、ネットワーク装置3は、PIポインタの値が3であるという事実に基づいて、現在追加対象となる識別子が現在の要素の第4のuSID、つまり、uSID4であると判定する。
【0136】
コピーノードは、第1の識別子から始まる少なくとも1つの識別子を第1のパケットのパケットヘッダにコピーする。オプションで、第1の識別子から始まる少なくとも1つの識別子が少なくとも1つのuSIDである場合に、パケットヘッダはIPv6パケットヘッダであり得る。コピーノードは、少なくとも1つのuSIDの数量を決定する。
【0137】
オプションで、コピーノードは、(128-LBLOCK)/LuSIDの整数部分を決定し、整数部分の値を少なくとも1つのuSIDの数量として使用する。
【0138】
オプションで、コピーノードは、(128-LBLOCK)/LuSIDの整数部分を、現在の要素のDAフィールドに追加されていない残りのuSIDの数量と比較し、整数部分と少なくとも1つのuSIDの数量としての数量とのより小さい値を使用する。
【0139】
オプションで、少なくとも1つのuSIDをDAフィールドに追加した後に、コピーノードは、パケット内のPIポインタの値を変更し、それによって、PIポインタの変更した値は、セグメントリスト内の現在追加対象となる識別子を指す。現在追加対象となる識別子は、第3の識別子と呼ばれ得、第3の識別子は、セグメントリストの少なくとも1つのuSID内の最後のuSIDの次の識別子であり得る。
【0140】
オプションで、追加対象となる識別子は、uSIDであり得、uSIDは、セグメントリスト内の現在の要素の次の要素に位置する。具体的には、現在の要素内の全てのuSIDがDAフィールドに追加される。この場合に、uSIDは次の要素内の第1(最初)のuSIDであり得る。この場合に、PIポインタの変更した値は、次の要素内のuSIDの位置を示すために使用される。例えば、PIポインタの変更した値は0であり得る。
【0141】
オプションで、現在の要素内の全ての識別子をDAフィールドに追加した後に、コピーノードは、パケット内のSLポインタの値を変更し、それによって、SLポインタの変更した値は、セグメントリスト内の現在の要素の次の要素を指す。
【0142】
図1に示される適用シナリオを参照して例を使用して説明する。ネットワーク装置3は、現在追加対象となる識別子がuSID4であると決定する。さらに、ネットワーク装置3は、現在の要素のDAフィールドに追加されていない残りのuSIDの数量が1であると決定する。換言すると、uSID4のみがある。uSIDの長さが32ビットであり、BLOCK部分の長さが32ビットであり、(128-L
BLOCK)/L
uSIDの整数部分が、3であり、残りのuSIDの数量よりも大きい。従って、ネットワーク装置3は、DAフィールドに追加すべき少なくとも1つのuSIDの数量が1であると決定する。ネットワーク装置3は、パケットのIPv6パケットヘッダ内のDAフィールドにuSID4を追加する。この場合に、パケットの構造が
図14に示されている。さらに、現在の要素の全てのuSIDがDAフィールドに追加されるため、ネットワーク装置3は、パケット内のSLポインタの値を変更し、SLポインタの値から1を減算する。SLポインタの変更した値は3で、セグメントリストの2番目の要素を指す。ネットワーク装置3は、PIポインタの値を変更する。PIポインタの変更した値は0であり、2番目の要素の第1(最初)のuSID、つまりuSID5を指す。
【0143】
ネットワーク装置3は、パケットを送信する。パケットは転送パスに沿って転送され続け、転送パス上の中間ノードは、パケット内のDAフィールドを更新し続ける。DAフィールド内の識別子を処理した後に、つまり、DAフィールド内のBLOCK部分の後に識別子が残っていない場合に、転送パス上のコピーノードは、パケット内のDAフィールドを更新し続ける。例えば、DAフィールドに追加した少なくとも1つのuSIDが処理された後に、コピーノードは、PIポインタの値に基づいて、現在追加対象となる識別子から始まる少なくとも1つの識別子をパケット内のDAフィールドに追加し続ける。
【0144】
オプションで、現在追加対象となる識別子から始まる少なくとも1つの識別子は、uSIDであり得る。この場合に、コピーノードの処理プロセスは上記と同様である。詳細については、ここでは再び説明しない。
【0145】
オプションで、少なくとも1つのuSIDは、複数のuSIDである。少なくとも1つのuSIDが複数のuSIDである場合に、複数のuSIDは、セグメントリスト内で互いに隣接している。
【0146】
オプションで、少なくとも1つのuSIDをDAフィールドに追加した後に、コピーノードは、パケット内のPIポインタの値を変更し、それによって、PIポインタの変更した値は、現在追加対象となる識別子を指す。この場合に、現在追加対象となる識別子は、セグメントリストの少なくとも1つのuSID内の最後のuSIDの次の識別子である。
【0147】
オプションで、現在追加対象となる識別子は、uSIDであり得、uSIDと少なくとも1つのuSIDとの両方が、現在の要素に位置し得る。この場合に、PIポインタの変更した値は、現在の要素内のuSIDの位置を示すために使用される。
【0148】
オプションで、現在追加対象となる識別子は、uSIDであり得、uSIDは、セグメントリスト内の現在の要素の次の要素に位置する。具体的には、現在の要素内の全てのuSIDがDAフィールドに追加される。この場合に、uSIDは次の要素内の第1(最初)のuSIDであり得る。この場合に、PIポインタの変更した値は、次の要素のuSIDの位置を示すために使用される。例えば、PIポインタの変更した値は0であり得る。
【0149】
オプションで、現在の要素内の全ての識別子をDAフィールドに追加した後に、コピーノードは、パケット内のSLポインタの値を変更し、それによって、SLポインタの変更した値は、セグメントリスト内の現在の要素の次の要素を指す。
【0150】
ネットワーク装置4は、パケットを受信し、DAフィールド内のBLOCK部分及びuSID4に基づいてパケットを処理する。さらに、DAフィールドを更新するときに、ネットワーク装置4は、DAフィールドからuSID4を削除し、残りの部分を前方に移動し、最後の空白の部分を全てゼロで埋める。この場合に、DAフィールドはBLOCK部分のみを含む。この場合に、ネットワーク装置4はコピーノードである。ネットワーク装置4が、DAフィールド内のBLOCK部分に続く部分が全てゼロであると判定した場合に、ネットワーク装置4は、パケット内のDAフィールドに識別子を追加し続ける。ネットワーク装置4は、パケット内のSLポインタの値に基づいて、現在の要素がセグメントリストの2番目の要素であると決定し、PIポインタの値に基づいて、現在追加対象となる識別子が、2番目の要素の第1(最初)のuSID、つまりuSID5であると決定する。ネットワーク装置4は、(128-L
BLOCK)/L
uSIDの整数部分が3であると決定し、現在の要素のDAフィールドに追加されていない残りのuSIDの数量が4であると決定して、整数部分とDAフィールドに追加されるSIDの数量としての数量、つまり3とのより小さい値を使用する。従って、ネットワーク装置4は、uSID5から始まる3つのuSIDをDAフィールドに追加する。3つのuSIDは、uSID5、uSID6、及びuSID7である。この場合に、パケットの構造が
図15に示されている。さらに、ネットワーク装置4は、PIポインタの値を変更し、それによって、PIポインタの値が、追加対象となるuSID、つまり、uSID8を指す。
【0151】
その後、パケットは、ネットワーク装置5、ネットワーク装置6、及びネットワーク装置7を介してネットワーク装置8に転送され続ける。これらのネットワーク装置のパケット処理動作は、それぞれ、ネットワーク装置1の、ネットワーク装置2、ネットワーク装置3、及びネットワーク装置4の動作と同様である。ネットワーク装置7は、コピーノードでもある。詳細については、ここでは再び説明しない。
【0152】
オプションで、現在追加対象となる識別子から始まる少なくとも1つの識別子は、長さが128ビットであるSIDであり得る。前述の説明を参照すると、この場合に、セグメントリスト内のSIDの前の最後のuSIDにはプロンプトフラグが含まれる。SIDの前にuSIDを処理するときに、コピーノードは、プロンプトフラグに基づいて、uSIDの次の識別子が128ビットの長さのSIDであると判定することができる。オプションで、コピーノードは、長さが128ビットであるSIDをパケット内のDAフィールドに追加する。具体的には、DAフィールド内のBLOCK部分も上書きされる。
【0153】
オプションで、少なくとも1つのuSIDをDAフィールドに追加した後に、コピーノードは、パケット内のPIポインタの値を変更し、それによって、PIポインタの変更した値は、現在追加対象となる識別子を指す。この場合に、現在追加対象となる識別子は、セグメントリストの少なくとも1つのuSID内の最後のuSIDの次の識別子である。
【0154】
オプションで、現在追加対象となる識別子は、長さが128ビットであるSIDであり得る。この場合に、SIDは要素内の全てのスペースを占め、例えば、PIポインタの変更した値は0であり得る。
【0155】
例えば、ネットワーク装置8は、コピーノードでもある。ネットワーク装置8は、パケットを受信し、DAフィールド内のBLOCK部分とuSID8とを含む部分に基づいてパケットを処理し、uSID8にプロンプトフラグが含まれることを見つけ(find:検出し)、セグメントリスト内のSID8の次の識別子が、128ビットの長さのSIDであると決定する。ネットワーク装置8は、パケット内のSLポインタの値に基づいて、現在の要素がセグメントリストの第3の要素であると判定し、要素内のSIDをDAフィールドに追加する、つまり、SID9をDAフィールドに追加する。この場合に、パケットの構造が
図16に示されている。
【0156】
前述の説明を参照すると、パケットにはXLポインタのみが含まれ得る。オプションで、パケットにXLポインタのみが含まれる場合に、パケットの転送パス上の入力ノードとして使用されるネットワーク装置Sは、少なくとも1つの識別子をDAフィールドに追加し、ここで、識別子はuSIDであり得る。コピーノードは、XLポインタの値に基づいてセグメントリスト内の第1の識別子の位置を決定し、第1の識別子から始まる少なくとも1つの識別子を第1のパケットのパケットヘッダにコピーする。具体的には、コピーノードは、第1の識別子から始まる少なくとも1つの識別子をDAフィールドに追加する。コピーノードは、パケット内のXLポインタの値を変更し、それによって、XLポインタの変更した値は、セグメントリスト内の現在追加対象となる識別子を引き続き指す。オプションで、パケットにXLポインタのみが含まれる場合に、第1の識別子から始まる少なくとも1つの識別子は、1つの識別子、つまり、第1の識別子である。換言すると、毎回DAフィールドに追加される識別子の数量は1であり得る。この場合に、セグメントリスト内でXLポインタが指す位置は、毎回1つの識別子の長さだけオフセットされる。
【0157】
パケットにXLポインタのみが含まれる場合に、
図1に示される適用シナリオを参照して例を使用して説明する。例えば、ネットワーク装置Sは、SID内のBLOCK部分をDAフィールドに追加し、DAフィールド内のBLOCK部分の後に1つのuSID、つまりuSID1を追加する。XLポインタの値は、uSIDを追加する前又は後に変更することができる。例えば、uSIDを追加した後にXLポインタの値が変更されると、ネットワーク装置Sは、パケット内のXLポインタがuSID2を指すように設定し、現在追加対象となる識別子がセグメントリスト内のuSID2であることを示す。ネットワーク装置Sは、最長一致ルールに従って、パケットのパケットヘッダ内のDAフィールドのコンテンツに基づいてローカルルーティングテーブルを照会する。具体的には、BLOCK部分とuSID1とを含む部分は、A:1:01:11であり、ルーティングテーブルのエントリと一致し、SID1と成功裏に一致する。具体的には、ネットワーク装置Sは、ネクストホップネットワーク装置がネットワーク装置1であると決定し、セグメントリストを含むパケットをネットワーク装置1に送信する。ネットワーク装置1は、最長一致ルールに従って、パケット内のDAフィールドに基づいてローカルセグメント識別子テーブルを照会する。BLOCK部分とuSID1とを含む部分がローカルセグメント識別子テーブルのエントリと成功裏に一致する場合に、ネットワーク装置1は、uSID1に対応するパケット処理動作を実行する。第1の識別子から始まる少なくとも1つの識別子が1つの識別子である場合に、セグメントリスト内の各識別子に対応するネットワーク装置はコピーノードである。換言すると、ネットワーク装置1はコピーノードでもある。ネットワーク装置1は、XLポインタの値に基づいて、セグメントリスト内の現在追加対象となるuSID2の位置を決定し、uSID2をDAフィールドにコピーする。ネットワーク装置1は、パケット内のXLポインタの値を変更し、それによって、変更したXLポインタの値がuSID3を指すようにして、現在追加対象となる識別子がセグメントリスト内のuSID3であることを示すようにする。その後、パケットは、ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、ネットワーク装置6、ネットワーク装置7、ネットワーク装置8、及びネットワーク装置9を介してネットワーク装置10に転送され続ける。これらのネットワーク装置のパケット処理動作はそれぞれネットワーク装置1の動作と同様である。詳細については、ここでは再び説明しない。
【0158】
オプションで、セグメントリストは、uSIDと別のタイプの識別子との両方を含み得る。別のタイプの識別子は、MPLSラベル又はIPv4アドレスであり得る。具体的には、MPLSラベル又はIPv4アドレスを、uSIDが使用されるセグメントリストにさらに含めることができる。パケットが通過する全てのネットワーク装置の中で、ネットワーク装置は、SRv6をサポートしない場合があるが、MPLS又はIPv4をサポートすることができる。この場合に、ネットワーク装置に対応するMPLSラベル又はIPv4アドレスをセグメントリストに直接格納して、ネットワークの互換性及びネットワークの効率を向上させる。
図1に示される適用シナリオを参照すると、ネットワーク装置Sはパケットをネットワーク装置10に送信する。この場合に、パケットの転送パスは、ネットワーク装置S->ネットワーク装置1->ネットワーク装置2->ネットワーク装置3->ネットワーク装置4->ネットワーク装置5->ネットワーク装置6->ネットワーク装置7->ネットワーク装置8->ネットワーク装置9->ネットワーク装置10である。ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、及びネットワーク装置6は、SRv6をサポートしないが、MPLSをサポートすることができる。
【0159】
セグメントリストにおいて、uSID、並びにMPLSラベル及び/又はIPv4アドレスは、転送パス上の対応するネットワーク装置のシーケンスに基づいて順次配置される。各MPLSラベルの長さが32ビットであり得、各IPv4アドレスの長さも32ビットであり得る。MPLSラベル又はIPv4アドレスの長さは、uSIDの長さと同じであってもよく、又は異なっていてよい。
図8は、この場合のセグメントリストの構造を示している。ネットワーク装置3、ネットワーク装置4、ネットワーク装置5、及びネットワーク装置6が、SRv6をサポートしないが、MPLSラベルをサポートすることができるため、これらのネットワーク装置にそれぞれ対応するMPLSラベル、つまりM3、M4、M5、及びM6をセグメントリストに格納することができる。uSID又は別のネットワーク装置に対応するSIDもセグメントリストに格納される。MPLSラベルの長さは、32ビットであり、uSIDの長さと同じである。さらに、これらのMPLSラベル及びuSIDを1つの要素に一緒に格納することができる。
図8に示されるように、セグメントリストにおいて、1番目の要素は、uSID1、uSID2、M3、及びM4を格納し、2番目の要素は、M5、M6、uSID7、及びuSID8を格納する。IPv4アドレスの格納方法はMPLSラベルと同様である。詳細については、ここでは再び説明しない。
【0160】
オプションで、セグメントリストにMPLSラベル及び/又はIPv4アドレスが含まれる場合に、ネットワーク装置Sは、スイッチングフラグをパケットに追加し、ここで、スイッチングフラグは、セグメントリストに配置され得る。例えば、セグメントリストに、連続して配置された複数のMPLSラベル又はIPv4アドレスが含まれる場合に、スイッチングフラグは、セグメントリスト内の特定の識別子に配置され得る。例えば、特定の識別子は第2の識別子と呼ばれる。第2の識別子は、最初(第1)のMPLSラベル又はIPv4アドレスの前の最後のuSIDであり得る。あるいはまた、スイッチングフラグは独立した識別子であり得、独立した識別子は、最後のuSIDと最初(第1)のMPLSラベル又はIPv4アドレスとの間に追加される。スイッチングフラグは、セグメントリスト内の次の識別子がMPLSラベル又はIPv4アドレスであることを示すために使用され、それによって、ネットワーク装置は、最後のuSIDを読み取るときに、セグメントリスト内のuSIDの次の識別子がMPLSラベル及び/又はIPv4アドレスであると判定することができる。具体的なプロセスについては、以下で詳細に説明する。
【0161】
オプションで、ネットワーク装置Sが少なくとも1つの識別子をDAフィールドに追加するときに、ネットワーク装置Sは、少なくとも1つの追加対象となる識別子のそれぞれにスイッチングフラグが含まれるかどうかを判定する。識別子にスイッチングフラグが含まれる場合に、ネットワーク装置Sは、識別子をDAフィールドに追加した後に、もはやその識別子の次の識別子をDAフィールドに追加しなくなる。この場合に、DAフィールドに追加される少なくとも1つの識別子は、全てuSIDであり、別のタイプの識別子を含まない。
【0162】
オプションで、セグメントリストにMPLSラベル及び/又はIPv4アドレスが含まれる場合に、ネットワーク装置Sは、数量フラグをパケットにさらに追加し、ここで、数量フラグの値は、セグメントリスト内のMPLSラベル及び/又はIPv4アドレスの数量を示すために使用される。数量フラグはパケットヘッダに配置することができ、パケットヘッダはSRH又はIPv6パケットヘッダであり得る。例えば、数量フラグをSRH内の特定のフィールドに配置してもよく、又は数量フラグをIPv6パケットヘッダ内のDAフィールドに配置してもよい。代替的に、数量フラグをセグメントリストに配置してもよい。例えば、セグメントリストに、連続して配置された複数のMPLSラベル又はIPv4アドレスが含まれる場合に、数量フラグは、最初(第1)のMPLSラベル又はIPv4アドレスの前の最後のuSIDに配置される場合がある。この場合に、PIポインタは、要素内の異なるuSID、MPLSラベル、又はIPv4アドレスの位置を示すために使用される。
【0163】
オプションで、スイッチングフラグ及び数量フラグは同じフラグであり得る。具体的には、数量フラグはスイッチングフラグの機能も果たす。この場合に、セグメントリストに、連続して配置された複数のMPLSラベル又はIPv4アドレスが含まれる場合に、数量フラグは、最初(第1)のMPLSラベル又はIPv4アドレスの前の最後のuSIDに配置される場合がある。
【0164】
図10を参照して例を使用して説明する。
図10は、セグメントリスト及びPIポインタが追加されるパケットの構造を示している。セグメントリストにはMPLSラベルが含まれる。さらに、ネットワーク装置Sは、SID内のBLOCK部分をDAフィールドに追加し、DAフィールド内のBLOCK部分の後に2つのuSID及び1つのMPLSラベルを追加する。
図10に示されるように、2つのuSIDはuSID1及びuSID2であり、1つのMPLSラベルはM3である。PIポインタの値が3である場合に、それは、セグメントリストの要素の最初の3つの識別子がDAフィールドに追加されることを示す。要素内に追加対象となる識別子、つまりM3は、PIポインタの値に基づいて決定することができる。具体的な内容について、以下で詳細に説明する。
【0165】
パケット内のセグメントリストに別のタイプの識別子、例えば、MPLSラベル及び/又はIPv4アドレスがさらに含まれる場合に、転送パス上の中間ノードは、別のタイプの識別子をパケット内の転送識別子スタックにコピーすることができる。転送識別子スタックは、パケット転送をガイドするために使用される。コピー動作を実行する中間ノードは、コピーノードと呼ばれ得る。
【0166】
オプションで、現在のuSIDを処理するときに、転送パス上のコピーノードは、スイッチングフラグ又は数量フラグを使用して、セグメントリスト内の次の識別子にMPLSラベル又はIPv4アドレスが含まれると判定することができる。この場合に、現在追加対象となる識別子は、最初(第1)のMPLSラベル又はIPv4アドレスである必要がある。コピーノードは、PIポインタの値に基づいて最初(第1)のMPLSラベル又はIPv4アドレスを決定する。
【0167】
現在のuSIDがDAフィールド内の最後のuSIDである場合に、つまり、DAフィールド内のuSIDの後に他の識別子がない場合に、コピーノードは、PIポインタの値に基づいて、セグメントリスト内の最初(第1)のMPLSラベル又はIPv4アドレスを直接決定することができる。
【0168】
現在のuSIDがDAフィールド内の最後のuSIDではない場合に、つまり、DAフィールドのuSIDの後に別の識別子がある場合に、それは、いくつかのMPLSラベル又はIPv4アドレスがDAフィールドに追加され、最初(第1)のMPLSラベル又はIPv4アドレスがDAフィールドに追加されることを示す。オプションで、コピーノードは、DAフィールドに追加される別の識別子と、DAフィールドに追加されない別の識別子を別々に取得することができる。オプションで、コピーノードは、代替的に、DAフィールドに追加されるMPLSラベル又はIPv4アドレスの数量Nを決定し(ここで、Nは整数である)、次にPIポインタの値及び数量Nに基づいてPIポインタの値を修正し、PIポインタの修正した値に基づいて、セグメントリスト内の最初(第1)のMPLSラベル又はIPv4アドレスを決定する。具体的には、コピーノードは、PIポインタの値から数量Nの値を減算することにより、PIポインタの値を修正する。前述のプロセスは、セグメントリスト内のPIポインタのロールバックと見なすこともできる。
【0169】
図13に示されるパケットの構造を参照すると、パケット内のDAフィールドは、BLOCK部分、uSID2、及びM3を含み、uSID2は、数量フラグを含み、数量フラグの値は4であり得る。また、パケット内のPIポインタの値は3であり得る。
図1に示される適用シナリオを参照して例を使用して説明する。コピーノードはネットワーク装置2であり得る。ネットワーク装置2は、最長一致ルールに従って、パケット内のDAフィールドに基づいてローカルセグメント識別子テーブルを照会し、BLOCK部分とuSID2とを含む部分が成功裏に一致する場合に、対応する転送動作を実行する。さらに、現在のuSID2を処理するときに、ネットワーク装置2は、uSID2に含まれる数量フラグに基づいて、uSID2がセグメントリストの次の識別子にMPLSラベルを含むと判定し、ここで、MPLSラベルの数量は4である。この場合に、現在追加対象となる識別子は最初(第1)のMPLSラベルである必要がある。
【0170】
ネットワーク装置2は、現在のuSID2がDAフィールド内の最後のuSIDではないとさらに判定する。DAフィールドのuSID2の後に32個の非ゼロビットがあり、uSID2の後に1つのMPLSラベルがある。換言すると、最初(第1)のMPLSラベルがDAフィールドに追加される。ネットワーク装置2は、DAフィールドに追加されるMPLSラベルの数量が1であるという事実を参照して、PIポインタの値が3であるという事実に基づいて、PIポインタの修正した値が2である必要があると判定し、PIポインタの修正した値に基づいて、最初(第1)のMPLSラベルが現在の要素の3番目の識別子、つまりM3である必要があると判定する。
【0171】
オプションで、第1の識別子から始まる少なくとも1つの識別子が別のタイプの少なくとも1つの識別子、例えばMPLSラベル又はIPv4アドレスである場合に、コピーノードは、別のタイプの識別子を第2のパケットヘッダに追加して、転送識別子スタック、例えばMPLSラベルスタック又はIPv4アドレススタックを形成する。
【0172】
前述の説明を参照すると、別のタイプのいくつかの識別子をDAフィールドに追加するときに、オプションで、コピーノードは、DAフィールドに追加される別の識別子と、DAフィールドに追加されない別の識別子とを別々に取得し、2つの識別子を第2のパケットヘッダに一緒に追加して、転送識別子スタックを形成することができる。オプションで、コピーノードは、代替的に、PIポインタの修正した値に基づいて、セグメントリスト内の別のタイプの第1の識別子の位置を決定して、セグメントリストから別のタイプの全ての識別子を取得することができる。
【0173】
コピーノードは、少なくとも1つのMPLSラベル又はIPv4アドレスの数量を決定する。オプションで、中間ノードは、数量フラグの値を少なくとも1つのMPLSラベル又はIPv4アドレスの数量として使用する。
【0174】
少なくとも1つのMPLSラベル又はIPv4アドレスは、MPLS又はIPv4をサポートする少なくとも1つのネットワーク装置に対応する。パケットは、ネットワーク装置を通過した後に、再びSRv6ネットワークに入る場合がある。この場合に、セグメントリストにおいて、少なくとも1つのMPLSラベル又はIPv4アドレスの後に1つ又は複数のuSIDがあり、これらのuSIDもパケットのIPv6パケットヘッダ内のDAフィールドにコピーする必要がある。オプションで、これらのuSIDは中間ノードによってDAフィールドにコピーされ得る。オプションで、これらのuSIDは、代替的に、MPLS又はIPv4をサポートする少なくとも1つのネットワーク装置内の最後のネットワーク装置によってDAフィールドにコピーされ得る。
【0175】
これらのuSIDが中間ノードによってDAフィールドにコピーされ得る場合に、オプションで、これらのuSIDをDAフィールドにコピーした後に、コピーノードは、パケット内のPIポインタの値を変更し、それによって、PIポインタの変更した値は、セグメントリスト内の別の識別子を指す。例えば、別の識別子は、第3の識別子と呼ばれ得る。第3の識別子は、セグメントリストのDAフィールドにコピーされるこれらのuSID内の最後のuSIDの次の識別子であり得る。第3の識別子及び最後のuSIDは、セグメントリストの同じ要素に配置されてもよく、又は、第3の識別子及び最後のuSIDは、セグメントリストの異なる要素に配置されてもよい。例えば、最後のuSIDが配置される要素が第1の要素であり、第3の識別子が配置される要素が第2の要素である場合に、第1の要素は第2の要素と同じであってもよく、又は異なっていてもよい。オプションで、第1の要素が第2の要素と異なる場合に、コピーノードは、パケット内のSLポインタの値をさらに変更し、それによって、SLポインタの変更した値は第2の要素を指す。例えば、第2の要素は、セグメントリスト内の第1の要素の次の要素であり得る。
【0176】
図1に示される適用シナリオを参照して例を使用して説明する。コピーノードはネットワーク装置2であり得る。ネットワーク装置2によって受信されるパケットの構造が
図13に示されている。ネットワーク装置2は、最初(第1)のMPLSラベルが現在の要素の3番目の識別子、つまりM3である必要があると判定する。さらに、ネットワーク装置2は、数量フラグの値が4であるという事実に基づいて、DAフィールドに追加すべき少なくとも1つのMPLSラベルの数量が4であると判定する。ネットワーク装置2は、パケットのIPv6パケットヘッダの外側にMPLSパケットヘッダを確立する。MPLSパケットヘッダには、転送識別子スタック、つまりMPLSラベルスタックが含まれる。ネットワーク装置2は、M3から始まる4つのMPLSラベルをMPLSラベルスタックに追加する。4つのMPLSラベルには、M3、M4、M5、及びM6が含まれる。さらに、ネットワーク装置2は、セグメントリスト内のM6に続く少なくとも1つのuSIDをDAフィールドにコピーする。具体的には、ネットワーク装置2は、uSID7及びuSID8をDAフィールドにコピーする。さらに、ネットワーク装置2は、SLポインタの値を変更し、それによって、SLポインタの変更した値は2となり、セグメントリストの第3の要素を指す。ネットワーク装置2は、PIポインタの値を変更し、それによって、PIポインタの変更した値は、0となり、第3の要素の1番目の識別子、つまりSID9を指す。この場合に、パケットの構造が
図17に示されている。
【0177】
ネットワーク装置2は、MPLSパケットヘッダ内のMPLSラベルスタックの最上位ラベル、つまりM3に基づいて、パケットをネットワーク装置3に転送する。パケットがネットワーク装置3に到着すると、MPLSラベルスタックの最上位にあるM3がポップアウトされ、M4が最上位のラベルになる。ネットワーク装置3は、M4に基づいてパケットをネットワーク装置4に転送する。続いて、パケットは、ネットワーク装置4、ネットワーク装置5、及びネットワーク装置6に順次到着する。特定のプロセスは、前述の説明のプロセスと同様である。詳細については、ここでは再び説明しない。ネットワーク装置5又はネットワーク装置6において、パケットのMPLSパケットヘッダが削除される。ネットワーク装置6は、MPLSとSRv6との両方をサポートする。ネットワーク装置6は、パケットのIPv6パケットヘッダ内のDAフィールドに基づいてパケットを転送し続ける。
図17に示されるパケットの構造を参照すると、DAフィールドは、BLOCK部分、uSID7、及びuSID8を含む。従って、ネットワーク装置6は、パケットをネットワーク装置7に転送する。特定のプロセスは、前述の説明のプロセスと同様である。詳細については、ここでは再び説明しない。
【0178】
MPLSラベルを処理するプロセスを、説明のための例として使用する。IPv4アドレスを処理するプロセスは、前述の説明のプロセスと同様である。詳細については、ここでは再び説明しない。
【0179】
本発明の一実施形態は、パケットを転送するための方法を提供する。
図18は、方法の方法フローチャートである。この方法は、ネットワーク装置401及びネットワーク装置402に適用される。ネットワーク装置401は、ネットワーク内のネットワーク入力装置、例えば
図1に示されるネットワーク装置Sであり得、パケットの転送パスに対応するセグメントリストをパケットにカプセル化するように構成される。ネットワーク装置402は、ネットワーク内の転送装置であり得る。具体的には、ネットワーク装置402は、前述の実施形態におけるコピーノードであり、例えば、
図1に示されるネットワーク装置3、ネットワーク装置4、ネットワーク装置7、ネットワーク装置8、又はネットワーク装置9、又は
図1に示されるネットワーク装置2である。この方法は、以下のステップを含む。
【0180】
S410:ネットワーク装置402は、パケットを受信する。
【0181】
S420:ネットワーク装置401は、セグメントリストを取得する。セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子内の識別子は、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには長さが128ビットである要素が含まれ、要素は複数の識別子内の少なくとも2つの隣接する識別子を含む。
【0182】
S430:ネットワーク装置402は、セグメントリストをパケットに追加し、ここで、セグメントリストには第1のポインタが含まれ、第1のポインタの値は、要素内の第1の識別子の位置を示すために使用され、第1の識別子は、少なくとも2つの識別子のうちの1つである。
【0183】
S440:ネットワーク装置402は、パケットを送信する。
【0184】
ネットワーク装置402は、ネットワーク内のネットワーク入力装置であり得、ネットワーク装置401は、パケットの転送パス上の入力ノード、例えば、
図1に示されるネットワーク装置Sである。特定のプロセスについては、前述の実施形態におけるネットワーク装置Sの説明を参照されたい。同様の内容については、ここでは再び説明しない。
【0185】
S450:ネットワーク装置402は、パケットを受信する。パケットのパケットヘッダには、パケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含み、第1のパケットには第1のポインタが含まれる。
【0186】
S460:ネットワーク装置402は、第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定する。
【0187】
S470:ネットワーク装置402は、第1の識別子から始まる少なくとも1つの識別子をパケットのパケットヘッダにコピーする。
【0188】
S480:ネットワーク装置402は、パケットを送信する。
【0189】
ネットワーク装置402は、パケットの転送パス上のコピーノードであり得る。換言すると、ネットワーク装置402は、少なくとも1つの識別子をパケットにコピーする中間ノードである。ネットワーク装置402によってコピーされる少なくとも1つの識別子は、uSID、MPLSラベル、又はIPv4アドレスであり得る。具体的には、
図1に示される適用シナリオを参照すると、ネットワーク装置402は、
図1のネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置7、ネットワーク装置8、又はネットワーク装置9であり得る。特定のプロセスについては、前述の実施形態におけるネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置7、ネットワーク装置8、又はネットワーク装置9の説明を参照されたい。同様の内容については、ここでは再び説明しない。
【0190】
実際のネットワークでは、パケットの転送パスは、コントローラによって生成してもよく、又は転送パス上の入力ノードによって生成してもよい。コントローラがパケットの転送パスを生成するときに、コントローラは、転送パスに対応するセグメントリストも生成し、ここで、セグメントリストは、uSIDを含むセグメントリストであり得る。コントローラは、セグメントリストを転送パス上の入力ノードに送信する。転送パス上の入力ノードは、パケットを受信した後に、装置に格納した、いくつかの転送パスからパケットの転送パスを決定し、転送パスに対応するセグメントリストを決定し、セグメントリストをパケットにカプセル化して、パケットを転送する。
【0191】
本発明の一実施形態は、パケットを転送するための方法を提供する。
図19は、方法の方法フローチャートである。この方法は、ネットワーク装置301、ネットワーク装置302、及びネットワーク装置303に適用される。ネットワーク装置301は、ネットワーク内のコントローラであり得、パケットの転送パスを計算し、転送パスに対応するセグメントリストを生成するように構成される。ネットワーク装置302は、ネットワーク入力装置、例えば
図1に示されるネットワーク装置Sであり得、セグメントリストをパケットにカプセル化するように構成される。ネットワーク装置303は、ネットワーク内の転送装置であり得、セグメントリストに基づいてパケットを転送するように構成される。具体的には、ネットワーク装置303は、前述の実施形態におけるコピーノード、例えば、
図1に示されるネットワーク装置2、ネットワーク装置3、ネットワーク装置4、ネットワーク装置7、ネットワーク装置8、又はネットワーク装置9であり得る。この方法は、以下のステップを含む。
【0192】
S310:ネットワーク装置310は、パケットの転送パスを決定し、ここで、転送パスには複数のネットワーク装置が含まれる。
【0193】
ネットワーク装置310は、ネットワーク内のコントローラであり得る。コントローラは、パケットの転送に使用される転送パスを計算する。
【0194】
S315:ネットワーク装置310は、転送パスに対応するセグメントリストを生成し、ここで、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む。
【0195】
オプションで、ネットワーク装置310は、複数のセグメント識別子を取得し、ここで、複数のセグメント識別子は、複数のネットワーク装置のうちの少なくとも1つ又は転送パス上の少なくとも1つのリンクに対応する。例えば、コントローラは、転送パス上の各ネットワーク装置のSIDを取得する。ネットワーク装置310は、複数のセグメント識別子に基づいて複数の識別子を取得し、ここで、複数の識別子は、1対1の方法で複数のセグメント識別子にマッピングされる。SIDの長さを短くするために、コントローラは、複数のSIDを複数のuSIDに変換することができ、ここで、複数のuSIDは、1対1の方法で複数のSIDにマッピングされる。具体的な方法としては、SID内のBLOCK部分を省略する、及び/又はSID内の関数フィールドを圧縮形式に設定するステップを含む。特定のプロセスについては、ステップS420の説明を参照されたい。同様の内容については、ここでは再び説明しない。
【0196】
ネットワーク装置310は、転送パスに対応するセグメントリストを生成し、ここで、セグメントリストには順次配置される複数の識別子が含まれ、セグメントリストには、長さが128ビットである要素が含まれ、要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む。例えば、コントローラは、複数のSIDを複数のuSIDに置き換え、複数のuSIDをセグメントリストに配置して、セグメントリストの長さを短くする。セグメントリスト内のスペースを複数の要素に分割することができ、各要素の長さを128ビットにすることができる。各要素には、少なくとも2つのuSIDを格納することができる。特定のプロセスについては、ステップS420の説明を参照されたい。同様の内容については、ここでは再び説明しない。
【0197】
S320:ネットワーク装置310は、セグメントリストをネットワーク装置302に送信する。
【0198】
ネットワーク装置302は、ネットワーク内のネットワーク装置であり、ネットワーク装置302は、パケットの転送パス上の入力ノード、例えば、
図1に示されるネットワーク装置Sである。ネットワーク装置302は、セグメントリストを取得し、ここで、セグメントリストはパケットの転送パスに対応し、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つに対応する。
【0199】
S325:ネットワーク装置302は、パケットを受信する。
【0200】
転送パス上の入力ノードとして、ネットワーク装置302は、パケットを受信し、パケットの転送パスを決定する。オプションで、ネットワーク装置302は、格納した複数の転送パスから、パケットを転送するために使用する転送パスを見つけて、パケットの転送パスを決定することができる。格納される複数の転送パスは、コントローラからネットワーク装置302によって受信され得る。
【0201】
S330:ネットワーク装置302は、セグメントリストをパケットに追加し、ここで、セグメントリストには第1のポインタが含まれ、第1のポインタの値は、要素内の第1の識別子の位置を示すために使用され、第1の識別子は、少なくとも2つの識別子のうちの1つである。
【0202】
ステップS330の特定のプロセスについては、ステップS430の説明を参照されたい。同様の内容については、再び説明しない。
【0203】
S335:ネットワーク装置302は、パケットを送信する。
【0204】
ステップS335の特定のプロセスについては、ステップS440の説明を参照されたい。同様の内容については、再び説明しない。
【0205】
S340:ネットワーク装置303は、パケットを受信する。
【0206】
ステップS340の特定のプロセスについては、ステップS450の説明を参照されたい。同様の内容については、再び説明しない。
【0207】
S345:ネットワーク装置303は、第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定する。第1のポインタは、上で説明した新しく追加されるPIポインタである。
【0208】
ステップS345の特定のプロセスについては、ステップS460の説明を参照されたい。同様の内容については、再び説明しない。
【0209】
S350:ネットワーク装置303は、第1の識別子から始まる少なくとも1つの識別子をパケットのパケットヘッダにコピーする。
【0210】
ステップS350の特定のプロセスについては、ステップS470の説明を参照されたい。同様の内容については、再び説明しない。
【0211】
S355:ネットワーク装置303は、パケットを送信する。
【0212】
ステップS355の特定のプロセスについては、ステップS480の説明を参照されたい。同様の内容については、再び説明しない。
【0213】
図20は、本願の一実施形態による装置400の概略構造図である。
図1の任意のネットワーク装置は、
図20に示される装置を使用して実装することができる。
図18に示される実施形態におけるネットワーク装置401及びネットワーク装置402、及び
図19に示される実施形態におけるネットワーク装置310、ネットワーク装置302、及びネットワーク装置303は、
図20に示される装置を使用して実装することができる。
図20を参照すると、装置2000は、少なくとも1つのプロセッサ2001、通信バス2002、及び少なくとも1つの通信インターフェイス2004を含む。オプションで、装置2000は、メモリ2003をさらに含み得る。
【0214】
プロセッサ2001は、中央処理装置(central processing unit, CPU)、汎用プロセッサ、デジタル信号プロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application-specific integrated circuit, ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array, FPGA)又は別のプログラマブル論理装置、トランジスタ論理装置、ハードウェアコンポーネント、又はそれらの任意の組合せであり得る。プロセッサ2001は、本発明の実施形態で開示した内容を参照して説明した様々な論理ブロック、モジュール、及び回路を実装又は実行することができる。あるいはまた、プロセッサは、コンピューティング機能を実施するプロセッサの組合せ、例えば、1つ又は複数のマイクロプロセッサの組合せ、又はDSP及びマイクロプロセッサの組合せであり得る。プロセッサは、セグメントリストを生成するか、受信したパケットを処理し、処理したパケットを通信インターフェイスを介してさらに転送して、本願の実施形態で提供される方法を実施するように構成され得る。
【0215】
例えば、ネットワーク内のコントローラ又はネットワーク入力装置が、
図20に示される装置を使用して実装される場合に、プロセッサは、セグメントリストを生成するように構成され得、それによって、ネットワーク装置は、セグメントリストに基づいて対応するパケットを転送することができる。特定の機能の実施態様については、方法の実施形態におけるコントローラ又はネットワーク入力装置の処理部分を参照されたい。例えば、
図1のネットワーク入力装置が
図20に示される装置を使用して実装される場合に、プロセッサは、受信したパケットにセグメントリストを追加するように構成され得、それによって、ネットワーク装置は、パケット内のセグメントリストに基づいてパケットを後で転送することができる。特定の機能の実施態様については、方法の実施形態におけるネットワーク入力装置の処理部分を参照されたい。別の例として、
図1のネットワーク内の転送装置が
図20に示される装置を使用して実装される場合に、プロセッサは、パケット内のセグメントリストに基づいてパケットを転送するように構成され得る。特定の機能の実施態様については、方法の実施形態における転送装置の処理部分を参照されたい。
【0216】
通信バス2002は、プロセッサ2001、通信インターフェイス2004、及びメモリ2003の間で情報を送信するように構成される。バスは、周辺コンポーネント相互接続(peripheral component interconnect、略してPCI)バス、拡張業界標準アーキテクチャ(extended industry standard architecture、略してEISA)バス等であり得る。バスは、アドレスバス、データバス、制御バス等に分類することができる。表現を容易にするために、
図20でバスを表すために1本の太い線のみを使用しているが、これはバスが1つしかない、又はバスの種類が1つしかないという意味ではない。
【0217】
メモリ2003は、読取り専用メモリ(read-only memory, ROM)又は静的情報及び命令を記憶することができる別のタイプの静的記憶装置、或いはランダムアクセスメモリ(random access memory, RAM)又は情報及び命令を記憶することができる別のタイプの動的記憶装置であり得る。メモリ2003は、代替的に、電気的に消去可能なプログラマブル読取り専用メモリ(electrically erasable programmable read-only memory, EEPROM)、コンパクトディスク読取り専用メモリ(compact disc read-only Memory, CD-ROM)又は別のコンパクトディスクストレージ、光ディスクストレージ(コンパクトディスク、レーザディスク、光ディスク、デジタル多用途ディスク、Blu-rayディスク等を含む)、磁気ディスク記憶媒体又は別の磁気記憶装置、或いは予想されるプログラムコードを命令又はデータ構造の形式で搬送又は格納するために使用でき、且つコンピュータからアクセスできる他の媒体であり得る。しかしながら、メモリ2003はこれらに限定されない。メモリ2003は、独立して存在することができ、通信バス2002を使用してプロセッサ2001に接続され得る。あるいはまた、メモリ2003は、プロセッサ2001に統合され得る。
【0218】
オプションで、メモリ2003は、本願のソリューションを実行するためのプログラムコード又は命令を格納するように構成され、プロセッサ2001は、実行を制御する。プロセッサ2001は、メモリ2003に格納したプログラムコードを実行するように構成される。プログラムコードは、1つ又は複数のソフトウェアモジュールを含み得る。オプションで、プロセッサ2001は、本願のソリューションを実行するためのプログラムコード又は命令を格納することもできる。
【0219】
通信インターフェイス2004は、別の装置又は通信ネットワークと通信するためのトランシーバ等の任意の機器である。通信ネットワークは、イーサネット、無線アクセスネットワーク(RAN)、ワイヤレスローカルエリアネットワーク(wireless local area networks, WLAN)等であり得る。本願のこの実施形態では、通信インターフェイス2004は、セグメントルーティングネットワーク内の別のノードによって送信されたパケットを受信するか、又はセグメントルーティングネットワーク内の別のノードにパケットを送信するように構成され得る。通信インターフェイス2004は、イーサネット(Ethernet)インターフェイス、ファストイーサネット(Fast Ethernet, FE)インターフェイス、ギガビットイーサネット(Gigabit Ethernet, GE)インターフェイス、非同期転送モード(Asynchronous Transfer Mode, ATM)インターフェイス等であり得る。
【0220】
特定の実施態様では、一実施形態では、装置2000は、複数のプロセッサ、例えば、
図20に示されるプロセッサ2001及びプロセッサ2005を含み得る。各プロセッサは、シングルコアプロセッサ(single-CPU)又はマルチコアプロセッサ(multi-CPU)であり得る。本明細書のプロセッサは、データ(例えば、コンピュータプログラム命令)を処理するように構成された1つ又は複数の装置、回路、及び/又は処理コアであり得る。
【0221】
図21は、本願の一実施形態による装置2100の概略構造図である。
図1のコントローラ以外の任意のネットワーク装置は、
図21に示される装置を使用して実装することができる。
図18に示される実施形態におけるネットワーク装置402及びネットワーク装置402、
図19に示される実施形態におけるネットワーク装置302及びネットワーク装置303は、
図21に示される装置を使用して実装することができる。詳細については、
図21に示される装置の概略構造図を参照されたい。装置2100は、メイン制御ボード及び1つ又は複数のインターフェイスボードを含む。メイン制御ボード及びインターフェイスボードは通信接続される。メイン制御ボードは、メイン処理ユニット(main processing unit, MPU)又はルートプロセッサカード(route processor card)とも呼ばれる。メイン制御ボードは、経路計算、装置管理、及び機能保守を含む、装置2100内の各コンポーネントを制御及び管理する責任がある。インターフェイスボードは、ライン処理ユニット(line processing unit, LPU)又はラインカード(line card)とも呼ばれ、データを転送するように構成される。いくつかの実施形態では、装置2100は、スイッチングボードも含み得る。スイッチングボードは、メイン制御ボード及びインターフェイスボードに通信接続される。スイッチングボードは、インターフェイスボード同士の間でデータを転送するように構成される。スイッチングボードは、スイッチファブリックユニット(switch fabric unit, SFU)とも呼ばれ得る。インターフェイスボードは、中央処理装置、メモリ、転送チップ、及び物理インターフェイスカード(physical interface card, PIC)を含む。中央処理装置は、メモリ、ネットワークプロセッサ、及び物理インターフェイスカードに個別に通信接続される。メモリは、転送テーブルを格納するように構成される。転送チップは、メモリに格納した転送テーブルに基づいて、受信したデータフレームを転送するように構成される。データフレームの宛先アドレスが装置2100のアドレスである場合に、データフレームは、処理のためにCPUに送られる。データフレームの宛先アドレスが装置2100のアドレスではない場合に、宛先アドレスに対応するネクストホップ及びアウトバウンド(outbound)インターフェイスが、宛先アドレスに基づいて転送テーブルで見つけられ、データフレームは、宛先アドレスに対応するアウトバウンドインターフェイスに転送される。転送チップは、ネットワークプロセッサ(network processor, NP)であり得る。サブカードとも呼ばれるPICは、インターフェイスボードにインストールすることができる。PICは、光/電気信号をデータフレームに変換し、データフレームの有効性をチェックし、データフレームを、処理するために転送チップに転送する責任がある。いくつかの実施形態では、中央処理装置は、転送チップの機能も実行し得、例えば、汎用CPUに基づいてソフトウェア転送を実施し得、それによって、インターフェイスボードは転送チップを必要としない。メイン制御ボード、インターフェイスボード、及びスイッチングボードの間の通信接続は、バスを介して実装することができる。いくつかの実施形態では、転送チップは、特定用途向け集積回路(application-specific integrated circuit, ASIC)又はフィールドプログラマブルゲートアレイ(field programmable gate array, FPGA)を使用して実装され得る。
【0222】
論理的には、装置2100は、制御プレーン及び転送プレーンを含む。制御プレーンは、メイン制御ボード及び中央処理装置を含む。転送プレーンは、転送を実行するためのコンポーネント、例えば、メモリ、PIC、及びNPを含む。制御プレーンは、ルータの機能、転送テーブルの生成、シグナリング及びプロトコルパケットの処理、PE1のステータスの設定及び維持等の機能を実行する。制御プレーンは、生成した転送テーブルを転送プレーンに配信する。転送プレーン上で、NPは、制御プレーンによって配信された転送テーブルに基づいてテーブルを検索して、装置2100のPICによって受信されたパケットを転送する。制御プレーンによって配信された転送テーブルは、メモリに格納され得る。いくつかの実施形態では、制御プレーン及び転送プレーンは、完全に分離されていてもよく、同じ装置上にない。
【0223】
図22は、前述の実施形態におけるネットワーク装置の可能な概略構造図である。ネットワーク装置1400は、前述の実施形態において、ネットワーク装置402又はネットワーク装置303の機能を実施することができる。
図20を参照すると、ネットワーク装置1400は、受信ユニット1401、処理ユニット1402、及び送信ユニット1403を含む。これらのユニットは、前述の方法において、ネットワーク装置402又はネットワーク装置303の対応する機能を実行することができる。詳細は以下の通りである。
【0224】
受信ユニット1401は、第1のパケットを受信するように構成され、ここで、第1のパケットの第1のパケットヘッダには、第1のパケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子内の識別子は1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は複数の識別子内の少なくとも2つの隣接する識別子を含み、第1のパケットには第1のポインタ及び第2のポインタが含まれる。
【0225】
処理ユニット1402は、第2のポインタの値に基づいて、セグメントリスト内の第1の要素の位置を決定すること;第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定することであって、ここで、第1の識別子は、少なくとも2つの識別子のうちの1つである、決定すること;及び第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーして、第2のパケットを生成すること;を行うように構成される。
【0226】
送信ユニット1403は、第2のパケットを送信するように構成される。
【0227】
ネットワーク装置1400は、代替的に、
図20に示される装置を使用して実装され得る。この場合に、ネットワーク装置1400は、少なくとも1つのプロセッサ、通信バス、及び少なくとも1つの通信インターフェイスを含む。オプションで、ネットワーク装置1400は、メモリをさらに含み得る。
【0228】
特定の実施形態では、ネットワーク装置1400のプロセッサは、通信インターフェイスを介して第1のパケットを受信することであって、ここで、第1のパケットの第1のパケットヘッダには、第1のパケットを転送するために使用されるセグメントリストが含まれ、セグメントリストには、順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、1つのネットワーク装置又は1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含み、第1のパケットには第1のポインタが含まれる、受信すること;第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定することであって、ここで、第1の識別子は、少なくとも2つの識別子のうちの1つである、決定すること;第1の識別子から始まる少なくとも1つの識別子を第1のパケットの第2のパケットヘッダにコピーして、第2のパケットを生成すること;及びパケットを通信インターフェィス1503を介して送信すること;を行うように構成される。プロセッサの詳細な処理プロセスについては、前述の実施形態におけるプロセスS450、S460、S470、及びS480、並びにプロセスS340、S345、S350、及びS355の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0229】
ネットワーク装置1400の通信インターフェイスは、ネットワークシステムを使用してパケットを送受信するためにネットワーク装置1400によって使用される。特定のプロセスについては、前述の実施形態におけるS450、S480、S340、及びS355の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0230】
ネットワーク装置1400は、代替的に、
図21に示される装置を使用して実装され得る。この場合に、ネットワーク装置1400は、メイン制御ボード及び1つ又は複数のインターフェイスボードを含む。メイン制御ボード及びインターフェイスボードは通信接続される。詳細については、前述の実施形態におけるネットワーク装置2100の説明を参照されたい。詳細については、ここでは再び説明しない。
【0231】
図23は、前述の実施形態におけるネットワーク装置の可能な概略構造図である。ネットワーク装置1600は、前述の実施形態におけるネットワーク装置402又はネットワーク装置302の機能を実施することができる。
図23を参照すると、ネットワーク装置1600は、受信ユニット1601、処理ユニット1602、及び送信ユニット1603を含む。これらのユニットは、前述の方法において、ネットワーク装置402又はネットワーク装置302の対応する機能を実行することができる。詳細は以下の通りである。
【0232】
受信ユニット1601は、第1のパケットを受信するように構成される。
【0233】
処理ユニット1602は、セグメントリストを取得することであって、ここで、セグメントリストは、第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子内の識別子は、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、取得すること;及びセグメントリストを第1のパケットに追加して第2のパケットを生成することであって、ここで、第2のパケットには第1のポインタが含まれ、第1のポインタの値は第1の要素内の第1の識別子の位置を示すために使用され、第1の識別子は少なくとも2つの識別子のうちの1つである、生成すること;を行うように構成される。
【0234】
送信ユニット1603は、第2のパケットを送信するように構成される。
【0235】
ネットワーク装置1600は、代替的に、
図20に示される装置を使用して実装され得る。この場合に、ネットワーク装置1600は、少なくとも1つのプロセッサ、通信バス、及び少なくとも1つの通信インターフェイスを含む。オプションで、ネットワーク装置1600は、メモリをさらに含み得る。
【0236】
特定の実施形態では、ネットワーク装置1600のプロセッサは、通信インターフェイスを介して第1のパケットを受信すること;セグメントリストを取得することであって、ここで、セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、取得すること;セグメントリストを第1のパケットに追加して第2のパケットを生成することであって、ここで、第2のパケットには第1のポインタが含まれ、第1のポインタの値は第1の要素内の第1の識別子の位置を示すために使用され、第1の識別子は少なくとも2つの識別子のうちの1つである、生成すること;及び通信インターフェイスを介して第2のパケットを送信すること;を行うように構成される。プロセッサの詳細な処理プロセスについては、前述の実施形態におけるプロセスS410、S420、及びS430、並びにプロセスS325、S330、及びS335の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0237】
ネットワーク装置1600の通信インターフェイスは、ネットワークシステムを使用してパケットを送受信するためにネットワーク装置1600によって使用される。特定のプロセスについては、前述の実施形態におけるS410、S440、S325、及びS335の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0238】
ネットワーク装置1600は、代替的に、
図21に示される装置を使用して実装され得る。この場合に、ネットワーク装置1600は、メイン制御ボード及び1つ又は複数のインターフェイスボードを含む。メイン制御ボード及びインターフェイスボードは通信接続される。詳細については、前述の実施形態におけるネットワーク装置2100の説明を参照されたい。詳細については、ここでは再び説明しない。
【0239】
図24は、前述の実施形態におけるネットワーク装置310の可能な概略構造図である。ネットワーク装置1800は、前述の実施形態におけるネットワーク装置310又はネットワーク装置402の機能を実施することができる。
図24を参照すると、ネットワーク装置1800は、決定ユニット1801及び処理ユニット1802を含む。これらのユニットは、前述の方法において、ネットワーク装置310又はネットワーク装置402の対応する機能を実行することができる。詳細は以下の通りである。
【0240】
決定ユニット1801は、パケットの転送パスを決定するように構成され、ここで、転送パスには複数のネットワーク装置が含まれる。
【0241】
処理ユニット1802は、転送パスに対応するセグメントリストを生成するように構成され、ここで、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む。
【0242】
オプションで、ネットワーク装置1800は、送信ユニット1803をさらに含む。送信ユニット1803は、セグメントリストを転送パス上の入力装置に送信するように構成される。あるいはまた、処理ユニット1802は、セグメントリストをパケットにカプセル化するようにさらに構成される。送信ユニット1803は、パケットを送信するように構成される。
【0243】
ネットワーク装置1800は、代替的に、
図20に示される装置を使用して実装され得る。この場合に、ネットワーク装置1800は、少なくとも1つのプロセッサ、通信バス、及び少なくとも1つの通信インターフェイスを含む。オプションで、ネットワーク装置1800は、メモリをさらに含み得る。
【0244】
特定の実施形態では、ネットワーク装置1800のプロセッサは、パケットの転送パスを決定することであって、ここで、転送パスには複数のネットワーク装置が含まれる、決定すること;及び転送パスに対応するセグメントリストを生成することであって、ここで、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、生成すること;を行うように構成される。
【0245】
オプションで、ネットワーク装置1800のプロセッサは、通信インターフェイスを介してセグメントリストを送信するようにさらに構成される。
【0246】
プロセッサの詳細な処理プロセスについては、前述の実施形態におけるプロセスS310、S315、S320、及びS420の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0247】
ネットワーク装置1800の通信インターフェイスは、ネットワークシステムを使用して情報を送受信するためにネットワーク装置1800によって使用される。特定のプロセスについては、前述の実施形態におけるS320及びS420の詳細な説明を参照されたい。詳細については、ここでは再び説明しない。
【0248】
図25は、本発明の実施形態によるネットワークシステムの可能な概略構造図である。ネットワークシステム2200は、第1のネットワーク装置2202及び第2のネットワーク装置2202を含む。ネットワークシステム内の第1のネットワーク装置2202は、
図18に示される実施形態におけるネットワーク装置401の処理ステップS410、S420、S430、及びS440、又は
図19に示される実施形態におけるネットワーク装置302の処理ステップS325、S330、及びS335を実行することができる。ネットワークシステム内の第2のネットワーク装置2202は、
図20に示される実施形態におけるネットワーク装置402の処理ステップS450、S460、及びS470、又はネットワーク装置303の処理ステップS340、S345、及びS350を実行することができる。
【0249】
オプションで、ネットワークシステム2200は、第3のネットワーク装置2203をさらに含む。ネットワークシステム内の第1のネットワーク装置2203は、
図19に示される実施形態におけるネットワーク装置310の処理ステップS310、S315、及びS320を実行することができる。
【0250】
対応して、ネットワークシステム内の第1のネットワーク装置2202は、
図23に示される実施形態におけるネットワーク装置1600であり得る。ネットワーク装置内の第2のネットワーク装置2202は、
図22に示される実施形態におけるネットワーク装置1400であり得る。ネットワークシステム内の第3のネットワーク装置2203は、
図24に示される実施形態のネットワーク装置1800であり得る。
【0251】
具体的には、第3のネットワーク装置は、パケットの転送パスを決定することであって、ここで、転送パスには複数のネットワーク装置が含まれる、決定すること;転送パスに対応するセグメントリストを生成することであって、ここで、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは、複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、生成すること;を行うように構成される。
【0252】
第2のネットワーク装置は、第1のパケットを受信すること;セグメントリストを取得することであって、ここで、セグメントリストは第1のパケットの転送パスに対応し、転送パスには複数のネットワーク装置が含まれ、セグメントリストには順次配置される複数の識別子が含まれ、複数の識別子のそれぞれは複数のネットワーク装置のうちの1つ又は転送パス上の1つのリンクに対応し、セグメントリストには、長さが128ビットである第1の要素が含まれ、第1の要素は、複数の識別子内の少なくとも2つの隣接する識別子を含む、取得すること;セグメントリストを第1のパケットに追加して第2のパケットを生成することであって、ここで、第2のパケットには第1のポインタが含まれ、第1のポインタの値は第1の要素内の第1の識別子の位置を示すために使用され、第1の識別子は少なくとも2つの識別子のうちの1つである、生成すること;及び第2のパケットを送信すること;を行うように構成される。
【0253】
オプションで、ネットワークシステムに第3のネットワーク装置が含まれる場合に、第2のネットワーク装置がセグメントリストを取得することは、第2のネットワーク装置が第3のネットワーク装置によって送信されたセグメントリストを受信することを意味する。オプションで、ネットワークシステムに第3のネットワーク装置が含まれない場合に、第2のネットワーク装置がセグメントリストを取得することは、第2のネットワーク装置がセグメントリストを生成することを意味する。
【0254】
第1のネットワーク装置は、第2のパケットを受信することであって、ここで、第2のパケットの第1のパケットヘッダにはセグメントリストが含まれ、第2のパケットには第1のポインタが含まれる、受信すること;第1のポインタの値に基づいて、第1の要素内の第1の識別子の位置を決定すること;第1の識別子から始まる少なくとも1つの識別子を第2のパケットの第2のパケットヘッダにコピーして、第3のパケットを生成すること;及び第3のパケットを送信すること;を行うように構成される。
【0255】
本発明の一実施形態は、前述の実施形態で使用されるソフトウェア命令を記憶するように構成された、非一時的な記憶媒体をさらに提供する。非一時的な記憶媒体は、前述の実施形態に示される方法を実行するために使用されるプログラムを含む。プログラムがコンピュータ又はネットワーク装置上で実行されると、コンピュータ又はネットワーク装置は、前述の方法の実施形態における方法を実行することが可能になる。
【0256】
本発明の一実施形態は、コンピュータプログラム命令を含むコンピュータプログラム製品をさらに提供する。コンピュータプログラム製品がコンピュータ上で実行されると、ネットワークノードは、前述の方法の実施形態における方法を実行することが可能になる。
【0257】
本発明の実施形態で言及する第1のパケット、第1のネットワーク装置、第1の識別子、第1のポインタ、及び数量フラグにおける「第1」は、単に名前識別子として使用され、順番で最初を表すものではない。このルールは、「第2」、「第3」、「第4」等にも適用可能である。しかしながら、本発明の実施形態で言及する1番目の識別子の「1番目」は、順番で最初を表す。このルールは「N番目」にも適用可能である。
【0258】
本発明の実施形態では、「A及び/又はB」は、3つのケース、つまり、Aのみ、Bのみ、及びAとBとの両方を含むと考えられる。
【0259】
上記の任意の機器の実施形態は、単なる一例であることに留意されたい。別個の部品として説明したユニットは、物理的に別個であってもよく又はそうでなくてもよく、ユニットとして表示される部品は、物理的なユニットであってもよく又はそうでなくてもよく、1つの位置に配置されるか、又は複数のネットワークユニットに分散される場合がある。一部又は全てのモジュールは、実施形態のソリューションの目的を達成するための実際の要件に基づいて選択することができる。さらに、本発明で提供するネットワーク装置又はホストの実施形態の添付の図面において、モジュール同士の間の接続関係は、モジュールが互いに通信接続を有することを示し、これは、1つ又は複数の通信バス又は信号線として具体的に実装され得る。当業者は、創造的な努力なしに、本発明の実施形態を理解し、実施することができる。
【0260】
本発明の実施形態で開示する内容と組み合わせて説明される方法又はアルゴリズムステップは、ハードウェアによって実施され得るか、又はソフトウェア命令を実行することによってプロセッサによって実施され得る。ソフトウェア命令は、対応するソフトウェアモジュールを含み得る。ソフトウェアモジュールは、ランダムアクセスメモリ(random access memory, RAM)、フラッシュメモリ、読取り専用メモリ(read-only memory, ROM)、消去可能プログラマブル読取り専用メモリ(erasable programmable ROM, EPROM)、電気的に消去可能なプログラム可能な読取り専用メモリ(electrically EPROM、EEPROM)、ハードディスク、リムーバブルハードディスク、コンパクトディスク、又は当技術分野でよく知られている他の形式の記憶媒体に格納することができる。記憶媒体はプロセッサに結合されており、それによって、プロセッサは記憶媒体から情報を読み取ることができる。確かに、記憶媒体は、代替的に、プロセッサの構成要素であり得る。
【0261】
本発明の目的、技術的解決策、及び有利な効果は、前述の特定の実施態様においてさらに詳細に説明される。前述の説明は、本発明の単なる特定の実施態様であり、本発明の保護範囲を限定することを意図するものではないことを理解されたい。本発明の技術的解決策に基づいて行われた修正、交換、又は改善は、本発明の保護範囲に含まれるものとする。