The Wiretap Algorithm

 Date: 30-Oct-85 22:51:33-UT

From: mills at dcn6.arpa

To:   packet-radio at mit-eddie.arpa

Re:   The Wiretap Algorithm (*long*)


I hope you enjoy the following enough that you won't get mad at me for

bloating your mail file, which as we all know creates gas.


Dave


The Wiretap Algorithm


Abstract


This document introduces wiretap algorithms, which are a class of routing

algorithms that compute quasi-optimal routes for stations sharing a broadcast

channel, but with some stations hidden from others. The wiretapper observes

the paths (source routes) used by other stations sending traffic on the

channel and, using a heuristic set of factors and weights, constructs

speculative paths for its own traffic. A prototype algorithm, called here

the Wiretap Algorithm, has been designed for the AX.25 packet-radio channel.

Its design is similar in many respects to the shortest-path-first (spf)

algorithm used in the ARPANET and elsewhere, and is in fact a variation on the

Viterbi algorithm in that it constructs minimum-weight paths as a function of

a weighted sum of factors derived from link and node quality estimates.


Since the amateur AX.25 packet-radio channel is very active in the Washington,

DC, area and carries a good deal of traffic under punishing conditions, it was

considered a sufficiently fiesty environment to implement and test the

prototype algorithm. It was implemented as part of an IP/TCP driver for the

LSI-11 processor running the "fuzzball" operating system. The driver is

connected via serial line to a 6809-based TAPR-1 processor running the WA8DED

firmware. This document describes the design, implementation and initial

testing of the algorithm.


Introduction


This document describes the design, implementation and initial testing of the

Wiretap Algorithm, a dynamic routing algorithm for the AX.25 packet-radio

channel. The AX.25 channel operates in CSMA contention mode at VHF frequencies

using AFSK/FM modulation at 1200 bps. The AX.25 protocol itself is similar to

X.25 LAPB, but with an extended frame header consisting of a string of radio

callsigns representing a path, usually selected by the operator, from the

originating station to the destination station, possibly via one or more

intermediate packet repeaters or digipeaters. Most stations can operate

simultaneously as digipeaters and as end systems.


Wiretap uses passive monitoring of frames transmitted on the channel in order

to build a dynamic data base which can be used to determine optimum routes.

The algorithm operates in real time and selects a minimum-weight path, as

determined by a shortest-path-first procedure similar to that used now in the

ARPANET and planned for use in the new Internet gateway system. The

implementation provides optimum routes (with respect to the factors and

weights selected) at initial-connection time for virtual circuits, as well as

for each datagram transmission. This note is an initial status report and

overview of the prototype implementation for the LSI-11 processor running the

"fuzzball" operating system.


The principal advantage in the use of routing algorithms like Wiretap is that

digipeater paths can be avoided when direct paths are available, with

digipeaters used only when necessary and also to discover hidden stations. In

the present exploratory stage of evolution, the scope of Wiretap has been

intentionally restricted to passive monitoring. In a later stage the scope may

be extended to include the use of active probes to discover hidden stations

and the use of clustering techniques to manage the distribution of large

quantities of routing information.


The AX.25 channel interface is the 6809-based TAPR-1 processor running the

WA8DED firmware (version 1.0) and connected to the LSI-11 by a 4800-bps serial

line. The WA8DED firmware produces as an option a monitor report for each

received frame of a selected type, including U, I and S frames. Wiretap

processes each of these to extract routing information and (optionally) saves

them in the system log file. Following is a typical report:


fm KS3Q to W4CQI via WB4JFI-5* WB4APR-6 ctl I11 pid F0


The originating station is KS3Q and the destination is W4CQI. The frame has

been digipeated first by WB4JFI-5 and then WB4APR-6, is an I frame (sequence

numbers follow the I indicator) and has protocol identifier F0 (hex). The

asterisk "*" indicates the report was received from that station. If no

asterisk appears, the report was received from the originator.


Design Principles


A path is a concatenation of directed links originating at one station,

extending through one or more digipeaters and terminating at another station.

Each link is characterized by a set of factors such as cost, delay or

throughput that can be computed or estimated. Wiretap computes several

