Aggregation on a Converged Packet-Circuit Network

From OpenFlow Wiki

Jump to: navigation, search

Contents

Introduction

This demonstration shows aggregation on a converged packet-circuit switch network. The following setup is used for GEC8.

Equipment

  • 3 Ciena Core Directors
  • 1 Quanta Switch with OF-1.0 firmware (to be virtualized through flowvisor)
  • 1 controller PC (running the controller and flowvisor)
  • 6 traffic generator PCs (4 linux + 2 windows for video streaming).

Topology

PACC Lab

Source Code

The source code used for this demo exists at the following repos :

  • Openflow
git clone git://gitosis.stanford.edu/openflow.git
cd openflow
./boot.sh
./configure
make
  • FlowVisor
git clone git://gitosis.stanford.edu/flowvisor.git
cd flowvisor
git checkout -b dev/virtualize-1.0 origin/dev/virtualize-1.0
./boot.sh
./configure
make

note: you will also need to setup the flowvisor but this depends on the actual setup and wiring.


  • Nox controller (incuding packetgen)
git clone git://gitosis.stanford.edu/nox-aggregation.git
cd nox-aggregation
git checkout -b agg-circ origin/agg-circ
./boot.sh
./configure --with-python=`which python2.5`
cd src
make

note: if you have any problems installing nox, look at http://noxrepo.org for dependencies and/or send an e-mail to nox-dev mailing list.

  • CircuitSW Gui
git clone git://gitosis.stanford.edu/envi-aggregation circuit-gui
cd circuit-gui
git checkout -b circuit-aggregation origin/circuit-aggregation
cd gui
make
  • Aggregation Gui
git clone git://gitosis.stanford.edu/envi-aggregation.git aggregation-gui
cd aggregation-gui
git checkout -b aggregation-circuit origin/aggregation-circuit
cd gui
make

Configuration

Configuring the Virtual Packet Switches

Configuring the FlowVisor

Configuring the Virtual Packet Links

Demo Startup Steps

Start the OpenFlow Controller

From the nox/src directory

./nox_core -v -i ptcp:6635 pyaggregationdb circsw

The above command will spew out a lot of information on the console. To quieten things down try without the -v flag. Now you will get only WARN and ERR log messages. To get DBG messages from a specific module for eg. circsw, try the command

./nox_core --verbose=circsw:ANY:DBG -i ptcp:6635 pyaggregationdb circsw

Connect the CoreDirectors to the Controller

Directions are in the private wiki

http://yuba.stanford.edu/cleanslatewiki/index.php/Information_for_using_Ciena_Core_Director

Start the Flowvisor

From ofcontroller PC run :

./flowvisor ptcp:6633

Start the circsw GUI

java -jar bin/openflow_gui.jar ofcontroller.stanford.edu

Start the aggregation GUI

java -jar bin/openflow_gui.jar ofcontroller.stanford.edu

Start the traffic generator

From trafficgen3 PC do :

cd path_to_nox/src/nox/coreapps/aggregation/packetgen
python packetgen.py 10

From trafficgen4 PC do :

cd path_to_nox/src/nox/coreapps/aggregation/packetgen
python packetgen.py 12

From trafficgen5 PC do :

cd path_to_nox/src/nox/coreapps/aggregation/packetgen
python packetgen.py 11

From trafficgen6 PC do :

cd path_to_nox/src/nox/coreapps/aggregation/packetgen
python packetgen.py 13

Going through the actual demo

At that point you should be able to see the basic flows in the aggregation GUI. From there you can drive the rest of the demo. __space__ will proceed to the predefine steps.

  1. Clear existing bundles AND state
  2. Create Bundle for CUSTOMER I
  3. Create Bundle for CUSTOMER I+HTTP, CUSTOMER I+VOIP, CUSTOMER I+VIDEO
  4. Modify VOIP Bundle to follow direct path
  5. Modify VIDEO Bundle to follow direct path
  6. Clear all bundles
  7. Enable traffic from all traffic-gens
  8. Create CST(I-III)+VOIP,CST(I-III)+VIDEO,CST(I-III)+HTTP,CST(IV-V)+VOIP,CST(IV-V)+HTTP, CST(IV-V)+VIDEO
  9. Modify VOIP bundles for direct path
  10. Modify VIDEO bundles for direct path
  11. Manually start video stream (at video server)
  12. Manually start aux video stream (look at iperf section)
  13. Manually stop iperf client and video server
  14. Clear all bundles AND state

Video Streaming

In the VLC Media player (streaming server) on trafficgen7 :

  1. Go to Media->Advanced Open File. Add the file to be streamed using the Add button. Then select the stream option in the drop-down menu next to the Play button.
  2. The current screen just shows the video to be streamed. Click the Next button to get to the Destinations screen.
  3. Here ADD UDP from drop-down menu. Then enter address of streaming-video client eg. 192.168.2.2. Leave port as default 1234.
  4. The encapsulation for UDP should always be MPEG-2+MPGA(TS)
  5. Deactivate transcoding
  6. Then click Next to get to the Options screen.
  7. Here we need to select the Keep stream output open if the video is to be streamed continuously - UDP will be blasting out
  8. This setup needs to be done only once. To stop streaming press the pause button (not STOP). To restart press Play button again

In the VLC media player (streaming video client) on trafficgen8:

  1. Go to Media-> Open Network Stream.
  2. Select protocol UDP and in the address box enter udp://@
  3. hit play
  4. Enjoy video

IPERF server/client

We use iperf for auxiliary traffic to create congestion at the video bundle.

To start iperf server, go to trafficgen5:

iperf -u -p 1234 -s -i 1

To start iperf client, go to trafficgen4:

iperf -p 1234 -u -c 192.168.152.3 -b 40000000 -t 3600 -i 1

NOTE : Both video client and iperf server can be left running all time (since they don't send any heavy traffic). Video server AND iperf client should run ONLY at the step defined at the scenario. Otherwise, high load of udp traffic will kill the switch (and subsequently all the demo).

NOTES

Circuit switches are turned off each night to prevent overheating the lab and as a result driving their fans harder and rebooting.

The circuit links are

id1000:: 110010001:2(1-A-1-2) <==> 110020001:9(1-A-2-1)
id1001:: 110010001:5(1-A-1-5) <==> 110030001:a(1-A-2-2)
id1002:: 110020001:a(1-A-2-2) <==> 110030001:9(1-A-2-1)

There are 3 virtual links currently configured

MACHINE DETAILS

Hostname MAC Address IP Address
trafficgen3 00:11:43:2f:f2:82 192.168.2.21
trafficgen4 00:12:3f:2b:b7:3a 192.168.2.30
trafficgen5 00:11:43:2f:d6:00 192.168.2.20
trafficgen6 00:11:43:2f:d7:13 192.168.2.33
trafficgen7 00:12:3F:2B:B2:6A 192.168.2.3
trafficgen8 00:1C:C0:FB:23:DA 192.168.2.2