From owner-freebsd-net@FreeBSD.ORG Sat Jun 24 17:35:58 2006 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6A22416A494 for ; Sat, 24 Jun 2006 17:35:58 +0000 (UTC) (envelope-from dgilbert@daveg.ca) Received: from ox.eicat.ca (ox.eicat.ca [66.96.30.35]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5CEB243D60 for ; Sat, 24 Jun 2006 17:35:57 +0000 (GMT) (envelope-from dgilbert@daveg.ca) Received: by ox.eicat.ca (Postfix, from userid 66) id 573EA16EE8; Sat, 24 Jun 2006 13:35:56 -0400 (EDT) Received: by canoe.dclg.ca (Postfix, from userid 101) id 261854AC2C; Sat, 24 Jun 2006 13:35:58 -0400 (EDT) From: David Gilbert MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <17565.30718.106118.318863@canoe.dclg.ca> Date: Sat, 24 Jun 2006 13:35:58 -0400 To: "Christopher Martin" In-Reply-To: <50v528$fvu0nd@iinet-mail.icp-qv1-irony1.iinet.net.au> References: <20060623120208.GH36671@gremlin.foo.is> <50v528$fvu0nd@iinet-mail.icp-qv1-irony1.iinet.net.au> X-Mailer: VM 7.17 under 21.4 (patch 19) "Constant Variable" XEmacs Lucid Cc: 'Baldur Gislason' , 'FreeBSD Net Mailing list' Subject: RE: Multiple routes to the same destination X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Jun 2006 17:35:58 -0000 >>>>> "Christopher" == Christopher Martin writes: Christopher> Actually, round robin is exactly what I want. And I am Christopher> not saying I don't use a routing protocol, in fact I do, Christopher> but I want packets to be able to use two or more diverse Christopher> paths of equivalent cost. No. round-robin will deliver packets out-of-order. TCP will behave very badly with this (at the very least, smart selective-ack hosts will transmit a lot of selective-ack packets --- but dumb non-selective-ack hosts will start asking for a lot of retransmission). Other protocols tolerance for OOO packets varies. Generally devices that use multiple routes (like a cisco) rather than things that simply accept multiple routes (like windoze) have some set of rules that generally deliver all traffic for a set of hosts down one of the available routes. "Etherchannel" (a simple layer two bonding that is available in FreeBSD as ng_fec) does this by XORing the last couple of bits of the MAC addresses (source and dest) and uses this to choose one of two or one of four links to forward the packet. I suspect equal-cost-multipath on Ciscos does the same with IP addresses. Linux does all this with it's flow table --- that is each 5-tuple of source ip,port dest ip,port (and protocol) is stored as a "flow" in a big hash table. The table stores things like the next-hop interface and destination. Now... this is an unscalble solution --- it's reasonably trivial to knock over a linux router with a simple DOS ... details left to the interested reader. Dave. -- ============================================================================ |David Gilbert, Independent Contractor. | Two things can be | |Mail: dave@daveg.ca | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================