Initial commit of vpp code.

Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17
Signed-off-by: Ed Warnicke <eaw@cisco.com>
This commit is contained in:
Ed Warnicke
2015-12-08 15:45:58 -07:00
parent fb0815d4ae
commit cb9cadad57
956 changed files with 715491 additions and 0 deletions

1
build-root/vagrant/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.vagrant/

54
build-root/vagrant/README Normal file
View File

@ -0,0 +1,54 @@
To run vpp with the debug shell:
sudo ~vagrant/git/vpp/build-root/install-vpp_debug-native/vpp/bin/vpe unix interactive
which will result in a prompt that looks like:
DBGvpd#
To give it a spin, we can create a tap interface and try a simple ping
(with trace).
To create the tap:
DBGvpd# tap connect foobar
Created tap-0 for Linux tap 'foobar'
DBGvpd# show int
To assign it an ip address (and 'up' the interface):
DBGvpd# set int ip address tap-0 192.168.1.1/24
DBGvpd# set int state tap-0 up
To turn on packet tracing for the tap interface:
DBGvpd# trace add tapcli-rx 10
Now, to set up and try the other end from the unix prompt:
vagrant@vagrant-ubuntu-trusty-64:~$ sudo ip addr add 192.168.1.2/24 dev foobar
vagrant@vagrant-ubuntu-trusty-64:~$ ping -c 3 192.168.1.1
To look at the trace, back in the vpp CLI:
DBGvpd# show trace
And to stop tracing:
DBGvpd# clear trace
Other fun things to look at:
The vlib packet processing graph:
DBGvpd# show vlib graph
which will produce output like:
Name Next Previous
ip4-icmp-input error-punt [0] ip4-local
ip4-icmp-echo-request [1]
vpe-icmp4-oam [2]
To read this, the first column (Name) is the name of the node.
The second column (Next) is the name of the children of that node.
The third column (Previous) is the name of the parents of this node.
To see this README again:
cat /vagrant/README

36
build-root/vagrant/Vagrantfile vendored Normal file
View File

@ -0,0 +1,36 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# Pick the right distro and bootstrap, default is ubuntu1404
distro = ENV['VPP_VAGRANT_DISTRO']
if distro == 'centos7'
config.vm.box = "puppetlabs/centos-7.0-64-nocm"
config.vm.provision 'shell', path: 'bootstrap.centos7.sh'
else
config.vm.box = "puppetlabs/ubuntu-14.04-64-nocm"
config.vm.provision 'shell', path: 'bootstrap.ubuntu1404.sh'
end
# vagrant-cachier caches apt/yum etc to speed subsequent
# vagrant up
# to enable, run
# vagrant plugin install vagrant-cachier
#
if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
end
config.vm.synced_folder "../../", "/vpp", disabled: false
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
config.vm.provider "vmware_fusion" do |fusion,override|
fusion.vmx["memsize"] = "4096"
end
config.vm.provider "vmware_workstation" do |vws,override|
vws.vmx["memsize"] = "8192"
vws.vmx["numvcpus"] = "4"
end
end

View File

@ -0,0 +1,45 @@
# Standard update + upgrade dance
yum check-update
yum update -y
# Install build tools
yum groupinstall 'Development Tools' -y
yum install openssl-devel -y
yum install glibc-static -y
# Install jdk and maven
yum install -y java-1.8.0-openjdk-devel
# Load the uio kernel module
modprobe uio_pci_generic
echo uio_pci_generic >> /etc/modules-load.d/uio_pci_generic.conf
# Setup for hugepages using upstart so it persists across reboots
sysctl -w vm.nr_hugepages=1024
echo "vm.nr_hugepages=1024" >> /etc/sysctl.conf
mkdir -p /mnt/huge
echo "hugetlbfs /mnt/huge hugetlbfs defaults 0 0" >> /etc/fstab
mount /mnt/huge
# Setup the vpp code
cd ~vagrant/
sudo -u vagrant mkdir git
cd git/
# You will need to alter this line to reflect reality.
sudo -H -u vagrant git clone /vpp
cd vpp
# Initial vpp build
if [ -d build-root ]; then
# Bootstrap vpp
cd build-root/
sudo -H -u vagrant ./bootstrap.sh
# Build vpp
sudo -H -u vagrant make PLATFORM=vpp TAG=vpp_debug install-packages
cd ~vagrant/
cat /vagrant/README
fi

View File

@ -0,0 +1,77 @@
# Standard update + upgrade dance
apt-get update
apt-get upgrade -y
# Fix the silly notion that /bin/sh should point to dash by pointing it to bash
sudo update-alternatives --install /bin/sh sh /bin/bash 100
# Install build tools
apt-get install -y build-essential autoconf automake bison libssl-dev ccache libtool git dkms debhelper
# Install other stuff
# apt-get install -y qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
# Install uio
apt-get install -y linux-image-extra-`uname -r`
# Install jdk and maven
apt-get install -y openjdk-7-jdk
# $$$ comment out for the moment
# apt-get install -y --force-yes maven3
# Install debian packaging tools
apt-get install -y debhelper dkms
# Setup for hugepages using upstart so it persists across reboots
echo "vm.nr_hugepages=1024" >> /etc/sysctl.d/20-hugepages.conf
sysctl --system
cat << EOF > /etc/init/hugepages.conf
start on runlevel [2345]
task
script
mkdir -p /run/hugepages/kvm || true
rm -f /run/hugepages/kvm/* || true
rm -f /dev/shm/* || true
mount -t hugetlbfs nodev /run/hugepages/kvm
end script
EOF
# Make sure we run that hugepages.conf right now
start hugepages
# Setup the vpp code
cd ~vagrant/
sudo -u vagrant mkdir git
cd git/
# You will need to alter this line to reflect reality.
sudo -H -u vagrant git clone /vpp
cd vpp/
# Initial vpp build
if [ -d build-root ]; then
# Bootstrap vpp
cd build-root/
sudo -H -u vagrant ./bootstrap.sh
# Build vpp
sudo -H -u vagrant make PLATFORM=vpp TAG=vpp_debug install-deb
# Stick the dpdk module in the canonical place
cp ./install-vpp_debug-native/dpdk/kmod/igb_uio.ko /lib/modules/`uname -r`/kernel/drivers/uio/
depmod
# Load igb_uio into the kernel
modprobe igb_uio
# Make sure igb_uio loads at boot time
# Make sure uio loads at boot time
echo igb_uio >> /lib/modprobe.d/igb_uio.conf
cd ~vagrant/
cat /vagrant/README
fi