SlideShare a Scribd company logo
1 of 58
Download to read offline
SNABB
A TOOLKIT FOR BUILDING USER-SPACE NETWORK
FUNCTIONS
ABOUT IGALIA
Consultancy specialized in open-source
Base in Coruña but distributed all over the world (>60 people working from 15
different countries)
Contributors to projects such as WebKit, Chromium V8, etc
Other areas: Graphics, Multimedia, Networking
https://www.igalia.com/networking
AGENDA
What is Snabb?
How it works?
Catalog and programs
Use case: lwAFTR
WHAT IS SNABB?
Snabb is a toolkit for developing high-performance network functions in user-
space
WHAT IS A NETWORK FUNCTION?
A program that manipulates traffic data
Basic operations: read, forward, drop, modify, create...
Combining these primitives we can build any network function
EXAMPLES
Firewall: read incoming packets, compare to table of rules and execute an
action(forward or drop)
NAT: read incoming packets, modify headers and forward packet
Tunelling: read incoming packets, create a new packet, embed packet into new
one and send it
WHY SNABB?
Increasing improvement of commodity hardware: 10Gbps NICs at very
affordable prices
High-performance equipment is still very expensive
Idea: build an analog high-performance router using commodity hardware
WHY SNABB?
What software to put into this hardware?
Common intuition: Linux
Drawback: Linux is not suitable for high-performance networking
WHY NOT LINUX?
General-purpose operating system
An OS abstracts hw resources to offer high-level interfaces: filesystems,
processes, sockets...
Our network function will be divided into two lands: user-space and kernel-
space
Colorary: processing a packet has an inheritent cost => the cost of the OS
HIGH-PERFORMANCE NETWORKING
NIC: 10Gbps
Avg Packet-size: 550-byte
PPS: 2272727,27
1 packet every 440ns ((1/2272727,27)*10^9)
CPU: 2,5 Ghz
1100 cycles to process one packet (2,5 cycles/sec * 440 ns)
HIGH-PERFORMANCE NETWORKING
Packet-size: 64-byte: 51 ns per packet; 128 cycles per packet
Lock/Unlock: 16ns; Cache-miss: 32 ns
Source: Jonathan Corbet's
Small packet size => More packets per second => worse
Faster CPU => better
"Improving Linux networking performance"
USER-SPACE DRIVER
Do a kernel by-pass and manage the hardware directly from user-space:
Tell Linux not to manage the PCI device (unbind)
Do a mmap of the registers of the PCI device into addressable memory
Whenever we read/write the addressable memory, we're actually poking the
registers of the NIC
Follow the NIC's datasheet to implement operations such as initialize,
receive, transmit, etc
USER-SPACE NETWORKING
Snabb is not an isolated case of user-space networking:
Snabb (2012)
DPDK (2012)
VPP/fd.io (2016)
DPDK (Data-plane Development Kit, Intel)
VPP (Vector Packet Processing, Cisco)
RING-BUFFER
Very important to avoid packet drops
INSIDE SNABB
SNABB
Project started by Luke Gorrie
User-space networking benefit: freedom of programming language
Snabb is mostly written in Lua
Network functions are also written in Lua
Fast to run, fast to develop
Snabb means fast in Swedish :)
ABOUT LUA
Started in 1993 at University of Rio de Janeiro (PUC Rio)
Very similar to JavaScript, easy to learn
Very small and compact, it's generally embeded in other systems
Use cases: microcontrollers (NodeMCU), videogames (Grim Fandango), IA
(Torch7)
ABOUT LUAJIT
Just-in-time compiler for Lua
Extremely fast virtual machine!!
Very good integration with C thanks to FFI (Foreign Function Interface)
FFI: EXAMPLE
ffi.cdef[[
void syslog(int priority, const char*format, ...);
]]
ffi.C.syslog(2, "error:...");
local ether_header_t = ffi.typeof [[
/* All values in network byte order. */
struct {
uint8_t dhost[6];
uint8_t shost[6];
uint16_t type;
} __attribute__((packed))
]]
SNABB IN A NUTSHELL
A snabb program is an app graph
Apps are conected together via links
Snabb processes the program in units called breadths
NF: APP GRAPH
BREADTHS
A breadth has two steps:
inhale a batch of packets into the graph
process those packets
To inhale, the method pull of the apps is executed (if defined)
To process, the method push of the apps is executed (if defined)
# Pull function of included Intel 82599 driver
function Intel82599:pull ()
for i = 1, engine.pull_npackets do
if not self.dev:can_receive() then break end
local pkt = self.dev:receive()
link.transmit(self.output.tx, pkt)
end
end
# Push function of included PcapFilter
function PcapFilter:push ()
while not link.empty(self.input.rx) do
local p = link.receive(self.input.rx)
if self.accept_fn(p.data, p.length) then
link.transmit(self.output.tx, p)
else
packet.free(p)
end
end
end
PACKET PROCESSING
Normally only one app of the app graph introduces packets into the graph
The method push gives an opportunity to every app to do something with a
packet
APP GRAPH DEFINITION
local c = config.new()
-- App definition.
config.add(c, "nic", Intel82599, {
pci = "0000:04:00.0"
})
config.add(c, "filter", PcapFilter, "src port 80")
config.add(c, "writer", Pcap.PcapWriter, "output.pcap")
-- Link definition.
config.link(c, "nic.tx -> filter.input")
config.link(c, "filter.output -> writer.input")
engine.configure(c)
engine.main({duration=1})
PACKETS
struct packet {
uint16_t length;
unsigned char data[10*1024];
};
LINKS
struct link {
struct packet *packets[1024];
// the next element to be read
int read;
// the next element to be written
int write;
};
SNABB: APP CATALOG AND PROGRAMS
INVENTARY
apps: software components that developers combine together to build network
functions
programs: complete network functions
APPS I/O
Intel i210/i350/82599/XL710
Mellanox Connectx-4/5
Virtio host y guest
UNIX socket
Linux: tap and "raw" (e.g: eth0)
Pcap files
APPS L2
Flooding and learning bridge
VLAN insert/remove
ARP/NDP
APPS L3
IPv4/v6 fragmentation and reassembly
IPv4/v6 splitter
ICMPv4/v6 echo responder
Control-plane delegation (nh_fwd)
APPS L4
IPsec ESP
Lightweight 4-over-6 AFTR
Keyed IPv6 Tunnel
APPS MONITORING
IPFix capturer and exporter
L7 monitor/filtering (libndpi)
Pcap expressions filter (with own backend for code generation)
APPS TESTING
Lots of load generators: loadgen, packetblaster, loadbench...
USE CASE: LWAFTR
CONTEXT
2012-2014: Several RIRs run out of IPv4 public addresses
2008: IPv6 adoption starts to peak up
Still big dependency on IPv4: services, websites, programs, etc
SOLUTIONS
Carrier-Grade NAT: temporal solution for IPv4 address exhaustion problem
Deployment of Dual-Stack networks (IPv4 e IPv6)
Dual-Stack implies increasing complexity and costs (maintenance of two
separated networks)
Dual-Stack Lite (IPv6-only network which also offers IPv4 connectivity relying
on CGN)
Lightweight 4over6: iteration over Dual-Stack
LIGHTWEIGHT 4OVER6
LW4O6 - GOALS
RFC7596 fully complaint (lwAFTR part)
Performance: 2MPPS; 550-byte (packet-size); Binding-table: 1M subscribers.
No packet drops
LW4O6 - DEVELOPMENT
Version 1:
Prototype
Basic functionality (encapsulating/decapsulating)
Small binding-table (own format)
Development of tools to measure performance
LW4O6 - DEVELOPMENT
Version 2
Production quality
Fully standard compliant
Big binding-table: 1M subscribers (still customized format but much closer
to standard)
Add support for other necessary protocols: ARP, NDP, fragmentation,
reassembly, ping
Tons of optimizations (use of AVX instructions to speed up lookups)
LW4O6 - DEVELOPMENT
Version 3:
Added YANG support to Snabb
Support binding-table format according to standard
Support of execution as leader/worker (leader: control-plane/worker: data-
plane)
LW4O6 - DEVELOPMENT
Version 4:
Multiprocess (one leader, multiple workers)
Improvement of the Intel 10Gbps driver (added support for RSS, Received
Side Scaling)
Added alarms support according to latest draft
LIGHTWEIGHT 4OVER6 - TALKS
Juniper's vMX Lightweight 4over6 VNF
Charla:
Kostas Zordabelos's A real-world scale network VF using Snabb for lw4o6
Charla:
Juniper Tech Club, Marzo 2017
SDN Meetup, Abril 2017
OTHER PROGRAMS
PROGRAM: PACKET BLASTER
Generally useful tool: fill TX buffer of NIC with packets and transmit them over
and over again
Measures received traffic too
Easily saturates 10Gbps links
snabb packetblaster replay packets.pcap 82:00.1
PROGRAM: SNABBWALL
L7 firewall that optionally uses nDPI
Collaboration betwen Igalia and NLnet Foundation
Landed upstream in 2017
Website: http://snabbwall.org
PROGRAM: IPFIX
NETFLOW collector and exporter (v9 and IPFIX)
Line-rate speed on a single core. Further improvement: parallel processing via
RSS
Landed upstream very recently
PROGRAM: L2VPN
L2VPN over IPv6 (developed by Alexander Gall from SWITCH)
Pending to land upstream; used in production
Ideal Snabb use case: programmer/operator builds bespoke tool
PROGRAM: YOUR VNF
Snabb upstream open to include new network functions
Repository will grow as people will build new things
Igalia can build one for you
LAST NOTES ABOUT PERFORMANCE
CONSIDERATIONS
Isolcpus: Prevents the kernel to take a CPU to schedule processes
Dishable HyperThreading
Use HugePages (2MB) (Linux default is 4Kb)
Do not neglect NUMA when launching programs
Make use of SIMD instructions (AVX, AVX2) to speed up computations
(checksum)
Keep an eye on regressions: profile often
SUMMARY
Toolkit for developing high-performance network functions in user-space
Snabb provides apps which can be combined together forming a graph (network
function)
Snabb provides programs, complete network functions ready to use
Snabb provides libraries, to easy the development of new network functions
Completely written in Lua: easy to extend
Fast: kernel-by pass + high-level language + fast VM (LuaJIT)
THANKS!
Email: dpino@igalia.com
Twitter: @diepg
$ git clone https://github.com/snabbco/snabb.git
$ cd snabb
$ make