intrinsic factors for each link and updates the routing data base, consisting

of node and link tables. The weighted sum of these factors over the entire

path is the path weight.


Wiretap incorporates an algorithm which constructs the minimum-weight paths

between given end stations according to the factors and weights contained in

the routing data base. Such paths can be considered optimum routes between

these stations with respect to the given assignment of factors and weights. In

the prototype implementation one of the end stations must be the Wiretap

station itself.


Note that Wiretap in effect constructs minimum-weight paths in the direction

from another station to the Wiretap station and, based on that information,

then computes the optimum reciprocal routes from the Wiretap station to the

other station. The expectation is that the other station also runs its own

routing algorithm, which then computes its own optimal reciprocal routes (i.e.

the optimum direct routes from the Wiretap station). However, the routing data

bases at the two stations may diverge due to congestion or hidden stations, so

that the computed routes may not coincide.


In principle, Wiretap-computed routes can be fine-tuned using information

provided not only by its directly communicating stations but others that may

hear them as well. The best scenario would be for all stations to exchange

Wiretap information using a suitable distributed protocol, but this is at the

moment beyond the scope of the prototype implementation. Nevertheless,

suboptimal but useful paths can be obtained in the traditional and simple way

with one station using a Wiretap-computed route and the other its reciprocal,

as determined from the received frame header. Thus, Wiretap is compatible with

existing channel procedures and protocols.


Implementation Overview


The prototype Wiretap implementation for the LSI-11 includes two routines, the

wiretap routine, which extracts information from received monitor headers and

builds the routing data base, and the routing routine, which calculates routes

using the information in the data base. The data base consists of three

tables, the channel table, node table and link table. The channel table

includes an entry for each channel of the TAPR-1 processor running the WA8DED

firmware, five in the present configuration. The structure and use of this

table are only incidental to the algorithm and will not be discussed further.


The node table includes an entry for each distinct callsign (which may be a

collective or beacon identifier) heard on the channel, together with its

assigned IP address (if known), node-related routing information, the latest

computed route and other miscellaneous information. The table is indexed by

node ID (NID), which is used in the computed route and in other tables instead

of the awkward callsign string.


The link table contains an entry for each distinct (unordered) node pair

observed in a monitor header. Each entry includes the from-NID and to-NID of

the first instance found, together with node-related routing information

and other miscellaneous information.


The example discussed later in this document includes candidate node and link

tables for illustration. These tables were constructed in real time by the

prototype implementation from off-the-air monitor headers collected over a

several-hour period on a busy evening. Each node table entry requires 30 bytes

and each link table entry four bytes. The maximum size of the node table is

presently 100 entries, while that of the link table is 300 entries. The data

base illustrated in the example has 42 entries in the node table and 46

entries in the link table.


The node table and link table together contain all the information necessary

to construct a network graph, as well as calculate the shortest path on that

graph between any two end stations, not just those involving the Wiretap

station. Note, however, that the Wiretap station does not in general hear all

other stations on the channel, so may choose suboptimal routes. In practice in

the Washington, DC, area, most stations use a digipeater, which is in general

heard reliably by other stations in the area. Thus, a Wiretap station can

eventually capture routes to almost all other stations using the above tables

and the routing algorithm described later.


The Wiretap Routine


The wiretap routine is called to process each monitor header. It extracts each

callsign from the header in turn and searches the node table for corresponding

NID, making a new entry and NID if not already there. The result is a string

of NIDs, starting at the originating station, extending through a maximum of

eight digipeaters, and ending at the destination station. For each pair of

NIDs along this string the link table is searched for either the direct link,

as indicated in the string, or its reciprocal; that is, the direction towards

the originator.


The operations that occur at this point can be illustrated by the following

diagram, which represents a monitor header with apparent path from station 4

to station 6 via digipeaters 7, 2 and 9 in sequence. It happens the header was

heard by the Wiretap station (0) from station 2.


       (4)     (7)     (2)     (9)     (6)

   orig o------>o<=====>o------>o------>o dest

|

|

V

       (0)

     wiretap


Presumably, the fact that the header was heard from station 2 indicates the

path from station 4 to station 2 and then to station 0 is viable, so that each

