Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about configuring network traces with bandwidth information #3

Open
jialianchen opened this issue Jan 17, 2025 · 1 comment

Comments

@jialianchen
Copy link

Thank you for your open source work which has been very helpful for newcomers in this research area!

I have some questions about extending the system to work with new network traces similar to classic datasets like FCC and Norway. I want to test with custom network traces but I'm unclear about where to make the modifications.

In docker-compose-emulation.yaml, I only found:

nginx:
  image: clarkzjw/dashjs-nginx:emulation
  build:
    context: .
    dockerfile: Dockerfile-nginx-emulation
  container_name: dashjs-nginx
  volumes:
    - ./runner/trace/isl-trace.csv:/trace/trace.csv

The isl-trace.csv only contains columns for "since", "relative_seconds", and "rtt", but no bandwidth settings. Could you please clarify:

  1. Where is the bandwidth trace configured in the system?
  2. What's the proper way to add custom network traces with bandwidth information?

Thank you very much for your help!

@clarkzjw
Copy link
Owner

Hi @jialianchen, thanks for the interest.

In this implementation, we focused on investigating what is the impact of latency fluctuation to video streaming, and we set a fixed bandwidth setting in all scenarios and let congestion control and ABR algorithms to adapt the latency fluctuations.

If bandwidth traces are needed, an intuitive approach is to modify tc-trace.py and add custom tc command to modify the bandwidth setting of the links.

A better approach might be replacing the original shaper implementation, with custom approaches such as eBPF-based bandwidth shaper or others. You do not necessarily need to implement them in the tc-trace.py. You can implement them independently, and add them to the Nginx container and start with supervisord.

Other approaches include integrating mahimahi, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants