Summer Camp 2011 Tutorials

Stephen Woodrow edited this page Feb 27, 2012 · 1 revision

BISmark Summer Camp 2011/Tutorials

Tutorial Day 1

  • Goal: Get familiar with router, familiarize with build

Overview and Setup

Initiate build

  • make sure the following development tools are installed:
    • build-essential
    • gawk
    • flex
    • at
  • set up git username
    • git config --global "Your Name" (replace with your name)
    • git config --global "" (replace with your email address)
  • ./ init
    • (temporary bug fix): cp blessed_config src/cerowrt/.config
  • cd src/cerowrt/
  • make (use batch to be nice)
    • make -j8 V=99
    • make V=99
  • wait (build can take 45-60 minutes on huchra)

Install the build

Tutorial Day 2

Package Overview

  • Operating systems in the room: Ubuntu 10.04, 10.10, 11.04, Debian Squeeze
  • Packages in the source tree
    • bismark-packages (on github)
    • Dave's repositories (welcome to clone, but don't call it cerowrt if you tweak it beyond recognition)
      • cerowrt (Dave Taht maintains; read-only is available, read-write available on proving yourself): derived from OpenWRT
      • cerofiles
    • luci (written in lua)
    • openwrt: core OS (things needed to boot)
    • packages: part of the openwrt project

Differences between OpenWRT and CeroWRT

  • overview of git show and recent changes to OpenWRT (currently, 8 patches differences)
    • support for reno, bic, cubic, DRR, choke, SFB, etc.
    • publish the top-most commit of what version you use, and people will be able to duplicate your results
  • recommendation: track changes to OpenWRT
  • in openwrt logs: nbd/felix is one of the main openwrt developers
  • to read the logs, cd into each directory and "git log" to see the changes

Pulling Updates and Merging

  • git configuration file: .git/config
    • what to fetch, and URL to fetch from. can name different branches (e.g., openwrt, cerowrt, etc.)
    • defines a new remote repository "openwrt"
    • "git pull openwrt master" into the cerowrt directory pulls the openwrt patches into the cerowrt directory. (pulls from master branch)
  • Presenting example of how to pull openflow into the source tree
    • feeds.conf sets up pointers to other feeds
      • e.g., src-git openflow git://
    • ./scripts/feeds update pulls all of the packages from things in feeds.conf
  • the "env/files" directory: default configuration files into this directory
    • lib/wifi/" (script that brings up wireless by default)
    • etc/opkg.conf points to Dave's package repository. when doing your own build, will have to change this.
    • ./scripts/env is a useful script for managing different environments for the files directory
  • make defconfig
  • make menuconfig (menu-based configuration)
  • vi .config
    • CONFIG_PACKAGE_bismark-active=m (install as module, not as part of the build)
  • feed overview (how to get this list?)
    • bird routing daemon (worth trying out): has BGP, other routing protocols
    • collectd (system statistics monitoring)
    • busybox: most UNIX utilities bundled into a single executable file (10s of MB of utilities into about 600k). can always pull from coreutils if you absolutely need it
    • freeswitch (SIP server)
    • VPNs: stongswan, etc.
  • ./scripts/feeds install openflow (still has bug) [or some other package]
  • fire off the build
    • make -j8 V=99

Tutorial Day 3

Setting Up OpenWRT Toolchain and Building Your Own Packages From Scratch

  • Grab git repositories to create a local version of the repository
    • openwrt
    • packages
    • openflow
  • Update feeds.conf to point to local repositories (use src-link to point to local file repositories)
  • Update your feeds
    • ./scripts/feeds update - updates feeds in the feeds directory using {svn, git, local filesystem, etc.}
  • Install some feeds
    • ./scripts/feeds install {openflow, bismark}
    • ./scripts/feeds install -p custom ditg
  • set up "files" for any files to be installed on the root filesystem
  • make menuconfig
  • make -j8

Setting Up OpenWRT Toolchain on

  • Update feeds.conf to point to local repositories
  • Update and Install feeds
  • Symlink files to /data/users/bismark/

Lab Users

Name Email Network Name IP Address 6net
Srikanth Sundaresan 172.31.1.x
Hyojoon Kim joon 172.31.2.x
Nazanin Magharei nm 172.31.3.x
Yiannis Yiakoumis yy 172.31.4.x
Kyriakos Zarifis kz 172.31.5.x
Jacopo Cesareo jcesareo@CS.Princeton.EDU jc 172.31.6.x
Walter de Donato wd 172.31.7.x
Stephen Woodrow sw 172.31.8.x
Dave Taht dave 172.31.9.x
Ken Calvert kc 172.31.10.x
Alex Snoeren as 172.31.11.x
Steve Fox sf 172.31.12.x
matt matt 172.31.13.x
Xuzi Zhou xz 172.31.14.x

Breakout Teams

  • netperf
    • Stephen
    • Kyriakos
  • uFTP
    • Dave
    • Matt
    • Jacopo
    • Youngsung
  • bismark stuff
    • Srikanth
    • Walter
    • Xuzi
    • Nazanin
  • Passive measurements
    • Walter
    • Nick
  • OpenFlow stuff
    • Yiannis
    • Joon