link along this path can be marked "heard" in that direction. However, the

viability of the path from station 2 to station 6 can only be presumed, unless

additional evidence is available. If in fact the header is from an I or S

frame (but not a U frame), an AX.25 virtual circuit has apparently been

previously established between the end stations and the presumption is

strengthened. In this case each link from 4 to 6 is marked "synchronized" (but

not the link from 2 to 0).


Depending on the presence of congestion and hidden stations, it may happen

that the reciprocal path in the direction from station 6 to station 4 has

quite different link characteristics; therefore, a link can be marked heard in

each direction independently. In the above diagram the link between 2 and 7 is

marked heard in both directions. However, there is only one synchronized mark,

which can be set in either direction. If a particular link is not marked

either heard or synchronized, any presumption on its viability to carry

traffic is highly speculative (the frame is probably a beacon). If later

marked synchronized the presumption is strengthened and if later marked heard

in the reciprocal direction the presumption is confirmed.


Experience shows that a successful routing algorithm for the packet-radio

channel must have provisions for congestion avoidance. There are two

straightforward ways to cope with this. The first is a static measure of node

congestion based on the number of links in the network graph incident at each

node. This number is computed by the wiretap routine and stored in the node

table as it adds entries to the link table.


The second, not yet implemented, is a dynamic measure of node congestion which

tallies the number of link references during the most recent time interval (of

specified length). The current plan was suggested by the reachability

mechanism used in the ARPANET and the Exterior Gateway Protocol. An eight-bit

shift register for each node is shifted in the direction from high-order to

low-order bits, with zero-bits preceeding the high-order bit, at the rate of

one shift every ten seconds. If during the preceeding ten-second period a

header with a path involving that node is found, the high-order bit of the

register is set to one. When a path is calculated the number of one-bits in

the register is totalled and used as a measure of dynamic node congestion.

Thus, the time interval specified is 80 seconds, which is believed appropriate

for the AX.25 channel dynamics.


Factors and Weights


The data items produced by the wiretap routine are processed to produce a set

of factors that can be used by the routing routine to develop optimal routes.

In order to insure a stable and reliable convergence as the routing algorithm

constructs and discards candidate paths leading to these routes, the factor

computations should have the following properties:


1. All factors should be positive, monotone functions which increase in value

   as system performance degrades from optimal.


1. The criteria used to estimate link factors should be symmetric; that is,

   their values should not depend on the particular direction the link is

   used.


2. The criteria used to estimate node factors should not depend on the

   particular links that traffic enters or leaves the node.


Each factor is associated with a weight assignment which reflects the

importance of the factor in the total path calculation, with the larger values

indicating greater importance. The weighted sum of factors is thus a metric

and represents the quantity to be minimized in the routing computation.

Obviously, the success of this method depends on cleverly (i.e.

experimentally) determined factor computations and weight assignments. 


The particular choices used in the prototype implementation should be

considered educated first guesses that might be changed, perhaps in dramatic

ways, in later implementations. Nevertheless, the operation of the algorithm

in finding optimum routes over all choices in factor computations and weights

is unchanged. Recall that the wiretap routine generates data items for each

node and link heard and saves them in the node and link tables. These items

are processed by the routing routine to generate the factors shown below in

Table 1 and Table 2.


Factor Weight Name How Determined

----------------------------------------------------------------

f0 30 hop 1 for each link

f1 15 unverified 1 if not heard in either direction

f2 5 non-reciprocal 1 if not heard in both directions

f3 5 unsynchronized 1 if no I or S frame


Table 1. Link Factors


Factor Weight Name How Determined

----------------------------------------------------------------

f4 5 complexity 1 for each incident link

f5 5 congestion (see text)


Table 2. Node Factors


With regard to link factors, the "hop" factor is assigned as one for each link

and represents the bias found in other routing algorithms of this type. The

intent is that the routing mechanism degenerate to minimum-hop in the absence

of any other information. The "unverified" factor is assigned as one if the

heard bit is not set for either direction and zero otherwise, while the

"non-reciprocal" factor is assigned as one if the heard bit is not set for

both directions. The "unsynchronized" factor is assigned as one if the

