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 閉域網のルーティング技術について
◦ 各ルータのポリシーに基づいた最短経路を経路表に格納 ◦ 宛先を元に送出先を決定 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による転送
◦ ⾳声通信は低遅延、動画は低ジッタ、ウェブは広帯域... ◦ 送信元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 より⾼度な経路制御の要求
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
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
◦ 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
◦ ポート番号 / 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 従来の経路制御技術が抱える課題
• 中間ノードのステート増加 ◦ 柔軟な経路制御を実現するためのルール増加 ▪ 宛先ポートやプロトコルなど、より細かい条件での経路制御の要求 ▪ 課⾦に基づいた送信元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が増加 従来の経路制御技術が抱える課題 - 中間ノードのステート増加
= 新たな経路追加/削除の度、中間ノードの操作が必要 ◦ 中間ノードの経路を更新し、新たな経路を⽣成する処理をシグナリングと呼ぶ • IGPの他にシグナリング専⽤プロトコルの管理・運⽤が必要 ◦ 管理・運⽤の煩雑化や学習コストの増加 → 中間ノードのステート増加と、煩雑なプロトコルがスケーラビリティの課題に A D B C X Z Y 従来の経路制御技術が抱える課題 - 経路追加/削除時の伝搬
◦ パケット⾃⾝が経路情報をもち、それに基づいて転送(= 経路を中間ノードで管理しない) ◦ 経路指定の⼿法に合わせ、ストリクト/ルーズの2種類が存在 • ストリクトソースルーティング ◦ 宛先までに経由するノード/リンクを全て指定する⼿法 ◦ 主なユースケース︓帯域保証 • ルーズソースルーティング ◦ 宛先と経由すべきノードのみを指定し、その間の経路は厳格に指定しない⼿法 ◦ 主なユースケース︓サービスチェイニング A D B C X Z Y Z Payload D B Z Payload C Loose Source Routing Strict Source Routing ソースルーティング
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の転送例
◦ 物理的な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 オーバレイネットワーク
◦ 既存の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)の流れ
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のデータプレーンの流れ
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
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
先頭ラベルは次のノードを⽰す ◦ あるノードの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 … … …
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
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拡張
(Virtual Private Network) ◦ ネットワーク上に仮想的な専⽤回線を構築する技術 ◦ 主な⽤途: 企業NW、DCなどの拠点間通信、外部から社内ネットワークのアクセス Customer A Customer B Customer A Customer B VPN A VPN B 何らかのネットワーク VPNとは
◦ 端点同⼠を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
• 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
(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
◦ 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(コントロールプレーン)
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
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)
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(データプレーン動作)
◦ 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)
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