[openflowplugin-dev] Testing of OF-1.3


Michal Rehak -X (mirehak - Pantheon Technologies SRO@Cisco) <mirehak@...>
 

Greetings,
sorry for slow response, instructions on enabling OFS-1.3 experimental support in mininet (using openvswitch) are here:
https://wiki.opendaylight.org/view/Openflow_Protocol_Library:OpenVirtualSwitch

I have also tried
http://www.flowforwarding.org/ and http://cpqd.github.io/ofsoftswitch13/

The Flowforwarding project is based on erlang code (this is completely new for me)
and ofsoftswitch looks similar to the default mininet-based solution - it uses mininet too, but different virtual switch driver.

Is anyone interested? I can publish corresponding instructions on wiki too.

Michal


From: Ed Warnicke (eaw)
Sent: Wednesday, August 07, 2013 11:18 PM
To: Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: Jan Medved (jmedved); Tomas Janco
Subject: Re: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

Michal,
Thank you for doing this :)  Not only is the work important, but you are communicating it brilliantly :)
You might want to consider adding it as a subpage page off of the OF proto lib wiki page :)

Much appreciated :)

Ed
On Aug 7, 2013, at 3:13 AM, Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco) <mirehak@...> wrote:

Greetings.

Back to openvswitch - I have done the following in order to get version 1.10 (if you have mininet-2.0.0 already running, please proceed to Stage 2):

Stage 1

