USBIP protocol

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Matthew Wilcox
Date: Friday, August 29, 2008 - 7:02 am

I'm in the middle of implementing a userspace client for usbip and I
strongly feel that the protocol needs to be changed before it is merged.

 - I'm unconvinced that TCP is the correct protocol to be running this over.
   I understand the reluctance to use UDP, but the protocol is fundamentally
   packet-based.  If TCP is used, the delimitation of packets within the
   stream needs to be much more robust.  I've managed to wedge the VHCI driver
   a number of times in ways that just wouldn't be possible if we were using
   a packet protocol instead of a stream protocol.
 - Endianness.  This is a mess.  The usbip protocol is big-endian, but the
   encapsulated usb protocol is little-endian.  This doesn't matter to the
   people who are just tunnelling usb from one computer to another, but for
   someone implementing a usbip client, it's very confusing.
 - The protocol needs an officially assigned port number.  Port 3240 is 
   already assigned to Tony Matthews <tmatthews&triomotion.com> February
   2002 (see http://www.iana.org/assignments/port-numbers)
 - There are actually two completely different protocols in use.  First,
   the usbipd daemon listens on port 3240, and handles device discovery.
   When usbip successfully attaches to usbipd, both sides of the connection
   pass the socket fd into the kernel and the protocol changes.
 - The protocol sends a 48-byte packet header for every command (and every
   response).  It's cunningly hidden as a union.
   
I think the protocol would be immeasurably improved by going through the
IETF RFC process and getting feedback from networking experts.  Failing
that, I have some suggestions about how to improve it.  I was hoping to
get my client finished before I started mucking with the protocol though.

(I have some other comments on the implementation, but they're a separate
issue).

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
USBIP protocol, Matthew Wilcox, (Fri Aug 29, 7:02 am)
Re: USBIP protocol, Andi Kleen, (Fri Aug 29, 7:06 am)
Re: USBIP protocol, Greg KH, (Fri Aug 29, 7:30 am)
Re: USBIP protocol, Matthew Wilcox, (Fri Aug 29, 7:43 am)
Re: USBIP protocol, Greg KH, (Fri Aug 29, 7:54 am)
Re: USBIP protocol, Matthew Wilcox, (Fri Aug 29, 8:36 am)
RE: USBIP protocol, Dave Higton, (Fri Aug 29, 8:53 am)
Re: USBIP protocol, Matthew Wilcox, (Fri Aug 29, 1:46 pm)
Re: USBIP protocol, Willy Tarreau, (Fri Aug 29, 1:51 pm)
Re: USBIP protocol, Marcel Holtmann, (Fri Aug 29, 3:31 pm)
Re: USBIP protocol, Matthew Wilcox, (Tue Sep 2, 9:25 pm)
Re: USBIP protocol, Alan Stern, (Wed Sep 3, 8:40 am)
Re: USBIP protocol, Greg KH, (Wed Sep 3, 8:57 am)
Re: USBIP protocol, Matthew Wilcox, (Wed Sep 3, 12:10 pm)
Re: USBIP protocol, Matthew Wilcox, (Wed Sep 3, 12:43 pm)
Re: USBIP protocol, Alan Stern, (Wed Sep 3, 1:15 pm)
Re: USBIP protocol, Greg KH, (Wed Sep 3, 7:41 pm)
Re: USBIP protocol, Matthew Wilcox, (Thu Sep 4, 2:48 pm)
Re: USBIP protocol, Greg KH, (Thu Sep 4, 3:15 pm)
Re: USBIP protocol, Pete Zaitcev, (Thu Sep 4, 8:26 pm)
Re: USBIP protocol, Tilman Schmidt, (Fri Sep 5, 4:37 am)
Re: USBIP protocol, Alan Stern, (Fri Sep 5, 8:05 am)
Re: USBIP protocol, Matthew Wilcox, (Mon Sep 8, 5:53 pm)
Re: USBIP protocol, Steve Calfee, (Tue Sep 9, 12:12 am)
Re: USBIP protocol, Greg KH, (Tue Sep 9, 12:33 am)
Re: USBIP protocol, Greg KH, (Tue Sep 9, 1:04 am)
Re: USBIP protocol, Alan Stern, (Tue Sep 9, 8:21 am)