Coda File System

success in avoiding fragments

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: Fri, 05 Nov 1999 11:20:46 -0500
Thanks for the pointers about packet sizes.

I went and read some of the source code.  It seems that data is only
piggybacked if the resulting packet isn't too big.  I changed the
definition of too big, and recompiled the server.  Now listing a
directory doesn't cause fragments, but does have more side-effect
stuff where previously there was not.  I haven't tried this in the
situation where I was having trouble before, but I did look at things
with tcpdump.

So this patch is problematic; it makes things work better in the
wireless world, but worse on a wired ethernet.  IMHO things work fine
on a wired ethernet anyway, and the client on a poor network
connection is more important.  Ideally, rpc2/sftp would somehow know
if repeated transmissions failed to arrive, and then lower the value.
But I suppose ideally this would all run over TCP, as people have
hinted at.

On another subject, I've tried to run coda across a (non-NAT)
firewall.
packets from codasrv-se to venus-se get dropped until there is a
venus-se to codasrv-se outgoing packet (standard stateful udp
request/response stuff).  I was able to read files by cat'ing a file
outside of coda into coda; this provokes a client->server side effect.

I can do this now by:

dd if=/dev/zero of=foobar bs=1 count=2700

So, it would be cool if the client could somehow, on getting an rpc2 reply
from the server of 'data sent in side-effect' when no side-effect
packets were received to do a to-server sideeffect NOP rpc.  I suspect
this would greatly ease firewall troubles.  I'm not very rpc2-clueful,
so I toss out the idea in case someone gets to this before me


Index: coda-src/rpc2/sftp.h
===================================================================
RCS file: /coda-src/coda/coda-src/rpc2/sftp.h,v
retrieving revision 4.18
diff -u -r4.18 sftp.h
--- sftp.h      1999/09/14 19:01:25     4.18
+++ sftp.h      1999/11/05 16:04:44
@@ -60,7 +60,7 @@
                                 /* Changed from 2 on 27 Feb 1997 by bnoble */
 
 /* (header+body) of largest sftp packet (2 IP fragments on Ether) */
-#define SFTP_MAXPACKETSIZE     2900
+#define SFTP_MAXPACKETSIZE     1400 /* 2900 */
 #define SFTP_MAXBODYSIZE       (SFTP_MAXPACKETSIZE - \
                                 sizeof(struct RPC2_PacketHeader))
Received on 1999-11-05 11:32:31