GithubHelp home page GithubHelp logo

soheil-ab / sage Goto Github PK

View Code? Open in Web Editor NEW
37.0 37.0 8.0 81.58 MB

Sage of Congestion Control (or How Computers Can Learn from Existing Schemes and Master Internet CC)

License: MIT License

Shell 4.03% Perl 8.93% Python 28.60% C 8.46% C++ 36.88% Roff 13.10%

sage's People

Contributors

soheil-ab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sage's Issues

Running sage between two VMs

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.

Question about linux-patch

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?

Unable to run sample tests.

Hi thank you for the speedy response. Executing the script without root still leads to no data output.
image
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.

Questions about the linux patch

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.

Question about the relationship between iPerf and Sage Client/Server

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!

sage's kernel code

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.

something wrong in policy collector

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.

Any plan to release the collected dataset?

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!

Qustion about multi-flow test

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.

  1. Fairness experiment:
    I see there are interfaces for 'scheme' and 'num_flows', I noticed that in 'sage.cc', when ‘flows_num > 1’, it will open iperf and sending cubic flows. But if I want to run multiple sage flows, how can I achieve this?
  • How can I run multiple sage flows?
  • How can multiple flows share memory?
  1. Friendliness experiment:
    When I modify the parameters in 'sage_rl/run_sample.sh' (as shown below), i observe that there is iperf output in command line, indicating that mutli-flow (e.g., 'flow1: sage, flow2: cubic') are running correctly.
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  
  • How can I view the throughput of different flows (and draw throughput figure)? I find there're no noticeable differences in the output figure in 'sage_rl/log'.

Thank you in advance for your assistance.

Unable to run sage sample experiment.

Hi when I try to run the sample script, I get the following error with no output data. Can you provide some guidance on how to resolve the issue? Thanks.

image

Sage mininet usage

Can the sage code be adapted to tested using mininet? And if so how would one go about doing that?

Question about training and policy collection

I have two problems and hope you can give me some advise.

  1. 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).
    image

  2. As for training, after obtaining the final dataset, I face the issue of memory consumption continuously increasing until the process is killed."
    image

I can't install the nvidia driver in 4.19.112-0062 kernel. like the issue "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."

          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)

Question on running sample test

After the installation, something wrong happens when running run_sample.sh. ERROR seems to be: [Cntthread] null alpha.

Could you give me some advice of debugging?
Uploading Screenshot from 2023-11-01 20-17-58.png…

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.