[comp.protocols.tcp-ip] 4.3 TCP sockets revisited.

robert@SPAM.ISTC.SRI.COM (Robert Allen) (04/20/88)

    Last year I asked some questions about TCP sockets under 4.2-4.3BSD
    UNIX, concerning a dynamic alternate routing capability.  Specifically
    I was concerned that under 4.2 routes are closely tied to the TCP
    sockets using that route, such that if the route dies then the TCP peers
    at the sockets also time out and die, forcing the application using
    the sockets to restart the sockets.  Rumor had it that 4.3 would solve
    some of these problems, because the TCP timers could last long enough
    for a new route to be obtained.  The part of the problem which was perhaps
    not addressed under 4.3 was the caching of only a single 'good' route at
    a time.

    Now I have heard that the Sun Internetwork Router (based on XNS) under
    the newer versions of SunOS supports load sharing, which leads me to
    believe that Sun must also support redundant routes in the routing tables.
    I have a need for highly responsive route switching under the socket layer
    in the work I'm doing, where the physical layer tends to be poor or non-
    existant on a per-route basis over time.  If the functionality has not been
    implemented yet I have an interest in trying it myself, but I don't want
    to re-invent the wheel, Sooo...

    My questions are:

	(a) Has Sun implemented what I call here "dynamic redundant routing"?
	    If so, under which releases of the OS?
	    If so, is it only for the Internetwork Router?

	(b) If Sun has not implemented it, has Berkeley, or someone else?

	(c) If Sun has not implemented it, how are they doing load sharing
	    over the I.R.?  Did I hear a wrong rumor?


    Please call, write or post to the net. 

    Thanks,

    Robert Allen,
    robert@spam.istc.sri.com	415-859-2143

melohn@SUN.COM (Bill Melohn) (04/26/88)

The load sharing option of the Sunlink Internetwork Router allows you
to connect two Suns with some number of parallel serial lines using
the Xerox Point to Point protocol on each line. The load sharing
driver tries to distribute the outgoing IP packets over these lines in
a method which tries to maximize the utiltization of each line;
essentially a round robin when all of the packets are the same
(maximum) size. This allows you to get effective throughput close to
the sum of the baudrate of all lines used, and to continue to send
packets as long as at least one of the lines is operating. Routing is
still done on a per-interface basis; all of the load-shared lines use
the same IP network interface for transmission of packets. In
contrast, if you used an IP interface per line between two nodes, only
one of the lines would be used at any time by routing algorithm
provided in standard 4BSD software. 

kozel@SPAM.ISTC.SRI.COM (Edward R. Kozel) (04/26/88)

Bill,
	You implied that routing of packets over load sharing serial
lines occurs once within the 4.3 router and again at the Internetwork
Router interface handler.  Is this true?  Also, does your round robin
handling dynamically pass packets from one queue to another if, for
example, one of the serial links failed?  I guess my question really
is - do you have one outgoing queue from which packets are dynamically
allocated to each interface or is there a N-deep queue for each 
interface (latter scenario raising my earlier question).