JorisHerbots / vegvisir

Vegvisir is an automated testing framework for orchestrating prototypical QUIC-HTTP/3 client-server communications using simulated network conditions.
Other
17 stars 3 forks source link

Running client and server on different systems #10

Closed Shivansh20128 closed 1 week ago

Shivansh20128 commented 1 year ago

Hi, I am doing an experiment in which I need to use the setup for the client-shaper-server, where the client and the server need to be on a separate system (the client and the shaper can coexist on the same system). While going through the scripts inside the repository, I found a file (tc-netem-shaper/scenarios/bba_buffering_paper.sh) where the interfaces and the IPs are mentioned for the network simulation. Please advise if it is possible to do so by making some changes to the existing setup configuration and provide some helpful information to achieve that. Thank You

JorisHerbots commented 1 year ago

Vegvisir is designed to run all its entities on the same host. Achieving your goal will require some fiddling around with code and routes.

Suppose only the client can coexist with the shaper. In that case, you will need to adjust the codebase such that all traffic flowing between the server and shaper gets redirected to your server machine (similar to how we provide CLI and container support for the client). To avoid having to change too much in the codebase, you could spin up a dummy server on the machine running Vegvisir. This method, however, has no built-in way of spinning up or down the server automatically, so you would need to do this manually or make it so that the server machine is available during the whole experiment.

Shivansh20128 commented 11 months ago

I went through the code to understand the flow of vegvisir. From what I understood, if I make changes in the docker-compose file, like adding a new docker overlay network that will allow containers from different hosts to join (with the help of a docker swarm), and accordingly change the networks for client and server, I can run vegvisir with client and server on different systems. I am doing this in connection with the project cross that boundary. But first, I want to ask you if you think this would work. Another question that I have about the docker-compose file is that there are many services running, like sim (which I think is the shaper service), server, client, tcpdump_leftnet, tcpdump_rightnet, iperf_client, iperf_server, and networks. Could you say a line or two about each of them? Because I need to understand what they refer to before changing them.

JorisHerbots commented 11 months ago

I went through the code to understand the flow of vegvisir. From what I understood, if I make changes in the docker-compose file, like adding a new docker overlay network that will allow containers from different hosts to join (with the help of a docker swarm), and accordingly change the networks for client and server, I can run vegvisir with client and server on different systems. I am doing this in connection with the project cross that boundary.

As long as your changes cause traffic to flow over the shaper, you achieve the same goal Vegvisir has.

But first, I want to ask you if you think this would work. Another question that I have about the docker-compose file is that there are many services running, like sim (which I think is the shaper service), server, client, tcpdump_leftnet, tcpdump_rightnet, iperf_client, iperf_server, and networks. Could you say a line or two about each of them? Because I need to understand what they refer to before changing them.