synchronized bit is not set (no I or S frames observed in either direction).


With regard to node factors, the "complexity" factor is computed as the number

of links heard on the direction to the node, while the "congestion" factor

(not yet implemented) is to be computed as the number of intervals in the

eight ten-second intervals preceding the time of observation in which a frame

was transmitted to or through the node. For the purposes of path-weight

calculations, both of these factors are taken as zero for the endpoint nodes,

since their contribution to any path would be the same.


The Routing Routine


The dynamic data base built by the wiretap routine is used by the routing

routine to compute routes as required. Ordinarily, this needs to be done only

when the first frame to a new destination is sent and at intervals thereafter,

with the intervals perhaps modulated by retry count together with congestion

thresholds, etc. The technique used is a variation of the shortest-path-first

algorithm used in the ARPANET and elsewhere. It operates by constructing a set

of candidate paths on the network graph, each assigned the weighted sum of the

node and link factors along the path. Construction continues until all of the

minimum-weight complete paths are found (each of the same minimum weight),

which are the optimum routes.


There are a number of algorithms to determine the mimimum-weight path on a

graph between two nodes with given metric. The prototype implementation

operates using a dynamic list of entries derived from the link table. Each

list entry includes the from-NID and to-NID of a link in the path, along with

the current accumulated path weight from the from-NID to the final destination

NID of the path.


The algorithm starts with an empty list and the final destination NID. It

scans the link table for all links with either to-NID or from-NID matching

the final destination NID, updates the path weights based on the link factors

and node factors of the to-NIDs and adds them to the list. Next, the algorithm

selects the first entry in the list and scans the node table again for all

links with from-NID matching the to-NID of this entry, updating the path

weights as it proceeds. The algorithm coontinues to select succeeding entries

and scan the link table until no further entries remain to be processed. In

order to prevent a size explosion in the list, duplicates are suppressed along

with potential loops (new entries with a from-NID matching the to-NID of an

existing entry).


If the Wiretap station NID is found in the from-NID of a link to be added to

the list a complete path has been found. The algorithm remembers the minimum

path weight of all complete paths found as it proceeds. If the accumulated

path weight found on any subsequent path exceeds this, the path is abandoned

and no further list entries made for it. At the completion of processing the

minimum-weight complete paths have been determined with the first one

found identified as the optimum route. However, the path must be reversed,

since it was constructed backwards starting at the destination. At

the same time the callsigns can be extracted from the node table to build the

TAPR-1 command line.


Some idea of the time and space complexity of the routing routine can be

determined from the observation that the example below with 42 nodes and 46

links requires 27 list entries, each of which requires a scan of up to 46

links and a search (for duplicates and loops) of up to 27 list entries, and is

thus roughly linear in the number of links and quadratic in the number of

hops. The number of links is roughly somewhere between linear and quadratic in

the number of nodes, so that processing resources can become strained if the

number of nodes grows very large. The prototype implementation requires about

283 milliseconds on an LSI-11/73 to calculate the routes to all 42 nodes.


An Example


An example will illustrate how Wiretap constructs optimum routes given

candidate node and link tables. The candidate tables resulted from a scenario

monitoring normal traffic on the 145.01-MHz AX.25 packet-radio channel in the

Washington, DC, area on a weekend evening. The node and link tables

illustrated below give an idea of what the constructed data base looks like,

as well as provide the basis for the example.


Figure 1 illustrates a candidate node table showing the node ID (NID),

callsign and related information for each node in the order collected. The

Route field contains the digipeater route, as a string of NIDs, on a

minimum-weight path to that station, except for the last one, which is the

station NID itself. The absence of a route string indicates the station is

directly reachable without the assistance of a digipeater. The Wgt field shows

the total path weight of the route string shown, while the Links field

contains the complexity factor f5. The contents of the remaining fields can be

ignored. Note that the first four entries of the table are wired; that is,

they were initialized with defaults before Wiretap was started.


NID Callsign IP Address Flags Links Last Rec    Wgt   Route

-----------------------------------------------------------------------

0   W3HCF    [128.4.1.1] 000 14 00:00:00    0   1

1   WB4JFI-5 [128.4.1.2] 006 15 16:37:56    40  

