Linux SCTP is catching up and going above -...

31
Linux SCTP is catching up and going above Red Hat, Inc. Marcelo Ricardo Leitner, Xin Long Linux Plumber Conference in Vancouver, 2018 1 / 31

Transcript of Linux SCTP is catching up and going above -...

Page 1: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

Linux SCTP is catching up and going above

Red Hat, Inc.

Marcelo Ricardo Leitner, Xin Long

Linux Plumber Conference in Vancouver, 2018

1 / 31

Page 2: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP

Outline

1 What and Why is SCTPArchitectureSCTP vs TCP

2 What We’ve Done on LinuxProjectsImprovements Made RecentlyFeatures Implemented LatelyLINUX vs BSD

3 What’s the NextFeatures DevelopmentCode RefactorHardware Support

2 / 31

Page 3: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP Architecture

Structures

1 Endpoint

2 Association

3 Transport

4 Stream

5 Msg

6 Packet

7 Chunk

overview

3 / 31

Page 4: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP Architecture

SCTP Structures in Linux

4 / 31

Page 5: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP Architecture

SCTP Procedures in Linux

5 / 31

Page 6: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP SCTP vs TCP

SCTP vs TCP/UDP on Feature

6 / 31

Page 7: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What and Why is SCTP SCTP vs TCP

SCTP vs TCP on Performance

Performance ?

7 / 31

Page 8: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux

Outline

1 What and Why is SCTPArchitectureSCTP vs TCP

2 What We’ve Done on LinuxProjectsImprovements Made RecentlyFeatures Implemented LatelyLINUX vs BSD

3 What’s the NextFeatures DevelopmentCode RefactorHardware Support

8 / 31

Page 9: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Projects

lksctp-tools (lib and unit test)

MANIFEST ——–

.

|– bin

|– doc

|– man

|– src

... |– apps

... |– func_tests

... |– include

... |... ‘– netinet

... |– lib

... |– testlib

... ‘– withsctp

- sctp_darn, sctp_test

- sctp_status, sctp_xconnect

- peel_client, peel_server

- bindx_test, myftp, nagle_rcv, nagle_snd

"""Unit Test: Look in src/func_tests and in lksctp-tests package for examples ofof tests. Please do not submit code that fails its own tests or any of the unittests. If it fails a functional test, please document that with the submission.

"""

- sctp_send, sctp_sendmsg, sctp_recvmsg

- sctp_connectx_orig, sctp_connectx2, sctp_connectx3

- sctp_bindx, sctp_opt_info

- sctp_peeloff, sctp_peeloff_flags

9 / 31

Page 10: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Projects

sctp-tests (regression test): 27 test cases so far

10 / 31

Page 11: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Projects

tahi-sctp (conformance test)

RFC4960: Association InitializationRFC4960: Association TerminationRFC4960: Fault ManagementRFC4960: Error CauseRFC4960: Chunk BundlingRFC4960: User Data TransferRFC4960: Retransmission TimerRFC4960: Congestion ControlRFC4960: Path MTU DiscoveryRFC4960: Multi-Homed EndpointsRFC4960: Explicit Congestion NotificationRFC4960: Packet FormatRFC4960: Miscellaneous TestRFC4895: Authentication ChunksRFC5061: Dynamic Address ReconfigurationRFC3758: Partial Reliability ExtensionRFC3554: Internet Protocol Security

11 / 31

Page 12: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Projects

Others

Syzkaller (fuzz test)

Codenomicon (fuzz test)

Packetdrill (conformance test)

Scapy (packet generating)

More ?

12 / 31

Page 13: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

Transport Rhashtable 1

13 / 31

Page 14: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

Transport Rhashtable 2

