SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Copyright © 2019 - Barefoot Networks. Public Presentation
P4? That's Easy!
March 9, 2019
Vladimir Gurevich
Copyright © 2019 - Barefoot Networks. Public Presentation
Agenda
• How high-speed devices work
• P4 by example
• What's next
2
Copyright © 2019 - Barefoot Networks. Public Presentation
Bringing Data Plane back in the NOS
3
Management Plane
Configuration CLI/GUI/SNMP...
Control Plane
Protocol Stacks
ARP
??
STPIS-IS
PIM-SM
BGP
???
Data Plane
That’s how
packets should
be processed!
Requirements
That’s how I
want to build my
network!
Copyright © 2019 - Barefoot Networks. Public Presentation
Why is it important?
C
Control and Customization. Make the device behave exactly as you want
R
Robustness and Reliability. Reduce the risk by removing unused features
E
Energy Efficiency. Use only what you need
A
Agility. Add features as you go
T
Telemetry and Tracing. Be able to see inside the Data Plane
E
Exclusivity and Differentiation. No need to share your IP with the chip vendor
4
Copyright © 2019 - Barefoot Networks. Public Presentation
Programmable vs. Fixed Pipelined Architecture
Buffer
FixedParser
IPv4
Address
Table
IPv4
Logic
ACL Logic
ACL
TCAM
MPLS
Tag Table
MPLS
Logic
Ethernet
MAC
Address
Table
Ethernet
Logic
Fixed Pipeline: features and table-sizes are baked in at design time
Buffer
ProgrammableParser
M A
M
M
M
M
M
A
A
A
A
A
M A
M
M
M
M
M
A
A
A
A
A
M A
M
M
M
M
M
A
A
A
A
A
…
M A
M
M
M
M
M
A
A
A
A
A
Programmable Pipeline: all stages identical, customer-defined match-action logic
You declare which
headers are recognized
You declare what tables are needed and how packets are processed
Copyright © 2019 - Barefoot Networks. Public Presentation
PISA: Protocol-Independent Switch Architecture
6
Match+Action
Stage (Unit)
Memory ALU
Programmable
Parser
Programmable
Deparser
Programmable Match-Action Pipeline
Programmer declares the
headers that should be
recognized and their order
in the packet
Programmer defines the
tables and the exact
processing algorithm
Programmer declares
how the output packet will
look on the wire
User-defined Headers and
Metadata
Copyright © 2019 - Barefoot Networks. Public Presentation
PISA in Action
• Packet is parsed into individual headers
(parsed representation)
• Headers and intermediate results can be
used for matching and actions
• Headers can be modified, added or
removed
• Packet is deparsed (serialized)
7
• Feed-forward architecture
• Stage-local resources
• One packet per clock
• Constant processing latency
• Longer pipe – more packets processed in
parallel
• Multiple simultaneous lookups are possible
Match+Action
Stage (Unit)
Programmable
Parser
Programmable
Deparser
Programmable Match-Action Pipeline
Copyright © 2019 - Barefoot Networks. Public Presentation
Building a Real Switch
Programmable components Fixed-Function Components
8
• Ingress and Egress Pipeline
◦Parser
◦Match-Action Pipeline
◦Deparser
• Packet I/O (MAC/SerDes/DMA)
• Packet Replication Engine
• Traffic Manager
Ingress pipeline Egress pipelineIntrinsic Metadata
User-defined Headers
and Metadata
Packet
Replication
Engine
&
Traffic
Manager
PacketIngress
PacketEgress
Packet data in
Packet data out
Copyright © 2019 - Barefoot Networks. Public Presentation
P414 Program Sections
9
parser parse_ethernet {
extract(ethernet);
return select(ethernet.ethertype) {
0x8100 : parse_vlan_tag;
0x0800 : parse_ipv4;
0x8847 : parse_mpls;
default: ingress;
}
table port_table { … }
control ingress {
apply(port_table);
if (l2_meta.vlan_tags == 0) {
process_assign_vlan();
}
}
header_type ethernet_t { … }
header_type l2_metadata_t { … }
header ethernet_t ethernet;
header vlan_tag_t vlan_tag[2];
metadata l2_metadata_t l2_meta;
Headers and Metadata
Parser
Tables, Actions, Controls and other objects
PRE/
TM
PacketInput
PacketOutput
Copyright © 2019 - Barefoot Networks. Public Presentation
/* -*- P4_14 -*- */
/* Standard includes for Tofino */
#include <tofino/constants.p4>
#include <tofino/primitives.p4>
#include <tofino/intrinsic_metadata.p4>
/******************* H E A D E R T Y P E S *************************/
header_type ethernet_t {
fields {
dstAddr : 48;
srcAddr : 48;
etherType : 16;
}
}
/*********************** M E T A D A T A *****************************/
/*********************** P A R S E R *********************************/
header ethernet_t ethernet;
parser start {
extract(ethernet);
return ingress;
}
/************** I N G R E S S P R O C E S S I N G *****************/
control ingress {
}
/**************** E G R E S S P R O C E S S I N G *****************/
control egress {
}
P414 Program Template for Tofino
10
• P4 uses C preprocessor
◦ Include Tofino-specific definitions
◦ Use it to structure your programs
• C and C++style comments are supported
◦ Use first line to choose Emacs mode
• P4 objects can be defined in any order
◦ There is no requirement to declare before using
What does this
program do?
Copyright © 2019 - Barefoot Networks. Public Presentation
Defining the Header Types
11
header_type ethernet_t {
fields {
dstAddr : 48;
srcAddr : 48;
etherType : 16;
}
}
header_type vlan_tag_t {
fields {
pcp : 3;
cfi : 1;
vid : 12;
etherType : 16;
}
}
header_type ipv4_t {
fields {
version : 4;
ihl : 4;
tos : 8;
totalLen : 16;
identification : 16;
flags : 3;
fragOffset : 13;
ttl : 8;
protocol : 8;
hdrChecksum : 16;
srcAddr : 32;
dstAddr : 32;
}
}
Copyright © 2019 - Barefoot Networks. Public Presentation
header ethernet_t ethernet;
header vlan_tag_t vlan_tag;
header ipv4_t ipv4;
parser start {
extract(ethernet);
return select(ethernet.etherType) {
0x8100, 0x9100 : parse_vlan_tag;
0x0800 : parse_ipv4;
default : ingress;
}
}
parser parse_vlan_tag {
extract(vlan_tag);
return select(vlan_tag.etherType) {
0x0800 : parse_ipv4;
default : ingress;
}
}
parser parse_ipv4 {
extract(ipv4);
return ingress;
}
Defining the Parser
12
• Define the header instances
◦ That’s the headers the program will process
• Define parser states
◦ Parsing starts with the “start” state
• Inside the states
◦ Extract headers
◦ Transition to other states
■ Both exact and ternary matching are supported
Copyright © 2019 - Barefoot Networks. Public Presentation
action send(port) {
modify_field(ig_intr_md_for_tm.ucast_egress_port, port);
}
action discard() {
modify_field(ig_intr_md_for_tm.drop_ctl, 1); /* drop() */
}
table ipv4_host {
reads {
ipv4.dstAddr : exact;
}
actions {
send;
discard;
}
size : 131072;
}
table ipv4_lpm {
reads {
ipv4.dstAddr : lpm;
}
actions {
send;
discard;
}
default_action: send(64);
size : 12288;
}
Defining Tables and Actions
13
• Actions consist of P4 primitive sequences
• Actions can have parameters (action data)
• Intrinsic metadata controls the device
• Tables specify
◦ The key (match fields and match type)
◦ List of possible actions
◦ Other attributes (default action, size, etc.)
■ Note: Attribute order is fixed in P414 grammar
Architecture-specific
Intrinsic Metadata
Architecture-specific
Intrinsic Metadata
ipv4.dstAddr action data
192.168.1.1 send port=1
192.168.1.2 send port=2
192.168.1.3 discard ---
Not Set
ipv4.dstAddr / prefix action data
192.168.1.0 / 24 send port=1
10.0.16.0 / 22 send port=5
192.168.0.0 / 16 discard --
send port=64 (CPU)
ipv4_host
ipv4_lpm
To be filled by the
control plane!
Copyright © 2019 - Barefoot Networks. Public Presentation
/* Ingress Pipeline Processing */
control ingress {
if (valid(ipv4)) {
apply(ipv4_host) {
miss {
apply(ipv4_lpm);
}
}
}
}
/* Egress Pipeline Processing */
control egress {
}
Defining the Processing Algorithm
14
• Direct Acyclic Graph processing (no loops)
• apply() – perform match-action in a table
• apply() {} – use match results to determine
further processing
◦ hit/miss clause
◦ selected action clause
• Conditional statements
◦ Comparison operations (==, !=, >, <, >=, <=)
◦ Logical operations (not, and, or)
◦ Header validity checks
• Make sure the program operates on valid
headers!
Copyright © 2019 - Barefoot Networks. Public Presentation
Add counters
15
• Direct counters extend table entries
• Counting is done automatically
ipv4.dstAddr action data Packets/Bytes
192.168.1.1 send port=1 xxx / yyy
192.168.1.2 send port=2 zzz / ww
192.168.1.3 discard ---
Not Set
ipv4.dstAddr / prefix action data Packets/Bytes
192.168.1.0 / 24 send port=1 xxx / yyy
10.0.16.0 / 22 send port=5
192.168.0.0 / 16 discard --
send port=64 (CPU)
ipv4_host
ipv4_lpm
/* Just add this code... */
counter ipv4_host_counter {
type: packets_and_bytes;
direct: ipv4_host;
}
counter ipv4_lpm_counter {
type: packets_and_bytes;
direct: ipv4_lpm;
}
Copyright © 2019 - Barefoot Networks. Public Presentation
Add Port-Based VRF
16
Different lookup domains for different
customers
VRF ipv4.dstAddr action data Packets/Bytes
0 192.168.1.1 send port=1 xxx / yyy
1 192.168.1.1 send port=7 zzz / ww
1 192.168.1.3 discard ---
Not Set
VRF ipv4.dstAddr / prefix action data Packets/Bytes
0 192.168.1.0 / 24 send port=1 xxx / yyy
1 192.168.1.0 / 24 send port=5
2 192.168.0.0 / 16 discard --
send port=64 (CPU)
ipv4_host
ipv4_lpm
ingress_port action data
0 set_vrf vrf_id=2
12 set_vrf vrf_id=1
4 set_vrf vrf_id=2
Not Set
vrf
/* New Code */
header_type l3_meta_t {
fields {
vrf_id : 8;
}
}
metadata l3_meta_t l3_meta;
action set_vrf(vrf) {
modify_field(l3_meta.vrf_id, vrf);
}
table vrf {
reads { ig_intr_md.ingress_port : exact; }
actions { set_vrf; }
}
table ipv4_host {
reads {
l3_meta.vrf_id : exact;
ipv4.dstAddr : exact;
}
. . .
}
control ingress {
apply(vrf);
if (valid(ipv4)) {
apply(ipv4_host) { miss { apply(ipv4_lpm); } }
}
}
Architecture-specific
Intrinsic Metadata
Copyright © 2019 - Barefoot Networks. Public Presentation
Add Packet Modifications and Checksum Handling
17
action l3_switch(new_mac_da, new_mac_sa, port) {
modify_field(ethernet.dstAddr, new_mac_da);
modify_field(ethernet.srcAddr, new_mac_sa);
add_to_field(ipv4.ttl, -1);
send(port);
}
action nat_tcp(new_src_ip, new_dst_ip,
new_tcp_sport, new_tcp_dport) {
modify_field(ipv4.srcAddr, new_src_ip);
modify_field(ipv4.dstAddr, new_dst_ip);
modify_field(tcp.srcPort, new_tcp_sport);
modify_field(tcp.dstPort, new_tcp_dport);
}
action untag_packet() {
modify_field(ethernet.etherType, vlan_tag.etherType);
remove_header(vlan_tag);
}
field_list ipv4_checksum_list {
ipv4.version;
ipv4.ihl;
ipv4.diffserv;
ipv4.totalLen;
ipv4.identification;
ipv4.flags;
ipv4.fragOffset;
ipv4.ttl;
ipv4.protocol;
ipv4.srcAddr;
ipv4.dstAddr;
}
field_list_calculation ipv4_checksum {
input { ipv4_checksum_list; }
algorithm : csum16;
output_width : 16;
}
calculated_field ipv4.hdrChecksum {
verify ipv4_checksum;
update ipv4_checksum;
}
Copyright © 2019 - Barefoot Networks. Public Presentation
counter packet_size_stats {
type : packets;
direct : packet_size_hist;
min_width : 32;
}
action nop() { }
table packet_size_hist {
reads {
eg_intr_md.pkt_length : range;
}
actions {
nop;
}
}
control egress {
apply(packet_size_hist);
}
Example: Building a Histogram of Packet Sizes
18
• Problem:
◦ Calculate a histogram of different packet sizes
that passed through the switch
• Solution:
◦ Use range matching on packet length
■ Only available in the egress pipeline
range is a standard match
type in P4
0
50
100
150
200
250
300
0-63
64-127
128-255
256-511
512-1023
1024-…
1537…
Packets
64..127
128..255
256..511
0..63
1024..1536
512..1023
1537..16384
Match Fields
nop
nop
nop
nop
nop
nop
nop
Action
packet counts
counter A
counter Z
Counter
table packet_size_hist counter packet_size_stats
Architecture-specific Intrinsic
Metadata
Copyright © 2019 - Barefoot Networks. Public Presentation
Ethernet Header
EtherType = 0xDEAD
+----------------+----------------+
| Box Number (0..65536) |
+----------------+----------------+
| Operation: 0 – drop, 1 – pickup |
+----------------+----------------+
| Data Destination (port #) |
+----------------+----------------+
| |
+- TOP SECRET -+- DATA (32b) -+
| |
+----------------+----------------+
header_type dead_drop_t {
fields {
box_num : 16;
box_op : 16;
data_dest : 16;
box_data : 32;
}
}
header dead_drop_t dead_drop;
Dead-Drop Protocol
19
• Two operations:
◦ Drop data (with further delivery instructions)
◦ Pickup data
• Tamper-proof
◦ Cannot pick data more than once
Copyright © 2019 - Barefoot Networks. Public Presentation
Parsing Dead-Drop Protocol
P4 Scapy
20
header_type dead_drop_t {
fields {
box_num : 16;
box_op : 16;
data_dest : 16;
box_data : 32;
}
}
header dead_drop_t dead_drop;
parser parse_ethernet {
extract(ethernet);
select(ethernet.etherType) {
...
0xDEAD : parse_dead_drop;
default: ingress;
}
}
parser parse_dead_drop {
extract(dead_drop);
return ingress;
}
class DeadDrop(Packet):
fields_desc = [ BitField("box_num", 0, 16),
BitField("box_op", 0, 16),
BitField("data_dest", 511, 16),
BitField("box_data", 0xDEADBABE, 32)
]
name = “Spy Dead-Drop Protocol”
bind_layers(Ether, DeadDrop, type=0xDEAD)
sendp(Ether()/DeadDrop(box_num=5, box_op=0,
data_dest=3, box_data=0x12345678),
iface="veth1")
• When DeadDrop() follows Ether(), set Ether.type=0xDEAD
• When Ether.type==0xDEAD, next header is DeadDrop()
In Scaly, each field
has a default value
Copyright © 2019 - Barefoot Networks. Public Presentation
Dead Drop Implementation (P414 specification)
Data Store (Registers) Actions and Tables
21
register dead_drop_data {
width : 32;
instance_count : 65536;
}
register dead_drop_dest {
width : 16;
instance_count : 65536;
}
action drop_message() {
register_write(dead_drop_data, dead_drop.box_num, dead_drop.box_data);
register_write(dead_drop_dest, dead_drop.box_num, dead_drop.data_dest);
modify_field(ig_intr_md_for_tm.drop_ctl, 1); /* drop */
exit();
}
action pickup_message() {
register_read(dead_drop.box_data, dead_drop_data, dead_drop.box_num);
register_read(ig_intr_md_for_tm.ucast_egress_port,
dead_drop_dest, dead_drop.box_num);
register_write(dead_drop_dest, dead_drop.box_num, 511 /* drop */);
register_write(dead_drop_data, dead_drop.box_num, 0);
exit();
}
table dead_drop {
reads {
dead_drop.box_op : exact;
}
actions {
drop_message;
pickup_message;
}
size : 2;
}
control ingress {
if (valid(ipv4)) {
apply(ipv4_host) {
. . .
}
if (valid(dead_drop)) {
apply(dead_drop);
}
}
Copyright © 2019 - Barefoot Networks. Public Presentation
Brief History and Trivia
22
• May 2013: Initial idea and the name “P4”
• July 2014: First paper (SIGCOMM CCR)
• Aug 2014: First P414 Draft Specification (v0.9.8)
• Sep 2014: P414 Specification released (v1.0.0)
• Jan 2015: P414 v1.0.1
• Mar 2015: P414 v1.0.2
• Nov 2016: P414 v1.0.3
• May 2017: P414 v1.0.4
• Apr 2016: P416 – first commits
• Dec 2016: First P416 Draft Specification
• May 2017: P416 Specification released
• . . .
• Official Spelling P4_16 on terminals, P416 in publications
Copyright © 2019 - Barefoot Networks. Public Presentation
The P4 Language Consortium
• Consortium of academic
and industry members
• Open source, evolving,
domain-specific language
• Permissive Apache license,
code on GitHub today
• Membership is free:
contributions are welcome
• Independent, set up as a
California nonprofit
23
Copyright © 2019 - Barefoot Networks. Public Presentation
Systems
P4.org Membership
Academia/
Research
Targets
Operators/
End Users
Original P4 Paper Authors:
• Open source, evolving, domain-specific language
• Permissive Apache license, code on GitHub today
• Membership is free: contributions are welcome
• Independent, set up as a California nonprofit
Solutions/
Services
Copyright © 2019 - Barefoot Networks. Public Presentation
P416 Design Goals
• Logical Evolution of P414
◦ Same basic building blocks and concepts
◦ More expressive and convenient to use
◦ More formally defined semantics
■ Strong Type System
◦ Support for good software engineering practices
• Target-Independence
◦ Support for a variety of targets (ASICs, FPGAs, NICs, software)
■ Language/Architecture separation
■ Flexible data plane model
• Non-goals
◦ New constructs
◦ General-purpose programming
25
Copyright © 2019 - Barefoot Networks. Public Presentation
To Learn More
• Become a Barefoot Customer or joint FASTER program
• Attend BA-101 (P414) or BA-102 (P416) class
26
Copyright © 2019 - Barefoot Networks. Public Presentation
Thank you

Contenu connexe

Tendances

BGP Advance Technique by Steven & James
BGP Advance Technique by Steven & JamesBGP Advance Technique by Steven & James
BGP Advance Technique by Steven & JamesFebrian ‎
 
BGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing OptimisationBGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing OptimisationAndy Davidson
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Kentaro Ebisawa
 
BGP Traffic Engineering with SDN Controller
BGP Traffic Engineering with SDN ControllerBGP Traffic Engineering with SDN Controller
BGP Traffic Engineering with SDN ControllerAPNIC
 
WAN SDN meet Segment Routing
WAN SDN meet Segment RoutingWAN SDN meet Segment Routing
WAN SDN meet Segment RoutingAPNIC
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGPDuane Bodle
 
20170925 onos and p4
20170925 onos and p420170925 onos and p4
20170925 onos and p4Yi Tseng
 
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
 
Programming the Network Data Plane
Programming the Network Data PlaneProgramming the Network Data Plane
Programming the Network Data PlaneC4Media
 
Stratix V FPGA Intro Presentation
Stratix V FPGA Intro PresentationStratix V FPGA Intro Presentation
Stratix V FPGA Intro PresentationAltera Corporation
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingMoises Silva
 
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
 
Segment Routing
Segment RoutingSegment Routing
Segment RoutingAPNIC
 
Segment Routing for Dummies
Segment Routing for DummiesSegment Routing for Dummies
Segment Routing for DummiesGary Jan
 
Segment Routing Advanced Use Cases - Cisco Live 2016 USA
Segment Routing Advanced Use Cases - Cisco Live 2016 USASegment Routing Advanced Use Cases - Cisco Live 2016 USA
Segment Routing Advanced Use Cases - Cisco Live 2016 USAJose Liste
 
Segment routing tutorial
Segment routing tutorialSegment routing tutorial
Segment routing tutorialYi-Sung Chiu
 
Routing Protocol EIGRP
Routing Protocol EIGRPRouting Protocol EIGRP
Routing Protocol EIGRPDmitry Figol
 
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusMaximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusJanel Heilbrunn
 

Tendances (20)

BGP Advance Technique by Steven & James
BGP Advance Technique by Steven & JamesBGP Advance Technique by Steven & James
BGP Advance Technique by Steven & James
 
BGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing OptimisationBGP Traffic Engineering / Routing Optimisation
BGP Traffic Engineering / Routing Optimisation
 
BGP Monitoring Protocol
BGP Monitoring ProtocolBGP Monitoring Protocol
BGP Monitoring Protocol
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
 
BGP
BGPBGP
BGP
 
BGP Traffic Engineering with SDN Controller
BGP Traffic Engineering with SDN ControllerBGP Traffic Engineering with SDN Controller
BGP Traffic Engineering with SDN Controller
 
WAN SDN meet Segment Routing
WAN SDN meet Segment RoutingWAN SDN meet Segment Routing
WAN SDN meet Segment Routing
 
Troubleshooting BGP
Troubleshooting BGPTroubleshooting BGP
Troubleshooting BGP
 
20170925 onos and p4
20170925 onos and p420170925 onos and p4
20170925 onos and p4
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0
 
Programming the Network Data Plane
Programming the Network Data PlaneProgramming the Network Data Plane
Programming the Network Data Plane
 
Stratix V FPGA Intro Presentation
Stratix V FPGA Intro PresentationStratix V FPGA Intro Presentation
Stratix V FPGA Intro Presentation
 
FreeTDM PRI Passive Recording
FreeTDM PRI Passive RecordingFreeTDM PRI Passive Recording
FreeTDM PRI Passive Recording
 
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
 
Segment Routing
Segment RoutingSegment Routing
Segment Routing
 
Segment Routing for Dummies
Segment Routing for DummiesSegment Routing for Dummies
Segment Routing for Dummies
 
Segment Routing Advanced Use Cases - Cisco Live 2016 USA
Segment Routing Advanced Use Cases - Cisco Live 2016 USASegment Routing Advanced Use Cases - Cisco Live 2016 USA
Segment Routing Advanced Use Cases - Cisco Live 2016 USA
 
Segment routing tutorial
Segment routing tutorialSegment routing tutorial
Segment routing tutorial
 
Routing Protocol EIGRP
Routing Protocol EIGRPRouting Protocol EIGRP
Routing Protocol EIGRP
 
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusMaximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN Bus
 

Similaire à Linkmeup v076(2019-06).2

Introduction to Programmable Networks by Clarence Anslem, Intel
Introduction to Programmable Networks by Clarence Anslem, IntelIntroduction to Programmable Networks by Clarence Anslem, Intel
Introduction to Programmable Networks by Clarence Anslem, IntelMyNOG
 
OSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchOSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchChun Ming Ou
 
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
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
Android 5.0 Lollipop platform change investigation report
Android 5.0 Lollipop platform change investigation reportAndroid 5.0 Lollipop platform change investigation report
Android 5.0 Lollipop platform change investigation reporthidenorly
 
P4_tutorial.pdf
P4_tutorial.pdfP4_tutorial.pdf
P4_tutorial.pdfPramodhN3
 
NFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkMichelle Holley
 
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...IRJET Journal
 
P4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxP4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxtampham61268
 
Rina p4 rina workshop
Rina p4   rina workshopRina p4   rina workshop
Rina p4 rina workshopEduard Grasa
 
Ccna 2 Final V4 1
Ccna 2 Final V4 1Ccna 2 Final V4 1
Ccna 2 Final V4 1stigerj
 
Irati goals and achievements - 3rd RINA Workshop
Irati goals and achievements - 3rd RINA WorkshopIrati goals and achievements - 3rd RINA Workshop
Irati goals and achievements - 3rd RINA WorkshopEleni Trouva
 
PLNOG 13: Krzysztof Mazepa: BGP FlowSpec
PLNOG 13: Krzysztof Mazepa: BGP FlowSpecPLNOG 13: Krzysztof Mazepa: BGP FlowSpec
PLNOG 13: Krzysztof Mazepa: BGP FlowSpecPROIDEA
 
Sprint 131
Sprint 131Sprint 131
Sprint 131ManageIQ
 
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor
 
How our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical RoutersHow our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical RoutersSteffen Gebert
 
Dpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPDpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPHemant Agrawal
 
Enabling Applications to Exploit SmartNICs and FPGAs
Enabling Applications to Exploit SmartNICs and FPGAsEnabling Applications to Exploit SmartNICs and FPGAs
Enabling Applications to Exploit SmartNICs and FPGAsinside-BigData.com
 
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
 

Similaire à Linkmeup v076(2019-06).2 (20)

Introduction to Programmable Networks by Clarence Anslem, Intel
Introduction to Programmable Networks by Clarence Anslem, IntelIntroduction to Programmable Networks by Clarence Anslem, Intel
Introduction to Programmable Networks by Clarence Anslem, Intel
 
OSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable SwitchOSN days 2019 - Open Networking and Programmable Switch
OSN days 2019 - Open Networking and Programmable Switch
 
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
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
Android 5.0 Lollipop platform change investigation report
Android 5.0 Lollipop platform change investigation reportAndroid 5.0 Lollipop platform change investigation report
Android 5.0 Lollipop platform change investigation report
 
P4_tutorial.pdf
P4_tutorial.pdfP4_tutorial.pdf
P4_tutorial.pdf
 
NFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function FrameworkNFF-GO (YANFF) - Yet Another Network Function Framework
NFF-GO (YANFF) - Yet Another Network Function Framework
 
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...
IRJET- Assessment of Network Protocol Packet Analysis in IPV4 and IPV6 on Loc...
 
P4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptxP4+ONOS SRv6 tutorial.pptx
P4+ONOS SRv6 tutorial.pptx
 
Rina p4 rina workshop
Rina p4   rina workshopRina p4   rina workshop
Rina p4 rina workshop
 
Ccna 2 Final V4 1
Ccna 2 Final V4 1Ccna 2 Final V4 1
Ccna 2 Final V4 1
 
Irati goals and achievements - 3rd RINA Workshop
Irati goals and achievements - 3rd RINA WorkshopIrati goals and achievements - 3rd RINA Workshop
Irati goals and achievements - 3rd RINA Workshop
 
PLNOG 13: Krzysztof Mazepa: BGP FlowSpec
PLNOG 13: Krzysztof Mazepa: BGP FlowSpecPLNOG 13: Krzysztof Mazepa: BGP FlowSpec
PLNOG 13: Krzysztof Mazepa: BGP FlowSpec
 
Sprint 131
Sprint 131Sprint 131
Sprint 131
 
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
BitVisor Summit 8「3. AQC107 Driver and Changes coming to network API」
 
How our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical RoutersHow our Cloudy Mindsets Approached Physical Routers
How our Cloudy Mindsets Approached Physical Routers
 
Dpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCPDpdk: rte_security: An update and introducing PDCP
Dpdk: rte_security: An update and introducing PDCP
 
Enabling Applications to Exploit SmartNICs and FPGAs
Enabling Applications to Exploit SmartNICs and FPGAsEnabling Applications to Exploit SmartNICs and FPGAs
Enabling Applications to Exploit SmartNICs and FPGAs
 
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
 
OpenDataPlane Project
OpenDataPlane ProjectOpenDataPlane Project
OpenDataPlane Project
 

Plus de eucariot

Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3eucariot
 
Stc metrotek plum_space_smart_sfp_linkmeup_01
Stc metrotek plum_space_smart_sfp_linkmeup_01Stc metrotek plum_space_smart_sfp_linkmeup_01
Stc metrotek plum_space_smart_sfp_linkmeup_01eucariot
 
Linkmeup #73
Linkmeup #73Linkmeup #73
Linkmeup #73eucariot
 
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructurelinkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructureeucariot
 
Linkmeup v061 (2018-03)
Linkmeup v061 (2018-03)Linkmeup v061 (2018-03)
Linkmeup v061 (2018-03)eucariot
 
llinkmeup #59 DWDM. Плотность света
llinkmeup #59 DWDM. Плотность светаllinkmeup #59 DWDM. Плотность света
llinkmeup #59 DWDM. Плотность светаeucariot
 
linkmeup-058. SDN. Cisco ACI
linkmeup-058. SDN. Cisco ACIlinkmeup-058. SDN. Cisco ACI
linkmeup-058. SDN. Cisco ACIeucariot
 
linkmeup #53. Ngfw soc
linkmeup #53. Ngfw soclinkmeup #53. Ngfw soc
linkmeup #53. Ngfw soceucariot
 
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osi
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osiНемного про бесшовный роуминг и Wi fi на уровне l1-l2 osi
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osieucariot
 
Openstack essentials and Networking component
Openstack essentials and Networking componentOpenstack essentials and Networking component
Openstack essentials and Networking componenteucariot
 
Linkmeup #41 (2016-07) НТЦ Метротек. SoC
Linkmeup #41 (2016-07) НТЦ Метротек. SoCLinkmeup #41 (2016-07) НТЦ Метротек. SoC
Linkmeup #41 (2016-07) НТЦ Метротек. SoCeucariot
 
SoC, Ethernet testers
SoC, Ethernet testersSoC, Ethernet testers
SoC, Ethernet testerseucariot
 
Есть ли жизнь в Enterprise
Есть ли жизнь в EnterpriseЕсть ли жизнь в Enterprise
Есть ли жизнь в Enterpriseeucariot
 
решения по построению сетей передачи данных фнс полигон 2015
решения по построению сетей передачи данных фнс   полигон 2015решения по построению сетей передачи данных фнс   полигон 2015
решения по построению сетей передачи данных фнс полигон 2015eucariot
 
сетевые и телекоммуникационные решения для нефтегазовой отрасли
сетевые и телекоммуникационные решения для нефтегазовой отраслисетевые и телекоммуникационные решения для нефтегазовой отрасли
сетевые и телекоммуникационные решения для нефтегазовой отраслиeucariot
 
полигон импортозамещение для промпредприятий 2015 v11
полигон импортозамещение для промпредприятий 2015 v11полигон импортозамещение для промпредприятий 2015 v11
полигон импортозамещение для промпредприятий 2015 v11eucariot
 
Plgn 2015-ru-web
Plgn 2015-ru-webPlgn 2015-ru-web
Plgn 2015-ru-webeucariot
 
Unl intro presentation fin
Unl intro presentation finUnl intro presentation fin
Unl intro presentation fineucariot
 
STP family and alternative protocols for L2
STP family and alternative protocols for L2STP family and alternative protocols for L2
STP family and alternative protocols for L2eucariot
 

Plus de eucariot (20)

Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3
 
Stc metrotek plum_space_smart_sfp_linkmeup_01
Stc metrotek plum_space_smart_sfp_linkmeup_01Stc metrotek plum_space_smart_sfp_linkmeup_01
Stc metrotek plum_space_smart_sfp_linkmeup_01
 
Linkmeup #73
Linkmeup #73Linkmeup #73
Linkmeup #73
 
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructurelinkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
 
Linkmeup v061 (2018-03)
Linkmeup v061 (2018-03)Linkmeup v061 (2018-03)
Linkmeup v061 (2018-03)
 
llinkmeup #59 DWDM. Плотность света
llinkmeup #59 DWDM. Плотность светаllinkmeup #59 DWDM. Плотность света
llinkmeup #59 DWDM. Плотность света
 
linkmeup-058. SDN. Cisco ACI
linkmeup-058. SDN. Cisco ACIlinkmeup-058. SDN. Cisco ACI
linkmeup-058. SDN. Cisco ACI
 
linkmeup #53. Ngfw soc
linkmeup #53. Ngfw soclinkmeup #53. Ngfw soc
linkmeup #53. Ngfw soc
 
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osi
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osiНемного про бесшовный роуминг и Wi fi на уровне l1-l2 osi
Немного про бесшовный роуминг и Wi fi на уровне l1-l2 osi
 
Openstack essentials and Networking component
Openstack essentials and Networking componentOpenstack essentials and Networking component
Openstack essentials and Networking component
 
Linkmeup
LinkmeupLinkmeup
Linkmeup
 
Linkmeup #41 (2016-07) НТЦ Метротек. SoC
Linkmeup #41 (2016-07) НТЦ Метротек. SoCLinkmeup #41 (2016-07) НТЦ Метротек. SoC
Linkmeup #41 (2016-07) НТЦ Метротек. SoC
 
SoC, Ethernet testers
SoC, Ethernet testersSoC, Ethernet testers
SoC, Ethernet testers
 
Есть ли жизнь в Enterprise
Есть ли жизнь в EnterpriseЕсть ли жизнь в Enterprise
Есть ли жизнь в Enterprise
 
решения по построению сетей передачи данных фнс полигон 2015
решения по построению сетей передачи данных фнс   полигон 2015решения по построению сетей передачи данных фнс   полигон 2015
решения по построению сетей передачи данных фнс полигон 2015
 
сетевые и телекоммуникационные решения для нефтегазовой отрасли
сетевые и телекоммуникационные решения для нефтегазовой отраслисетевые и телекоммуникационные решения для нефтегазовой отрасли
сетевые и телекоммуникационные решения для нефтегазовой отрасли
 
полигон импортозамещение для промпредприятий 2015 v11
полигон импортозамещение для промпредприятий 2015 v11полигон импортозамещение для промпредприятий 2015 v11
полигон импортозамещение для промпредприятий 2015 v11
 
Plgn 2015-ru-web
Plgn 2015-ru-webPlgn 2015-ru-web
Plgn 2015-ru-web
 
Unl intro presentation fin
Unl intro presentation finUnl intro presentation fin
Unl intro presentation fin
 
STP family and alternative protocols for L2
STP family and alternative protocols for L2STP family and alternative protocols for L2
STP family and alternative protocols for L2
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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 Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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...Martijn de Jong
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Linkmeup v076(2019-06).2

  • 1. Copyright © 2019 - Barefoot Networks. Public Presentation P4? That's Easy! March 9, 2019 Vladimir Gurevich
  • 2. Copyright © 2019 - Barefoot Networks. Public Presentation Agenda • How high-speed devices work • P4 by example • What's next 2
  • 3. Copyright © 2019 - Barefoot Networks. Public Presentation Bringing Data Plane back in the NOS 3 Management Plane Configuration CLI/GUI/SNMP... Control Plane Protocol Stacks ARP ?? STPIS-IS PIM-SM BGP ??? Data Plane That’s how packets should be processed! Requirements That’s how I want to build my network!
  • 4. Copyright © 2019 - Barefoot Networks. Public Presentation Why is it important? C Control and Customization. Make the device behave exactly as you want R Robustness and Reliability. Reduce the risk by removing unused features E Energy Efficiency. Use only what you need A Agility. Add features as you go T Telemetry and Tracing. Be able to see inside the Data Plane E Exclusivity and Differentiation. No need to share your IP with the chip vendor 4
  • 5. Copyright © 2019 - Barefoot Networks. Public Presentation Programmable vs. Fixed Pipelined Architecture Buffer FixedParser IPv4 Address Table IPv4 Logic ACL Logic ACL TCAM MPLS Tag Table MPLS Logic Ethernet MAC Address Table Ethernet Logic Fixed Pipeline: features and table-sizes are baked in at design time Buffer ProgrammableParser M A M M M M M A A A A A M A M M M M M A A A A A M A M M M M M A A A A A … M A M M M M M A A A A A Programmable Pipeline: all stages identical, customer-defined match-action logic You declare which headers are recognized You declare what tables are needed and how packets are processed
  • 6. Copyright © 2019 - Barefoot Networks. Public Presentation PISA: Protocol-Independent Switch Architecture 6 Match+Action Stage (Unit) Memory ALU Programmable Parser Programmable Deparser Programmable Match-Action Pipeline Programmer declares the headers that should be recognized and their order in the packet Programmer defines the tables and the exact processing algorithm Programmer declares how the output packet will look on the wire User-defined Headers and Metadata
  • 7. Copyright © 2019 - Barefoot Networks. Public Presentation PISA in Action • Packet is parsed into individual headers (parsed representation) • Headers and intermediate results can be used for matching and actions • Headers can be modified, added or removed • Packet is deparsed (serialized) 7 • Feed-forward architecture • Stage-local resources • One packet per clock • Constant processing latency • Longer pipe – more packets processed in parallel • Multiple simultaneous lookups are possible Match+Action Stage (Unit) Programmable Parser Programmable Deparser Programmable Match-Action Pipeline
  • 8. Copyright © 2019 - Barefoot Networks. Public Presentation Building a Real Switch Programmable components Fixed-Function Components 8 • Ingress and Egress Pipeline ◦Parser ◦Match-Action Pipeline ◦Deparser • Packet I/O (MAC/SerDes/DMA) • Packet Replication Engine • Traffic Manager Ingress pipeline Egress pipelineIntrinsic Metadata User-defined Headers and Metadata Packet Replication Engine & Traffic Manager PacketIngress PacketEgress Packet data in Packet data out
  • 9. Copyright © 2019 - Barefoot Networks. Public Presentation P414 Program Sections 9 parser parse_ethernet { extract(ethernet); return select(ethernet.ethertype) { 0x8100 : parse_vlan_tag; 0x0800 : parse_ipv4; 0x8847 : parse_mpls; default: ingress; } table port_table { … } control ingress { apply(port_table); if (l2_meta.vlan_tags == 0) { process_assign_vlan(); } } header_type ethernet_t { … } header_type l2_metadata_t { … } header ethernet_t ethernet; header vlan_tag_t vlan_tag[2]; metadata l2_metadata_t l2_meta; Headers and Metadata Parser Tables, Actions, Controls and other objects PRE/ TM PacketInput PacketOutput
  • 10. Copyright © 2019 - Barefoot Networks. Public Presentation /* -*- P4_14 -*- */ /* Standard includes for Tofino */ #include <tofino/constants.p4> #include <tofino/primitives.p4> #include <tofino/intrinsic_metadata.p4> /******************* H E A D E R T Y P E S *************************/ header_type ethernet_t { fields { dstAddr : 48; srcAddr : 48; etherType : 16; } } /*********************** M E T A D A T A *****************************/ /*********************** P A R S E R *********************************/ header ethernet_t ethernet; parser start { extract(ethernet); return ingress; } /************** I N G R E S S P R O C E S S I N G *****************/ control ingress { } /**************** E G R E S S P R O C E S S I N G *****************/ control egress { } P414 Program Template for Tofino 10 • P4 uses C preprocessor ◦ Include Tofino-specific definitions ◦ Use it to structure your programs • C and C++style comments are supported ◦ Use first line to choose Emacs mode • P4 objects can be defined in any order ◦ There is no requirement to declare before using What does this program do?
  • 11. Copyright © 2019 - Barefoot Networks. Public Presentation Defining the Header Types 11 header_type ethernet_t { fields { dstAddr : 48; srcAddr : 48; etherType : 16; } } header_type vlan_tag_t { fields { pcp : 3; cfi : 1; vid : 12; etherType : 16; } } header_type ipv4_t { fields { version : 4; ihl : 4; tos : 8; totalLen : 16; identification : 16; flags : 3; fragOffset : 13; ttl : 8; protocol : 8; hdrChecksum : 16; srcAddr : 32; dstAddr : 32; } }
  • 12. Copyright © 2019 - Barefoot Networks. Public Presentation header ethernet_t ethernet; header vlan_tag_t vlan_tag; header ipv4_t ipv4; parser start { extract(ethernet); return select(ethernet.etherType) { 0x8100, 0x9100 : parse_vlan_tag; 0x0800 : parse_ipv4; default : ingress; } } parser parse_vlan_tag { extract(vlan_tag); return select(vlan_tag.etherType) { 0x0800 : parse_ipv4; default : ingress; } } parser parse_ipv4 { extract(ipv4); return ingress; } Defining the Parser 12 • Define the header instances ◦ That’s the headers the program will process • Define parser states ◦ Parsing starts with the “start” state • Inside the states ◦ Extract headers ◦ Transition to other states ■ Both exact and ternary matching are supported
  • 13. Copyright © 2019 - Barefoot Networks. Public Presentation action send(port) { modify_field(ig_intr_md_for_tm.ucast_egress_port, port); } action discard() { modify_field(ig_intr_md_for_tm.drop_ctl, 1); /* drop() */ } table ipv4_host { reads { ipv4.dstAddr : exact; } actions { send; discard; } size : 131072; } table ipv4_lpm { reads { ipv4.dstAddr : lpm; } actions { send; discard; } default_action: send(64); size : 12288; } Defining Tables and Actions 13 • Actions consist of P4 primitive sequences • Actions can have parameters (action data) • Intrinsic metadata controls the device • Tables specify ◦ The key (match fields and match type) ◦ List of possible actions ◦ Other attributes (default action, size, etc.) ■ Note: Attribute order is fixed in P414 grammar Architecture-specific Intrinsic Metadata Architecture-specific Intrinsic Metadata ipv4.dstAddr action data 192.168.1.1 send port=1 192.168.1.2 send port=2 192.168.1.3 discard --- Not Set ipv4.dstAddr / prefix action data 192.168.1.0 / 24 send port=1 10.0.16.0 / 22 send port=5 192.168.0.0 / 16 discard -- send port=64 (CPU) ipv4_host ipv4_lpm To be filled by the control plane!
  • 14. Copyright © 2019 - Barefoot Networks. Public Presentation /* Ingress Pipeline Processing */ control ingress { if (valid(ipv4)) { apply(ipv4_host) { miss { apply(ipv4_lpm); } } } } /* Egress Pipeline Processing */ control egress { } Defining the Processing Algorithm 14 • Direct Acyclic Graph processing (no loops) • apply() – perform match-action in a table • apply() {} – use match results to determine further processing ◦ hit/miss clause ◦ selected action clause • Conditional statements ◦ Comparison operations (==, !=, >, <, >=, <=) ◦ Logical operations (not, and, or) ◦ Header validity checks • Make sure the program operates on valid headers!
  • 15. Copyright © 2019 - Barefoot Networks. Public Presentation Add counters 15 • Direct counters extend table entries • Counting is done automatically ipv4.dstAddr action data Packets/Bytes 192.168.1.1 send port=1 xxx / yyy 192.168.1.2 send port=2 zzz / ww 192.168.1.3 discard --- Not Set ipv4.dstAddr / prefix action data Packets/Bytes 192.168.1.0 / 24 send port=1 xxx / yyy 10.0.16.0 / 22 send port=5 192.168.0.0 / 16 discard -- send port=64 (CPU) ipv4_host ipv4_lpm /* Just add this code... */ counter ipv4_host_counter { type: packets_and_bytes; direct: ipv4_host; } counter ipv4_lpm_counter { type: packets_and_bytes; direct: ipv4_lpm; }
  • 16. Copyright © 2019 - Barefoot Networks. Public Presentation Add Port-Based VRF 16 Different lookup domains for different customers VRF ipv4.dstAddr action data Packets/Bytes 0 192.168.1.1 send port=1 xxx / yyy 1 192.168.1.1 send port=7 zzz / ww 1 192.168.1.3 discard --- Not Set VRF ipv4.dstAddr / prefix action data Packets/Bytes 0 192.168.1.0 / 24 send port=1 xxx / yyy 1 192.168.1.0 / 24 send port=5 2 192.168.0.0 / 16 discard -- send port=64 (CPU) ipv4_host ipv4_lpm ingress_port action data 0 set_vrf vrf_id=2 12 set_vrf vrf_id=1 4 set_vrf vrf_id=2 Not Set vrf /* New Code */ header_type l3_meta_t { fields { vrf_id : 8; } } metadata l3_meta_t l3_meta; action set_vrf(vrf) { modify_field(l3_meta.vrf_id, vrf); } table vrf { reads { ig_intr_md.ingress_port : exact; } actions { set_vrf; } } table ipv4_host { reads { l3_meta.vrf_id : exact; ipv4.dstAddr : exact; } . . . } control ingress { apply(vrf); if (valid(ipv4)) { apply(ipv4_host) { miss { apply(ipv4_lpm); } } } } Architecture-specific Intrinsic Metadata
  • 17. Copyright © 2019 - Barefoot Networks. Public Presentation Add Packet Modifications and Checksum Handling 17 action l3_switch(new_mac_da, new_mac_sa, port) { modify_field(ethernet.dstAddr, new_mac_da); modify_field(ethernet.srcAddr, new_mac_sa); add_to_field(ipv4.ttl, -1); send(port); } action nat_tcp(new_src_ip, new_dst_ip, new_tcp_sport, new_tcp_dport) { modify_field(ipv4.srcAddr, new_src_ip); modify_field(ipv4.dstAddr, new_dst_ip); modify_field(tcp.srcPort, new_tcp_sport); modify_field(tcp.dstPort, new_tcp_dport); } action untag_packet() { modify_field(ethernet.etherType, vlan_tag.etherType); remove_header(vlan_tag); } field_list ipv4_checksum_list { ipv4.version; ipv4.ihl; ipv4.diffserv; ipv4.totalLen; ipv4.identification; ipv4.flags; ipv4.fragOffset; ipv4.ttl; ipv4.protocol; ipv4.srcAddr; ipv4.dstAddr; } field_list_calculation ipv4_checksum { input { ipv4_checksum_list; } algorithm : csum16; output_width : 16; } calculated_field ipv4.hdrChecksum { verify ipv4_checksum; update ipv4_checksum; }
  • 18. Copyright © 2019 - Barefoot Networks. Public Presentation counter packet_size_stats { type : packets; direct : packet_size_hist; min_width : 32; } action nop() { } table packet_size_hist { reads { eg_intr_md.pkt_length : range; } actions { nop; } } control egress { apply(packet_size_hist); } Example: Building a Histogram of Packet Sizes 18 • Problem: ◦ Calculate a histogram of different packet sizes that passed through the switch • Solution: ◦ Use range matching on packet length ■ Only available in the egress pipeline range is a standard match type in P4 0 50 100 150 200 250 300 0-63 64-127 128-255 256-511 512-1023 1024-… 1537… Packets 64..127 128..255 256..511 0..63 1024..1536 512..1023 1537..16384 Match Fields nop nop nop nop nop nop nop Action packet counts counter A counter Z Counter table packet_size_hist counter packet_size_stats Architecture-specific Intrinsic Metadata
  • 19. Copyright © 2019 - Barefoot Networks. Public Presentation Ethernet Header EtherType = 0xDEAD +----------------+----------------+ | Box Number (0..65536) | +----------------+----------------+ | Operation: 0 – drop, 1 – pickup | +----------------+----------------+ | Data Destination (port #) | +----------------+----------------+ | | +- TOP SECRET -+- DATA (32b) -+ | | +----------------+----------------+ header_type dead_drop_t { fields { box_num : 16; box_op : 16; data_dest : 16; box_data : 32; } } header dead_drop_t dead_drop; Dead-Drop Protocol 19 • Two operations: ◦ Drop data (with further delivery instructions) ◦ Pickup data • Tamper-proof ◦ Cannot pick data more than once
  • 20. Copyright © 2019 - Barefoot Networks. Public Presentation Parsing Dead-Drop Protocol P4 Scapy 20 header_type dead_drop_t { fields { box_num : 16; box_op : 16; data_dest : 16; box_data : 32; } } header dead_drop_t dead_drop; parser parse_ethernet { extract(ethernet); select(ethernet.etherType) { ... 0xDEAD : parse_dead_drop; default: ingress; } } parser parse_dead_drop { extract(dead_drop); return ingress; } class DeadDrop(Packet): fields_desc = [ BitField("box_num", 0, 16), BitField("box_op", 0, 16), BitField("data_dest", 511, 16), BitField("box_data", 0xDEADBABE, 32) ] name = “Spy Dead-Drop Protocol” bind_layers(Ether, DeadDrop, type=0xDEAD) sendp(Ether()/DeadDrop(box_num=5, box_op=0, data_dest=3, box_data=0x12345678), iface="veth1") • When DeadDrop() follows Ether(), set Ether.type=0xDEAD • When Ether.type==0xDEAD, next header is DeadDrop() In Scaly, each field has a default value
  • 21. Copyright © 2019 - Barefoot Networks. Public Presentation Dead Drop Implementation (P414 specification) Data Store (Registers) Actions and Tables 21 register dead_drop_data { width : 32; instance_count : 65536; } register dead_drop_dest { width : 16; instance_count : 65536; } action drop_message() { register_write(dead_drop_data, dead_drop.box_num, dead_drop.box_data); register_write(dead_drop_dest, dead_drop.box_num, dead_drop.data_dest); modify_field(ig_intr_md_for_tm.drop_ctl, 1); /* drop */ exit(); } action pickup_message() { register_read(dead_drop.box_data, dead_drop_data, dead_drop.box_num); register_read(ig_intr_md_for_tm.ucast_egress_port, dead_drop_dest, dead_drop.box_num); register_write(dead_drop_dest, dead_drop.box_num, 511 /* drop */); register_write(dead_drop_data, dead_drop.box_num, 0); exit(); } table dead_drop { reads { dead_drop.box_op : exact; } actions { drop_message; pickup_message; } size : 2; } control ingress { if (valid(ipv4)) { apply(ipv4_host) { . . . } if (valid(dead_drop)) { apply(dead_drop); } }
  • 22. Copyright © 2019 - Barefoot Networks. Public Presentation Brief History and Trivia 22 • May 2013: Initial idea and the name “P4” • July 2014: First paper (SIGCOMM CCR) • Aug 2014: First P414 Draft Specification (v0.9.8) • Sep 2014: P414 Specification released (v1.0.0) • Jan 2015: P414 v1.0.1 • Mar 2015: P414 v1.0.2 • Nov 2016: P414 v1.0.3 • May 2017: P414 v1.0.4 • Apr 2016: P416 – first commits • Dec 2016: First P416 Draft Specification • May 2017: P416 Specification released • . . . • Official Spelling P4_16 on terminals, P416 in publications
  • 23. Copyright © 2019 - Barefoot Networks. Public Presentation The P4 Language Consortium • Consortium of academic and industry members • Open source, evolving, domain-specific language • Permissive Apache license, code on GitHub today • Membership is free: contributions are welcome • Independent, set up as a California nonprofit 23
  • 24. Copyright © 2019 - Barefoot Networks. Public Presentation Systems P4.org Membership Academia/ Research Targets Operators/ End Users Original P4 Paper Authors: • Open source, evolving, domain-specific language • Permissive Apache license, code on GitHub today • Membership is free: contributions are welcome • Independent, set up as a California nonprofit Solutions/ Services
  • 25. Copyright © 2019 - Barefoot Networks. Public Presentation P416 Design Goals • Logical Evolution of P414 ◦ Same basic building blocks and concepts ◦ More expressive and convenient to use ◦ More formally defined semantics ■ Strong Type System ◦ Support for good software engineering practices • Target-Independence ◦ Support for a variety of targets (ASICs, FPGAs, NICs, software) ■ Language/Architecture separation ■ Flexible data plane model • Non-goals ◦ New constructs ◦ General-purpose programming 25
  • 26. Copyright © 2019 - Barefoot Networks. Public Presentation To Learn More • Become a Barefoot Customer or joint FASTER program • Attend BA-101 (P414) or BA-102 (P416) class 26
  • 27. Copyright © 2019 - Barefoot Networks. Public Presentation Thank you