Les Mikesell wrote:
On Tue, 2003-09-09 at 07:06, James Knott wrote:
I am aware the UDP is best effort and that the services using it are
supposed to provide flow control if necessary. Given that FTP, which
uses TCP works fine and Samba and NFS, which use UDP have problems, what
observations would you make?
A) The 'flow control' mechanism when going between a fast medium to
a much slower one is to buffer some, then discard packets when the
buffer is filled. TCP has a window size mechanism that will
limit the unacked packets sent on a single connection. CIPE
doesn't change this by using UDP - it just wraps the packets
already being sent with another header during delivery. Things that
use UDP natively for reliable transfers (NFS, etc.) normally
have their own windowing and error correction mechanism that
can differ in size and backoff strategy from TCP's.
I suspect this may be the cause of the problem.
B) Samba uses TCP for file transfer, so any conclusions
you made about UDP by observing samba are incorrect.
I don't know enough about SMB, but that's what I also thought. However,
there are some UDP packets as well.
C) If you want to diagnose where the problem is you will have
to use tcpdump or some other protocol analyzer to see where the
packets are being discarded. If you watch a tcp stream like
samba going into the cipe interface you will see the tcp sequence
numbers repeat as tcp's error recovery fixes things. On the
other end you will only see one instance come out. Then you
have to figure out which hardware interface dropped the cipe
packet between them.
I posted some tcpdump files to the list yesterday. I had sent them to
D) Wild guess here - I haven't checked but it is possible that
samba sets the DF (don't fragment) bit where ftp doesn't (Microsoft
likes to do that for no particular reason...). That means if
the medium can't accept the whole packet it has to discard it
instead of fragmenting so it will be rebuilt at the other end.
Shouldn't I be seeing some ICMP messages about that? Also, I tried
using some small MTU values and it didn't help. Also, I looked at some
of the packets captured with Ethereal. They don't show the DF flag set.