SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Forefront of SRv6
Open Source Implementations
JANOG43 Meeting @甲府 | 2019年1月23日
株式会社トヨタIT開発センター
海老澤 健太郎 Kentaro Ebisawa
• SRv6のオープンソース実装の紹介
• SRv6 Functions 実装状況
• 設定コマンドと設計思想の違い
• VPP vs Linux (iproute2)
• どこに・どのようにSRv6が実装されてるか?(Source Code)
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
このセッションでお伝えしたいこと
• SRv6 Open Source implementations
• SRv6 Functions ... Implementation Status
• SRv6 configuration command
• Comparison between “VPP” and “Linux iproute2”
• Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Table of Contents
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 Tools
SRv6 on ASIC/NPUSRv6 on CPU
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 Open Source implementations
Linux Kernel
Network Stack
VPP
FD.io project
SREXT
Linux Kernel Module
End.BPF
(eBPF)
P4SRv6
P4 (P4-14)
wireshark
packet capture/analysis
iproute2
Linux CLI
Barefoot Proprietary
P4 (P4-16)
SRv6 Open Source implementations
• Since Linux 4.10
• By David Lebrun@UCLouvain(ベルギー)
• https://segment-routing.org/
• “Light Weight Tunnel” (LWTunnel) として実装
• lwtunnel_encap_types { MPLS, IP, ILA, IP6, SEG6, BPF, SEG6_LOCAL }
• IPv6 “route” としてルーティングテーブルに設定(デバイスではなく)
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 in Linux Kernel Network Stack
$ ip -6 route
c0be:fe::/64 encap seg6 mode inline segs 4 [ c0be::1 c0be::2 c0be::3 :: ]
via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium
fc00::1 encap seg6local action End via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
fc00::2 encap seg6local action End.X nh6 fc00::1:1 via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
fc00::3 encap seg6local action End.T table 100 via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
SRv6 Open Source implementations
• Since Linux 4.10
• By David Lebrun@UCLouvain (Belgium)
• https://segment-routing.org/
• Implemented as “Light Weight Tunnel” (LWTunnel)
• lwtunnel_encap_types { MPLS, IP, ILA, IP6, SEG6, BPF, SEG6_LOCAL }
• Configured in routing table via IPv6 “route” (not as tunnel devices)
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 in Linux Kernel Network Stack
$ ip -6 route
c0be:fe::/64 encap seg6 mode inline segs 4 [ c0be::1 c0be::2 c0be::3 :: ]
via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium
fc00::1 encap seg6local action End via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
fc00::2 encap seg6local action End.X nh6 fc00::1:1 via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
fc00::3 encap seg6local action End.T table 100 via 2001:db8::1
dev lxcbr0 metric 1024 linkdown pref medium
SRv6 Open Source implementations
• Since Linux 4.18
• https://segment-routing.org/index.php/Implementation/BPF
• SEG6_LOCAL (LWTunnel) のアクションの1つとして実装
• eBPFを用いてプログラムした独自処理を実行させる
※ 詳細は 「SRv6 Academy Update」 で
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
End.BPF (Linux Kernel eBPF)
ip -6 route add dead::beef encap seg6local action End.BPF
endpoint object my_code.o section my_function dev eth0
eBPFプログラム
SRv6 Open Source implementations
• Since Linux 4.18
• https://segment-routing.org/index.php/Implementation/BPF
• One of the actions of SEG6_LOCAL (LWTunnel)
• Invoke eBPF program with custom functionality
※ Details in next session “SRv6 Academy Update”
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
End.BPF (Linux Kernel eBPF)
ip -6 route add dead::beef encap seg6local action End.BPF
endpoint object my_code.o section my_function dev eth0
eBPF program
SRv6 Open Source implementations
• https://netgroup.github.io/SRv6-net-prog/
• By “Networking Group” @ University of Rome Tor Vergata, Italy
• SRv6非対応VNFのサービスチェイニングが可能 (End.AD, End.AM)
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SREXT (Linux Kernel Module)
Design documents:
“Linux implementation of SRv6 Network Programming model”
SRv6 Open Source implementations
• https://netgroup.github.io/SRv6-net-prog/
• By “Networking Group” @ University of Rome Tor Vergata, Italy
• Support Service Chaining of non-SRv6 capable VNFs (End.AD, End.AM)
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SREXT (Linux Kernel Module)
Design documents:
“Linux implementation of SRv6 Network Programming model”
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 on VPP (Vector Packet Processing)
https://fd.io/technology/
• パケットをベクトル単位で入力
• node(ethernet, mpls, ip6, arp …)のグラ
フ順に処理を実行
• 新しい処理はnodeの改造やPluginを作
成し追加可能
SRv6 node: sr_localsid_node, sr_policy_*_node
DPDK (User Land)
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 on VPP (Vector Packet Processing)
https://fd.io/technology/
• Input as Packet Vector
• Process based on graph of nodes
(ethernet, mpls, ip6, arp …)
• New functionality could be added by
customizing node or creating plugin
SRv6 node: sr_localsid_node, sr_policy_*_node
DPDK (User Land)
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
P4SRv6 (SRv6 on P4-14)
• SRv6 mobile user plane functions 実装
(draft-ietf-dmm-srv6-mobile-uplane-01)
• 制約が多いので P4-16 で書き直す予定
https://github.com/ebiken/p4srv6
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
P4SRv6 (SRv6 on P4-14)
• SRv6 mobile user plane functions
(draft-ietf-dmm-srv6-mobile-uplane-01)
• Planning to re-write using P4-16
https://github.com/ebiken/p4srv6
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
(参考) SRv6 モバイル機能のプロトタイピング
GTP
Client
SRGW
(P4 Switch)
(Tofino)
SRGW
(VPP)
GTP
ServerGTP/IPv4 GTP/IPv4
<= End.M.GTP4.E
=> T.M.Tmap => End.M.GTP4.E
<= T.M.Tmap
SRv6
SRV6 Drop-In Replacement for GTP
Switch ASICでGTP/SRv6変換を実行
Barefoot P4-16 SRv6 実装をベースに
Function を追加(by APRESIA Systems)
Segment Routing IPv6 for Mobile User Plane
https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/
VPP拡張はPablo@Ciscoが開発
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
(FYI) SRv6 mobile functions (proto type)
GTP
Client
SRGW
(P4 Switch)
(Tofino)
SRGW
(VPP)
GTP
ServerGTP/IPv4 GTP/IPv4
<= End.M.GTP4.E
=> T.M.Tmap => End.M.GTP4.E
<= T.M.Tmap
SRv6
SRV6 Drop-In Replacement for GTP
GTP/SRv6 translation on Switch ASIC
Based on Barefoot P4-16 SRv6 code.
Functions added by APRESIA Systems.
Segment Routing IPv6 for Mobile User Plane
https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/
VPP extension developed by Pablo@Cisco
SRv6 Open Source implementations
• Linux network stack の CLI で、netlink を用いて設定・参照
• Linux Kernel と SRv6 をサポートしているバージョンが異なる
• v4.12.0 : SEG6_IPTUN_MODE_ENCAP & INLINE (encap / inline)
• v4.14.0 : SEG6_IPTUN_MODE_L2ENCAP (l2encap)
• v4.14.0 : End.*
• v4.18.0 : +End.BPF
• 欲しいバージョンを自分で make する(必要に応じて)
• Tar ball: https://www.kernel.org/pub/linux/utils/net/iproute2/
• Source: git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
iproute2
SRv6 Open Source implementations
• CLI for Linux network stack using netlink to monitor / configure.
• Supported SRv6 function differs between Linux Kernel and iproute2
versions
• v4.12.0 : SEG6_IPTUN_MODE_ENCAP & INLINE (encap / inline)
• v4.14.0 : SEG6_IPTUN_MODE_L2ENCAP (l2encap)
• v4.14.0 : End.*
• v4.18.0 : +End.BPF
• Build required version by your self (if required)
• Tar ball: https://www.kernel.org/pub/linux/utils/net/iproute2/
• Source: git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
iproute2
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Wireshark
https://www.wireshark.org/
• SRHの中身をグラフィカルに表示
• Linux & Windows & macOS 対応
SRv6 Open Source implementations
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Wireshark
https://www.wireshark.org/
• Graphical view of SRH
• Runs on Linux & Windows & macOS
SRv6 Functions ... Implementation Status
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 Functions ... Implementation Status
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 on VPP (by FD.io project)
Supported functions as of 2019/01/16
http://www.segment-routing.net/open-software/vpp/
SRv6 Functions ... Implementation Status
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 Functions on Linux (as of 2019/01/21)
Function Linux iproute2 Description
T.Insert 4.10, SREXT 4.12 Transit behavior with insertion of an SRv6 Policy
T.Encaps 4.10, SREXT 4.12 Transit behavior with encapsulation in an SRv6 policy
T.Encaps.L2 4.14 4.14 T.Encaps behavior of the received L2 frame
Function Linux iproute2 Description
End.BPF 4.18 4.18 Endpoint for eBPF program invocation
Function Linux iproute2 Description
End.AM SREXT 4.14 Endpoint to SR-unaware APP via masquerading
End.AS - 4.14 Endpoint to SR-unaware APP via static SR proxy
End.AD4 (AD6) SREXT -
Endpoint to IPv4 (v6) SR-unaware APP via dynamic
proxy
End.EAD4 (EAD6) SREXT -
Extended End.AD4 (AD6) behavior that allow
SR-unaware VNFS to be the last SF in SFC
Function Linux iproute2 Description
End 4.14, SREXT 4.14 Endpoint function
End.X 4.14, SREXT 4.14 Endpoint function with Layer-3 cross-connect
End.T 4.14 4.14 Endpoint function with specific IPv6 table lookup
End.DX2 4.14, SREXT 4.14 Endpoint with decapsulation and Layer-2 cross-connect
End.DX6 4.14, SREXT 4.14 Endpoint with decapsulation and IPv6 cross-connect
End.DX4 4.14, SREXT 4.14 Endpoint with decapsulation and IPv4 cross-connect
End.DT6 4.14 4.14 Endpoint with decapsulation and IPv6 table lookup
End.DT4 - 4.14 Endpoint with decapsulation and IPv4 table lookup
End.B6 4.14 4.14 Endpoint bound to an SRv6 policy
End.B6.Encaps 4.14 4.14 Endpoint bound to an SRv6 encapsulation Policy
End.BM - 4.14 Endpoint bound to an SR-MPLS Policy
End.S - 4.14 Endpoint in search of a target in table T
Use Linux Kernel v4.14+
End.BPF : v4.18
Internet-Drafts:
• https://datatracker.ietf.org/doc/draft-filsfils-spring-srv6-network-programming/
• https://datatracker.ietf.org/doc/draft-xuclad-spring-sr-service-programming/
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 Functions ... Implementation Status
https://wiki.ubuntu.com/Kernel/Support
Linux v4.14+
Ubuntu 16.04.05 (HWE Kernel)
Ubuntu 18.04
SRv6 configuration command
Comparison between “VPP” and “Linux iproute2”
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Transit node on Linux
Reference: http://www.segment-routing.org/index.php/Implementation/Configuration
ip -6 route add fc00:b::10/128 encap seg6 mode inline
segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a
ip -6 route add fc00:b::10/128 encap seg6 mode encap
segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a
ip -6 route add <prefix> encap seg6 mode <encapmode>
segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>)
examples
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
End segments (functions) on Linux
Reference: http://www.segment-routing.org/index.php/Implementation/AdvancedConf
ip -6 route add <segment> encap seg6local action <action> <params>
(dev <device> | via <nexthop>) [table localsid]
ip -6 route add fc00::1/128 encap seg6local
action End via 2001:db8::1
action End.X nh6 fc00::1:1 via 2001:db8::1
action End.T table 100 via 2001:db8::1
action End.DX2 oif lxcbr0 via 2001:db8::1
action End.DX6 nh6 fc00::1:1 via 2001:db8::1
action End.DX4 nh4 10.0.3.254 via 2001:db8::1
action End.DT6 table 100 via 2001:db8::1
action End.B6 srh segs beaf::1,beaf::2 via 2001:db8::1
action End.B6.Encaps srh segs beaf::1,beaf::2 via 2001:db8::1
examples
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Transit node on VPP
Reference: https://docs.fd.io/vpp/19.01/srv6_doc.html
sr policy add bsid cafe::1 next A1:: next B1:: next C1:: encap
sr steer l3 2001::/64 via bsid cafe::1
sr steer l3 10.0.0.0/16 via bsid cafe::1
sr steer l2 TenGE0/1/0 via bsid cafe::1
sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap)
sr steer l3 <address> via bsid <bsid>
sr steer l2 <interface> via bsid <bsid>
examples
bsid = binding SID
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
End segments (functions) on VPP
Reference: https://docs.fd.io/vpp/19.01/srv6_doc.html
sr localsid address XX::YY behavior end
sr localsid address XX::YY behavior end.x GE0/1/0 2001::a
sr localsid address XX::YY behavior end.dx6 GE0/1/0 2001::a
sr localsid address XX::YY behavior end.dx4 GE0/1/0 10.0.0.1
sr localsid address XX::YY behavior end.dx2 GigabitE0/11/0
sr localsid address XX::YY behavior end.dt6 5
sr localsid address XX::YY behavior end.dt6 5
sr localsid address <sid> behavior <function> <parameters...>
examples
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Comparison between “VPP” and “Linux iproute2”
sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap)
sr steer l3 <address> via bsid <bsid>
sr steer l2 <interface> via bsid <bsid>
ip -6 route add <prefix> encap seg6 mode <encapmode>
segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>)
VPP
Linux iproute2
VPP : binding SID を定義し、そこにパケットを向ける(steer)
Linux :bsid を用いず、直接ルーティングエントリとして定義
SRv6 configuration command
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Comparison between “VPP” and “Linux iproute2”
sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap)
sr steer l3 <address> via bsid <bsid>
sr steer l2 <interface> via bsid <bsid>
ip -6 route add <prefix> encap seg6 mode <encapmode>
segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>)
VPP
Linux iproute2
VPP : Define binding SID and steer packet to it
Linux : Directly set as routing entry without using bsid
Where and How SRv6 functions are
implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Linux Kernel, iproute2 and End.BPF
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
“netlink” is used to configure / show SRv6 rules
RTNetlink
// rtattr_type_t
RTA_DST
RTA_OIF
RTA_ENCAP_TYPE (0x15)
RTA_ENCAP (0x16)
RTA_ENCAP_TYPE (0x15)
lwtunnel_encap_types {
LWTUNNEL_ENCAP_MPLS
LWTUNNEL_ENCAP_IP
LWTUNNEL_ENCAP_ILA
LWTUNNEL_ENCAP_IP6
LWTUNNEL_ENCAP_SEG6 (5)
LWTUNNE_ENCAP_BPF
LWTUNNEL_ENCAP_SEG6_LOCAL (7)
}
RTA_ENCAP (0x16)
SEG6_IPTUNNEL_SRH
encap mode {
SEG6_IPTUN_MODE_INLINE
SEG6_IPTUN_MODE_ENCAP
SEG6_IPTUN_MODE_L2ENCAP
}
SRH { ... }
RTA_ENCAP (0x16)
// seg6local types
SEG6_LOCAL_ACTION
SEG6_LOCAL_SRH,
SEG6_LOCAL_TABLE,
SEG6_LOCAL_NH4,
SEG6_LOCAL_NH6,
SEG6_LOCAL_IIF,
SEG6_LOCAL_OIF,
SEG6_LOCAL_ACTION (0x01)
seg6local action types {
SEG6_LOCAL_ACTION_END = 1
SEG6_LOCAL_ACTION_END_X = 2
SEG6_LOCAL_ACTION_END_T = 3
SEG6_LOCAL_ACTION_END_DX2 = 4
SEG6_LOCAL_ACTION_END_DX6 = 5
SEG6_LOCAL_ACTION_END_DX4 = 6
SEG6_LOCAL_ACTION_END_DT6 = 7
SEG6_LOCAL_ACTION_END_DT4 = 8
SEG6_LOCAL_ACTION_END_B6 = 9
SEG6_LOCAL_ACTION_END_B6_ENCAP = 10
SEG6_LOCAL_ACTION_END_BM = 11
SEG6_LOCAL_ACTION_END_S = 12
SEG6_LOCAL_ACTION_END_AS = 13
SEG6_LOCAL_ACTION_END_AM = 14
}
TYPE = SEG6_LOCAL
• Example when setting route
• SEG6 = Transit node
• SEG6LOCAL = End node (Local Segment)
• Select one value for items in { }
• Select multiple without { }
TYPE = SEG6
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
netlink message example (SEG6_LOCAL)
ENCAP_SEG6_LOCAL (7)
0000 08 00 01 00 02 00 00 00 14 00 05 00 fc 00 00 00
0010 00 00 00 00 00 00 00 00 00 01 00 01
08 00 01 00 | len: 8bytes, type: SEG6_LOCAL_ACTION (0x01)
02 00 00 00 | data: SEG6_LOCAL_ACTION_END_X (0x02)
14 00 05 00 | len: 20bytes, type: SEG6_LOCAL_NH6 (0x05)
fc 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 | data: IPv6 addr
netlink メッセージの確認方法
modprobe nlmon
ip link add nlmon0 type nlmon
ip link set nlmon0 up
tshark -i nlmon0 -V
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Linux Source Code (where to look)
Linux Kernel Source Code
• include/uapi/linux/
• rtnetlink.h
• lwtunnel.h
• seg6_genl.h
• seg6.h
• seg6_hmac.h
• seg6_iptunnel.h
• seg6_local.h
• net/core/
• lwtunnel.c
• net/ipv6/
• seg6.c
• seg6_hmac.c
• seg6_iptunnel.c
• seg6_local.c
iproute2
• ip/
• ipseg6.c
• iproute_lwtunnel.h
• iproute_lwtunnel.c
Linux: https://github.com/torvalds/linux
iproute2 git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
End.BPF action (Linux eBPF)
SEG6_LOCAL_BPF : ~/linux/net/ipv6/seg6_local.c How to write eBPF code for End.BPF
https://segment-routing.org/index.php/Implementation/BPF
Linux SREX
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
SREXT Implementation
~/SRv6-net-prog/srext/kernel/sr_hook.chttps://github.com/netgroup/SRv6-net-prog
Currently compiles with Kernel 4.17 or later.
SRv6 in VPP
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Extending SRv6 functions
https://docs.fd.io/vpp/19.04/srv6_plugin_doc.html $ git clone https://gerrit.fd.io/r/vpp
~/vpp/src/examples/srv6-sample-localsid$ ls
node.c srv6_localsid_sample.h
srv6_localsid_sample.c srv6_sample_localsid_doc.md
SRv6 on P4
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
table srv6_localsid {
reads {
ipv6.dstAddr: exact;
}
actions {
srv6_T_Insert1; srv6_T_Insert2; srv6_T_Insert3;
srv6_T_Encaps2; srv6_T_Encaps1; srv6_T_Encaps3;
srv6_T_Encaps_Red2; srv6_T_Encaps_Red3;
srv6_End0; srv6_End1;
srv6_End_DT6;
srv6_End_M_GTP6_D2; srv6_End_M_GTP6_D3;
srv6_End_M_GTP6_E;
}
}
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
P4SRv6 (P4-14)
https://github.com/ebiken/p4srv6
Control / Table definition
header, parser, actions definition
SRv6 related
Generic
GTP related
Wireshark
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Where and How SRv6 functions are implemented?
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Wireshark
https://github.com/wireshark/wireshark/blob/master/epan/dissectors/packet-ipv6.c#L1066
Conclusion | まとめ
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Conclusion
複数のオープンソース実装でテスト可能
ハードウェア(ASIC)上でもクローズドながら
オープンなプログラミング言語(P4)で実装済み
成熟度はまだこれから
実装されてないSRv6 Functionも多数
コントロールプレーン(BGP/ISIS/OSPF)の不在
SRv6の実装・実験に興味ある方はお声がけを!!
(特にオープンソースで)
ASIC上で動作する
独自Functionをプログラム可能
Linux Network Stack | Kernel Module
VPP (FD.io)
まだまだ貢献可能な隙間が沢山 ☺
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
Conclusion
Multiple Open Source implementations are
available to start testing SRv6 functionality.
Hardware is also available on closed platform
(Barefoot Tofino) but in open language (P4)
Still in early stage of implementation
Not all functions are implemented
No control plane (BGP/ISIS/OSPF etc.)
Talk to me if you are interested in testing / implementing SRv6 !!
(Especially as an Open Source Software)
We can start writing new
SRv6 functions on hardware.
Linux Network Stack | Kernel Module
VPP (FD.io)
Still large space left to contribute ☺
Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
!!続きは “ENOG55@燕三条” で!! http://enog.jp/archives/2014
SRv6の実装例
詳しく話します
参加登録