2   W4HCP    [128.4.1.3] 000 0 00:00:00    0   1

3   WD5DBC    [128.4.1.4] 000 0 00:00:00    0   1

4   DPTRID    [0.0.0.0] 000 1 00:00:00    155   1

5   K4KMC    [0.0.0.0] 007 0 14:46:39    40  

6   WD4BAV    [0.0.0.0] 000 1 00:00:00    115   5 7

7   K4ARO-1  [0.0.0.0] 006 1 14:46:39    75   5

8   WB2RVX    [0.0.0.0] 007 3 16:25:42    85   18

9   W3IWI    [0.0.0.0] 007 6 16:37:44    40  

10   WB4APR-6 [0.0.0.0] 007 9 16:25:45    40  

11   KB5ZU    [0.0.0.0] 000 1 00:00:00    170   1

12   WB6RQN    [0.0.0.0] 003 0 16:33:17    40  

13   BEACON    [0.0.0.0] 000 3 00:00:00    80   16

14   KA4USE-1 [0.0.0.0] 007 8 15:57:59    40  

15   MAIL      [0.0.0.0] 000 1 00:00:00    125   10

16   WA4TSC    [0.0.0.0] 003 0 15:21:45    40  

17   CQ        [0.0.0.0] 000 1 00:00:00    80   5

18   KS3Q      [0.0.0.0] 007 2 16:25:47    40  

19   WB2MNF    [0.0.0.0] 006 2 15:05:05    120   10

20   KC2TN    [0.0.0.0] 007 3 15:05:05    85   18

21   AK3P      [0.0.0.0] 007 1 14:00:07    130   24 22

22   AK3P-5    [0.0.0.0] 006 4 14:00:07    80   24

23   KC3BN    [0.0.0.0] 007 2 05:42:41    80   24

24   WA3KXG-6 [0.0.0.0] 007 2 05:42:41    40  

25   KA4USE    [0.0.0.0] 003 0 15:57:57    115   14

26   TEST      [0.0.0.0] 000 1 00:00:00    110   9

27   K4NGC    [0.0.0.0] 007 0 15:14:51    40  

28   KA3KIW    [0.0.0.0] 007 1 11:39:26    85   29

29   KA3DBK    [0.0.0.0] 007 2 16:21:08    40  

30   K3SLV    [0.0.0.0] 007 1 13:17:19    40  

31   W3HCE    [0.0.0.0] 000 3 00:00:00    80   30

32   W3VH      [0.0.0.0] 007 0 12:49:21    40  

33   KE4TZ    [0.0.0.0] 003 1 13:11:27    90   29

34   WA4QNO    [0.0.0.0] 000 1 00:00:00    165   5 7 35

35   K4UMI-5  [0.0.0.0] 002 1 14:43:26    120   5 7

36   WB4FJI-5 [0.0.0.0] 002 1 14:45:41    80   27

37   WA4SZK    [0.0.0.0] 000 1 00:00:00    210   5 7 38 39

38   K4LKQ-1  [0.0.0.0] 002 1 14:46:39    120   5 7

39   W4ULH-1  [0.0.0.0] 002 1 14:46:39    165   5 7 38

40   WB4FQR-4 [0.0.0.0] 006 1 15:05:25    75   27

41   N4SN      [0.0.0.0] 007 0 15:47:25    145   1

42   KX3C      [0.0.0.0] 002 2 16:21:08    40  


Figure 1. Candidate Node Table


Figure 2 illustrates a candidate node table showing the from-NID, to-NID and

associated information for each link in the order collected. In the Flags

field, which is in octal format, bit 1 (numbering from the rightmost bit,

which is bit 0) is the heard bit, bit 2 the synchronized bit and bit 7 the

reciprocal bit. The remaining bits and fields can be ignored.


From To Flags Age From To Flags Age

--------------------------- ---------------------------

1 0 002 3 1 4 002 3

5 0 002 104 5 7 007 104

7 6 006 255 10 0 002 19

8 10 207 15 10 9 207 43

9 1 207 4 1 11 000 41

12 1 003 8 1 14 206 8

14 13 003 8 14 0 002 40

