Towards a Flexible Internet Transport Layer Architecture Karl-Johan - - PowerPoint PPT Presentation

towards a flexible internet transport layer architecture
SMART_READER_LITE
LIVE PREVIEW

Towards a Flexible Internet Transport Layer Architecture Karl-Johan - - PowerPoint PPT Presentation

Towards a Flexible Internet Transport Layer Architecture Karl-Johan Grinnemo, Tom Jones , Gorry Fairhurst, David Ros, Anna Brunstrom and Per Hurtig Karlstad University, Simula Research University of Aberdeen, Karlstad, Sweden Laboratory,


slide-1
SLIDE 1

Towards a Flexible Internet Transport Layer Architecture

Karl-Johan Grinnemo, Tom Jones, Gorry Fairhurst, David Ros, Anna Brunstrom and Per Hurtig

Karlstad University, Karlstad, Sweden {karl-johan.grinnemo, anna.brunstrom, per.hurtig}@kau.se University of Aberdeen, Aberdeen, U.K. {tom, gorry} @erg.abdn.ac.uk Simula Research Laboratory, Oslo, Norway dros@simula.no

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

slide-2
SLIDE 2

The Network has Ossified

2 Application NEAT API Transport IP Application Transport IP NEAT-enabled stack Non NEAT-enabled stack Application NEAT API Transport IP NEAT-enabled stack Application Transport IP Non NEAT-enabled stack Application NEAT API Transport IP NEAT-enabled stack arbitrary Internet paths NEAT-aware paths with in-network service support A B C D

slide-3
SLIDE 3

The API has Ossified

3

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

slide-4
SLIDE 4

Fixing Interface Selection

4

Client App Transport i1 i2 Middlebox

Server App

Transport i0 Fixed ISP Mobile ISP

Path 2 Path 3 Path 1

slide-5
SLIDE 5

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

5

slide-6
SLIDE 6

NEAT Application

6

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

NEAT Application

7

APP Class 1 Traditional Socket NEAT User Module NEAT User API

SCTP/ UDP Exp Mech …

Userspace Transport USER KERNEL TCP UDP SCTP IP

slide-8
SLIDE 8

The NEAT System

8

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

The NEAT User Module

9 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-10
SLIDE 10

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

10

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

11

NEAT Example: Transfer Application in SDN Environment

Hos t A

Network controller/ Orchestrator PIB NE AT P

  • licy

Manager NE AT User AP I 1 14 Data transfer application NE AT F ramework 2 CIB 13 6 5 3 NE AT Transport 8 11 C

  • nnection

to host B 10 NE AT S election 9 NE AT P

  • licy Interface

4 12 7

slide-12
SLIDE 12

12

NEAT Example: Multimedia Application

PEER A TURN SERVER PEER B MEDIA APP CIB PIB MIDDLEBOX INTERNET NEAT Selection

Policy Manager

NEAT Framework

1 2 3 5 5 4 6 7 8

slide-13
SLIDE 13

Resources

13

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

slide-14
SLIDE 14

14

Thank you for listening

Questions

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

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

tom@erg.abdn.ac.uk