Hi Matt,

On 2017年07月30日 19:01, Matthew Hayes wrote:
Hi Iwase,

Thank you very much for the useful information on git install and patching Ryu. I have now successfully applied your patch to Ryu, and can confirm that the functionality works as expected when enabled with the --with-timestamp// option.

Thank you for reviewing my patch!



As an aside, I've built a Vagrant definition to make it easier to stand up a guest with Ryu installed from git at https://github.com/mattjhayes/Vagrant/tree/master/SDN_Labs/Mininet_RyuGitInstall

Cool!

Ryu provides the Docker image to do the practices on Ryu-Book:
  http://osrg.github.io/ryu-book/en/html/installation_guide.html
But, doesn't yet have the Vagrantfile to do that.


Thanks,
Iwase




Regards,

Matt.



----------------------------------------------------------------------------------------------------
*From:* Iwase Yusuke <iwase.yusu...@gmail.com>
*Sent:* Friday, 28 July 2017 12:20 a.m.
*To:* matthew_john_ha...@hotmail.com
*Cc:* ryu-devel@lists.sourceforge.net
*Subject:* Re: [Ryu-devel] Event receive timestamps
Hi Matt,

I recommend you to use Git in order to apply patches.
For installing Ryu from Git source, how about trying the following procedures?
https://github.com/osrg/ryu#quick-start

For applying patches manually, you can use "git am" command.
If you are using Thunderbird as your mailer, save message of path as a file 
into your local
directory, then run "git am" at Ryu's Git directory.

e.g.)
# Save patch as a file and apply it
$ cd ryu
$ ls
...(snip)...
[PATCH v2] manager: Option to enable timestamp.eml
...(snip)...
$ git am \[PATCH\ v2\]\ manager\:\ Option\ to\ enable\ timestamp.eml
Applying: manager: Option to enable timestamp

# Confirm in on Git
$ git log
commit fe62d6524bfdb107c4b7c1248c51cc2a76e2d758
Author: IWASE Yusuke <iwase.yusu...@gmail.com>
Date:   Tue Jul 25 13:23:10 2017 +0900

      manager: Option to enable timestamp

      This patch introduces a new option "--with-timestamp" which enable to
      get timestamp when Ryu received the OpenFlow message.

      Suggested-by: Matthew Hayes <matthew_john_ha...@hotmail.com>
      Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com>
...(snip)...

# Then, reinstall Ryu
$ pip uninstall Ryu
$ pip install -r tools/pip-requires
$ python setup.py install

# If you can install Ryu successfully, "--with-timestamp" will be inserted
$ ryu-manager --help
...(snip)...
    --with-timestamp      enable timestamps when receiving OpenFlow messages
...(snip)...


Thanks,
Iwase


On 2017年07月27日 18:20, Matthew Hayes wrote:
Hi Iwase,


Can you please advise the method to apply the patch?


I have installed Ryu from pip, as there are a lot of dependencies if cloned 
from GitHub. Do I need a
git install of Ryu to test the patch, and if so where can I find instructions 
to install the
dependencies?


Thanks,


Matt.



----------------------------------------------------------------------------------------------------
*From:* Iwase Yusuke <iwase.yusu...@gmail.com>
*Sent:* Tuesday, 25 July 2017 1:38 a.m.
*To:* matthew_john_ha...@hotmail.com
*Cc:* ryu-devel@lists.sourceforge.net
*Subject:* Re: [Ryu-devel] Event receive timestamps
Hi Matt,

Sorry for the delay.


On 2017年07月20日 17:36, Matthew Hayes wrote:
Hi Iwase,


I've tested your suggested patch and it works (although I had to apply updates 
manually).


