Thank you for testing. I sent the fixed patch.

On Fri, Mar 22, 2013 at 09:22:10AM +0800, can. wrote:
> Hello Yamahata, I tested your patch and got new errors. Might be something 
> with
> it.
> 
> Error in the datapath 2 from ('10.109.242.118', 58063)
> Traceback (most recent call last):
>   File "build/bdist.macosx-10.8-intel/egg/gevent/greenlet.py", line 390, in 
> run
>     result = self._run(*self.args, **self.kwargs)
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/controller/
> controller.py", line 308, in datapath_connection_factory
>     datapath.serve()
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/controller/
> controller.py", line 228, in serve
>     self._recv_loop()
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/controller/
> controller.py", line 97, in deactivate
>     method(self)
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/controller/
> controller.py", line 170, in _recv_loop
>     version, msg_type, msg_len, xid, buf)
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/ofproto/
> ofproto_parser.py", line 58, in msg
>     version, msg_type, msg_len, xid, utils.hex_array(buf))
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/utils.py", 
> line
> 45, in hex_array
>     return ' '.join(hex(ord(chr)) for chr in data)
>   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/utils.py", 
> line
> 45, in <genexpr>
>     return ' '.join(hex(ord(chr)) for chr in data)
> TypeError: ord() expected string of length 1, but int found
> <Greenlet at 0x103887c30: datapath_connection_factory(<socket at 0x103c04f50
> fileno=7 sock=10.109.242.11, ('10.109.242.118', 58063))> failed with TypeError
> 
> 
> 2013/3/21 Isaku Yamahata <[email protected]>
> 
>     Thank you for the packet capture.
>     It looks like the switch sends malfold OF packets. What switch are you
>     using?
>     I attached the patch which improve an error message. Can you please test
>     it?
> 
>     > OpenFlow Protocol
>     >     Header
>     >         Version: 0x01
>     >         Type: Packet In (AM) (10)
>     >         Length: 18
>                       ^^ This should be rounded up to 20
>                          And there should be 2 bytes padding at the end.
> 
>     >         Transaction ID: 0
>     >     Packet In
>     >         Buffer ID: 4294967295
>     >         Frame Total Length: 48
>     >         Frame Recv Port: 2
>     >         Reason Sent: Action explicitly output to controller (1)
> 
>     thanks,
> 
>     >From 3617d9557a030b0241f6bb50212c6b36796779c7 Mon Sep 17 00:00:00 2001
>     Message-Id: <
>     
> 3617d9557a030b0241f6bb50212c6b36796779c7.1363859652.git.yamah...@valinux.co.jp
>     >
>     From: Isaku Yamahata <[email protected]>
>     Date: Thu, 21 Mar 2013 18:51:39 +0900
>     Subject: [PATCH] ofproto_parser: dump packets if error is encountered
>     during
>      parse
> 
>     Signed-off-by: Isaku Yamahata <[email protected]>
>     ---
>      ryu/ofproto/ofproto_parser.py |   11 ++++++++++-
>      1 file changed, 10 insertions(+), 1 deletion(-)
> 
>     diff --git a/ryu/ofproto/ofproto_parser.py b/ryu/ofproto/ofproto_parser.py
>     index 26adead..92958b8 100644
>     --- a/ryu/ofproto/ofproto_parser.py
>     +++ b/ryu/ofproto/ofproto_parser.py
>     @@ -18,6 +18,7 @@ import logging
>      import struct
> 
>      from ryu import exception
>     +from ryu import utils
> 
>      from . import ofproto_common
> 
>     @@ -47,7 +48,15 @@ def msg(datapath, version, msg_type, msg_len, xid, 
> buf):
>          if msg_parser is None:
>              raise exception.OFPUnknownVersion(version=version)
> 
>     -    return msg_parser(datapath, version, msg_type, msg_len, xid, buf)
>     +    try:
>     +        return msg_parser(datapath, version, msg_type, msg_len, xid, buf)
>     +    except struct.error:
>     +        LOG.exception(
>     +            'Encounter an error during parsing OpenFlow packet from
>     switch.'
>     +            'This implies switch sending a malfold OpenFlow packet.'
>     +            'version 0x%02x msg_type %d msg_len %d xid %d buf %s',
>     +            version, msg_type, msg_len, xid, utils.hex_array(buf))
>     +        raise
> 
> 
>      class MsgBase(object):
>     --
>     1.7.10.4
>    
> 
> 
>     On Mon, Mar 18, 2013 at 03:09:11PM +0800, can. wrote:
>     > Hello Isaku,
>     >
>     > A capture file is attached to the mail.
>     > The IP 10.0.2.15 is a virtual machine running mininet, and IP
>     10.109.242.118 is
>     > the host running ryu.
>     > I suspect that it's the first packetIn packets cause ryu to crash as you
>     can
>     > see the FIN packets are only a few milliseconds after those packetIn
>     packets.
>     >
>     >
>     > 2013/3/18 Isaku Yamahata <[email protected]>
>     >
>     >     On Mon, Mar 18, 2013 at 09:59:46AM +0800, Can Zhang wrote:
>     >     > Hello,
>     >
>     >     Hello.
>     >
>     >
>     >     > I encounter the errors below quite often recently:
>     >     > ----
>     >     > Traceback (most recent call last):
>     >     >   File "build/bdist.macosx-10.8-intel/egg/gevent/greenlet.py", 
> line
>     390,
>     >     in run
>     >     >     result = self._run(*self.args, **self.kwargs)
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     >     controller/
>     >     > controller.py", line 307, in datapath_connection_factory
>     >     >     datapath.serve()
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     >     controller/
>     >     > controller.py", line 227, in serve
>     >     >     self._recv_loop()
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     >     controller/
>     >     > controller.py", line 97, in deactivate
>     >     >     method(self)
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     >     controller/
>     >     > controller.py", line 170, in _recv_loop
>     >     >     version, msg_type, msg_len, xid, buf)
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     ofproto/
>     >     > ofproto_parser.py", line 50, in msg
>     >     >     return msg_parser(datapath, version, msg_type, msg_len, xid,
>     buf)
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     ofproto/
>     >     > ofproto_v1_0_parser.py", line 52, in msg_parser
>     >     >     return parser(datapath, version, msg_type, msg_len, xid, buf)
>     >     >   File "/Library/Python/2.7/site-packages/ryu-1.7-py2.7.egg/ryu/
>     ofproto/
>     >     > ofproto_v1_0_parser.py", line 1564, in parser
>     >     >     msg.buf, ofproto_v1_0.OFP_HEADER_SIZE)
>     >     > error: unpack_from requires a buffer of at least 12 bytes
>     >     > <Greenlet at 0x10d9f1d70: datapath_connection_factory(<socket at
>     >     0x10dd80fd0
>     >     > fileno=8 sock=10.109.242.11, ('10.109.242.118', 50694))> failed
>     with
>     >     error
>     >     >
>     >     > ----
>     >     >
>     >     > For one of the triggers you may refer to   http://sourceforge.net/
>     >     mailarchive/
>     >     > forum.php?thread_name=
>     >     > 
> 20130314.084438.1568838937885763874.fujita.tomonori%40lab.ntt.co.jp
>     &
>     >     forum_name=
>     >     > ryu-devel
>     >     >
>     >     > It seems that if an app I write fails to meet some unknown
>     standard, the
>     >     switch
>     >     > will send some packets that ryu cannot handle properly, and then
>     ryu
>     >     crashes.
>     >     > Maybe this is a bug of ryu?
>     >
>     >     You're right. Ryu should handle such OF packets more gracefully. Not
>     crash.
>     >     (And log it with understandable message?)
>     >     Anyway, can you post (a part of) your app to reproduce it easily?
>     >     Or can you post the packet capture that caused the crash?
>     >
>     >
>     >     > FYI, I'm using ryu with mininet(open vSwitch 1.9.0)
>     >
>     >     If you'd like to use IPv6 support, OF v1.2+ needs to be enabled.
>     >     e.g.
>     >     ovs-vsctl set bridge s1 protocols=OpenFlow10,OpenFlow12,OpenFlow13
>     >     Since mininet is unaware of OF version, it should be done manually.
>     >
>     >     thanks,
>     >
>     >     >
>     >     >
>     >     > Best regards,
>     >     > Can Zhang
>     >     >
>     >     >
>     >     >
>     >     >
>     >
>     >     >
>     >    
>     
> ------------------------------------------------------------------------------
>     >     > Everyone hates slow websites. So do we.
>     >     > Make your web apps faster with AppDynamics
>     >     > Download AppDynamics Lite for free today:
>     >     > http://p.sf.net/sfu/appdyn_d2d_mar
>     >     > _______________________________________________
>     >     > Ryu-devel mailing list
>     >     > [email protected]
>     >     > https://lists.sourceforge.net/lists/listinfo/ryu-devel
>     >
>     >
>     >     --
>     >     yamahata
>     >
>     >
>     >
>     >
>     > --
>     > Best regards,
>     > Can Zhang
> 
> 
>     >
>     
> ------------------------------------------------------------------------------
>     > Everyone hates slow websites. So do we.
>     > Make your web apps faster with AppDynamics
>     > Download AppDynamics Lite for free today:
>     > http://p.sf.net/sfu/appdyn_d2d_mar
>     > _______________________________________________
>     > Ryu-devel mailing list
>     > [email protected]
>     > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> 
> 
>     --
>     yamahata
> 
> 
> 
> 
> --
> Best regards, 
> Can Zhang

> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_mar
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel


-- 
yamahata

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to