An ns-3 native implementation of IETF QUIC for ns-3
4.76/5 (289 reviews)
Categories: Transport Protocols

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
  • BBR
  • custom stream schedulers

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 update the module 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, Umberto Paro) 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.32

Build History : QUIC v1.0

Release Notes

<p>This release adds: - support for BBR - support for custom schedulers - compatibility with ns-3.32</p>


Works with ns-3-dev

Build History : QUIC 0.1

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 v1.0

Released Nov. 13, 2020

Works with ns-3.32