Transport Evolution on top of the BSD's [tj] tj@enoti.me NEAT is - - PowerPoint PPT Presentation

transport evolution on top of the bsd s
SMART_READER_LITE
LIVE PREVIEW

Transport Evolution on top of the BSD's [tj] tj@enoti.me NEAT is - - PowerPoint PPT Presentation

Transport Evolution on top of the BSD's [tj] tj@enoti.me NEAT is funded by the European Unions Horizon 2020 research and innovation programme under grant agreement no. 644334. Cameras up mountains 2 Cameras up mountains 3 TCP


slide-1
SLIDE 1

Transport Evolution on top

  • f the BSD's

NEAT is funded by the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 644334.

[tj] tj@enoti.me

slide-2
SLIDE 2

Cameras up mountains

2

slide-3
SLIDE 3

Cameras up mountains

3

slide-4
SLIDE 4

TCP Congestion Control

  • Slow Start Phase
  • Steady State
  • Multiplicative Reduction to Loss

4

slide-5
SLIDE 5

HTTP Video Workloads

  • Bursty
  • Terrible Reaction to loss
  • ‘Confused, Timid and Unstable’
  • Very long connection life time
  • Lots of packets in flight

5

slide-6
SLIDE 6

NewCWV

  • TCP Adaptation for Rate Limited Traffic
  • Improved window validation
  • FreeBSD Implementation here:
  • https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191520

6

slide-7
SLIDE 7

TCP Congestion Window

7

TCP Congestion Window (Bytes) ^ | | | | _______________________________ ________ | | \ | | / \ / | / | / | / | / | / |_/ +//-+----------+---------\+----/ /----+/---------+-------------> Time 5 Minutes

slide-8
SLIDE 8

Pipe ack

8

pipeACK sample (Bytes) ^ | +----------+----------+ +----------+---...... | | Sample A | Sample B | No | Sample C | Sample D | | | | Sample | | | | |\ 5 | | | | | | | | | | | /\ 4 | | | | | | |\ 3 | | | \ | | | | \ | | \--- | | / \ | /| 2 | |/ \------| - | | / \------/ \... +//-+----------+---------\+----/ /----+/--------- +-------------> Time <------------------------------------------------| Sampling Period Current Time Figure 1: Example of Measuring pipeACK Samples

slide-9
SLIDE 9

NewCWV Status

9

slide-10
SLIDE 10

10

slide-11
SLIDE 11

The Naive View of the Network

11

INTERNET YOU IP ME IP

slide-12
SLIDE 12

The Reality of the Network

12

Middleboxes drop non http traffic Firewalls Block protocols Security devices inject ‘bad’ data Proxies break TLS

INTERNET YOU IP ME IP ETHERNET FIBRE

slide-13
SLIDE 13

Networks vary a ton

13

2.5G is slow 3G has unpredictable latency WiFi maintains really high bandwidth 4G has high, but variability in bandwidth Middleboxes drop non http traffic Firewalls Block protocols Security devices inject ‘bad’ data Proxies break TLS

INTERNET YOU IP ME IP WIFI 3G

slide-14
SLIDE 14

The socket API has ossified

14

getaddrinfo(); // Look up host socket(); // Create a socket setsockopt(); // Configure the socket getsockopt(); // Check parameters connect(); // Start connection send(); recv();

slide-15
SLIDE 15

Do it in userspace

  • usersctp
  • QUIC
  • draft-ietf-quic-transport-01
  • GUE
  • draft-ietf-nvo3-gue-05
  • TCP over UDP

15

slide-16
SLIDE 16

The NEAT System

16

TCP UDP SCTP

APP Class 0 APP Class 1 APP Class 2 APP Class 3

TCP Minion Experimental Mechanisms

Traditional Socket NEAT Socket Middleware NEAT Framework NEAT User API NEAT APP Support API NEAT Policy Manager USER KERNEL Policy Information Base Characteristic Information Base Policy Interface

SCTP/UDP

APP Class 4

PCAP RAW IP Experimental Mechanisms

KPI Selection Components H and S Components NEAT APP Support Module IP

DIAG & STATS

NEAT Kernel Module Policy Interface Transport Components

SCTP/ UDP SPUD/ UDP …

Userspace Transport

Exp Mech

slide-17
SLIDE 17

NEAT Application

17

APP Class 1 Traditional Socket NEAT User Module NEAT User API

SCTP/ UDP Exp Mech …

Userspace Transport USER KERNEL TCP UDP SCTP IP

slide-18
SLIDE 18

The NEAT User Module

18 Traditional Socket NEAT Socket NEAT User API USER KERNEL KPI NEAT Framework Components NEAT Selection Components NEAT Policy Components NEAT Transport Components

NEAT Signalling and Handover Components

Diagnostics and Statistics Policy Interface

slide-19
SLIDE 19

NEAT User API

The NEAT User Module

5 Groups of components:

▶ NEAT Framework Component: API, Logic ▶ NEAT Selection Components: Choose candidates ▶ NEAT Policy Components: Policy and Characteristics ▶ NEAT Transport Components: Instantiate transports ▶ NEAT Handover and Signalling Components

19

NEAT Selection Components NEAT Framework Components NEAT Transport Components NEAT Policy Components

NEAT Signalling and Handover Components

NEAT Flow Endpoint Transport Service Instantiation Network Service Signalling

slide-20
SLIDE 20

static struct neat_flow_operations ops; static struct neat_ctx *ctx = NULL; static struct neat_flow *flow = NULL; ctx = neat_init_ctx() flow = neat_new_flow(ctx) prop = NEAT_PROPERTY_UDP_REQUIRED | NEAT_PROPERTY_IPV6_REQUIRED; neat_set_property(ctx, flow, &prop)

  • ps.on_writable = on_writable;
  • ps.on_readable = on_readable;
  • ps.on_error = on_error;

neat_set_operations(ctx, flow, &ops) neat_open(ctx, flow, argv[argc - 2], argv[argc - 1]) neat_start_event_loop(ctx, NEAT_RUN_DEFAULT);

NEAT Application

20

slide-21
SLIDE 21

NEAT Application

21

static neat_error_code

  • n_writable(struct neat_flow_operations *opCB)

{ neat_write(opCB->ctx, opCB->flow, buf) return NEAT_OK; } static neat_error_code

  • n_readable(struct neat_flow_operations *opCB)

{ neat_read(opCB->ctx, opCB->flow, buf) return NEAT_OK; }

https://github.com/NEAT-project/neat/blob/master/examples/client.c

slide-22
SLIDE 22

Porting Apps

  • Firefox
  • rsync

22

slide-23
SLIDE 23

buildbot

23

slide-24
SLIDE 24

https://www.neat-project.org https://github.com/neat-project/neat

NEAT is funded by the European Union’s Horizon 2020 research and innovation programme under grant agreement no. 644334.