The develop branch of nmeta has been updated to consume the event timestamp, if 
it exists (see
https://github.com/mattjhayes/nmeta/blob/develop/nmeta/nmeta.py#L330)
<https://github.com/mattjhayes/nmeta/blob/develop/nmeta/nmeta.py#L330>
mattjhayes/nmeta <https://github.com/mattjhayes/nmeta/blob/develop/nmeta/nmeta.py#L330>
github.com
nmeta - Extensible Traffic Classification on SDN




I've attached a brief analysis of the benefits of event receive timestamps for 
measuring
controller/app performance.


Please let me know if this enhancement makes it into the upstream, a command 
line switch to enable
it would be just fine.

Thank you so much for your suggestion!
I've posted the patches for supporting this feature.
Could you reviewing my patches?
    [Ryu-devel] [PATCH 0/2] Option to enable timestamp

Please note this feature is only enabled with "--with-timestamp" option in 
order to avoid changing
the existing features.

Thanks,
Iwase




Thanks,


Matt.



----------------------------------------------------------------------------------------------------
*From:* Iwase Yusuke <iwase.yusu...@gmail.com>
*Sent:* Wednesday, 12 July 2017 12:38 a.m.
*To:* matthew_john_ha...@hotmail.com
*Cc:* ryu-devel@lists.sourceforge.net
*Subject:* Re: [Ryu-devel] Event receive timestamps
Hi Matt,

Oops, sorry the snippet I wrote on the previous mail is not the official patch.
And currently, I don't have a plan to send it into the upstream.

If adding timestamps into upstream, I guess we need to take care about the
performance.
For example, with tons of Packet-In, we want to reduce the overhead of receiving
and parsing OpenFlow messages in "_recv_loop".
I think better to add the new options for taking timestamps.
e.g.) taking timestamps only when "--with-timestamp" option is specified.

Thanks,
Iwase


On 2017年07月11日 18:59, Matthew Hayes wrote:
Hi Iwase


Thank you for the really prompt reply. I will test your patch out with my 
project.

Will this patch make it into the main Ryu distribution at some stage?


Thanks,


Matt.


----------------------------------------------------------------------------------------------------
*From:* Iwase Yusuke <iwase.yusu...@gmail.com>
*Sent:* Tuesday, 11 July 2017 12:31 a.m.
*To:* matthew_john_ha...@hotmail.com
*Cc:* ryu-devel@lists.sourceforge.net
*Subject:* Re: [Ryu-devel] Event receive timestamps
Hi Matt,

Ryu handles the low level messages receiving at ryu/controller/controller.py, I 
guess we need to
get the timestamp here.
https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


github.com
ryu - Ryu component-based software defined networking framework


<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


github.com
ryu - Ryu component-based software defined networking framework


ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
<https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
        
ryu/controller.py at master · osrg/ryu · GitHub <https://github.com/osrg/ryu/blob/master/ryu/controller/controller.py#L233>
github.com
ryu - Ryu component-based software defined networking framework


github.com
ryu - Ryu component-based software defined networking framework


github.com
ryu - Ryu component-based software defined networking framework




Then, how about the following?
I added the "timestamp" into "EventOFP***" events.

$ git diff
diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py
index 62bca5f..4c7259c 100644
--- a/ryu/controller/controller.py
+++ b/ryu/controller/controller.py
@@ -22,6 +22,7 @@ The main component of OpenFlow controller.

   """

+import time
   import contextlib
   from ryu import cfg
   import logging
@@ -266,11 +267,13 @@ class Datapath(ofproto_protocol.ProtocolDesc):
                       remaining_read_len = (msg_len - buf_len)
                       break

+                _received_time = time.time()
                   msg = ofproto_parser.msg(
                       self, version, msg_type, msg_len, xid, buf[:msg_len])
                   # LOG.debug('queue msg %s cls %s', msg, msg.__class__)
                   if msg:
                       ev = ofp_event.ofp_msg_to_ev(msg)
+                    ev.timestamp = _received_time
                       self.ofp_brick.send_event_to_observers(ev, self.state)

                       dispatchers = lambda x: 
x.callers[ev.__class__].dispatchers


Thanks,
Iwase


On 2017年07月10日 19:34, Matthew Hayes wrote:
Hi all,

Can Ryu present timestamps to applications detailing when it received 
particular OpenFlow events
(example: timestamp for when a Packet-In event was received by Ryu)?

I have a reactive SDN project built on Ryu (see: https://nmeta.readthedocs.io 
), and telemetry built
nmeta — nmeta 0.4.1 documentation <https://nmeta.readthedocs.io/>
nmeta.readthedocs.io
nmeta¶ The nmeta project is a research platform for traffic classification on Software Defined Networking (SDN). Read More. Contents:


into the app records processing time for OpenFlow events, such as Packet-In.

I want to be able to access to the timestamp of when the OpenFlow event is 
received by the
controller, to enable tracking of the delay in the application receiving the 
event, which will vary
under load. This feature would also help with accuracy of algorithms that 
analyse packet arrival times.

Please advise if this data is available in Ryu, and if not, whether it would be 
possible to develop it?

Thanks,

Matt.



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot



_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to