ASTERIX (англ. сокр. All Purpose Structured Eurocontrol Surveillance Information Exchange, многоцелевой структурированный обмен информацией наблюдения Евроконтроля) — протокол прикладного/представительского уровня, ответственный за определение и сбор данных, разработанный для обеспечения трансляции и обмена данными наблюдения.
Правила изменения категорий
Спецификация ASTERIX разбита на части. В первой части описываются основные принципы, а остальные части относятся к различным областям применения. Каждой области применения должна соответствовать одна и только одна часть спецификации. Часть может иметь разные версии, которые могут сосуществовать одновременно и поддерживаться независимо друг от друга.
Правила позволяют определить 32 области применения. Каждой области должна быть присвоена начальная категория от 0 до 31 включительно.
Чтобы избежать неправильного толкования данных, любой новой версии части должна быть присвоена категория, чей номер отличается от предыдущего. Номер рассчитывается по следующей формуле.
Где:
- — категория для части версии N.
- — категория для версии, следующей за N.
- — операция взятия остатка от деления A на B.
Правила применяются к категориям от 0 до 127 включительно.
Обозначения
В этой статье для обозначения размера данных используются целые числа либо целые числа со знаком +. Например: 1+. Это означает, что размер данных равен или больше целого числа перед знаком +. Размер данных всегда равен целому числу.
Структура данных
Редакция 2.1 и более ранние
В спецификации ASTERIX редакции 2.1 (апрель 2013) и более ранних редакциях структура данных следующая.
Блок данных
Байт
|
0
|
1...2
|
3...
|
Обозначение
|
CAT
|
LEN
|
RECORD 1
|
RECORD 2
|
...
|
RECORD K
|
Наименование
|
Категория данных
|
Размер блока данных
|
Запись 1
|
Запись 2
|
...
|
Запись K
|
Размер, байт
|
1
|
2
|
1+
|
Запись
Байт
|
0...m
|
(m+1)...
|
Обозначение
|
FSPEC
|
DATA FIELD 1
|
DATA FIELD 2
|
...
|
DATA FIELD N
|
Наименование
|
Спецификация полей
|
Поле данных 1
|
Поле данных 2
|
...
|
Поле данных N
|
Размер, байт
|
1+
|
0+
|
0+
|
...
|
0+
|
Где: N — количество полей.
Спецификация полей (FSPEC)
Байт
|
0
|
1
|
2...(L-1)
|
L
|
Бит
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16...(M-8)
|
M-7
|
M-6
|
M-5
|
M-4
|
M-3
|
M-2
|
M-1
|
M
|
Обозначение
|
F1
|
F2
|
F3
|
F4
|
F5
|
F6
|
F7
|
FX
|
F8
|
F9
|
F10
|
F11
|
F12
|
F13
|
F14
|
FX
|
F15...F[N-7]
|
F[N-6]
|
F[N-5]
|
F[N-4]
|
F[N-3]
|
F[N-2]
|
F[N-1]
|
F[N]
|
FX=0
|
Где:
- L+1 — размер спецификации полей в байтах;
- M+1 — размер спецификации полей в битах;
- N — количество полей;
- F[Y] — индикатор наличия поля Y;
- FX — индикатор расширения полей.
Значение в бите F[Y] определяет присутствует ли поле Y в записи. Если F[Y] равно 0, то поле отсутствует, если F[Y] равно 1, то поле присутствует.
Если FX равен 1, то следующий байт — это продолжение спецификации полей. Если FX равен 0, то это означает, что достигнут конец спецификации полей.
Редакция 2.2 и более поздние
В спецификации ASTERIX редакции 2.2 (октябрь 2014) структура данных была изменена. Стало невозможным объединяться записи в блоке данных. Данные представляются одной записью. Новая структура данных используется только для категорий 015 и 238. Для остальных категорий используется предыдущая структура данных.
Запись
Байт
|
0
|
1...2
|
3...m
|
(m+1)...
|
Обозначение
|
CAT
|
LEN
|
FSPEC
|
Data field 1
|
Data field 2
|
...
|
Data field N
|
Наименование
|
Категория данных
|
Размер блока данных
|
Спецификация полей
|
Поле данных 1
|
Поле данных 2
|
...
|
Поле данных N
|
Размер, байт
|
1
|
2
|
1+
|
0+
|
0+
|
...
|
0+
|
Где: N — количество полей.
Спецификация полей (FSPEC) не претерпела изменений по сравнению с редакцией 2.1.
Поля данных
Классификация полей данных следующая.
- Стандартное поле данных.
- Поле фиксированной длины.
- Поле расширяемой длины.
- Поле явно заданной длины.
- Поле с повторением.
- Составное поле.
- Поле данных специального назначения.
- Зарезервированное поле данных.
Стандартное поле данных
Поле фиксированной длины
Должно содержать фиксированное количество байт.
Поле расширяемой длины
Имеет переменную длину. Начинается с основной части, заранее определенной длины, за которой следует некоторое количество дополнительных частей заранее определенной длины. Все дополнительные части равной длины. Наличие следующего дополнительного поля определяется младшим значащим битом в последнем байте предыдущей части (основной или дополнительной). Такой бит называется индикатором расширения поля и обозначается FX.
Структура поля расширяемой длины
Часть
|
Основная
|
Дополнительные
|
Размер, байт
|
n
|
i
|
...
|
i
|
Наименование/
обозначение
|
Данные
|
FX=1
|
Данные
|
FX=1
|
...
|
Данные
|
FX=0
|
Поле явно заданной длины
Начинается с байта, который содержит длину поля в байтах, включая и сам этот байт.
Структура поля явно заданной длины
Байт
|
0
|
1...n
|
Наименование
|
Размер поля
|
Данные
|
Размер, байт
|
1
|
n
|
Поле с повторением
Имеет переменную длину. Начинается с байта, значение которого равно количеству подполей. Подполя одинакового размера, следуют друг за другом.
Структура поля с повторением
Байт
|
0
|
1...i
|
(i+1)...
|
Обозначение
|
REP=N
|
Data Subfield 1
|
...
|
Data Subfield N
|
Наименование
|
Количество повторений
|
Подполе 1
|
...
|
Подполе N
|
Размер, байт
|
1
|
n
|
...
|
n
|
Составное поле
Имеет переменную длину. Состоит из основного подполя, за которым следуют подполя данных. Основное поле определяет наличие подполей и может расширяться с помощью механизма расширения поля (FX). Подполя могут быть фиксированной длины, расширяемой длины, явно заданной длины и с повторениями, но не могут быть составными.
Структура составного поля
Байт
|
0...m
|
(m+1)...
|
Обозначение
|
Primary Subfield
|
Data Subfield 1
|
Data Subfield 2
|
...
|
Data Subfield N
|
Наименование
|
Основное подполе
|
Подполе данных 1
|
Подполе данных 2
|
...
|
Подполе данных N
|
Размер, байт
|
1+
|
0+
|
0+
|
...
|
0+
|
Структура основного подполя
Байт
|
0
|
1
|
2...(L-1)
|
L
|
Бит
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16...(M-8)
|
M-7
|
M-6
|
M-5
|
M-4
|
M-3
|
M-2
|
M-1
|
M
|
Обозначение
|
SF1
|
SF2
|
SF3
|
SF4
|
SF5
|
SF6
|
SF7
|
FX
|
SF8
|
SF9
|
SF10
|
SF11
|
SF12
|
SF13
|
SF14
|
FX
|
SF15...SF[N-7]
|
SF[N-6]
|
SF[N-5]
|
SF[N-4]
|
SF[N-3]
|
SF[N-2]
|
SF[N-1]
|
SF[N]
|
FX=0
|
Где:
- L+1 — размер спецификации подполей в байтах;
- M+1 — размер спецификации подполей в битах;
- N — количество подполей;
- SF[Y] — индикатор наличия подполя Y;
- FX — индикатор расширения поля.
Значение в бите SF[Y] определяет присутствует ли подполе Y в поле. Если SF[Y] равно 0, то подполе отсутствует, если SF[Y] равно 1, то подполе присутствует.
Если FX равен 1, то следующий байт — это продолжение основного подполя. Если FX равен 0, то это означает, что достигнут конец основного подполя.
Поле данных специального назначения
Используется для передачи произвольных данных. Поле прозрачно для незаинтересованных пользователей, то есть содержимое может быть проигнорировано.
Когда поле используется, для него выделяется бит в FSPEC. Обозначение такого бита: SP.
Первый байт поля содержит размер поля в байтах, включая этот байт. Следующие байты содержат произвольные данные.
Структура поля данных специального назначения
Байт
|
0
|
1...n
|
Наименование
|
Размер поля
|
Данные
|
Размер, байт
|
1
|
n
|
Зарезервированное поле данных
Используется только в спецификации ASTERIX редакции 2.1 и более ранних.
Предназначено для предоставления механизма внесения промежуточных изменений в заданную категорию. Поле прозрачно, как и поле специального назначения.
Первый байт поля содержит размер поля в байтах, включая этот байт. Следующие байты содержат произвольные данные.
Структура зарезервированного поля данных
Байт
|
0
|
1...n
|
Наименование
|
Размер поля
|
Данные
|
Размер, байт
|
1
|
n
|
Начиная со спецификации ASTERIX редакции 2.2 поле не используется.
Ссылки