Mais conteúdo relacionado

Mais procurados

Segment Routing: Prepare Your Network For New Business Models
Segment Routing:  Prepare Your Network For New Business ModelsSegment Routing:  Prepare Your Network For New Business Models
Segment Routing: Prepare Your Network For New Business Models
Cisco Service Provider
 

Mais procurados (20)

L3HA-VRRP-20141201
L3HA-VRRP-20141201L3HA-VRRP-20141201
L3HA-VRRP-20141201
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
 
Building DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPNBuilding DataCenter networks with VXLAN BGP-EVPN
Building DataCenter networks with VXLAN BGP-EVPN
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHComparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
 
Cisco Live! :: Introduction to Segment Routing :: BRKRST-2124 | Las Vegas 2017
Cisco Live! :: Introduction to Segment Routing :: BRKRST-2124  | Las Vegas 2017Cisco Live! :: Introduction to Segment Routing :: BRKRST-2124  | Las Vegas 2017
Cisco Live! :: Introduction to Segment Routing :: BRKRST-2124 | Las Vegas 2017
 
Open vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream KernelOpen vSwitch Offload: Conntrack and the Upstream Kernel
Open vSwitch Offload: Conntrack and the Upstream Kernel
 
VXLAN and FRRouting
VXLAN and FRRoutingVXLAN and FRRouting
VXLAN and FRRouting
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic Control
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
The Segment Routing Architecture (IEEE Globecom 2015)
The Segment Routing Architecture (IEEE Globecom 2015)The Segment Routing Architecture (IEEE Globecom 2015)
The Segment Routing Architecture (IEEE Globecom 2015)
 
