Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Snabb Switch simple and fast packet networking / Luke Gorrie (SnabbCo)


Published on

Snabb Switch is a new open source toolkit for using Linux/x86 servers to solve high-end networking problems. Snabb Switch is used by network operators who need to process up to 100 Gbps of network traffic per server and its application areas include load generation, line-rate packet capture, firewalling, VPN, and Network Functions Virtualization (NFV) for OpenStack.

I will explain the architecture of Snabb Switch, how it is able to process over 100 Gbps of traffic on an ordinary x86 server, and how LuaJIT makes it possible for a grassroots community to build Snabb Switch with only around 10,000 lines of code.

I will also describe how network operators are using Snabb Switch as an alternative to hardware solutions from traditional network equipment vendors.

Published in: Engineering
  • Be the first to comment

Snabb Switch simple and fast packet networking / Luke Gorrie (SnabbCo)

  1. 1. Snabb Switch: Simple and fast packet networking Luke Gorrie
  2. 2. Hello • Started Snabb Switch project. • Many years in networking vendors/startups. • Tech lover: Lua, Erlang, Lisp, Forth, ... • Now 100% open source.
  3. 3. Overview • What’s this all about? • What is the software architecture? • How do some real applications work?
  4. 4. Network infrastructure • Switch, router, firewall, traffic shaper, NAT, VPN, DDoS-protector, ... • Over $100 billion each year. • How about open source on x86 servers?
  5. 5. Server
  6. 6. Software?
  7. 7. Snabb Switch • packetblaster: infinite load generator. • VPLS:Virtual Private LAN Service. • NFV: FastVirtio-net for KVM/OpenStack. • lwAFTR: Lightweight IPv4/IPv6 translation. • LISPER: Locator/ID Separation Protocol. • Snabbwall: Stateful firewall appliance.
  8. 8. Community • Network operators. • Professional open source developers. • Creative people on the internet.
  9. 9. How does it work?
  10. 10. Style • High-level: written in Lua (LuaJIT). • Low-level: built-in device drivers. • Avoids slow and complicated things: threads, locks, interrupts, kernel modules.
  11. 11. Less is more • 10,000 lines of code. • 1 second compile (1 minute with deps). • 1 megabyte stand-alone executable.
  12. 12. Architecture
  13. 13. Packet struct packet { char data[10240]; int length; };
  14. 14. Link struct link { struct packet *packets[256]; int read, write; };
  15. 15. App MyApp = {} function MyApp:pull () ... end function MyApp:push () ... end
  16. 16. App Catalogue Basic I/O Processing join intel10g flooding_bridge repeater loadgen learning_bridge sink pcap_reader keyed_ipv6_tunnel source pcap_writer ipv6_nd split raw_socket ipv6_ns tee solarflare pcap_filter vhost_user rate_limiter
  17. 17. packetblaster
  18. 18. snabbnfv
  19. 19. Join in @lukego