0
I’ve been coding more on my rust SDR framework, and want
to improve my ability to send/receive data packets efficiently and
reliably.
There are two main ways I use learn to do this better: designing a new
protocol, and making the best implementation possible for an existing
one. This post is about refining the latter.
AX.25 and APRS
First a detour, or background.
AX.25 is the standard amateur radio data protocol. It’s mostly
an OSI layer 2-4 protocol, mashing the layers together into
one. Contrast this with IP, which just encapsulates the next layer.
Layer 3 (IP stack equivalent: IP itself) consists of the ability to
add, in addition to source and destination, a variable number of
intermediate repeaters. This allows limited source routing. In APRS
the repeaters are usually not named, but instead uses “virtual” hops
like WIDE1-1
.
Layer 4 (IP stack equivalent: TCP and UDP) allows both connected and
disconnected communication channels. In my experience connected AX.25
works better over slow simplex radio than TCP. If TCP was ever
optimized for high delay low bandwidth, it’s not anymore.
For the physical layer, there are three main “modems”:
-
300 baud bell 103, used Continue reading