  Quick UDP Internet Connections (QUIC) is a recently proposed transport
protocol, currently being standardized by the Internet Engineering Task Force
(IETF). It aims at overcoming some of the shortcomings of TCP, while
maintaining the logic related to flow and congestion control, retransmissions
and acknowledgments. It supports multiplexing of multiple application layer
streams in the same connection, a more refined selective acknowledgment scheme,
and low-latency connection establishment. It also integrates cryptographic
functionalities in the protocol design. Moreover, QUIC is deployed at the
application layer, and encapsulates its packets in UDP datagrams. Given the
widespread interest in the new QUIC features, we believe that it is important
to provide to the networking community an implementation in a controllable and
isolated environment, i.e., a network simulator such as ns-3, in which it is
possible to test QUIC's performance and understand design choices and possible
limitations. Therefore, in this paper we present a native implementation of
QUIC for ns-3, describing the features we implemented, the main assumptions and
differences with respect to the QUIC Internet Drafts, and a set of examples.
