Hello,
I have been attempting to get ryu-rfproxy to work with routeflow. I have mainly focused my efforts on using rftest1, however I am having no luck. I was hoping someone would be able to provide a bit of guidance on this matter?
Unfortunately I found that either the documentation was lacking somewhat, or limitations meant I had to take a slightly different approach - my installation approach is included below. I am attempting to get it working on a VM of Ubuntu 12.04.
My installation of Routeflow with Ryu was based on the instructions at https://github.com/joestringer/ryu-rfproxy It works fine with rftest1 in the "default"/pox setup. However when I attempt to use rftest1 with ryu-rfproxy it fails - the ping does not succeed. I have included logs from ryu-manager and rftest1 at the bottom of this post.
The individual components in the install are at the following versions:
Ryu
commit: 43b439770b6a14be993e7c3aec54d431ba1ff609
version 2.0
Routeflow
commit: 9265351a08c7ce38ef82bef537d3b0f4c13f89bb
ovs
commit: 89f3c258fe969df2fde29c21423cd705f4d8b472
version 1.11.90
I appreciate any guidance you have on why this configuration is not working or how I could better debug the setup?
####################################################
# The following is my setup
####################################################
sudo apt-get install python-simplejson python-qt4 python-twisted-conch automake autoconf gcc uml-utilities libtool build-essential git pkg-config
sudo apt-get install python-eventlet python-webob python-routes python-gevent
sudo RouteFlow/build.sh -ic -o git ryu
export PYTHONPATH=<Routeflow_dir>
sudo ovsdb-server /usr/local/etc/openvswitch/conf.db \
--remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,manager_options \
--private-key=db:SSL,private_key \
--certificate=db:SSL,certificate \
--bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach --log-file
sudo ovs-vsctl --no-wait init
sudo ovs-vswitchd --pidfile --detach
sudo ovs-vsctl show
####################################################
# modifications to rftest1 for ryu-rfproxy
####################################################
# manually start rfproxy
ryu-manager ryu-rfproxy/rfproxy
# start rftest1
sudo rftest/rftest1
# rftest1 has the following changes:
diff --git a/rftest/rftest1 b/rftest/rftest1
index 9d3da84..e854c1e 100755
--- a/rftest/rftest1
+++ b/rftest/rftest1
@@ -102,11 +102,11 @@ chmod +x /var/lib/lxc/rfvm1/rootfs/root/run_rfclient.sh
lxc-start -n rfvm1 -d
-echo_bold "-> Starting the controller and RFPRoxy..."
-cd pox
-./pox.py log.level --=INFO topology openflow.topology openflow.discovery rfproxy rfstats &
-cd -
-wait_port_listen $CONTROLLER_PORT
+#echo_bold "-> Starting the controller and RFPRoxy..."
+#cd pox
+#./pox.py log.level --=INFO topology openflow.topology openflow.discovery rfproxy rfstats &
+#cd -
+#wait_port_listen $CONTROLLER_PORT
echo_bold "-> Starting RFServer..."
./rfserver/rfserver.py rftest/rftest1config.csv &
@@ -115,7 +115,7 @@ echo_bold "-> Starting the control plane network (dp0 VS)..."
ovs-vsctl add-br dp0
ovs-vsctl add-port dp0 rfvm1.1
ovs-vsctl add-port dp0 rfvm1.2
-ovs-vsctl set Bridge dp0 other-config:datapath-id=7266767372667673
+ovs-vsctl set Bridge dp0 other-config:datapath-id=7266767372667673 protocols=OpenFlow10,OpenFlow12,OpenFlow13
ovs-vsctl set-controller dp0 tcp:127.0.0.1:$CONTROLLER_PORT
ifconfig dp0 up
@@ -127,7 +127,7 @@ sleep 2
ovs-vsctl add-br switch1
ovs-vsctl add-port switch1 b1.0
ovs-vsctl add-port switch1 b2.0
-ovs-vsctl set Bridge switch1 other-config:datapath-id=0000000000000099
+ovs-vsctl set Bridge switch1 other-config:datapath-id=0000000000000099 protocols=OpenFlow10,OpenFlow12,OpenFlow13
ovs-vsctl set-controller switch1 tcp:127.0.0.1:$CONTROLLER_PORT
ifconfig switch1 up
####################################################
# Output from rfproxy
####################################################
loading app ryu-rfproxy/rfproxy.py
loading app ryu.controller.ofp_handler
creating context dpset
instantiating app ryu-rfproxy/rfproxy.py
RFProxy running.
instantiating app ryu.controller.ofp_handler
BRICK dpset
PROVIDES EventDP TO {'RFProxy': ['dpset']}
CONSUMES EventOFPPortStatus
CONSUMES EventOFPStateChange
CONSUMES EventOFPSwitchFeatures
BRICK ofp_event
PROVIDES EventOFPPortStatus TO {'dpset': ['main']}
PROVIDES EventOFPStateChange TO {'dpset': ['main', 'dead']}
PROVIDES EventOFPPacketIn TO {'RFProxy': ['main']}
PROVIDES EventOFPSwitchFeatures TO {'dpset': ['config']}
CONSUMES EventOFPSwitchFeatures
CONSUMES EventOFPErrorMsg
CONSUMES EventOFPEchoRequest
CONSUMES EventOFPHello
BRICK RFProxy
CONSUMES EventDP
CONSUMES EventOFPPacketIn
connected socket:<eventlet.greenio.GreenSocket object at 0x9c264ac> address:('127.0.0.1', 39845)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0x9c267cc>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
switch features ev version: 0x3 msg_type 0x6 xid 0x791e0885 OFPSwitchFeatures(capabilities=71,datapath_id=8243406406160905843L,n_buffers=256,n_tables=254,ports={1: OFPPort(port_no=1, hw_addr='\x9a\xcc\x9e\x13\xc7\x08', name='rfvm1.1\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=2112, advertised=0, supported=0, peer=0, curr_speed=1410065408, max_speed=0), 2: OFPPort(port_no=2, hw_addr='\x86\xadUj\x93\x0f', name='rfvm1.2\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=2112, advertised=0, supported=0, peer=0, curr_speed=1410065408, max_speed=0), 4294967294L: OFPPort(port_no=4294967294L, hw_addr='B\xcf\x91b@M', name='dp0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=0, advertised=0, supported=0, peer=0, curr_speed=0, max_speed=0)},reserved=0)
move onto main mode
EVENT ofp_event->dpset EventOFPStateChange
DPSET: register datapath <ryu.controller.controller.Datapath object at 0x9c2624c>
EVENT dpset->RFProxy EventDP
Datapath is up (dp_id=7266767372667673)
Registering datapath port (dp_id=7266767372667673, dp_port=1)
Registering datapath port (dp_id=7266767372667673, dp_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=2)
connected socket:<eventlet.greenio.GreenSocket object at 0x9c26d4c> address:('127.0.0.1', 39857)
hello ev <ryu.controller.ofp_event.EventOFPHello object at 0x9c2b2ec>
move onto config mode
EVENT ofp_event->dpset EventOFPSwitchFeatures
switch features ev version: 0x3 msg_type 0x6 xid 0xf6692637 OFPSwitchFeatures(capabilities=71,datapath_id=153,n_buffers=256,n_tables=254,ports={1: OFPPort(port_no=1, hw_addr='6\xd3\xd4\xb1\xe4\xa8', name='b1.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=2112, advertised=0, supported=0, peer=0, curr_speed=1410065408, max_speed=0), 2: OFPPort(port_no=2, hw_addr='6\xbd\xef\xfa\x1bP', name='b2.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=2112, advertised=0, supported=0, peer=0, curr_speed=1410065408, max_speed=0), 4294967294L: OFPPort(port_no=4294967294L, hw_addr='\xaes}\xa5\x97I', name='switch1\x00\x00\x00\x00\x00\x00\x00\x00\x00', config=0, state=0, curr=0, advertised=0, supported=0, peer=0, curr_speed=0, max_speed=0)},reserved=0)
move onto main mode
EVENT ofp_event->dpset EventOFPStateChange
DPSET: register datapath <ryu.controller.controller.Datapath object at 0x9c2684c>
EVENT dpset->RFProxy EventDP
Datapath is up (dp_id=0000000000000099)
Registering datapath port (dp_id=0000000000000099, dp_port=1)
Registering datapath port (dp_id=0000000000000099, dp_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Received mapping packet (vm_id=0x12a0a0a0a0a0, vm_port=1, vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Received mapping packet (vm_id=0x12a0a0a0a0a0, vm_port=2, vs_id=7266767372667673, vs_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped RFVS port (vs_id=7266767372667673, vs_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=2)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=4294967294)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->RFProxy EventOFPPacketIn
Unmapped datapath port (dp_id=0000000000000099, dp_port=1)
EVENT ofp_event->dpset EventOFPStateChange
DPSET: unregister datapath <ryu.controller.controller.Datapath object at 0x9c2624c>
EVENT dpset->RFProxy EventDP
Datapath is down (dp_id=7266767372667673)
EVENT ofp_event->dpset EventOFPStateChange
DPSET: unregister datapath <ryu.controller.controller.Datapath object at 0x9c2684c>
#######################################################
# Output from rftest1
#######################################################
[1m-> Starting rftest1[0m
[1m-> Stopping and resetting LXC VMs...[0m
rfvm1 is not running
b1 is not running
b2 is not running
[1m-> Deleting data from previous runs...[0m
MongoDB shell version: 2.0.4
connecting to: db
false
[1m-> Setting up the management bridge (lxcbr0)...[0m
[1m-> Setting up MongoDB...[0m
mongodb stop/waiting
mongodb start/running, process 13043
.[1m-> Starting the rfvm1 virtual machine...[0m
[1m-> Starting RFServer...[0m
[1m-> Starting the control plane network (dp0 VS)...[0m
[1m-> Starting the sample network...[0m
INFO:rfserver:Configuring RFVS (dp_id=0x7266767372667673)
[1m---[0m
[1mThis test is up and running.[0m
[1mTry pinging host b2 from host b1:[0m
[1m $ sudo lxc-console -n b1[0m
[1mLogin and run:[0m
[1m $ ping 172.31.2.2[0m
[1mYou can stop this test by pressing Ctrl+C.[0m
[1m---[0m
INFO:rfserver:Registering datapath port as idle (dp_id=0x99, dp_port=1)
INFO:rfserver:Configuring datapath (dp_id=0x99)
INFO:rfserver:Registering datapath port as idle (dp_id=0x99, dp_port=2)
INFO:rfserver:Asking client for mapping message for port (vm_id=0x12a0a0a0a0a0, vm_port=1)
INFO:rfserver:Registering client port and associating to datapath port (vm_id=0x12a0a0a0a0a0, vm_port=1, eth_addr = 12:a1:a1:a1:a1:a1, dp_id=0x99, dp_port=1)
INFO:rfserver:Asking client for mapping message for port (vm_id=0x12a0a0a0a0a0, vm_port=2)
INFO:rfserver:Registering client port and associating to datapath port (vm_id=0x12a0a0a0a0a0, vm_port=2, eth_addr = 12:a2:a2:a2:a2:a2, dp_id=0x99, dp_port=2)
INFO:rfserver:Mapping client-datapath association (vm_id=0x12a0a0a0a0a0, vm_port=1, dp_id=0x99, dp_port=1, vs_id=0x7266767372667673, vs_port=1)
INFO:rfserver:Mapping client-datapath association (vm_id=0x12a0a0a0a0a0, vm_port=2, dp_id=0x99, dp_port=2, vs_id=0x7266767372667673, vs_port=2)
[1m-> Stopping child processes...[0m
./rftest1_for_ryu: line 47: 13061 Killed ./rfserver/rfserver.py rftest/rftest1config.csv
[1m-> Stopping and resetting LXC VMs...[0m
[1m-> Deleting data from previous runs...[0m
####################################################
# rfweb_server
####################################################
The network tab of rfweb_server is blank, and the messages tab is as seen in the attached file.