SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
p4srv6 (P4-16)
design document
rev1.0
ENOG55 @新潟 燕三条| 2019年2月22日
海老澤 健太郎 Kentaro Ebisawa
Toyota InfoTechnology Center Co., Ltd.
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
• p4srv6 ... feature and roadmap
• P4 Difference among Architectures
• p4srv6 ... Pipeline and design
• p4srv6 Pipeline and design
• p4srv6 ... examples of config and packet dump
• p4srv6 ... control plane integration
• MAT abstraction considerations
• P4 Implementation tips
• SID List (variable length array field)
• SRv6 active segment
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
Table of Contents
p4srv6 ... feature and roadmap
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 ... feature and roadmap
What is p4srv6 ??
https://github.com/ebiken/p4srv6
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 ... feature and roadmap
Functions used in the SRv6 Mobile Uplane POC
P4 Difference among Architectures
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
Difference you should care between P4 Architectures
• Pipeline
• Metadata
• Special In/Out port
• Externs (Checksum)
Architecture is also defined using P4
https://github.com/p4lang/p4c/blob/master/p4include/v1model.p4
https://github.com/p4lang/p4c/blob/master/p4include/psa.p4
https://github.com/vmware/p4c-xdp/blob/master/p4include/xdp_model.p4
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
P4 Pipeline ... Difference among Architectures
psa.p4 ... Portable Switch Architecture
package IngressPipeline<IH, IM, NM, CI2EM, RESUBM, RECIRCM>(
IngressParser<IH, IM, RESUBM, RECIRCM> ip,
Ingress<IH, IM> ig,
IngressDeparser<IH, IM, CI2EM, RESUBM, NM> id);
package EgressPipeline<EH, EM, NM, CI2EM, CE2EM, RECIRCM>(
EgressParser<EH, EM, NM, CI2EM, CE2EM> ep,
Egress<EH, EM> eg,
EgressDeparser<EH, EM, CE2EM, RECIRCM> ed);
package PSA_Switch<IH, IM, EH, EM, NM, CI2EM, CE2EM, RESUBM, RECIRCM> (
IngressPipeline<IH, IM, NM, CI2EM, RESUBM, RECIRCM> ingress,
PacketReplicationEngine pre,
EgressPipeline<EH, EM, NM, CI2EM, CE2EM, RECIRCM> egress,
BufferingQueueingEngine bqe);
xdp_model.p4 ... XDP backend of p4c (p4c-xdp)
package xdp<H>(
xdp_parse<H> p,
xdp_switch<H> s,
xdp_deparse<H> d);
v1model.p4 ... p4-14 compatible pipeline
package V1Switch<H, M>(
Parser<H, M> p,
VerifyChecksum<H, M> vr,
Ingress<H, M> ig,
Egress<H, M> eg,
ComputeChecksum<H, M> ck,
Deparser<H> dep);
p4srv6 ... design
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 Pipeline
SwitchParser()
SwitchParser(
packet_in pkt,
out Header hdr,
inout UserMetadata user_md,
inout standard_metadata_t st_md)
state start {
transition parse_ethernet;
}
SwitchVerifyChecksum()
SwitchVerifyChecksum(
inout Header hdr,
inout UserMetadata user_md)
SwitchComputeChecksum()
SwitchComputeChecksum(
inout Header hdr,
inout UserMetadata user_md)
SwitchEgress()
SwitchEgress(
inout Header hdr,
inout UserMetadata user_md,
inout standard_metadata_t st_md)
< no control implemented so far >
SwitchDeparser()
SwitchDeparser(
packet_out pkt,
in Header hdr)
pkt.emit(hdr.ether);
pkt.emit(hdr.ipv6);
pkt.emit(hdr.srh);
pkt.emit(hdr.srh_sid);
pkt.emit(hdr.ipv4);
pkt.emit(hdr.icmp);
pkt.emit(hdr.tcp);
pkt.emit(hdr.udp);
pkt.emit(hdr.gtpu);
pkt.emit(hdr.inner_ether);
pkt.emit(hdr.inner_ipv6);
pkt.emit(hdr.inner_ipv4);
pkt.emit(hdr.inner_tcp);
pkt.emit(hdr.inner_udp);
SwitchIngress()
SwitchIngress(
inout Header hdr,
inout UserMetadata user_md,
inout standard_metadata_t st_md)
table local_mac;
SRv6() srv6;
L2Fwd(1024) l2fwd;
PortFwd() port_fwd;
No parsing of
vendor specific header
Checksum done in
Control Block dedicated for Checksum
Controls to do main packet header
and metadata processing
Architecture: v1model.p4
v1model.p4 ... p4-14 compatible pipeline
package V1Switch<H, M>(
Parser<H, M> p,
VerifyChecksum<H, M> vr,
Ingress<H, M> ig,
Egress<H, M> eg,
ComputeChecksum<H, M> ck,
Deparser<H> dep);
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 main control (Ingress) SwitchIngress()
SwitchIngress(
inout Header hdr,
inout UserMetadata user_md,
inout standard_metadata_t st_md)
table local_mac;
SRv6() srv6;
L2Fwd(1024) l2fwd;
PortFwd() port_fwd;
control SwitchIngress(
inout Header hdr,
inout UserMetadata user_md,
inout standard_metadata_t st_md) {
...
apply {
mark_to_drop(); // set default action to drop to avoid unexpected packets going out.
// apply srv6 without local_mac validation for quick testing
srv6.apply(hdr, user_md);
l2fwd.apply(hdr.ether.dstAddr, user_md.ig_md, st_md.egress_spec);
port_fwd.apply(st_md.ingress_port, st_md.egress_spec);
}
}
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 SRv6 control
control SRv6(
inout Header hdr,
inout UserMetadata user_md) {
...
apply {
if (hdr.srh.isValid()) {
srv6_set_nextsid.apply();
}
if (hdr.ipv6.isValid()) {
if(!srv6_end.apply().hit) {
srv6_transit_v6.apply();
}
} else if (hdr.ipv4.isValid()) {
if(!srv6_transit_udp.apply().hit) {
srv6_transit_v4.apply();
}
}
}
}
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 “Transit” Tables
table srv6_transit_v4 {
key = {
hdr.ipv4.dstAddr: exact;
}
actions = {
@defaultonly NoAction;
//t_encaps_sid1; // T.Encaps
//t_encaps_l2_sid1; // T.Encaps.L2
}
}
table srv6_transit_v6 {
key = {
hdr.ipv6.dstAddr: exact;
}
actions = {
@defaultonly NoAction;
// T.Insert with n+1 SIDs (DA + sid1)
t_insert_sid1;
t_insert_sid2;
t_insert_sid3;
//t_encaps_sid1; // T.Encaps
//t_encaps_l2_sid1; // T.Encaps.L2
}
}
table srv6_transit_udp {
key = {
hdr.udp.dstPort : exact;
}
actions = {
@defaultonly NoAction;
// SRv6 Mobile User Plane
t_m_tmap;
t_m_tmap_sid1; // 2 SIDs (DA + sid1)
t_m_tmap_sid2; // 3 SIDs (DA + sid1/2)
t_m_tmap_sid3; // 4 SIDs (DA + sid1/2/3)
}
}
Strategy
• Separate tables based on “key” field to reduce
“Match” resource
• “insert” is not required for ipv4 match table
(SRH require IPv6)
• Create action per number of SIDs to insert
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 “End” Tables
table srv6_end { // localsid
key = {
hdr.ipv6.dstAddr : ternary;
// hdr.srh.isValid() : ternary;
// hdr.srh.segmentLeft : ternary;
// hdr.srh.nextHdr : ternary; // for decap
}
actions = {
@defaultonly NoAction;
// SRv6 Network Program
end; // End
// SRv6 Mobile User Plane
end_m_gtp4_e; // End.M.GTP4.E
}
const default_action = NoAction;
}
Strategy
• “End” must match IPv6 address (SID = IPv6 dstAddr) thus only single table.
(Currently not implemented but)
Match field (key) to generate errors when
invalid packet received matching localsid.
p4srv6
... examples of config and packet dump
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
GTP to SRv6 with T.M.Tmap & End.M.GTP4.E (no SRH)
SRGW1 R1 SRGW2
veth1
host1
#1
vtap1
#2
vtap2
#11
vtap11
#12
vtap12
host1172.20.0.1/24 172.20.0.2/24
veth2
BMv2 simple switch with p4srv6
GTP Tunnel
(Linux Kernel)
T.M.Tmap
(BMv2)
End.M.GTP4.E
(BMv2)
GTP Tunnel
(Linux Kernel)
[ICMP][IPv4] => [ICMP][IPv4][GTP][UDP][IPv4] => [ICMP][IPv4] =>
(SRv6 with no SRH)
[ICMP][IPv4][IPv6] => [ICMP][IPv4][GTP][UDP][IPv4] =>
① ①②
① ②
SRv6 SID : fc34:5678:ac14:0002:ac14:0001:0000:0064
Dst: 172.20.0.2
Src: 172.20.0.1
TEID: 100
PREFIX
SRv6 SID
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
GTP to SRv6 with T.M.Tmap & End.M.GTP4.E (with SRH)
GTP Tunnel
(Linux Kernel)
T.M.Tmap
(BMv2)
End.M.GTP4.E
(BMv2)
GTP Tunnel
(Linux Kernel)
[ICMP][IPv4] => [ICMP][IPv4][GTP][UDP][IPv4] => [ICMP][IPv4] =>(SRv6 with SRH)
[ICMP][IPv4][SRH][IPv6] =>
[ICMP][IPv4][GTP][UDP][IPv4] =>
① ②End
(BMv2)
SRGW1 SRGW2
veth1
host1
#1
vtap1
#2
vtap2
#11
vtap11
#12
vtap12
host1172.20.0.1/24 172.20.0.2/24
veth2
BMv2 simple switch with p4srv6
#13
vtap13
#14
vtap14
R1
p4srv6 ... control plane integration
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
To Be Updated in Future Rev.
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
Match Action Table (MAT) abstraction considerations
To Be Updated in Future Rev.
P4 Implementation tips
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
SID List (variable length array field)
state start {
transition parse_ethernet;
}
state parse_ethernet {
pkt.extract(hdr.ether);
transition
select(hdr.ether.etherType) {
ETH_P_IPV4 : parse_ipv4;
ETH_P_IPV6 : parse_ipv6;
//ETH_P_ARP : parse_arp;
//ETH_P_VLAN : parse_vlan;
default : accept;
}
state parse_ipv4 {
pkt.extract(hdr.ipv4);
transition
select(hdr.ipv4.protocol) {
IPPROTO_TCP : parse_tcp;
IPPROTO_UDP : parse_udp;
default : accept;
}
} state parse_ipv6 {
pkt.extract(hdr.ipv6);
transition
select(hdr.ipv6.nextHdr) {
IPPROTO_TCP : parse_tcp;
IPPROTO_UDP : parse_udp;
IPPROTO_ROUTE : parse_srh;
IPPROTO_IPV4 :
parse_inner_ipv4;
IPPROTO_IPV6 :
parse_inner_ipv6;
default : accept;
}
}
header SRH_SegmentList_h {
bit<128> sid;
}
struct Header {
Ethernet_h ether;
IPv6_h ipv6;
SRH_h srh;
SRH_SegmentList_h[SRH_SID_MAX] srh_sid;
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
SID List (variable length array field)
/*** PARSE SRH (SRv6) ***/
state parse_srh {
pkt.extract(hdr.srh);
transition parse_srh_sid_0;
}
#define PARSE_SRH_SID(curr, next) ¥
state parse_srh_sid_##curr { ¥
pkt.extract(hdr.srh_sid[curr]); ¥
transition select(hdr.srh.lastEntry) { ¥
curr : parse_srh_next_header; ¥
default : parse_srh_sid_##next; ¥
} ¥
} ¥
// switch_srv6.p4:SRH_SID_MAX 4
PARSE_SRH_SID(0, 1)
PARSE_SRH_SID(1, 2)
PARSE_SRH_SID(2, 3)
state parse_srh_sid_3 {
pkt.extract(hdr.srh_sid[3]);
transition select(hdr.srh.lastEntry) {
3 : parse_srh_next_header;
// v1model: no default rule:
// all other packets rejected
}
}
state parse_srh_next_header {
transition select(hdr.srh.nextHdr) {
IPPROTO_TCP : parse_tcp;
IPPROTO_UDP : parse_udp;
IPPROTO_IPV4 : parse_inner_ipv4;
IPPROTO_IPV6 : parse_inner_ipv6;
default : accept;
}
}
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
SRv6 active segment
action end() {
// 1. IF NH=SRH and SL > 0
// 2. decrement SL
hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1;
// 3. update the IPv6 DA with SRH[SL]
hdr.ipv6.dstAddr = hdr.srh_sid[hdr.segmentsLeft-1];
...
Compiler ERROR!!
Cannot use array with variable
index in action statement.
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
SRv6 active segment
table srv6_set_nextsid { // helper table
key = {
hdr.srh.segmentsLeft : exact;
}
actions = {
NoAction;
set_nextsid_1;
set_nextsid_2;
set_nextsid_3;
set_nextsid_4;
}
const default_action = NoAction;
const entries = {
(1) : set_nextsid_1();
(2) : set_nextsid_2();
(3) : set_nextsid_3();
(4) : set_nextsid_4();
}
}
action set_nextsid_1() {
user_md.srv6.nextsid = hdr.srh_sid[0].sid;
}
action set_nextsid_2() {
user_md.srv6.nextsid = hdr.srh_sid[1].sid;
}
action set_nextsid_3() {
user_md.srv6.nextsid = hdr.srh_sid[2].sid;
}
action set_nextsid_4() {
user_md.srv6.nextsid = hdr.srh_sid[3].sid;
}
Use constant entries to set next SID to
metadata without user configuration.
Let me know if you have better idea ☺
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
SRv6 active segment
action end() {
// 1. IF NH=SRH and SL > 0
// 2. decrement SL
hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1;
// 3. update the IPv6 DA with SRH[SL]
hdr.ipv6.dstAddr = hdr.srh_sid[hdr.segmentsLeft-1];
...
action end() {
// 1. IF NH=SRH and SL > 0
// 2. decrement SL
hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1;
// 3. update the IPv6 DA with SRH[SL]
hdr.ipv6.dstAddr = user_md.srv6.nextsid;
...
Compiler ERROR!!
Cannot use array with variable
index in action statement.
Set active segment from metadata
p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
p4srv6 ... feature and roadmap
https://github.com/ebiken/p4srv6

Más contenido relacionado

Was ist angesagt?

Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2eucariot
 
P4 Introduction
P4 Introduction P4 Introduction
P4 Introduction Netronome
 
Linkmeup v076 (2019-06)
Linkmeup v076 (2019-06)Linkmeup v076 (2019-06)
Linkmeup v076 (2019-06)eucariot
 
Host Data Plane Acceleration: SmartNIC Deployment Models
Host Data Plane Acceleration: SmartNIC Deployment ModelsHost Data Plane Acceleration: SmartNIC Deployment Models
Host Data Plane Acceleration: SmartNIC Deployment ModelsNetronome
 
Operational Experience of MAP-E
Operational Experience of MAP-EOperational Experience of MAP-E
Operational Experience of MAP-EAkira Nakagawa
 
RISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRay Song
 
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
 
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...Shinya Takamaeda-Y
 
UKNOF16 - Enhancing BGP
UKNOF16 - Enhancing BGPUKNOF16 - Enhancing BGP
UKNOF16 - Enhancing BGPRob Shakir
 
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PROIDEA
 
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...Shuichi Ohkubo
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK
 
gcov和clang中的实现
gcov和clang中的实现gcov和clang中的实现
gcov和clang中的实现Ray Song
 
Implementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowImplementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowAPNIC
 
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Jeff Squyres
 
Cilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPThomas Graf
 
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
 
6 Lo Wpan Tutorial 20080206
6 Lo Wpan Tutorial 200802066 Lo Wpan Tutorial 20080206
6 Lo Wpan Tutorial 20080206pauldeng
 

Was ist angesagt? (20)

Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2Linkmeup v076(2019-06).2
Linkmeup v076(2019-06).2
 
P4 Introduction
P4 Introduction P4 Introduction
P4 Introduction
 
Linkmeup v076 (2019-06)
Linkmeup v076 (2019-06)Linkmeup v076 (2019-06)
Linkmeup v076 (2019-06)
 
Host Data Plane Acceleration: SmartNIC Deployment Models
Host Data Plane Acceleration: SmartNIC Deployment ModelsHost Data Plane Acceleration: SmartNIC Deployment Models
Host Data Plane Acceleration: SmartNIC Deployment Models
 
Operational Experience of MAP-E
Operational Experience of MAP-EOperational Experience of MAP-E
Operational Experience of MAP-E
 
RISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLDRISC-V Linker Relaxation and LLD
RISC-V Linker Relaxation and LLD
 
Dynamic user trace
Dynamic user traceDynamic user trace
Dynamic user trace
 
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)
 
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
A High Performance Heterogeneous FPGA-based Accelerator with PyCoRAM (Runner ...
 
UKNOF16 - Enhancing BGP
UKNOF16 - Enhancing BGPUKNOF16 - Enhancing BGP
UKNOF16 - Enhancing BGP
 
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
PLNOG 13: P. Kupisiewicz, O. Pelerin: Make IOS-XE Troubleshooting Easy – Pack...
 
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...
2015.7.17 JANOG36 BGP Flowspec Interoperability Test @ Interop Tokyo 2015 Sho...
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus Router
 
gcov和clang中的实现
gcov和clang中的实现gcov和clang中的实现
gcov和clang中的实现
 
Implementing MPLS Services using Openflow
Implementing MPLS Services using OpenflowImplementing MPLS Services using Openflow
Implementing MPLS Services using Openflow
 
Chap05 gtp 03_kh
Chap05 gtp 03_khChap05 gtp 03_kh
Chap05 gtp 03_kh
 
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
Open MPI Explorations in Process Affinity (EuroMPI'13 presentation)
 
Cilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDP
 
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
 
6 Lo Wpan Tutorial 20080206
6 Lo Wpan Tutorial 200802066 Lo Wpan Tutorial 20080206
6 Lo Wpan Tutorial 20080206
 

Ähnlich wie p4srv6 (P4-16) design document rev1.0

RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析Mr. Vengineer
 
R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R Vivian S. Zhang
 
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...Hsien-Hsin Sean Lee, Ph.D.
 
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
 
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)Go Go Gadget! - An Intro to Return Oriented Programming (ROP)
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)Miguel Arroyo
 
Open daylight and Openstack
Open daylight and OpenstackOpen daylight and Openstack
Open daylight and OpenstackDave Neary
 
XDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @CloudflareXDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @CloudflareC4Media
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4Open Networking Summits
 
True stories on the analysis of network activity using Python
True stories on the analysis of network activity using PythonTrue stories on the analysis of network activity using Python
True stories on the analysis of network activity using Pythondelimitry
 
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 TranslationSatoru Matsushima
 
FOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioFOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioDaniel-Constantin Mierla
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_mapslcplcp1
 
Ipv6 test plan for opnfv poc v2.2 spirent-vctlab
Ipv6 test plan for opnfv poc v2.2 spirent-vctlabIpv6 test plan for opnfv poc v2.2 spirent-vctlab
Ipv6 test plan for opnfv poc v2.2 spirent-vctlabIben Rodriguez
 
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015Codemotion
 
A whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerA whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerNikita Popov
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptablesKernel TLV
 
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015Kohei KaiGai
 
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in JavaRuntime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in JavaJuan Fumero
 

Ähnlich wie p4srv6 (P4-16) design document rev1.0 (20)

RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
 
FPGA_BasedGCD
FPGA_BasedGCDFPGA_BasedGCD
FPGA_BasedGCD
 
R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R R workshop xx -- Parallel Computing with R
R workshop xx -- Parallel Computing with R
 
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
 
3D-DRESD Lorenzo Pavesi
3D-DRESD Lorenzo Pavesi3D-DRESD Lorenzo Pavesi
3D-DRESD Lorenzo Pavesi
 
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
 
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)Go Go Gadget! - An Intro to Return Oriented Programming (ROP)
Go Go Gadget! - An Intro to Return Oriented Programming (ROP)
 
Open daylight and Openstack
Open daylight and OpenstackOpen daylight and Openstack
Open daylight and Openstack
 
XDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @CloudflareXDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @Cloudflare
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
True stories on the analysis of network activity using Python
True stories on the analysis of network activity using PythonTrue stories on the analysis of network activity using Python
True stories on the analysis of network activity using Python
 
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
 
FOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioFOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and Kamailio
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_maps
 
Ipv6 test plan for opnfv poc v2.2 spirent-vctlab
Ipv6 test plan for opnfv poc v2.2 spirent-vctlabIpv6 test plan for opnfv poc v2.2 spirent-vctlab
Ipv6 test plan for opnfv poc v2.2 spirent-vctlab
 
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015
Trash Robotic Router Platform - David Melendez - Codemotion Rome 2015
 
A whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizerA whirlwind tour of the LLVM optimizer
A whirlwind tour of the LLVM optimizer
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
 
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015PG-Strom - GPGPU meets PostgreSQL, PGcon2015
PG-Strom - GPGPU meets PostgreSQL, PGcon2015
 
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in JavaRuntime Code Generation and Data Management for Heterogeneous Computing in Java
Runtime Code Generation and Data Management for Heterogeneous Computing in Java
 

Mehr von 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
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越Kentaro 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
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4Kentaro Ebisawa
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd IntroductionKentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414Kentaro 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
 

Mehr von 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
 
"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)
 
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 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
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.
 

Último

Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Alkin Tezuysal
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIVijayananda Mohire
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingMAGNIntelligence
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 

Último (20)

Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAI
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced Computing
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 

p4srv6 (P4-16) design document rev1.0

  • 1. p4srv6 (P4-16) design document rev1.0 ENOG55 @新潟 燕三条| 2019年2月22日 海老澤 健太郎 Kentaro Ebisawa Toyota InfoTechnology Center Co., Ltd. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 2. • p4srv6 ... feature and roadmap • P4 Difference among Architectures • p4srv6 ... Pipeline and design • p4srv6 Pipeline and design • p4srv6 ... examples of config and packet dump • p4srv6 ... control plane integration • MAT abstraction considerations • P4 Implementation tips • SID List (variable length array field) • SRv6 active segment p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 Table of Contents
  • 3. p4srv6 ... feature and roadmap p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 4. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 ... feature and roadmap What is p4srv6 ?? https://github.com/ebiken/p4srv6
  • 5. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 ... feature and roadmap Functions used in the SRv6 Mobile Uplane POC
  • 6. P4 Difference among Architectures p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 7. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 Difference you should care between P4 Architectures • Pipeline • Metadata • Special In/Out port • Externs (Checksum) Architecture is also defined using P4 https://github.com/p4lang/p4c/blob/master/p4include/v1model.p4 https://github.com/p4lang/p4c/blob/master/p4include/psa.p4 https://github.com/vmware/p4c-xdp/blob/master/p4include/xdp_model.p4
  • 8. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 P4 Pipeline ... Difference among Architectures psa.p4 ... Portable Switch Architecture package IngressPipeline<IH, IM, NM, CI2EM, RESUBM, RECIRCM>( IngressParser<IH, IM, RESUBM, RECIRCM> ip, Ingress<IH, IM> ig, IngressDeparser<IH, IM, CI2EM, RESUBM, NM> id); package EgressPipeline<EH, EM, NM, CI2EM, CE2EM, RECIRCM>( EgressParser<EH, EM, NM, CI2EM, CE2EM> ep, Egress<EH, EM> eg, EgressDeparser<EH, EM, CE2EM, RECIRCM> ed); package PSA_Switch<IH, IM, EH, EM, NM, CI2EM, CE2EM, RESUBM, RECIRCM> ( IngressPipeline<IH, IM, NM, CI2EM, RESUBM, RECIRCM> ingress, PacketReplicationEngine pre, EgressPipeline<EH, EM, NM, CI2EM, CE2EM, RECIRCM> egress, BufferingQueueingEngine bqe); xdp_model.p4 ... XDP backend of p4c (p4c-xdp) package xdp<H>( xdp_parse<H> p, xdp_switch<H> s, xdp_deparse<H> d); v1model.p4 ... p4-14 compatible pipeline package V1Switch<H, M>( Parser<H, M> p, VerifyChecksum<H, M> vr, Ingress<H, M> ig, Egress<H, M> eg, ComputeChecksum<H, M> ck, Deparser<H> dep);
  • 9. p4srv6 ... design p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 10. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 Pipeline SwitchParser() SwitchParser( packet_in pkt, out Header hdr, inout UserMetadata user_md, inout standard_metadata_t st_md) state start { transition parse_ethernet; } SwitchVerifyChecksum() SwitchVerifyChecksum( inout Header hdr, inout UserMetadata user_md) SwitchComputeChecksum() SwitchComputeChecksum( inout Header hdr, inout UserMetadata user_md) SwitchEgress() SwitchEgress( inout Header hdr, inout UserMetadata user_md, inout standard_metadata_t st_md) < no control implemented so far > SwitchDeparser() SwitchDeparser( packet_out pkt, in Header hdr) pkt.emit(hdr.ether); pkt.emit(hdr.ipv6); pkt.emit(hdr.srh); pkt.emit(hdr.srh_sid); pkt.emit(hdr.ipv4); pkt.emit(hdr.icmp); pkt.emit(hdr.tcp); pkt.emit(hdr.udp); pkt.emit(hdr.gtpu); pkt.emit(hdr.inner_ether); pkt.emit(hdr.inner_ipv6); pkt.emit(hdr.inner_ipv4); pkt.emit(hdr.inner_tcp); pkt.emit(hdr.inner_udp); SwitchIngress() SwitchIngress( inout Header hdr, inout UserMetadata user_md, inout standard_metadata_t st_md) table local_mac; SRv6() srv6; L2Fwd(1024) l2fwd; PortFwd() port_fwd; No parsing of vendor specific header Checksum done in Control Block dedicated for Checksum Controls to do main packet header and metadata processing Architecture: v1model.p4 v1model.p4 ... p4-14 compatible pipeline package V1Switch<H, M>( Parser<H, M> p, VerifyChecksum<H, M> vr, Ingress<H, M> ig, Egress<H, M> eg, ComputeChecksum<H, M> ck, Deparser<H> dep);
  • 11. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 main control (Ingress) SwitchIngress() SwitchIngress( inout Header hdr, inout UserMetadata user_md, inout standard_metadata_t st_md) table local_mac; SRv6() srv6; L2Fwd(1024) l2fwd; PortFwd() port_fwd; control SwitchIngress( inout Header hdr, inout UserMetadata user_md, inout standard_metadata_t st_md) { ... apply { mark_to_drop(); // set default action to drop to avoid unexpected packets going out. // apply srv6 without local_mac validation for quick testing srv6.apply(hdr, user_md); l2fwd.apply(hdr.ether.dstAddr, user_md.ig_md, st_md.egress_spec); port_fwd.apply(st_md.ingress_port, st_md.egress_spec); } }
  • 12. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 SRv6 control control SRv6( inout Header hdr, inout UserMetadata user_md) { ... apply { if (hdr.srh.isValid()) { srv6_set_nextsid.apply(); } if (hdr.ipv6.isValid()) { if(!srv6_end.apply().hit) { srv6_transit_v6.apply(); } } else if (hdr.ipv4.isValid()) { if(!srv6_transit_udp.apply().hit) { srv6_transit_v4.apply(); } } } }
  • 13. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 “Transit” Tables table srv6_transit_v4 { key = { hdr.ipv4.dstAddr: exact; } actions = { @defaultonly NoAction; //t_encaps_sid1; // T.Encaps //t_encaps_l2_sid1; // T.Encaps.L2 } } table srv6_transit_v6 { key = { hdr.ipv6.dstAddr: exact; } actions = { @defaultonly NoAction; // T.Insert with n+1 SIDs (DA + sid1) t_insert_sid1; t_insert_sid2; t_insert_sid3; //t_encaps_sid1; // T.Encaps //t_encaps_l2_sid1; // T.Encaps.L2 } } table srv6_transit_udp { key = { hdr.udp.dstPort : exact; } actions = { @defaultonly NoAction; // SRv6 Mobile User Plane t_m_tmap; t_m_tmap_sid1; // 2 SIDs (DA + sid1) t_m_tmap_sid2; // 3 SIDs (DA + sid1/2) t_m_tmap_sid3; // 4 SIDs (DA + sid1/2/3) } } Strategy • Separate tables based on “key” field to reduce “Match” resource • “insert” is not required for ipv4 match table (SRH require IPv6) • Create action per number of SIDs to insert
  • 14. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 “End” Tables table srv6_end { // localsid key = { hdr.ipv6.dstAddr : ternary; // hdr.srh.isValid() : ternary; // hdr.srh.segmentLeft : ternary; // hdr.srh.nextHdr : ternary; // for decap } actions = { @defaultonly NoAction; // SRv6 Network Program end; // End // SRv6 Mobile User Plane end_m_gtp4_e; // End.M.GTP4.E } const default_action = NoAction; } Strategy • “End” must match IPv6 address (SID = IPv6 dstAddr) thus only single table. (Currently not implemented but) Match field (key) to generate errors when invalid packet received matching localsid.
  • 15. p4srv6 ... examples of config and packet dump p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 16. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 GTP to SRv6 with T.M.Tmap & End.M.GTP4.E (no SRH) SRGW1 R1 SRGW2 veth1 host1 #1 vtap1 #2 vtap2 #11 vtap11 #12 vtap12 host1172.20.0.1/24 172.20.0.2/24 veth2 BMv2 simple switch with p4srv6 GTP Tunnel (Linux Kernel) T.M.Tmap (BMv2) End.M.GTP4.E (BMv2) GTP Tunnel (Linux Kernel) [ICMP][IPv4] => [ICMP][IPv4][GTP][UDP][IPv4] => [ICMP][IPv4] => (SRv6 with no SRH) [ICMP][IPv4][IPv6] => [ICMP][IPv4][GTP][UDP][IPv4] => ① ①② ① ② SRv6 SID : fc34:5678:ac14:0002:ac14:0001:0000:0064 Dst: 172.20.0.2 Src: 172.20.0.1 TEID: 100 PREFIX SRv6 SID
  • 17. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 GTP to SRv6 with T.M.Tmap & End.M.GTP4.E (with SRH) GTP Tunnel (Linux Kernel) T.M.Tmap (BMv2) End.M.GTP4.E (BMv2) GTP Tunnel (Linux Kernel) [ICMP][IPv4] => [ICMP][IPv4][GTP][UDP][IPv4] => [ICMP][IPv4] =>(SRv6 with SRH) [ICMP][IPv4][SRH][IPv6] => [ICMP][IPv4][GTP][UDP][IPv4] => ① ②End (BMv2) SRGW1 SRGW2 veth1 host1 #1 vtap1 #2 vtap2 #11 vtap11 #12 vtap12 host1172.20.0.1/24 172.20.0.2/24 veth2 BMv2 simple switch with p4srv6 #13 vtap13 #14 vtap14 R1
  • 18. p4srv6 ... control plane integration p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 To Be Updated in Future Rev.
  • 19. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 Match Action Table (MAT) abstraction considerations To Be Updated in Future Rev.
  • 20. P4 Implementation tips p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 21. SID List (variable length array field) state start { transition parse_ethernet; } state parse_ethernet { pkt.extract(hdr.ether); transition select(hdr.ether.etherType) { ETH_P_IPV4 : parse_ipv4; ETH_P_IPV6 : parse_ipv6; //ETH_P_ARP : parse_arp; //ETH_P_VLAN : parse_vlan; default : accept; } state parse_ipv4 { pkt.extract(hdr.ipv4); transition select(hdr.ipv4.protocol) { IPPROTO_TCP : parse_tcp; IPPROTO_UDP : parse_udp; default : accept; } } state parse_ipv6 { pkt.extract(hdr.ipv6); transition select(hdr.ipv6.nextHdr) { IPPROTO_TCP : parse_tcp; IPPROTO_UDP : parse_udp; IPPROTO_ROUTE : parse_srh; IPPROTO_IPV4 : parse_inner_ipv4; IPPROTO_IPV6 : parse_inner_ipv6; default : accept; } } header SRH_SegmentList_h { bit<128> sid; } struct Header { Ethernet_h ether; IPv6_h ipv6; SRH_h srh; SRH_SegmentList_h[SRH_SID_MAX] srh_sid; p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0
  • 22. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 SID List (variable length array field) /*** PARSE SRH (SRv6) ***/ state parse_srh { pkt.extract(hdr.srh); transition parse_srh_sid_0; } #define PARSE_SRH_SID(curr, next) ¥ state parse_srh_sid_##curr { ¥ pkt.extract(hdr.srh_sid[curr]); ¥ transition select(hdr.srh.lastEntry) { ¥ curr : parse_srh_next_header; ¥ default : parse_srh_sid_##next; ¥ } ¥ } ¥ // switch_srv6.p4:SRH_SID_MAX 4 PARSE_SRH_SID(0, 1) PARSE_SRH_SID(1, 2) PARSE_SRH_SID(2, 3) state parse_srh_sid_3 { pkt.extract(hdr.srh_sid[3]); transition select(hdr.srh.lastEntry) { 3 : parse_srh_next_header; // v1model: no default rule: // all other packets rejected } } state parse_srh_next_header { transition select(hdr.srh.nextHdr) { IPPROTO_TCP : parse_tcp; IPPROTO_UDP : parse_udp; IPPROTO_IPV4 : parse_inner_ipv4; IPPROTO_IPV6 : parse_inner_ipv6; default : accept; } }
  • 23. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 SRv6 active segment action end() { // 1. IF NH=SRH and SL > 0 // 2. decrement SL hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1; // 3. update the IPv6 DA with SRH[SL] hdr.ipv6.dstAddr = hdr.srh_sid[hdr.segmentsLeft-1]; ... Compiler ERROR!! Cannot use array with variable index in action statement.
  • 24. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 SRv6 active segment table srv6_set_nextsid { // helper table key = { hdr.srh.segmentsLeft : exact; } actions = { NoAction; set_nextsid_1; set_nextsid_2; set_nextsid_3; set_nextsid_4; } const default_action = NoAction; const entries = { (1) : set_nextsid_1(); (2) : set_nextsid_2(); (3) : set_nextsid_3(); (4) : set_nextsid_4(); } } action set_nextsid_1() { user_md.srv6.nextsid = hdr.srh_sid[0].sid; } action set_nextsid_2() { user_md.srv6.nextsid = hdr.srh_sid[1].sid; } action set_nextsid_3() { user_md.srv6.nextsid = hdr.srh_sid[2].sid; } action set_nextsid_4() { user_md.srv6.nextsid = hdr.srh_sid[3].sid; } Use constant entries to set next SID to metadata without user configuration. Let me know if you have better idea ☺
  • 25. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 SRv6 active segment action end() { // 1. IF NH=SRH and SL > 0 // 2. decrement SL hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1; // 3. update the IPv6 DA with SRH[SL] hdr.ipv6.dstAddr = hdr.srh_sid[hdr.segmentsLeft-1]; ... action end() { // 1. IF NH=SRH and SL > 0 // 2. decrement SL hdr.srh.segmentsLeft = hdr.srh.segmentsLeft - 1; // 3. update the IPv6 DA with SRH[SL] hdr.ipv6.dstAddr = user_md.srv6.nextsid; ... Compiler ERROR!! Cannot use array with variable index in action statement. Set active segment from metadata
  • 26. p4srv6 (P4-16) design document | ENOG55 in Nigata Tsubame Sanjyo | 2019/02/22 rev1.0 p4srv6 ... feature and roadmap https://github.com/ebiken/p4srv6