1 10 002 4 10 15 002 4

10 13 002 57 12 0 002 237

16 0 002 72 16 13 003 72

5 17 003 255 18 0 002 15

18 10 207 15 10 20 006 87

20 19 207 87 18 9 003 255

19 10 006 87 21 22 207 146

22 10 206 146 10 21 004 255

24 0 002 255 23 22 007 255

22 24 206 255 24 23 207 255

23 9 006 255 9 22 006 146

25 14 203 40 18 1 003 15

9 26 002 255 9 8 006 43

27 1 207 78 27 0 002 79

29 0 002 19 28 29 007 255

29 1 207 62 1 28 006 255

30 0 002 185 30 31 007 185

32 0 002 211 32 1 207 211

29 18 207 72 33 29 003 191

29 14 202 191 14 33 002 196

18 20 203 157 18 8 203 158

9 0 002 152 5 10 003 109

10 31 002 109 5 1 003 109

5 31 003 108 5 30 003 108

7 35 002 107 35 34 002 107

27 36 003 104 36 9 002 104

27 14 207 81 14 9 006 40

7 38 002 104 38 39 002 104

39 37 002 104 27 40 007 87

40 1 206 83 41 1 207 49

29 42 207 19 42 0 002 19


Figure 2. Candidate Link Table


The following example shows how Wiretap operates to compute the optimum route

with respect to the factor computations and weights previously described. The

example also shows how the procedure reacts to congested nodes by routing

around them.


The route to be computed involves the Wiretap station W3HCF (NID 0) and

station AK3P (NID 21). As it turns out, the latter is not direclty reachable

from W3HCF, but is indirectly reachable via other stations, including W3IWI

(NID 9), WB4APR-6 (NID 10), AK3P-5 (NID 22) and WA3KXG-6 (NID 24). Some

possible paths that might be considered include those in the following

diagrams (the NID is shown above the node and the complexity factor below):


       (0)     (10)    (21)

(1) o-------o-------o

0 9 0


       (0)     (24)    (22)    (21)

(2) o-------o-------o-------o

0 2 4 0


       (0)     (9)     (22)    (21)

(3) o-------o-------o-------o

0 6 4 0


A minimum-hop algorithm would chose the first path (1) as the optimum on the

basis that it has the least number of hops; however, node 10 is a very busy

digipeater and is often congested, as suggested by the complexity factor of 9.

The other two paths (2) and (3) are one hop longer, but have lower complexity

factors. Actually, the choice can go either way depending upon the link

factors, which are not shown in the diagrams.


Following is the result of a step-by-step analysis of the routing algorithm as

it constructs the optimum route. The contents of the list used by this

algorithm are shown at each step along with the factors used to calculate the

path weight. The Incr field shows the incremental weight computed for the

entry, while the Total field shows the accumulated total path weight. Only the

From, To and Total fields are actually stored in the list.


First, the algorithm scans the link table for links leading to the destination

21, which results in two entries in the list:


From To f0 f1 f2 f3 f4 Incr Total

---------------------------------------------------------------------

22 21 30 0 0 0 0 30 30

10 21 30 15 5 0 0 50 50


Since the Wiretap station 0 is not found in the From field, the link table is

scanned again for links leading to 22, which causes the following entries to

be added to the list:


10 22 30 0 0 0 20 50 80

23 22 30 0 5 0 20 55 85

24 22 30 0 0 0 20 50 80

9 22 30 0 5 0 20 55 85


The link table is scanned again for links leading to 10, which causes the

following entries to be added:


0 10 30 0 5 5 45 85 135

8 10 30 0 0 0 45 75 125

9 10 30 0 0 0 45 75 125

1 10 30 0 5 5 45 85 135

15 10 30 0 5 5 45 85 135

13 10 30 0 5 5 45 85 135

18 10 30 0 0 0 45 75 125

20 10 30 0 5 0 45 80 130

19 10 30 0 5 0 45 80 130

5 10 30 0 5 5 45 85 135

31 10 30 0 5 5 45 85 135


The result is a complete path of total weight 135, which is up to this point

the minimum-weight complete path. However, the algorithm may yet find a

complete path of less weight. The next entry in the list is 10, which has

