Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segment Routing入門

Wataru MISHIMA
November 29, 2021

Segment Routing入門

Segment Routing入門用資料

Wataru MISHIMA

November 29, 2021
Tweet

More Decks by Wataru MISHIMA

Other Decks in Technology

Transcript

  1. © NTT Communications Corporation All Rights Reserved. 2 • 閉域網のルーティング技術について

    ◦ TE(Traffic Engineering) ◦ VPN(Virtual Private Network) ◦ Service Function Chaining • Segment Routing ◦ Segment Routingの概要 ▪ SRの仕組み(Segmentとは、SRの転送⽅法) ▪ SR Policy ◦ SRのデータプレーン ▪ SR-MPLS、SRv6 ◦ SRのコントロールプレーン ▪ IS-IS/OSPF拡張 • Flex-Algo ▪ MP-BGP ▪ SR PCE ◦ SR関連の応⽤技術 ▪ Fast ReRoute、TI-LFA ▪ EPE 画像︓http://www.segment-routing.net/ ⽬次
  2. © NTT Communications Corporation All Rights Reserved. 3 • TE(Traffic

    Engineering) ◦ 帯域確保、遅延最⼩化、冗⻑化等 ◦ Segment Routingが⽣まれた背景としてわかりやすい • VPN(Virtual Private Network) ◦ 顧客のネットワーク同⼠を接続、 ◦ オフィス間・DC間などの拠点間通信、外部から社内ネットワークへのアクセス等 • Service Function Chaining ◦ TEの⼀種。ある通信に特定のNetwork Functionを挟み込む ◦ 通信への付加価値適⽤ CGN Firewall Optimizer DPI Dst. Service Chain B Service Chain A B A Customer A Customer B Customer A Customer B VPN A VPN B TE Path B TE Path A ※閉域網: インターネットから分離されたネットワーク ※SRは閉域網のみで使われる技術ではないが、基本を学ぶため閉域網の事例で紹介 A D B C X Z Y 閉域網のルーティング技術について
  3. © NTT Communications Corporation All Rights Reserved. 4 • 閉域網の位置・役割による呼称

    ◦ CE (Customer Edge) : 閉域網のユーザ側ルータ ◦ PE (Provider Edge) : CEを収容する閉域網のエッジルータ ◦ P (Provider) : 閉域網内に存在するコアルータ • 閉域網の⼊出や送受信による呼称 ◦ Ingress / Egress : 閉域網の⼊り⼝: Ingress、出⼝: Egress ◦ Headend / Tailend : 閉域網の送信元: Headend、終端部: Tailend • BGP的な役割による呼称 ◦ ASBR (AS Border Router) : ASの境界部に位置するルータ。対向とeBGPで経路を交換 domain PE/ASBR P CE PE ASBR Autonomous System Ingress Egress Tailend Headend Egress Peer AS Customer CEはPEと異なるASとして設計可能 ルータの役割と呼称
  4. © NTT Communications Corporation All Rights Reserved. 6 • 経路表による宛先IPアドレスベースでの転送

    ◦ 各ルータのポリシーに基づいた最短経路を経路表に格納 ◦ 宛先を元に送出先を決定 A D B C X Z Aの経路表 宛先 送出先 X X Y Y B B C C D B Z B Y Bの経路表 宛先 送出先 X A Y A A A C C D D Z D Dの経路表 宛先 送出先 X B Y B A B B B C C Z Z P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf ⼀般的なIPによる転送
  5. © NTT Communications Corporation All Rights Reserved. 7 • 送信元やプロトコル種別など、宛先以外の要素で転送したい︕

    ◦ ⾳声通信は低遅延、動画は低ジッタ、ウェブは広帯域... ◦ 送信元Xさんはお⾦をたくさん払っているので品質の良い通信... ◦ 特定の送信元以外の通信は、セキュリティ機器を複数経由させたい... ◦ → 実現できれば、ネットワークに付加価値を提供可能 • 宛先ベースの経路表だけでは実現不可能 A D B C X Z Aの経路表 宛先 送出先 X X Y Y B B C C D B Z B?C? Y 遅延優先︖ 帯域優先 P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf より⾼度な経路制御の要求
  6. © NTT Communications Corporation All Rights Reserved. 8 • Policy-Based

    Routing ◦ ポリシーに基づいた転送を⾏うための仕組み ◦ 経路表ではなく、ポリシーを記述したルートマップに基づき転送 ◦ 送信元アドレス・プロトコル・ポート・インターフェース等の条件と、該当したパケットの 処理をルートマップに定義、転送を実施 A D B C X Z Y 遅延優先 帯域優先 Aのルートマップ match set 宛先 送信元 動作 転送先 Z X permit B Z Y permit C P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf 案1: PBR
  7. © NTT Communications Corporation All Rights Reserved. 9 • MPLS(Multi-layer

    Protocol Label Switching) ◦ パケットに⼊れたMPLSヘッダ(Shimヘッダ)内のラベル情報を利⽤し転送 ◦ MPLS TableをExact Matchで参照し転送 ◦ ラベルにPush / Swap / Popいずれかの操作をしながらスイッチング ▪ Push: ラベル追加 ▪ Swap: ラベル交換 ▪ Pop: ラベル除去 A D B C X Z Y MPLS domain BのMPLS Table Label Action Next 3 Pop - 6 Swap “5” D AのMPLS Table Label Action Next 1 Pop - 2 Swap “6” B 3 Swap “5” C 4 Swap “3” B 5 Swap “4” C 6 Pop X 7 Pop Y 2 Payload Shim DのMPLS Table Label Action Next 2 Pop - 5 Pop Z CのMPLS Table Label Action Next 4 Pop - 5 Swap “5” D 3 Payload P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf 案2: MPLS
  8. © NTT Communications Corporation All Rights Reserved. 10 • OpenFlow

    ◦ SDN(Software Defined Networking)の実現⼿法の⼀つ ◦ 転送を担うOpenFlowスイッチを、ポリシーを管理するOpenFlowコントローラで制御 ▪ スイッチはFlow Tableに無いパケットが⼊ってきた際にコントローラへ確認 ▪ コントローラは各スイッチのFlow Tableを更新すると共に転送⽅法を指⽰ A D B C X Z Y Packet In Flow Mod Packet Out AのFlow Table Rule Action 宛先 送信元 動作 対象 Z X 転送 B Z Y 転送 C Controller P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf 案3: OpenFlow
  9. © NTT Communications Corporation All Rights Reserved. 11 1. 中間ノードのステート増加

    ◦ ポート番号 / Interface / ホストアドレスなど細かい単位での制御︖ 2. 新たな経路追加/削除時のステート追加(伝搬) ◦ 経路追加の度に、中間のノード全ての経路表を更新する︖(シグナリング) A D B C X Z Y match set 宛先 送信元 動作 転送先 Z X permit B Z Y permit C D X permit B D Y permit C C X permit B C Y permit C B X permit B B Y permit C X X permit X Y Y permit Y 制御対象の数に伴い テーブルが肥⼤化 P.6からP.11までは下記の浅間さん資料の流れを参考にしています https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf 従来の経路制御技術が抱える課題
  10. © NTT Communications Corporation All Rights Reserved. 12 • 案1〜3の⼿法では、制御対象の数だけ中間ノードが転送ルールを保持

    • 中間ノードのステート増加 ◦ 柔軟な経路制御を実現するためのルール増加 ▪ 宛先ポートやプロトコルなど、より細かい条件での経路制御の要求 ▪ 課⾦に基づいた送信元Prefixごとの経路制御の要求 ◦ 中間ノードが分散して保持する発⾏済みルールの管理 A D B C X Z Y match set 宛先 送信元 動作 転送先 Z X permit B Z Y permit C D X permit B D Y permit C C X permit B C Y permit C B X permit B B Y permit C X X permit X Y Y permit Y 中間ノードであるB/C/Dも 同様にStateが増加 従来の経路制御技術が抱える課題 - 中間ノードのステート増加
  11. © NTT Communications Corporation All Rights Reserved. 13 • 中間にステートが必要

    = 新たな経路追加/削除の度、中間ノードの操作が必要 ◦ 中間ノードの経路を更新し、新たな経路を⽣成する処理をシグナリングと呼ぶ • IGPの他にシグナリング専⽤プロトコルの管理・運⽤が必要 ◦ 管理・運⽤の煩雑化や学習コストの増加 → 中間ノードのステート増加と、煩雑なプロトコルがスケーラビリティの課題に A D B C X Z Y 従来の経路制御技術が抱える課題 - 経路追加/削除時の伝搬
  12. © NTT Communications Corporation All Rights Reserved. 15 • SR(Segment

    Routing) ◦ 次世代の経路制御技術 ▪ RFC8402で標準化: https://datatracker.ietf.org/doc/html/rfc8402 • 3つの特徴 ◦ Scalable: ソースルーティングのパラダイム ▪ 中間ノードの持つステートを削減 ◦ Simple: シンプルなプロトコル構成 ▪ データプレーンはMPLS or IPv6 ▪ コントロールプレーンは既存IGP or EGPを拡張し使⽤ ▪ シグナリングプロトコルが不要 ◦ Seamless deployment: 既存データプレーンとの親和性 ▪ SR-MPLSでは既存のMPLS関連技術を利⽤可能 ▪ SRv6は既存IPv6網を⼟管として使⽤可能 画像︓http://www.segment-routing.net/ → 従来の経路制御技術が抱える、ステート増加とシグナリングによるスケーラビリティの課題を解決 Segment Routingの概要
  13. © NTT Communications Corporation All Rights Reserved. 16 • 送信元で経路を指定し、転送を⾏うルーティングパラダイム

    ◦ パケット⾃⾝が経路情報をもち、それに基づいて転送(= 経路を中間ノードで管理しない) ◦ 経路指定の⼿法に合わせ、ストリクト/ルーズの2種類が存在 • ストリクトソースルーティング ◦ 宛先までに経由するノード/リンクを全て指定する⼿法 ◦ 主なユースケース︓帯域保証 • ルーズソースルーティング ◦ 宛先と経由すべきノードのみを指定し、その間の経路は厳格に指定しない⼿法 ◦ 主なユースケース︓サービスチェイニング A D B C X Z Y Z Payload D B Z Payload C Loose Source Routing Strict Source Routing ソースルーティング
  14. © NTT Communications Corporation All Rights Reserved. 17 • SRでの転送対象、処理を指⽰するものをSegmentと呼ぶ

    ◦ 各ノードはSegment ID(SID)で指⽰された処理を⾏いながらパケットを転送 ◦ SR domainで⼀意なGlobal Segmentと、ノード内で⼀意なLocal Segmentが存在 • Segmentの例 ◦ Node Segment: 特定のノードを⽰す。Global Segment ▪ Prefixに紐づくSegment をPrefix Segmentと呼ぶ。Node SegmentはノードのLoopbackに紐づくPrefix Segment ◦ Adjacency Segment: 隣接関係を⽰す。Local Segment ◦ Binding Segment: 任意のポリシーに紐付けて使うSegment。⼀般的にLocal Segment SR domain SID 処理 10 X 11 Y 2 B 3 C 4 B 12 B 101 X 102 Y 103 B 104 C A D B C X Z Y Node SID Adjacency SID Payload 12 4 103 Segment List 1 10 11 12 1 2 3 4 101 102 103 104 HeadendであるXがencapし、Segment ListでX→A→B→D→Zと 通るよう指定された例 2段⽬はAdjacency SIDである103を指定されているため、 確実にA-Bのリンクを通る Adjacency SIDはStrict Source Routingをしたい時やMulti-Path区間で リンクを指定する時に、 Node SIDはLoose Source Routingをしたい時に⽤いる AのSID Table Segment
  15. © NTT Communications Corporation All Rights Reserved. 18 1. SR

    domainの送信元がパケットにSR Headerを付与 ◦ SR Header…SRに関する情報を格納するヘッダ ◦ 経路をSR Header中のSegment Listで指定 2. 中間ノードはSegment Listの先頭を経路表から参照し転送 3. 最終的な宛先ノードがSR Headerを除去 SR domain A D B C X Z Y Payload 12 4 103 Segment List 1 10 11 12 1 2 3 4 101 102 103 104 1. HeadendであるXが、受信したパケットに Segment Listの含まれたSR Headerを付与 2. パケットを受け取ったAは SID Tableを参照し転送 3. SR Headerが除去され、 SR domainから出る Payload SID 処理 10 X 11 Y 2 B 3 C 4 B 12 B 101 X 102 Y 103 B 104 C AのSID Table SRの転送例
  16. © NTT Communications Corporation All Rights Reserved. 19 • SRにおける転送⼿法を指定するポリシー

    ◦ 例: ノードAとBを経由する、帯域X bps以上/遅延X ms未満、SFCなど ◦ SR Policyをインスタンス化したものがセグメントリスト • 各SR Policyは Binding SID(BSID)と結び付けられる ◦ HeadendはSR Policyに基づきセグメントリストをつけてパケットを送出 ◦ ⾃らが処理すべきBSIDを受け取ったノードはそれに紐づくSR Policyを処理 ▪ 他のSegment listをつける、SRHを外して他プロトコルのトンネルに繋ぐなど BSIDに対応する新たなSegment Listを付与する例 画像: https://y-network.jp/2020/07/31/segment-routing-024/ BSIDに対応する他プロトコルのトンネルに繋ぐ例 画像: http://cisco-inspire.jp/issues/0024/closeup3.html SR Policy
  17. © NTT Communications Corporation All Rights Reserved. 20 • あるネットワーク上に仮想ネットワークを作成する概念

    ◦ 物理的なNW構造に囚われない⼀連の通信・経路制御を実現するために利⽤ ◦ 上位層をOverlay Network・下位層をUnderlay Networkと呼ぶ ▪ Underlayは物理構成を管理 ▪ OverlayはUnderlayの構成を気にせず構成・転送 Overlay Underlay A D B C X Z Y A D B C X Z Y 例1: IPv4+OSPF 例2: IPv6+IS-IS 例1: MPLS+RSVP-TE 例2: SRv6+IS-IS オーバレイネットワーク
  18. © NTT Communications Corporation All Rights Reserved. 22 • ネットワークの持つ機能を役割ごとに分離し扱う概念

    ◦ データプレーン︓転送機能 ◦ コントロールプレーン︓経路共有。SR的にはさらに3種類の役割が考えられる ▪ Control Plane (LinkState): オーバレイの構築(Node SIDとTE情報の共有) ▪ Control Plane (VPN): オーバレイ上のVPNの構築(VPN経路とVPNラベルの共有) ▪ Control Plane (Policy): ポリシーの適⽤(Segment Listの作成と配布) PE P Control Plane (VPN) Data Plane 役割︓オーバーレイ上のVPNの構築 (BGP Prefix-SIDの広告) プロトコル︓BGP(VPNv4/VPNv6/EVPN等) 役割︓パケットの転送 プロトコル︓MPLS, IPv6 PE SID・TE情報の共有 パケットの転送 Control Plane (LinkState) Control Plane (Policy) PCE 役割︓経路の設定(Segement Listの作成と配布) プロトコル︓BGP-LS(トポロジ吸い上げ) PCEP(SegmentListの適⽤) ポリシーの適⽤ VPNの構築 役割︓オーバーレイの構築 (Node SID/Adjacency SIDの伝搬) プロトコル︓IS-IS, OSPF, BGP-LS(Multi-AS等の場合) データプレーン / コントロールプレーン
  19. © NTT Communications Corporation All Rights Reserved. 23 • 役割:

    データの転送 ◦ パケットにSegment Listをつけて送出 ◦ SID Tableを元にデータを転送 • 利⽤するプロトコルにより、SRv6とSR-MPLSに⼤別 ◦ SRv6ならSegment Listは拡張ヘッダ内、SID TableはIPv6の経路表 ◦ SR-MPLSならSegment ListはShimヘッダ(ラベル)のスタック、SID TableはMPLS Table Data Plane MPLS or IPv6(パケットの転送) SRのデータプレーン
  20. © NTT Communications Corporation All Rights Reserved. 24 • 役割:

    SR domain内でのSIDの共有 ◦ SR domain内の他ノードに⾃らの持つSIDを伝達 ▪ 他ノードのNode SIDを学習し、SID Tableに格納 ◦ SID伝搬にはUnderlayと共通のIGP(OSPF/IS-IS)を利⽤可能 ▪ IS-IS, OSPF共にSR⽤の拡張を利⽤ • SR-MPLSでは拡張が実装されていないと使えない • TE metricやFlex-Algoの定義などもIGP拡張で共有(後述) ▪ IGPを利⽤するため、トポロジ変更時の収束はUnderlayと同時になる Control Plane (LinkState) IS-IS (SID・TE情報の共有) SRのコントロールプレーン(LinkState)
  21. © NTT Communications Corporation All Rights Reserved. 25 • 転送に必要なSID情報の伝搬

    ◦ 既存のIS-IS / OSPFやBGP-LSを拡張して利⽤される ▪ IGPではIS-ISが実装状況の良い傾向 ◦ ⼀般的に、アンダーレイと同じルーティングプロトコルで広告 SR domain AのSID Table SID 処理 10 X 11 Y 2 B 3 C 4 B 12 B 101 X 102 Y 103 B 104 C A D B C X Z Y 10 11 12 1 2 3 4 101 102 103 104 経路広告 宛先 送出先 X X Y Y B B C C D B Z B Aの経路表 (Underlay) SRのコントロールプレーン(LinkState)の流れ
  22. © NTT Communications Corporation All Rights Reserved. 26 1. SR

    domainの送信元がパケットにSR Headerを付与 ◦ SR Header…SRに関する情報を格納するヘッダ ◦ 経路をSR Header中のSegment Listで指定 2. 中間ノードはSegment Listの先頭を経路表から参照し転送 3. 最終的な宛先ノードがSR Headerを除去 SR domain AのSID Table SID 処理 10 X 11 Y 2 B 3 C 4 B 12 B 101 X 102 Y 103 B 104 C A D B C X Z Y Payload 12 4 103 Segment List 1 10 11 12 1 2 3 4 101 102 103 104 HeadendであるXが、受信したパケットに Segment Listの含まれたSR Headerを付与 (再掲)SRのデータプレーンの流れ
  23. © NTT Communications Corporation All Rights Reserved. 28 • MPLS(Multi-layer

    Protocol Label Switching) ◦ パケットに20bitのMPLSラベルが含まれた32bitのMPLSヘッダ(Shimヘッダ)を付与し、 Exact Matchな転送を⾏う技術 ▪ MPLSで作成する経路をLSP(Label Switched Path)、MPLSルータをLSR(Label Switch Router)と呼ぶ ◦ パケットを受け取ったLSRは、MPLS Tableを参照し次のいずれかの処理を実施 ▪ PUSH… Shimヘッダ(MPLSラベル)を追加する ▪ POP… Shimヘッダ(ラベル)を減らす ▪ SWAP… 先頭ラベルを別のラベルに変更する A D B C X Z Y MPLS domain BのMPLS Table Label Action Next 3 Pop - 6 Swap “5” D AのMPLS Table Label Action Next 1 Pop - 2 Swap “6” B 3 Swap “5” C 4 Swap “3” B 5 Swap “4” C 6 Pop X 7 Pop Y 2 Payload Shim DのMPLS Table Label Action Next 2 Pop - 5 Pop Z CのMPLS Table Label Action Next 4 Pop - 5 Swap “5” D 3 Payload 右図は従来のMPLSによる転送。基本的にはShimヘッダは複数つけない PUSH → SWAP, SWAP... → POP ラスト1HopはShimヘッダごと外すことで Egressノードの負荷を下げることも可能 PHP(Penultimate Hop Popping) と呼ぶ PUSH 2 SWAP 6 SWAP 5 POP SWAP 5 SWAP 5 PUSH 3 POP MPLS
  24. © NTT Communications Corporation All Rights Reserved. 29 • L2ヘッダとL3ヘッダの間にMPLS

    Shimヘッダを付与 ◦ 俗にレイヤ2.8(2.5)と呼ばれる ▪ ドメイン (AS等) は超えないがドメイン内のネットワークは超える、L2とL3の中間の動き ◦ Shimヘッダ内は4領域に分かれる ▪ Label: MPLSラベル。20bit (約100万) の領域が存在 ▪ EXP: 予約領域。QoS制御などに利⽤可能 ▪ S: Shimヘッダが多段構成かどうかの判定フラグ。0なら次もShim、1ならL3ヘッダが続く ▪ TTL: ループ防⽌⽤。IPヘッダのTTLと関連づけたりつけなかったりする Layer 2 header MPLS Shim header (32bits) Layer 3 header L3 Payload MPLS Shim header (32bits) Label (20bits) EXP (3bits) S (1bits) TTL (8bits) Shimヘッダは任意の数つけられる MPLSのフレームフォーマット
  25. © NTT Communications Corporation All Rights Reserved. 30 • データプレーンにMPLSを利⽤したSegment

    Routing ◦ ShimヘッダのスタックをSegment List、MPLS TableをSID Tableとして⽤いる A D B C X Z Y SR domain BのSID Table(⼀部) Label Action Next 6 Swap “5” D 12 Payload Shim DのMPLS Table(⼀部) Label Action Next 12 Pop Z CのSID Table(⼀部) Label Action Next 12 Swap “12” D 12 Payload SRのPHPを特にPSP(Penultimate Segment Pop of the SRH)と呼ぶ 10 11 12 3 4 1 AのSID Table ・隣接するNode SIDやAdjacency SIDは全てPop処理 ・隣接していないNode SIDは同じラベルへのSwap処理 2段以上のSegment Listの場合は、Headendが多段Pushする 2 3 2 Label Action Next 10 Pop X 11 Pop Y 2 Pop B 3 Pop C 4 Swap “4” B 12 Swap “12” B 101 Pop X 102 Pop Y 103 Pop B 104 Pop C SR-MPLS
  26. © NTT Communications Corporation All Rights Reserved. 31 • MPLSは先頭ラベルを⾒て次の転送先を決めるため、あるノードの受け取る

    先頭ラベルは次のノードを⽰す ◦ あるノードのNode SIDはその⼿前のノードが処理する ◦ 各ノードが⾃らのNode SID(Locator/Function)を処理するSRv6の処理とは異なる A D B C X Z Y SR domain 12 Payload Shim 12 Payload 10 11 12 2 3 4 1 2 3 12 Payload 12 Payload AのSID Table(⼀部) 2 や 3 はBやCのNode SIDだが、 ⼀つ⼿前に位置するAがPop処理をする。 BやCは⾃らのNode SIDを受け取らない ラベルスイッチングに伴うSR-MPLS固有の挙動 Label Action Next 10 Pop X 11 Pop Y 2 Pop B 3 Pop C … … …
  27. © NTT Communications Corporation All Rights Reserved. 32 • 各ルータの利⽤するGlobal

    SIDの範囲 ◦ SRGBはあるSR domainの中で統⼀することが推奨される ◦ 同様に、あるノード内でのLocal SIDの範囲をSRLB(SR Local Block)と呼ぶ • SR-MPLSでは、SRGBのベースにindexを⾜した値をNode SIDとして扱う ◦ SRGBはSegment Routing全体の概念だが、特にSR-MPLSでは重要となる ▪ MPLS VPNやRSVP-TEなど、ルータ内で別のMPLSラベルとして使われる範囲と分ける必要がある ◦ 機種ごとにデフォルトの領域が異なるため、マルチベンダ環境では事前に統⼀することを推奨 ▪ 隣接ルータとSRGBが異なる場合でも、IGPで広告されるSRGB情報を元に接続可能(次ページ) Node 1 SRGB: 16000-23999 index: 1 Node 2 SRGB: 16000-23999 index: 2 Node 3 SRGB: 16000-23999 index: 3 Label Action Next 16002 POP Node 2 16003 SWAP 16003 Node 2 ... ... ... SR domain 16001 16002 16003 Node 1のSID Table(⼀部) Label Action Next 16001 POP Node 1 16003 POP Node 3 ... ... ... Node 2のSID Table(⼀部) 16003 Payload Payload Pop Prefix: Z.Z.Z.Z Index: 3 Node 3のIndex Prefix: Z.Z.Z.Z Index: 3 Node 3のIndex SRGB: 16000 Range: 8000 Node 2のSRGB IGP(ISISやOSPF) SRGB: 16000 Range: 8000 Node 3のSRGB SRGB(SR Global Block)
  28. © NTT Communications Corporation All Rights Reserved. 33 • SRGBは運⽤上合わせることが推奨されているが、必須では無い

    ◦ IGPで広告される情報をベースに各ノードがSID TableのOutgoing Labelを調整し相互接続 ◦ SID Tableの作成⽅法: Node 1 SRGB: 16000-23999 index: 1 Node 2 SRGB: 800000-804095 index: 2 Node 3 SRGB: 16000-23999 index: 3 Label Action Next 16002 POP Node 2 16003 SWAP 800003 Node 2 ... ... ... SR domain 16001 16002 16003 Node 1のSID Table(⼀部) Label Action Next 800001 POP Node 1 800003 POP Node 3 ... ... ... Node 2のSID Table(⼀部) 800003 Payload Payload Pop Prefix: Z.Z.Z.Z Index: 3 Node 3のIndex Prefix: Z.Z.Z.Z Index: 3 Node 3のIndex SRGB: 800000 Range: 4096 Node 2のSRGB SRGB: 16000 Range: 8000 Node 3のSRGB Node 2のSRGBは800000〜だが、 Node 1では16002として学習 Node 3のNode SIDは、 16003から800003の SWAPとなっている 1. ⾃らのSRGBの基準値に、IGPで広告された隣接ルータのIndexを⾜したSIDを学習 2. SRGBの基準値とSRGB Sizeで隣接ノードのSRGBを認識 3. 隣接ノードへのSWAPルールを作成する際、隣接ノードのSRGBを⽤いてOutgoing labelを設定 ◦ 同じNode SIDのルールであっても、違うラベルにSWAPすることとなる 4. SRGBは異なっていても動作するが、IndexはSR domain内でのGlobal Uniqueに設計する必要あり (参考)SRGBが異なる場合の挙動
  29. © NTT Communications Corporation All Rights Reserved. 34 • 専⽤のIPv6拡張ヘッダを⽤いSegment

    Routingを⾏う⼿法 ◦ データプレーンにIPv6パケットを使⽤ ▪ SRv6に対応していないネットワークを、そのまま⼟管として利⽤可能 ▪ SIDはIPv6アドレスの形式 ◦ SRv6 Functionによる⾼い拡張性 ▪ RFC8986: https://datatracker.ietf.org/doc/html/rfc8986 ◦ SRヘッダの付与⽅式は Encapsulation と Insert の2種類 ▪ ただしInsertモードはRFC8200違反のため、RFC8986とは別ドラフトで議論中 • https://datatracker.ietf.org/doc/draft-filsfils-spring-srv6-net-pgm-insertion/ IPv6 Header IPv6 Extension Header (SR Header) Payload IPv6 Header Encapsulationモード: 扱う対象がIPv6でなくても使⽤可能 Insertモード: IPv6パケットであることが必須だが、 ヘッダによるオーバーヘッドを削減できる Payload IPv6 Header Encapsulation IPv6 Extension Header (SR Header) Payload IPv6 Header Payload IPv6 Header Insert SRH SRv6
  30. © NTT Communications Corporation All Rights Reserved. 35 • IPv6アドレスの128bit空間をLocator、Function、Argumentに分割して使⽤

    ◦ それぞれのフィールドは可変⻑、またArgumentはなくても良い ◦ Locator… 転送先を⽰すフィールド ◦ Function… 転送時の処理を⽰すフィールド ◦ Argument… Functionに与える引数(任意) Locator Function Argument (任意) 例: fd00 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 : 0000 ⼀般的にはLocatorは64bitで設計されることが多い SRv6のSID構造
  31. © NTT Communications Corporation All Rights Reserved. 36 • 拡張ヘッダとしてSR

    Headerが付く ◦ 拡張ヘッダはRouting headerの形式を踏襲 ◦ Routing Type: SRv6のSRHであれば4 ◦ Segment Left: Segment Listの先頭を⽰すポインタ ▪ Segment Leftの初期値はSegment Listの段数 ▪ end処理のたびに-1され、最終的に0になる ◦ Segment List: Segmentの配列 ▪ Segment Leftを配列の添字とするため、配列の末尾がListの 先頭要素、配列の先頭が末尾の要素となる ◦ Optional TLV ▪ HMACなどで利⽤ • IPv6 Headerの宛先アドレスは、End処理の度に Segment Listの先頭要素で上書きされる(後述) ◦ 宛先アドレスでのIPv6 Forwardingを可能にする処理 出典: https://datatracker.ietf.org/doc/html/rfc8754 IPv6 Header (NH: 43) IPv6 Extension Header (SRv6 Header) Payload Inner Header (IPv4/IPv6) SRv6のパケットフォーマット
  32. © NTT Communications Corporation All Rights Reserved. 37 SR domain

    • SRv6に関連するノードには3種類の役割が存在する ◦ SR Source Node: SRv6の送信元となるHeadendノード ◦ Transit Node: IPv6を転送するノード。SRv6⾮対応でも良い ◦ SR Segment Endpoint Node: Segmentを処理するノード ▪ SRv6パケットのDestination AddressをLocal Segment、あるいはInterface Addressとして持つ Node 1 Locator: fd00:0:0:1::/64 Node 2 Locator: fd00:0:0:2::/64 Node 3 Locator: fd00:0:0:3::/64 (SR Source Node) (Transit Node) (SR Segment Endpoint Node) IPv6 Forwarding End.DT6 H.Encaps (SR Source Node) (SR Segment Endpoint Node) (SR Segment Endpoint Node) End End.DT6 H.Encaps Node 2のEnd、Node 3のEnd.DT6の2段でSegment Listを付与した例 [fd00:0:0:2::1, fd00:0:0:3::6:a] Node 3のEnd.DT6のみでSegment Listを付与した例 [fd00:0:0:3::6:a] SRv6関連ノードの種別
  33. © NTT Communications Corporation All Rights Reserved. 38 • ⾃らがDestinationであるPacketを受信したノード(Endpoint)はSRHを処理

    ◦ EndpointはLocal SID Tableを参照しFunctionを処理(後述) ▪ 例えばEndは、Segment Leftを1つ減らしDestination IP Addressを次の先頭要素に変更して転送 ◦ EndpointではないノードはSRHを処理せず、通常のIPv6 Forwardingを実施 Node 1 Locator: fd00:0:0:1::/64 Node 2 Locator: fd00:0:0:2::/64 Node 4 Locator: fd00:0:0:4::/64 SR domain IPv6 Extension Header (SR Header) Node 3 Locator: fd00:0:0:3::/64 IPv6 Header End IPv6 Forwarding End.DT6 H.Encaps (SR Source Node) (SR Segment Endpoint Node) (Transit Node) (SR Segment Endpoint Node) Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:2::1 Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 1 Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:4::6:a Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 0 Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:4::6:a Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 0 SRv6による転送
  34. © NTT Communications Corporation All Rights Reserved. 39 • SRv6⾮対応ノードもTransit専⽤のノードとして扱える

    ◦ SRv6⾮対応な既存IPv6ネットワーク等を⼟管として利⽤可能 ◦ 前提として、Locator単位の経路広告は必要 Node 1 Locator: fd00:0:0:1::/64 Node 2 Locator: fd00:0:0:2::/64 Node 4 Locator: fd00:0:0:4::/64 SR domain IPv6 Extension Header (SR Header) SRv6非対応Node IPv6 Header End IPv6 Forwarding End.DT6 H.Encaps (SR Source Node) (SR Segment Endpoint Node) (Transit Node) (SR Segment Endpoint Node) Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:2::1 Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 1 Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:4::6:a Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 0 Next Header: 43 Source IP address: fd00:0:0:1::1 Destination IP address: fd00:0:0:4::6:a Payload IPv6 Header Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Last Entry: 1 Flags Tag Next Header: 41 Hdr Ext Len: 6 Routing Type: 4 SL: 0 SRv6⾮対応ノードが存在する場合の処理
  35. © NTT Communications Corporation All Rights Reserved. 40 • Endpoint以外のノードはLocator部分のみをFIBで処理

    • EndpointはLocal SID TableでFunctionを処理 Node 1 Locator: fd00:0:0:1::/64 Node 2 Locator: fd00:0:0:2::/64 Node 4 Locator: fd00:0:0:4::/64 SR domain Node 3 Locator: fd00:0:0:3::/64 End IPv6 Forwarding End.DT6 H.Encaps (SR Source Node) (SR Segment Endpoint Node) (Transit Node) (SR Segment Endpoint Node) IPv6 Extension Header (太字が先頭要素) 宛先 送出先 fd00:0:0:1::/64 en0 fd00:0:0:3::/64 en1 fd00:0:0:4::/64 en1 Node 2のFIB(⼀部) en0 en1 en0 en1 en0 en1 宛先 送出先 fd00:0:0:1::/64 en0 fd00:0:0:2::/64 en0 fd00:0:0:4::/64 en1 Node 3のFIB(⼀部) 宛先 送出先 fd00:0:0:1::/64 en0 fd00:0:0:3::/64 en0 fd00:0:0:4::/64 en0 Node 4のFIB(⼀部) SID Action fd00:0:0:2::/128 End Node 2のLocal SID Table SID Action fd00:0:0:2::/128 End Node 3のLocal SID Table SID Action fd00:0:0:4::/128 End fd00:0:0:4::6:a/128 End.DT6 VRF-a Node 4のLocal SID Table VRF-a IPv6 Header(宛先のみ) Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Destination Address: fd00:0:0:2::1 Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Destination Address: fd00:0:0:4::6:a Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00:0:0:4::6:a Destination Address: fd00:0:0:4::6:a Locator / Local SIDの処理
  36. © NTT Communications Corporation All Rights Reserved. 41 • SR

    Policy Headend Behaviors。Headend(SR Source Node)の処理 ◦ Headend⾃⾝が⾃ら⾏う処理なので、SIDリストにSIDを⼊れて送るものではない ▪ (実装によっては内部でH.Encaps等を⽰すSIDを使ってるかも) ◦ 以前はTransitの略称でT.xxxxと⾔う名前だった ◦ H.Encaps: EncapsulationモードでSRv6ヘッダをつける ▪ IPv4/IPv6どちらにも使えるが、v6の場合IPv6ヘッダが⼆重になってしまう ◦ H.Insert: InsertモードでSRv6ヘッダをつける ▪ IPv4パケットには使えない。RFC8200違反のため、RFC8986とは別ドラフトで議論中 IPv6 Header IPv6 Extension Header (SRv6 Header) Payload IPv6 Header Encapsulationモード: 扱う対象がIPv6でなくても使⽤可能 Insertモード: IPv6パケットであることが必須だが、 ヘッダによるオーバーヘッドを削減できる Payload IPv6 Header Encapsulation IPv6 Extension Header (SRv6 Header) Payload IPv6 Header Payload IPv6 Header Insert SRH 代表的なWell-known Behaviors(Headend)
  37. © NTT Communications Corporation All Rights Reserved. 42 • Endpoint

    Behaviors: SR Segment Endpoint Nodeの処理 ◦ 基本的にはSIDリストに⼊れて送るSID ◦ End: SIDリストを参照し、⼀つ進めて転送 ▪ SR-MPLSのNode SIDに⼀番近い ◦ End.DX4, End.DX6: Decapsulation and IPv4/6 Cross-Connect ▪ Decapを⾏い、IPv4/IPv6で転送する。Per-CE L3VPN ◦ End.DT4, End.DT6: Decapsulation and Specific IPv4/6 Table Lookup ▪ Decapを⾏い、特定のVRFをLookupする。per-VRF L3VPN ◦ End.DX2: Decapsulation and L2 Cross-Connect ▪ Decapを⾏い、特定のL2インターフェースに送る。L2VPN ◦ End.AM: Endpoint to SR-unaware APP via masquerading ▪ Service Function Chainingを⽬的とし、SRv6⾮対応なNodeを救うためのFunction 1. SRv6ヘッダのDestinationを最終的なアドレスに書き換えて⾮対応Nodeに送出 2. 戻ってきたパケットのDestinationを再びNexthopに書き換え、Endの処理を実施 ◦ End.B6.Encaps: Endpoint Bound to an SRv6 Policy with Encapsulation ▪ SRv6をEncapsulationするBinding Segment(SR-MPLSをEncapするならEnd.BM) 代表的なWell-known Behaviors(Endpoint)
  38. © NTT Communications Corporation All Rights Reserved. 43 • 基本的に可変⻑かつ⾃由(ただし⼀部の実装はLocator⻑が固定)

    ◦ (例)Cisco: Locatorは64bit、うち上位40bitをSID block、下位24bitをNode IDとして利⽤ • 階層的に設計することに利点あり︖(拠点間通信やSRv6⾮対応網の利⽤など) ◦ 例えば AS Prefix : 拠点ID : Algo ID : index のように設計するべきと考える ◦ Function部分も管理がしやすいようID設計を⾏う ◦ ただしSIDはLocatorを元に⾃動⽣成する実装も多く、Functionを任意の値にできない場合も ▪ (例)VPNv6によるEnd.DT6の⾃動払い出し 2001:db8:180:1:1:4:1:a 拠点ID(拠点1) Flex-Algo ID (128) Algo内のindex Function Sub-ID Function ID パラメータ1 SID設計の例。2001:db8::/32 を利⽤し設計を実施 例では255拠点で、拠点ごとに65535ノードが収容可能になる LocatorはASの持つPrefixや⾮SR網のアドレスブロック、 Function/ArgumentはSRv6の⽤途と相談して設計する パラメータ2 (補⾜)SRv6のSID設計案
  39. © NTT Communications Corporation All Rights Reserved. 44 • BSIDを使えば、SR-MPLSもSRv6

    Functionと似たことができる︖ → 現状ではできない。理由は以下2点 • 1. Exact Matchの制約 ◦ SRv6のSIDはLocator/Function/Argumentに分かれており、Functionと効率的な転送が両⽴できる ▪ Functionを処理するノード以外はLocator部だけを学習する。Function単位のFIB installは不要 ◦ SR-MPLSのLabelではそうは⾏かない。BSIDの数だけ経路を持つ必要がある • 2. Programmability ◦ SRv6ではFunctionはユーザが⾃由に定義することができる設計になっている ◦ ⼀⽅SR-MPLSのBSIDは現状⾃由Programすることは想定されておらず、 ルータの実装で決まった形のSR Policyにのみ対応している SRv6 Node fd00:0:0:1::2 Payload fd00:0:0:1::3 Payload fd00:0:0:1::1 Payload SR-MPLS Node 24002 Payload 24003 Payload 24001 Payload Label fd00:0:0:1::/64 SID Table(⼀部) Label 24001 24002 24003 SID Table(⼀部) Endpointとなるノード以外はSID TableにLocaterのみ保持 SRv6 Functionに相当するBSIDを処 理するノード以外も、全てのノードが SID Tableに持つ必要あり このBSIDはGlobal SIDとなる (補⾜)Binding SegmentとSRv6 Function(1/2)
  40. © NTT Communications Corporation All Rights Reserved. 45 • 例として、SRv6ではGlobal

    Segmentな⾃作Functionを⽤意し、Argumentを 書き換えながら連鎖的に計算するような使い⽅もできる ◦ 参考: SRv6で8パズルを解いてみる(https://qiita.com/jiazio/items/15b41f1345089a1887af) ◦ もちろんBSIDでも計算結果に対応したSIDへSWAPすることはできるかもしれない。 ただしその場合は前述の2つの制約が厳しい。 ▪ 計算後のBSIDまでExact Matchできるよう学習済みでないとその先で転送ができない ▪ 機器にProgrammabilityがない SRv6 Node fd00:0:0:1::2:100 Payload SR-MPLS Node 24002 Payload 24XXX? Payload Exact MatchなSR-MPLSのSIDは柔 軟な利⽤が不可能 計算結果に応じたSIDを事前に全パタ ーン発⾏してGlobal SIDとして他ノード 全てに展開する...︖ fd00:0:0:1::2:200 Payload Locatorによる効率的な転送と Argumentの活⽤により柔軟なSID利 ⽤が可能 機器のProgrammabilityが活発に議論されている 欲しい機能に応じて専⽤のFunctionを実装するのはSRv6 の代表的なユースケース Exact Matchの制約が⼤きく、SRv6 Functionのような Programmabilityはあまり検討されていない (補⾜)Binding SegmentとSRv6 Function(2/2)
  41. © NTT Communications Corporation All Rights Reserved. 46 • SR-MPLS側の利点

    ◦ SR-MPLSの⽅が先に実装が始まっているため、SRv6に⽐べ実装状況が良い ▪ MPLS-VPNなど、MPLSの既存アーキテクチャもそのまま活⽤できる ◦ SRv6に⽐べSIDサイズが⼩さい(SRv6 128bitに対しSR-MPLSは32bit) • SRv6側の利点 ◦ 128bitのSIDを活かして様々な動作を⾏うSRv6 Functionの存在、⾼い拡張性 ◦ SRv6に対応していない網も、IPv6さえ対応していれば⼟管として使⽤可能 ▪ 仮に間にインターネットが挟まっていても、IPv6さえあれば転送可能 SR-MPLSとSRv6の⽐較
  42. © NTT Communications Corporation All Rights Reserved. 48 • 役割:

    SR domain内でのSIDの共有 ◦ SR domain内の他ノードに⾃らの持つSIDを伝達 ▪ 他ノードのNode SIDを学習し、SID Tableに格納 ◦ SID伝搬にはUnderlayと共通のIGP(OSPF/IS-IS)を利⽤可能 ▪ IS-IS, OSPF共にSR⽤の拡張を利⽤ • SR-MPLSでは拡張が実装されていないと使えない • TE metricやFlex-Algoの定義などもIGP拡張で共有(後述) ▪ IGPを利⽤するため、トポロジ変更時の収束はUnderlayと同時になる Control Plane (LinkState) IS-IS (SID・TE情報の共有) SRのコントロールプレーン(SID共有部分・再掲)
  43. © NTT Communications Corporation All Rights Reserved. 49 C-Plane3種、SRでの役割をもう⼀声 PE

    P PE P PE P PE P PE P PE P Control Plane (VPN) Control Plane (LinkState) Control Plane (Policy) PCE PCEP (発⾏した セグメントリストの共有) BGP-LS (パス計算のための トポロジ/TE情報の共有) BGP (VPNの構築) IS-IS (SID・TE情報の共有) 役割︓経路の設定(Segement Listの作成と配布) - BGP-LSによりトポロジ情報を吸い上げる - PCEが持つポリシーをもとに、セグメントリストを構築 - PCEPにより、作成したセグメントリストをPEに配布 → 動作の結果、PEがセグメントリストを得る。Pには影響しない 役割︓オーバーレイ上のVPNの構築 - L3VPN(per-VRF/per-CE)やL2VPNに対応したVPNラベル (BGP Prefix-SID)を作成 - BGPにより対向のPEにL3VPN(per-VRF/per-CE)やL2VPNの情報を広告 → 動作の結果、VPNを貼りたいPE同⼠が、VPN経路やそのラベルを取得 役割︓オーバーレイの構築 - 各ノードがindexからNode SIDを、隣接関係からAdjacency SIDを作成 - IGPにより網内(IGP domain = SR domain内)の全ノードに Node SID / Adjacency SIDを広告 - 上記を受け取ったノードは、受け取ったNode SIDをSID Tableに格納 → 動作の結果、SID Tableができる = Segment Listで指定された際に転送する為の下準備ができる
  44. © NTT Communications Corporation All Rights Reserved. 50 • 役割:

    SIDと各種TEパラメータの共有 ◦ SR domain内でNode/Adjacency SIDやSRGB、TE Metric/帯域/遅延等の定義を広告 ◦ SR関連の情報を含めるように既存IGPを拡張し利⽤ ▪ SR-MPLSではNode SIDの広告にIGP拡張が必須 ▪ SRv6でもFlex-AlgoなどをIGP拡張により実現 • IS-IS Extension for Segment Routing ◦ https://datatracker.ietf.org/doc/html/rfc8667 ◦ SR-MPLS⽤のTLV/sub-TLVを定義 ▪ IS-IS TLV Codepoints: https://www.iana.org/assignments/isis-tlv-codepoints/isis-tlv-codepoints.xhtml ▪ SRv6⽤の追加拡張も議論中: https://datatracker.ietf.org/doc/html/draft-ietf-lsr-isis-srv6-extensions • OSPF Extension for Segment Routing ◦ OSPFv2: https://datatracker.ietf.org/doc/html/rfc8665 ◦ OSPFv3: https://datatracker.ietf.org/doc/html/rfc8666 ▪ SR-MPLS⽤のOpaque-Typeを定義 ▪ SRv6⽤の追加拡張も議論中: https://datatracker.ietf.org/doc/html/draft-ietf-lsr-ospfv3-srv6-extensions SRのIGP
  45. © NTT Communications Corporation All Rights Reserved. 51 • 太字部分がSR⽤に追加されたTLV/Sub-TLV

    • Sub-TLVs for Types 22, 23, 25, 141, 222, and 223 ◦ Adj-SIDの広告。TLV-22: Extended IS reachability等、Neighbor Information 系のTLVに付与 ▪ Sub-TLV 31: Adjacency Segment Identifier(Adj-SID) ▪ Sub-TLV 32: Adjacency Segment Identifier(LAN-Adj-SID) • Sub-TLVs for Types 135, 235, 236, and 237 ◦ Prefix-SIDの広告。TLV-135: Extended IP reachability等、Prefix Reachability系のTLVに付与 ▪ Sub-TLV 3: Prefix Segment Identifier(Prefix-SID) (参考)RFC8667 IS-IS Extension for Segment Routing (1/2)
  46. © NTT Communications Corporation All Rights Reserved. 52 • 太字部分がSR⽤に追加されたTLV/Sub-TLV

    • Sub-TLVs for Type 242(Router Capability) ◦ SR-MPLSの対応やSRGBなど、SRに関する全体的な設定を広告 ▪ Sub-TLV 2: SR-Capability SR-MPLSのIPv4/v6対応やSRGBの広告 ▪ Sub-TLV 19: SR-Algorithm IGP Algorithm Typeの広告。0: SPF、1: Strict SPF • Flex-Algo(https://datatracker.ietf.org/doc/html/draft-ietf-lsr-flex-algo): 128-255 ▪ Sub-TLV 22: SR Local Block SRLB(Adj-SID等、Local SIDの範囲)を広告 ▪ Sub-TLV 24: SRMS Preference SR Mapping Server(RFC8661)のPreference値 • TLV 149: SID/Label Binding TLV • TLV 150: Multi-Topology SID/Label Binding TLV ◦ SRMSでマッピングしたPrefix SIDを広告 (参考)RFC8667 IS-IS Extension for Segment Routing (2/2)
  47. © NTT Communications Corporation All Rights Reserved. 53 • LSA

    Type9/10/11: Opaque LSA(RFC7684, RFC7770)を利⽤し広告 • Opaque Type 4: OSPFv2 Router Information ◦ Type 8: SR-Algorithm IGP Algorithm Typeの広告。0: SPF、1: Strict SPF ◦ Type 9: SID/Label Range SRGBの広告 ◦ Type 14: SR Local Block SRLB(Adj-SID等、Local SIDの範囲)を広告 ◦ Type 15: SRMS Preference SR Mapping Server(RFC8661)のPreference値 • Opaque Type 7: OSPFv2 Extended Prefix Opaque LSA ◦ Type 2: OSPF Extended Prefix Range TLV ▪ Type 1: SID/Label Sub-TLV ▪ Type 2: Prefix-SID Sub-TLV • Opaque Type 8: OSPFv2 Extended Link Opaque LSA ◦ Type1 : OSPFv2 Extended Link TLV ▪ Type 1: SID/Label Sub-TLV ▪ Type 2: Adj-SID Sub-TLV ▪ Type 3: LAN Adj-SID/Label Sub-TLV (参考)RFC8665 OSPF Extension for Segment Routing
  48. © NTT Communications Corporation All Rights Reserved. 54 • Router

    Information Opaque LSA(RFC7770)とExtended LSAで広告 ◦ https://www.iana.org/assignments/ospfv3-parameters/ospfv3-parameters.txt • LSA Type 12 OSPFv3 Router Information Opaque LSA ◦ 前ページのOSPFv2 Opaque Type 4: OSPFv2 Router InformationのTLVと同じ • Extended LSA(RFC8362) ◦ 下記のExtended LSAのTLVとしてSR関連の情報を付与 ▪ E-Intra-Area-Prefix-LSA, ▪ E-Inter-Area-Prefix-LSA ▪ E-AS-External-LSA ▪ E-Type-7-LSA ◦ Type 9: OSPFv3 Extended Prefix Range TLV ▪ Type 4: Prefix-SID sub-TLV ▪ Type 5: Adj-SID sub-TLV ▪ Type 6: LAN Adj-SID sub-TLV ▪ Type 7: SID/Label sub-TLV (参考)RFC8666 OSPFv3 Extension for Segment Routing
  49. © NTT Communications Corporation All Rights Reserved. 55 • IGPの経路計算を柔軟に実現するため、経路計算⾯を仮想化・多重化する技術

    ◦ draft: https://datatracker.ietf.org/doc/html/draft-ietf-lsr-flex-algo ◦ 分けたAlgorithmごとにトポロジを持ち、AlgoごとのMetric/制約で経路計算を実施 ▪ Algoごとに固有のトポロジ、Metricで最短経路を決定 ▪ あるAlgoのSIDを指定すると、そのトポロジ内で転送が⾏われる ◦ QoS保証、Affinity制約が⾃然に実現できる ▪ デメリットとして、SID Tableのエントリ数は増減する ▪ QoS保証をしつつルーズソースルーティングをする、などということが可能 画像: https://y-network.jp/2020/09/29/segment-routing-042/ 画像: https://www.segment-routing.net/images/sr-igp-flex-algo-rev4b-km1.pdf Flex-Algorithm(Flex-Algo)
  50. © NTT Communications Corporation All Rights Reserved. 56 • 意図に基づいてネットワーキングを実現する概念

    ◦ 運⽤者が事前に定義した状態になるようネットワークを構築する ◦ 例: 障害が起きても、常に帯域X bpsを満たすようリルートされる経路 ◦ 例: IGPコストではなく、常に遅延最⼩になるような経路 画像: https://blogs.cisco.com/networking/improving-networks-with-ai Intent-based Networking
  51. © NTT Communications Corporation All Rights Reserved. 57 • ⼀つのNWを、複数の仮想NWに分割・多重化する技術

    ◦ リソースの共通化と、NWの分離を同時に実現 ◦ 利⽤者ごとの分離、冗⻑パスの分離、通信品質のMetric分けなど 物理NW (Underlay) スライスB スライスA ネットワークスライシング
  52. © NTT Communications Corporation All Rights Reserved. 58 • IS-IS/OSPF共に

    https://datatracker.ietf.org/doc/html/draft-ietf-lsr-flex-algo で提案中 ◦ 基本的にはFAD(Flex-Algorithm Definition)とColor(Administrative-group)の2点で広告 ◦ 柔軟な計算を実現するため、様々なパラメータを利⽤ ▪ Affinity制約: bitmapなColor。Include(any/all), Excludeなどが選択可能 ▪ Metric: IGP Metric・TE Metric・DelayなどAlgorithmごとに設定可能 ▪ Disjoint Path: SRLG(Shared Risk Link Group)を考慮した冗⻑パスの有効利⽤ A D B C SR domain A D B C A D B C Algorithm 129: Exclude GREEN TE Metric、 Algorithm 128 Exclude RED IGP Metric A D C Algorithm 130: include-all Blue IGP Metric 100, 10 10, 100 10, 10 100, 10 10, 100 Metric: IGP, TE Color Legend 10 10 10 100 100 10 10 10 10 10 Flex-Algo⽤のIGP拡張
  53. © NTT Communications Corporation All Rights Reserved. 59 • 各ルータがリンクにColorを設定、IGPで広告

    ◦ Administrative-groupやExtended Administrative group(RFC7308)をbitmapとして使⽤ ▪ Administrative-group: 4byte空間 ▪ Extended Administrative group: 4byteの倍数。先頭4byteはAdmin-groupと⼀致 ◦ Admin-group、Extended Admin-group共にLegacyなものとASLAで再定義されたものが存在 ▪ ASLA(Application-Specific Link Attribute): RFC8919、8920 ▪ Flex-AlgoではASLAの使⽤を想定 • ASLAのSABM(Standard Application Identifier Bit Mask)で3bit⽬を⽴て、Flex-Algoでの利⽤を明⽰ • IS-ISの場合、ASLAのL-Flagを⽴てることでLegacyなAdmin-groupを使⽤可能 00000000 00000000 00000000 00001001 bit-position 0と3が有効になったAdministrative-groupの例 網の運⽤者がbit-position 0はRED、1はGREENなどと定義し利⽤する Flex-Algo⽤のColor
  54. © NTT Communications Corporation All Rights Reserved. 60 • TLV-242

    Router Capability ◦ Type 19: SR-Algorithm Algorithmに対応する番号(128-255)を含める(RFC8667) ◦ Type 26: IS-IS FAD sub-TLV Metric-Type、Calculation-Type、Priorityを広告 ▪ Type 1: IS-IS Flexible Algorithm Exclude Admin Group Sub-TLV ▪ Type 2: IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV ▪ Type 3: IS-IS Flexible Algorithm Include-ALL Admin Group Sub-TLV ▪ Type 4: IS-IS FAD Flags Sub-TLV ▪ Type 5: IS-IS Flexible Algorithm Exclude SRLG Sub-TLV • SRLG Value(RFC5307)を格納し、Algoの計算から除外したいSRLG(FAESRLG)を指定 • Sub-TLV 16 Application-Specific Link Attributes(RFC8919) ◦ TLV-22: Extended IS reachability等、Neighbor Information系のTLV(23/25/141/222/223)に付与 ◦ Sub-Sub-TLV-3 Administrative Group ◦ Sub-Sub-TLV-14 Extended Administrative Group • TLV-3 Administrative-group(RFC5305) • TLV-14 Extended Administrative-group(RFC7308) ◦ Legacy実装。どちらもL-Flagが有効な場合のみ評価 (参考)Flex-Algo⽤のIGP(IS-IS)
  55. © NTT Communications Corporation All Rights Reserved. 61 • Router

    Information(OSPFv2: LSA Type 9/10/11、OSPFv3: LSA Type 12) ◦ Type 8 SR-Algorithm Algorithmに対応する番号(128-255)を含める ◦ Type 16 OSPF Flexible Algorithm Definition TLV ▪ Metric-Type、Calculation-Type、Priorityを定義。下記のTLVを付与可能 ▪ Type 1: OSPF Flexible Algorithm Exclude Admin Group Sub-TLV ▪ Type 2: OSPF Flexible Algorithm Include-Any Admin Group Sub-TLV ▪ Type 3: OSPF Flexible Algorithm Include-ALL Admin Group Sub-TLV ▪ Type 4: OSPF FAD Flags Sub-TLV ▪ Type 5: OSPF Flexible Algorithm Exclude SRLG Sub-TLV ▪ SRLG Value(RFC4203)を格納し、Algoの計算から除外したいSRLG(FAESRLG)を指定 • OSPF Application-Specific Link Attributes ◦ OSPFv2 Extended Link TLVやOSPFv3 Extended-LSA Sub-TLVとして広告される ▪ OSPFv2: TLV 19: Administrative Group、TLV 20: Extended Administrative Group ▪ OSPFv3: TLV 20: Administrative Group、TLV 21: Extended Administrative Group (参考)Flex-Algo⽤のIGP(OSPF)
  56. © NTT Communications Corporation All Rights Reserved. 62 • SR(Segment

    Routing) ◦ ソースルーティングのパラダイムとシグナリング不要なプロトコル構成 ◦ 従来の経路制御技術が抱えるステート増加とシグナリングによるスケーラビリティの課題を解決 • 2種類のデータプレーン ◦ SR-MPLS: MPLSラベルを利⽤したSR ◦ SRv6: IPv6の拡張ヘッダを利⽤したSR • 既存のIGPを活⽤ ◦ C-Plane(LinkState): Node SIDの配布。IS-ISやOSPFを拡張し実現︕ ◦ より柔軟な経路計算のため、IGP拡張によるFlex-Algoのような仕組みも ここまでのまとめ(TE)
  57. © NTT Communications Corporation All Rights Reserved. 64 • VPN

    (Virtual Private Network) ◦ ネットワーク上に仮想的な専⽤回線を構築する技術 ◦ 主な⽤途: 企業NW、DCなどの拠点間通信、外部から社内ネットワークのアクセス Customer A Customer B Customer A Customer B VPN A VPN B 何らかのネットワーク VPNとは
  58. © NTT Communications Corporation All Rights Reserved. 65 • インターネットVPN

    ◦ インターネット上に仮想回線を構築するVPN ◦ トンネリング・暗号化により機密性を担保 ◦ 主な技術...L2TP/IPSec、SSL-VPN • IP-VPN ◦ 通信事業者等の運⽤する閉域網を利⽤し構築するL3VPN ◦ 主な技術...MPLS-VPN • 広域イーサネット ◦ 通信事業者等の運⽤する閉域網を利⽤し構築するL2VPN ◦ 主な技術... VPLS VPNの種別(インターネットVPNとIP-VPN)
  59. © NTT Communications Corporation All Rights Reserved. 66 • L2VPN

    ◦ 端点同⼠をL2で接続するVPN ▪ 通信はInterface等のL2情報で識別 ▪ Customer同⼠はフラットなL2網 ▪ 間に⼤きなL2スイッチがあるイメージ • L3VPN ◦ 端点同⼠をL3で接続するVPN ▪ 通信はVRF/CE等のL3情報で識別 ▪ Customer同⼠は別のL2網、L3で接続 ▪ 間に⼤きなルータがあるイメージ MAC-VRF A MAC-VRF B MAC-VRF A MAC-VRF B VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 VRF default VRF A VRF B VRF A VRF B VRF default VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.0.0/24 192.168.0.0/24 192.168.0.0/24 Interface A Interface A Interface B Interface B L2VPNとL3VPN
  60. © NTT Communications Corporation All Rights Reserved. 67 • L3VPNの実現⼿法による区別

    • per-VRF VPN ◦ VRFで識別するL3VPN ◦ PEはVPNラベルに紐づくVRFの経路表を参照 • per-CE VPN ◦ 接続するCEで識別するL3VPN ◦ PEはVPNラベルに紐づくCEへと送出 VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 VRF default VRF A VRF B VRF A VRF B VRF default per-VRF VPNとper-CE VPN
  61. © NTT Communications Corporation All Rights Reserved. 68 • VRF

    (Virtual Routing and Forwarding) ◦ ルータのL2/L3仮想化技術 ▪ ルーティング機能とフォワーディング機能の双⽅を仮想化 ◦ 1つのルータ上に複数の独⽴したルーティングインスタンスを⽣成 ▪ ルーティングインスタンスごとに経路表/Mac Tableを保有 VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 Customer A の経路表 Customer A の経路表 Customer B の経路表 VPN網の 経路表 VPN網の 経路表 VRF B VRF default VRF B VRF default Customer B の経路表 VRF A VRF A VRF
  62. © NTT Communications Corporation All Rights Reserved. 69 AS65000 •

    Route-Distinguisher (RD) ◦ ルータ内部で複数のVRFを扱う際、VRFごとに経路を識別するための識別⼦ ◦ 2byte:2byteの形式で慣例的に、AS番号:VRFごとの番号 の形式で表すことが多い ▪ あるノードの異なるVRFに同じ経路が存在していても、RD+Prefixの組み合わせで識別可能 VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 Customer A の経路表 Customer B の経路表 Customer A の経路表 Customer B の経路表 VPN網の 経路表 VPN網の 経路表 R02 R01 VRF A RD: 65000:100 VRF default VRF A RD: 65000:100 VRF B RD: 65000:200 VRF default VRF B RD: 65000:200 Prefix: 192.168.0.0, RD: 65000:100 Prefix: 192.168.0.0, RD: 65000:200 R01のBGPテーブル Prefix: 192.168.1.0, RD: 65000:100 Prefix: 192.168.1.0, RD: 65000:200 R02のBGPテーブル RD付き経路を学習 Route-Distinguisher
  63. © NTT Communications Corporation All Rights Reserved. 70 AS65000 •

    Route-Target (RT) ◦ 経路広告時に、相⼿に経路を識別してもらうために使⽤する識別⼦ ◦ 各ルータは、受信した経路のRTを参照し格納先のVRFを決定するimportルールを定義 ▪ ⼀般的には、経路につけるRTは対応するVRFのRDと同じ値にすることが多い ▪ BGP UPDATEを受信したルータは、import設定に従ってRTに対応するVRFに格納 VPN網 Customer A Customer B Customer A Customer B Customer A の経路表 Customer B の経路表 Customer A の経路表 Customer B の経路表 VPN網の 経路表 VPN網の 経路表 Prefix: 192.168.0.0, RD: 65000:100 Prefix: 192.168.0.0, RD: 65000:200 R01のBGPテーブル Prefix: 192.168.1.0, RD: 65000:100 Prefix: 192.168.1.0, RD: 65000:200 Prefix: 192.168.1.0, RD: 65000:100 R02のBGPテーブル R02 R01 BGP UPDATE VRF A RD: 65000:100 Export RT: 65000:100 VRF A RD: 65000:100 Import RT: 65000:100 VRF B RD: 65000:200 Export RT: 65000:200 VRF default VRF B RD: 65000:200 Import RT: 65000:200 RT: 65000:100 Prefix:192.168.0.0/24 ②受信側はimportルールに従い RTに対応するVRFに格納 ①送信側は、相⼿に格納して欲しい VRFを⽰すRTをつけUPDATEを広告 VRF default 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 Route-Target
  64. 71 MPLS ShimヘッダがついているならばMPLS領域が、 Shimヘッダがなく、IPヘッダがついていればIP領域が参照される (参考)⼀般的なルータの構造 Router VRF (Virtual Routing and

    Forwarding) 役割: L2/L3機能の仮想化。L2のMAC TableやL3のIP Table、L2.8のMPLS TableはVRFごとに⽣成される(実装による) LSDB IS-IS daemon BGP daemon BGP Table Connected / Static Route MPLS領域 TCAM (Ternary Content Addressable Memory) IPv4領域 IPv6領域 show isis database show bgp BGPで学習したVRF経路 (VPNラベルをencapするように インストールされる) BGPで学習したVPNラベル (BGP Prefix SID) ISISで学習した経路 ISISで学習したラベル (Node SID) Shimヘッダにこのラベルが⼊ってきたら この動作をして、MACヘッダに このMACアドレスをつけてこのIFから送る IPヘッダのdst addrにこれがあったら この宛先に、MACヘッダにこのMACアドレス をつけてこのIFから送る HW処理⽤のメモリ。 実際に⼊ってきたパケットはこれで処理する ConnectedやStatic Routeなどは直接RIBに⼊る junosだとset routing-options rib inet6.0 static route するからわかりやすいかも LIB (Label Information base) RIB (Routing Information base) LFIB (Label FIB) FIB (Forwarding Information base) MPLS Table IP Table ベストパスのみ ただし、SR-MPLSでは ベストパス以外存在 しない気がする ベストパスのみ MAC address Table RIB/LIB: CPU処理で⽤いる経路表 各種のルーティングプロトコルで 選択されたベストパス / Static Route などの経路情報は全てここに載る 各プロトコルのベストパスを Administrative Distance値で⽐較し、 最終的なベストパスを決定する FIB/LFIB: ⾼速化のため、HW処理で ⽤いる、ベストパスのみが含まれた テーブル。RIB/LIBから⽣成される ARPで学習する Data Plane Control Plane © NTT Communications Corporation All Rights Reserved.
  65. © NTT Communications Corporation All Rights Reserved. 72 • ネットワークの持つ機能を役割ごとに分離し扱う概念

    ◦ データプレーン︓転送機能 ◦ コントロールプレーン︓経路共有。SR的にはさらに3種類の役割が考えられる ▪ Control Plane (LinkState): オーバレイの構築(Node SIDとTE情報の共有) ▪ Control Plane (VPN): オーバレイ上のVPNの構築(VPN経路とVPNラベルの共有) ▪ Control Plane (Policy): ポリシーの適⽤(Segment Listの作成と配布) PE P Control Plane (VPN) Data Plane 役割︓オーバーレイ上のVPNの構築 (BGP Prefix-SIDの広告) プロトコル︓BGP(VPNv4/VPNv6/EVPN等) 役割︓パケットの転送 プロトコル︓MPLS, IPv6 PE SID・TE情報の共有 パケットの転送 Control Plane (LinkState) Control Plane (Policy) PCE 役割︓経路の設定(Segement Listの作成と配布) プロトコル︓BGP-LS(トポロジ吸い上げ) PCEP(SegmentListの適⽤) ポリシーの適⽤ VPNの構築 役割︓オーバーレイの構築 (Node SID/Adjacency SIDの伝搬) プロトコル︓IS-IS, OSPF, BGP-LS(Multi-AS等の場合) データプレーン / コントロールプレーン(再掲)
  66. © NTT Communications Corporation All Rights Reserved. 73 • SR-MPLSは既存のMPLS-VPNを利⽤可能

    ◦ L2VPN/L3VPN共にコントロールプレーンにMP-BGPを利⽤(後述) • L2VPN: EVPN ◦ VPNラベルとEVPN NLRIを広告 ▪ EVPN NLRI Typeにより様々な情報を広告 • Type1: Multihoming⽤情報 • Type2: MAC/IP • Type3/4: BUM転送⽤の情報 • L3VPN: VPNv4/VPNv6 ◦ VPNラベルとVPN Prefixの組み合わせを広告 ▪ VPNラベルはper-VRFやper-CEに⽣成 VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 VRF default VRF A VRF B VRF A VRF B VRF default VPN網 Customer A Customer B Customer A Customer B 192.168.0.0/24 192.168.0.0/24 192.168.0.0/24 192.168.0.0/24 Interface A Interface A Interface B Interface B MPLS-VPN(コントロールプレーン)
  67. © NTT Communications Corporation All Rights Reserved. 74 MPLS-VPN(データプレーン) •

    L2VPN/L3VPN共に識別のためVPNラベルを利⽤する ◦ MPLSではLabel、SRv6ではEnd.DTやEnd.DX系のFunctionが相当 Customer A Customer B Customer A Customer B SR domain Customer Aの 経路表 Customer B の経路表 VRF A RD: 65000:100 VRF B RD: 65000:200 Customer A の経路表 Customer B の経路表 VRF A RD: 65000:100 VRF B RD: 65000:200 Node 2 Node 3 24001 Payload 16004 HeadendはVPNラベルとTEラベルを付与して転送 24001 Payload TailendはVPNラベルに従いL2/L3を識別 (例はper-VRFなL3VPN) VPNラベル TEラベル Node 1 Node 4
  68. © NTT Communications Corporation All Rights Reserved. 75 • EVPN

    (Ether-VPN) ◦ MP-BGPを利⽤したL2VPNの実現⽅式。RFC7432, 7623等で提案 ◦ EVPN Virtual Instance (EVI)と呼ばれるインスタンスごとに識別 ◦ 特徴︓ ▪ データプレーンを問わない実装。柔軟にネットワーク設計が可能 ▪ 拠点間トラフィックが不要なMACアドレス学習 • EVIとMAC-VRFが1:1で対応し、BGPを経由して学習 Control Plane (VPN) Data Plane MP-BGP (EVPN)によるMACアドレス伝搬 MPLS(RFC7432), PBB (RFC7623), VXLAN(RFC8365)等による転送 EVI EVI EVIをD-planeの経路と紐付けて利⽤する Router Router EVPN
  69. © NTT Communications Corporation All Rights Reserved. 76 • OverlayプロトコルのTransport部分の作成

    ◦ この部分のプロトコルはEVPNとは関係なく、なんでも良い ▪ SR-MPLS/SRv6: IGPによるSID配布&SR Policy(Segment List)設定 ▪ 従来のMPLS:LDPによるラベル配布&RSVP-TEによるシグナリング ▪ その他VXLAN、PBBなど Customer A Customer B Customer A Customer B C-Plane (VPN) D-Plane C-Plane (LinkState) Node 1 Node 4 Node 2 Node 3 Transportの確保 (ID広告・TE Pathの構築など) EVPNによるL2VPN(コントロールプレーン動作: LinkState)
  70. © NTT Communications Corporation All Rights Reserved. 77 • MP-BGPによるMAC

    address Tableの共有 ◦ MP-BGPにより、Path attribute Type14 (AFI25, Sub-AFI70)でEVPN情報を伝搬 ◦ EVIごとにMac-Addr Tableを共有 Customer A Customer B Customer A Customer B C-Plane (VPN) D-Plane C-Plane (LinkState) Node 1 Node 4 Node 2 Node 3 MP-BGP (EVPN)によるMACアドレス伝搬 EVI A EVI B EVI A EVI B EVPNによるL2VPN(コントロールプレーン動作: VPN)
  71. © NTT Communications Corporation All Rights Reserved. 78 • EVIに紐づいたOverlay

    Transportを利⽤し転送 ◦ これまでのコントロールプレーン動作の結果により、EVIとOverlay Transportが紐づく ◦ EVIに対応するを経路を選択し転送を実施 Customer A Customer B Customer A Customer B C-Plane (VPN) D-Plane C-Plane (LinkState) Node 1 Node 4 Node 2 Node 3 EVI A EVI B EVI A EVI B SR domain EVPNによるL2VPN(データプレーン動作)
  72. © NTT Communications Corporation All Rights Reserved. 79 • 各VRFが持つ経路のPrefixと対応するVPNラベルを広告

    ◦ MPLSやSR等、何らかのD-planeと紐付けて⽤いる Customer A Customer B Customer A Customer B C-Plane (VPN) D-Plane C-Plane (LinkState) Node 2 Node 3 MP-BGP (VPNv4/VPNv6)によるPrefix広告 Customer Aの 経路表 Customer B の経路表 VRF A VRF B Customer A の経路表 Customer B の経路表 VRF A VRF B Node 1 Node 4 VPNv4/VPNv6(コントロールプレーン動作: VPN)
  73. © NTT Communications Corporation All Rights Reserved. 80 • L2/L3VPNを実現するWell-known

    Fuctnionが提案済み ◦ 対象となるFunctionは、DecapsulationのDが名前に含まれる 出典: Segment Routing チュートリアル 鎌⽥ 徹平・⽵⽥ 直哉 (シスコシステムズ合同会社) https://www.janog.gr.jp/meeting/janog40/program/sr SRv6によるVPN(データプレーン)
  74. © NTT Communications Corporation All Rights Reserved. 81 • SRヘッダを除去&指定されたL2

    Interfaceへ送出 ◦ L2VPNを実現するWell-known Fuctnion Customer A Customer B Customer A Customer B SR domain ① Node 1はSRv6のヘッダをつけ転送 (Node 2のEndとNode 4 en0のEnd.DX2を付与) ③ Node 4は VRF defaultでEnd.DX2を実施 拡張ヘッダを外し、en0から送出 ④ Customer Aへ到着 L2VPNに成功 IPv6 Extension Headerのみ抜粋 (太字が先頭要素) IPv6 Extension Headerのみ抜粋 (太字が先頭要素) ② Node 2はEnd処理を実施 Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:0:2:0:0 Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:0:2:0:0 en0 en1 Locator: fd00:0:0:1::/64N ode 1 Locator: fd00:0:0:4::/64 Node 4 Locator: fd00:0:0:2::/64 Node 2 Locator: fd00:0:0:3::/64 Node 3 SRv6によるL2VPN(End.DX2)
  75. © NTT Communications Corporation All Rights Reserved. 82 • SRヘッダを除去&指定されたVRF

    TableをLookupし転送 ◦ per-VRF L3VPNを実現するFunction Customer Aの 経路表 Customer B の経路表 VRF A RD: 65000:100 VRF B RD: 65000:200 Customer A の経路表 Customer B の経路表 VRF A RD: 65000:100 VRF B RD: 65000:200 Customer A Customer B Customer A Customer B Locator: fd00:0:0:2::/64 Node 2 Locator: fd00:0:0:3::/64 Node 3 ① Node 1はSRv6のヘッダをつけ転送 (Node 2のEndとNode 4 VRF SRv6のEnd.DT6を付与) ③ Node 4は VRF defaultでEnd.DT6を実施 拡張ヘッダを外し、VRF AをLookup ④ VRF Aの通りにCustomer Aへ送出 per-VRF L3VPNに成功 SR domain IPv6 Extension Headerのみ抜粋 (太字が先頭要素) IPv6 Extension Headerのみ抜粋 (太字が先頭要素) VPN網の 経路表 VRF default VPN網の 経路表 VRF default Locator: fd00:0:0:1::/64N ode 1 Locator: fd00:0:0:4::/64 Node 4 ② Node 2はEnd処理を実施 Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:0:6:0:a Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:0:6:0:a SRv6によるVPN(End.DT4, End.DT6)
  76. © NTT Communications Corporation All Rights Reserved. 83 • SRヘッダを除去&指定されたNexthopへ送出

    ◦ per-CE VPNを実現するWell-known Fuctnion Customer A Customer B Customer A Customer B Locator: fd00:0:0:1::/64N ode 1 Locator: fd00:0:0:4::/64 Node 4 Locator: fd00:0:0:2::/64 Node 2 Locator: fd00:0:0:3::/64 Node 3 CE 4 CE 3 CE 2 CE 1 IPv6 Extension Headerのみ抜粋 (太字が先頭要素) Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:1:6:0:a IPv6 Extension Headerのみ抜粋 (太字が先頭要素) Segment List [1]: fd00:0:0:2::1 Segment List [0]: fd00::4:1:6:0:a ① Node 1はSRv6のヘッダをつけ転送 (Node 2のEndとNode 4でCE3を⽰すEnd.DX6を付与) ③ Node 4は VRF defaultでEnd.DX6を実施 拡張ヘッダを外し、CE3へ送出 ④ Customer AのCE3に到着 per-CE L3VPNに成功 ② Node 2はEnd処理を実施 SR domain SRv6によるVPN(End.DX4, End.DX6)
  77. © NTT Communications Corporation All Rights Reserved. 84 • VPN:

    インターネット上に仮想的な専⽤線を⽤意する技術 ◦ 端点の接続レイヤによりL2VPNとL3VPNが存在 • SR-MPLSに関連するVPN: MPLS-VPNの仕組みを活⽤ • SRv6のVPN: SRv6 Functionで実現 • C-Plane(VPN): EVPN・VPNv4/VPNv6 ここまでのまとめ(VPN)
  78. © NTT Communications Corporation All Rights Reserved. 86 • MP-BGP

    (Multi Protocol BGP) ◦ 本来IPv4 unicastしか送れなかったBGPを、他のプロトコル情報を送れるように拡張 ▪ IPv6情報が扱えるのもこの拡張による ◦ BGP Path Attribute Type14, 15, 16により、各プロトコルの情報を広告 ▪ 特にAttribute Type14や15に含まれるAddress Familyの概念が重要 • VPNに限らず、現代のルーティングに携わるならMP-BGPは必修︕ ◦ 様々な情報をPath AttributeとNLRI Address Familyで伝える概念を理解、活⽤しよう︕ Multi Protocol BGP (MP-BGP)
  79. © NTT Communications Corporation All Rights Reserved. 87 • Type

    14: Multiprotocol Reachable NLRI ◦ 到達可能経路。下記の3つの情報が含まれる ▪ Address Family (プロトコル種別。AFIとSub-AFIからなる), Next Hop, NLRI (経路情報) • Type 15: Multiprotocol Unreachable NLRI ◦ 無効な経路。受け取ったルータは該当経路を削除する。下記の3つの情報が含まれる ▪ Address Family, Unfeasible Routes Length(Withdraw Rulesの⻑さ), Withdraw Rules(削除対象の経路) • Type 16: Extended Communities ◦ BGP Communityの拡張版 ▪ 2byte:2byteのフィールドなBGP Communityに対し、4byte:2byteや2byte:4byteのフィールドを使⽤可能 ▪ VRFのRoute TargetやColor、RedistibuteされたOSPFのDomain ID(同⼀エリアを識別するID)などを伝搬可能 Attribute Type 14/15/16
  80. © NTT Communications Corporation All Rights Reserved. 88 BGPパス属性(Path Attribute)

    • 主に以下のような属性があり、ベストパス選択の際に使⽤される • SRをやるなら⾚い2つが特に重要 Type Code Path Attribute Attribute Type コメント 1 ORIGIN Well-Known mandatory 2 AS_PATH Well-Known mandatory 3 NEXT_HOP Well-Known mandatory 4 MULTI_EXIT_DISC Optional non-transitive 5 LOCAL_PREF Well-Known discretionary よく使う。例えばMulti-Exitな構成でのASBRの選択とか 6 ATOMIC_AGGREGATE Well-Known discretionary 7 AGGREGATOR Optional transitive 8 COMMUNITY Optional transitive 9 ORIGINATOR_ID Optional non-transitive 10 CLUSTER_LIST Optional non-transitive 14 MP_REACH_NLRI Optional non-transitive 様々な種類の経路の広告。Address Familyで識別する 15 MP_UNREACH_NLRI Optional non-transitive 16 EXTENDED_COMMUNITIES Optional transitive Route-Targetの広告、Colorの広告
  81. © NTT Communications Corporation All Rights Reserved. 89 (参考)パス属性の種類(Attribute Type)

    • パス属性は識別・伝搬の扱いにより4つに分類 Attribute Type 意味 Well-known mandatory 全BGPルータで識別(処理)する必要あり、全てのUPDATEに含まれる Well-known discretionary 全BGPルータで識別(処理)する必要あり、UPDATEに含まれるかは任意 Optional transitive 識別(処理)するかどうかはBGPルータの任意 ただし識別できない場合でも、ネイバーに対してこのパス属性をつけたまま伝搬させる Optional non-transitive 識別(処理)するかどうかはBGPルータの任意 識別できない場合、ネイバーに対してこのパス属性を伝搬しない
  82. © NTT Communications Corporation All Rights Reserved. 90 AFIとSub-AFI •

    AFI (Address Family Information) ◦ https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xhtml Sub-AFI Description 1 Unicast 2 Multicast 70 BGP EVPNs 71 BGP-LS 128 MPLS-labeled VPN address AFI Description 1 IPv4 2 IPv6 25 AFI for L2VPN information 16388 BGP-LS • Sub-AFI ◦ https://www.iana.org/assignments/safi-namespace/safi-namespace.xhtml 例︓AFI: 1, Sub-AFI: 1 = IPv4 Unicast AFI: 1, Sub-AFI: 128 = L3VPN IPv4 Unicast AFI: 25, Sub-AFI: 70 = L2VPN EVPN
  83. © NTT Communications Corporation All Rights Reserved. 91 Customer B

    Customer A VPNv4 / VPNv6 • MP-BGPを利⽤したL3VPN技術(RFC4346 / RFC4659) ◦ AFI: 1 or 2、SAFI: 128 ◦ VPN Prefix/Route-Targetと対応するVPN Labelを広告 ◦ SRv6対応: https://datatracker.ietf.org/doc/html/draft-ietf-bess-srv6-services AS65000 VPN網 Customer A Customer B Customer A の経路表 Customer B の経路表 Customer A の経路表 Customer B の経路表 VPN網の 経路表 VPN網の 経路表 Prefix: 192.168.0.0, RD: 65000:100 Prefix: 192.168.0.0, RD: 65000:200 R01のBGPテーブル Prefix: 192.168.1.0, RD: 65000:100 Prefix: 192.168.1.0, RD: 65000:200 Prefix: 192.168.1.0, RD: 65000:100 R02のBGPテーブル R02 R01 BGP UPDATE VRF A RD: 65000:100 Export RT: 65000:100 VRF A RD: 65000:100 Import RT: 65000:100 VRF B RD: 65000:200 Export RT: 65000:200 VRF default VRF B RD: 65000:200 Import RT: 65000:200 RT: 65000:100 Prefix:192.168.0.0/24 ②受信側はimportルールに従い RTに対応するVRFに格納 ①送信側は、相⼿に格納して欲しい VRFを⽰すRTをつけUPDATEを広告 VRF default 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24
  84. © NTT Communications Corporation All Rights Reserved. 92 EVPN •

    MP-BGPを利⽤したL2VPN技術(RFC7432) ◦ AFI: 25、SAFI: 70 ◦ VPNラベルとEVPN NLRIを広告 ▪ Route-Type 1: Multihoming⽤情報 ▪ Route-Type 2: MAC/IP ▪ Route-Type 3/4: BUM転送⽤の情報 ▪ Route-Type 5: L3VPN(RFC9136) ◦ SRv6対応: https://datatracker.ietf.org/doc/html/draft-ietf-bess-srv6-services Control Plane (VPN) Data Plane MP-BGP (EVPN)によるMACアドレス伝搬 MPLS(RFC7432), PBB (RFC7623), VXLAN(RFC8365)等による転送 EVI EVI EVIをD-planeの経路と紐付けて利⽤する Router Router
  85. © NTT Communications Corporation All Rights Reserved. 93 BGP-LS BGP-LS(BGP

    Link State) • MP-BGPを利⽤したLink State共有技術(RFC7752) ◦ AFI: 16388、SAFI: 71 ◦ IGPで収集したLink-StateやTE情報などをBGPで配信 ▪ OSPF/IS-ISどちらのLink Stateにも対応 ▪ PCE等のコントローラへのLink State配布や、マルチAS環境でIGPを超えたLink-State共有などを実現 LSDB/TED IS-IS / OSPF daemon BGP daemon LinkState の収集 TEDの Export Router TED Link Stateの共有先 (PCE等のコントローラ・ 他IGPドメインのルータ等) BGP daemon 受信した LinkState IGPで収集したLink State情報や、付随するTE情報を格納したデータベースをTED(Traffic Engineering Database)と呼ぶ IGPのLSDBとまとめて⼀つのDBとして実装されることが多い。下記はJunosの例 https://www.juniper.net/documentation/jp/ja/software/junos/bgp/topics/topic-map/link-state-distribution-using-bgp.html MP-BGPでLinkstateを広告 (AFI 16388, SAFI 71/72)
  86. © NTT Communications Corporation All Rights Reserved. 94 (参考)BGP-LU(BGP Labelled

    Unicast) • MPLSラベルをIPv4/v6のprefixと共に伝達する技術(RFC8277) ◦ AFI: 1 or 2、SAFI: 4 ◦ BGP経由でラベルを伝達することでMulti-ASなMPLSのLSPを作成できる ◦ RFC8669でSR向けに拡張 ▪ 異なるASのSIDを学習可能 画像: https://www.noction.com/blog/bgp-labeled-unicast-bgp-lu わかりやすい説明: https://y-network.jp/2020/07/15/segment-routing-011/#toc2
  87. © NTT Communications Corporation All Rights Reserved. 95 AS65000 Color

    Extended Community • BGPで広告する経路にColorをつける概念 ◦ IP Unicast経路やVPN経路など、任意の経路に付与可能 ◦ ColorベースでのTEなどに利⽤ Customer A Customer B Customer A Customer B Node 2 Node 3 MP-BGP (VPNv6)によるPrefix伝搬 RT: 65000:100 Prefix:192.168.1.0/24 Color: 100 Customer A の経路表 Customer B の経路表 Customer A の経路表 Customer B の経路表 VRF A RD: 65000:100 Import RT: 65000:100 VRF A RD: 65000:100 Export RT: 65000:100 VRF B RD: 65000:200 Import RT: 65000:200 VRF B RD: 65000:200 Export RT: 65000:200 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 Node1は受信した経路に対し、 事前に定義されたper-ColorなTEポリシーを適⽤ Node 1 Node 4 通常、ポリシーはEndpointベースに定義する IPv4/v6 Dual StackにUnderlayを構成した場合は CO bitを設定することではEndpointに関わらずポリシーを適⽤可能 SR domain
  88. © NTT Communications Corporation All Rights Reserved. 96 Customer B

    Customer A AS65000 • Route-Target (RT) ◦ 経路広告時に、相⼿に経路を識別してもらうために使⽤する識別⼦ ◦ 各ルータは、受信した経路のRTを参照し格納先のVRFを決定するimportルールを定義 ▪ ⼀般的には、経路につけるRTは対応するVRFのRDと同じ値にすることが多い ▪ BGP UPDATEを受信したルータは、import設定に従ってRTに対応するVRFに格納 VPN網 Customer A Customer B Customer A の経路表 Customer B の経路表 Customer A の経路表 Customer B の経路表 VPN網の 経路表 VPN網の 経路表 Prefix: 192.168.0.0, RD: 65000:100 Prefix: 192.168.0.0, RD: 65000:200 R01のBGPテーブル Prefix: 192.168.1.0, RD: 65000:100 Prefix: 192.168.1.0, RD: 65000:200 Prefix: 192.168.1.0, RD: 65000:100 R02のBGPテーブル R02 R01 BGP UPDATE VRF A RD: 65000:100 Export RT: 65000:100 VRF A RD: 65000:100 Import RT: 65000:100 VRF B RD: 65000:200 Export RT: 65000:200 VRF default VRF B RD: 65000:200 Import RT: 65000:200 RT: 65000:100 Prefix:192.168.0.0/24 ②受信側はimportルールに従い RTに対応するVRFに格納 ①送信側は、相⼿に格納して欲しい VRFを⽰すRTをつけUPDATEを広告 VRF default 192.168.0.0/24 192.168.1.0/24 192.168.0.0/24 192.168.1.0/24 Route-Target(再掲)
  89. © NTT Communications Corporation All Rights Reserved. 97 • IPv4以外の情報も送れるように拡張されたBGP

    ◦ Path Attributeと、NLRIに紐づくAFI/Sub-AFIで様々な情報を共有 ◦ 今までに出たVPNv4/VPNv6やEVPN、BGP-LSなどもMP-BGPで送信される • VPNに限らず、現代のルーティングに携わるならMP-BGPは必修︕ ◦ 様々な情報をPath AttributeとNLRI Address Familyで伝える概念を理解し、活⽤しよう︕ ここまでのまとめ(MP-BGP)
  90. © NTT Communications Corporation All Rights Reserved. 99 • ネットワークの持つ機能を役割ごとに分離し扱う概念

    ◦ データプレーン︓転送機能 ◦ コントロールプレーン︓経路共有。SR的にはさらに3種類の役割が考えられる ▪ Control Plane (LinkState): オーバレイの構築(Node SIDとTE情報の共有) ▪ Control Plane (VPN): オーバレイ上のVPNの構築(VPN経路とVPNラベルの共有) ▪ Control Plane (Policy): ポリシーの適⽤(Segment Listの作成と配布) PE P Control Plane (VPN) Data Plane 役割︓オーバーレイ上のVPNの構築 (BGP Prefix-SIDの広告) プロトコル︓BGP(VPNv4/VPNv6/EVPN等) 役割︓パケットの転送 プロトコル︓MPLS, IPv6 PE SID・TE情報の共有 パケットの転送 Control Plane (LinkState) Control Plane (Policy) PCE 役割︓経路の設定(Segement Listの作成と配布) プロトコル︓BGP-LS(トポロジ吸い上げ) PCEP(SegmentListの適⽤) ポリシーの適⽤ VPNの構築 役割︓オーバーレイの構築 (Node SID/Adjacency SIDの伝搬) プロトコル︓IS-IS, OSPF, BGP-LS(Multi-AS等の場合) データプレーン / コントロールプレーン(再掲)
  91. © NTT Communications Corporation All Rights Reserved. 100 • PCE(Path

    Computation Element) ◦ 中央集権的にMPLS等の経路計算を実⾏するノード。RFC5540、8231、8664などで提案 ▪ 複雑なポリシーの適⽤や経路計算、発⾏済みのLSP管理などを実現 ▪ 遅延、トラフィック分散、Affinity制約などの複雑なTEの実現、SDN的なアプローチ ▪ BGPを収容するノードとして、ルートリフレクタと相乗りさせることも可能 ▪ 経路を受け取るノードはPCC(Path Computation Client)と呼ぶ • 図的には分かれているが、PCEとPCCは同じノードにもできる Router (PCC) Router Router (PCC) PCE LinkStateの共有 Path情報の伝達 Path情報(MPLSではLSP)の計算 経路⽣成時の処理 トポロジ変更時の処理 (BGP Triggered Update) PCE
  92. © NTT Communications Corporation All Rights Reserved. 101 • SR

    PCEの動作は⼤きく2段階に分かれる ◦ それぞれの段階では⽤いるプロトコルも異なる ◦ トポロジ 情報の収集を⾏う段階(BGP-LS) ◦ 経路計算結果を⾏う段階(PCEP & PCE内部での経路計算) C-Plane (Policy) SR PCEの動作 C-Plane (VPN) D-Plane C-Plane (LinkState) PCE PCC TED Policy TEDへのLinkState伝達 (BGP-LS) トポロジ/TE情報共有処理 トポロジ変更時の BGP-LS Triggered Update Segment List発⾏処理 オンデマンドなSegment List要求 CSPFによるSegment Listの計算 経路計算 結果 (PCEP) 経路計算 要求 (PCEP)
  93. © NTT Communications Corporation All Rights Reserved. 102 • TED(Traffic

    Engineering Database)︓トポロジ情報を格納するデータベース ◦ LSDBから⽣成される。リンク/ノードやSID等の他、TE metricや遅延も⼊る • PCEP(PCE Communication Protocol)︓PCE-PCC間を接続するプロトコル • CSPF(Constrained SPF)︓制約付きShortest Path First ◦ Policyに基づき、帯域や遅延優先、Disjoint-path等の制約を満たす経路を計算 C-Plane (Policy) SR PCEの⽤語 PCE PCC TED Policy トポロジ/TE情報共有処理 トポロジ変更時の BGP-LS Triggered Update Segment List発⾏処理 オンデマンドなSegment List要求 CSPFによるSegment Listの計算 C-Plane (VPN) D-Plane C-Plane (LinkState) PolicyはPCC側が持ち、 PCReqに⼊れてリクエストする設計もある TEDへのLinkState伝達 (BGP-LS) 経路計算 結果 (PCEP) 経路計算 要求 (PCEP)
  94. © NTT Communications Corporation All Rights Reserved. 103 • PCE

    Communication Protocol ◦ RFC5440で提案された、PCE-PCC間を接続するプロトコル ▪ TCP port 4189を利⽤ ▪ MPLS/RSVP-TE環境のPCEに向け考案された PCEP 画像: https://www.slideshare.net/TakuyaMiyasaka/pce-mplssdn PCE PCE
  95. © NTT Communications Corporation All Rights Reserved. 104 • 発⾏済みのパスを管理するかどうかで⼆種類に分類

    • Stateless PCE: 発⾏済みのLSP/Segment Listを管理しないPCE ◦ PCReqに対応した経路を発⾏し、PCRepを返すだけ • Stateful PCE: 発⾏済みのLSP/Segment Listを管理するPCE ◦ 経路変更などが⽣じた際、PCE側からPCCに能動的に経路変更が可能(能動性の有無によりActiveとPassiveに分類) ◦ 既存のLSPの報告(PCRpt)、既存LSPの経路変更(PCUpd)、新規LSPの確⽴(PCInitiate) ◦ ポータル等と組み合わせ、発⾏済みLSPの可視化等が可能 Stateless PCEとStateful PCE 画像: https://www.slideshare.net/TakuyaMiyasaka/pce-mplssdn PCE
  96. © NTT Communications Corporation All Rights Reserved. 105 (参考)SRの帯域保証について •

    SRのIGP機能だけではRSVP-TEのような帯域保証はできない ◦ 帯域を確保するシグナリングプロトコルを利⽤しないため • Stateful PCE機能を備えたコントローラを⽤いることで可能となる ◦ 既存Segment Listの情報を管理することで帯域を管理 ◦ Telemetry等と組み合わせた機器情報管理と相性 • PCEを使わない場合の帯域保証も提案 ◦ SRでもRSVP-TEのような仕組みを使う ▪ https://datatracker.ietf.org/doc/html/rfc8403
  97. © NTT Communications Corporation All Rights Reserved. 106 • 中央集権的に経路計算を実⾏するノード

    ◦ 複雑なポリシーの適⽤や経路計算、発⾏済みのLSP管理などを実現 ◦ 遅延、トラフィック分散、Affinity制約などの複雑なTEの実現、SDN的なアプローチ ◦ Stateful PCEによる発⾏済みのパスの管理や、可視化との相性、マルチドメインの集中管理 • → 集中的な網の管理や複雑な経路計算などに威⼒を発揮 Router (PCC) Router Router (PCC) PCE LinkStateの共有 Path情報の伝達 Path情報(MPLSではLSP)の計算 経路⽣成時の処理 トポロジ変更時の処理 (BGP Triggered Update) ここまでのまとめ(PCE)
  98. © NTT Communications Corporation All Rights Reserved. 108 FRR /

    TI-LFA • FRR(Fast Reroute) ◦ Backup-Pathを⽤意し、障害時に50ms未満のLocal Repairを実現 • TI-LFA(Topology-Independent Loop-Free Alternate) ◦ FRRの実現⼿法の⼀つ。トポロジを問わずループフリーなBackup-Pathを⽣成 ▪ Qノード、Pノードを選出し、P→Qノードを通るよう迂回路を⽣成 ▪ IGPでSID込みのトポロジ共有をするSRとの親和性 画像: https://www.netone.co.jp/knowledge-center/blog-column/knowledge_takumi_121/
  99. © NTT Communications Corporation All Rights Reserved. 109 Service Function

    Chaining • Service Function Chaining ◦ TEの応⽤技術の⼀つ ▪ https://datatracker.ietf.org/doc/html/rfc7665 ◦ NW上の機能を特定の順番でつなぎ、サービスとして提供する技術 ▪ ある通信に付加価値を提供することが可能 ◦ ⽇本語ではサービスチェイニングと呼ぶことが多い CGN Firewall Optimizer DPI Dst. Service Chain B Service Chain A Customer A Customer B
  100. © NTT Communications Corporation All Rights Reserved. 110 SRv6 SFC

    Proxy • SRv6⾮対応なNetwork Functionを利⽤するための技術 ◦ SFF(Service Function Forwarder): Fucntionにパケットを転送、戻りパケットを受信するノード ◦ SR Proxy: SRv6⾮対応なノードに対しパケットを転送、戻りパケットをSRv6に再送信するノード ▪ SRv6ではSFFと機能を兼ねる設計が可能 • SRv6ではEnd.A系のFunctionによりProxyを実現 ◦ https://datatracker.ietf.org/doc/draft-ietf-spring-sr-service-programming/ ▪ SR-Unaware対応のため、Static / Dynamic / Masquerading の3⽅式が提案 PE 1 SR domain SFF / SR Proxy PE 2 Function End.AM 1. Segment Leftを1つ進め(End) Destination AddressをSegment List [0](末尾)で上書き 3. Destination AddressをSegment List [Segment Left] (本来の先頭要素)で上書き、SRv6による転送を再開 2. Network Functionは正しく最終的なDestinationが 指定されたIPv6パケットを受け取る(拡張ヘッダは無視)
  101. © NTT Communications Corporation All Rights Reserved. 111 • EPE

    (Egress Peer Engineering) ◦ 対向ASへの経路が複数ある場合にそのどちらかを選択するための技術 • SRでのEPE ◦ https://datatracker.ietf.org/doc/html/rfc9086 ◦ Peer Adj SID / Peer Node SIDで対向を識別 EPE SR domain PE/ASBR1 P1 ASBR β AS β AS α PE1 PE/ASBR2 P2 ASBR γ AS γ 24001 Payload Segment List Label Action Next 24000 POP ASBR β 24001 POP ASBR γ ... ... ... PE/ASBR 1のSID Table(⼀部) eBGP Peerごとに発⾏された EPE Peer Adj SIDで処理 EPEでASBR γ に送出 ASBR γ を⽰すEPEラベルを 付与し送信
  102. © NTT Communications Corporation All Rights Reserved. 112 • Multi-ASにTEをする場合、下記の3種類が重要となる

    a. AS内のTE(SR-TE) ▪ Multi-ASなTEメニューのため、より効率的かつ柔軟なTEをしたくなる ▪ TE Metric/遅延ベースなFlex-Algo等との組み合わせ、IGP MetricのOverride... b. ASBR(Egress)の選択 c. Egress Peerの選択 ▪ 同⼀Prefixに対して複数の経路を持ちたい → RR環境ではBGP add-pathなども必要 (補⾜)Egress/Egress Peer周りのTEについて SR domain PE/ASBR1 P1 ASBR β1 AS β AS α PE1 PE/ASBR2 P2 / RR ASBR β2
  103. © NTT Communications Corporation All Rights Reserved. 113 (参考)SR OAM

    • SR Operation, Administration, and Maintenance ◦ SR網の運⽤、管理、保守を⾏うための技術群 ▪ https://datatracker.ietf.org/doc/html/rfc8403 ▪ https://datatracker.ietf.org/doc/html/draft-ietf-spring-sr-oam-requirement ◦ MPLS LSP Ping/Tracerouteなどが含まれる ◦ 疎通性の確認や障害検知など 画像: https://www.cisco.com/c/ja_jp/td/docs/iosxr/ncs560/segment-routing/70x/b-segment-routing-cg-70x-ncs560/b-segment-routing-cg-70x-ncs560_chapter_01010.html
  104. © NTT Communications Corporation All Rights Reserved. 114 (参考)Performance Measurement

    • LSPの接続性や遅延などを計測 ◦ https://datatracker.ietf.org/doc/html/draft-gandhi-spring-stamp-srpm • TWAMP(Two-Way Active Measurement Protocol) ◦ https://datatracker.ietf.org/doc/html/rfc5357 ◦ タイムスタンプ付きのUDPパケットを利⽤し、遅延を計測するためのプロトコル ▪ 通常のTWAMPの他に、Client-Serverを省略したTWAMP Lightも存在 ▪ 計測⼿法にはOne-way / Two-way / Loopbackの3種が存在 ◦ 計測結果はIGP / BGP-LSに載せて広告可能 ▪ Flex-Algoとの組み合わせ、Delay MetricのIGP計算スライスを作成するなど • P2P遅延とE2E遅延 ◦ P2P遅延: ある区間の遅延を計測する⼿法。IGPで集め、Metricとして利⽤ ◦ E2E遅延: ある経路の遅延を計測する⼿法。定義済みのSR Policyの評価など
  105. © NTT Communications Corporation All Rights Reserved. 115 (参考)SRv6のSID圧縮 •

    SID空間を効率的に使いたい要求 • 現在SRv6 SID Compression Design Teamを中⼼に議論中 ◦ https://datatracker.ietf.org/doc/html/draft-ietf-spring-compression-analysis ◦ https://datatracker.ietf.org/meeting/111/materials/slides-111-spring-srcomp-design-team-update ◦ 圧縮率、SRv6 SIDやSRHの互換性、テーブル、C-Planeなどに差異
  106. © NTT Communications Corporation All Rights Reserved. 116 • ASごとのリソース分離によるスケーラビリティ向上・新規ユースケースの創出

    ◦ 分散と集中のバランスを考慮したデザインが重要 ▪ Inter-AS Option、AS間のTEメニュー提供⽅法(RT/Color/BSID/EPE)など ▪ スケーラビリティと理想的なE2E TEのトレードオフ ▪ 既存網同⼠の相互接続によるサービス連携、リソースの有効活⽤ ▪ SR-MPLS-SRv6 Interworkなど、新たな価値の提供 • NTT Comの取り組み: https://mpls.jp/2021/presentations/20211101_MPLSJAPAN_NTTCOM_tajima_pub.pdf (参考)Multi-AS Segment Routing SR domain PE/ASBR1 P1 PE/ASBR3 AS β AS α PE1 PE/ASBR2 P2 PE/ASBR4 SR domain P3 P/SFF1 PE2 Function
  107. © NTT Communications Corporation All Rights Reserved. 117 • 企業間/AS間連携、Inter-DCなL2/L3VPN

    ◦ 複数の網を接続し、CustomerにL2/L3VPNを提供 • 5G Core/Access/MECの接続 ◦ 機能ごとのNW分離。SRのスライシングやFunctionはモバイルと好相性 • Service Function Chainingの提供 ◦ Public Cloud等の他ASと連携し、⼀連のサービスを提供 画像: https://pc.nanog.org/static/published/meetings/NANOG73/1659/20180626_Moyer_Segment_Routing_For_v1.pdf (参考)Multi-AS SRのユースケースの例
  108. © NTT Communications Corporation All Rights Reserved. 118 それぞれ⼀度読んでおくことをお勧めします •

    MPLSなど閉域網の技術全般: ◦ 閉域網接続の技術⼊⾨ ▪ https://www.slideshare.net/MasayukiKobayashi/ss-60985808 • SR全般: ◦ SRv6⼊⾨ ▪ https://enog.jp/wordpress/wp-content/uploads/2018/12/ENOG55_asama.pdf ◦ SRv6〜ネットワークプログラマビリティの実現〜 ▪ https://www.nic.ad.jp/ja/materials/iw/2019/proceedings/s04/s4-miyasaka.pdf ◦ Segment Routing | ゆるふわネットワーク: ▪ SR関連技術の概念をIOS-XRのコンフィグつきで解説 ▪ https://y-network.jp/category/segment-routing/ • PCE: ◦ PCE 〜MPLSネットワークのSDN化を本気で実現する"唯⼀の"⽅法 ▪ https://www.slideshare.net/TakuyaMiyasaka/pce-mplssdn 参考資料