Skip to content

Instantly share code, notes, and snippets.

@ffund
ffund / plot-ss.R
Created February 7, 2019 21:53
Script for plotting values from SS output.
library(ggplot2)
library(stringr)
library(reshape2)
#
# Read in BBR data
#
fields <- c("ts", "rto", "srtt", "rttvar", "mss", "pmtu", "rcvmss", "advmss", "cwnd", "bytes_acked", "segs_out", "segs_in", "data_segs_out", "send", "lastrcv", "pacing_rate", "delivery_rate", "busy", "rwnd_limited", "unacked", "retrans_total", "lost", "sacked", "reordering", "rcv_space", "rcv_ssthresh", "notsent", "minrtt", "bbr_bw", "bbr_mrtt", "bbr_pacing_gain", "bbr_cwnd_gain")
@ffund
ffund / ss-parse.sh
Created February 7, 2019 21:51
Parses SS output for BBR flow live, and outputs in CSV format. Adjust the sleep interval if you want. Use as: `./live-ss-parse.sh 10.0.0.1 5201 | tee outfile.csv` where the argument is the peer IP address and port of the flow you are interested in.
#!/bin/bash
dst=$1
dstport=$2
while [ 1 ]; do
ts=$(date +%s.%N)
line=$(ss -eipn dst "$dst:$dstport" | grep "bbr")
rto=$(echo $line | grep -oP '\brto:.*?(\s|$)' | awk -F '[:,]' '{print $2}' | tr -d ' ')
rttvals=$(echo $line | grep -oP '\brtt:.*?(\s|$)' | awk -F '[:/]' '{print $2","$3}' | tr -d ' ')
@ffund
ffund / no-offload.sh
Created January 8, 2019 21:51
Turn off offloading!
# Get a list of all experiment interfaces, excluding loopback
ifs=$(netstat -i | tail -n+3 | grep -Ev "lo" | cut -d' ' -f1 | tr '\n' ' ')
# Turn off offloading of all kinds, if possible!
for i in $ifs; do
sudo ethtool -K $i gro off
sudo ethtool -K $i lro off
sudo ethtool -K $i gso off
sudo ethtool -K $i tso off
sudo ethtool -K $i ufo off
@ffund
ffund / edgelink.dist
Created January 8, 2019 20:56
Experimental distribution for netem based on EdgeLink link.
@ffund
ffund / bbrv1setup.sh
Last active March 15, 2019 12:19
Scripts for the basic BBR experiment
#!/bin/bash
sudo modprobe tcp_bbr
sudo tc qdisc replace dev $(ip route get 10.0.3.1 | grep -oP "(?<=dev )[^ ]+") root fq pacing
@ffund
ffund / parking-lot.xml
Created November 14, 2018 20:58
Parking lot topology for AQM experiment
<rspec xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" type="request">
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="R1">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/Xen-VM.svg"/>
<site xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" id="Site 1"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="emulab-xen">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="urn:publicid:IDN+emulab.net+image+emulab-ops:UBUNTU16-64-STD"/>
</sliver_type>
<services xmlns="http://www.geni.net/resources/rspec/3">
<execute xmlns="http://www.geni.net/reso
import RPi.GPIO as GPIO
import time
import sys
# Use BCM pin numbering
GPIO.setmode(GPIO.BCM)
# Define pin numbers
TRIG = 14
ECHO = 23
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
# GPIO pin to LCD pin mapping
LCD_RS = 7
LCD_E = 8
LCD_D4 = 25
LCD_D5 = 24
@ffund
ffund / setup-cake.sh
Last active August 29, 2018 20:41
Post-boot script for routers in the CAKE topology
#!/bin/bash
cd /tmp
sudo git clone https://github.com/dtaht/sch_cake.git
cd sch_cake/
sudo make
sudo make install
cd /tmp
sudo git clone https://github.com/dtaht/tc-adv
@ffund
ffund / adaptive-video-rspec.xml
Last active November 10, 2020 16:33
Rspec for https://witestlab.poly.edu/blog/adaptive-video/ (modified since default VM in GENI Portal has changed).
<rspec xmlns="http://www.geni.net/resources/rspec/3" xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1" xmlns:tour="http://www.protogeni.net/resources/rspec/ext/apt-tour/1" xmlns:jacks="http://www.protogeni.net/resources/rspec/ext/jacks/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.geni.net/resources/rspec/3 http://www.geni.net/resources/rspec/3/request.xsd" type="request">
<node xmlns="http://www.geni.net/resources/rspec/3" client_id="Client">
<icon xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" url="https://portal.geni.net/images/VM-noTxt-centered.svg"/>
<site xmlns="http://www.protogeni.net/resources/rspec/ext/jacks/1" id="Site 1"/>
<sliver_type xmlns="http://www.geni.net/resources/rspec/3" name="emulab-xen">
<disk_image xmlns="http://www.geni.net/resources/rspec/3" name="urn:publicid:IDN+emulab.net+image+emulab-ops:UBUNTU16-64-STD"/>
</sliver_type>
<services xmlns="http://www.geni.net/resources/rspec/3"/>
<interfa