More Related Content

What's hot

Naveen nimmu sdn future of networking
Naveen nimmu sdn   future of networkingNaveen nimmu sdn   future of networking
Naveen nimmu sdn future of networkingsuniltomar04
 
Next Generation Network Developer Skills
Next Generation Network Developer SkillsNext Generation Network Developer Skills
Next Generation Network Developer Skillsmestery
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric OverviewMichelle Holley
 
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...IO Visor Project
 
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemHow APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemCisco DevNet
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsThomas Morin
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and CaliforniumJulien Vermillard
 
Openstack Neutron Insights
Openstack Neutron InsightsOpenstack Neutron Insights
Openstack Neutron InsightsAtul Pandey
 
Inside Microsoft's FPGA-Based Configurable Cloud
Inside Microsoft's FPGA-Based Configurable CloudInside Microsoft's FPGA-Based Configurable Cloud
Inside Microsoft's FPGA-Based Configurable Cloudinside-BigData.com
 
HPC Best Practices: Application Performance Optimization
HPC Best Practices: Application Performance OptimizationHPC Best Practices: Application Performance Optimization
HPC Best Practices: Application Performance Optimizationinside-BigData.com
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
DevOops - Lessons Learned from an OpenStack Network Architect
DevOops - Lessons Learned from an OpenStack Network ArchitectDevOops - Lessons Learned from an OpenStack Network Architect
DevOops - Lessons Learned from an OpenStack Network ArchitectJames Denton
 
