Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
ec0467e
* Fix ICMP6.
Nov 3, 2014
7325a49
Merge branch 'vandervecken' of https://github.com/routeflow/RouteFlow…
Nov 3, 2014
e10bc11
Pica8 workaround no longer necessary as of 2.4.1S1.
Nov 6, 2014
8ff0524
Changes to have rftest2 work in vandervecken branch
vdham Nov 7, 2014
b9e4bf4
Merge pull request #15 from vdham/fix_rftest2_vv
Nov 7, 2014
412ec4b
rfclient: apply setsockopt(SO_RCVBUFFORCE) to netlink socket for routes
solidgoldbomb Nov 8, 2014
9070a90
projectw.sh: fix path to external config files for rfserver
solidgoldbomb Nov 8, 2014
6f8936d
Merge pull request #17 from solidgoldbomb/rfserver-config-path-fix
Nov 8, 2014
5599070
Merge pull request #16 from solidgoldbomb/rfclient-rcvbufforce-fix
Nov 11, 2014
b17fec1
Added the OSPF constant defines for enabling rftest2 in vandervecken …
vdham Nov 11, 2014
3b8a863
Merge pull request #18 from vdham/fix_pull_15
Nov 11, 2014
c451939
NoviFlow now works well with different priorities in same table.
Nov 25, 2014
27699b3
Send RouteMods via a Queue to rfproxy. First part of adding flow cont…
Nov 26, 2014
5678143
Set outstanding RouteMod limit to 1 (from 10).
Nov 26, 2014
2482b67
End to end flow control (also needs patch to rfproxy to send back Rou…
Nov 26, 2014
72cb580
Need NoviFlow priority workaround still (with differing priorities in…
Nov 26, 2014
e901a53
Correct Corsa deferred VLAN swap operation.
Nov 26, 2014
317d227
rflib: TLV: fix shared_array constructor invokation
Dec 11, 2014
ef043d0
Merge pull request #19 from KitL/vandervecken
clorier Dec 16, 2014
0a8b21a
Support dynamic mapping
trungdtbk Jan 7, 2015
158b4ba
Support dynamic mapping
trungdtbk Jan 7, 2015
e723559
Merge branch 'rf-dynamic' of https://github.com/trungdtbk/RouteFlow i…
Jan 7, 2015
53a3c06
Update projectw.sh for tests
trungdtbk Jan 7, 2015
e5b44a7
Changes to work with removing flow entries by output matching
trungdtbk Jan 7, 2015
4baf28a
One shell script and a Mininet script for dynamic testing
trungdtbk Jan 7, 2015
d65806b
Version 2 of RF Dynamic, quite different from the last commit
trungdtbk Jan 8, 2015
a5893d9
Update a few minor things
trungdtbk Jan 8, 2015
79c9af6
Basically working.
trungdtbk Jan 9, 2015
bb4de04
New developements for dynamic mapping (RFClient part) will be based on
trungdtbk Jan 9, 2015
11dd62a
Change test shell script to automatically copy rfclient to LXC
trungdtbk Jan 9, 2015
36fc835
Merge branch 'rf-dynamic-ver2' into rf-dynamic-libnl
trungdtbk Jan 9, 2015
466233b
Some editing on projectw.sh
trungdtbk Jan 9, 2015
b1d99bf
Merge branch 'rf-dynamic-ver2' into rf-dynamic-libnl
trungdtbk Jan 9, 2015
1e78ad4
change LXC config file, in order to fix LXC hang up issue
trungdtbk Jan 9, 2015
a57e6ef
Fix minor error in test script
trungdtbk Jan 9, 2015
a7c2133
Merge branch 'libnl' of https://github.com/KitL/RouteFlow into KitL-l…
trungdtbk Jan 9, 2015
16f8728
Merge branch 'KitL-libnl' into rf-dynamic-libnl
trungdtbk Jan 9, 2015
c2af1c5
Copy Chris FlowTable.cc code because somehow merge branch not work as
trungdtbk Jan 10, 2015
3487244
Correct eth_add to eth_addr
trungdtbk Jan 10, 2015
3f01f7c
Added dynamic-test3
trungdtbk Jan 10, 2015
e60c9a2
fix test script
trungdtbk Jan 10, 2015
802465f
fix test script
trungdtbk Jan 10, 2015
69355eb
again, fixing test script, hah
trungdtbk Jan 10, 2015
6550533
remove checking if a dp has registered in rftable before creating a
trungdtbk Jan 10, 2015
2a5443d
changes in test script
trungdtbk Jan 10, 2015
ecacfdc
Change dynamic-test3 script to use ospf for LXCs
trungdtbk Jan 10, 2015
0583b3b
Merge branch 'rf-dynamic-libnl' of https://github.com/trungdtbk/Route…
trungdtbk Jan 10, 2015
538c2f5
Fix the issue with flow table update. When changing mapping config, we
trungdtbk Jan 12, 2015
fffcc01
Merge branch 'rf-dynamic-libnl' of https://github.com/trungdtbk/Route…
trungdtbk Jan 12, 2015
898ee09
Fix minor error with printing string
trungdtbk Jan 12, 2015
9e22a9b
Small changes in dynamic test 3
trungdtbk Jan 12, 2015
36a83ea
adding log to debug rfclient
trungdtbk Jan 12, 2015
7dcaf17
fix calling wrong RouteEntry member
trungdtbk Jan 12, 2015
f233fa3
Fix the hostTabe zero entry when trying to read from RFClient thread.
trungdtbk Jan 13, 2015
ca01421
Some wording changes
trungdtbk Jan 13, 2015
caa7fb4
Fix RFServer CLI error when trying to format vm_id
trungdtbk Jan 13, 2015
57b9784
add some print for debugging
trungdtbk Jan 13, 2015
549c22b
Switch LOG_DEBUG to LOG_INFO to see if messages appear on syslog
trungdtbk Jan 13, 2015
8f22bd0
Trying to fix the issue with "Cannot send RouteMod to down port"
trungdtbk Jan 14, 2015
20ab8ef
new script to start & stop RFClient
trungdtbk Jan 14, 2015
1231e52
test script
trungdtbk Jan 14, 2015
6c663f4
test script fix
trungdtbk Jan 14, 2015
142e44f
suck the test script
trungdtbk Jan 14, 2015
64b81c6
Merge branch 'rf-dynamic-libnl' of https://github.com/trungdtbk/Route…
trungdtbk Jan 14, 2015
4d80865
test script again
trungdtbk Jan 14, 2015
2e14308
fix the test script
trungdtbk Jan 14, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 240 additions & 0 deletions dynamic-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
#!/bin/bash

# Set to 0 to use external switch(es)
STARTBVMS=0

MULTITABLEDPS="''"
SATELLITEDPS="''"

HOME=/home/ubuntu
RF_HOME=$HOME/RouteFlow
RFSERVERCONFIG=/tmp/rfserverconfig.csv
RFSERVERINTERNAL=/tmp/rfserverinternal.csv
HOME_RFSERVERCONFIG="$HOME/"`basename $RFSERVERCONFIG`
HOME_RFSERVERINTERNAL="$HOME/"`basename $RFSERVERINTERNAL`
CONTROLLER_PORT=6633
LXCDIR=/var/lib/lxc
RFBR=br0
RFDP=dp0
RFDPID=7266767372667673
OFP=OpenFlow13
HOSTVMIP=192.168.10.1
VSCTL="ovs-vsctl"
OFCTL="ovs-ofctl -O$OFP"
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
export PYTHONPATH=$PYTHONPATH:$RF_HOME

#modprobe 8021q
ulimit -c 1000000000

if [ "$EUID" != "0" ]; then
echo "You must be root to run this script."
exit 1
fi

ACTION=""
case "$1" in
--ryu)
ACTION="RYU"
;;
--reset)
ACTION="RESET"
;;
*)
echo "Invalid argument: $1"
echo "Options: "
echo " --ryu: run using RYU"
echo " --reset: stop running and clear data from previous executions"
exit
;;
esac

