はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回はSRv6の概要部分についてまとめてみました。
エンドファンクションやμ-SID、新規機能は、随時、別の投稿でまとめる予定です。
CMLでの実機で確認もしましたが、最近面白そうな本を見つけたのでもしよければ購入してみてください。
SRv6とは?
SRv6とは、「Segment Routing over IPv6」の略称であり、MPLSに変わるセグメントルーティング系のプロトコルとなります。
SRの代表的なプロトコルの1つであるMPLSは、ラベルを用いてセグメントルーティングやトラフィックエンジニアリングを実施しています。
一方、SRv6はIPv6の拡張ヘッダを利用することで経路集約やネットワークプログラミング等幅広い機能を追加できるため、多くの強みがあります。
直近だとJanog52の「SRv6による社内検証網の提供と、SR-MPLS/SRv6双方を運用してみてわかったこと」がとても面白かったので、参考になると思います。
私もこの発表を現地で聞いていてとてもためになりました。
その上で、SRを理解するために、まず必要なものは、「Segment ID(SID)(MPLSのラベルみたいなイメージ)」です。
次のセクションでは、SIDについて説明したいと思います。
SID(Segment ID)とは?
SRv6でよく出るSID(Segment ID)とは、各ノードの識別子が主な利用方法であり、ルーティングやネットワークプログラミング、TEやエンドファンクションの識別にも利用するIDです。
フィールドは、128bitで構成され、Locator(経路上で必要となるID:アドレス)とFunction(各ノードで実行する機能の識別子)、Args(Functionに対する引数等で利用)の3つの種類があります。
各フィールドのBit数に制限はなく、計128Bitを満たすことができればなんでもOKです。
Locatorは、「ノードの識別子」として利用し、大半が64bitで利用しているイメージがあります。
このLocatorは、「SRv6 NWの識別子(ネットワークアドレス)」と「SRv6 NWのノード識別子(ホストアドレス)」の2つのSID Blockに分けることができます。
Functionは、各ルータで処理する動作を記載し処理内容については各ルータで定義されています。
Argsは、Functionのためのオプション的なフィールドで、機能的に拡充され始めたら利用されるとのことです。
SRヘッダ(SRH)
SRヘッダ(SRH)は、「IPv6の拡張ヘッダを利用しており8つのフィールド」があります。
主な構成要素は、SRHに続くヘッダの種別を定義する8ビットのNext Header、SRHのヘッダ長を8オクテット単位で表す8ビットのHdr Len、Routngヘッダの種別を示す8ビットのRouting Type、残りのセグメント数を表す8ビットのSegment Leftがあります。
この4つは、RFC8200で定義されているルーティングヘッダのフィールドになります。
そして、RFC8754で定義されているSRHのフィールドは、セグメントリストの最後のIndexを示すLast Entry、FlagsとTags(各8bit)、SR Policyに従う形で格納されるSIDのリストであるSegment Listになります。
- Next Header(8ビット):SRHの次に続くヘッダ種別の定義
- Hdr Length(8ビット):ヘッダ長を8オクテット単位で表す
- Routing Type(8ビット):Routingヘッダの種類を定義(SRHの場合は4となる)
- Segment Left(8ビット):残りのセグメントリスト数を表す
- Last Entry:セグメントリストの最後のインデックス(※最大値:セグメントリスト長-1)
- Flags/Tags(8ビット):パケットの優先度やグループを定義(ToSのようなイメージ)
- Segment LIst:各SIDのリスト(SR Policyに従う形で格納)
SRv6のノード種別
SRv6には、「SRHを付与するSource Node(Ingress Node)」、「SRv6 Pathの途中であり、SRHを付加しないTransit Node」、「SRv6 Pathの宛先かつエンドファンクションを実施するEndpoint Node」の3つのノード種別があります。
最後に
今回はSRv6の基本的な概念であるSIDとSRH、ノード種別についてまとめてみました。
次回はファンクションや実機確認など投稿していきたいと思います。
また、SRv6の第一人者であるCiscoのクレランスさんが発行している参考書があるので、少し高額ですが参考になると思いますので読んでみるのもありだと思います。
-
技術
【セグメントルーティング(SR)実践編】SR-MPLS TE Dynamic pathをCMLを使って実装してみた話
-
技術
【SRv6/SRMPLS】SR-MPLS(概要:SID/FEC)
-
技術
【セグメントルーティング】Unreachable Prefix Announcement(UPA)
-
技術
【セグメントルーティング(SR)実践編】SR-MPLS TE Anycast SIDをCMLで実装してみた話
-
ネットワーク
【セグメントルーティング入門】そもそもセグメントルーティング(SR)とは?
-
技術
【セグメントルーティング(SR)実践編】SR-MPLS TE Explicit pathについて