1 1-to-many(with "the same dport and different dip" lookup fast

2 1-step to find both transport and asoc

3 Rhashtable (rhlist) features: rcu_lock and resize memory

4 Why not use the key with hash(dport, lport, dip, lip) ?

5 Why not make rhashtable per endpoint/socket ?

14 / 31

Page 15: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

SCTP Offload 1

15 / 31

Page 16: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

SCTP Offload 2

16 / 31

Page 17: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

SCTP Diag 1

[iproute2]# ss --sctp -n -lState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 172.16.254.254:8888 *:*LISTEN 0 5 127.0.0.1:1234 *:*LISTEN 0 5 127.0.0.1:1234 *:*- ESTAB 0 0 127.0.0.1%lo:1234 127.0.0.1:4321

LISTEN 0 128 172.16.254.254:8888 *:*- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.253.253:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.1.1:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.1.2:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.2.1:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.2.2:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.3.1:8888- ESTAB 0 0 172.16.254.254%eth1:8888 172.16.3.2:8888

LISTEN 0 0 127.0.0.1:4321 *:*- ESTAB 0 0 127.0.0.1%lo:4321 127.0.0.1:1234

[iproute2]# ss -SnaiState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 1 127.0.0.1:27375 *:*locals:127.0.0.1,192.168.42.2, v4mapped:1ESTAB 0 0 127.0.0.1:37636 127.0.0.1:27375locals:0.0.0.0, v4mapped:1

17 / 31

Page 18: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

SCTP Diag 2

18 / 31

Page 19: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Improvements Made Recently

Others

Dst source addr selection

Rwnd improvements

Partial reliability fixes

MTU handling refactor

PMTU discovery (critical) fixes

CRC32c offloading on virtual interfaces

Some codes cleaning up

More ...

19 / 31

Page 20: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

Overview

Stream Schedulers and User Message Interleaving for theStream Control Transmission Protocol [RFC8260]

Additional Policies for the Partially Reliable Stream ControlTransmission Protocol Extension [RFC7496]

Stream Control Transmission Protocol (SCTP) StreamReconfiguration [RFC6525]

Sockets API Extensions for the Stream Control TransmissionProtocol (SCTP) [RFC6458]

Full SELinux support

More ...

20 / 31

Page 21: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

Stream Schedulers

21 / 31

Page 22: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

Message Interleaving

22 / 31

Page 23: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

PR_SCTP policies

1 Timed ReliabilitySCTP_PR_SCTP_TTL

2 Limited Retransmissions Policy

SCTP_PR_SCTP_RTXWhen dequeuing chunks from AWhen dequeuing chunks from CWhen moving chunks from B to CAfter receiving a SACK, check B and C

3 Priority Policy

SCTP_PR_SCTP_PRIOBefore enqueuing chunk into AAnd No Enough TX BufferThen try to drop C -> B -> A.

23 / 31

Page 24: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

Stream Reconfig

1 Add Outgoing Streams:No restrictions

2 Add Incoming Streams:No restrictions

3 Reset Outgoing Streams:Reset stream 1, b have to be empty

4 Reset Incoming Streams:Peer will send Outgoing Stream request for which it has to follow the above rule

5 Reset SSN/TSN:All queues have to be empty: A, B, C, a, b, c

24 / 31

Page 25: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux Features Implemented Lately

Socket APIs

1 User APIs

sctp_sendvsctp_recvv

2 Snd Info Flags

SENDALLMSG_MORE

3 Cmsgs

PR_INFOAUTH_INFODSTv4DSTv6

25 / 31

Page 26: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What We’ve Done on Linux LINUX vs BSD

Linux vs BSD on Features

Chunks

LINUX:ongoing

BSD:SCTP_NR_SELECTIVE_ACK (draft)SCTP_PACKET_DROPPED (draft)SCTP_PAD_CHUNK

Others

LINUX:sctp_do_sm()transport rhashtableoffloaddiag

BSD:sctp_cc_functions

26 / 31

Page 27: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What’s the Next

Outline

1 What and Why is SCTPArchitectureSCTP vs TCP

2 What We’ve Done on LinuxProjectsImprovements Made RecentlyFeatures Implemented LatelyLINUX vs BSD

3 What’s the NextFeatures DevelopmentCode RefactorHardware Support

27 / 31

Page 28: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What’s the Next Features Development

Features Development

Support more Chunks, Apis, Sockopts, Notifications.

Other features from Draft RFC, like SCTP NAT and CMT.

SCTP Performance Improvement (including sndbuf auto-tuning)

Add more test cases in sctp-tests.

28 / 31

Page 29: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What’s the Next Code Refactor

Code Refactor

Some huge and messy functions.

Congestion framework.

Refactor lksctp-tools.

29 / 31

Page 30: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

What’s the Next Hardware Support

Hardware Support

GSO x frag_list x frags.

Checksum.

Offload.

30 / 31

Page 31: Linux SCTP is catching up and going above - 25ptvger.kernel.org/lpc_net2018_talks/sctp-slides-final.pdf · 2018-11-05 · Linux SCTP is catching up and going above Red Hat, Inc. Marcelo

The end.Thanks for listening.

31 / 31