Federation over HAMNET¶
This page shows the sysop how to federate an instance over HAMNET, with no internet. At the end your instance mirrors its HAMNET peers, they mirror you, and an instance on both networks carries records between HAMNET and the internet.
HAMNET is an amateur IP network that is not on the internet. Stations reach it over RF links, and licensed hams
also reach it through HAMNET VPN access, such as HamCloud's 44.148.128.0/17. European HAMNET uses addresses from
44.128.0.0/10. 44Net is another thing: amateur address space (44.0.0.0/9 and
44.128.0.0/10) whose reachability from the internet is decided per subnet, through BGP, 44Net Connect or the
IPIP mesh. The two share address space, so an address never tells you which network it is on, and APRScaching
never guesses: you declare a HAMNET address, as a hamnet endpoint or an http:// peer
(HAMNET and 44Net Connect).
Before you start¶
- An instance with a HAMNET address routed to its box: an RF link, or HAMNET VPN access.
- A signing key (
FED_PRIVATE_KEY, Sign your feeds). - The HAMNET addresses of the instances you want to federate with, and a way to reach their sysops: on the air, by phone or in person.
- What runs without the internet, and what does not, is in HAMNET only.
Federate with a HAMNET peer¶
-
Declare your HAMNET address. Publish it as a
hamnetendpoint, so peers that learn your addresses try it:A HAMNET name works as well as an address. An instance that is on the internet too lists its
httpsaddress beside it (One instance, several addresses). -
Exchange addresses and fingerprints with the other sysop, over the air or by phone. Your key fingerprint is under Instance admin → Federation → Your key fingerprint.
-
Add the peer by its HAMNET address, either way:
- in
FED_PEERS, ashttp://<name or address>[:port]#<fingerprint>: it startstrustedonce its key matches (HAMNET peers in FED_PEERS); - under Instance admin → Federation → Add peer, as
http://<name or address>[:port]: compare the fingerprint the look-up shows, add it unvetted, then choose Trust.
- in
-
The other sysop adds you the same way.
The http:// scheme is your declaration that the peer is on HAMNET. Your instance dials it like a hamnet
endpoint: plain http with a 2-second timeout, so a pull moves on quickly when a route is down. Plain http
changes no trust, since every record is signed by its home instance.
Discovery over HAMNET¶
- Peer exchange works on HAMNET. A trusted HAMNET peer lists the instances it trusts with their
hamnetaddresses. Your instance lists them under Instance admin → Federation → Discovered, switched off and unvetted; Follow dials their HAMNET address (Discovery). - mDNS does not cross HAMNET. An announcement stays on its own network segment, so it finds a station on your LAN or hotspot, never one across a HAMNET link (Field discovery on a LAN).
- LAN addresses are never listed. A peer you reach on your own LAN is left out of your list, since no other instance can reach that address.
From HAMNET to the internet, and back¶
An instance on both networks bridges them. It follows its HAMNET peers at their hamnet addresses and its
internet peers at their https addresses, and passes on what it mirrored, each record as its
home instance signed it (FED_RESERVE, by default the records of instances it trusts).
flowchart LR
H1["HAMNET-only<br/>instance"]
BR["Instance on<br/>HAMNET and internet"]
I1["Internet<br/>instance"]
H1 <-->|pull over HAMNET| BR
BR <-->|pull over https| I1
- Records reach the other side. An internet instance that follows the bridge receives the records of the HAMNET-only instance through the bridge, and checks each against its home's key, which the bridge hands on. The same holds the other way round. A record crosses at most four instances (A hub passes its spokes' records on).
- Trust stays with each sysop. The internet instance shows the HAMNET-only instance as unvetted until its own sysop compares that instance's fingerprint and chooses Trust; it needs no route to HAMNET for that. The bridge lends no trust.
- The bridge passes on what it trusts. With
FED_RESERVE=trustedit passes on only the records of instances it trusts itself. Trust the HAMNET peers whose records should cross. - Find confirmation does not cross. An instance asks only peers it can dial. An internet instance cannot ask a HAMNET-only instance, and an origin known only through a hub is never asked (Which instances can answer).
What works over HAMNET¶
| Works | Does not work over plain http on HAMNET |
|---|---|
| Pull and notify between HAMNET peers, and the records passed on | Passkeys, device location for Tier B finds, the Web Serial and Web Bluetooth radio: they need https |
| Peer exchange with trusted HAMNET peers | Adding a peer by callsign, unless a DNS-over-HTTPS resolver on HAMNET reaches ARDC's name servers |
| Corroboration among HAMNET peers that reach each other | A registry located by FED_REGISTRY_DNS; set FED_REGISTRY to the signed registry document itself (its JSON), which needs no lookup |
| Sign-in by email link (a mail server on HAMNET) or the sysop's one-time link | mDNS across a HAMNET link |
The full list, with workarounds, is in HAMNET only.
Next¶
- Join the network: peers, trust and discovery.
- HAMNET only: what the instance does with no internet path.
- On-air stations: the rules for traffic that crosses amateur RF.