QoS Challenges for Real Time Traffic [tj] tj@enoti.me NEAT is - - PowerPoint PPT Presentation

qos challenges for real time traffic
SMART_READER_LITE
LIVE PREVIEW

QoS Challenges for Real Time Traffic [tj] tj@enoti.me NEAT is - - PowerPoint PPT Presentation

QoS Challenges for Real Time Traffic [tj] tj@enoti.me NEAT is funded by the European Unions Horizon 2020 research and innovation programme under grant agreement no. 644334. 2 Packets Me You 3 Middleboxes Middlebox Me You


slide-1
SLIDE 1

QoS Challenges for 
 Real Time Traffic

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

2

slide-3
SLIDE 3

Packets

3

Me You

slide-4
SLIDE 4

Middlebox

Middleboxes

4

Me You

slide-5
SLIDE 5

Per Hop Behaviours

  • Default Forwarding

5

slide-6
SLIDE 6

Differentiated Services

6

Me You

slide-7
SLIDE 7

Middlebox

Smart Queueing

7

Me You

slide-8
SLIDE 8

Per Hop Behaviours

  • Default Forwarding
  • The default PHB has best-effort (BE) forwarding

characteristics

  • Expedited Forwarding
  • The EF PHB has the characteristics of low delay, low

loss and low jitter.

  • Assured Forwarding
  • Assured forwarding allows the operator to provide

assurance of delivery as long as the traffic does not exceed some subscribed rate.

8

slide-9
SLIDE 9

7 6 5 4 3 |2 1 0

  • -------------------+----------

Type of Service |Precedence

The IP Type of Service (TOS) Field

9

7 6 5 4 3 |2 1 0

  • -------------------+----------

Type of Service |Precedence 7 6 5 4 3 2 |1 0

  • -----------------------+------

Diff Serv Code Point |ECN

slide-10
SLIDE 10

What Happens to Code Points?

10

  • Generate a set of points to evaluate
  • RFC recommendations
  • Measurement survey
  • Pass/Fail Test on Code Points
  • Verify Code Group Treatment
slide-11
SLIDE 11

DSCP Treatment

  • Pass
  • Drop
  • Bit Bleaching
  • Remark

11

slide-12
SLIDE 12

Code Points recommended by recent RFC’s

  • Which Code Points should we use?
  • 80211
  • draft-ietf-tsvwg-ieee-802-11
  • MPLS
  • RFC5127
  • draft-ietf-tsvwg-diffserv-intercon-14
  • WebRTC
  • draft-ietf-tsvwg-rtcweb-qos

12

slide-13
SLIDE 13

Code Points recommended by recent RFC’s

13

CS0 CS1 CS2 CS3 CS4 CS5 CS6 AF31 AF32 AF33 AF41 AF42 AF43 AF11 AF12 AF13 AF21 AF22 AF23 DF EF (LBE)

21 code points recommended

slide-14
SLIDE 14

Graphs

slide-15
SLIDE 15

15

slide-16
SLIDE 16

16

slide-17
SLIDE 17

17

slide-18
SLIDE 18

Awesome! How do I use this?

18

uint8_t dscp = 0x2e //EF if(setsockopt(flow->socket->fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) == -1) { return ERROR; } return OK; uint8_t ecn = 0; uint8_t tos = dscp << 2 | ecn;

slide-19
SLIDE 19

The NEAT System

19

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-20
SLIDE 20

The NEAT User Module

20 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-21
SLIDE 21

NEAT Application

21

APP Class 1 Traditional Socket NEAT User Module NEAT User API

SCTP/ UDP Exp Mech …

Userspace Transport USER KERNEL TCP UDP SCTP IP

slide-22
SLIDE 22

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

22

slide-23
SLIDE 23

NEAT Application

23

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-24
SLIDE 24

NEAT QoS Setting

24

neat_set_qos(flow->ctx, flow, 0x2e); neat_set_qos(flow->ctx, flow, NEAT_DSCP_EF); neat_set_qos(flow->ctx, flow, NEAT_QOS_REALTIME_INTERACTIVE_DATA);

slide-25
SLIDE 25

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.