- download mininet image 2.0.0 (https://github.com/downloads/mininet/mininet/mininet-2.0.0-113012-amd64-ovf.zip)
- the image is in vmware format I guess, but can by simply imported into virtualbox
- start mininet-2.0.0, login as mininet, password mininet


Stage 2

- uninstall packages openvswitch-common and openvswitch-switch (there should be version 1.4.3 officially in ubuntu repo, so in case of emergency these can be always installed again)
- download latest release of openvswitch: http://openvswitch.org/releases/openvswitch-1.10.0.tar.gz
- there are install howtos, take a look at INSTALL.Debian
- there are some new packages to be installed (apt-get install build-essential fakeroot)
- run dpkg-checkbuilddeps to check, if all dependencies are installed
- here comes the long step 4. from INSTALL.Debian
- if everything compiled successfully, you should have these deb files in parent folder:

openvswitch-common_1.10.0-1_amd64.deb
openvswitch-controller_1.10.0-1_amd64.deb
openvswitch-datapath-dkms_1.10.0-1_all.deb
openvswitch-datapath-source_1.10.0-1_all.deb
openvswitch-dbg_1.10.0-1_amd64.deb
openvswitch-ipsec_1.10.0-1_amd64.deb
openvswitch-pki_1.10.0-1_all.deb
openvswitch-switch_1.10.0-1_amd64.deb
openvswitch-test_1.10.0-1_all.deb
ovsdbmonitor_1.10.0-1_all.deb
python-openvswitch_1.10.0-1_all.deb


- now install 
dpkg -i openvswitch-common_1.10.0-1_amd64.deb
dpkg -i openvswitch-switch_1.10.0-1_amd64.deb

- now mininet should be using openvswitch 1.10.0, this can be simply tested by running ODL-controller and let mininet to connect to it.

- to use OF-1.3 following parameter has to be passed to openvswitch startup command:
protocols=OpenFlow13

So I made following change to node.py file (mininet python class, be sure to modify the distributed file, not the one in /home/mininet/mininet/...) in order to control the protocol version using cmd parameter:

--- ../mininet/build/lib.linux-x86_64-2.7/mininet/node.py       2012-11-30 22:30:07.000000000 -0800
+++ /usr/local/lib/python2.7/dist-packages/mininet-2.0.0-py2.7.egg/mininet/node.py      2013-07-25 05:40:26.179978120 -0700
@@ -901,6 +904,11 @@
            failMode: controller loss behavior (secure|open)"""
         Switch.__init__( self, name, **params )
         self.failMode = failMode
+        protKey = 'protocols'
+        if self.params and protKey in self.params:
+            print 'have protocol params!'
+            self.opts += protKey + '=' + self.params[protKey]
+
 
     @classmethod
     def setup( cls ):
@@ -955,8 +964,9 @@
         # Annoyingly, --if-exists option seems not to work
         self.cmd( 'ovs-vsctl del-br', self )
         self.cmd( 'ovs-vsctl add-br', self )
+        print 'OVSswitch opts: ',self.opts
         self.cmd( 'ovs-vsctl -- set Bridge', self,
-                  'other_config:datapath-id=' + self.dpid )
+                  self.opts+' other_config:datapath-id=' + self.dpid )
         self.cmd( 'ovs-vsctl set-fail-mode', self, self.failMode )
         for intf in self.intfList():
             if not intf.IP():


The mn session can now be started:
sudo mn --topo single,3  --controller 'remote,ip=<your controller IP>' --switch ovsk,protocols=OpenFlow10
or
sudo mn --topo single,3  --controller 'remote,ip=<your controller IP>' --switch ovsk,protocols=OpenFlow13

To test the version of used protocol by switch "s1":

ovs-ofctl -O OpenFlow10 show s1
ovs-ofctl -O OpenFlow13 show s1


If this is useful, I can put it on wiki. If you have any suggestions or improvements, please let me know. The image of virtual machine is huge (3.6 GB), but size of neccessary deb files is only 2 MB, so maybe I can upload them somewhere.


From: Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco)
Sent: Tuesday, August 06, 2013 11:09 PM
To: Anil Vishnoi; Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

From one interop I also remember the soft switch
They claim to support Openflow 1.2 and 1.3.1  and OFConfig 1.1
The code is written in Erlang, if I remember correctly.

 

Tony

 

From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Anil Vishnoi
Sent: Tuesday, August 06, 2013 10:10 PM
To: Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

 

Just to add, Following file has track of what all is still need to be done to fully support 1.3 in OVS.

 

 

I came across another options (of soft switch ) 

 

 

Looks like it has comprehensive support for 1.3, but i didn't get an opportunity to explore it in detail.

 

Michal, can you please share the repo details from where we can download your modified mininet image ?

 

Thanks
Anil
 
On Tue, Aug 6, 2013 at 8:55 PM, Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco) <mirehak@...> wrote:

Greetings,
there is a testing issue coming up regarding OF-1.3. The plugin and library both need a switch capable of OF-1.3 to develop and test new implementations. 

I have successfully tried to update openvirtualswitch driver in the latest (2.0.0) mininet image. Default version of the openvirtualswitch driver is 1.4.3 and the latest released version is 1.10. So now the protocol version can be specified using startup parameters of mn-script.

From openvirtualswitch FAQ:
Open vSwitch 1.10 and later have experimental support for OpenFlow
   1.2 and 1.3.
--------------------------

I believe that this can be used for start, but there is definitely a need for a testing network
or site later, where switches with full support of OF-1.3 specification would be available.



Do you have an idea how or where can we (later on) develop and test the OF-1.3 implementations?

Thank you.

Regards,
Michal Rehak


_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev



 

--
Thanks
Anil
_______________________________________________
openflowplugin-dev mailing list
openflowplugin-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev


Michal Rehak -X (mirehak - Pantheon Technologies SRO@Cisco) <mirehak@...>
 

Greetings.

Back to openvswitch - I have done the following in order to get version 1.10 (if you have mininet-2.0.0 already running, please proceed to Stage 2):

Stage 1

- download mininet image 2.0.0 (https://github.com/downloads/mininet/mininet/mininet-2.0.0-113012-amd64-ovf.zip)
- the image is in vmware format I guess, but can by simply imported into virtualbox
- start mininet-2.0.0, login as mininet, password mininet


Stage 2

- uninstall packages openvswitch-common and openvswitch-switch (there should be version 1.4.3 officially in ubuntu repo, so in case of emergency these can be always installed again)
- download latest release of openvswitch: http://openvswitch.org/releases/openvswitch-1.10.0.tar.gz
- there are install howtos, take a look at INSTALL.Debian
- there are some new packages to be installed (apt-get install build-essential fakeroot)
- run dpkg-checkbuilddeps to check, if all dependencies are installed
- here comes the long step 4. from INSTALL.Debian
- if everything compiled successfully, you should have these deb files in parent folder:

openvswitch-common_1.10.0-1_amd64.deb
openvswitch-controller_1.10.0-1_amd64.deb
openvswitch-datapath-dkms_1.10.0-1_all.deb
openvswitch-datapath-source_1.10.0-1_all.deb
openvswitch-dbg_1.10.0-1_amd64.deb
openvswitch-ipsec_1.10.0-1_amd64.deb
openvswitch-pki_1.10.0-1_all.deb
openvswitch-switch_1.10.0-1_amd64.deb
openvswitch-test_1.10.0-1_all.deb
ovsdbmonitor_1.10.0-1_all.deb
python-openvswitch_1.10.0-1_all.deb


- now install
dpkg -i openvswitch-common_1.10.0-1_amd64.deb
dpkg -i openvswitch-switch_1.10.0-1_amd64.deb

- now mininet should be using openvswitch 1.10.0, this can be simply tested by running ODL-controller and let mininet to connect to it.

- to use OF-1.3 following parameter has to be passed to openvswitch startup command:
protocols=OpenFlow13

So I made following change to node.py file (mininet python class, be sure to modify the distributed file, not the one in /home/mininet/mininet/...) in order to control the protocol version using cmd parameter:

--- ../mininet/build/lib.linux-x86_64-2.7/mininet/node.py       2012-11-30 22:30:07.000000000 -0800
+++ /usr/local/lib/python2.7/dist-packages/mininet-2.0.0-py2.7.egg/mininet/node.py      2013-07-25 05:40:26.179978120 -0700
@@ -901,6 +904,11 @@
            failMode: controller loss behavior (secure|open)"""
         Switch.__init__( self, name, **params )
         self.failMode = failMode
+        protKey = 'protocols'
+        if self.params and protKey in self.params:
+            print 'have protocol params!'
+            self.opts += protKey + '=' + self.params[protKey]
+
 
     @classmethod
     def setup( cls ):
@@ -955,8 +964,9 @@
         # Annoyingly, --if-exists option seems not to work
         self.cmd( 'ovs-vsctl del-br', self )
         self.cmd( 'ovs-vsctl add-br', self )
+        print 'OVSswitch opts: ',self.opts
         self.cmd( 'ovs-vsctl -- set Bridge', self,
-                  'other_config:datapath-id=' + self.dpid )
+                  self.opts+' other_config:datapath-id=' + self.dpid )
         self.cmd( 'ovs-vsctl set-fail-mode', self, self.failMode )
         for intf in self.intfList():
             if not intf.IP():


