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

Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
Kernel TLV
 

What's hot (20)

"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
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)
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
 
Using VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear ContainersUsing VPP and SRIO-V with Clear Containers
Using VPP and SRIO-V with Clear Containers
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
BPF - in-kernel virtual machine
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machine
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
 
Segment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use CasesSegment Routing Technology Deep Dive and Advanced Use Cases
Segment Routing Technology Deep Dive and Advanced Use Cases
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_maps
 
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPF
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Introduction to eBPF and XDP
Introduction to eBPF and XDPIntroduction to eBPF and XDP
Introduction to eBPF and XDP
 
DPDK In Depth
DPDK In DepthDPDK In Depth
DPDK In Depth
 

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

The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF Primer
Sasha Goldshtein
 

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

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
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
 
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 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
ネットワーク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
 

Recently uploaded

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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

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