mptcp application considerations draft-scharf-mptcp-api-01 michael scharf alan ford ietf 77, march...

12
MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf <michael.scharf@alcatel- lucent.com> Alan Ford <[email protected]> IETF 77, March 2010

Upload: adrian-boyd

Post on 27-Mar-2015

219 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

MPTCP Application Considerations

draft-scharf-mptcp-api-01

Michael Scharf <[email protected]>Alan Ford <[email protected]>

IETF 77, March 2010

Page 2: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

2 | draft-scharf-mptcp-api-01 | 2010

Overview and Scope of draft-scharf-mptcp-api-01

Comparison of MPTCP and regular TCP

Performance impact (throughput, delay, resilience)

Potential problems (middleboxes, outdated assumptions, security)

Tutorial-style description of MPTCP

Operation of MPTCP with legacy applications

Usage of addresses inside applications

Usage of existing socket options (such as TCP_NODELAY)

Default enabling

Important implications for legacy applications

Operation of MPTCP with MPTCP-aware applications

Minimal API Enhancements

Extended MPTCP API

Current focus mainly on minimal enhancements

New in version -01:

Clear distinction of both cases

Indication of MPTCP-awareness by TCP_MP_ENABLE socket option (or by AF_MULTIPATH)

Page 3: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

3 | draft-scharf-mptcp-api-01 | 2010

Comparison of MPTCP and Regular TCP Tutorial-style Description

Performance improvement

Potentially higher throughput (reference to draft-raiciu-mptcp-congestion)

Delay jitter may increase

Better resilience

Potential problems

Middleboxes

Outdated assumptions about one-to-one mapping of socket to connection/addresses

Security issues (reference to draft-ietf-mptcp-threat)

Only minor updates compared to version -00

Page 4: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

4 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with Legacy ApplicationsSelected Issue: Default Enabling of MPTCP

New statement concerning enabling for legacy applications:

It is up to a local policy whether MPTCP should enabled by default

May be under the control of the user through system preferences

Decision is up to the user, system administrator, or OS vendor

Page 5: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

5 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with Legacy Applications Selected Issue: Address Exposed to Applications

Discussed in Hiroshima and in the interim phone conference

Draft now states that address of first subflow MUST be returned for legacy applications

Even if first subflow is no longer in use

Stack MAY close whole MPTCP connection if first subflow is closed

The latter decision SHOULD be controlled by a local policy

Backward compatible by default

Page 6: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

6 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with Legacy ApplicationsSelected Issue: Usage of Existing Socket Options with MPTCP

Disabling the Nagle algorithm (TCP_NODELAY option)

Can be used with MTCP as usually and affects all subflows

Open question: Activation of a different path scheduler algorithm?

Send and receive buffers (SO_SNDBUF/SO_RCVBUF options)

Affects MPTCP connection buffers

MPTCP might not be enabled if buffers are manually set to a small size

Usage of a specific address by app (binding or SO_BINDTODEVICE option)

MPTCP respects the application’s choice

Preferences could be expressed by the extended sockets API

No fundamental changes

Page 7: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

7 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with MPTCP-aware ApplicationsMinimal API Enhancements

API for MPTCP-aware applications can be different from legacy applications

MPTCP awareness can be detected by a TCP_MP_ENABLE socket option

Or, e. g., by AF_MULTIPATH usage

Minimal API enhancement: Modify getpeername() and getsockname()

Text currently suggest that both functions SHOULD fail with a new error code (EMULTIPATH)

Still an open issue whether this is the best thing to do

If AF_MULTIPATH is used, different solutions are possible

For instance, functions could return AF_MULTIPATH structures... but this would not provide information about the address pairs of the subflows

Extended MPTCP API could include new functions, e. g., a getmppeer() function that takes a single address and returns an AF_MULTIPATH structure of all peer addresses

Page 8: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

8 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with MPTCP-aware ApplicationsInteractions and Incompatibilities with other Multihoming Solutions

MPTCP features, as well as the API, overlap with other multihoming solutions

Potential conflicts with SHIM and HIP API

draft-ietf-shim6-multihome-shim-api-13 notes that APIs may not be compatible

Current statement: In order to avoid any conflict, multiaddressed MPTCP SHOULD not be enabled if a network stack uses SHIM6 or HIP

Combinations of MPTCP and SHIM6/HIP are outside the scope of the document

Page 9: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

9 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with MPTCP-aware ApplicationsMPTCP Extended API

API for MPTCP-aware applications is not necessarily 100% backward compatible... but, of course, it should be as far as possible

+-------------------------------+ | MPTCP-aware Application | +-------------------------------+ ^ |~~~~~~~~~~~|~~Extended API~~~|~~~~~~~~~~~ | v +-------------------------------+ | MPTCP | + - - - - - - - + - - - - - - - + | Subflow (TCP) | Subflow (TCP) | +-------------------------------+ | IP | IP | +-------------------------------+

Objectives of the extended API

Provide the same level of control and information access over a MPTCP connection that an application can have over a regular TCP connection

Focus is the minimum set of API functions

Page 10: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

10 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with MPTCP-aware Applications Key Design Aspects of the API

Question: Features and expressiveness of the API?

Question: Is there a need for different application profiles?Examples:

Default: Bulk data transport

Latency-sensitive transport(with overflow)

Latency-sensitive transport(hot-standby)

- Turn on/off- Obtain information about flows

- Get/set preferences- Get/set redundancy- ...

- Restrict MPTCP to interfaces- Set/get the application profile

RTT 10msRTT 100ms

RTT 10msRTT 100ms

RTT 10msRTT 100ms

Pooling

Overflow

Hot standby

Degree of control by apps

Currently the main scope of draft

Page 11: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

11 | draft-scharf-mptcp-api-01 | 2010

Operation of MPTCP with MPTCP-aware ApplicationsPreliminary List of Requirements

Minimum functions to provide a service analogous to the one of regular TCP

REQ1: Turn on/off MPTCP

REQ2: Restrict MPTCP to binding to a given set of addresses or interfaces

REQ3: Know if multiple subflows are in use

REQ4: Obtain information about the subflows (addresses, usage, etc.)

REQ5: Extract a unique identifier for the connection

REQ6: Set/get the application profile

Further API functions possible if applications needs more explicit control

Comments?

Page 12: MPTCP Application Considerations draft-scharf-mptcp-api-01 Michael Scharf Alan Ford IETF 77, March 2010

12 | draft-scharf-mptcp-api-01 | 2010

Summary and Next Steps

Main changes compared to version -00

Distinction between legacy and MPTCP-aware applications

Guidance concerning default enabling and shutdown of the first sub-flow

Clearer structure of document and additional references to related work

Open questions concerning API design

What control functions make sense for an app?

What information from an app would be beneficial for MPTCP?

What aspects could be implicitly determined?

Next step: Discussion of API needed

One key aspect of the overall architecture!

Draft currently lists requirements as a starting point

Any feedback would be welcome