This is network packet simulator for emulating various network types in order to test the behavior of the UT2, TCP, QUIC, QUICHE protocols.
This network packet simulator supports such features as:
- RTT
- Bandwidth limiting
- Separate rates for upload/download channels
- Setting amount of file sizes
- Setting amount of requests
- Ability to test different combinations of loss
- Congestion control window
- Multi-client routing support
- Dumping and collecting sent statistic
- Linux
- JDK 8 or higher (note to set $JAVA_HOME to PATH)
-
valgrid
- for checking memory leaks -
tshark
- for dumping packets (NB: https://gist.github.com/MinaMikhailcom/0825906230cbbe478faf4d08abe9d11a) -
built QUIC from Chromium sources for QUIC tests (check for it: https://www.chromium.org/quic/playing-with-quic). Before starting QUIC tests it's needed to generate certificates and add them to CA store.
- Run:
${PATH_TO_CHROMIUM}/src/net/tools/quic/generate-certs.sh
- Run:
sudo apt install libnss3-tools
- Run
sudo bash add-certs-to-stores.sh ${PATH_TO_CHROMIUM}/src/net/tools/quic/certs/out/2048-sha256-root.pem "QUIC Server Root CA"
Next times it could be set up using script (remember to configure paths in the script):
./set_up_quic.sh
- Run:
-
built QUICHE from sources for QUICHE tests (check for it: https://github.com/cloudflare/quiche)
- Build project with dependencies:
./gradlew build -x test
- Set up TUN/TAP environment:
./set_up.sh
- Run all tests:
To run certain tests use this commands:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand" --info
- TCP:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand.PureTcpDataTransferTest" --info
- UT2:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand.Ut2UdpDataTransferTest" --info
- QUIC:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand.QuicDataTransferTest" --info
- QUIC->QUICHE:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand.QuicQuicheDataTransferTest" --info
- QUICHE:
./gradlew cleanTest test --tests "one.transport.ut2.testing.stand.TestStand.QuicheDataTransferTest" --info
- Set down environment:
./set_down.sh
There are two files for configuring tests:
application.properties
This file contains variables for environment. It's needed to change variables related to QUIC/QUICHE before running QUIC/QUICHE tests.configuration.json
This file contains parameters for setting up test cases.
https://www.kernel.org/doc/Documentation/networking/tuntap.txt