A comparison of segment routing data-plane encodings
A comparison of segment routing data-plane encodingsA comparison of segment routing data-plane encodings
A comparison of segment routing data-plane encodings
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
Segment Routing: Prepare Your Network For New Business Models
Segment Routing:  Prepare Your Network For New Business ModelsSegment Routing:  Prepare Your Network For New Business Models
Segment Routing: Prepare Your Network For New Business Models
 
VPP for Stateless SRv6/GTP-U Translation
VPP for Stateless SRv6/GTP-U TranslationVPP for Stateless SRv6/GTP-U Translation
VPP for Stateless SRv6/GTP-U Translation
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 

Semelhante a JANOG43 Forefront of SRv6, Open Source Implementations

2012 11-09 facex - i pv6 transition planning-
2012 11-09 facex - i pv6 transition planning-2012 11-09 facex - i pv6 transition planning-
2012 11-09 facex - i pv6 transition planning-
Eduardo Coelho
 

Semelhante a JANOG43 Forefront of SRv6, Open Source Implementations (20)

SRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeSRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-type
 
SRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationSRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and Implementation
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
 
SRv6 experience for italy iPv6 council
SRv6 experience for italy iPv6 councilSRv6 experience for italy iPv6 council
SRv6 experience for italy iPv6 council
 