cd $RF_HOME

wait_port_listen() {
port=$1
while ! `nc -z localhost $port` ; do
echo -n .
sleep 1
done
}

echo_bold() {
echo -e "\033[1m${1}\033[0m"
}

kill_process_tree() {
top=$1
pid=$2

children=`ps -o pid --no-headers --ppid ${pid}`

for child in $children
do
kill_process_tree 0 $child
done

if [ $top -eq 0 ]; then
kill -9 $pid &> /dev/null
fi
}

add_local_br() {
br=$1
dpid=$2
$VSCTL add-br $br
$VSCTL set bridge $br protocols=$OFP
if [ "$dpid" != "" ] ; then
$VSCTL set bridge $br other-config:datapath-id=$dpid
fi
ifconfig $br up
check_local_br_up $br
}

check_local_br_up() {
br=$1
echo waiting for OVS sw/controller $br to come up
while ! $OFCTL ping $br 64|grep -q "64 bytes from" ; do
echo -n "."
sleep 1
done
}

start_ovs() {
if [ ! -f /usr/local/etc/openvswitch/conf.db ] ; then
ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
fi
ovsdb-server --pidfile --detach --remote=punix:$OVSSOCK
ovs-vswitchd --pidfile --detach unix:$OVSSOCK
}

start_rfvms() {
for vm in rfvmA rfvmB rfvmC rfvmD rfvmE; do
ROOTFS=$LXCDIR/$vm/rootfs
cp /dev/null $ROOTFS/var/log/syslog
VMLOG=/tmp/$vm.log
rm -f $VMLOG
lxc-start -n $vm -l DEBUG -o $VMLOG -d
done
}

stop_rfvms() {
echo_bold "-> Stopping the virtual machines..."
for vm in rfvmA rfvmB rfvmC rfvmD rfvmE; do
lxc-stop -n $vm &> /dev/null;
ROOTFS=$LXCDIR/$vm/rootfs
rm -rf $ROOTFS/var/run/network/ifstate;
done
}

