The Transmission of IP Over the Vertical Blanking Interval of a Television Signal
Extracted elements (24)
SLIP-style framing was chosen over alternatives because SLIP implementations are widely available (RFC 1055) and provide simple, well-understood packet delimiting for a serial data stream. The framing is explicitly identical to SLIP rather than a new protocol.
The CRC uses the MPEG-2 generator polynomial rather than the Ethernet CRC specifically to provide a final integrity check for datagrams that span FEC bundles or were not fully corrected by the FEC, providing an additional error-detection layer beyond FEC.
The FEC is specifically optimized for VBI data, where transmission errors fall into three categories: randomly distributed single-bit errors, loss of entire NABTS lines, and burst errors. The bundle-plus-suffix structure addresses all three types using a two-dimensional Galois field code over GF(2^8).
UDP/IP header compression is adapted from Van Jacobson's TCP/IP compression (RFC 1144) but cannot be identical because VBI transport is strictly unidirectional—there is no return channel for feedback or state synchronization.
NABTS is traditionally used on 525-line NTSC systems, while WST (World System Teletext) is used on 625-line PAL/SECAM systems. These are generalizations with exceptions; countries should be treated on an individual basis when deploying IPVBI.
NABTS packet addressing is not regulated or standardized. Care is required to avoid address collisions when multiple independent services share an insertion point, as NABTS data may be inserted at production, network redistribution, regional operator, or local operator stages.
On 525-line systems, Line 21 is reserved for closed captioning in some countries, reducing available VBI lines from 12 to 11. Certain lines on both 525-line and 625-line systems may be occupied by existing proprietary data or testing services, requiring IP to share or use only a subset of lines.
All datagrams belonging to a multi-fragment IP packet SHALL be sent with full (uncompressed) headers; only non-fragmented packets may use the compressed header format (MSB of compression key set to 1).
IP packets larger than 1500 octets MUST be fragmented before VBI transmission, and the client VBI interface MUST be able to receive full 1500-octet packet transmissions.
The first packet sent following 60 seconds of nonuse of a group address, or after compressed-header-only use, must use an uncompressed header. Client VBI interfaces should disregard compressed packets received 60 or more seconds after the last uncompressed packet for a given group address.
A 32-bit CRC using the MPEG-2 transport stream generator polynomial (ISO/IEC 13818-1) is appended to every schema 0x00 packet, covering schema byte, compression key, headers, and payload. Initial CRC state is 0xFFFFFFFF; this differs from the Ethernet CRC algorithm.
Header compression uses a group mechanism: uncompressed packets cache the full UDP/IP header keyed by group value (7-bit field). Subsequent compressed packets for the same group omit all header fields except IP Identification and UDP Checksum. Groups with identical bits are assumed to share all other UDP/IP header fields.
Schema 0x00 is the only schema defined by this document and must be supported by all receivers. It defines compression group-based UDP/IP header compression with a 1-byte compression key, with all other schemas reserved for future assignment via IANA.
SLIP-style framing uses END (0xC0) to delimit packets and ESC (0xDB) for byte stuffing: a data byte equal to END is replaced by ESC+0xDC; a data byte equal to ESC is replaced by ESC+0xDD. Each framed packet begins with a 1-byte (or 2-byte if MSB=1) schema field.
The Continuity Index is a Hamming-encoded byte incremented by one for each subsequent packet of a given Packet Address, cycling 0 to 15. The decoder uses it to detect lost packets during transmission.
The FEC scheme uses GF(2^8) with primitive element alpha=0x1D (00011101) and organizes a serial stream into 364-byte bundles of 14 data packets (26 bytes each) plus 2 FEC-only packets, forming a 16×28 array with horizontal and vertical codewords. It corrects single-byte errors and single- or double-byte erasures.
The IPVBI protocol stack layers from bottom to top: NTSC/other television signal, NABTS packetization, Forward Error Correction (FEC), SLIP-style framing, compressed UDP/IP headers, and application data. Each layer has no knowledge of the data it encapsulates.
The Packet Structure field (Hamming encoded) signals whether the data block is full or contains filler (bit 1), and the FEC suffix length (bits 6–7): D0 = data packet no filler, 8C = data packet with filler, A1 = FEC packet. Filler data is indicated by 0x15 followed by 0xEA bytes.
IANA registers new IPVBI schema numbers on a First Come First Served basis per RFC 2434. Registrants must provide a contact and brief description; schema 0x00 (UDP/IP with optional header compression) is defined by this document.
Because VBI delivery is a broadcast network, transmitted data is accessible to any receiver. Security is delegated entirely to other protocol layers—IPsec, TLS, or application-layer protocols—as no link-layer security mechanism is defined in this document.
In schema 0x00 compressed format, the packet consists of a 1-byte compression key (MSB=1), 2-byte IP Identification field, 2-byte UDP Checksum, up to 1472 bytes of payload, and a 32-bit CRC. All other UDP/IP header fields are reconstructed from the stored uncompressed header for the same group.
In schema 0x00 uncompressed format, the packet consists of a 1-byte compression key (MSB=0), 20-byte IP header, 8-byte UDP header, up to 1472 bytes of payload, and a 32-bit CRC. The compression key's lower 7 bits identify the compression group.
The NABTS packet is a 36-byte structure encoded onto one horizontal scan line: 2-byte clock sync, 1-byte byte sync, 3-byte Hamming-encoded packet address (4096 possible addresses), 1-byte Hamming-encoded continuity index (0–15), 1-byte Hamming-encoded packet structure flags, 26-byte data block, and 2- or 28-byte FEC suffix.
The schema field occupies 1 byte at the start of every framed packet; if the most significant bit is '1', the schema field extends to 2 bytes, providing 32768 additional schema values. Schema 0x00 (UDP/IP with optional header compression) is the only schema defined by this document.