Giter VIP home page Giter VIP logo

rebbr's People

Contributors

jervisfm avatar lukehsiao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

rebbr's Issues

Clean up debug output and organization of the repository

Currently the debug output is very much debug output. We probably want to set the logging level to DEBUG_LOG_INFO, and make that output clean. The user should be able to tell what experiment is running, and still see updates to the console frequently enough that they know if stuff is working.

Next, we should clean up the repository so that we just have a single ./run.sh command in the root of the repository that installs dependencies and everything, rather than needing to do everything from within the mahimahi folder.

Gather Data for Experiment 4

A Nice to have: Run figure 8 experiment but using link traces captured from an actual cellular link (The Verizon trace).

Once we have the data, we can plot the results reusing the same drawing code we have for figure 8.

Rename repository

Current title is super long. I propose we name it

jervisfm/rebbr or something like jervisfm/bbr-mahimahi or jervisfm/bbr-lossy-eval

or something else simple/shorter/

Error while running run_all.sh

  • set -e
  • cd mahimahi
  • ./init_deps.sh
  • set -e
  • echo 'Installing Python PIP'
    Installing Python PIP
  • sudo apt-get update
    Hit:1 http://ppa.launchpad.net/keithw/mahimahi/ubuntu xenial InRelease
    Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
    Hit:3 http://archive.ubuntu.com/ubuntu xenial InRelease
    Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
    Get:5 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
    Fetched 323 kB in 3s (90.0 kB/s)
    Reading package lists... Done
  • sudo apt-get install -y python-pip
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    python-pip is already the newest version (8.1.1-2ubuntu0.4).
    The following packages were automatically installed and are no longer required:
    linux-headers-4.4.0-134 linux-headers-4.4.0-134-generic linux-image-4.4.0-134-generic
    Use 'sudo apt autoremove' to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
  • echo 'Installing Python TK for graph plotting'
    Installing Python TK for graph plotting
  • sudo apt-get install -y python-tk
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    python-tk is already the newest version (2.7.12-1~16.04).
    The following packages were automatically installed and are no longer required:
    linux-headers-4.4.0-134 linux-headers-4.4.0-134-generic linux-image-4.4.0-134-generic
    Use 'sudo apt autoremove' to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
  • pip install matplotlib
    Requirement already satisfied: matplotlib in /usr/local/lib/python2.7/dist-packages (2.2.3)
    Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (2.3.0)
    Requirement already satisfied: backports.functools-lru-cache in /usr/local/lib/python2.7/dist-packages (from matplotlib) (1.5)
    Requirement already satisfied: subprocess32 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (3.5.3)
    Requirement already satisfied: pytz in /usr/local/lib/python2.7/dist-packages (from matplotlib) (2018.7)
    Requirement already satisfied: six>=1.10 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (1.11.0)
    Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (2.7.5)
    Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (1.0.1)
    Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (0.10.0)
    Requirement already satisfied: numpy>=1.7.1 in /usr/local/lib/python2.7/dist-packages (from matplotlib) (1.15.4)
    Requirement already satisfied: setuptools in /usr/lib/python2.7/dist-packages (from kiwisolver>=1.0.1->matplotlib) (20.7.0)
  • echo 'Installing Mahimahi'
    Installing Mahimahi
  • sudo add-apt-repository -y ppa:keithw/mahimahi
    gpg: keyring /tmp/tmp74qodba2/secring.gpg' created gpg: keyring /tmp/tmp74qodba2/pubring.gpg' created
    gpg: requesting key 7BF6DFCD from hkp server keyserver.ubuntu.com
    gpg: /tmp/tmp74qodba2/trustdb.gpg: trustdb created
    gpg: key 7BF6DFCD: public key "Launchpad PPA for Keith Winstein" imported
    gpg: Total number processed: 1
    gpg: imported: 1 (RSA: 1)
    OK
  • sudo apt-get update
    Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
    Hit:2 http://archive.ubuntu.com/ubuntu xenial InRelease
    Hit:3 http://ppa.launchpad.net/keithw/mahimahi/ubuntu xenial InRelease
    Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
    Get:5 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
    Fetched 323 kB in 0s (579 kB/s)
    Reading package lists... Done
  • sudo apt-get install -y mahimahi
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    mahimahi is already the newest version (0.98+679-0ppa~ubuntu16.04.1).
    The following packages were automatically installed and are no longer required:
    linux-headers-4.4.0-134 linux-headers-4.4.0-134-generic linux-image-4.4.0-134-generic
    Use 'sudo apt autoremove' to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    ++ date
  • echo Wed Nov 7 12:17:23 UTC 2018
    Wed Nov 7 12:17:23 UTC 2018
  • ./run_experiments_headless.sh
  • set -e
  • ./run_experiments.sh --headless
  • set -e
  • ./initialize_congestion_control.sh
    We need sudo so you'll be prompted for your password
    Initializing bbr
    net.ipv4.tcp_congestion_control = bbr
    Initializing bic
    net.ipv4.tcp_congestion_control = bic
    Initializing vegas
    net.ipv4.tcp_congestion_control = vegas
    Initializing westwood
    net.ipv4.tcp_congestion_control = westwood
    Initializing reno
    net.ipv4.tcp_congestion_control = reno
    Initializing cubic
    net.ipv4.tcp_congestion_control = cubic
    Enabling IP Forwarding
    net.ipv4.ip_forward = 1
    Increase maximum buffer sizes.
    net.core.rmem_max = 6553600
    net.core.wmem_max = 6553600
    net.core.rmem_default = 65536
    net.core.wmem_default = 65536
    net.ipv4.tcp_rmem = 4096 87380 6553600
    net.ipv4.tcp_wmem = 4096 65536 6553600
    net.ipv4.tcp_mem = 6553600 6553600 6553600
    net.ipv4.route.flush = 1
    Initialization complete
  • ./run_figure8_experiment.sh --headless
  • set -e
  • mkdir -p data
  • LOSS_RATES='0.001 0.01 0.1 1 2 5 10 15 20 25 30 40 50'
  • CONGESTION_CONTROL='cubic bbr'
  • LOG_FILE=data/figure8.csv
  • rm -f data/figure8.csv
  • echo 'Running Figure 8 experiment.'
    Running Figure 8 experiment.
  • for cc in '$CONGESTION_CONTROL'
  • for loss_rate in '$LOSS_RATES'
  • echo 'Executing trial with cc=cubic Loss rate: 0.001 ...'
    Executing trial with cc=cubic Loss rate: 0.001 ...
  • ./bbr_experiment.py --cc=cubic --loss=0.001 --output_file=data/figure8.csv --headless
    [INFO] Creating 60 sec trace @: 100Mbps
    [INFO] Server awaiting connection on port 5050
    [INFO] Running experiment [loss = 1e-05, cong_ctrl = cubic, rtt = 100, bw = 100]
    Died on std::runtime_error: mm-delay: please run as non-root
    [ERROR] Subprocess call error: Command '['stdbuf', '-o0', 'mm-delay', '50', 'mm-loss', 'uplink', '1e-05', 'mm-link', '100Mbps.up', '100Mbps.down', '--uplink-log=/tmp/mahimahi_log', '--once', '--', 'python', '-c', "from client import run_client; run_client('cubic')"]' returned non-zero exit status 1
    Traceback (most recent call last):
    File "./bbr_experiment.py", line 291, in
    main()
    File "./bbr_experiment.py", line 264, in main
    (capacity, goodput, q_delay, s_delay) = _parse_mahimahi_log()
    File "./bbr_experiment.py", line 135, in _parse_mahimahi_log
    command, shell=True, stderr=subprocess.STDOUT)
    File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
    subprocess.CalledProcessError: Command 'mm-throughput-graph 10 /tmp/mahimahi_log > /dev/null' returned non-zero exit status 2
    Process Server-1:
    Traceback (most recent call last):
    File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
    File "/home/panosc/bbr/mahimahi/server.py", line 69, in run
    conn, _ = s.accept()
    File "/usr/lib/python2.7/socket.py", line 206, in accept
    sock, addr = self._sock.accept()
    timeout: timed out

Mahimahi shell dying.

When running bbr_experiment.py, sometime I see Mahimahi dying. Check if this error is important or it can be ignored.

[INFO] Running experiment [loss = 0.25, cong_ctrl = bbr]
Traceback (most recent call last):
File "client.py", line 82, in
_run_client()
File "client.py", line 77, in _run_client
s.send(msg)
socket.error: [Errno 32] Broken pipe
Died on std::runtime_error: stdbuf -o0 python client.py 5050 bbr': process exited with failure status 1 Died on std::runtime_error: packetshell': process exited with failure status 1
Died on std::runtime_error: mm-link 100Mbps.up 100Mbps.down --uplink-log=/tmp/bbr_log --meter-uplink --once -- stdbuf -o0 python client.py 5050 bbr': process exited with failure status 1 Died on std::runtime_error: packetshell': process exited with failure status 1
Died on std::runtime_error: mm-loss uplink 0.25 mm-link 100Mbps.up 100Mbps.down --uplink-log=/tmp/bbr_log --meter-uplink --once -- stdbuf -o0 python client.py 5050 bbr': process exited with failure status 1 Died on std::runtime_error: packetshell': process exited with failure status 1

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.