The error type is 0, which indicates "success".  It is the form of
acknowledgment sent when an operation completes successfully.

I've diagnosed the first such error that you posted.  I can't diagnose
the ones that I have not seen.

We haven't seen anything like this internally.  I suggest using
ovs-vswitchd instead of a toy test program that is only intended for
unit tests.

On Wed, Oct 19, 2011 at 06:13:11PM +0200, Andreas Schultz wrote:
> Hi Ben,
> 
> It might be harmless, but it is followed by tons of similar errors and why
> errors anyway?.
> Also, there is not a single such error on the first start of controller.
> Only when I kill the fist instance and start it again those error occur
> and the switch is acting erratically. Removing the dp interface in between
> also does not help.
> 
> Any ideas?
> 
> Andreas
> 
> ----- Original Message -----
> > On Wed, Oct 19, 2011 at 01:23:53PM +0200, Andreas Schultz wrote:
> > > Hi all,
> > > 
> > > Upon further investigation it turns out the the dpif_linux_open()
> > > sequence
> > > is broken somewhere. The flow of netlink messages simply makes no
> > > sence at
> > > all.
> > > 
> > > first we get an create attempt, which is expected to fail since the
> > > DP already exists:
> > > Oct 19 11:07:52|00014|netlink_socket|DBG|nl_sock_recv__ (Success):
> > > nl(len:60, type=2(error), flags=0, seq=4e9ef0dc,
> > > pid=25535(25535:0)) error(-17(File exists), in-reply-to(nl(len:40,
> > > type=33(ovs_datapath), flags=d[REQUEST][ACK][ECHO], seq=4e9ef0dc,
> > > pid=25535(25535:0))))
> > > Oct 19 11:07:52|00015|netlink_socket|DBG|received NAK error=17
> > > (File exists)
> > > 
> > > now it tries OVS_DP_CMD_GET:
> > > Oct 19
> > > 11:07:52|00016|netlink_socket|DBG|nl_sock_transact_multiple__
> > > (Success): nl(len:32, type=33(ovs_datapath),
> > > flags=d[REQUEST][ACK][ECHO], seq=4e9ef0dd,
> > > pid=25535(25535:0)),genl(cmd=3,version=1)
> > > Oct 19 11:07:52|00017|netlink_socket|DBG|nl_sock_recv__ (Success):
> > > nl(len:84, type=33(ovs_datapath), flags=0, seq=4e9ef0dd,
> > > pid=25535(25535:0)),genl(cmd=1,version=1)
> > > 
> > > and succeeds. So far so good...
> > > 
> > > Next step is to flush any old flows:
> > > Oct 19
> > > 11:07:52|00018|netlink_socket|DBG|nl_sock_transact_multiple__
> > > (Success): nl(len:24, type=35(ovs_flow), flags=5[REQUEST][ACK],
> > > seq=4e9ef0de, pid=25535(25535:0)),genl(cmd=2,version=1)
> > > 
> > > send that to the kernel...
> > > 
> > > and the kernel give us a netlink error report for the
> > > OVS_DP_CMD_GET that was already ACKed OK:
> > > Oct 19 11:07:52|00019|netlink_socket|DBG|nl_sock_recv__ (Success):
> > > nl(len:36, type=2(error), flags=0, seq=4e9ef0dd,
> > > pid=25535(25535:0)) error(0, in-reply-to(nl(len:32,
> > > type=33(ovs_datapath), flags=d[REQUEST][ACK][ECHO], seq=4e9ef0dd,
> > > pid=25535(25535:0))))
> > > Oct 19 11:07:52|00020|netlink_socket|DBG|ignoring unexpected seq
> > > 0x4e9ef0dd
> > > 
> > > I have verified above sequence with strace and the decoded netlink
> > > messages where indeed send to and received from the kernel. So it
> > > is not a buffering issue in the controller.
> > 
> > This is a red herring.  It's very common for a Netlink request to
> > have
> > two replies when the ACK flag is set, because the kernel
> > unconditionally
> > sends an "error" reply after the command implementation itself sends
> > any
> > reply of its own.  We just ignore the second reply in userspace; it's
> > harmless.
> > 
> 
> -- 
> -- 
> Dipl. Inform.
> Andreas Schultz
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to