The mn session can now be started:
sudo mn --topo single,3  --controller 'remote,ip=<your controller IP>' --switch ovsk,protocols=OpenFlow10
or
sudo mn --topo single,3  --controller 'remote,ip=<your controller IP>' --switch ovsk,protocols=OpenFlow13

To test the version of used protocol by switch "s1":

ovs-ofctl -O OpenFlow10 show s1
ovs-ofctl -O OpenFlow13 show s1


If this is useful, I can put it on wiki. If you have any suggestions or improvements, please let me know. The image of virtual machine is huge (3.6 GB), but size of neccessary deb files is only 2 MB, so maybe I can upload them somewhere.


From: Tony Tkacik -X (ttkacik - Pantheon Technologies SRO at Cisco)
Sent: Tuesday, August 06, 2013 11:09 PM
To: Anil Vishnoi; Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

From one interop I also remember the soft switch

http://www.flowforwarding.org/

They claim to support Openflow 1.2 and 1.3.1  and OFConfig 1.1

The code is written in Erlang, if I remember correctly.

 

Tony

 

From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Anil Vishnoi
Sent: Tuesday, August 06, 2013 10:10 PM
To: Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

 

Just to add, Following file has track of what all is still need to be done to fully support 1.3 in OVS.

 

 

I came across another options (of soft switch ) 

 

 

Looks like it has comprehensive support for 1.3, but i didn't get an opportunity to explore it in detail.

 

Michal, can you please share the repo details from where we can download your modified mininet image ?

 

Thanks

Anil

 

On Tue, Aug 6, 2013 at 8:55 PM, Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco) <mirehak@...> wrote:

Greetings,
there is a testing issue coming up regarding OF-1.3. The plugin and library both need a switch capable of OF-1.3 to develop and test new implementations.

I have successfully tried to update openvirtualswitch driver in the latest (2.0.0) mininet image. Default version of the openvirtualswitch driver is 1.4.3 and the latest released version is 1.10. So now the protocol version can be specified using startup parameters of mn-script.

From openvirtualswitch FAQ:
Open vSwitch 1.10 and later have experimental support for OpenFlow
   1.2 and 1.3.
--------------------------

I believe that this can be used for start, but there is definitely a need for a testing network
or site later, where switches with full support of OF-1.3 specification would be available.



Do you have an idea how or where can we (later on) develop and test the OF-1.3 implementations?

Thank you.

Regards,
Michal Rehak


_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev



 

--

Thanks

Anil


Tony Tkacik
 

From one interop I also remember the soft switch

http://www.flowforwarding.org/

They claim to support Openflow 1.2 and 1.3.1  and OFConfig 1.1

The code is written in Erlang, if I remember correctly.

 

Tony

 

From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Anil Vishnoi
Sent: Tuesday, August 06, 2013 10:10 PM
To: Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] [openflowjava-dev] Testing of OF-1.3

 

Just to add, Following file has track of what all is still need to be done to fully support 1.3 in OVS.

 

 

I came across another options (of soft switch ) 

 

 

Looks like it has comprehensive support for 1.3, but i didn't get an opportunity to explore it in detail.

 

Michal, can you please share the repo details from where we can download your modified mininet image ?

 

Thanks

Anil

 

On Tue, Aug 6, 2013 at 8:55 PM, Michal Rehak -X (mirehak - Pantheon Technologies SRO at Cisco) <mirehak@...> wrote:

Greetings,
there is a testing issue coming up regarding OF-1.3. The plugin and library both need a switch capable of OF-1.3 to develop and test new implementations.

I have successfully tried to update openvirtualswitch driver in the latest (2.0.0) mininet image. Default version of the openvirtualswitch driver is 1.4.3 and the latest released version is 1.10. So now the protocol version can be specified using startup parameters of mn-script.

From openvirtualswitch FAQ:
Open vSwitch 1.10 and later have experimental support for OpenFlow
   1.2 and 1.3.
--------------------------

I believe that this can be used for start, but there is definitely a need for a testing network
or site later, where switches with full support of OF-1.3 specification would be available.



Do you have an idea how or where can we (later on) develop and test the OF-1.3 implementations?

Thank you.

Regards,
Michal Rehak


_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev



 

--

Thanks

Anil