セグメントルーティング(SR-MPLS / SRv6)の設計
経路をパケット自身に書き込むことで、中継ルータの状態を持たずに思いどおりの道へ誘導できる発想が腑に落ちる。SR-MPLS と SRv6 の違い、TE が簡素になる理由まで原理から理解できる。
- 1.セグメントルーティングは経路情報(セグメントの並び)を入口でパケットに埋め込むソースルーティングで、中継ルータはパスごとの状態を一切持たない。
- 2.各セグメントは SID で表され、ノード SID は IGP 最短路でそのルータまで、隣接 SID は特定リンクを必ず通る、という指示になる。SID の並び順がそのまま経路になる。
- 3.SR-MPLS は SID を MPLS ラベルスタックで運び、SRv6 は SID を128ビットの IPv6 アドレスとして IPv6 ヘッダで運ぶ。どちらも RSVP-TE のパス状態を不要にする。
状態をネットワークからパケットへ移す
MPLS のトラフィックエンジニアリングは RSVP-TE でトンネルを張りますが、その代償は各中継ルータがパスごとに状態を持つことです。トンネルが N 本あれば各ホップに N 本分のソフトステートが積み上がり、定期的なリフレッシュも必要になります。トンネル数に比例して状態が膨らむこのスケール問題が、TE の運用を重くしてきました。
セグメントルーティング(SR)は発想を反転させます。経路の指示をパケット自身に書き込むのです。これは古典的なソースルーティングの思想で、「どこをどう通るか」を入口(ヘッドエンド)が決めてヘッダに列挙し、中継ルータはそれを順に消化するだけにします。結果として中継はパスごとの状態をまったく持たず、各ルータが知っておくべきは「IGP が配るトポロジ情報」だけになります。状態がネットワークからパケットへ移る——これが SR の一行要約です。
古い IP のソースルーティング(LSRR オプション)は中継アドレスを直接並べるもので、セキュリティ上ほぼ無効化されました。SR が違うのは、並べるのが生 IP ではなく IGP が広告する SID(後述)である点です。経路は IGP のトポロジ計算の上に乗るため、リンク障害時は IGP の再収束に自然に追従します。
SID とセグメントリスト
SR の基本単位は セグメントで、それを識別する値が SID(Segment Identifier) です。入口はセグメントを通したい順に並べたセグメントリストを作り、パケットの先頭に積みます。中継ルータは常に先頭(アクティブ)SID だけを見て処理し、そのセグメントを満たしたら次の SID をアクティブにします。SID の並び順がそのまま経路になります。
SID には大きく2種類あり、これが SR の表現力の核です。
| SID 種別 | 配布元 | 意味 | 経路への効果 |
|---|---|---|---|
| ノード SID(Prefix SID) | IGP がノード単位で広告 | そのノードまで IGP 最短路で進め | 経由したい中継点を指定(ECMP を活かす) |
| 隣接 SID(Adjacency SID) | 各ノードがリンク単位で広告 | この特定リンクを必ず通れ | 個別リンクを厳密に強制(迂回路を作る) |
ノード SID はグローバルに一意で、IGP(OSPF / IS-IS の SR 拡張)が全ノードへ広告します。「ノード R5 へ向かえ」という指示は、各中継が自分の IGP 最短路で R5 へ届けるという意味なので、途中に等コスト経路があれば ECMP が自然に効きます。隣接 SID はそのノードでローカルな値で、特定の1リンクを名指しします。
両者の組み合わせが鍵です。最短路でよい区間はノード SID で粗く、どうしても特定リンクを通したい区間だけ隣接 SID で厳密に、と粒度を混在できます。たとえば [Node R5, Adj R5→R6, Node R8] というリストは、「まず最短路で R5 へ、次に R5 から R6 への特定リンクを必ず通り、その後は最短路で R8 へ」を意味します。
セグメントリストの消化(アクティブ SID が先頭):
入口 ─push─> [R5][R6リンク][R8] 先頭=Node R5:最短路で R5 へ
R5 到達 ───> [R6リンク][R8] 先頭=Adj R5→R6:そのリンクを強制
R6 到達 ───> [R8] 先頭=Node R8:最短路で R8 へ
R8 到達 ───> [] リスト空:素のパケットとして配送
SR-MPLS:SID をラベルスタックで運ぶ
SR にはデータプレーンが2つあり、まず既存の MPLS 転送をそのまま再利用するのが SR-MPLS です。SID を MPLS ラベルとして表現し、セグメントリストをラベルスタックとして積みます。中継ルータはスタック最上段のラベルを引いて転送し、そのセグメントの出口で最上段を POP(または SWAP)して次の SID を露出させます。ラベル転送のハードウェアは何も変えずに済みます。
ノード SID は SRGB(Segment Routing Global Block) というラベル範囲のベースに、ノードごとのインデックスを足した値として全ノードで一貫させます。これにより「あるノードを指すラベル」がドメイン全体で同じに見え、IGP が配るインデックスだけで各自がラベルを計算できます。LDP のような別個のラベル配布プロトコルが不要になり、ラベル管理が IGP に一本化されるのが SR-MPLS の大きな簡素化です。
従来 MPLS は到達性に LDP、TE に RSVP-TE という別プロトコルを足していました。SR-MPLS では IGP が SID(ラベル)まで配るため LDP は不要で、TE もパス状態を持たないので RSVP-TE のソフトステートが消えます。制御プレーンが IGP + SR 拡張へ集約され、運用要素が大幅に減ります。
SRv6:SID を IPv6 アドレスとして運ぶ
もう一方の SRv6 は、MPLS ラベルではなく 128ビットの IPv6 アドレスを SID にします。SID は Locator:Function:Args という構造を持ち、上位の Locator はそのノードへルーティング可能なプレフィックス、続く Function は到達後に実行する動作(END=次の SID へ、END.X=指定リンクへ転送、など)を表します。SID 自体がアドレスかつ命令という二重の意味を持つのが SRv6 の特徴です。
セグメントリストは SRH(Segment Routing Header) という IPv6 拡張ヘッダに SID 列として格納されます。IPv6 ヘッダの宛先アドレスには常にアクティブ SID が入り、ルータはそれを通常の IPv6 ルーティングで処理します。SID の出口(その Locator を持つノード)に届くと、Function に従って SRH のポインタを進め、次の SID を宛先アドレスへ書き写します。
| 観点 | SR-MPLS | SRv6 |
|---|---|---|
| SID の正体 | 20ビット MPLS ラベル | 128ビット IPv6 アドレス |
| 運ぶ場所 | ラベルスタック | IPv6 拡張ヘッダ(SRH) |
| 転送基盤 | 既存 MPLS 転送 | 素の IPv6 転送 |
| MPLS コア | 必要 | 不要(IPv6 のみで完結) |
| ヘッダ効率 | 1 SID = 4バイト | 1 SID = 16バイト(オーバーヘッド大) |
| サービス表現 | ラベルで間接的 | Function でアドレスに直接埋め込み |
SRv6 の利点は MPLS データプレーンを廃せることです。SID が普通の IPv6 アドレスなので、SRv6 を解さない中継ルータも Locator プレフィックスへ向けて素の IPv6 として転送でき、漸進的な導入や IP のみのコア網との親和性が高くなります。引き換えに 1 SID あたり16バイトとヘッダが重く、深いリストでは MTU を圧迫します。これを緩和する圧縮方式(uSID / G-SID)も標準化が進んでいます。
SRv6 では SRH 内の SID であると同時に、アクティブ SID は IPv6 ヘッダの宛先アドレスそのものです。したがって境界での SID(特に Locator プレフィックス)が外部へ漏れないようフィルタリングが重要で、SR ドメインの境界設計を誤ると SID が外部から到達可能になり得ます。ドメインのアドレス計画と境界 ACL は SRv6 設計の必須項目です。
TE が簡素になる理由
SR がトラフィックエンジニアリングを簡素にするのは、中継の状態をゼロにしつつ任意経路を表現できるからです。RSVP-TE ではトンネルごとに全ホップへ状態を植え付け、経路変更のたびにシグナリングをやり直しました。SR ではヘッドエンドが SID リストを差し替えるだけで経路が変わり、中継には何の通知も要りません。TE ポリシーの実体が入口の1個のリストに凝縮されます。
経路計算はヘッドエンドの SR-TE / PCE(Path Computation Element) が担います。PCE はトポロジと制約(帯域・遅延・SRLG 回避など)から最適パスを解き、それを最小の SID リストへエンコードして入口へ渡します。最短路で済む区間はノード SID 1個に畳めるため、多くの場合リストは数個で収まります。経路の素材は IGP / BGP が供給し、SR はその上に「順序付き経由点」を載せる層という分業です。
RSVP-TE: トンネルN本 → 各ホップにN本分の状態 + 定期リフレッシュ
SR-TE : トンネルN本 → 中継の状態 0、入口にN本分の SID リストのみ
経路変更 = 入口でリストを差し替えるだけ(中継への通知不要)
(1)ノード SID=グローバルで IGP 最短路、隣接 SID=ローカルで特定リンク強制、の対比を押さえる。(2)SR-MPLS は LDP/RSVP-TE が不要になり制御が IGP へ集約。(3)SRv6 の SID は IPv6 アドレスで Locator:Function 構造、SRH で運ぶ。(4)TE の状態が中継から入口の SID リストへ移ることがスケール改善の本質。
まとめ
セグメントルーティングの核心は、経路の状態をネットワークからパケットへ移したことです。入口が SID の並び(セグメントリスト)でパスを表現し、中継はアクティブ SID を消化するだけでパスごとの状態を持ちません。ノード SID で最短路を粗く、隣接 SID で特定リンクを厳密に、と粒度を混ぜて任意経路を組めます。SR-MPLS は SID をラベルスタックで運んで既存 MPLS 網を再利用し、LDP/RSVP-TE を不要にします。SRv6 は SID を IPv6 アドレスとして SRH で運び、MPLS データプレーンそのものを廃します。どちらも RSVP-TE のパス状態を消し、TE ポリシーを入口の1リストへ凝縮する——この状態の移動こそ、SR が現代のキャリア・データセンタ網の標準になりつつある理由です。
ネットワーク Article
セグメントルーティング(SR-MPLS / SRv6)の設計を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
セグメントルーティング
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 5
導入後に効く点
各セグメントは SID で表され、ノード SID は IGP 最短路でそのルータまで、隣接 SID は特定リンクを必ず通る、という指示になる。SID の並び順がそのまま経路になる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 5
判断チェックリスト
- 自社の用途が「セグメントルーティング / SRv6」に近いか確認する。
- 強みである「セグメントルーティングは経路情報(セグメントの並び)を入口でパケットに埋め込むソースルーティングで、中継ルータはパスごとの状態を一切持たない。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。