Geosynchronous Equatorial Orbit (GEO) Emulated System
Aim: The aim of this project was to create a system that would emulate the conditions of a Geosynchronous Equatorial Orbit (GEO) environment. It was built on a native ubuntu system on an AWS (EC2) instance. It ran on a docker container also running native ubuntu, and a scripting program that created veths and netems to control the parameters with the container image.
Background:
Why it is useful:
- Testing for quicly/h2o implementation of Google’s QUIC
- This system environment can and has been used to test the quicly/h2o source code developed by the open source h2o group
- Useful testing and tuning system for Content Delivery Networks (CDNs) that use h2o servers
- All h2o servers run the quicly source code
- Many CDNs use the h2o HTTP/3 servers to provide proxy services over HTTP/1.x and HTTP/2
- Designed for the Viasat inc satellites within the System Sciences Group (SSG)
- Used by the System Science Group to test tuned buffer parameters and in-built congestion control algorithms
Future Prospects:
- Tune QUIC parameters to increase bandwidth and adjust latency
- Implement new Congestion Control Algorithms and use the system for testing
How it was built:
- qperf system:
- The emulated system uses a qperf client-server connection. qperf is a tool similar to iperf that runs on Google’s QUIC rather than TCP/IP. The qperf tool was used to measure bandwidth, latency, and overall connection health.
- The version of qperf used is an implementation that runs on an Internet Engineering Task Force (IETF) endorsed QUIC called quicly/h2o.
- qperf running on Docker and host with veths:
- The emulation environment runs with two qperf instances in an EC2 instance running ubuntu (linux). One instance of the qperf runs within the Docker container as a server, while the other qperf instance is on the ubuntu host.
- A bash script was then implemented that used veths (virtual ethernets). Two IP addresses of the two veths were created, one veth was placed in the namespace of the Docker container to act as the server, the other veth was placed in the namespace of the local host to act as the client. An Image is show below to showcase the veths and namespaces.
Find the Project Here:
Check out the project here: https://github.com/Kekhrie42/qperf_server
This project was created for Viasat inc within the System Sciences Group to test an implementation of Google's QUIC called quicly/h2o