already been processed, so the algorithm tries the next entry 23, which has

not been processed, and then entry 24 after that, which results in the

following additions to the list:


9 23 30 0 5 0 10 45 110

24 23 30 0 0 0 10 40 95

0 24 30 0 5 5 10 50 130


Another complete path has been found, this one of total path weight 130, which

is now the minimum of all found so far. Continuing, the algorithm scans the

link table for links leading to 9 and adds the following:


1 9 30 0 0 0 30 60 145

18 9 30 0 5 5 30 70 155

26 9 30 0 5 5 30 70 155

8 9 30 0 0 5 30 65 150

0 9 30 0 5 5 30 70 155

36 9 30 0 5 5 30 70 155

14 9 30 0 0 5 30 70 155


All of these paths have total weights greater than 130 and thus can never lead

to a complete path of weight less than that. Inspection of all remaining

entries in the list show that none of them can lead to a complete path of

weight less than 130, so the algorithm terminates at this point with the

declaration that the (reversed) optimum route is (2) in the diagram above. It

remains to be shown, however, that this route is indeed superior to the

minimum-hop route, but this can be determined only by experiment.


Data Base Housekeeping


As apparent from the example, Wiretap tends to pick up a good deal of what

might be called routing trash on the channel. It can happen that a station may

call any other station whatsoever, with the result that Wiretap may pick this

up and add speculative links to the data base. In practice, this happens

reasonably often as operators try various heuristic routes to stations that

may be shut down, busy or blocked by congestion. Nevertheless since Wiretap

operates entirely by passive monitoring, speculative links may represent the

principal means of discovery of new paths.


The number of speculative links can be expected to grow without limit as the

Wiretap station continues to monitor the channel. Eventually some sort of

garbage collection will be required, possibly based upon an activity timer.

The prototype implementation includes in every link table entry an activity

timer represented as a counter that is incremented once each minute and reset

to zero when the link is found in a monitor header. The intent is that, should

this counter exceed a threshold, say fifteen minutes, and the link is not

marked heard on either direction or synchronized, the link should be purged

from the data base. If this results in an isolated node; that is, one not

represented by any to-NID or from-NID in the link table, the node is purged as

well.


It is possible that a more agressive purging policy may be required for

exceptionally busy channels, especially if operation using active probes or

third-party routing is implemented. An effective way to manage this is on the

basis of the link factors, their weights and the activity timers, with the

rule that, among links with the highest weighted sum of link factors, the one

not heard for the longest time should be the first one purged from the data

base. Other heuristics may be useful as well.


Summary and Directions for Further Development


Wiretap represents an initial experiment and evaluation of the effectiveness

of passive monitoring in the management of the packet-radio channel. While

the results of initial experiments have been encouraging, considerable work

needs to be done in the optimization of factor computations and weight

assignments. For this to be done effectively, some experience needs to be

gained in the day-to-day operation of the prototype system during which

various combinations of weight assignments can be tried.


The next step in the evolution towards a fully distributed routing algorithm

is the introduction of active probing techniques. This should considerably

improve the capability to discover new paths, as well as to fine-tune

existing ones. It should be possible to implement an active probing mechanism

while maintaining compatibility with the passive-only Wiretap, as well as

maintaining compatibilty with other stations using no routing algorithms at

all.


A particularly difficult area for any routing algorithm is in its detection

and reponse to congestion. Some hints on how the existing Wiretap mechanism

can be improved are indicated in the text. Additional work, especially with

respect to the hidden-station problem, is necessary.


It is quite likely that the most effective application of routing algorithms

in general will be at the local-area digipeater sites. One reason for this is

that these stations may have off-channel trunking facilities that connect

different areas and may exchange wide-area routing information via these

facilities. The routing information collected by the local-area Wiretap

stations could then be exchanged directly with the wide-area sites.


Comments

Popular posts from this blog

WHAT THE WATCH TOWER BIBLE AND TRACT SOCIETY OF PENNSYLVANIA HAD TO SAY ABOUT WHAT WERE SUPPOSED TO HAVE HAPPENED in 1874

Uninterruptable Power Source (UPS) FAQ

Blade Runner FAQ