Giter VIP home page Giter VIP logo

paco's Introduction

Paco

This repository is the code that simulates the paco protocol and compares the paco protocol with the openflow protocol. The p414 code that implements the paco protocol can be seen in paco.p4.

It total include 3 experiments.

All of the three experiments hava same topology(as the following picture show). But only paco compares with openflow experiment uses controller.

topology

To run the experiments, you need first install the Requirements

Requirements

The experimental environment was built on ubuntu14.04

  1. download and install bmv2
git clone https://github.com/p4lang/behavioral-model.git
cd behavioral-model
git checkout 1.2.0
./install_deps.sh
./autogen.sh
./configure
make
[sudo] make install
  1. download and install p4c-bm
git clone https://github.com/p4lang/p4c-bm.git
cd p4c-bm
git checkout 1.2.0
sudo pip install -r requirements.txt
sudo python setup.py install
  1. download and install mininet
git clone https://github.com/mininet/mininet.git
cd mininet
git checkout 2.2.1
./util/install.sh
  1. download and install OpenVswitch
# get the source code
wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
tar -zxvf openvswitch-2.4.0.tar.gz
cd openvswitch-2.4.0

# Check the existing version and delete it, note that everyone's version may be different
lsmod | grep openvswitch
rmmod openvswitch
find / -name openvswitch.ko –print
rm /lib/modules/*-generic/extra/openvswitch.ko

# build and install ovs
sh boot.sh
./configure --with-linux=/lib/modules/`uname -r`/build
make
make install
make modules_install
/sbin/modprobe openvswitch
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema  2>/dev/null
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
                --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
                --private-key=db:Open_vSwitch,SSL,private_key \
                --certificate=db:Open_vSwitch,SSL,certificate \
                --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
                --pidfile --detach
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach

# note: every time you want to run ovs you should run the last three commands again. 
# For your convenience, you'd better put them in ovs_start.sh
  1. install python2 and scapy
apt-get install python
pip install scapy

paco simulate experiment

The first experiment is to simulates the paco protocol. The code is on the master branch.

  1. Preparations:
    • Change the BMV2_PATH and P4C_BM_PATH variables in build.sh to your own
    • Change the BMV2_PATH and P4C_BM_PATH variables in run_demo.sh to your own
  2. run build.sh to build p4 code, then open paco.json and search order, then change it like:
"order": [
    "cpu_header",
    "ethernet",
    "paco_head",
    "ipv4"
]
  1. run run_demo.sh start the experimental environment
  2. after mininet is started, run xterm h1 h2 in mininet CLI to start the console for h1 and h2
  3. Start the sniffing tool such as wireshark
  4. in h2 console, run receive.pyto receive packets.
  5. in h1 console, run send.py to send packets. At the same time, the sniffing tool will sniff the packet, and you can analyze whether the packet is transmitted according to the paco protocol.
  6. to exit.
    • exit sniffing tool
    • close the console of h1 and h2
    • exit mininet CLI
    • run sudo mn -c to clear mininet

paco time delay experiment

this experiment is to test the delay of the link when the switch runs the paco protocol.

the experiment steps are same to paco simulate experiment, you can analysis the time delay after run send.py

paco compares with openflow experiment

This experiment is to compare the link delay of the switch when running the openflow protocol.

The code is on the openflow-time-delay branch.

  1. Preparations:
    • Change the BMV2_PATH and P4C_BM_PATH variables in build.sh to your own
    • Change the BMV2_PATH and P4C_BM_PATH variables in run_demo.sh to your own
  2. run build.sh to build p4 code, then open paco.json and search order, then change it like:
"order": [
    "cpu_header",
    "ethernet",
    "paco_head",
    "ipv4"
]
  1. run run_demo.sh start the experimental environment
  2. open a new terminal, run default_commands.sh to install default flows.
  3. open a new terminal, run cpu.py as controller.
  4. after mininet is started, run xterm h1 h2 in mininet CLI to start the console for h1 and h2
  5. Start the sniffing tool such as wireshark
  6. in h2 console, run receive.pyto receive packets.
  7. in h1 console, run send.py to send packets. At the same time, the sniffing tool will sniff the packet, and you can analyze whether the packet is transmitted according to the paco protocol.
  8. to exit.
    • exit sniffing tool
    • close the console of h1 and h2
    • exit cpu.py
    • exit mininet CLI
    • run sudo mn -c to clear mininet

paco's People

Contributors

ob1ank avatar

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.