Crossing the river by feeling the stones from legacy to cloud native applica...
Crossing the river by feeling the stones  from legacy to cloud native applica...Crossing the river by feeling the stones  from legacy to cloud native applica...
Crossing the river by feeling the stones from legacy to cloud native applica...OPNFV
 
Introducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi ClusterIntroducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi Clusterinside-BigData.com
 
Evolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorEvolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorLarry Lang
 
Summit 16: Service Function Chaining: Demo and Usage
Summit 16: Service Function Chaining: Demo and UsageSummit 16: Service Function Chaining: Demo and Usage
Summit 16: Service Function Chaining: Demo and UsageOPNFV
 
Stacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackStacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackOpen-NFP
 

What's hot (20)

Naveen nimmu sdn future of networking
Naveen nimmu sdn   future of networkingNaveen nimmu sdn   future of networking
Naveen nimmu sdn future of networking
 
Ryu sdn framework
Ryu sdn framework Ryu sdn framework
Ryu sdn framework
 
Next Generation Network Developer Skills
Next Generation Network Developer SkillsNext Generation Network Developer Skills
Next Generation Network Developer Skills
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
Using IO Visor to Secure Microservices Running on CloudFoundry [OpenStack Sum...
 
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation EcosystemHow APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
How APIs are Transforming Cisco Solutions and Catalyzing an Innovation Ecosystem
 
Openstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNsOpenstack Neutron, interconnections with BGP/MPLS VPNs
Openstack Neutron, interconnections with BGP/MPLS VPNs
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
Openstack Neutron Insights
Openstack Neutron InsightsOpenstack Neutron Insights
Openstack Neutron Insights
 
Inside Microsoft's FPGA-Based Configurable Cloud
Inside Microsoft's FPGA-Based Configurable CloudInside Microsoft's FPGA-Based Configurable Cloud
Inside Microsoft's FPGA-Based Configurable Cloud
 
HPC Best Practices: Application Performance Optimization
HPC Best Practices: Application Performance OptimizationHPC Best Practices: Application Performance Optimization
HPC Best Practices: Application Performance Optimization
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus Router
 
EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
DevOops - Lessons Learned from an OpenStack Network Architect
DevOops - Lessons Learned from an OpenStack Network ArchitectDevOops - Lessons Learned from an OpenStack Network Architect
DevOops - Lessons Learned from an OpenStack Network Architect
 
Tungsten Fabric and DPDK vRouter Architecture
Tungsten Fabric and DPDK vRouter ArchitectureTungsten Fabric and DPDK vRouter Architecture
Tungsten Fabric and DPDK vRouter Architecture
 
Crossing the river by feeling the stones from legacy to cloud native applica...
Crossing the river by feeling the stones  from legacy to cloud native applica...Crossing the river by feeling the stones  from legacy to cloud native applica...
Crossing the river by feeling the stones from legacy to cloud native applica...
 
Introducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi ClusterIntroducing HPC with a Raspberry Pi Cluster
Introducing HPC with a Raspberry Pi Cluster
 
Evolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO VisorEvolving Virtual Networking with IO Visor
Evolving Virtual Networking with IO Visor
 
Summit 16: Service Function Chaining: Demo and Usage
Summit 16: Service Function Chaining: Demo and UsageSummit 16: Service Function Chaining: Demo and Usage
Summit 16: Service Function Chaining: Demo and Usage
 
Stacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStackStacks and Layers: Integrating P4, C, OVS and OpenStack
Stacks and Layers: Integrating P4, C, OVS and OpenStack
 

Similar to Snabb, a toolkit for building user-space network functions (ES.NOG 20)

Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Igalia
 
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)Igalia
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application serverVOIP2DAY
 