reset() {
echo_bold "-> Stopping and resetting LXC VMs...";
stop_rfvms

init=$1;
if [ $init -eq 1 ]; then
echo_bold "-> Starting OVS daemons...";
#start_ovs
else
echo_bold "-> Stopping child processes...";
kill_process_tree 1 $$
fi

sudo $VSCTL del-br $RFBR &> /dev/null;
sudo $VSCTL del-br $RFDP &> /dev/null;
sudo $VSCTL emer-reset &> /dev/null;
}
reset 1
trap "reset 0; exit 0" INT

if [ "$ACTION" != "RESET" ]; then
if [ -f "$HOME_RFSERVERCONFIG" ] && [ -f "$HOME_RFSERVERINTERNAL" ] ; then
echo_bold "-> Using existing external config..."
cp $HOME_RFSERVERCONFIG $RFSERVERCONFIG
cp $HOME_RFSERVERINTERNAL $RFSERVERINTERNAL
else
echo_bold "-> Run with default config..."
cp /dev/null > $RFSERVERCONFIG
echo "vm_id,vm_port,ct_id,dp_id,dp_port" > $RFSERVERCONFIG

echo 0x2a0a0a0a0a0,1,0,0x01,1 >> $RFSERVERCONFIG
echo 0x2a0a0a0a0a0,2,0,0x01,2 >> $RFSERVERCONFIG

echo 0x2b0b0b0b0b0,1,0,0x02,1 >> $RFSERVERCONFIG
echo 0x2b0b0b0b0b0,2,0,0x02,2 >> $RFSERVERCONFIG

echo 0x2c0c0c0c0c0,3,0,0x01,3 >> $RFSERVERCONFIG

echo 0x2d0d0d0d0d0,3,0,0x02,3 >> $RFSERVERCONFIG

echo 0x2e0e0e0e0e0,1,0,0x03,1 >> $RFSERVERCONFIG
echo 0x2e0e0e0e0e0,2,0,0x03,2 >> $RFSERVERCONFIG

cp /dev/null $RFSERVERINTERNAL
echo "vm_id,ct_id,dp_id,dp_port,eth_addr,rem_ct,rem_id,rem_port,rem_eth_addr" > $RFSERVERINTERNAL
fi

echo_bold "-> Starting the management network ($RFBR)..."
add_local_br $RFBR
ifconfig $RFBR $HOSTVMIP

echo_bold "-> Starting RFServer..."
#winpdb ./rfserver/rfserver.py $RFSERVERCONFIG -i $RFSERVERINTERNAL -m $MULTITABLEDPS -s $SATELLITEDPS &
./rfserver/rfserver.py $RFSERVERCONFIG -i $RFSERVERINTERNAL -m $MULTITABLEDPS -s $SATELLITEDPS &

echo_bold "-> Starting the controller ($ACTION) and RFPRoxy..."
case "$ACTION" in
RYU)
cd ..
cd ryu-rfproxy
ryu-manager --use-stderr --ofp-tcp-listen-port=$CONTROLLER_PORT ryu-rfproxy/rfproxy.py &
;;
esac
cd - &> /dev/null
wait_port_listen $CONTROLLER_PORT
check_local_br_up tcp:127.0.0.1:$CONTROLLER_PORT

echo_bold "-> Starting the control plane network ($RFDP VS)..."
$VSCTL add-br $RFDP
$VSCTL set bridge $RFDP other-config:datapath-id=$RFDPID
$VSCTL set bridge $RFDP protocols=$OFP
$VSCTL set-controller $RFDP tcp:127.0.0.1:$CONTROLLER_PORT
$OFCTL add-flow $RFDP actions=CONTROLLER:65509
ifconfig $RFDP up
check_local_br_up $RFDP

echo_bold "-> Waiting for $RFDP to connect to controller..."
while ! $VSCTL find Controller target=\"tcp:127.0.0.1:$CONTROLLER_PORT\" is_connected=true | grep -q connected ; do
echo -n .
sleep 1
done

echo_bold "-> Starting virtual machines..."
start_rfvms
while ! ifconfig -s rfvmA.0 ; do
echo -n .
sleep 1
done

# Add VM eth0 port to management bridge
for vm in rfvmA rfvmB rfvmC rfvmD rfvmE; do
$VSCTL add-port $RFBR $vm.0
done

# Add VM interfaces to dataplane bridge
for i in `netstat -i|grep rfvm|cut -f 1 -d " "` ; do
if [ "$i" != "`echo $i | grep .0`" ] ; then
$VSCTL add-port $RFDP $i
fi
done

echo_bold "-> Waiting for VMs to come up..."
while ! ping -W 1 -c 1 192.168.10.101 ; do
echo -n .
sleep 1
done

echo_bold "You can stop this test by pressing Ctrl+C."
wait
fi
exit 0
Loading