Способ передачи сообщений в режиме реального времени на борту космических аппаратов
METHOD OF TRANSMITTING REAL-TIME MESSAGES ON-BOARD SPACECRAFTS

Изобретение относится к области средств передачи информации в виде пакетов и может быть использовано в различных областях науки и техники для передачи информационных сообщений между электронными устройствами различной степени интеллекта.
При характеристике разработанного способа будут использованы следующие обозначения:
L - фиксированный для сети максимальный размер кадра в байтах,
М - стандартное значение регистра количества шагов подстройки при синхронизации,
N - длительность цикла сети, исчисляемая в тайм-слотах, а также длина битовых масок гашения для выходных портов, а также длина массива счетчиков веерности (счетчик содержит количество портов, в которые маршрутизуется данный кадр) для входных портов коммутатора. Предпочтительное значение N=10000,
V - максимальное потребное буферное пространство в коммутаторе, исчисляемое в кадрах фиксированного размера, а также длина битовой маски занятости буферов,
Р - число портов коммутатора,
канала
T - период виртуального канала, исчисляемый в тайм-слотах,
канала
MaxMessageSize максимальный размер сообщения виртуального канала в байтах,
канала
R - интенсивность виртуального канала, исчисляемая в числе байтов за тайм-слот.
InPort - номер порта, по которому был получен кадр,
InputTimeSlot - номер тайм-слота, в который был получен кадр. Синхронность - в рамках данного технического решения этот термин означает, что передача кадров от узлов сети соседним узлам для всей сети должна начаться и закончиться в течение единого тайм-слота, причем по одной линии в течение одного тайм-слота не может быть передано более одного кадра. Такую синхронность в модели OSI именуют синхронностью сетевого уровня протокола.
Известен (RU, патент 2236092, опубл. 10.09.2004) способ передачи и приема мультимедийной информации между устройствами сетевого окончания и промежуточными узлами коммутации. Известный способ совместим с существующими сетями передачи информации в широком диапазоне скоростей, обеспечивает возможность передачи коротких сообщений с малыми накладными расходами и необходимое качество обслуживания трафика разных классов (QoS) и их автоматический контроль, а также обеспечивает уменьшение вероятности локальных перегрузок и джиттера (вариации задержки передачи) за счет осуществления мультиплексирования в пределах ограниченного временного интервала и уменьшение накладных расходов путем минимизации длины заголовков.
Известный способ допускает вероятность локальных перегрузок в сетях.
Известен также (RU, патент 2667387, опубл. 19.09.2018) способ передачи информации в реальном времени с повышенной помехозащищенностью по локальной сети aRTnet. При реализации известного способа используют сеть передачи информации, содержащую множество оконечных станций, каждая из которых соединена физической двунаправленной линией связи со своим коммутатором, коммутаторы соединены между собой также физическими двунаправленными линиями связи с образованием связного графа, при этом каждый коммутатор содержит внутреннюю оконечную станцию, используемую для реализации службы времени и других служебных функций своего коммутатора, внутренняя оконечная станция подключена только к собственному коммутатору по внутреннему каналу связи, причем используемая сеть aRTnet выполнена с возможностью передачи отдельных многокадровых сообщений по статически проложенным виртуальным каналам, сформированным с возможностью наличия более одного получателя при числе уровней приоритета равном 16, с ограничением интенсивности, усредненной по любому достаточно большому интервалу времени, а также вариативности потока передаваемой информации путем задержки при необходимости отправки информационных сообщений на исходной оконечной станции и прореживанием при необходимости кадров индивидуально для виртуальных каналов на входных портах коммутаторов, причем и то, и другое производят с использованием общеизвестного алгоритма маркерного ведра, и обеспечивает возможность произвести математически доказательную оценку, как задержки передачи сообщения, так и размеров очередей на выходных портах узлов по пути сообщения, при этом передача по физическим каналам сети проходит без управления потоком за счет гарантированного наличия буферного пространства на приемном конце каждой линии связи, указанная сеть выполнена с возможностью работы как в штатном режиме, когда маршрутизацию осуществляют только по идентификаторам виртуальных каналов в условиях действия конфигурации сети, параметры которой, относящиеся к различным узлам, заблаговременно размещают в узлах сети и активизируют там, так и в технологическом режиме посредством широковещательных сообщений с адресацией по географическим адресам оконечных станций, при этом сообщение передают по сети aRTnet, сообщения в штатном режиме передают в виде последовательности кадров.
Сеть aRTnet предполагает использование буферов большого объема в коммутаторах и, стало быть, использования внешних микросхем памяти, что увеличивает уязвимость по отношению к радиационному воздействию, принуждая парировать ее за счет использования кодов, исправляющих ошибки. Сеть же SYNCnet предполагает использование простых алгоритмов маршрутизации и сравнительно небольших объемов внутрикристальной статической памяти микросхемы коммутатора.
Сеть SYNCnet обеспечивает строго детерминированное время обменов по ней в отличие от сетевого протокола Space Wire, широко применяющегося на борту космических аппаратов, но не гарантирующего отсутствия блокировок сообщений на
неопределенное время даже при малых нагрузках на сеть (Журавлев В., Немытов А., Осипов Ю., Першин A., «SpaceWire: взгляд со стороны. Часть 1», «Современная электроника» №8 2017, стр. 36-40, «SpaceWire: взгляд со стороны. Часть 2», «Современная электроника» №9 2017, стр. 26-28).
SYNCnet роднит с широко известным протоколом ATM -Asynchronous Transfer Mode использование для пересылок ячеек одинакового размера. ATM ориентирован среди прочего на использование в качестве региональной сети, поэтому возникновение запросов на установление канала не могут не быть случайными, а, стало быть, возможно, неконтролируемое возникновение заторов (congestion) на маршрутах. Для борьбы с динамически возникающими заторами в ATM предпринимают немалые усилия, для чего используется несколько довольно громоздких механизмов: Explicit Forward Congestion Indication - EFCI, Usage Parameter Control - UPC-тегирование, использование битов Cell Loss Priority - CLP, завышенные запросы на Connection Admission Control - CAC и др. (см. "ATM Theory and Application" David E. McDysan, Darren L. Spohn, McGraw-Hill, Signature Ed. 1998, p.644). SYNCnet же предполагает точное знание всех виртуальных каналов на этапе эксплуатации, поэтому возможно разрешение конфликтов на этапе разработки, что, с одной стороны, существенно упрощает аппаратуру, а с другой стороны предотвращает неожиданные задержки.
Ближайшим аналогом разработанного способа можно признать ТТР (Time Triggered Protocol), известный также как международный стандарт SAE AS6003 ТТР Standard (http://www.tttech.com/fi leadmin/content/pdf/AS6003 _preview.pdf), в котором как и в SYNCnet, время применения способа делят на тайм-слоты, но необязательно одинаковой длительности. В течение одного тайм-слота осуществляют один обмен по сети (но полностью - от источника к приемнику, а не просто между соседями). «Каждый узел на основе априорно известного ожидаемого времени прихода корректного сообщения и фактического времени его прихода вычисляет разницу хода часов передатчика и приемника. Отказоустойчивый усредняющий алгоритм вычисляет коррекцию локальных часов с тем, чтобы они находились в синхронизации со всеми остальными часами сети» (Захаров Н.„ Клепиков В., Подхватилин Д., Семикин Д., Шепелев А.,. «Протокол для распределенных систем управления ответственного применения», Control Engineering Россия 2013, #2 (44), стр. 56-59).
Существенным недостатком ТТР является расточительное использование ресурсов сети - в течение одного тайм-слота большинство линий связи, в отличие от случая SYNCnet, простаивает.
Техническая проблема, решаемая при реализации разработанного способа, состоит в организации синхронных обменов реального времени, предназначенная для использования на борту космических аппаратов, особенностью которых является сравнительное небольшое число оконечных станций и требования детерминированного времени доставки сообщений и малого объема буферной памяти на коммутаторах в связи с подверженностью этой памяти к сбоям, обусловленным космическим излучением.
Технический результат, достигаемый при реализации разработанного способа, состоит в том, что технические сложности планирования отправки кадров и определение потребности в ресурсах вынесены на этап проектирования, что обеспечивает повышение качества связи между оконечными станциями на борту космических аппаратов.
Для достижения указанного технического результата предложено использовать разработанный способ передачи сообщений в режиме реального времени в космических аппаратах. Согласно разработанному способу для передачи информации используют сеть узлов SYNCnet, причем передачу сообщений осуществляют через систему коммутаторов, по однонаправленным виртуальным каналам с одним источником на оконечной станции и, по меньшей мере, одним приемником, соответственно на одной или нескольких оконечных станциях, сообщения передающему устройству предоставляют строго периодически, сообщения по каждому виртуальному каналу ограничены своей величиной и разбиты на кадры фиксированного размера L, время применения способа делят на равные отрезки времени - тайм-слоты, в течение каждого из которых отправляют кадры указанного фиксированного размера, передача кадров в сети с разных узлов соседним узлам в течение одного тайм-слота осуществляют одновременно. При одновременном претендовании на выходном порту оконечной станции или коммутаторе на отправку более одного кадра, сгенерированных одновременно в случае оконечной станции или прибывших одновременно в случае коммутатора с разных входных портов, очередность отправки кадров определяют статически по заранее заданному циклическому расписанию на N тайм-слотов общей длительностью цикла в одну секунду. Каждый порожденный кадр на оконечной станции-источнике помещают в индивидуальную ячейку расписания выходного порта, а каждый прибывающий в коммутатор кадр помещают в соответствующую ячейку расписания на соответствующем выходном порту/нескольких портах для случая мультикаста.
Для синхронности работы узлов сеть рассматривается как дерево с корнем в оконечной станции-«сервере времени», а любой другой узел синхронизуется вышележащим по иерархии (т.е. ближе к корню) путем периодических посылок синхрокадров, содержащих локальное время синхронизующего узла, причем выравнивание времени синхронизуемого узла осуществляют с использованием раздельной коррекции скорости хода часов и абсолютных невязок, а начало цикла назначают на целое число секунд в абсолютном локальном времени.
Предпочтительно длительность тайм-слота задают
превышающей длительность передачи кадра фиксированного размера на величину, обеспечивающую согласование посылки кадра с одного конца линии на другой конец в случае, если присутствует рассогласование по времени кварцев тактовой частоты на соседних узлах.
канала
канала
Для отправки сообщения отводится столько тайм-слотов, сколько требуется кадров фиксированного размера L для отправки сообщения длиной MaxMessageSize, даже если в какой-то момент фактический размер отправляемого сообщения меньше MaxMessageSize
В некоторых вариантах при реализации разработанного способа используют передатчик кадров, выполненный с возможностью держать паузу, чтобы время, затраченное на передачу кадра неполного размера было равно времени передачи кадра фиксированного размера.
Предпочтительно передача кадров от узлов соседям для всей сети должна начаться и закончиться в течение единого тайм-слота, независимо от размера кадра. По одной линии в течение одного тайм-слота не может быть передано более одного кадра. Сам же способ передачи кадра на канальном уровне может использовать, например, сопровождающий тактовый сигнал (синхронный способ) или, напротив, использовать, например, стартовые/стоповые биты при передаче каждого байта (асинхронный способ).
Преимущественно разрешение конфликта между кадрами по очередности передачи на выходном порту оконечной станции или коммутатора осуществляют статически на этапе проектирования системы путем задания для каждого выходного порта статического циклического расписания на N тайм-слотов, где N достаточно велико и имеет общее для всей сети значение.
В некоторых вариантах реализации разработанного способа каждый порожденный кадр на оконечной станции помещают в свою ячейку расписания выходного порта, а каждый прибывающий в коммутатор кадр помещают в соответствующую ячейку расписания на соответствующем выходном порту или в нескольких портах, если это требуется для мультикаста.
Предпочтительно используются периоды отправки сообщений, делящие нацело длину N циклического расписания.
В большинстве вариантов реализации разработанного способа размер потребного буферного пространства в оконечной станции или в коммутаторе на этапе проектирования удается определить существенно меньшим произведения длины фиксированного размера кадра на длину циклического расписания и на число выходных портов в узле.
При реализации разработанного способа предварительно осуществляют статическую маршрутизацию виртуальнвх каналов. Для этого проводят расчет интенсивности потоков для каждого из проектируемых виртуальных каналов в предположении, что канал имеет интенсивность, равную
канала
канала
канала
R=[MaxMessageSize+L-1]/Т
канала
(где [] означают целую часть, Т - период, a L -фиксированный размер кадра) после чего производят упорядочение виртуальных каналов по убыванию их интенсивности, что позволяет оптимизировать использование запараллеленных линий между коммутаторами.
При этом моделируют редуцированную сеть, т.е. сеть, в которой запараллеленные линии связи квази отождествлены.
Затем поочередно по упорядоченному списку виртуальных каналов осуществляют маршрутизацию каждого канала в редуцированном графе по алгоритму поиска кратчайшего пути в графе. После этого на всем древовидном (в силу допустимости мультикаста) пути виртуального канала осуществляют выбор той из запараллеленных линий, в которой накопленная при ранее рассмотренных виртуальных каналах интенсивность минимальна. Одновременно проверяют непревышение суммарной интенсивности проходимых по маршруту линий пропускной способности этих линий с учетом интенсивности передачи синхрокадров. Если таковая превышена, то набор виртуальных каналов должен быть пересмотрен в сторону уменьшения интенсивности отдельных каналов или сокращения их числа. Суммарную интенсивность на каждой проходимой линии увеличивают на интенсивность добавляемого канала.
Как отдельный «виртуальный канал» можно рассматривать древовидный канал распространения времени, отличающийся от обычного виртуального канала тем, что:
- во-первых, его синхрокадры отсылаются одновременно всеми узлами (момент начала отсылка - абсолютное время по локальным часам, кратное 0.1 сек),
- во-вторых, полученный синхрокадр использют для синхронизации и затем уничтожают, не маршрутизуя его на выходные порты, соответствующие ребрам дерева.
Затем составляют статическое циклическое расписание оконечной станции. Для этого рассматривают поочередно все оконечные станции сети, для каждой оконечной станции рассматривают поочередно тайм-слоты расписания, вводят понятие «недосыла» - перечня уже сгенерированных кадров, для которых еще не отведен тайм-слот, в котором он должен быть отослан, при нахождении первого же тайм-слота t, в котором должно быть сгенерировано одно или больше сообщений разных виртуальных каналов, формируют массив недосыла - массив кадров, которые должны быть отосланы, причем в этот массив включают все кадры всех сообщений, формйрующихся в данный момент (тайм-слот). Массив кадров недосыла как один из возможных вариантов упорядочивают по следующему принципу
- приоритет виртуального канала, которому принадлежит кадр (сначала высший);
- момент генерации сообщения, которому принадлежит кадр (сначала наименьший);
- номер виртуального канала (сначала наибольший), т.е. предпочтение отдается наименее интенсивному каналу;
- номер сообщения в виртуальном канале (сначала наименьший);
- номер кадра в сообщении (сначала наименьший).
Таким образом обеспечивют естественный порядок кадров в потоке по виртуальному каналу.
Из массива извлекают первый кадр при таком упорядочении и отсылку этого кадра назначают на текущий тайм-слот. Так строят первый элемент циклического расписания, при этом устанавливают флажок занятости в маске занятых ячеек (тайм-слотов).
Формат таблицы циклического расписания таков: виртуальному каналу (по его номеру), а также номеру периода внутри общего цикла работы системы и номеру кадра внутри сообщения ставят в соответствие номер ячейки расписания. Дополнительно используют маску занятых ячеек с числом элементов, равным N, и еще одну маску такой же длины - уже распределенных ячеек, т.е. тех, которым сопоставлены ячейки на следующем коммутаторе. В отличие от маски занятых ячеек для одной ячейки на оконечной станции для маски распределенных ячеек задается не один бит, а целый набор битов (по числу выходных портов на смежном коммутаторе). Смысл этой последней маски будет ясен после рассмотрения составления расписания на коммутаторах. После составления расписания на оконечной станции все элементы маски распределенных ячеек должны быть инициализированы значением 0.
Далее осуществляют переход к следующему тайм-слоту t+1, определяют есть ли виртуальные каналы, которые генерируют сообщения в этот момент.Если такие сообщения есть, то массив недосыла пополняют кадрами этих сообщений и заново переупорядочивают по тому же принципу, что и использовали ранее. Если таких сообщений нет, то сразу приступают к следующему шагу обработки массива недосыла.
При реализации следующего шага, если имеющийся на момент тайм-слота t+1 массив недосыла непуст, то извлекают из него самый первый элемент и назначают время отсылки соответствующему кадру тайм-слот t+1, а также проставляют флажок занятости в маске занятых ячеек. Если же массив недосыла на данный момент пуст, то оставляют циклическое расписание и маску занятости в неприкосновенности.
Закончив этот шаг, возвращаются к предыдущему и так продолжается до тех пор, пока не будет достигнут конец циклического расписания, т.е. пока не завершено рассмотрение последнего элемента циклического расписания, т.е. ячейки под номером N-1. В этом случае следующей рассматриваемой ячейкой (тайм-слотом) будет ячейка под номером 0.
Дальнейшее назначение кадра тайм-слоту будет происходить по несколько иной схеме: если тайм-слот пуст, то он будет заполняться самым первым элементом из массива недосыла, если не пуст, то занимающий его кадр будет добавляться в массив недосыла, массив недосыла будет заново переупорядочиваться, и первый кадр из него будет помещаться в освобожденную ячейку. Опустошение массива недосыла будет обозначать завершение формирования циклического расписания на рассматриваемой оконечной станции.
Гарантия того, что свободная ячейка для каждого элемента массива недосыла в конце концов найдется, обеспечивается тем, что на этапе маршрутизации было гарантировано, что суммарная интенсивность виртуальных каналов на выходных портах оконечных станций не превысит пропускной способности выходного порта (с учетом синхрокадров).
Составление статического циклического расписания на коммутаторах проводят следующим образом.
В отличие от оконечных станций, на которых статическое расписание для одной станции составляют сразу полностью, на коммутаторах расписания составляют по одному тайм-слоту сразу на всех коммутаторах.
Начало составления расписаний начинают с тайм-слота t = 2 (при условии, что нумерация тайм-слотов начинается с 0). Это обусловлено тем, что в дальнейшем будет намеренно задерживаться отправка принятых кадров на один тайм-слот с тем, чтобы избежать проблем в случае небольшой рассинхронизации пересылок.
Для очередного коммутатора запускают цикл по его выходным портам.
В рассматриваемый момент t (в том числе и t = 2) при формировании массива недосыла для выходного порта просматривают все входные порты данного коммутатора, определяют подсоединенные к этим входным портам выходные порты оконечных станций или других коммутаторов и исследуют занятые ячейки под номером t - 2 расписаний этих выходных портов (внешних по отношению к рассматриваемому). Если эти кадры в этих ячейках принадлежат виртуальным каналам (одно- или многоадресным, т.е.
мультикаст), которые должны быть направлены в рассматриваемый порт, то такой кадр помещают в массив недосыла для данного порта (и при первоначальном формировании этого массива в момент t = 2, и в последующие моменты, при пополнении массива).
Массив недосыла для данного порта упорядочивают в соответствии с некоторой стратегией. Их может быть несколько, например:
Стратегия 1:
- приоритет виртуального канала, которому принадлежит кадр (сначала высший);
- момент генерации сообщения, которому принадлежит кадр (сначала наименьший);
- номер виртуального канала (сначала наибольший);
- номер сообщения в виртуальном канале (сначала наименьший);
- номер кадра в сообщении (сначала наименьший).
Стратегия 2:
- приоритет виртуального канала, которому принадлежит кадр (сначала высший);
- крайний срок для доставки сообщения, которому принадлежит кадр (сначала наименьший). Под крайним сроком имеется в виду сумма момента генерации сообщения и максимально допустимого времени на передачу всего сообщения;
- номер виртуального канала (сначала наибольший);
- номер сообщения в виртуальном канале (сначала наименьший);
- номер кадра в сообщении (сначала наименьший).
Стратегия 3:
- приоритет виртуального канала, которому принадлежит кадр (сначала высший);
- время пребывания кадра в буфере при ожидании отправки в
данный порт (сначала самое долгое)
- номер виртуального канала (сначала наибольший);
- номер сообщения в виртуальном канале (сначала наименьший);
- номер кадра в сообщении (сначала наименьший).
Первые 2 стратегии используют для минимизации времени доставки сообщения, 3-ю стратегию используют, когда критичным является объем используемого буферного пространства в коммутаторе.
Можно использовать и другие стратегии по усмотрению интегратора сети.
По завершении упорядочения из массива извлекают самый первый элемент и назначают на отправку в данном тайм-слоте для данного выходного порта. Элемент маски занятых ячеек для данного тайм-слота устанавливают в 1. В маске распределенных ячеек на предшествующем порту (т.е. в предыдущем узле), откуда прибыл кадр, соответствующей упомянутому первому элементу, бит, соответствующий рассматриваемому выходному порту на рассматриваемом коммутаторе, устанавливают в 1.
После этого осуществляют переход на рассмотрение следующего порта коммутатора, или следующего коммутатора, или следующего тайм-слота, в зависимости от того, какой этап закончен.
6. После того, как закончена обработка последнего тайм-слота, а на каком-либо порту какого-либо коммутатора еще остается непустым массив недосыла, заново начинают обработку тайм-слотов с 0-го номера, но уже по видоизмененному алгоритму: если тайм-слот пуст, то его заполняют первым элементом из массива недосыла. Если непуст, то соответствующую ячейку извлекают и включают в массив недосыла. Массив недосыла переупорядочивают и первый элемент вновь упорядоченного массива помещают в рассматриваемый тайм-слот. Извлеченная ячейка будет перераспределена, вообще говоря, позднее. Алгоритм в этом смысле аналогичен алгоритму для случая оконечной станции.
Работу алгоритма завершают тогда, когда на всех портах в системе все занятые ячейки окажутся распределенными - за исключением ячеек на тех выходных портах, которые обращены к оконечным станциям.
. Возможность окончания алгоритма гарантируется тем обстоятельством, что на этапе маршрутизации было гарантировано, что суммарная интенсивность виртуальных каналов нигде не превысит пропускной способности выходного порта. Возможно, при этом придется рассмотреть несколько прохождений цикла расписания - в зависимости от занятости сети и от длины пути виртуального канала.
Расчет потребного буферного пространства коммутатора проводят следующим образом. Поскольку отводить буфер под каждый тайм-слот таблицы расписания на каждом порту представляется слишком расточительной практикой, то проводят следующие операции при соблюдении следующих предпосылок. Во-первых, один и тот же кадр может дублироваться при мультикасте в несколько портов и тогда он будет занимать пространство, кратное тому, что необходимо, а во-вторых, - и это главное - нет нужды сохранять буфер для кадра, который уже отправлен со всех портов куда он маршрутизован (портов может быть больше одного в случае мультикаста). Поэтому целесообразно в возможно большей степени исключить бесцельные траты памяти.
Прежде всего, заметим, что кадр, передача которого с предыдущего порта началась в момент t (т.е. номер его тайм-слота на предыдущем порту равен г), должен оставаться в буферной памяти коммутатора до момента s + 1, где s - номер его тайм-слота на рассматриваемом порту (причем для каждого из портов, куда кадр маршрутизован).
Для подсчета потребного буферного пространства в коммутаторе вводят переменную v, значение которой равно объему буферного пространства, используемого в рассматриваемый момент t (где t - номер тайм-слота) и запускают цикл по t, т.е. номеру тайм-слота. При этом просматривают расписания на всех выходных портах устройств, подсоединенных ко входным портам данного коммутатора.
Для данного номера тайм-слота определяют, является ли соответствующий элемент в расписании соседнего узла (откуда должны приходить кадры) непустым. Если да, то на данный кадр заводят специальный счетчик, начальное значение которого равно величине веерности виртуального канала, которому он принадлежит, т.е. числу выходных портов данного коммутатора, в которые этот кадр должен быть направлен (отличие от 1 возможно при мультикасте). Кроме того, к величине v плюсуют 1. По завершении обхода соседей значение переменной v будет содержать число буферов, используемых в данный момент. Вычисляемое максимальное значение потребного буферного пространства в этот момент получится как V=max (V, v), (предполагается, что первоначальное значение V устанавливается равным 0). Прежде чем переходить к следующему тайм-слоту t + 1, должен быть рассмотрен вопрос о том, как освобождают буфера к концу тайм-слота t. Просматривают моменты t расписаний всех выходных портов исследуемого коммутатора. Если данный элемент непуст, то счетчик, созданный для него в момент прихода соответствующего кадра на какой-то из входных портов, декрементируется и осуществляется проверка, обнулился ли этот счетчик. Обнуление счетчика означает, что все экземпляры кадра при мультикасте уже отправлены, и нет нужды продолжать хранить данный кадр в буфере, т.е. величину v следует декрементировать. Счетчик же можно уничтожить.
В описанном алгоритме необходимо учитывать следующую тонкость: непустой кадр в расписании выходного порта может соответствовать кадру, принятому на предыдущем проходе циклического расписания. Чтобы обойти это обстоятельство, для подсчета У следует осуществить два прохода циклического расписания, причем на первом проходе не принимать во внимание непустые элементы тайм-слотов t на выходных портах, соответствующих кадрам, которые прибыли в тайм-слоты s, где t - 1 ≤ s ≤ N - 1, т.е. на предыдущем проходе.
При реализации разработанного способа коммутатор выполняют следующим образом.
Коммутатор снабжают следующими структурами
- общим буфером объемом = V × (стандартный размер кадра), где
V - число буферов, рассчитанное ранее. Размер отдельного буфера = стандартному размеру кадра. Можно рассматривать общий буфер как массив буферов Buf[V] для кадров;
- динамическая битовая маска Occ занятости буферов объемом V бит;
- FIFO указателей на свободные буфера. Емкость FIFO - V позиций;
- для каждого ВХОДНОГО порта статическим массивом
p
Route[N] статических масок маршрутизации пришедшего кадра по выходным портам. Размер массива равен размеру циклического расписания N. Число массивов = Р;
p
p
p
p
p
p
t
t
- для каждого ВХОДНОГО порта статическим массивом указателей pSlot[N] на статический массив тайм-слотов Slot[Fan] выходных портов, куда должен быть помещен указатель, на буфер, где хранится пришедший кадр. Здесь t - номер тайм-слота, в котором был получен пришедший кадр, Fan, -«веерность» виртуального канала в коммутаторе, которому принадлежит пришедший кадр (т.е. число выходных портов, куда должен быть маршрутизован пришедший кадр или, что то же, число единиц в маске Route[t] в случае одноадресной рассылки Fan=1; в случае многоадресной - минимум 1, максимум число приемников виртуального канала). Размер массива pSlots[N] равен размеру циклического расписания N. Число массивов = Р;
p
p
- для каждого ВЫХОДНОГО порта циклическим расписанием, т.е. динамическим массивом TimeWheel[N] указателей TimeWheel[t] на буферную память, где хранится кадр, который надо отправить в тайм-слоте t. Число массивов = Р. Значение указателя 0xFFFF интерпретируется как пустой указатель;
p
- статической битовой маской гашения Free[N] для каждого выходного порта размером N бит. Единичное значение бита маски под номером t означает необходимость сброса бита занятости буфера (Occ[i]), указатель i на который содержится в позиции t циклического расписания для того же выходного порта, с которым ассоциирована битовая маска. Единичное значение ставится для того кадра, который используют в последний раз при мультикасте. Здесь необходима аккуратность в том случае, когда сброс бита занятости происходит одновременно (т.е. в одном и том же тайм-слоте) из разных портов. Это происходит тогда, когда максимальная задержка отправки одного и того же мультикаст-кадра реализуется на двух или более выходных портах.
При этом для получения конфигурации коммутатора заблаговременно инструментальными средствами вычисляют статические:
p
- массивы Route[N] масок маршрутизации (т.е. маски выходных портов, откуда будет отправлен кадр, прибывший в тайм-слоте t, где 0≤t≤N-1).
p
- массивы pSlots[N] указателей на массивы (перечни) номеров тайм-слотов, в расписаниях соответствующих выходных портов, куда должны быть помещены копии прибывших кадров (точнее, указатели на единственную копию).
t
p
- сами массивы Fan, Fan(0≤t≤N-1; 0≤р≤Р-1) номеров тайм-слотов, в расписаниях соответствующих выходных портов, куда должны быть помещены копии прибывших кадров,
p
- маски Free[N] гашения битов занятости буферов (в случае единичного значения бита для некоторого тайм-слота по завершении отправки кадра в этом тайм-слоте гасится бит занятости буфера, в котором лежит тело кадра).
и помещают в постоянную память коммутатора При включении коммутатора
- FIFO наполняют указателями на все буфера (т.е. все буфера освобождаются)
- маску занятости Осе сбрасывают.
- коммутатор переходит в предстартовое состояние (состояние ожидания инициализации - см. далее описание инициализации работы узла сети).
t
t
t
1
2…
p
p
p
p
Работа коммутатора в штатном режиме проходит следующим образом. Для прибывающего в момент начала тайм-слота t кадра из FIFO извлекается указатель на свободный буфер, куда этот кадр и помещается. Соответствующий буферу бит занятости устанавливается в 1. Если в данном тайм-слоте кадр не прибывает, указатель на буфер все равно извлекается, чтобы не сломать механизм освобождения буфера, бит занятости, однако, не устанавливается. Из массива масок маршрутизации, извлекается маска для данного порта и в циклические расписания портов, номера которых соответствуют единичным битам маски записываются копии указателя, при этом номера тайм-слотов, по которым осуществляется запись, извлекаются из массива Fan. Доступ к массиву Fan осуществляется по указателю pSlots[t]. Массив Fan состоит из стольких элементов t, t, сколько единиц в маске маршрутизации для данного порта и тайм-слота t. При достижении времени момента начала тайм-слота, для которого заполнен указатель на буфер в циклическом расписании выходного порта (если бит занятости этого буфера установлен) начинается передача кадра из буфера в линию. По завершении данного тайм-слота в случае единичного значения бита гашения бит занятости буфера сбрасывается, а указатель на этот буфер помещается в хвост FIFO. Охарактеризованный механизм первоначальной проверки бита занятости предусмотрен для того, чтобы не передавать старые данные, лежащие в буфере, когда фактически соответствующий кадр не был передан в надлежащее время.
Инициализация работы узла сети происходит следующим образом. Основой для работы сети SYNCnet является наличие достаточно точной синхронизации времени между работой отдельных узлов сети, поэтому перед началом штатной работы узла он должен быть синхронизован с другими узлами. Предполагается, что:
- в графе сети выделен направленный граф-дерево распространения времени, содержащий все узлы сети, причем направление таково, что оконечная станция - корень дерева - является источником ребра этого дерева. Указанная оконечная станция является, по существу, сервером времени;
- синхронизация таймеров осуществляется по локальной сети SYNCnet путем периодической (с периодом 0.1 сек) посылки каждым узлом своим соседям по нисходящим ребрам дерева специального вида «синхрокадров», содержащих значение времени их отсылки по локальным часам отсылающего узла;
- узлы не обязаны включаться одновременно. Невключенный узел препятствует, таким образом, переходу к штатной работе всех узлов, расположенных ниже его по дереву;
- заранее известно время на прохождение синхрокадра от одного узла до соседнего.
Сервер времени начинает штатную работу сразу после включения. Началом цикла его работы считается абсолютное время по его локальным часам, кратное 1 сек. Поскольку сервер включается в произвольное время, постольку необязательно, что его фактическая готовность совпадет с началом цикла.
Узел, отличный от сервера времени, может пребывать в двух состояниях - предстартовом и штатном.
Узел в предстартовом состоянии, принимая посылаемые соседями кадры, игнорирует все те, которые приходят не от узла, расположенного выше по дереву и все кадры, отличные от синхрокадров.
Получив два синхрокадра, узел полностью настраивает свою систему синхронизации и переходит в штатное состояние. Описание настройки синхронизации приведено ниже после перечисления используемых регистров.
После прихода в штатное состояние узел начинает передавать и информационные кадры и синхрокадры, как обычно, при этом передаваемые кадры будут, возможно, игнорироваться соседями, пока они сами не перейдут в штатное состояние.
Основные задачи используемой при реализации разработанного способа системы синхронизации:
- обеспечить малые невязки между локальным временем соседних узлов,
- обеспечить монотонность локального времени при подстройке часов,
- обеспечить малые ошибки при замерах интервалов времени на одном узле (иными словами, исключить скачкообразные изменения времени при подстройке часов).
Эти задачи решены за счет введения трех основных регистров и нескольких вспомогательных.
В частности, введены системные часы, содержащие целое, и аппаратно инкрементирующиеся с некоторым периодом (один тик) в соответствии с кварцевым генератором на узле (цена младшего бита 1 тик)
Также введена набегающая поправка (за счет отклонения частоты системных часов от частоты эталонных), содержащая знаковое число фиксированной точности с дополнительными битами после точки, отмечающей позицию единицы. С ним ассоциирован регистр поправки за тик (знаковое целое), содержимое которого добавляется к регистру набегающей поправки при каждом тике, т.е. это величина инкремента. Цена младшего бита регистра поправки за тик такая же, как и у регистра набегающей поправки.
Дополнительно введена компенсирующая поправка, содержащая знаковое число фиксированной точности с дополнительными битами после точки и обеспечивающая первоначальное приведение системных часов к эталонному времени и дополнительную подстройку неучтенной невязки на этапе инициализации. На этапе предстартового состояния регистр используется дважды. На этапе штатной работы используются дополнительно два регистра - регистр шага подстройки и регистр количества шагов подстройки. Их назначение - обеспечить плавное парирование случайных колебаний времени доставки синхрокадров.
Регистр локального времени формируется на момент его считывания сложением трех основных регистров с отбрасыванием младших разрядов.
1
2
1
2
Начальная процедура синхронизации проходит следующим образом. При получении 1-го синхрокадра с эталонным временем соседнего узла регистр набегающей поправки, регистр поправки за тик, обнуляются, а регистр компенсирующей поправки устанавливается таким образом, чтобы сумма пришедшего в 1-м синхрокадре эталонного времени + время доставки синхрокадра по линии связи (вычисляемое) оказалась равна локальному времени (в данный момент сумме значения системных часов и регистра компенсирующей поправки). При получении 2-го синхрокадра будет вычислена невязка длительности интервалов времени между моментами Т и Т отправки кадров (в эталонном времени) и между моментами Т' и Т' получения кадров (в локальном времени синхронизируемого узла) и вычислено время поправки за тик путем деления полученной невязки на число тиков системных часов между получением 1-го и 2-го синхрокадра. Результат будет помещен в регистр поправки за тик. Регистр компенсирующей поправки устанавливается заново так, чтобы сумма пришедшего во 2-м синхрокадре эталонного времени + время доставки синхрокадра по линии связи оказалась равна локальному времени на момент получения 2-го синхрокадра. С этого момента считается, что начальный процесс синхронизации завершен и узел перешел в состояние готовности, т.е. в штатное состояние. С завершением начального процесса синхронизации автоматически возникает нарезка времени на тайм-слоты, поскольку возникает фактически используемое время, а старт цикла определяется моментом кратности этого времени целому числу секунд.
В процессе штатной работы синхронизация поддерживается:
- в; моменты получения синхрокадров происходит коррекция регистра поправки за тик значением невязки (интервала отсылки последовательных синхрокадров в эталонном времени) и (интервала получения последовательных синхрокадров в локальном времени), отнесенного к числу тиков между моментами получения синхрокадров,
- а в момент очередного тика регистр набегающей поправки инкрементируется на текущее значение регистра поправки за тик.
- в момент получения очередного синхрокадра значение регистра количества шагов подстройки устанавливается в стандартное значение М, а значение регистра шага подстройки устанавливается равным наблюденной разности локального времени и полученного времени синхронизующего узла (с учетом времени его доставки), отнесенным к числу М.
- при очередном тике регистр компенсирующей поправки инкрементируется на значение регистра шага подстройки, а регистр количества шагов подстройки декрементируется на 1. Эти операции выполняются только при ненулевом значении регистра количества шагов подстройки. Число М выбирается таким образом, чтобы регистр количества шагов подстройки успевал обнулиться между получениями соседних синхрокадров.
Кадр SYNCnet, используемый при реализации разработанного способа, имеет структуру, приведенную на рис.,
где: hdr 2-х байтный заголовок, содержащий номер тайм-слота
отправки и в старшем бите признак, является ли данный кадр
обычным кадром или синхрокадром.
data данные длиной до 1024 байт
crc контрольная сумма поля данных,
eof признак конца кадра.
При этом передача по SYNCnet является байт-ориентированной.
При реализации разработанного способа технические сложности планирования отправки кадров и определение потребности в ресурсах вынесены на этап проектирования, что обеспечивает упрощение логики работы узлов сети и полную детерминированность связи между оконечными станциями на борту космических аппаратов.