(Someone) asked:
> >Under what conditions does any part of AFS use TCP:
> >
> >-during volume synchronization only (i.e. just vos release)
> >
> >-other times??
> 
> As far as I can tell, never.  AFS pretty much uses RX exclusively, which
> is all UDP.  Lord knows that TCP may creep in there somewhere, though ...

Jeffrey T. Hutzelman replied:
> I can't think of any uses of TCP either.  All the places where large amounts
> of data are transferred use Rx's bulk-data-transfer capability, which
> (like all of Rx) is UDP-based.

I looked through the afs source we have.  The usual daemons (ftpd,
inetd, rlogind, & rshd) all have the usual tcp sockets in them.
The only other occurrence of TCP that I could find is in the volume
server.  If I am reading the code right, it is only used by applications
running locally on a fileserver to put volumes temporarily offline (from
the fileserver).  It's contained in the source in vol/fssync.c, and
a linkable object is distributed in library afs/vlib.a(fssync.o).
The following utilities appear to use this feature:
        volserver
        salvager
        volinfo
volserver & salvager are normal components of a bos instance
for a fileserver.  Volinfo is probably a standalone utility
that can be run even with the fileserver is up, to get information
on a volume on the fileserver.  Presumably, they use TCP instead of RX
mostly so that they get positive feedback if the client is unceremoniously
killed, and doesn't have time to clean up after itself.

TCP is definitely never used to ship large amounts of data
around, or on the wire.  RX is very much designed to ship large
amounts of data efficiently, and to scale and perform better
than TCP, with increased security.  There just isn't much reason
to use TCP (in AFS), & much reason not to.


                                -Marcus Watts
                                UM ITD PD&D Umich Systems Group

Reply via email to