10. SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 11
“Comcast and The Smarter Network with John Leddy”
Recorded at Segment Routing Field Day on June 21, 2016
https://techfieldday.com/appearance/comcast-presents-at-segment-routing-field-day/
Cable TV & ISP
“LinkedIn OpenFabric Project – Interop 2017”
https://www.slideshare.net/shawnzandi/linkedin-openfabric-project-interop-2017
Data Center
19. SRv6 basics
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 22
Segment Routing Header (SRH)
IPv6
Header
IPv6
Extension
Header
Payload
• Routing Type
• 4 (Segment Routing)
• Segments Left
• 次の Segment へのインデックス
(Pointer)
• エンドノードで減らされる
• Last Entry
• Segment List の最初のSegment
へのインデックス
• Segment List
• 最後~最初の順にエンコードされ
た Segment 列 (Segment List [0]
は最後に到達する Segment)
Reference: draft-ietf-6man-segment-routing-header
20. SRv6 basics
• Segment List: <S1, S2, S3>
• S1, S2, S3: 1st, 2nd, 3rd の segment
• IP Packet: (SA,DA) (S3, S2, S1; SL)
• SA, DA: Source, Destination Address
• SRH with SID list <S1, S2, S3>
• SL: Segments Left
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 23
SID List の記述方法
S1
S2
S3
SL
参照:“SRv6 Network Programming” Internet-Draft document
draft-filsfils-spring-srv6-network-programming
注:segment の順番が <...> と (...) で逆!!
21. SRv6 basics
“ノード” が持つ機能を “function” と呼び、
1ノードに複数のfunction(segment id)を持つことがある
• Transit function ⇒ SRHを付与(SRv6サポートしてる場合)
• パケットの宛先(DA)がノードのアドレスではない
• パケットの宛先(DA)がノードの “My Local SID Table” に載ってない
• (SRv6をサポートしてない)
• End function ⇒ 宛先(DA)に基づき処理する
• パケットの宛先(DA)がノードの “My Local SID Table” に載っている
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 24
End vs Transit function
22. SRv6 basics
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 25
Transit functions
Function Description
T Forwards the packet without inspecting the SRH
T.Insert Transit behavior with insertion of an SRv6 Policy
T.Encaps Transit behavior with encapsulation in an SRv6 policy
T.Encaps.L2 T.Encaps behavior of the received L2 frame
#1
#4
#2 #3
#5
挿入
カプセル化
2種類の
SRH付与方法
23. SRv6 basics
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 26
Transit functions (T.Insert)
a
#1
b #4
#2 #3
#5
d
c
IPv6 Payload
IPv6 PayloadSRH (SA:a, DA: #1)(d, #5, #3, #2, #1; SL=4)
Next SegmentDestination Host
(SA:a, DA: d)
24. SRv6 basics
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 27
Transit functions (T.Encaps)
IPv6 Payload
IPv6 PayloadSRH IPv6 (SA:b, DA: #4)(#3, #2, #4; SL=2)(SA:b, DA: c)
a
#1
b #4
#2 #3
#5
d
c
Next Segment
(SA:b, DA: c)
25. SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 28
SRv6 basics
Inline mode Encap mode
最終宛先は SID[0] 最終宛先はカプセル
化されたIPヘッダの中
パケット構造の例(Wireshark)
IP + SRH + ICMP IP + SRH + IP + ICMP
26. SRv6 basics
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 29
End functions (End)
End: 宛先(DA)を next segment が指すSIDで更新しパケットを転送
IPv6
IPv6 PayloadSRH
(SA:a, DA: #1)(d, #5, #3, #2, #1; SL=4)PayloadSRH
(SA:a, DA: #2)(d, #5, #3, #2, #1; SL=3)
a
#1
b #4
#2 #3
#5
d
c
Next Segment
27. SRv6 basics
• IS-IS Extensions to Support Routing over IPv6 Dataplane
• https://datatracker.ietf.org/doc/draft-bashandy-isis-srv6-extensions/
• BGP Link State extensions for IPv6 Segment Routing(SRv6)
• https://datatracker.ietf.org/doc/draft-dawra-idr-bgpls-srv6-ext/
• BGP Signaling of IPv6-Segment-Routing-based VPN Networks
• https://datatracker.ietf.org/doc/draft-dawra-idr-srv6-vpn/
• OSPFv3 Extensions for SRv6
• https://datatracker.ietf.org/doc/draft-li-ospf-ospfv3-srv6-extensions/
• LISP Control Plane for SRv6 Endpoint Mobility
• https://datatracker.ietf.org/doc/draft-rodrigueznatal-lisp-srv6/
• PCEP Extensions for Segment Routing leveraging the IPv6 data plane
• https://datatracker.ietf.org/doc/draft-negi-pce-segment-routing-ipv6/
• Protocol for Forwarding Policy Configuration (FPC) in DMM
• https://datatracker.ietf.org/doc/draft-ietf-dmm-fpc-cpdp/
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 30
SRv6 のコントロールプレーン
LISP: Locator/ID Separation Protocol
PCEP: Path Computation Element (PCE) Communication Protocol
ルーティングプロトコル
を用いた制御
コントローラー
を用いた制御
30. SRv6 Network Programmability
• draft-filsfils-spring-srv6-network-programming
• https://datatracker.ietf.org/doc/draft-filsfils-spring-srv6-network-programming/
• SRv6 Network Programming および関連した Function の大元となる文書
• draft-ietf-dmm-srv6-mobile-uplane
• https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/
• SRv6をモバイル網で利用する時に必要な Function およびユースケースを記載
• GTP から SRv6 へマイグレーションする際のシナリオを含む
• draft-xuclad-spring-sr-service-programming
• https://datatracker.ietf.org/doc/draft-xuclad-spring-sr-service-programming/
• Service Chaining 向けの Function を記載
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 33
Function の定義されている場所
31. SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 34
SRv6 Network Programmability
End Endpoint
Xconnect End.X Endpoint with Layer-3 cross-connect
Table Lookup End.T Endpoint with specific IPv6 table lookup
Search End.S Endpoint in search of a target in table T
Decaps
+ Xconnect
End.DX6 Endpoint with decapsulation and IPv6 crossconnect
End.DX4 Endpoint with decapsulation and IPv4 crossconnect
End.DX2 Endpoint with decapsulation and Layer-2 crossconnect
End.DX2V Endpoint with decapsulation and VLAN L2 table lookup
Decaps
+ Table Lookup
End.DT6 Endpoint with decapsulation and specific IPv6 table lookup
End.DT4 Endpoint with decapsulation and specific IPv4 table lookup
End.DT46 Endpoint with decapsulation and specific IP table lookup
End.DT2U Endpoint with decapsulation and unicast MAC L2 table lookup
End.DT2M Endpoint with decapsulation and L2 table flooding
Binding
End.B6[.Red] Endpoint bound to an SRv6 policy
End.B6.Encaps[.Red] Endpoint bound to an SRv6 encapsulation policy
End.BM Endpoint bound to an SR-MPLS policy
T Transit behavior
Insert
T.Insert Transit with insertion of an SRv6 Policy
T.Insert.Red Transit with reduced insertion of an SRv6 Policy
Encaps
T.Encaps Transit with encapsulation in an SRv6 Policy
T.Encaps.Red Transit with reduce encaps in an SRv6 Policy
T.Encaps.L2 Transit with encapsulation of L2 frames
T.Encaps.L2.Red Transit with reduce encaps of L2 frames in an SRv6 Policy
3) draft-ietf-dmm-srv6-mobile-uplane-02
Mobile
End.MAP Endpoint function with SID mapping
End.M.GTP6.D
Endpoint function with decapsulation from
IPv6/GTP tunnel
End.M.GTP6.E
Endpoint function with encapsulation for
IPv6/GTP tunnel
End.M.GTP4.E
Endpoint function with encapsulation for
IPv4/GTP tunnel
End.Limit Rate Limiting function
T.M.Tmap
Transit behavior with tunnel decapsulation
and mapping an SRv6 Policy
Application
End.AM SRv6 masquerading proxy
End.AD SRv6 dynamic proxy segments
End.AS SRv6 dynamic Static proxy segments
End.AN SR-aware function (native)
1) draft-filsfils-spring-srv6-network-programming-05
2) draft-xuclad-spring-sr-service-programming-00
List of SRv6 functions
2018年10月18日 現在
32. SRv6 Network Programmability (プログラマビリティの利用例)
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 35
SRv6 for Mobile User Plane
ソフトバンク 松嶋聡 (2018年) IETF(と3GPP)でのモバイル・5G関連活動 Slide 20
https://www.isoc.jp/wiki.cgi?action=ATTACH&file=s4%2Dmatsushima%2Epdf&page=IETF100Update
SRv6 ネットワークプログラマビリティを利用した
モバイルネットワークのシンプル化
33. SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 36
SRv6 Network Programmability (プログラマビリティの利用例)
SRv6 Functions in “5.3.1. Interworking with IPv6 GTP”
(Encap GTP) End.M.GTP6.D End (PSP)
End
End.DT6
(Decap GTP)
End.M.GTP6.E
End
End
T.Encaps.Red
Uplink
Downlink
SRv6 と GTP の
マッピング(変換) SRv6 有無の変換
インターネット等
モバイル端末
Assuming User Packet (A,Z) is IPv6
PSP: Penultimate Segment Pop
Segment Routing IPv6 for Mobile User Plane
https://tools.ietf.org/html/draft-ietf-dmm-srv6-mobile-uplane-02
2018/04/20 | ONOS/CORD meetup in Tokyo
“proto-typing new protocol with P4, SRv6 for Mobile User Plane”
https://www.slideshare.net/kentaroebisawa/srv6-mobile-user-plane-p4-prototype
P4による実装や
パケットレベルの解説
43. SRv6 の実装例(オープンソース)
• Kernel network stack (4.10 and later)
• http://www.segment-routing.org/
• By “IP Networking Lab” of Université Catholique de Louvain, Louvain-la-Neuve,
Belgium
• srext: Linux kernel module
• https://netgroup.github.io/SRv6-net-prog/
• Developed by the Networking Group from University of Rome Tor Vergata, Italy
• “Chaining of SRv6-unaware VNFs” ユースケースをサポート(End.AD, End.AM)
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 46
SRv6 Linux Kernel
44. SRv6 の実装例(オープンソース)
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 47
SRv6 Functions on Linux data plane
First supported in Kernel 4.10
More functions added in 4.14
source: http://www.segment-routing.net/open-software/linux/
(status as of 2018/04/17)
45. SRv6 の実装例(オープンソース)
• Not a Linux Kernel (module) implementation, but works on Linux.
• https://wiki.fd.io/view/VPP/Segment_Routing_for_IPv6
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 48
SRv6 on VPP (by FD.io project)
Supported functions as of 2018/04/17
source: http://www.segment-routing.net/open-software/vpp/
46. SRv6 の実装例(オープンソース)
SRv6の現状と展望 | ENOG53@上越 | 2018/10/19 49
CLI for SRv6 on Linux (ENOG49で発表)
https://www.slideshare.net/kentaroebisawa/zebra-srv6-cli-on-linux-dataplane-enog49