Ieee nfv-sdn-2020-srv6-tutorial
Ieee nfv-sdn-2020-srv6-tutorialIeee nfv-sdn-2020-srv6-tutorial
Ieee nfv-sdn-2020-srv6-tutorial
 
OpenStack Paris Meetup on Nfv 2014/10/07
OpenStack Paris Meetup on Nfv 2014/10/07OpenStack Paris Meetup on Nfv 2014/10/07
OpenStack Paris Meetup on Nfv 2014/10/07
 
2012 11-09 facex - i pv6 transition planning-
2012 11-09 facex - i pv6 transition planning-2012 11-09 facex - i pv6 transition planning-
2012 11-09 facex - i pv6 transition planning-
 
Segment Routing v6 (SRv6) Academy Update
Segment Routing v6 (SRv6) Academy Update Segment Routing v6 (SRv6) Academy Update
Segment Routing v6 (SRv6) Academy Update
 
ONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDXONOS SDN-IP: Tutorial and Use Case for SDX
ONOS SDN-IP: Tutorial and Use Case for SDX
 
464XLAT Tutorial
464XLAT Tutorial464XLAT Tutorial
464XLAT Tutorial
 
Neutron IPv6
Neutron IPv6Neutron IPv6
Neutron IPv6
 
The state of server-side Swift
The state of server-side SwiftThe state of server-side Swift
The state of server-side Swift
 
Zebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraZebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud Era
 
ietf-115-hackathon-srv6-dataplane-visibility.pptx
ietf-115-hackathon-srv6-dataplane-visibility.pptxietf-115-hackathon-srv6-dataplane-visibility.pptx
ietf-115-hackathon-srv6-dataplane-visibility.pptx
 
OIF SDN Transport API NFV Proof of Concept
OIF SDN Transport API NFV Proof of ConceptOIF SDN Transport API NFV Proof of Concept
OIF SDN Transport API NFV Proof of Concept
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
ARIN 34 IPv6 IAB/IETF Activities Report
ARIN 34 IPv6 IAB/IETF Activities ReportARIN 34 IPv6 IAB/IETF Activities Report
ARIN 34 IPv6 IAB/IETF Activities Report
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
 
CentOS NFV SIG Introduction and Update
CentOS NFV SIG Introduction and UpdateCentOS NFV SIG Introduction and Update
CentOS NFV SIG Introduction and Update
 

Mais de Kentaro Ebisawa

Mais de Kentaro Ebisawa (20)

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIMPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
 
Yang Tools Quick Memo
Yang Tools Quick MemoYang Tools Quick Memo
Yang Tools Quick Memo
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

JANOG43 Forefront of SRv6, Open Source Implementations

  • 1. Forefront of SRv6 Open Source Implementations JANOG43 Meeting @甲府 | 2019年1月23日 株式会社トヨタIT開発センター 海老澤 健太郎 Kentaro Ebisawa
  • 2. • SRv6のオープンソース実装の紹介 • SRv6 Functions 実装状況 • 設定コマンドと設計思想の違い • VPP vs Linux (iproute2) • どこに・どのようにSRv6が実装されてるか?(Source Code) Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 このセッションでお伝えしたいこと
  • 3. • SRv6 Open Source implementations • SRv6 Functions ... Implementation Status • SRv6 configuration command • Comparison between “VPP” and “Linux iproute2” • Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Table of Contents
  • 4. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 5. SRv6 Tools SRv6 on ASIC/NPUSRv6 on CPU Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 Open Source implementations Linux Kernel Network Stack VPP FD.io project SREXT Linux Kernel Module End.BPF (eBPF) P4SRv6 P4 (P4-14) wireshark packet capture/analysis iproute2 Linux CLI Barefoot Proprietary P4 (P4-16)
  • 6. SRv6 Open Source implementations • Since Linux 4.10 • By David Lebrun@UCLouvain(ベルギー) • https://segment-routing.org/ • “Light Weight Tunnel” (LWTunnel) として実装 • lwtunnel_encap_types { MPLS, IP, ILA, IP6, SEG6, BPF, SEG6_LOCAL } • IPv6 “route” としてルーティングテーブルに設定(デバイスではなく) Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 in Linux Kernel Network Stack $ ip -6 route c0be:fe::/64 encap seg6 mode inline segs 4 [ c0be::1 c0be::2 c0be::3 :: ] via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::1 encap seg6local action End via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::2 encap seg6local action End.X nh6 fc00::1:1 via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::3 encap seg6local action End.T table 100 via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium
  • 7. SRv6 Open Source implementations • Since Linux 4.10 • By David Lebrun@UCLouvain (Belgium) • https://segment-routing.org/ • Implemented as “Light Weight Tunnel” (LWTunnel) • lwtunnel_encap_types { MPLS, IP, ILA, IP6, SEG6, BPF, SEG6_LOCAL } • Configured in routing table via IPv6 “route” (not as tunnel devices) Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 in Linux Kernel Network Stack $ ip -6 route c0be:fe::/64 encap seg6 mode inline segs 4 [ c0be::1 c0be::2 c0be::3 :: ] via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::1 encap seg6local action End via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::2 encap seg6local action End.X nh6 fc00::1:1 via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium fc00::3 encap seg6local action End.T table 100 via 2001:db8::1 dev lxcbr0 metric 1024 linkdown pref medium
  • 8. SRv6 Open Source implementations • Since Linux 4.18 • https://segment-routing.org/index.php/Implementation/BPF • SEG6_LOCAL (LWTunnel) のアクションの1つとして実装 • eBPFを用いてプログラムした独自処理を実行させる ※ 詳細は 「SRv6 Academy Update」 で Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 End.BPF (Linux Kernel eBPF) ip -6 route add dead::beef encap seg6local action End.BPF endpoint object my_code.o section my_function dev eth0 eBPFプログラム
  • 9. SRv6 Open Source implementations • Since Linux 4.18 • https://segment-routing.org/index.php/Implementation/BPF • One of the actions of SEG6_LOCAL (LWTunnel) • Invoke eBPF program with custom functionality ※ Details in next session “SRv6 Academy Update” Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 End.BPF (Linux Kernel eBPF) ip -6 route add dead::beef encap seg6local action End.BPF endpoint object my_code.o section my_function dev eth0 eBPF program
  • 10. SRv6 Open Source implementations • https://netgroup.github.io/SRv6-net-prog/ • By “Networking Group” @ University of Rome Tor Vergata, Italy • SRv6非対応VNFのサービスチェイニングが可能 (End.AD, End.AM) Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SREXT (Linux Kernel Module) Design documents: “Linux implementation of SRv6 Network Programming model”
  • 11. SRv6 Open Source implementations • https://netgroup.github.io/SRv6-net-prog/ • By “Networking Group” @ University of Rome Tor Vergata, Italy • Support Service Chaining of non-SRv6 capable VNFs (End.AD, End.AM) Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SREXT (Linux Kernel Module) Design documents: “Linux implementation of SRv6 Network Programming model”
  • 12. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 on VPP (Vector Packet Processing) https://fd.io/technology/ • パケットをベクトル単位で入力 • node(ethernet, mpls, ip6, arp …)のグラ フ順に処理を実行 • 新しい処理はnodeの改造やPluginを作 成し追加可能 SRv6 node: sr_localsid_node, sr_policy_*_node DPDK (User Land)
  • 13. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 on VPP (Vector Packet Processing) https://fd.io/technology/ • Input as Packet Vector • Process based on graph of nodes (ethernet, mpls, ip6, arp …) • New functionality could be added by customizing node or creating plugin SRv6 node: sr_localsid_node, sr_policy_*_node DPDK (User Land)
  • 14. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 P4SRv6 (SRv6 on P4-14) • SRv6 mobile user plane functions 実装 (draft-ietf-dmm-srv6-mobile-uplane-01) • 制約が多いので P4-16 で書き直す予定 https://github.com/ebiken/p4srv6
  • 15. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 P4SRv6 (SRv6 on P4-14) • SRv6 mobile user plane functions (draft-ietf-dmm-srv6-mobile-uplane-01) • Planning to re-write using P4-16 https://github.com/ebiken/p4srv6
  • 16. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 (参考) SRv6 モバイル機能のプロトタイピング GTP Client SRGW (P4 Switch) (Tofino) SRGW (VPP) GTP ServerGTP/IPv4 GTP/IPv4 <= End.M.GTP4.E => T.M.Tmap => End.M.GTP4.E <= T.M.Tmap SRv6 SRV6 Drop-In Replacement for GTP Switch ASICでGTP/SRv6変換を実行 Barefoot P4-16 SRv6 実装をベースに Function を追加(by APRESIA Systems) Segment Routing IPv6 for Mobile User Plane https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/ VPP拡張はPablo@Ciscoが開発
  • 17. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 (FYI) SRv6 mobile functions (proto type) GTP Client SRGW (P4 Switch) (Tofino) SRGW (VPP) GTP ServerGTP/IPv4 GTP/IPv4 <= End.M.GTP4.E => T.M.Tmap => End.M.GTP4.E <= T.M.Tmap SRv6 SRV6 Drop-In Replacement for GTP GTP/SRv6 translation on Switch ASIC Based on Barefoot P4-16 SRv6 code. Functions added by APRESIA Systems. Segment Routing IPv6 for Mobile User Plane https://datatracker.ietf.org/doc/draft-ietf-dmm-srv6-mobile-uplane/ VPP extension developed by Pablo@Cisco
  • 18. SRv6 Open Source implementations • Linux network stack の CLI で、netlink を用いて設定・参照 • Linux Kernel と SRv6 をサポートしているバージョンが異なる • v4.12.0 : SEG6_IPTUN_MODE_ENCAP & INLINE (encap / inline) • v4.14.0 : SEG6_IPTUN_MODE_L2ENCAP (l2encap) • v4.14.0 : End.* • v4.18.0 : +End.BPF • 欲しいバージョンを自分で make する(必要に応じて) • Tar ball: https://www.kernel.org/pub/linux/utils/net/iproute2/ • Source: git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 iproute2
  • 19. SRv6 Open Source implementations • CLI for Linux network stack using netlink to monitor / configure. • Supported SRv6 function differs between Linux Kernel and iproute2 versions • v4.12.0 : SEG6_IPTUN_MODE_ENCAP & INLINE (encap / inline) • v4.14.0 : SEG6_IPTUN_MODE_L2ENCAP (l2encap) • v4.14.0 : End.* • v4.18.0 : +End.BPF • Build required version by your self (if required) • Tar ball: https://www.kernel.org/pub/linux/utils/net/iproute2/ • Source: git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 iproute2
  • 20. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Wireshark https://www.wireshark.org/ • SRHの中身をグラフィカルに表示 • Linux & Windows & macOS 対応
  • 21. SRv6 Open Source implementations Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Wireshark https://www.wireshark.org/ • Graphical view of SRH • Runs on Linux & Windows & macOS
  • 22. SRv6 Functions ... Implementation Status Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 23. SRv6 Functions ... Implementation Status Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 on VPP (by FD.io project) Supported functions as of 2019/01/16 http://www.segment-routing.net/open-software/vpp/
  • 24. SRv6 Functions ... Implementation Status Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 Functions on Linux (as of 2019/01/21) Function Linux iproute2 Description T.Insert 4.10, SREXT 4.12 Transit behavior with insertion of an SRv6 Policy T.Encaps 4.10, SREXT 4.12 Transit behavior with encapsulation in an SRv6 policy T.Encaps.L2 4.14 4.14 T.Encaps behavior of the received L2 frame Function Linux iproute2 Description End.BPF 4.18 4.18 Endpoint for eBPF program invocation Function Linux iproute2 Description End.AM SREXT 4.14 Endpoint to SR-unaware APP via masquerading End.AS - 4.14 Endpoint to SR-unaware APP via static SR proxy End.AD4 (AD6) SREXT - Endpoint to IPv4 (v6) SR-unaware APP via dynamic proxy End.EAD4 (EAD6) SREXT - Extended End.AD4 (AD6) behavior that allow SR-unaware VNFS to be the last SF in SFC Function Linux iproute2 Description End 4.14, SREXT 4.14 Endpoint function End.X 4.14, SREXT 4.14 Endpoint function with Layer-3 cross-connect End.T 4.14 4.14 Endpoint function with specific IPv6 table lookup End.DX2 4.14, SREXT 4.14 Endpoint with decapsulation and Layer-2 cross-connect End.DX6 4.14, SREXT 4.14 Endpoint with decapsulation and IPv6 cross-connect End.DX4 4.14, SREXT 4.14 Endpoint with decapsulation and IPv4 cross-connect End.DT6 4.14 4.14 Endpoint with decapsulation and IPv6 table lookup End.DT4 - 4.14 Endpoint with decapsulation and IPv4 table lookup End.B6 4.14 4.14 Endpoint bound to an SRv6 policy End.B6.Encaps 4.14 4.14 Endpoint bound to an SRv6 encapsulation Policy End.BM - 4.14 Endpoint bound to an SR-MPLS Policy End.S - 4.14 Endpoint in search of a target in table T Use Linux Kernel v4.14+ End.BPF : v4.18 Internet-Drafts: • https://datatracker.ietf.org/doc/draft-filsfils-spring-srv6-network-programming/ • https://datatracker.ietf.org/doc/draft-xuclad-spring-sr-service-programming/
  • 25. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SRv6 Functions ... Implementation Status https://wiki.ubuntu.com/Kernel/Support Linux v4.14+ Ubuntu 16.04.05 (HWE Kernel) Ubuntu 18.04
  • 26. SRv6 configuration command Comparison between “VPP” and “Linux iproute2” Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 27. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Transit node on Linux Reference: http://www.segment-routing.org/index.php/Implementation/Configuration ip -6 route add fc00:b::10/128 encap seg6 mode inline segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a ip -6 route add fc00:b::10/128 encap seg6 mode encap segs fc00:3::11,fc00:3::12,fc00:3::13 via fc00:a::a ip -6 route add <prefix> encap seg6 mode <encapmode> segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>) examples
  • 28. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 End segments (functions) on Linux Reference: http://www.segment-routing.org/index.php/Implementation/AdvancedConf ip -6 route add <segment> encap seg6local action <action> <params> (dev <device> | via <nexthop>) [table localsid] ip -6 route add fc00::1/128 encap seg6local action End via 2001:db8::1 action End.X nh6 fc00::1:1 via 2001:db8::1 action End.T table 100 via 2001:db8::1 action End.DX2 oif lxcbr0 via 2001:db8::1 action End.DX6 nh6 fc00::1:1 via 2001:db8::1 action End.DX4 nh4 10.0.3.254 via 2001:db8::1 action End.DT6 table 100 via 2001:db8::1 action End.B6 srh segs beaf::1,beaf::2 via 2001:db8::1 action End.B6.Encaps srh segs beaf::1,beaf::2 via 2001:db8::1 examples
  • 29. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Transit node on VPP Reference: https://docs.fd.io/vpp/19.01/srv6_doc.html sr policy add bsid cafe::1 next A1:: next B1:: next C1:: encap sr steer l3 2001::/64 via bsid cafe::1 sr steer l3 10.0.0.0/16 via bsid cafe::1 sr steer l2 TenGE0/1/0 via bsid cafe::1 sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap) sr steer l3 <address> via bsid <bsid> sr steer l2 <interface> via bsid <bsid> examples bsid = binding SID
  • 30. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 End segments (functions) on VPP Reference: https://docs.fd.io/vpp/19.01/srv6_doc.html sr localsid address XX::YY behavior end sr localsid address XX::YY behavior end.x GE0/1/0 2001::a sr localsid address XX::YY behavior end.dx6 GE0/1/0 2001::a sr localsid address XX::YY behavior end.dx4 GE0/1/0 10.0.0.1 sr localsid address XX::YY behavior end.dx2 GigabitE0/11/0 sr localsid address XX::YY behavior end.dt6 5 sr localsid address XX::YY behavior end.dt6 5 sr localsid address <sid> behavior <function> <parameters...> examples
  • 31. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Comparison between “VPP” and “Linux iproute2” sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap) sr steer l3 <address> via bsid <bsid> sr steer l2 <interface> via bsid <bsid> ip -6 route add <prefix> encap seg6 mode <encapmode> segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>) VPP Linux iproute2 VPP : binding SID を定義し、そこにパケットを向ける(steer) Linux :bsid を用いず、直接ルーティングエントリとして定義
  • 32. SRv6 configuration command Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Comparison between “VPP” and “Linux iproute2” sr policy add bsid 2001::1 next A1:: next B1:: next C1:: (encap) sr steer l3 <address> via bsid <bsid> sr steer l2 <interface> via bsid <bsid> ip -6 route add <prefix> encap seg6 mode <encapmode> segs <segments> [hmac <keyid>] (dev <device> | via <nexthop>) VPP Linux iproute2 VPP : Define binding SID and steer packet to it Linux : Directly set as routing entry without using bsid
  • 33. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 34. Linux Kernel, iproute2 and End.BPF Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 35. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 “netlink” is used to configure / show SRv6 rules RTNetlink // rtattr_type_t RTA_DST RTA_OIF RTA_ENCAP_TYPE (0x15) RTA_ENCAP (0x16) RTA_ENCAP_TYPE (0x15) lwtunnel_encap_types { LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_IP LWTUNNEL_ENCAP_ILA LWTUNNEL_ENCAP_IP6 LWTUNNEL_ENCAP_SEG6 (5) LWTUNNE_ENCAP_BPF LWTUNNEL_ENCAP_SEG6_LOCAL (7) } RTA_ENCAP (0x16) SEG6_IPTUNNEL_SRH encap mode { SEG6_IPTUN_MODE_INLINE SEG6_IPTUN_MODE_ENCAP SEG6_IPTUN_MODE_L2ENCAP } SRH { ... } RTA_ENCAP (0x16) // seg6local types SEG6_LOCAL_ACTION SEG6_LOCAL_SRH, SEG6_LOCAL_TABLE, SEG6_LOCAL_NH4, SEG6_LOCAL_NH6, SEG6_LOCAL_IIF, SEG6_LOCAL_OIF, SEG6_LOCAL_ACTION (0x01) seg6local action types { SEG6_LOCAL_ACTION_END = 1 SEG6_LOCAL_ACTION_END_X = 2 SEG6_LOCAL_ACTION_END_T = 3 SEG6_LOCAL_ACTION_END_DX2 = 4 SEG6_LOCAL_ACTION_END_DX6 = 5 SEG6_LOCAL_ACTION_END_DX4 = 6 SEG6_LOCAL_ACTION_END_DT6 = 7 SEG6_LOCAL_ACTION_END_DT4 = 8 SEG6_LOCAL_ACTION_END_B6 = 9 SEG6_LOCAL_ACTION_END_B6_ENCAP = 10 SEG6_LOCAL_ACTION_END_BM = 11 SEG6_LOCAL_ACTION_END_S = 12 SEG6_LOCAL_ACTION_END_AS = 13 SEG6_LOCAL_ACTION_END_AM = 14 } TYPE = SEG6_LOCAL • Example when setting route • SEG6 = Transit node • SEG6LOCAL = End node (Local Segment) • Select one value for items in { } • Select multiple without { } TYPE = SEG6
  • 36. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 netlink message example (SEG6_LOCAL) ENCAP_SEG6_LOCAL (7) 0000 08 00 01 00 02 00 00 00 14 00 05 00 fc 00 00 00 0010 00 00 00 00 00 00 00 00 00 01 00 01 08 00 01 00 | len: 8bytes, type: SEG6_LOCAL_ACTION (0x01) 02 00 00 00 | data: SEG6_LOCAL_ACTION_END_X (0x02) 14 00 05 00 | len: 20bytes, type: SEG6_LOCAL_NH6 (0x05) fc 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 | data: IPv6 addr netlink メッセージの確認方法 modprobe nlmon ip link add nlmon0 type nlmon ip link set nlmon0 up tshark -i nlmon0 -V
  • 37. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Linux Source Code (where to look) Linux Kernel Source Code • include/uapi/linux/ • rtnetlink.h • lwtunnel.h • seg6_genl.h • seg6.h • seg6_hmac.h • seg6_iptunnel.h • seg6_local.h • net/core/ • lwtunnel.c • net/ipv6/ • seg6.c • seg6_hmac.c • seg6_iptunnel.c • seg6_local.c iproute2 • ip/ • ipseg6.c • iproute_lwtunnel.h • iproute_lwtunnel.c Linux: https://github.com/torvalds/linux iproute2 git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
  • 38. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 End.BPF action (Linux eBPF) SEG6_LOCAL_BPF : ~/linux/net/ipv6/seg6_local.c How to write eBPF code for End.BPF https://segment-routing.org/index.php/Implementation/BPF
  • 39. Linux SREX Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 40. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 SREXT Implementation ~/SRv6-net-prog/srext/kernel/sr_hook.chttps://github.com/netgroup/SRv6-net-prog Currently compiles with Kernel 4.17 or later.
  • 41. SRv6 in VPP Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 42. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Extending SRv6 functions https://docs.fd.io/vpp/19.04/srv6_plugin_doc.html $ git clone https://gerrit.fd.io/r/vpp ~/vpp/src/examples/srv6-sample-localsid$ ls node.c srv6_localsid_sample.h srv6_localsid_sample.c srv6_sample_localsid_doc.md
  • 43. SRv6 on P4 Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 44. table srv6_localsid { reads { ipv6.dstAddr: exact; } actions { srv6_T_Insert1; srv6_T_Insert2; srv6_T_Insert3; srv6_T_Encaps2; srv6_T_Encaps1; srv6_T_Encaps3; srv6_T_Encaps_Red2; srv6_T_Encaps_Red3; srv6_End0; srv6_End1; srv6_End_DT6; srv6_End_M_GTP6_D2; srv6_End_M_GTP6_D3; srv6_End_M_GTP6_E; } } Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 P4SRv6 (P4-14) https://github.com/ebiken/p4srv6 Control / Table definition header, parser, actions definition SRv6 related Generic GTP related
  • 45. Wireshark Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 46. Where and How SRv6 functions are implemented? Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Wireshark https://github.com/wireshark/wireshark/blob/master/epan/dissectors/packet-ipv6.c#L1066
  • 47. Conclusion | まとめ Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23
  • 48. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Conclusion 複数のオープンソース実装でテスト可能 ハードウェア(ASIC)上でもクローズドながら オープンなプログラミング言語(P4)で実装済み 成熟度はまだこれから 実装されてないSRv6 Functionも多数 コントロールプレーン(BGP/ISIS/OSPF)の不在 SRv6の実装・実験に興味ある方はお声がけを!! (特にオープンソースで) ASIC上で動作する 独自Functionをプログラム可能 Linux Network Stack | Kernel Module VPP (FD.io) まだまだ貢献可能な隙間が沢山 ☺
  • 49. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 Conclusion Multiple Open Source implementations are available to start testing SRv6 functionality. Hardware is also available on closed platform (Barefoot Tofino) but in open language (P4) Still in early stage of implementation Not all functions are implemented No control plane (BGP/ISIS/OSPF etc.) Talk to me if you are interested in testing / implementing SRv6 !! (Especially as an Open Source Software) We can start writing new SRv6 functions on hardware. Linux Network Stack | Kernel Module VPP (FD.io) Still large space left to contribute ☺
  • 50. Forefront of SRv6 Open Source Implementations | JANOG43 in Yamanashi | 2019/01/23 !!続きは “ENOG55@燕三条” で!! http://enog.jp/archives/2014 SRv6の実装例 詳しく話します 参加登録