Session

Unstoppable Session Layer

Speakers

Alexander Aring

Label

Nuts and Bolts

Session Type

Talk

Contents

Description

In the Netdev 0x15 talk “ECONNRESET on a reliable socket and now?” [0] the authors described circumstances to give up handling connection errors like ECONNRESET on a reliable socket. The authors made the argument that when an application encounters connection errors, the act of merely reconnecting reduces the likelihood of the application being considered reliable. In those re-connections drops could occur in your stream-oriented socket.

A solution is a session layer on the application to deal with such scenarios and re-synchronize. Depending on your application there might be several techniques to do that. However in case you forgot about these circumstances and your application depends on a reliable connection it would be nice to have a small switch to introduce a generic session layer to provide reliability even if connection errors happen.

This talk will show the Unstoppable Session Layer (USL) to easily switch your networking application to provide a session layer between application and transport layer. It also provides a half-closed session termination implementation to provide such handling on top of the socket layer instead of in the socket layer. There exists two reasons: TCP is broken (on misbehaving middle boxes) and some transport layers like SCTP do not support such handling at all.

This talk will show how to easily put such a session layer on your networking application. It will be demonstrated by a basic TCP ping-pong application while tcpkill [1] tries to run crazy and interfere with the TCP application by sending TCP resets. The goal is to port this implementation even into the Linux kernel that several kernel application can easily converted to protect regarding connection errors.

[0] https://netdevconf.info/0x15/session.html?ECONNRESET-on-a-reliable-socket-and-now? [1] https://en.wikipedia.org/wiki/Tcpkill