soheil-ab / sage Goto Github PK
View Code? Open in Web Editor NEWSage of Congestion Control (or How Computers Can Learn from Existing Schemes and Master Internet CC)
License: MIT License
Sage of Congestion Control (or How Computers Can Learn from Existing Schemes and Master Internet CC)
License: MIT License
Hello,
Thank you for sharing your sage code. I implemented the patched kernel on two VMs running on servers with a switch between them and I would like some guidance on how I can run sage between these two VMs.
I have already run the run_sample.sh
on the individual VMs and I got some output, but I can't figure out what I need to do to get a sage server running on one VM to communicate with a sage client running on another VM. The reason I want to run it this way is so I can avoid the bandwidth limit introduced by Mahimahi and just control the bandwidth limit at the switch instead, is this possible?
Thanks for your help.
With Ubuntu16.04 (Kernel 4.15.0.142), dpkg the .deb and the kernel patch was installed.
But when loading the modified kernel 4.19, the process is stuck in ' load inital ramdisk...' and cannot boot up.
Could you give me some advice and help me to deal with it?
Hi thank you for the speedy response. Executing the script without root still leads to no data output.
My error seems to stem from the last line of server.sh. What is the last line supposed to execute? I ran through the setup again to make sure I had the environment configured properly but am still seeing the error. Thanks.
I have installed the 4.19 kernel version as instructed on a physical machine. And I need to reinstall the NIC driver. However, I get an error about missing /lib/modules/linux-4.19-xx/build .
Therefore, I would like to ask you whether you installed the linux patch on a virtual machine or a physical machine and whether you have encountered problems that require reinstalling drivers such as the NIC driver.
In Sage.cc
, Line 237 and 238,
sprintf(tmp_cmd,"%s sudo -u `echo $USER` iperf3 -c $MAHIMAHI_BASE -p %d -R -i 0 -t %d &",tmp_cmd,client_port+i,duration);
sprintf(pre_cmd,"%s sudo -u `echo $USER` iperf3 -s -p %d -i 0 &",pre_cmd,client_port+i);
These lines create an iperf client and server for each flow (there will be serveral iperf) to measure bandwidth and network performance (is this correct?). They are then added to the container_cmd
and final_cmd
. Thus, when starting the Sage client and server (which sending and receiving "1"), iperf is also started for each flow.
What is the meaning and relationship between iPerf and the Sage Client/Server? From my understanding, iPerf is used for network performance benchmarking (e.g., bandwidth usage and latency), while the Sage Client/Server is responsible for the actual data transmission using Sage's congestion control. Is this correct? Additionally, will iperf and the Sage Client/Server influence each other, e.g., Bandwidth Occupation and compete?
Thank you for your help!
Hi, Thanks for your excellent work of sage cc algorithm. I'm recently designing my new cc algorithm,but I don’t have a deep understanding of the linux kernel. So i have some problems in Integrating my congestion control algorithms into the kernel. Could you please tell me where to find the the sage's linux kernel code(like the cubic's source code net/ipv4/tcp_cubic.c)?
I found that you use the setsockopt to acquire the network stats(TCP_INFO sock option) as the rl model's input and also use the setsockopt to change the cc window(TCP_CWND sock option), could you please tell me where to find the source code?
Please forgive me for bothering you with such basic programming questions. Thanks very much if you can help me.
I'm interested in the "policy collector", but the link of pantheon-modified repository in "Creating the Dataset/1. Using the Policy Collector" seems to be invalid.
Dear Dr. Abbasloo. Firstly, thank you for this really fantastic work. I was wondering if you have any plan to release the collected pool of policies with 60 million data points. It will greatly advance this research field. Thanks!
I have some questions with multi-flow tests and would appreciate your advice.
I can run single-flow tests and see log in 'sage_rl/log'. After reading your paper, I noticed that there are experiments related to TCP friendliness and fairness.
for num_flows in 1 2 3 4
do
./sage.sh 10 44545 wired24 wired24 1 300 24 24 7 0 testing 30 1 0 $num_flows 1 1
done
Thank you in advance for your assistance.
Can the sage code be adapted to tested using mininet? And if so how would one go about doing that?
I have two problems and hope you can give me some advise.
Regarding policy collection, generating a simple dataset with parts of CCs (cubic and reno) is okay. However, I encounter a 'connection failed' error when trying to collect data for other CCs (e.g., vegas, bbr).
As for training, after obtaining the final dataset, I face the issue of memory consumption continuously increasing until the process is killed."
I am now relatively certain that the issue is related to the code '#include <sys/socket.h>' line28 in the '/usr/src/linux-headers-4.19.112-0062/include/linux/if.h' file, which references a user-space library. This issue seems similar to the one described in this GitHub issue: https://github.com/openzfs/zfs/issues/10601.
In fact, there may be other problems with the kernel module that are preventing the installation of network card drivers and NVIDIA GPU drivers (basically, anything that relies on kernel header files). I would like to know if you can confirm this issue. When using Sage for inference, did you use only the CPU, or were there any GPU-related dependencies?
Originally posted by @intothesea in #5 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.