Skip to content

APRS Digipeaters

APRS Digipeater Background

APRS was designed as a new way of playing with packet radio. Instead of one to one communications Bob Bruninga created APRS as a one to many protocol. With that concept, new ways of getting the packets out beyond simplex range of the station was required. To fulfill the "Automatic" portion of the acronym, the operation of the station needed to be able to work without user intervention.

With the existing packet network, each station had a unique identifier, be it a callsign, or a unique alias. This wouldn't work for APRS if the station were mobile, and moving about the network. The idea of using a single generic alias that would be implemented in every digipeater solved this issue. If every digipeater responded to WIDE, then a station using an outgoing path of WIDE would get digipeated as it moved between digipeater coverage areas.

This works fine until you use a path with 3 or more of the same alias in a row. Running WIDE,WIDE,WIDE with just 2 digipeaters creates a ping-pong effect, where digi1 acts on the first WIDE, digi2 acts on the second WIDE, and the digi1 acts on the third WIDE. Adding more digipeaters compounds the issue. With just 3 digipeaters that can hear each other, you will end up with 27 digipeats of the packet.

UIFLOOD

In an effort to solve the ping-pong issue Kantronics implemented a routine in the KPC-3 line of TNCs. The algorithm in the KPC-3 was called UIFLOOD. This allows the operator to set up an alias that has a numbered suffix in the format ALIASn-N.

Each time a digipeater acts upon the packet, the 'N' value is decremented until 'N' equals 0. A checksum of the packet callsign and payload is kept by the digipeater to prevent redundant transmission.

The generic alias of WIDE was again used as the base alias for this routine, leading to some confusion when people talk about a digipeater path of WIDE versus WIDEn-N.

UITRACE

UITRACE is a close cousin to UIFLOOD, except that each digipeater that the packet passes through inserts its own callsign into the path portion of the packet, allowing one to observe the path the packet traveled through the digipeater network.

New n-N Paradigm

As APRS developed, a number of changes were made... RELAY, WIDE, and TRACE aliases came and went. New WIDEn-N and TRACEn-N routines were added. Eventually RELAY, WIDE, TRACE, and TRACEn-N were dropped, and the New Paradigm settings were introduced. The alias used became WIDEn-N, or optionally SSn-N (state-based).

APRS Packet Density

In early APRS, long paths were tolerated due to low usage. As APRS popularity grew, reliability decreased. Packet congestion mitigation was attempted using UIDIGI alias traps such as WIDE4-4, WIDE5-5, etc. This allows a single hop and replaces the path with the digipeater callsign.

However, it’s an imperfect solution. Combinations not trapped still go through. A more robust mechanism is needed.

FLOODING and TRAPS

For this discussion, UIFLOOD and UITRACE behave similarly—decrementing 'N'.

Without UIDIGI Traps

Initial Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop
WIDE7-7 WIDE7-6 WIDE7-5 WIDE7-4 WIDE7-3 WIDE7-2 WIDE7-1 WIDE7*
WIDE6-6 WIDE6-5 WIDE6-4 WIDE6-3 WIDE6-2 WIDE6-1 WIDE6*
WIDE5-5 WIDE5-4 WIDE5-3 WIDE5-2 WIDE5-1 WIDE5*
WIDE4-4 WIDE4-3 WIDE4-2 WIDE4-1 WIDE4*
WIDE3-3 WIDE3-2 WIDE3-1 WIDE3*
WIDE2-2 WIDE2-1 WIDE2*
WIDE1-1 WIDE1*

With UIDIGI Traps (WIDE4-4 and higher)

Initial Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop
WIDE7-7 DIGINAME*
WIDE6-6 DIGINAME*
WIDE5-5 DIGINAME*
WIDE4-4 DIGINAME*
WIDE3-3 WIDE3-2 WIDE3-1 WIDE3*
WIDE2-2 WIDE2-1 WIDE2*
WIDE1-1 WIDE1*

Malformed or Non-Standard n-N

Initial Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop Next Hop
WIDE7-7 DIGINAME*
WIDE6-7 WIDE6-6 DIGINAME*
WIDE5-7 WIDE5-6 WIDE5-5 DIGINAME*
WIDE4-7 WIDE4-6 WIDE4-5 WIDE4-4 DIGINAME*
WIDE3-7 WIDE3-6 WIDE3-5 WIDE3-4 WIDE3-3 WIDE3-2 WIDE3-1 WIDE3*
WIDE2-7 WIDE2-6 WIDE2-5 WIDE2-4 WIDE2-3 WIDE2-2 WIDE2-1 WIDE2*
WIDE1-7 WIDE1-6 WIDE1-5 WIDE1-4 WIDE1-3 WIDE1-2 WIDE1-1 WIDE1*