[aprssig] WIDEn-N 'Decay Sequence'

Jason Winningham jdw at eng.uah.edu
Mon Jun 19 10:43:26 CDT 2006

On Jun 19, 2006, at 9:48 AM, Anders Green wrote:

> Which brings me to another generic question. I'm guessing
> that the set up for the digipeaters is a string like
> "RELAY,WIDE,WIDE1-1" (note that I'm not saying that this
> is a _recommended_ setup string *grin*) So does the
> digipeater just parse the packet, and if it contains
> one of those strings, rebroadcast it?

Let's back up a bit.  I don't know what you know about networking in 
general, or AX.25 packet in particular, so forgive me if you already 
know this.

An AX.25 address consists of 6 characters (26 uppercase alpha and 10 
digits) plus a secondary station identifier or SSID value between 0 and 

AX.25 (aka packet) is a source routed protocol.  This means that the 
route that a packet takes through the network is determined at the 
packet source (i.e. the transmitting station).  In AX.25 terminology 
this route is called the path.  This is very different from the normal 
way of doing things, where the source station only says "I want to get 
to <destination>" and hands the packet off to the network (routers, 
etc) to do the actual work of getting there.

So, if I'm operating station NEAR and I want to get to station FAR, and 
I know there are two stations A and B in between, the packet I transmit 
would have a path  "A,B,FAR".  This means I'm really transmitting to 
station A, who I'm asking to forward it to station B who I'm asking to 
forward to station FAR.  Stations A and B are operating as "digital 
repeaters", usually abbreviated digipeater or digi.  Station A is the 
_only_ station that will do anything with my packet upon receiving it, 
so if A is down I'm out of luck.  Even if B heard it, B won't respond 
because it isn't next in the path.  Each station that repeats a packet 
flags its callsign to indicate that it has repeated the packet, so my 
example path "A,B,FAR" will have a "has been digipeated" flag set; this 
is usually represented with an "*", so the path will look like 
"A*,B,FAR" when it leaves A and "A*,B*,FAR" when it leaves B.

Let's add generic names called aliases:  if I don't know the name of 
digis A or B, but we all decide that every digi will answer to the 
alias RELAY in addition to its actual name, I could use a path of 
"RELAY,RELAY,FAR" or, is FAR is also aliased, "RELAY,RELAY,RELAY".  
Presto, welcome to the APRS network circa several years ago.

There are two _big_ problems with this: one, messages will ping-pong 
back and forth between digis generating large amounts of excess 
traffic, and two, there is nothing but the knowledge of the operator to 
prevent a packet with a path of 
saturating the network.

Along comes the concepts of n-N and duplicate suppression.  A 
particular alias could be treated in a special way, such that its SSID 
gets decremented and checked to make sure it is > 0 before it is 
transmitted.  This special alias uses a digit in the last position of 
the station name to indicate how many hops it requests, so I would use 
"WIDE2-2" to indicate that I am asking for 2 hops.  The first digi 
would decrement the SSID (the last 2), come up with a result > 0 and 
repeat the packet, substituting "WIDE2-1" in the path where I 
originally placed "WIDE2-2". To prevent the ping-pong effect, a digi 
will keep a history of recently transmitted packets, and not repeat 
them a second time.

This "original n-N" concept's biggest contribution to the improvement 
of the network was the elimination of the duplicate packets 
ping-ponging around the network chewing up bandwidth.

As the network grew it became apparent that more controls to prevent 
excess traffic were needed, hence various versions of the "new n-N 
paradigm" came about basically to limit the number of hops that a 
packet could request, so that, for example, a WIDE5-5 path wouldn't 
cause so much trouble in extremely busy APRS networks like southern 
California or the DC area.  The generally accepted maximum number of 
hops is 2 (or 3 in rural/low density areas) in the US.

Another issue is the idea of a "fill-in digi" to help low-powered 
mobile units be heard in a busy network.  These devices shouldn't 
respond to every packet, only if they are the first digi to hear a 
packet.  WIDE1-1 is a single hop path element that will be acted upon 
by a fill-in digi or by a "big" (high-site, wide area coverage, etc) 

So, the net result is the 2 hop path recommendation of 
"WIDE1-1,WIDE2-1" for a mobile station - either a fill-in digi or a big 
digi will repeat the packet if it is the first station to hear the 
packet, and big digis will repeat the packet once more after that.  We 
use a pre-decremented WIDE2-1 instead of WIDE1-1 in the second position 
so that the fill-in digis will not repeat it.  The equivalent mobile 
three hop path would be "WIDE1-1,WIDE2-2".

Likewise, a one or two hop path for a fixed station would be "WIDE2-1" 
or WIDE2-2", respectively, because the assumption is that a fixed 
station doesn't need help getting in to the network like a lower 
powered mobile station does.

There's a lot of stuff I left out, like callsign substitution, path 
tracing, the tricks that newN-n plays to limit hop counts (to prevent 
you from getting 5 hops with WIDE5-5), and preemptive digipeating (ala 
Digi_Ned), but hopefully this'll give you a place to start.


More information about the aprssig mailing list