Les Mikesell <les,AT,futuresource,DOT,com>|
Re: Checklist (sub-thread of: "Slow file sharing performance: lostpidgeons")|
James Knott <james.knott,AT,rogers,DOT,com>|
Tue, 09 Sep 2003 12:36:33 -0400|
<002f01c376aa$bb23a860$d620a8c0@pcw_hans.hnsasd.priv> <3F5DC241.email@example.com> <firstname.lastname@example.org> <3F5DD367.email@example.com> <firstname.lastname@example.org>|
I'll send the files directly to you, in case the mail list has dropped them.
Les Mikesell wrote:
On Tue, 2003-09-09 at 08:19, James Knott wrote:
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.
I suspect this may be the cause of the problem.
Since it doesn't happen if you don't go out the cable modem the
packets have to be dropped somewhere beyond your server's ethernet.
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.
Netbios uses UDP for name lookups but the connection for file transfer
I posted some tcpdump files to the list yesterday. I had sent them to
I can't find them in the list archives. Since you really can't control
beyond your own ethernet you need to figure out why flow control
isn't working going into the cipe interface. You mentioned setting
mtu down. Does the packet size entering the cipe interface reflect
the size you set?
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.
Are you looking at the cipe interface? A quick tcpdump of port 139
on both windows or samba servers shows that it does set DF on every
packet. You should see an ICMP message if a single packet exceeds
max allowed by the medium for the next hop assuming the router involved
follows the standards and it isn't blocked by a firewall. However I
don't think you'll get that if you just overrun a buffer from the window
of packets transmitted. If you are passing several independent tcp
streams there may not be any way to control it but any single connection
should control its send window based on the remote acks.