СПОСОБ ПЕРЕДАЧИ ДАННЫХ
METHOD OF TRANSMITTING DATA

Изобретение относится к способам передачи данных, в частности к протоколам, используемым при передаче и приеме информационных данных.
В настоящее время активно развивается сетевая технология SpaceWire, специально разработанная для космических аппаратов и совмещающая в себе простоту и низкую цену реализации наравне с высокой производительностью и гибкостью архитектуры. Длительное время основной технологией, применяемой в космическом и авиационном электронном оборудовании, была коммуникационная шина MIL-STD 1553. Однако в условиях растущих требований MIL-STD 1553 уже не справляется с поставленными задачами, поскольку ее средняя скорость передачи данных в 1 Мбит/с и шинная топология накладывают серьезные ограничения. Передача данных в бортовых сетях сейчас переходит на стандарт SpaceWire.
Протокол SpaceWire охватывает три нижних уровня модели OSI и не охватывает транспортный уровень. На данный момент существует целый ряд транспортных протоколов, ориентированных на работу в сетях SpaceWire.
Remote Memory Access Protocol
RMAP - протокол удаленного доступа к памяти. Он служит для поддержки широкого ряда приложений SpaceWire, может функционировать параллельно с другими протоколами передачи данных, запущенными поверх SpaceWire.
RMAP может быть использован: для конфигурирования коммутаторов SpaceWire и контроля их состояния (установки их рабочих параметров и записи информации в таблицу маршрутизации); для конфигурирования и считывания состояния узлов сети SpaceWire; для простых модулей SpaceWire без встроенного процессора - установка конфигурационных регистров приложений, чтения статусной информации или записи данных в память устройства; для интеллектуальных модулей SpaceWire - конфигурирование, сбор информации о состоянии, передача данных из памяти и в память или почтовый ящик. Почтовые ящики - это косвенные области памяти, на которые ссылаются с использованием адреса памяти.
Протокол RMAP оперирует понятиями команда, а не пакет, и определяет 3 вида команд: команда записи (команда записи считывает ноль или более байт данных из памяти другого устройства, могут подтверждаться или не подтверждаться узлом назначения при корректном получении), команды чтения (команда чтения считывает один или более байтов данных из указанной области памяти в узле адресата, прочитанные данные возвращаются в ответном пакете), команда чтение-модификация-запись (команда чтения-модификации-записи читает регистр (или память), возвращает его значение и затем записывает новое значение, определенное в команде, в регистр).
Протокол RMAP предоставляет качество сервиса негарантированная доставка в режиме без подтверждений и гарантированную доставку данных в режиме передачи данных с подтверждениями.
Недостатками протокола RMAP являются невозможность контроля информационного потока, проверки данных и повторной отправки данных, отсутствие качества сервиса «с приоритетом», невозможность гибкой конфигурации и передачи данных с установкой соединения.
CCSDS Packet Transfer Protocol
CCSDS РТР - протокол передачи пакетов, который служит для инкапсуляции космических пакетов в SpaceWire пакеты, передачи их от устройства источника к устройству назначения через SpaceWire сеть, извлечения CCSDS пакетов и передачи их приложению. Протокол разработан Международным Консультативным Комитетом по космическим системам передачи данных (Consultative Committee for Space Data Systems, CCSDS).
РТР обеспечивает однонаправленный сервис передачи данных от пользовательского приложения источника к приложению назначения через SpaceWire сеть.
Протокол РТР обладает следующими особенностями: протокол без установки соединения; пользователь может запрашивать передачу данных в любой момент времени; переменная или фиксированная длина пакетов (минимальный размер пакета 7 байт, максимальный - 65542 байт); односторонняя передача данных, без подтверждений; отсутствует повторная пересылка в случае потери данных; не поддерживает периодичность отправки данных; не отвечает за сборку пакета и его проверку на корректность (за это отвечает пользовательское приложение).
Недостатком протокола CCSDS РТР является то, что он предназначен для инкапсуляции космических пакетов в SpaceWire-пакеты для их передачи в сеть и их извлечения для передачи приложению, но не предоставляет каких-либо механизмов, гарантирующих качество сервиса.
Serial Transfer Universal Protocol
STUP - универсальный протокол последовательной передачи данных, который служит для организации передачи данных в сети SpaceWire. Ключевой особенностью STUP является его простота реализации.
Протокол STUP обладает следующими особенностями: протокол без установки соединения; определяет всего 2 вида команд: запись и чтение.
В командах протокола STUP предусмотрены поля для контрольной суммы, которые можно использовать для проверки корректности пришедшей команды.
Недостатком протокола STUP является то, что он не предоставляет каких-либо механизмов, гарантирующих качество сервиса.
Joint Architecture Standard Reliable Data Delivery Protocol
JRDDP - протокол надежной доставки данных, который служит для обеспечения сервиса надежной доставки данных к одному или многим высокоуровневым хост приложения, используя для этого канальный уровень SpaceWire.
Протокол JRDDP обладает следующими особенностями: протокол с установлением соединения; поддерживает множественные логические соединения; обеспечивает надежную доставку данных; обнаруживает потерянные, повторяющиеся пакеты; упорядочивает пакеты, пришедшие не по порядку; выполняет фрагментацию и повторную сборку пакетов.
Протокол JRDDP определяет следующие типы пакетов: данные приложения; подтверждение; открытие и реинициализация соединения; закрытие соединения; срочный пакет данных.
JRDDP протокол поддерживает качество сервиса с приоритетами и негарантированная доставка данных.
В спецификации протокола JRDDP определены следующие приоритеты отправки пакетов:
- пакеты подтверждения (отправляются в первую очередь);
- управляющие пакеты;
- срочные пакеты;
- повторно передаваемые пакеты;
- пакеты данных (отправляются последними).
Качество сервиса «Негарантированная доставка данных» используется (опционально) для доставки срочных сообщений, таких как широковещательные, сообщения с исключениями/контролем ошибок, метасообщения и др.
Для обнаружения ошибок и отказоустойчивости в пакетах протокола JRDDP предусмотрено CRC-поле, а также поле с порядковым номером пакета (размер поля 8 бит), отправка подтверждений об успешном получении пакетов. Более того, протокол JRDDP использует таймауты для обнаружения потерянных или повторяющихся пакетов.
Недостатком протокола JRDDP является отсутствие гибкости при конфигурировании.
Streaming Transport Protocol
STP - транспортный протокол потоковой передачи данных в сетях SpaceWire, в котором предусматривается также поддержка одновременной передачи множества когерентных информационных потоков.
Протокол STP ориентирован на асимметричную организацию транспортного соединения, с одной стороны которого находится ведущее устройство (хост, мастер) транспортного соединения, а с другой стороны - ведомое устройство. Инициатором организации сеанса обмена является ведущее устройство, которое осуществляет управление установкой соединения, настройкой его параметров и потоком пакетов-данных.
Протокол STP обладает следующими особенностями:
- протокол с установлением соединения;
- безопасное соединение (трехэтапное квитирование);
- ассиметричность (передача данных идет от ведомого устройства к ведущему);
- поддержка многопоточности (до 65535 отдельных соединений);
- порции данных фиксированной длины;
- периодическая через заданный интервал передача данных (по установленным параметрам на протяжении всего соединения);
- доставка данных без подтверждений, без повторной посылки;
- управление потоком данных.
Протокол STP оперирует понятиями пакет данных и команды.
Протокол STP разработан для передачи потоковых данных в сети SpaceWire. Устройство-получатель согласно спецификации STP не отправляет подтверждений о получении данных, тем самым обеспечивая качество сервиса с негарантированной доставкой данных.
В протоколе STP также предусмотрен механизм остановки/разрешения передачи данных по конкретному соединению, частоту отправки пакетов данных, что позволяет управлять потоком.
Недостатками протокола STP являются отсутствие гибкости при конфигурировании, качества сервиса «с приоритетом», подтверждений о получении данных, невозможность проверки и повторной отправки данных.
Задачей изобретения является разработка способа передачи информации, обеспечивающего надежность доставки, гибкость при конфигурировании.
Поставленная задача изобретения решается тем, что создают способ передачи данных с использованием сетевого транспортного протокола (СТП), реализованного программно и аппаратно в виде IP-блока; обеспечивают передачу команд управления, пакетов данных, маркеров времени SpaceWire, кодов прерываний SpaceWire и их подтверждения на все узлы сети; при этом передачу информационных сообщений и команд управления обеспечивают в соответствии с настраиваемыми в зависимости от требований качествами сервиса и перед отправкой каждый информационный пакет записывают в соответствующий по приоритетности логический буфер на передатчике; в обеспечение гарантированной доставки данных каждый пакет хранят в соответствующем буфере на передатчике в течение времени жизни, определяемом таймером, который отсчитывает время, пока пакет с данной информацией актуален для передачи по сети SpaceWire; в случае гарантированной доставки данных обеспечивают подтверждение корректной доставки данных посредством отправки пакетов подтверждения, а также повторную пересылку данных источником в случае отсутствия подтверждения; в случае негарантированной доставки данных не обеспечивают подтверждение корректной доставки данных; при приеме информационного пакета, не требующего подтверждения, данные проверяют и в случае обнаружения ошибки в принятом информационном пакете данные пакета передают на прикладной уровень с уведомлением об ошибке; на приемной стороне СТП все типы информационных пакетов записывают в единый буфер; обеспечивают настройку СТП при помощи конфигурационных параметров, обеспечивают сброс всех настроек СТП, очистку всех буферов СТП и сброс таймеров по специальным командам.
В сетевом транспортном протоколе для взаимодействия с прикладными процессами предусмотрены три интерфейса: интерфейс данных, конфигурационный интерфейс и интерфейс системных кодов. Через вышеописанные интерфейсы СТП обеспечивает передачу следующих основных типов данных:
- команды управления;
- пакеты данных;
- маркеры времени SpaceWire;
- коды прерываний SpaceWire и их подтверждения.
Через интерфейс данных передаются пакеты данных и команды управления. Сообщения прикладных процессов и команды управления на удаленные узлы передаются в пакетах SpaceWire. Конфигурационный интерфейс служит для смены значений конфигурационных параметров СТП, передачи статусной информации и команд сброса. В свою очередь, интерфейс системных кодов отвечает за распространение маркеров системного времени и системных прерываний во все узлы сети посредством технологии SpaceWire. Для взаимодействия со SpaceWire - два интерфейса: интерфейс пакетов SpaceWire и интерфейс системных кодов.
Одна из основных задач транспортного протокола СТП - это обеспечение транспортировки сообщений прикладных процессов на удаленные узлы сети. Сообщение прикладного процесса - это блок данных, поступающий в СТП от протокола прикладного уровня. Они разделяются по типу в соответствии с их приоритетом:
- срочные сообщения - высокоприоритетные;
- обычные сообщения - низкоприоритетные.
Блок данных СТП имеет ограниченную длину. Размер каждого сообщения прикладного процесса не должен превышать 2048 байт. Функция сегментации сообщений выполняется прикладным уровнем. Для этих целей вводится вторичный заголовок пакета СТП, в котором прикладной процесс может передавать информацию, необходимую для сборки сообщений из сегментов.
СТП обеспечивает надежную передачу данных посредством защиты передаваемых данных и заголовка пакета контрольной суммой CRC-16, проверяемой на приемнике. CRC-16 покрывает поле заголовка пакета и поле данных, начиная с первого байта пакета и заканчивая последним байтом данных, не включая символ конца пакета ЕОР.
В протоколе СТП предусмотрен механизм таймера времени жизни пакетов, который отсчитывает время, пока пакет с данной информацией актуален для передачи по сети SpaceWire. Каждый пакет хранится в соответствующем буфере на передатчике в течение времени жизни, которое для него определено. Величина таймера времени жизни пакета является конфигурационным параметром протокола СТП и может задаваться на этапе конфигурации. При этом каждому типу пакетов (пакет команды управления, срочного сообщения, обычного сообщения) соответствует отдельная величина таймера времени жизни. Таймер времени жизни взводится в момент записи пакета в буфер, а по истечении времени таймера соответствующий ему пакет из буфера удаляется.
На передающей стороне транспортного протокола предусмотрен отдельный логический буфер на каждый из приоритетов передаваемых данных:
- буфер команд управления;
- буфер срочных сообщений;
- буфер обычных сообщений.
Размеры этих буферов задаются в соответствии с размером сообщения, которое будет использовать сетевой узел для обмена с другими узлами, а также в соответствии с типом устройства, работающего по протоколу СТП. Однако, для каждого из буферов (на приемной или передающей части) рекомендуется задавать размер таким образом, чтобы он вмещал как минимум два пакета данных. Поле данных в пакете не должно быть пустым. Если такое происходит, то СТП должен отправить приложению уведомление о том, что пакет не отправлен. Пакет в буфере должен храниться до возникновения одного из следующих событий:
- получение пакета подтверждения на пакет, отправленный с гарантированным качеством сервиса;
- отправка пакета в сеть при негарантированной доставке данных;
- срабатывание таймера времени жизни данного пакета;
- команда reset или flush.
Если происходит переполнение буфера, то приложение должно ждать, пока появится свободное место для очередного сообщения.
На приемной стороне транспортного протокола предусмотрен единый буфер на все типы информационных потоков. Буфер должен иметь возможность хранить минимум два пакета.
Если приемный буфер переполнен, то СТП должен сгенерировать сообщение для уровня приложений.
Одним из преимуществ передачи данных предлагаемым способом является обеспечение передачи сообщений и команд управления со следующими типами качества сервиса:
- Качество сервиса «С приоритетом»;
- Качество сервиса «Гарантированная доставка данных»;
- Качество сервиса «Негарантированная доставка данных».
Тип качества сервиса «С приоритетом» является основным и должен поддерживаться всеми устройствами, на которых реализован транспортный протокол СТП. Согласно данному типу качества сервиса данные с более высоким приоритетом должны быть переданы первыми. СТП поддерживает 7 уровней приоритетов:
1. Пакеты подтверждения;
2. Пакеты команд управления;
3. Повторные пакеты команд управления;
4. Пакеты срочных сообщений;
5. Повторные пакеты срочных сообщений;
6. Повторные пакеты обычных сообщений;
7. Пакеты обычных данных.
СТП анализирует передачу пакетов во время арбитрирования. Пакет содержит специальный флаг «Типа Пакета» и признак повторной отправки пакета. В зависимости от этого, СТП делает вывод, какой пакет должен быть отправлен первым. Арбитрирование следующего пакета происходит только после отправки текущего.
Тип качества сервиса «Гарантированная доставка данных» обеспечивает подтверждение корректной доставки данных посредством отправки пакетов подтверждения, а также повторную пересылку данных источником в случае отсутствия подтверждения. Повторная отправка осуществляется на основе нумерации пакетов, которая осуществляется на прикладном уровне. Таким образом, комбинация идентификатора приложения и номера передаваемого сообщения однозначно идентифицирует каждый пакет. Для реализации качества сервиса «Гарантированная доставка данных» при отправке данных на сетевой уровень должен быть взведен таймер повтора. Он определяет временной интервал, по истечении которого считается, что пакет не был доставлен до адресата корректно либо был потерян пакет подтверждения. По истечению таймера повтора пакет, соответствующий данному таймеру, повторно отправляется адресату. Для того чтобы уведомить отправителя о корректном приеме пакета, используются пакеты подтверждения. Они отправляются, если:
- отсутствует ошибка CRC,
- длина поля данных корректна,
- в заголовке пакета выставлен флаг «Требование подтверждения приема», определяющий для данного пакета качество сервиса «Гарантированная доставка данных».
При приеме пакета подтверждения пакет, соответствующий принятому номеру, должен быть удален из буфера повтора передатчика. Все таймеры, ассоциированные с номером этого пакета, должны быть остановлены и удалены.
Тип качества сервиса «Негарантированная доставка данных» обеспечивает передачу данных без подтверждений приема. Такие пакеты содержат в заголовке бит ‘Требование подтверждения приема’, установленный в 0 и для них не взводится таймер повтора. При приеме информационного пакета, не требующего подтверждения, приемник также проверяет CRC и корректность длины поля данных, но в случае обнаружения ошибки в принятом информационном пакете и в случае, если пакет был завершен символом ЕЕР, данные пакета все равно должны быть переданы на прикладной уровень с уведомлением об ошибке. Передатчик не хранит такой пакет в буфере, не ждет подтверждения и не пересылает пакет.
Важной особенностью данного способа передачи является гибкость применяемого СТП. Протокол имеет ряд конфигурационных параметров, которые позволяют настраивать протокол в зависимости от требований к качеству предоставляемого сервиса и типа используемой аппаратуры. Конфигурация СТП производится через конфигурационный интерфейс и выполняется в следующих случаях:
- включение устройства;
- перезагрузка устройства;
- переключение комплектов;
- восстановление из аварийного состояния.
В первой редакции протокола СТП определено 5 конфигурационных параметров:
1. Время жизни пакета команды управления;
2. Время жизни пакета срочного сообщения;
3. Время жизни пакета обычного сообщения;
4. Таймаут повтора (длительность таймера повтора);
5. Гарантированная или негарантированная доставка данных.
Через конфигурационный интерфейс могут подаваться сигналы Reset и Flush. Команда Reset соответствует горячему сбросу, в то время как команда Flush используется для очищения буферов приемника и передатчика протокола СТП. По приходу сигнала Reset буферы на передатчике и приемнике транспортного протокола очищаются, все таймеры, связанные с данными в буферах, должны быть сброшены, счетчик порядковых номеров сбрасывается и конфигурационные параметры устанавливаются в значения по умолчанию. Если же в СТП подается команда Flush, то также очищаются буферы и сбрасываются таймеры, но счетчик порядковых номеров и конфигурационные параметры остаются прежними.
Таким образом, реализация способа передачи данных с помощью сетевого транспортного протокола СТП позволит передавать информационные потоки данных, обеспечивая надежность передачи данных, использовать различные типы качества сервиса, гарантированно доставлять данные и обеспечивать гибкость конфигурирования.
Способ осуществляют следующим образом
Сетевой транспортный протокол реализован программно, например, на языках С++ и С и аппаратно в виде IP-блока СТП.
Программная реализация представляет собой программный код, наиболее точно соответствующий спецификации протокола. Он описывает логическую структуру протокола, его интерфейсы и внутренние механизмы протокола. Референс-код содержит подробные комментарии, позволяющие лучше понять алгоритм функционирования СТП. Кроме того, программный код описывает тестовое окружение, которое позволяет запускать определенный набор тестовых сценариев работы протокола, что проверяет функционирование (конфигурация протокола, отправка данных, прием данных) протокола в различных условиях. В результате запуска сценариев генерируются файлы отчетов, содержащие информацию о возникающих в процессе работы протокола событиях. Параллельно в ходе работы тестового сценария ведется сбор статистической информации и фиксирование возникающих событий в системе, результатом которого является файл отчетов. Программный код используется для трансляции в другие языки программирования для создания бортового программного обеспечения, а также для тестирования программных моделей и аппаратных реализаций протокола.
Референс-код протокола СТП состоит из следующих компонент:
- компонент stp_testengine - приложение (тестовое окружение), предназначенное для генерации, приема и проверки тестовых данных;
- компонент stp_reference - протокол СТП, состоящий из передатчика, приемника и менеджера и выполняющий обработку тестовых данных;
- компонент spw_channel - канал SpaceWire, эмулирующий сетевой уровень SpaceWire, предназначенный для передачи поступающих данных на удаленную сторону.
Система состоит из заданного количества узлов. Каждый узел состоит из модели приложения и реализации протокола СТП. Узлы соединены моделью канала SpaceWire.
Система функционирует следующим образом.
При запуске модель приложения начинает генерировать данные, которые поступают в протокол СТП. Затем данные в виде пакетов SpaceWire поступают в канал SpaceWire, который передает их на удаленную сторону. Удаленная сторона принимает данные и выполняет их обработку с последующей передачей приложению. В случае использования гарантированной доставки данных удаленная сторона отправляет пакеты подтверждения об успешном приеме данных.
После инициализации внутренних механизмов (буферы, списки параметров, обработчики событий) выполняется конфигурация протокола. Затем передатчик начинает получать данные от модели приложения: сообщения, команды управления, time-коды. Далее передатчик обрабатывает полученные данные, создает пакеты СТП и выполняет их буферирование. В момент записи очередного пакета СТП в буфер передатчик взводит таймер времени жизни и далее специальный поток выполняет его мониторинг. В процессе арбитража на основе приоритетов передатчик определяет пакет, который должен быть отправлен первым. В случае использования гарантированной доставки данных после отправки пакета в SpaceWire канал выполняется установка таймера повтора с дальнейшим его мониторингом, который выполняет отдельный поток. В процессе функционирования передатчик также принимает запросы о подтверждении и удаляет данные из буферов. По специальному служебному сигналу передатчик завершает свою работу, останавливая потоки мониторинга всех таймеров. После завершения процесса передачи всех данных передатчик выдает накопленную статистику.
Аналогично передатчику в приемнике выполняется инициализация внутренних механизмов (буферы, списки параметров, обработчики событий). Затем приемник начинает принимать данные, проверять их корректность и буферировать. В случае корректности данных выполняется их отправка приложению. В случае необходимости отправки подтверждений приемник отправляет запрос на отправку подтверждения в передатчик. После завершения процесса передачи всех данных, приемник выдает накопленную статистику.
Менеджер принимает запросы на конфигурацию протокола и перенаправляет их в передатчик. Также в процессе работы менеджер принимает запросы на сброс протокола и на очистку буферов и перенаправляет их в передатчик и приемник. В случае переполнения буфера на приемной стороне менеджер принимает специальный примитив, который затем передается приложению.
В случае аппаратной реализации IP-блок СТП - контроллер СТП состоит из следующих основных блоков:
1. Контроллер передачи пакетов преобразует транзакции, которые приходят с уровня приложений в пакетах СТП и отправляет их в порт SpaceWire. Каждый типа пакетов СТП хранится в отдельном буферном блоке.
2. Контроллер приема пакетов принимает пакеты, приходящие из SpaceWire порта и проверяет их корректность. Пакеты подтверждения хранятся в Received АСК FIFO. Корректные обычные пакеты, срочные пакеты и команды управления хранятся в буфере.
3. Контроллер транзакций отправленных пакетов получает транзакции из уровня приложений, преобразует и передает в контроллер передачи пакетов.
4. Контроллер транзакций входящих пакетов преобразует корректные входящие обычные пакеты, срочные пакеты и команды отправления в транзакции для уровня приложений. Текущая реализация поддерживает только один формат транзакций, который соответствует команде записи.
5. Блок арбитрирования запросов выполняет арбитрирование запросов к АНВ контроллеру (master) из контроллера транзакций отправленных пакетов. Арбитрирование производится в соответствии со схемой с динамическими циклическими приоритетами.
6. Блок регистров режима/статуса состоит из массива регистров режима/статуса, контроллера регистра чтения и контроллера регистра записи. Чтение и запись выполняются из АНВ через АНВ контроллер (slave) и из функциональных блоков контроллера СТП.
IP-ядро является конфигурируемым, обеспечивая возможность исключать разные его компоненты.
При реализации сетевого транспортного протокола любым из вышеописанных способов (программно или аппаратно) обеспечивается высоконадежная транспортировка передаваемых данных по линиям связи сети SpaceWire для авиационной и космической отрасли.