[tcpdump-workers] Linktype allocation for ATSC link layer protocol
nickk at silicondust.com
Fri Mar 20 13:28:27 EDT 2020
After going to interop/test events and discussions with other engineers
in the field it looks like a lot of the junk in the ATSC ALP protocol
will never be used and can be ignored.
The protocol is defined in the ATSC A/330 standard.
1) Check the packet_type (first 3 bits of the packet). If the packet
type is 7 (MPEG2 transport stream) then report "MPEG2 transport stream"
and stop parsing. It is likely this packet type will never be used in
real-world use. Note that the fields that follow don't apply when the
packet type is 7 - all we can do is report the packet type and stop.
2) If the payload_configuration bit is 1 check the
If the segmentation_concatenation bit is 0 report that it is a
"segmented packet" and stop parsing. It is likely this mode will never
be used in real world use (the layer below this protocol does
If the segmentation_concatenation bit is 1 report that it is a
"concatenation packet" and stop parsing. It is likely this mode will
never be used in real world use.
3) If the payload_configuration bit is 0 then the packet is useful!
If header_mode is 0 then report the length and the packet_type. The
packet type will typically be IPv4 packet (packet_type = 0) where the
payload is a normal IPv4 packet.
The other possible packet type is a link layer signalling packet
(packet_type = 4). In this case there is an "Addition Header for
Signaling" header followed by a table. Note that the payload_length
tells you the table length - it does not include the "Addition Header
for Signaling" header length.
If header_mode is 1 then parse the single_packet_hdr().
If SIF flag is set then parse/skip sub_stream_identification() header.
If HEF flag is set the parse/skip header_extension() header.
At this point you look at the packet type, following the same logic as
header_mode 0 above.
More information about the tcpdump-workers