# Netstack3 Implementation Details

This document describes various implementation details that are confusing enough
to be worth calling out explicitly, and cannot naturally be documented in inline
code comments.

## Ethernet Frame Padding

Ethernet frames have a minimum payload length. In order to ensure that this
minimum is achieved, small payloads must sometimes be padded with zeroes. The
Ethernet header's EtherType field may sometimes be used to encode a length. If
this is the case, then the real length of the payload (not including the padding)
can be encoded in the EtherType, and so the receiver will know how many bytes of
the payload to pay attention to.

However, the EtherType field is sometimes used to indicate the type of the
encapsulated packet (e.g., IPv4, ARP, etc). In this case, it does not encode the
payload length. When this happens, the receiver must a) be able to parse a
payload whose length is longer than the length of the real encapsulated packet
and, b) be able to infer from the payload's header (e.g., the IPv4 header, the
ARP header, etc) how many bytes of the payload to parse, and how many to treat
as padding, and thus to ignore.

See for details:
- https://stackoverflow.com/a/35077070
- https://serverfault.com/a/510688
