From 87eeb045b0400d149bfd69e1862b849fdc3abd52 Mon Sep 17 00:00:00 2001 From: Thomas Kolb Date: Mon, 22 Jul 2024 21:40:54 +0200 Subject: [PATCH] docs: define an Empty Frame and its usage --- doc/hamnet70.adoc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/hamnet70.adoc b/doc/hamnet70.adoc index 3b19cc9..35cb44c 100644 --- a/doc/hamnet70.adoc +++ b/doc/hamnet70.adoc @@ -197,6 +197,10 @@ The total Link Layer Header length is therefore at least 6 byte and at most 18 b | Connection management | Includes functions such as establishing (or denying) new connections or closing open connections. +| `010` +| Empty frame +| Used for simple acknowledgements or transmission requests. This frame itself is not acknowledged. + | `100` | Connectionless frame | A data packet that is sent outside of a connection. @@ -221,10 +225,30 @@ The _RX sequence number_ is the packet number the sending station expects to see Example: The two stations A and B just connected and expect to see sequence number 0 from each other. Station A transmits a burst with three packets: P0, P1, P2. Station B decodes packet P0 and increases the expected number to 1. P1 is not decoded due to noise and therefore lost. P2 is again decoded, but is dropped because its sequence number is 2 and not the expected 1. In its transmission cycle, station B tells station A that it expects P1 next. Station A therefore _goes back to_ P1 in its transmission queue and starts transmitting all packets after P1 again. +If a station does not have anything to transmit, it shall transmit an _Empty Frame_ to acknowledge the data from the other side. + As the sequence numbers in Hamnet70 have 4 bits, up to 15 packets can be transmitted in a burst before the numbers become ambiguous. Due to the long possible bursts, this system can achieve high throughput if there is low packet loss. However, it can also become very slow if many packets are lost because all packets after the first error have to be repeated. Therefore it might be a good idea to adjust the burst length depending on the packet loss and send smaller bursts if only few packets go through. +=== Frame Definitions + +==== Empty Frame + +The Empty Frame does not contain any data and therefore only consists of the header and the CRC. + +It is used in two cases: + +- The digipeater requests a transmission from a client, but does not have any data or management frames queued. + In this case the _TX Request_ field is set to 1. +- A station acknowledges frames from another station when it does not have any data to transmit. + Here, _TX Request_ is set to 0. + +Empty Frames are not acknowledged. +They therefore do not have a _TX sequence number_; this field is reserved and should be set to zero. + +The _RX sequence number_ and all other header fields are used as usual. + === Ideas To be defined: