[RAM] IDR tutorial and shortest path
Iljitsch van Beijnum <iljitsch@muada.com> Mon, 23 July 2007 02:06 UTC
Return-path: <ram-bounces@iab.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com)
by megatron.ietf.org with esmtp (Exim 4.43)
id 1ICnJE-0002fP-UL; Sun, 22 Jul 2007 22:06:04 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org)
by megatron.ietf.org with esmtp (Exim 4.43) id 1ICnJD-0002fJ-Ad
for ram@iab.org; Sun, 22 Jul 2007 22:06:03 -0400
Received: from sequoia.muada.com ([83.149.65.1])
by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1ICnJB-0001Pn-Ql
for ram@iab.org; Sun, 22 Jul 2007 22:06:03 -0400
Received: from [192.168.251.111] (mpwr-static-216.70.191.48.mpowercom.net
[216.70.191.48] (may be forged)) (authenticated bits=0)
by sequoia.muada.com (8.13.3/8.13.3) with ESMTP id l6N22hbi026712
(version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO);
Mon, 23 Jul 2007 04:02:45 +0200 (CEST)
(envelope-from iljitsch@muada.com)
Mime-Version: 1.0 (Apple Message framework v752.3)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <D41FC189-45F2-43CE-872F-5C4C0F1B7E07@muada.com>
Content-Transfer-Encoding: 7bit
From: Iljitsch van Beijnum <iljitsch@muada.com>
Date: Sun, 22 Jul 2007 20:47:46 -0500
To: Geoff Huston <gih@apnic.net>
X-Mailer: Apple Mail (2.752.3)
X-Spam-Status: No, score=-2.6 required=3.5 tests=BAYES_00 autolearn=ham
version=3.0.2
X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on sequoia.muada.com
X-Spam-Score: 0.0 (/)
X-Scan-Signature: f60d0f7806b0c40781eee6b9cd0b2135
Cc: RAM Mailing List <ram@iab.org>
Subject: [RAM] IDR tutorial and shortest path
X-BeenThere: ram@iab.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Routing and Addressing Mailing List <ram.iab.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/ram>,
<mailto:ram-request@iab.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/ram>
List-Post: <mailto:ram@iab.org>
List-Help: <mailto:ram-request@iab.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/ram>,
<mailto:ram-request@iab.org?subject=subscribe>
Errors-To: ram-bounces@iab.org
Geoff, Some musings about shortest path determination algorithms that came to mind while listening to your IDR tutorial this afternoon. I think that they're relevant for a wider audience so I'm CCing the RAM list. But first: Bellman wrote a paper in 1956: http://stinet.dtic.mil/oai/oai? &verb=getRecord&metadataPrefix=html&identifier=AD0606258 You can even buy it from the RAND corporation half a century later: http://www.rand.org/pubs/papers/P1000/ [explanation of both algorithms, skip if known] The Bellman-Ford algorithm and the Dijkstra / shortest path first algorithm are often presented as two different approaches to routing. I recently had occasion to read up on those algorithms, and in their pure form, they actually do the exact same thing: determine the shortest path from a certain starting point to another point or all other points. I.e., the problem that they both solve is the "shortest path" problem. The Bellman-Ford approach is communicate known information to neighbors and iterate this process until all information has propagated everywhere, where the number of iterations is the maximum number of hops, either in the topology or supported by the protocol executing the algorithm. Dijkstra's algorithm starts at the starting point and then hunts for short paths from known places towards yet unknown places or over yet unused links. Hence the name "shortest path first". [/end explanation] End result: both algorithms do the exact same thing, but the SPF algorithm is much faster than the Bellman-Ford algorithm, under the same circumstances. So why do we use Bellman-Ford if it's so much slower? Because it is essentially a distributed algorithm where each node only has to do a simple computation over the information that is available locally at that point in time, while the SPF optimizations pretty much require all information to be present before the algorithm can be run. So in the case of distance vector or distance path routing protocols, where only the minimum information required to perform routing is exchanged, Bellman-Ford is great, because you can simply do an iteration as new information becomes available. The downside is the count to infinity problem, which leads to loops in distance vector and the exploration of all loopfree paths in order of increasing length in distance path. And as we've learned with BGP, delays in sending updates slow down convergence while having multiple parallel paths tends to amplify updates, causing additional unnecessary iterations of the route selection process. In link state protocols, all information is flooded to all nodes which then all individually solve the shortest path problem. This means that a fast algorithm like Dijkstra's SPF is preferable over a slower one like Bellman-Ford, and the presence of all information before the algorithm is executed nicely fulfills the requirements of SPF. So the important difference is link state on the one hand versus distance vector and distance path on the other, not Dijkstra versus Bellman-Ford. _______________________________________________ RAM mailing list RAM@iab.org https://www1.ietf.org/mailman/listinfo/ram
- [RAM] IDR tutorial and shortest path Iljitsch van Beijnum