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).