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