ASTERIX CAT-240 Protocol For Video Data
- 1 Overview
- 1.1 Introduction
- 1.2 Field Representation
- 2 Data Transmission
- 3 Message Structure
- 3.1 Overview
- 3.2 Message Data Block
- 3.2.1 Feature Specifications
- 3.3 Video Header
- 3.3.1 Data Source Identifier
- 3.3.2 Start & End Azimuth
- 3.3.3 Cell Duration
- 3.3.4 Resolution
- 3.3.5 Data Size In Bins
- 4 Video Data
- 4.1.1 Video Data Block Size
- 4.2 Time-Of-Day
- 4.3 Special Purpose Field
- 4.3.1 Radar Health Status
- 5 Endianness & Field Layout
- 6 Example Video Message
- 6.1 Message Block
- 6.2 Video Header
- 6.3 Special Purpose Field
- 7 Packet Fragmentation
Overview
Introduction
The Eurocontrol Standard Document for Surveillance Data Exchange, Category 240 (henceforth referred to as “CAT-240”) describes the application of ASTERIX to the transmission of rotating radar video.
This document describes the Navtech Radar implementation of CAT-240. It is not intended to replace CAT-240; rather it describes how the standard has been implemented and provides clarification, including details of any assumptions made, any limitations that apply and any Navtech-specific extensions that are provided. It is recommended this document is read in conjunction with CAT-240.
This document is applicable to the development of a client application that receives network radar video in ASTERIX CAT-240 format from a Navtech radar system.
Field Representation
The CAT-240 standard defines messaging fields in terms of (groups of) octets; and, in the case of individual bits, field reference numbers. Such definitions are independent of any particular implementation.
For this document, field layouts are defined in terms more consistent with, and more familiar to, common programming languages such as C or C++.
Message structures are always defined in declaration order. That is, in ascending address order.
Fields sizes are specified using Posix type aliases.
Where multi-byte fields are depicted, the least-significant byte is shown on the right; the most-significant byte is shown on the left.
Where individual bits in a field are significant (that is, bit field types) bit numbers are specified from zero. The least significant bit is always depicted on the right; the most-significant bit on the right.
Note, the depiction of multi-byte fields does not imply endianness. See section 2.3 for more details on byte ordering.
Data Transmission
Network Transport
CAT-240 messages are sent as UDP network packets.
The radar may unicast UDP packets to a single client, or multicast UDP packets for receipt by multiple clients.
The IP address and port used by the radar to send CAT-240 message are configurable options. By default, the following address and port are used:
IP address | TBD |
Port | TBD |
Table 1 - Default IP address and port for CAT-240 data
Supported Message Types
CAT-240 defines two message types:
Video summary messages
Video messages
Navtech only supports Video messages. This document therefore only specifies Video message requirements.
Video summary messages may be supported in future releases.
Data Framing & Rates
Video data from a Navtech radar is sent on an azimuth-by-azimuth basis. The data for each azimuth is a sequence of bins (range cells), each representing a power level at a distance from the radar. The first value represents the bin closest to the radar.
Each CAT-240 message encapsulates a single azimuth’s worth of data.
The maximum number of bins for each azimuth is a configurable property of the radar.
Radar data may be contoured, meaning the number of bins in each message could change on an azimuth-by-azimuth basis.
The number of CAT-240 messages generated is a factor of:
The number of azimuths sampled per rotation
The rotation rate of the radar
The number of azimuths sampled for each rotation and the rotation rate of the radar depend on the radar model.
For example, a radar may generate 400 azimuths per rotation, and rotate at 4Hz, giving a message rate (or Packet Rate Frequency, PRF) of 1600 messages/sec
Byte Ordering
All data is sent as Network (that is, Big) endian.
Clients may therefore have to performing byte-swapping on multi-byte words to retrieve data correctly.
Message Structure
Overview
A CAT-240 message is illustrated in Figure 1. It consists of five main elements:
A data block, containing basic message details
The video data header, which defines the context of the video data
The video (FFT) data
A time-of-day field
A special-purpose field containing Navtech-specific extended information
Message Data Block
The message data block defines basic characteristics of the message and the specific configuration of the message.
The structure of the message data block is shown in Figure 2
CAT | The message category. Always 240 (0xF0) |
LEN | The overall message length, including this data block |
FSPEC | Feature specifications for this message. |
Feature Specifications
The Feature Specification bit field structure defines which fields are present in the message and, in the case of optional features, which option(s) have been selected.
The feature specification is laid out as shown in Figure 3.
For the Navtech implementation of CAT-240 some fields are mandated. Figure 3 shows the default flag settings. Note, in the cases where bit field values have not been specified these fields will be set according to the supplied video data. See later for more details.
Video Header
The video header provides the context for the FFT data packaged in the message.
In the Navtech implementation of CAT-240 a video message represents a single azimuth of data.
The video header is structured as shown in Figure 4. CAT-240 field references are provided for cross-reference.
SAC_SIC | System Identification Code / System Area Code |
TYPE | Message type. Always 001 |
MSG_INDEX | Incrementing message counter |
START_AZ | Start angle for data, encoded as 1/360 of a degree. |
END_AZ | End angle in encoded as 1/360 of a degree. |
START_RG | The starting bin for this message; where 0 is the bin closest to the radar |
CELL_DUR | Size of a bin in femtoseconds. |
RES_C | Defines the resolution (number of bits) for each bin; and whether the data is compressed. |
NB_VB | Size of the FFT data, in bytes. |
NB_CELLS | Size of the FFT data, in bins. |
Data Source Identifier
The Data Source Identifier provides a unique identifier for the radar source. The Data Source Identifier is a 16-bit field structured as shown in Figure 5.
For Navtech, the values of the SIC/SAC values are set to
System Area Code | TBD |
System Identifier Code | TBD |
Start & End Azimuth
A Navtech radar outputs its FFT data on discrete azimuths. The number of azimuths sampled per rotation depends on the radar; and is configurable.
A CAT-240 message requires the azimuth start and end to be specified as an 16-bit angle, with a resolution of 1/360 degree.
Azimuth value = angle in degrees * (216 / 360)
and for extracting the angle:
Angle = value * (360 / 216)
Data is sent on a per-azimuth basis, with the start and end fields determined as follows:
· The end azimuth is set to the angle of the current azimuth.
· The start azimuth is set to the angle of the previous azimuth
Azimuth angle is calculated as follows:
Azimuth angle = azimuth number / (azimuths per rotation / 360)
Similarly, the current azimuth can be calculated from the angle:
Azimuth number = round(angle * (azimuths per rotation / 360))
The number of azimuths in a full rotation is not a defined field in CAT-240. Therefore, this value is provided as part of the Special Purpose field. See XXXXX for more details.
Cell Duration
Cell duration defines the size of an FFT bin in femtoseconds.
Cell duration is calculated as follows
Cell duration = bin size in metre / (c / 2)
Where c represents the speed of light (defined as 299, 792, 458 ms-1).
By extension, the range of the range of the radar can be calculated as
Radar range = ((cell duration * fsec) * (c / 2)) * range in bins
Where fsec represents 1 femtosecond in seconds – 10-15 sec.
Range in bins is not part of the CAT-240 standard message, so is included in the Special Purpose field extended data.
If non-contoured data can be assumed, then the range in bins will be the same as the video block cell size.
Resolution
The resolution field defines two properties of the message
· The resolution of the FFT data, in bits
· Whether the data is compressed
The structure of the resolution/compression field is shown in Figure 6.
Radar data is never compressed. The MSB of the resolution/compression field will always be zero.
The resolution is defined as an encoded value, as shown in the table below.
Note, for Navtech radars, only 8-bit or 16-bit data will be transmitted.
Value | Resolution | Encoding, in bits |
1 | Monobit | 1 |
2 | Low | 2 |
3 | Medium | 4 |
4 | High | 8 |
5 | Very high | 16 |
6 | Ultra high | 32 |
Data Size In Bins
The number of bins in the message is calculated as
Number of bins = video block size in bytes / resolution in bytes
Where resolution in bytes must be computed from the resolution/compression field value.
Video Data
The video data block holds the FFT data. It is structured as shown in Figure 7.
CAT-240 frames video data into fixed-sized blocks. The size of each block and the number of blocks depends on the size of the FFT data.
REP | The number of blocks in the Video data block |
block [n] | A block of FFT data. The size of the block is determined by the configuration in the video message header. |
Video Data Block Size
The framing configuration for an incoming message is specified with two fields:
The feature specification bits low data volume, medium data volume and high data volume define the size of a block (See 3.2.1)
The Block field defines the number of blocks contained in the message.
The block size is defined in the table below. Note, the data volume flags are mutually exclusive; at most one of the fields must be set.
Feature specification field | Block size, N (bytes) |
Video data low volume == 1 | 4 |
Video data medium volume == 1 | 64 |
Video data high volume == 1 | 256 |
If the number of bytes in the FFT data is not an exact multiple of the video block size, then the number of video blocks is rounded up. Any unused bytes used to pad the last video block are set to zero.
NOTE:
For extracting FFT data, client applications should use the NB_VB field, as this gives the actual size, in bytes, of the FFT data.
For extracting the Time-of-day (and any other subsequent fields) client applications must use REP * block size to calculate the alignment correctly.
Time-Of-Day
Time-of-day is an absolute time stamp, expressed in UTC. The time-of-day is reset each day at midnight; that is, the time-of-day holds no date information.
Time-of-day is stored as a 24-bit number, interpreted as an integer fixed-point representation, as shown in Figure 8
The time-of-day field uses an 8-bit value for the sub-seconds; therefore, time resolution is 1/128 sec – 7.8125 msec.
For a radar sampling 400 azimuths per rotation, at 4Hz, each azimuth message is generated every 625 microseconds. Time-of-day is too low resolution to use for precise azimuth timing. To expedite this, precise azimuth timing, to nanosecond resolution, is supplied in the Special Purpose field.
Special Purpose Field
The Special Purpose Field allows an application to include custom data that is not specified in the ASTERIX standard. This field includes more detailed information describing the format of the data than is supported by the ASTERIX standard.
For Navtech radars, the Special Purpose field is defined in Figure 9.
Count | The size of the Special Purpose field, in bytes |
Seconds | Timestamp. UTC seconds since the Unix epoch (01 Jan 1970, 00:00) |
Subseconds | Nanosecond resolution field of the timestamp |
Azimuths per rotation | Total number of azimuths sampled per rotation |
Range in bins | The range of the radar, expressed as a number of bins |
Rotation speed | Current radar rotation speed, in milli-Hz |
Gain | Range scaling factor. Encoded as a IEE 754 binary32 (float) |
Offset | Range offset of the FFT data, in metres. Encoded as a IEE 754 binary32 (float) |
Health | Radar component health status |
Radar Health Status
Radar health status provides information on the current operating status. The field is encoded as a bit field, as shown in Figure 10.
Each bit field is encoded with two bits. The value of the bits indicates the health status of the property, as shown by the table below.
Value | Definition |
---|---|
0 | unhealthy |
1 | warning |
2 | healthy |
3 | Invalid / unknown |
Endianness & Field Layout
Network Endian Encoding
Bit Field Structure Layout
Example Video Message
Below is an example video message with representative values for each field. This message is designed to be used to validate client application decoding.
Field values are given in big endian (network order) and little endian, as well as decimal (when relevant).
The video message is for a radar system producing data as follows:
Rotation rate – 4 Hz
Azimuths per rotation – 400
Radar range in bins – 2856
Radar range in metres – 500m
8-bit (high) resolution, no compression
Message Block
Video Header
Special Purpose Field
Packet Fragmentation
Encoding an azimuth into a single Video Message will result in a UDP network packet that may exceed the size of the MTU (Maximum Transmission Unit) for the network. A typical value for the MTU is 1500 bytes, which is smaller than a typical azimuth FFT message. If the operating system supports Jumbo Frames the MTU may be as high as 9kB. This may be adequate for typical radar returns, but longer-range radar azimuth data may still exceed this.
The operating system at the sending end will normally split the outgoing packet into fragments that are smaller than the MTU. The operating system at the receiving end will recombine the fragments to rebuild the packet, which is then passed to the receiver. This process of IP fragmentation and recombination is completely transparent to both the sending and receiving applications.
However, at the packet rates associated with typical radar data streams there is a potential problem with typical MTU sizes, which can lead to significant data loss.
The ID field in the IP header in a UDP packet is used by the networking system to recombine fragmented UDP packets. For a typical data rate (PRF) of 1600 messages/sec this ID field will rollover approximately every 41 seconds.
Consider a case where a message is split into 4 fragments by the networking system, but one of those fragments is lost (UDP does not guarantee delivery). The OS will hold the (delivered) three fragments of the packet in a reassembly buffer, waiting for a byte that will never arrive. However, after 41 seconds, the ID field would have wrapped around and a fragment with a ‘correct’ ID will be received. This will complete the packet in the reassembly buffer but will result in a corrupt packet. Furthermore, even though all 4 fragments of the current message were delivered, one of the fragments has now been appropriated for the previous message, meaning the current message is now ‘broken’. This self-propagating problem can lead to the reassembly buffer growing continually. The result is that a small packet loss can cascade into a major data loss and hence loss of radar data.
Fragments are discarded if they are not completed within the Packet Reassembly Timeout. On Windows, this is set at 60 seconds, so PRFs that cause the ID value to wraparound faster than that are susceptible to this problem. On Linux the PRT is configurable; although a balance must be made between the requirements of a lower timeout value for radar distribution, and a higher value that might be necessary for other networking operations.
More information on this topic can be found in RFC 4963 at http://tools.ietf.org/html/rfc4963 .
To minimise this problem, larger video messages can be split into multiple smaller messages, each less than the MTU in size. The receiving client must then re-combine these messages into a single azimuth return.
To illustrate this, the example message of Appendix B will be used.
Given an MTU of 1400, the message will be split into three smaller messages, that each fit completely within the MTU. The messages will be generated as shown in Figure 13. In the figure, fields which do not change between messages are shaded. That is, the fields from the original (un-split) message will be replicated across each of the fragmented messages.
Notes:
The video block will remain aligned to the (original) block size, so the payload will be the largest whole block size that can be contained within the MTU
The payload size will be constrained by the fixed-sized fields – the message block and video header
The payload size will be further constrained if the message contains a time-of-day and/or special purpose field
Fields such as the time-of-day and special purpose fields are replicated across each fragment message; that is, the time-of-day and any other azimuth-specific data will remain the same for the entire azimuth.