craprniac/CRAPRNIAC Protocol.md
2025-04-26 21:37:58 -05:00

3.7 KiB

CRAPRNIAC: Completely Ridiculous Amateur Protocol for Radio Node IP Auto-Configuration

Status of this Memo

This document describes version 0.1a of CRAPRNIAC, a protocol designed to facilitate IP network bootstrapping over very slow amateur radio links (e.g., VHF AX.25 at 1200 baud). It is published for whatever unexpected practical utility it may have. Distribution of this memo is unlimited.

1. Introduction

Existing service discovery and dynamic host configuration protocols for TCP/IP networks are not ideal for bandwidth-constrained, high-latency, and lossy VHF packet radio environments. CRAPRNIAC addresses this by defining a join-and-configure protocol between a "base station" and one or more "client stations" that aims to cut the chatter.

The goal is to:

  • Minimize the number of packet exchanges required for a client to join a VHF packet network.
  • Allow manual or automatic IP configuration with a minimum of overhead.
  • Bring honor to you and your house.

2. Protocol Overview

CRAPRNIAC defines four primary message types:

Message Type Purpose
CRAP_BEACON Base station announces network availability.
CRAP_REQUEST Client requests to join the network.
CRAP_ACCEPT Base station assigns configuration to client.
CRAP_ACK Client acknowledges receipt and acceptance. (optional)

Messages are transmitted as plain ASCII text using simple pipe-separated (|) fields, allowing easy parsing by humans and computers alike.

3. Message Format

Each CRAPRNIAC message is a single text string with the following general format:

<PROTOCOL_VERSION>|<MESSAGE_TYPE>|<PAYLOAD_FIELDS...>

3.1 Example Messages

CRAP_BEACON

0.1|CRAP_BEACON|KI5QKX-10|HAMNET-HOUSTON

Fields:

  • Base Station Callsign
  • Network Name

CRAP_REQUEST

0.1|CRAP_REQUEST|N0CALL-7|HAMNET-HOUSTON

Fields:

  • Client Callsign
  • Network Name

CRAP_ACCEPT

0.1|CRAP_ACCEPT|N0CALL-7|HAMNET-HOUSTON|44.127.254.12/24|44.127.254.1|44.127.254.1|3600

Fields:

  • Client Callsign
  • Network Name
  • Assigned IP Address
  • Netmask
  • Gateway IP
  • DNS Server IP
  • Lease Time (seconds)

CRAP_ACK (optional)

0.1|CRAP_ACK|N0CALL-7|44.127.254.12|OK

Fields:

  • Client Callsign
  • Assigned IP Address
  • Status

4. Base Station Behavior

  1. Periodically transmit CRAP_BEACON.
  2. Upon receiving a CRAP_REQUEST, allocate an IP address.
  3. Respond with CRAP_ACCEPT containing IP configuration details.
  4. Optionally await CRAP_ACK.
  5. Maintain a list of active clients and lease expirations.

5. Client Behavior

  1. Listen for CRAP_BEACON transmissions.
  2. Send CRAP_REQUEST to desired base station.
  3. Receive and parse CRAP_ACCEPT.
  4. Configure network stack accordingly.
  5. Optionally send CRAP_ACK.
  6. Periodically rejoin if lease expires or connectivity is lost.

6. Design Considerations

  • Minimal Airtime Usage: Critical for low-bandwidth links.
  • Human-Readable: Easy troubleshooting with a dumb terminal.
  • Flexibility: Can extend in future versions with additional fields.
  • Backward Compatibility: Protocol version prefix allows for graceful upgrades.

7. Security Considerations

The S in CRAPRNIAC stands for Security!

8. Other Considerations

CRAPRNIAC will squat on whatever amateur frequencies operators choose.

9. Conclusion

CRAPRNIAC provides a starting point for connecting TCP/IP stacks over slow amateur radio links. By limiting the number and length of transmissions required for negotiation, it offers networking over VHF that works like it smells.

10. Further Development

Future enhancements may include optional mesh extensions self-organizing slowness.


Author: John Burwell Date: April 2025