Node-RED and Minecraft - CamJam September 2015
Node-RED and Minecraft - CamJam September 2015Node-RED and Minecraft - CamJam September 2015
Node-RED and Minecraft - CamJam September 2015Boris Adryan
 
Snabbflow: A Scalable IPFIX exporter
Snabbflow: A Scalable IPFIX exporterSnabbflow: A Scalable IPFIX exporter
Snabbflow: A Scalable IPFIX exporterIgalia
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)Kirill Tsym
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingKernel TLV
 
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...Jim St. Leger
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationLinaro
 
High Performance Networking Leveraging the DPDK and Growing Community
High Performance Networking Leveraging the DPDK and Growing CommunityHigh Performance Networking Leveraging the DPDK and Growing Community
High Performance Networking Leveraging the DPDK and Growing Community6WIND
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1Hajime Tazaki
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Igalia
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesNicola Ferraro
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxSamsung Open Source Group
 
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
DPDK summit 2015: It's kind of fun  to do the impossible with DPDKDPDK summit 2015: It's kind of fun  to do the impossible with DPDK
DPDK summit 2015: It's kind of fun to do the impossible with DPDKLagopus SDN/OpenFlow switch
 
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaDPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaJim St. Leger
 
Software Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVSoftware Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVYoshihiro Nakajima
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in ContainernetAndrew Wang
 

