rekindling network protocol innovation with user level
play

Rekindling Network Protocol Innovation with User-Level Stacks Felip - PowerPoint PPT Presentation

Rekindling Network Protocol Innovation with User-Level Stacks Felip Felipe e Huici ici (NE (NEC Europ rope) e) Michio Honda (NetApp), Joao Taveira Araujo (UCL), Luigi Rizzo (Pisa University), Costin Raiciu (Universitea Buchalest)


  1. Rekindling Network Protocol Innovation with User-Level Stacks Felip Felipe e Huici ici (NE (NEC Europ rope) e) Michio Honda (NetApp), Joao Taveira Araujo (UCL), Luigi Rizzo (Pisa University), Costin Raiciu (Universitea Buchalest) https://github.com/cnplab/multistack 1

  2. Motivation • Extending layer 4 functionality could address a lot of problems – Increased performance • MPTCP , WindowScale, FastOpen, TLP , PRR – Ubiquitous encryption • TcpCrypt 2

  3. Motivation • Extending layer 4 functionality could address a lot of problems – Increased performance • MPTCP , WindowScale, FastOpen, TLP , PRR – Ubiquitous encryption • TcpCrypt Is it really possible to deploy layer 4 extensions? 3

  4. Motivation • Extending layer 4 functionality could address a lot of problems – Increased performance • MPTCP , WindowScale, FastOpen, TLP , PRR – Ubiquitous encryption • TcpCrypt Is it really possible to deploy layer 4 extensions? • Networks still accommodate TCP extensions – 86 % of the paths are usable for well-designed TCP extensions despite middleboxes 4

  5. Protocol Stacks in End Systems: � The Theory • OSes implement stacks – High performance – Isolation between applications – Socket APIs • New OS versions adopt new protocols/extensions 5

  6. Extending Protocol Stacks: � The Reality • OSes’ release cycle is slow • Support in the newest OS version does not imply deployment – Stakeholders are reluctant to upgrade their OS – Often new features, even if available, must be explicitly enabled 6

  7. How Long does Deployment Take? 1.00 Option SACK 0.75 Ratio of flows Timestamp Windowscale 0.50 Direction Inbound 0.25 Outbound * Traffic trace from single 0.00 transit link in Japan (MAWI) 2007 2008 2009 2010 2011 2012 Date – Wind ndows : SACK is default since Windows 2000. WS and TS implemented in Windows 2000 but enabled as default since Windows Vista (2009) – Li Linux nux : SACK/TS on by default since 1999, WS since 2004 7

  8. • To ease upgrade, we need to move protocol stacks up into user-space 8

  9. • To ease upgrade, we need to move protocol stacks up into user-space • Problem: no practical way to do this, we need: – Isolation between applications – Support for legacy applications and the OS’s stack – High performance 9

  10. MultiStack: Operating System Support for User-space Stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC 10

  11. MultiStack: Operating System Support for User-space Stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC Apps/stacks register desired 3-tuple with the MulBStack kernel module 11

  12. MultiStack: operating system support for user-space stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC • Support for multiple stacks (including OS’s stack) • Namespace isolation based on traditional 3-tuple • Very high performance • Runs on FreeBSD and Linux (and it’s open source!) 12

  13. MultiStack: operating system support for user-space stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC • Support for multiple stacks (including OS’s stack) • Namespace isolation based on traditional 3-tuple • Very high performance • Runs on FreeBSD and Linux (and it’s open source!) 13

  14. MultiStack: operating system support for user-space stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC • Support for multiple stacks (including OS’s stack) • Namespace isolation based on traditional 3-tuple • Very high performance • Runs on FreeBSD and Linux (and it’s open source!) 14

  15. MultiStack: operating system support for user-space stacks (TCP port 22) (TCP port 80) (UDP port 53) User legacy apps . . . App 1 App N Kernel Socket API Stack 1 Stack N OS's stack Netmap API . . . Virtual ports Multiplex / Demultiplex packets (3-tuple) MultiStack NIC • Support for multiple stacks (including OS’s stack) • Namespace isolation based on traditional 3-tuple • Very high performance • Runs on FreeBSD and Linux (and it’s open source!) 15

  16. Multistack Base Performance (Tx) pktgen stack . . . . . . . . . core 0…n 3-tuple filter . . . NIC 16

  17. Multistack Base Performance (Tx) pktgen stack . . . . . . . . . core 0…n 3-tuple filter . . . NIC • App creates every packet from scratch, and sends it to the kernel • Multistack validates the source 3-tuple of every packet, and copies the packet to the NIC’s TX buffer 17

  18. Multistack Base Performance (Tx) pktgen stack . . . Throughput (Gbps) . . . 10 . . . core 0…n 8 1 core 6 2 cores 3-tuple filter 4 4 cores . . . 2 Line rate NIC 0 64 128 256 512 • App creates every packet from Packet size (bytes) scratch, and sends it to the kernel • Multistack validates the source 3-tuple of every packet, and copies the packet to the NIC’s TX buffer 18

  19. Multistack Base Performance (Rx) pktrx stack . . . . . . . . . core 0…n 3-tuple mux . . . NIC 19

  20. Multistack Base Performance (Rx) pktrx stack . . . . . . . . . core 0…n 3-tuple mux . . . NIC • Multistack receives a packet • It identifies destination 3-tuple of the packet • It delivers the packet to the corresponding app/stack 20

  21. Multistack Base Performance (Rx) pktrx stack Throughput (Gbps) . . . 10 . . . 8 . . . core 0…n 1 core 6 2 cores 4 4 cores 3-tuple mux 2 Line rate . . . 0 NIC 64 128 256 512 Packet size (bytes) • Multistack receives a packet • It identifies destination 3-tuple of the packet • It delivers the packet to the corresponding app/stack 21

  22. Many Apps/Stacks (Tx) pktgen pktgen pktgen stack stack stack … . . . . . . . . . 3-tuple filter . . . NIC 22

  23. Many Apps/Stacks (Tx) pktgen pktgen pktgen stack stack stack … . . . . . . . . . 3-tuple filter . . . NIC • App creates every packet from scratch, and sends it to the kernel • Multistack validates the source 3-tuple of every packet, and copies the packet to the NIC’s TX buffer 23

  24. Many Apps/Stacks (Tx) pktgen pktgen pktgen stack stack stack … Throughput (Gbps) 10 . . . . . . . . . 8 8 ports 6 16 ports 4 3-tuple filter 64 ports . . . 2 Line rate 0 NIC 64 128 256 512 Packet size (bytes) • App creates every packet from scratch, and sends it to the kernel • Multistack validates the source 3-tuple of every packet, and copies the packet to the NIC’s TX buffer 24

  25. Many Apps/Stacks (Rx) pktrx pktrx pktrx stack stack stack … . . . . . . . . . 3-tuple mux . . . NIC 25

  26. Many Apps/Stacks (Rx) pktrx pktrx pktrx stack stack stack … . . . . . . . . . 3-tuple mux . . . NIC • Multistack receives a packet • It identifies destination 3-tuple of the packet • It delivers the packet to the corresponding app/stack 26

  27. Many Apps/Stacks (Rx) pktrx pktrx pktrx stack stack stack … Throughput (Gbps) 10 . . . . . . . . . 8 8 ports 6 16 ports 4 3-tuple mux 64 ports 2 . . . Line rate 0 NIC 64 128 256 512 Packet size (bytes) • Multistack receives a packet • It identifies destination 3-tuple of the packet • It delivers the packet to the corresponding app/stack 27

  28. Many Apps/Stacks (Rx) pktrx pktrx pktrx stack stack stack … Throughput (Gbps) 10 . . . . . . . . . 8 8 ports 6 16 ports 4 3-tuple mux 64 ports 2 . . . Line rate 0 NIC 64 128 256 512 Packet size (bytes) • Multistack receives a packet • It identifies destination 3-tuple • A bit lower performance on many of the packet ports is due to the reduced number of packets taken in a • It delivers the packet to the single systemcall corresponding app/stack 28

  29. Multistack Performance Summary • 4 Gbps for 64 byte packets with a single CPU core • 10 Gbps for 64 byte packets with two CPU cores • 10 Gbps for 256 byte packets with a single CPU core 29

  30. Performance with User-Level Stacks • A simple HTTP server on top of our work-in-progress user-space TCP (UTCP) • The same app running on top of OS’s TCP 10 Client establishes a nginx-TSO OSTCP-TSO TCP connection, and 8 OSTCP UTCP sends HTTP GET 6 Server replies with Gbps HTTP OK (1- 32KB) 4 Single TCP connection is used for a single 2 HTTP transaction 0 1 8 16 32 Fetch size (KB) 30

  31. Conclusion • Multi-stack: OS support for user-space stacks to rekindle widespread, timely deployment of new protocols/extensions Try it out! h/ps://github.com/cnplab/mul:stack Rekindling Network Protocol Innova4on with User-Level Stacks. SIGCOMM CCR 31

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend