As a result, identifying issues with the protocol and implementations took longer than it should have, and the existing tests could miss scenarios likely to be found once they were widely in use.
The QuicInteropRunner (QIR) is our attempt at overcoming these limitations. Using simple container orchestration and network simulation, QIR makes it possible to meet the constraints of implementers while automating this process for on-demand, continuous, and repeatable interoperability and performance testing. A more complete explanation how QIR uses Docker containers and the ns-3 network simulator is available in our paper, which was recently presented at the EPIQ ‘20 conference.
Currently, 13 QUIC implementations (two of which only implement a QUIC server and one which only implements a QUIC client) are included in QIR. Importantly, any implementer can include their implementation in QIR by building a compatible container image, making it publicly available, and adding it to the list of implementations.
To enable continuous interoperability testing, we have set up a QIR instance that continuously pulls the implementation images and runs all the tests in the framework. The results of this continuous testing are posted on this webpage.
As a network of networks, the global Internet we know today works because independently deployed and managed components work well together through open protocols. Internet interoperability testing traces its history back to at least 1986 and remains a key part of new protocol development and deployment. While QIR was developed for testing QUIC implementations, we believe the central ideas, components, and even code can be repurposed for testing other protocols that will help the Internet evolve and work better.