Newsgroups: comp.archives
Path: utzoo!utgpu!news-server.csri.toronto.edu!ox.com!msen.com!emv
From: tsuchiya@thumper.bellcore.com (Paul Tsuchiya)
Subject: [ietf] new routing table lookup algorithm
Message-ID: <1991Jun29.042500.25735@ox.com>
Followup-To: list.ietf
Sender: emv@msen.com (Edward Vielmetti, MSEN)
Reply-To: tsuchiya@thumper.bellcore.com (Paul Tsuchiya)
Organization: OTA Limited Partnership
References: <9106262053.AA21895@chiya.bellcore.com>
X-Original-Date: Wed, 26 Jun 91 16:53:55 -0400
Date: Sat, 29 Jun 1991 04:25:00 GMT
Approved: emv@msen.com (Edward Vielmetti, MSEN)
X-Original-Newsgroups: list.ietf
Lines: 60

Archive-name: internet/route/cecilia/1991-06-26
Archive: thumper.bellcore.com:/pub/cecilia.tar.Z [128.96.41.1]
Original-posting-by: tsuchiya@thumper.bellcore.com (Paul Tsuchiya)
Original-subject: new routing table lookup algorithm
Reposted-by: emv@msen.com (Edward Vielmetti, MSEN)



Hi gang,

I have written a new routing table lookup algorithm in the
spirit of patricia.  It is in the spirit of
patricia in the sense that it is a binary
search, and in that it can bounce around the
word being searched rather than just work left
to right.  I call it cecilia.

As such, it works with non-contiguous masks
in their full generality (including the "non-decidable"
case where there is not a single bit that can be
used to distinguish a group of entries, but
instead different pairs of entries use different
bits).

The reason I wrote the algorithm is as follows:
I wanted a search algorithm for use with my
Nat (Network address translator) box.  Of course,
it had to deal with non-contiguous masks (I couldn't
show my face in public if I implemented something that
couldn't work with non-contiguous masks).  I
started to use Joel Halpern's patricia code, but
realized that Nat does a LOT of delete operations,
and patricia doesn't have a delete operation.

So, cecilia has a delete operation.  Its other
advantages over patricia are that it can deal with
the non-decidable case, whereas patricia doesn't,
and that it probably produces on average a slightly
shallower tree, although I haven't done the 
measurements to show this for sure.

Anybody who wants to play with cecilia can anonymous
ftp over a tarfile that contains the code and
a short and roughly written overview of the algorithm
and how it is different from patricia.  I have
exercised the code pretty thoroughly on my kampai
simulator, so its pretty well flushed out.  I hope
to do more exercising soon, plus the comparisons
with patricia.

You can get it on thumper.bellcore.com, in directory
pub.  It is in the file cecilia.tar.Z.

PT

-- MSEN Archive Service file verification
thumper.bellcore.com
-rw-rw-rw-  1  4172     4172        37417 Jun 26 20:38 /pub/cecilia.tar.Z
found cecilia ok
thumper.bellcore.com:/pub/cecilia.tar.Z
