485 research outputs found
Observing the Evolution of QUIC Implementations
The QUIC protocol combines features that were initially found inside the TCP,
TLS and HTTP/2 protocols. The IETF is currently finalising a complete
specification of this protocol. More than a dozen of independent
implementations have been developed in parallel with these standardisation
activities.
We propose and implement a QUIC test suite that interacts with public QUIC
servers to verify their conformance with key features of the IETF
specification. Our measurements, gathered over a semester, provide a unique
viewpoint on the evolution of a protocol and of its implementations. They
highlight the arrival of new features and some regressions among the different
implementations.Comment: 6 pages, 8 figure
TCPSnitch: Dissecting the Usage of the Socket API
Networked applications interact with the TCP/IP stack through the socket API.
Over the years, various extensions have been added to this popular API. In this
paper, we propose and implement the TCPSnitch software that tracks the
interactions between Linux and Android applications and the TCP/IP stack. We
collect a dataset containing the interactions produced by more than 120
different applications. Our analysis reveals that applications use a variety of
API calls. On Android, many applications use various socket options even if the
Java API does not expose them directly. TCPSnitch and the associated dataset
are publicly available.Comment: See https://www.tcpsnitch.or
MCQUIC: Multicast and unicast in a single transport protocol
Multicast enables efficient one-to-many communications. Several applications
benefit from its scalability properties, e.g., live-streaming and large-scale
software updates. Historically, multicast applications have used specialized
transport protocols. The flexibility of the recently standardized QUIC protocol
opens the possibility of providing both unicast and multicast services to
applications with a single transport protocol. We present MCQUIC, an extended
version of the QUIC protocol that supports multicast communications. We show
how QUIC features and built-in security can be leveraged for multicast
transport. We present the design of MCQUIC and implement it in Cloudflare
quiche. We assess its performance through benchmarks and in emulated networks
under realistic scenarios. We also demonstrate MCQUIC in a campus network. By
coupling QUIC with our multicast extension, applications can rely on multicast
for efficiency with the possibility to fall back on unicast in case of
incompatible network conditions.Comment: 13 page
Adaptive Address Family Selection for Latency-Sensitive Applications on Dual-stack Hosts
Latency is becoming a key factor of performance for Internet applications and
has triggered a number of changes in its protocols. Our work revisits the
impact on latency of address family selection in dual-stack hosts. Through RIPE
Atlas measurements, we analyse the address families latency difference and
establish two requirements based on our findings for a latency-focused
selection mechanism. First, the address family should be chosen per
destination. Second, the choice should be able to evolve over time dynamically.
We propose and implement a solution formulated as an online learning problem
balancing exploration and exploitation. We validate our solution in simulations
based on RIPE Atlas measurements, implement and evaluate our prototype in four
access networks using Chrome and popular web services. We demonstrate the
ability of our solution to converge towards the lowest-latency address family
and improve the latency of transport connections used by applications
Beyond socket options: making the Linux TCP stack truly extensible
The Transmission Control Protocol (TCP) is one of the most important
protocols in today's Internet. Its specification and implementations have been
refined for almost forty years. The Linux TCP stack is one of the most widely
used TCP stacks given its utilisation on servers and Android smartphones and
tablets. However, TCP and its implementations evolve very slowly. In this
paper, we demonstrate how to leverage the eBPF virtual machine that is part of
the recent versions of the Linux kernel to make the TCP stack easier to extend.
We demonstrate a variety of use cases where the eBPF code is injected inside
a running kernel to update or tune the TCP implementation. We first implement
the TCP User Timeout Option. Then we propose a new option that enables a client
to request a server to use a specific congestion control scheme. Our third
extension is a TCP option that sets the initial congestion window. We then
demonstrate how eBPF code can be used to tune the acknowledgment strategy.Comment: 9 pages, 8 figure
- …