Similar to Snabb, a toolkit for building user-space network functions (ES.NOG 20) (20)

Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
Production high-performance networking with Snabb and LuaJIT (Linux.conf.au 2...
 
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
 
Node-RED and Minecraft - CamJam September 2015
Node-RED and Minecraft - CamJam September 2015Node-RED and Minecraft - CamJam September 2015
Node-RED and Minecraft - CamJam September 2015
 
Snabbflow: A Scalable IPFIX exporter
Snabbflow: A Scalable IPFIX exporterSnabbflow: A Scalable IPFIX exporter
Snabbflow: A Scalable IPFIX exporter
 
FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)FD.io Vector Packet Processing (VPP)
FD.io Vector Packet Processing (VPP)
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
DPDK Summit - 08 Sept 2014 - 6WIND - High Perf Networking Leveraging the DPDK...
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
 
High Performance Networking Leveraging the DPDK and Growing Community
High Performance Networking Leveraging the DPDK and Growing CommunityHigh Performance Networking Leveraging the DPDK and Growing Community
High Performance Networking Leveraging the DPDK and Growing Community
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1
 
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
Snabb Switch: Riding the HPC wave to simpler, better network appliances (FOSD...
 
Introduction to DPDK
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
DPDK summit 2015: It's kind of fun  to do the impossible with DPDKDPDK summit 2015: It's kind of fun  to do the impossible with DPDK
DPDK summit 2015: It's kind of fun to do the impossible with DPDK
 
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro NakajimaDPDK Summit 2015 - NTT - Yoshihiro Nakajima
DPDK Summit 2015 - NTT - Yoshihiro Nakajima
 
Software Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFVSoftware Stacks to enable SDN and NFV
Software Stacks to enable SDN and NFV
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
 

More from Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 

More from Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 

Recently uploaded

[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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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
 
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
 
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
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Recently uploaded (20)

[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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
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
 
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...
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Snabb, a toolkit for building user-space network functions (ES.NOG 20)

  • 1. SNABB A TOOLKIT FOR BUILDING USER-SPACE NETWORK FUNCTIONS
  • 2.
  • 3. ABOUT IGALIA Consultancy specialized in open-source Base in Coruña but distributed all over the world (>60 people working from 15 different countries) Contributors to projects such as WebKit, Chromium V8, etc Other areas: Graphics, Multimedia, Networking
  • 5. AGENDA What is Snabb? How it works? Catalog and programs Use case: lwAFTR
  • 6. WHAT IS SNABB? Snabb is a toolkit for developing high-performance network functions in user- space
  • 7. WHAT IS A NETWORK FUNCTION? A program that manipulates traffic data Basic operations: read, forward, drop, modify, create... Combining these primitives we can build any network function
  • 8. EXAMPLES Firewall: read incoming packets, compare to table of rules and execute an action(forward or drop) NAT: read incoming packets, modify headers and forward packet Tunelling: read incoming packets, create a new packet, embed packet into new one and send it
  • 9. WHY SNABB? Increasing improvement of commodity hardware: 10Gbps NICs at very affordable prices High-performance equipment is still very expensive Idea: build an analog high-performance router using commodity hardware
  • 10. WHY SNABB? What software to put into this hardware? Common intuition: Linux Drawback: Linux is not suitable for high-performance networking
  • 11. WHY NOT LINUX? General-purpose operating system An OS abstracts hw resources to offer high-level interfaces: filesystems, processes, sockets... Our network function will be divided into two lands: user-space and kernel- space Colorary: processing a packet has an inheritent cost => the cost of the OS
  • 12. HIGH-PERFORMANCE NETWORKING NIC: 10Gbps Avg Packet-size: 550-byte PPS: 2272727,27 1 packet every 440ns ((1/2272727,27)*10^9) CPU: 2,5 Ghz 1100 cycles to process one packet (2,5 cycles/sec * 440 ns)
  • 13. HIGH-PERFORMANCE NETWORKING Packet-size: 64-byte: 51 ns per packet; 128 cycles per packet Lock/Unlock: 16ns; Cache-miss: 32 ns Source: Jonathan Corbet's Small packet size => More packets per second => worse Faster CPU => better "Improving Linux networking performance"
  • 14. USER-SPACE DRIVER Do a kernel by-pass and manage the hardware directly from user-space: Tell Linux not to manage the PCI device (unbind) Do a mmap of the registers of the PCI device into addressable memory Whenever we read/write the addressable memory, we're actually poking the registers of the NIC Follow the NIC's datasheet to implement operations such as initialize, receive, transmit, etc
  • 15. USER-SPACE NETWORKING Snabb is not an isolated case of user-space networking: Snabb (2012) DPDK (2012) VPP/fd.io (2016) DPDK (Data-plane Development Kit, Intel) VPP (Vector Packet Processing, Cisco)
  • 16. RING-BUFFER Very important to avoid packet drops
  • 18. SNABB Project started by Luke Gorrie User-space networking benefit: freedom of programming language Snabb is mostly written in Lua Network functions are also written in Lua Fast to run, fast to develop Snabb means fast in Swedish :)
  • 19. ABOUT LUA Started in 1993 at University of Rio de Janeiro (PUC Rio) Very similar to JavaScript, easy to learn Very small and compact, it's generally embeded in other systems Use cases: microcontrollers (NodeMCU), videogames (Grim Fandango), IA (Torch7)
  • 20. ABOUT LUAJIT Just-in-time compiler for Lua Extremely fast virtual machine!! Very good integration with C thanks to FFI (Foreign Function Interface)
  • 21. FFI: EXAMPLE ffi.cdef[[ void syslog(int priority, const char*format, ...); ]] ffi.C.syslog(2, "error:..."); local ether_header_t = ffi.typeof [[ /* All values in network byte order. */ struct { uint8_t dhost[6]; uint8_t shost[6]; uint16_t type; } __attribute__((packed)) ]]
  • 22. SNABB IN A NUTSHELL A snabb program is an app graph Apps are conected together via links Snabb processes the program in units called breadths
  • 24. BREADTHS A breadth has two steps: inhale a batch of packets into the graph process those packets To inhale, the method pull of the apps is executed (if defined) To process, the method push of the apps is executed (if defined)
  • 25. # Pull function of included Intel 82599 driver function Intel82599:pull () for i = 1, engine.pull_npackets do if not self.dev:can_receive() then break end local pkt = self.dev:receive() link.transmit(self.output.tx, pkt) end end
  • 26. # Push function of included PcapFilter function PcapFilter:push () while not link.empty(self.input.rx) do local p = link.receive(self.input.rx) if self.accept_fn(p.data, p.length) then link.transmit(self.output.tx, p) else packet.free(p) end end end
  • 27. PACKET PROCESSING Normally only one app of the app graph introduces packets into the graph The method push gives an opportunity to every app to do something with a packet
  • 28. APP GRAPH DEFINITION local c = config.new() -- App definition. config.add(c, "nic", Intel82599, { pci = "0000:04:00.0" }) config.add(c, "filter", PcapFilter, "src port 80") config.add(c, "writer", Pcap.PcapWriter, "output.pcap") -- Link definition. config.link(c, "nic.tx -> filter.input") config.link(c, "filter.output -> writer.input") engine.configure(c) engine.main({duration=1})
  • 29. PACKETS struct packet { uint16_t length; unsigned char data[10*1024]; };
  • 30. LINKS struct link { struct packet *packets[1024]; // the next element to be read int read; // the next element to be written int write; };
  • 31. SNABB: APP CATALOG AND PROGRAMS
  • 32. INVENTARY apps: software components that developers combine together to build network functions programs: complete network functions
  • 33. APPS I/O Intel i210/i350/82599/XL710 Mellanox Connectx-4/5 Virtio host y guest UNIX socket Linux: tap and "raw" (e.g: eth0) Pcap files
  • 34. APPS L2 Flooding and learning bridge VLAN insert/remove ARP/NDP
  • 35. APPS L3 IPv4/v6 fragmentation and reassembly IPv4/v6 splitter ICMPv4/v6 echo responder Control-plane delegation (nh_fwd)
  • 36. APPS L4 IPsec ESP Lightweight 4-over-6 AFTR Keyed IPv6 Tunnel
  • 37. APPS MONITORING IPFix capturer and exporter L7 monitor/filtering (libndpi) Pcap expressions filter (with own backend for code generation)
  • 38. APPS TESTING Lots of load generators: loadgen, packetblaster, loadbench...
  • 40. CONTEXT 2012-2014: Several RIRs run out of IPv4 public addresses 2008: IPv6 adoption starts to peak up Still big dependency on IPv4: services, websites, programs, etc
  • 41. SOLUTIONS Carrier-Grade NAT: temporal solution for IPv4 address exhaustion problem Deployment of Dual-Stack networks (IPv4 e IPv6) Dual-Stack implies increasing complexity and costs (maintenance of two separated networks) Dual-Stack Lite (IPv6-only network which also offers IPv4 connectivity relying on CGN) Lightweight 4over6: iteration over Dual-Stack
  • 43. LW4O6 - GOALS RFC7596 fully complaint (lwAFTR part) Performance: 2MPPS; 550-byte (packet-size); Binding-table: 1M subscribers. No packet drops
  • 44. LW4O6 - DEVELOPMENT Version 1: Prototype Basic functionality (encapsulating/decapsulating) Small binding-table (own format) Development of tools to measure performance
  • 45. LW4O6 - DEVELOPMENT Version 2 Production quality Fully standard compliant Big binding-table: 1M subscribers (still customized format but much closer to standard) Add support for other necessary protocols: ARP, NDP, fragmentation, reassembly, ping Tons of optimizations (use of AVX instructions to speed up lookups)
  • 46. LW4O6 - DEVELOPMENT Version 3: Added YANG support to Snabb Support binding-table format according to standard Support of execution as leader/worker (leader: control-plane/worker: data- plane)
  • 47. LW4O6 - DEVELOPMENT Version 4: Multiprocess (one leader, multiple workers) Improvement of the Intel 10Gbps driver (added support for RSS, Received Side Scaling) Added alarms support according to latest draft
  • 48. LIGHTWEIGHT 4OVER6 - TALKS Juniper's vMX Lightweight 4over6 VNF Charla: Kostas Zordabelos's A real-world scale network VF using Snabb for lw4o6 Charla: Juniper Tech Club, Marzo 2017 SDN Meetup, Abril 2017
  • 50. PROGRAM: PACKET BLASTER Generally useful tool: fill TX buffer of NIC with packets and transmit them over and over again Measures received traffic too Easily saturates 10Gbps links snabb packetblaster replay packets.pcap 82:00.1
  • 51. PROGRAM: SNABBWALL L7 firewall that optionally uses nDPI Collaboration betwen Igalia and NLnet Foundation Landed upstream in 2017 Website: http://snabbwall.org
  • 52. PROGRAM: IPFIX NETFLOW collector and exporter (v9 and IPFIX) Line-rate speed on a single core. Further improvement: parallel processing via RSS Landed upstream very recently
  • 53. PROGRAM: L2VPN L2VPN over IPv6 (developed by Alexander Gall from SWITCH) Pending to land upstream; used in production Ideal Snabb use case: programmer/operator builds bespoke tool
  • 54. PROGRAM: YOUR VNF Snabb upstream open to include new network functions Repository will grow as people will build new things Igalia can build one for you
  • 55. LAST NOTES ABOUT PERFORMANCE
  • 56. CONSIDERATIONS Isolcpus: Prevents the kernel to take a CPU to schedule processes Dishable HyperThreading Use HugePages (2MB) (Linux default is 4Kb) Do not neglect NUMA when launching programs Make use of SIMD instructions (AVX, AVX2) to speed up computations (checksum) Keep an eye on regressions: profile often
  • 57. SUMMARY Toolkit for developing high-performance network functions in user-space Snabb provides apps which can be combined together forming a graph (network function) Snabb provides programs, complete network functions ready to use Snabb provides libraries, to easy the development of new network functions Completely written in Lua: easy to extend Fast: kernel-by pass + high-level language + fast VM (LuaJIT)
  • 58. THANKS! Email: dpino@igalia.com Twitter: @diepg $ git clone https://github.com/snabbco/snabb.git $ cd snabb $ make