An ns-3 native implementation of IETF QUIC for ns-3

This app contains an ns-3 module extension for QUIC, a recently proposed transport protocol which runs on top of UDP, currently being standardized by the IETF.

This version is aligned with version 13 of the IETF QUIC drafts. Our implementation is based on the design of the ns-3 TCP implementation, and heavily extends it to account for the novelties of QUIC, such as:

  • improved acknowledgement mechanism with respect to TCP
  • multiplexing of different streams in a single connection
  • 0-RTT handshake

This version does not implement the TLS encryption of the QUIC packets, but simulates the exchange of the parameters relevant to its setup.

For additional details and a description of the main functionalities of the module please refer to and cite the following paper, available on arXiv:

Alvise De Biasio, Federico Chiariotti, Michele Polese, Andrea Zanella, Michele Zorzi. 2019. A QUIC Implementation for ns-3. In 2019 Workshop on ns-3 (WNS3 2019), June 19–20, 2019, Florence, Italy.

Future work

Future extensions will include the support for BBR as congestion control algorithm, and the update it with the latest features when QUIC will become an IETF standard.


This module is being developed by a team (Alvise De Biasio, Federico Chiariotti and Michele Polese) at the SIGNET Lab at the University of Padova. This work was supported in part by the U.S. Department of Commerce National Institute of Standards and Technology through the Project “An End-to-End Research Platform for Public Safety Communications above 6 GHz” under Award 70NANB17H16.


Works with ns-3-dev

Release Notes

<p>First ns-3 App Store release. It requires ns-3-dev after commit 42541d6cba5de572d23aa1f2498ba938a8bdcaab</p>

### Prerequisites ### To run simulations using this module, you will need to install ns-3. Required dependencies include git and a build environment. Please refer to [the ns-3 wiki](https://www.nsnam.org/wiki/Installation) for instructions on how to set up your system to install ns-3. ### Download with the App Store Download the source and unpack it ``` tar -xzf quic.tar.gz ``` Move (and rename) the `quic` folder to ``` ns-3-dev/contrib/quic ``` ### Download from Github From ``` ns-3-dev/contrib/ ``` clone the quic module: ``` git clone https://github.com/signetlabdei/quic quic ``` ### Configure and compile From ``` ns-3-dev/```, run ``` ./waf configure --enable-tests --enable-examples ``` ``` ./waf build ```

To report bugs, please open an issue in the module [GitHub repository](https://github.com/signetlabdei/quic-ns-3/issues) or write an email to the maintainers.

Contributions to the module are welcome. Please open a [Pull Request](https://github.com/signetlabdei/quic-ns-3/pulls) on the main repository against the master branch. You can also get in touch with the module maintainers, to improve the coordination of the development and avoid duplicated efforts.

This ns-3 extension is one or more contributed modules.

Version 0.1

Released May 22, 2019

Works with ns-3-dev