SlideShare a Scribd company logo
1 of 20
Download to read offline
VPP Prototyping for
Stateless SRv6/GTP-U Translation
FD.io / VPP ユーザ有志の会 #1
2019/05/28 @東京ミッドタウン
Kentaro Ebisawa | Twitter: @ebiken
IETF 104 Hackathon Implementation
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
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)
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
SRv6 on VPP (by FD.io project)
Supported functions as of 2019/05/27
http://www.segment-routing.net/open-software/vpp/
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
IETF 104 Hackathon @Prague, Czech
https://trac.ietf.org/trac/ietf/meeting/wiki/104hackathon
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
IETF 104 Hackathon @Prague, Czech
Target Function Description
End.MAP Forwards the receiving IPv6 packet and update the IPv6 DA
with mapped SID.
End.M.GTP6.D Decap the receiving GTP/UDP/IPv6 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy
End.M.GTP6.E Decap the receiving IPv6+SRH packet and encap with
IPv6/UDP/GTP-U header based on the address/ID mapping
rule.
End.M.GTP4.E
(SRv6 -> GTP-U)
Decap the receiving IPv6+SRH packet and encap with
IPv4/UDP/GTP-U header base on the address/ID mapping
rule.
T.M.Tmap
(GTP-U -> SRv6)
Decap the receiving GTP/UDP/IPv4 packet and encap with
IPv6 header, or IPv6 header with SRH based on the
address/ID mapping rule and binding SR-Policy.
End.Limit Limit the throughput of the packet flow with mapped SID.
**NEW** Translate GTP-U Echo Request to ICMP Echo Request and vice
versa
**NEW** Translate GTP-U Echo Reply to ICMP Echo Request and vice
versa
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
Hackathon Topology and CLI (ConfigCommands)
Hack target
VPP1
VPP4
D4::
IPv4 over GTP/UDP/IPv4 IPv4 over SRH/IPv6
VPP2
D2::
IPv4 over IPv6 IPv4 over GTP/UDP/IPv4
T.M.Tmap End.M.GTP4.E
VPP3
D3::
scapy scapy
T.M.Tmap
sr policy add bsid <bsid> next A1:: next B1:: next C1:: (weight 5) (fib-table 3) gtp4_removal
sr-prefix <ipv6_prefix_interworking>/<mask> local-prefix <src_prefix>/<mask>
sr steer l3 <IPv4 dst addr of GTP-U>/<mask> via bsid <bsid>
End.M.GTP4.E
sr localsid (del) address <IPv6 address of SRGW>/<mask> behavior end.m.gtp4.e
• https://wiki.fd.io/view/VPP/Software_Architecture
• VLIB
• Vnet
• https://wiki.fd.io/view/VPP/Feature_Arcs
• https://wiki.fd.io/view/VPP/DPOs_and_Feature_Arcs
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
VPP Architecture Reference (Wiki Pages)
POC SRv6 Implementations
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
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
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
SRv6 on VPP (Vector Packet Processing)
src/vnet/srv6$ grep VLIB_REGISTER_NODE *
sr_localsid.c:VLIB_REGISTER_NODE (sr_localsid_d_node) = {
sr_localsid.c:VLIB_REGISTER_NODE (sr_localsid_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_v4_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_l2_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_insert_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_b_insert_node) = {
sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_b_encaps_node) = {
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
SRv6 on VPP (Vector Packet Processing)
src/plugins$ grep -r VLIB_REGISTER_NODE | grep srv6
srv6-gtp/node.c:VLIB_REGISTER_NODE (srv6_gtp_node) = {
srv6-end/node.c:VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = {
srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad_localsid_node) = {
srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad2_rewrite_node) = {
srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad4_rewrite_node) = {
srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad6_rewrite_node) = {
srv6-am/node.c:VLIB_REGISTER_NODE (srv6_am_localsid_node) = {
srv6-am/node.c:VLIB_REGISTER_NODE (srv6_am_rewrite_node) = {
srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as_localsid_node) = {
srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as2_rewrite_node) = {
srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as4_rewrite_node) = {
srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as6_rewrite_node) = {
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
https://github.com/filvarga/srv6-mobile
https://github.com/filvarga/srv6-mobile/tree/ietf104-hackathon/extras/ietf104
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
Finding modified source code
Last commit before IETF Hackathon
1d85b1eef299bcdaa4df193fa70b7c90e9b2809f
Pablo Test Implementation
srv6-gtp
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
Finding modified source code
ebiken@lab:~/20190527-vppug/srv6-mobile$ git diff --name-only 1d85b1eef299bcdaa4df193fa70b7c90e9b2809f
extras/ietf104/Dockerfile.j2
extras/ietf104/README.md
extras/ietf104/requirements.txt
extras/ietf104/runner.py
extras/ietf104/startup.conf.j2
src/plugins/srv6-ad/ad.c
src/plugins/srv6-ad/node.c
src/plugins/srv6-end/CMakeLists.txt
src/plugins/srv6-end/node.c
src/plugins/srv6-end/srv6_end.c
src/plugins/srv6-end/srv6_end.h
src/vnet/dpo/dpo.c
src/vnet/srv6/sr.h
src/vnet/srv6/sr_api.c
src/vnet/srv6/sr_policy_rewrite.c
test/test_srv6_end.py
ebiken@lab:~/20190527-vppug/srv6-mobile$ git branch -a
* ietf104-hackathon
remotes/origin/HEAD -> origin/ietf104-hackathon
remotes/origin/ietf104-hackathon
remotes/origin/master
remotes/origin/satoru
Generic Code.
CLI/Configuration.
T.M.Tmap のコード
End.M.GTP4.E : src/plugins/srv6-end/
diff 調査メモ
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
add plugins
src/plugins/srv6-end/CMakeLists.txt src/plugins/srv6_gtp.am
srv6-endがhackathonで実装したコード
• src/vnet/srv6/sr.h
• GTPU Header 構造体(ip4_gtpu_header_t)の定義
• T.M.TmapのFlagやlocal_prefixの追加(line 94,95)
• sr_policy_add のプロトタイプ宣言
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
diff 調査メモ
• src/vnet/srv6/sr_policy_rewrite.c
• T.M.Tmap の実装
• Registration
• VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_v4_node) = {
$ diff --git a/src/vnet/srv6/sr_policy_rewrite.c b/src/vnet/srv6/sr_policy_rewrite.c
sr_policy_rewrite_encaps_v4 (vlib_main_t * vm, vlib_node_runtime_t * node,
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
diff 調査メモ
• src/plugins/srv6-end$
• End.M.GTP4.Eの実装
• Registration
• VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = {
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
diff 調査メモ
> src/plugins/srv6-end/node.c
211 VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = {
212 .name = "srv6-end-m-gtp4-e",
213 .vector_size = sizeof (u32),
214 .format_trace = format_srv6_end_rewrite_trace,
215 .type = VLIB_NODE_TYPE_INTERNAL,
217 .n_errors = ARRAY_LEN (srv6_end_error_strings),
218 .error_strings = srv6_end_error_strings,
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
diff 調査メモ
220 .n_next_nodes = SRV6_END_M_GTP4_E_N_NEXT,
221 .next_nodes = {
222 [SRV6_END_M_GTP4_E_NEXT_DROP] = "error-drop",
223 [SRV6_END_M_GTP4_E_NEXT_LOOKUP] = "ip4-lookup",
224 },
225 };
Appendix
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
POC SRv6 Implementations
VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
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

More Related Content

What's hot

Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro Ebisawa
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPThomas Graf
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたakira6592
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみたMasakazu Asama
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating SystemThomas Graf
 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Ray Jenkins
 
Demystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesDemystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesCumulus Networks
 
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Valeriy Kravchuk
 
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014  Segment Routing TI-LFA Fast ReRouteMPLS WC 2014  Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014 Segment Routing TI-LFA Fast ReRouteBruno Decraene
 
Service Function Chaining with SRv6
Service Function Chaining with SRv6Service Function Chaining with SRv6
Service Function Chaining with SRv6Ahmed AbdelSalam
 
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~Ryousei Takano
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 

What's hot (20)

Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
eBPF Basics
eBPF BasicseBPF Basics
eBPF Basics
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDPDockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
DockerCon 2017 - Cilium - Network and Application Security with BPF and XDP
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
MAP 実装してみた
MAP 実装してみたMAP 実装してみた
MAP 実装してみた
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
 
Demystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesDemystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode series
 
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
Tracing MariaDB server with bpftrace - MariaDB Server Fest 2021
 
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014  Segment Routing TI-LFA Fast ReRouteMPLS WC 2014  Segment Routing TI-LFA Fast ReRoute
MPLS WC 2014 Segment Routing TI-LFA Fast ReRoute
 
Service Function Chaining with SRv6
Service Function Chaining with SRv6Service Function Chaining with SRv6
Service Function Chaining with SRv6
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
SRv6 study
SRv6 studySRv6 study
SRv6 study
 

Similar to IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation

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 ImplementationKentaro Ebisawa
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsKentaro Ebisawa
 
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-typeKentaro Ebisawa
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersRaphaël PINSON
 
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)Igalia
 
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuffBuildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuffPatrick Shuff
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerSasha Goldshtein
 
MAP-E as IPv4 over IPv6 Technology
MAP-E as IPv4 over IPv6 TechnologyMAP-E as IPv4 over IPv6 Technology
MAP-E as IPv4 over IPv6 TechnologyAkira Nakagawa
 
MAP-E as IPv4 over IPv6 Technology - with some operational experiences
MAP-E as IPv4 over IPv6 Technology - with some operational experiencesMAP-E as IPv4 over IPv6 Technology - with some operational experiences
MAP-E as IPv4 over IPv6 Technology - with some operational experiencesAPNIC
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd IntroductionKentaro Ebisawa
 
JPNE MAP-E Deployment (IETF92@Dallas)
JPNE MAP-E Deployment (IETF92@Dallas)JPNE MAP-E Deployment (IETF92@Dallas)
JPNE MAP-E Deployment (IETF92@Dallas)Akira Nakagawa
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2eucariot
 
Révolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamiqueRévolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamiqueRaphaël PINSON
 
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...APNIC
 
You got database in my cloud!
You got database  in my cloud!You got database  in my cloud!
You got database in my cloud!Liz Frost
 
Operational Experience of MAP-E
Operational Experience of MAP-EOperational Experience of MAP-E
Operational Experience of MAP-EAkira Nakagawa
 
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.0Kentaro Ebisawa
 
Tech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageTech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageCodiLime
 

Similar to IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation (20)

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
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source Implementations
 
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
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
 
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
Lightweight 4-over-6: One step further Dual-Stack Lite Networks (RIPE 76)
 
My First FD.io VPP
My First FD.io VPPMy First FD.io VPP
My First FD.io VPP
 
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuffBuildinga billionuserloadbalancer may2015-sre-con15europe-shuff
Buildinga billionuserloadbalancer may2015-sre-con15europe-shuff
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF Primer
 
MAP-E as IPv4 over IPv6 Technology
MAP-E as IPv4 over IPv6 TechnologyMAP-E as IPv4 over IPv6 Technology
MAP-E as IPv4 over IPv6 Technology
 
MAP-E as IPv4 over IPv6 Technology - with some operational experiences
MAP-E as IPv4 over IPv6 Technology - with some operational experiencesMAP-E as IPv4 over IPv6 Technology - with some operational experiences
MAP-E as IPv4 over IPv6 Technology - with some operational experiences
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
 
JPNE MAP-E Deployment (IETF92@Dallas)
JPNE MAP-E Deployment (IETF92@Dallas)JPNE MAP-E Deployment (IETF92@Dallas)
JPNE MAP-E Deployment (IETF92@Dallas)
 
Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2
 
Révolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamiqueRévolution eBPF - un noyau dynamique
Révolution eBPF - un noyau dynamique
 
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...
AutoIP -A mechanism for IPv6 migration and IPv4 sunsetting by Shishio Tsuchiy...
 
You got database in my cloud!
You got database  in my cloud!You got database  in my cloud!
You got database in my cloud!
 
Operational Experience of MAP-E
Operational Experience of MAP-EOperational Experience of MAP-E
Operational Experience of MAP-E
 
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
 
Tech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming languageTech Talk - Konrad Gawda : P4 programming language
Tech Talk - Konrad Gawda : P4 programming language
 
SPDK benchmark memo
SPDK benchmark memoSPDK benchmark memo
SPDK benchmark memo
 

More from Kentaro Ebisawa

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)Kentaro Ebisawa
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Kentaro Ebisawa
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来Kentaro Ebisawa
 
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 を繋ぐ APIKentaro Ebisawa
 
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 2019Kentaro Ebisawa
 
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-SRHKentaro Ebisawa
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Kentaro Ebisawa
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlKentaro Ebisawa
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Kentaro Ebisawa
 
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 EraKentaro Ebisawa
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4Kentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向"OPEN NETWORKING" に向けた Management / Data Plane の動向
"OPEN NETWORKING" に向けた Management / Data Plane の動向Kentaro Ebisawa
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)Kentaro Ebisawa
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)Kentaro Ebisawa
 
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/27Kentaro Ebisawa
 
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.Kentaro Ebisawa
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 

More from 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
 
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
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
 
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
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
 
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
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
"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
 

Recently uploaded

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation

  • 1. VPP Prototyping for Stateless SRv6/GTP-U Translation FD.io / VPP ユーザ有志の会 #1 2019/05/28 @東京ミッドタウン Kentaro Ebisawa | Twitter: @ebiken IETF 104 Hackathon Implementation VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
  • 2. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン 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)
  • 3. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン SRv6 on VPP (by FD.io project) Supported functions as of 2019/05/27 http://www.segment-routing.net/open-software/vpp/
  • 4. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン IETF 104 Hackathon @Prague, Czech https://trac.ietf.org/trac/ietf/meeting/wiki/104hackathon
  • 5. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン IETF 104 Hackathon @Prague, Czech Target Function Description End.MAP Forwards the receiving IPv6 packet and update the IPv6 DA with mapped SID. End.M.GTP6.D Decap the receiving GTP/UDP/IPv6 packet and encap with IPv6 header, or IPv6 header with SRH based on the address/ID mapping rule and binding SR-Policy End.M.GTP6.E Decap the receiving IPv6+SRH packet and encap with IPv6/UDP/GTP-U header based on the address/ID mapping rule. End.M.GTP4.E (SRv6 -> GTP-U) Decap the receiving IPv6+SRH packet and encap with IPv4/UDP/GTP-U header base on the address/ID mapping rule. T.M.Tmap (GTP-U -> SRv6) Decap the receiving GTP/UDP/IPv4 packet and encap with IPv6 header, or IPv6 header with SRH based on the address/ID mapping rule and binding SR-Policy. End.Limit Limit the throughput of the packet flow with mapped SID. **NEW** Translate GTP-U Echo Request to ICMP Echo Request and vice versa **NEW** Translate GTP-U Echo Reply to ICMP Echo Request and vice versa
  • 6. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン Hackathon Topology and CLI (ConfigCommands) Hack target VPP1 VPP4 D4:: IPv4 over GTP/UDP/IPv4 IPv4 over SRH/IPv6 VPP2 D2:: IPv4 over IPv6 IPv4 over GTP/UDP/IPv4 T.M.Tmap End.M.GTP4.E VPP3 D3:: scapy scapy T.M.Tmap sr policy add bsid <bsid> next A1:: next B1:: next C1:: (weight 5) (fib-table 3) gtp4_removal sr-prefix <ipv6_prefix_interworking>/<mask> local-prefix <src_prefix>/<mask> sr steer l3 <IPv4 dst addr of GTP-U>/<mask> via bsid <bsid> End.M.GTP4.E sr localsid (del) address <IPv6 address of SRGW>/<mask> behavior end.m.gtp4.e
  • 7. • https://wiki.fd.io/view/VPP/Software_Architecture • VLIB • Vnet • https://wiki.fd.io/view/VPP/Feature_Arcs • https://wiki.fd.io/view/VPP/DPOs_and_Feature_Arcs VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン VPP Architecture Reference (Wiki Pages)
  • 8. POC SRv6 Implementations VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン 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
  • 9. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン SRv6 on VPP (Vector Packet Processing) src/vnet/srv6$ grep VLIB_REGISTER_NODE * sr_localsid.c:VLIB_REGISTER_NODE (sr_localsid_d_node) = { sr_localsid.c:VLIB_REGISTER_NODE (sr_localsid_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_v4_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_l2_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_insert_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_b_insert_node) = { sr_policy_rewrite.c:VLIB_REGISTER_NODE (sr_policy_rewrite_b_encaps_node) = {
  • 10. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン SRv6 on VPP (Vector Packet Processing) src/plugins$ grep -r VLIB_REGISTER_NODE | grep srv6 srv6-gtp/node.c:VLIB_REGISTER_NODE (srv6_gtp_node) = { srv6-end/node.c:VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = { srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad_localsid_node) = { srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad2_rewrite_node) = { srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad4_rewrite_node) = { srv6-ad/node.c:VLIB_REGISTER_NODE (srv6_ad6_rewrite_node) = { srv6-am/node.c:VLIB_REGISTER_NODE (srv6_am_localsid_node) = { srv6-am/node.c:VLIB_REGISTER_NODE (srv6_am_rewrite_node) = { srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as_localsid_node) = { srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as2_rewrite_node) = { srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as4_rewrite_node) = { srv6-as/node.c:VLIB_REGISTER_NODE (srv6_as6_rewrite_node) = {
  • 11. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン https://github.com/filvarga/srv6-mobile https://github.com/filvarga/srv6-mobile/tree/ietf104-hackathon/extras/ietf104
  • 12. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン Finding modified source code Last commit before IETF Hackathon 1d85b1eef299bcdaa4df193fa70b7c90e9b2809f Pablo Test Implementation srv6-gtp
  • 13. VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン Finding modified source code ebiken@lab:~/20190527-vppug/srv6-mobile$ git diff --name-only 1d85b1eef299bcdaa4df193fa70b7c90e9b2809f extras/ietf104/Dockerfile.j2 extras/ietf104/README.md extras/ietf104/requirements.txt extras/ietf104/runner.py extras/ietf104/startup.conf.j2 src/plugins/srv6-ad/ad.c src/plugins/srv6-ad/node.c src/plugins/srv6-end/CMakeLists.txt src/plugins/srv6-end/node.c src/plugins/srv6-end/srv6_end.c src/plugins/srv6-end/srv6_end.h src/vnet/dpo/dpo.c src/vnet/srv6/sr.h src/vnet/srv6/sr_api.c src/vnet/srv6/sr_policy_rewrite.c test/test_srv6_end.py ebiken@lab:~/20190527-vppug/srv6-mobile$ git branch -a * ietf104-hackathon remotes/origin/HEAD -> origin/ietf104-hackathon remotes/origin/ietf104-hackathon remotes/origin/master remotes/origin/satoru Generic Code. CLI/Configuration. T.M.Tmap のコード End.M.GTP4.E : src/plugins/srv6-end/
  • 14. diff 調査メモ VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン add plugins src/plugins/srv6-end/CMakeLists.txt src/plugins/srv6_gtp.am srv6-endがhackathonで実装したコード
  • 15. • src/vnet/srv6/sr.h • GTPU Header 構造体(ip4_gtpu_header_t)の定義 • T.M.TmapのFlagやlocal_prefixの追加(line 94,95) • sr_policy_add のプロトタイプ宣言 VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン diff 調査メモ
  • 16. • src/vnet/srv6/sr_policy_rewrite.c • T.M.Tmap の実装 • Registration • VLIB_REGISTER_NODE (sr_policy_rewrite_encaps_v4_node) = { $ diff --git a/src/vnet/srv6/sr_policy_rewrite.c b/src/vnet/srv6/sr_policy_rewrite.c sr_policy_rewrite_encaps_v4 (vlib_main_t * vm, vlib_node_runtime_t * node, VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン diff 調査メモ
  • 17. • src/plugins/srv6-end$ • End.M.GTP4.Eの実装 • Registration • VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = { VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン diff 調査メモ
  • 18. > src/plugins/srv6-end/node.c 211 VLIB_REGISTER_NODE (srv6_end_m_gtp4_e) = { 212 .name = "srv6-end-m-gtp4-e", 213 .vector_size = sizeof (u32), 214 .format_trace = format_srv6_end_rewrite_trace, 215 .type = VLIB_NODE_TYPE_INTERNAL, 217 .n_errors = ARRAY_LEN (srv6_end_error_strings), 218 .error_strings = srv6_end_error_strings, VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン diff 調査メモ 220 .n_next_nodes = SRV6_END_M_GTP4_E_N_NEXT, 221 .next_nodes = { 222 [SRV6_END_M_GTP4_E_NEXT_DROP] = "error-drop", 223 [SRV6_END_M_GTP4_E_NEXT_LOOKUP] = "ip4-lookup", 224 }, 225 };
  • 19. Appendix VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン
  • 20. POC SRv6 Implementations VPP Prototyping for Stateless SRv6/GTP-U Translation | FD.io / VPP ユーザ有志の会 #1 | 2019/05/28 @東京ミッドタウン 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