
Протокол lontalk
Протокол LonTalk (один из главных компонентов технологии LonWorks) относится к классу протоколов, описываемых 7-уровневой сетевой моделью OSI. В терминах OSI-модели LonTalk реализует функции для всех уровней, а именно:
– управление физическим уровнем (уровни 1 и 2);
– присвоение имен, адресация и маршрутизация (уровни 3 и 6);
– достоверность соединения и эффективное использование канальной пропускной способности (уровни 2 и 4);
– обслуживание приоритетности сообщений (уровень 2);
– удаленный доступ (уровень 5);
– подтверждение подлинности (авторизация доступа) (уровни 4 и 5);
– управление сетью (уровень 5);
– сетевой интерфейс (уровень 5);
– интерпретация данных и передача "чужих" по формату данных (уровень 6);
– совместимость на прикладном уровне (уровень 7).
3.1. Уровневая OSl-модель протокола LonTalk:
1. Phisical Layer (физический уровень) – многообразие сред передачи и методов кодирования данных.
Протокол LonTalk позволяет организовывать сегменты сети с использованием различных физических сред передачи: витая пара (twisted pair) (до 1,25 Мбит/с), радиочастотный канал (RF) (2,4 ГГц; 900 МГц; 450 МГц; 49 МГц и т.д.), инфракрасный луч (infrared), линии напряжения (power line), коаксиальный кабель (coaxial cable) и оптический кабель (fiber optic). Для каждого типа физического канала существуют трансиверы, обеспечивающие работу сети на различных по длине каналах, скоростях передачи и сетевых топологиях. LonTalk не опирается на определенную реализацию физического уровня. Существуют протоколы и методы кодирования для самых разнообразных физических каналов передачи данных. Например, метод дифференциального манчестерского кодирования выбран для витой пары, FSK-модуляция (двоичная частотная модуляция с постоянной амплитудой, но разными частотами синусоиды, для передачи логического «0» и логической «1») применяется для работы на сегментах линий напряжения и на радиочастотах. Среда, по которой работает канал, и типы приемно-передающих устройств определяют требования и ограничения каждой топологии проводки. Соответственно, тип среды передачи и ее характеристики определяются типом приемопередатчика и ничем более. В настоящее время находят применение несколько типов приемопередатчиков:
– TP/FT. Передача сигнала по линии типа «витая пара» (twisted pair/free topology). Передача информации путем кодирования цифрового сигнала низковольтными импульсами. Применяется «манчестерское кодирование». Самый распространенный тип приемопередатчика. В стандартных для данного типа приемопередатчика после обозначения типа указывается скорость передачи.
– TP/LP. Передача сигнала по линии типа «витая пара», когда питание устройств осуществляется по той же паре проводников. Проводники при этом находятся под постоянным напряжением 42В, и на эту постоянную составляющую накладывается информационный «манчестерский» сигнал. Очень распространенный тип приемопередатчика.
– PL. Передача сигнала по сетям силовой электрической проводки напряжением 220/380В. Кодированный высокочастотный сигнал распространяется по обыкновенным электрическим проводам, проходя через трансформаторы, индуктивные и емкостные нагрузки.
– IR. Инфракрасный канал. Обычно используется для передачи сигнала на небольшие расстояния, например, от пультов управления к приемникам.
– FO. Передача сигнала Lon по волоконной оптике. Самое большое расстояние передачи и высокая скорость.
–RF. Передача сигнала через радиоканал на разрешенной для промышленного применения частоте. Очень часто применяется для связи датчиков, расположенных в труднодоступных местах, с базой, например, метеостанции с сетью здания.
– Lon over IP. Очень распространенная система организации магистральных каналов, обладающая высокой скоростью и хорошей совместимостью. Также используется для удаленного управления объектами через Интернет.
В случае радиоканала, инфракрасного канала или работы по электрической сети ни о какой топологии сети говорить не приходится, поскольку ее определяют внешние факторы. В такой сети устройства могут произвольно «появляться» и так же произвольно «исчезать». В таких сетях возможны коллизии, когда устройства одной сети принимают сигналы другой сети. Все эти вопросы разрешены в самом протоколе LonTalk. Сети IR, PL и RF работают устойчиво и с хорошей скоростью.
Поскольку сеть LonWorks событийно-ориентированная, и устройства обмениваются пакетами различной длины, не создавая непрерывного потока, то и говорить о пропускной способности в байтах/секундах бессмысленно. Стандартная пропускная способность каналов:
– PL составляет 11-20 пакетов в секунду;
– TP/FT-10 225 пакетов в секунду;
– TP/XF-1250 720 пакетов в секунду;
– Lon over IP более 30000 пакетов в секунду.
Самая простая топология TP/FT - это топология шины. У каждого устройства, имеющего интерфейс Lon, имеются две клеммы, к которым и присоединяются проводники. Последовательно обходя устройство за устройством проводом «витая пара», мы получим топологию шины (рисунок 3.1). С обоих концов линии ставятся терминаторы или согласованные волновые сопротивления, которые не дают распространяться отраженной волне. Топология шины может иметь наибольшую длину 2700 метров между крайними точками, она проста по организации, в ней проще искать места повреждений. Если расстояние между крайними точками больше указанной величины, ставят повторитель линии или маршрутизатор (router) (устройство сети, соединяющее два канала и обеспечивающее путь передачи пакетов данных между ними).
Рисунок 3.1 – Топология шины
Однако в процессе эксплуатации и доработок сети, как правило, появляются новые устройства. И если новое устройство ставится в отдаленном месте, вести к нему сеть становится проблематично. В этом случае выручает свободная топология. Она позволяет укладывать кабель в какие угодно конфигурации и добавлять устройства по самым различным схемам. Такая возможность – одно из значительных преимуществ сетей Lon. Например, кабель можно организовывать в кольцо для повышения устойчивости сети к повреждениям. Однако длина кабеля в этом случае не может быть более 5 метров. Процесс проектирования кабельных проводок в Lon сети очень прост. Сети Lon малочувствительны к электромагнитным помехам. При добавлении нового устройства не нужно думать о создании специальных проводников. Логическая топология сети не связана с физической топологией и достигается путем программирования.
Маршрутизаторы могут работать по разным алгоритмам и, соответственно, бывают четырех типов:
1. Конфигурируемые (configured router);
2. Самонастраиваемые (learning router);
3. Сетевые мосты (bridge);
4. Сетевые повторители (repeater).
Сетевые повторители являются простейшими устройствами, обеспечивающими передачу пакетов между двумя каналами. Использование сетевых повторителей позволяет организовывать подсеть, состоящую из множества каналов. Сетевые мосты обеспечивают передачу пакетов между двумя каналами внутри домена. Самонастраиваемые маршрутизаторы (интеллектуальные) просматривают весь сетевой поток и "изучают" (настраиваются) на сетевую топологию на уровне домена/подсети. Полученной информацией такой маршрутизатор пользуется при "прокладке" пути для доставки пакетов данных между каналами. Конфигурируемые маршрутизаторы (интеллектуальные) определяют пути для данных не на основе эмпирических знаний о топологии сети, а на основе внутренних таблиц возможных маршрутов. Таблицы создаются и загружаются с помощью инструментальных сетевых средств.
Для ускорения доставки "важных" пакетов в протоколе введено понятие TimeSlot-приоритета сетевого узла (priority time slot). TimeSlot-приоритет – это временной промежуток ожидания доступа к шине отдельного узла канала. Приоритеты назначаются конфигуратором сети, гарантирующим уникальность приоритета для каждого узла. Приоритет изменяется в диапазоне от 0 до 127 (по количеству возможно устанавливаемых узлов на канале). Единица TimeSlot-приоритета соответствует двум единицам битового времени. Например, приоритет 15 соответствует 30-ти битовым временам на соответствующей скорости передачи. Таким образом, узел с приоритетом 2 передаст свои пакеты раньше, чем узел с приоритетом 4.
В качестве соглашения принято, что приоритет 1 зарезервирован за конфигуратором сети, а это означает, что не может быть прикладной задачи, имеющей возможности опередить конфигуратор. Когда приоритетный пакет достигает маршрутизатора, он устанавливается в очередь приоритетных пакетов. Далее маршрутизатор обрабатывает свою очередь пакетов (отправляет их в другой канал) на основе собственного TimeSlot-приоритета.
MAC Sublayer (подуровень MAC) – алгоритм предупреждения коллизий (конфликтных ситуаций). Обслуживание приоритетов и обнаружение коллизий.
В качестве средства борьбы с коллизиями используется предсказывающий алгоритм их предупреждения. Этот алгоритм реализован на подуровне "Управления Доступом к Среде Передачи" (Media Access Control) канального уровня. Предупреждение позволяет поддерживать поток максимальным, вместо того, чтобы разрешать возникшие коллизии и при этом неизбежно снижать поток.
Входящие пакеты обрабатываются конвейером процессоров Neuron-кристалла: процессором МАС-уровня, основным протокольным процессором и процессором выполнения прикладной задачи. Все верные пакеты, полученные МАС-процессором, для распознания адреса должны передаваться в протокольный процессор через входные сетевые буферы. Если нагрузка сети превышает обрабатывающие возможности протокольного процессора и емкость входных сетевых буферов, то некоторые пакеты могут потеряться. Такие пакеты учитываются в статусе Neuron-кристалла как "пропавшие пакеты". Величина задержки представлена как функция числа незавершенных заданий (backlog), стоящих в очереди на выполнение. "Предсказательность" алгоритма, реализованного на МАС-уровне, основана на оценке числа незавершенных заданий. Каждый узел имеет и поддерживает текущее значение backlog: инкрементирование и декрементирование происходит по результатам отправления и приема пакетов. При скорости 1,25 Мбит/с максимальная выдерживаемая нагрузка протокольного процессора ограничена величиной около 700 пакетов/с, в то время как максимальная сетевая емкость может превышать 1000 пакетов/с. Варьируя величину TimeSlot-приоритета, можно уменьшить емкость сети до уровня устойчивой работы протокольного процессора.
На МАС-уровне используются специальные правила разрешения коллизий:
– если коллизия имела место при двух последовательных попытках передачи пакета с приоритетом, то следующая попытка будет предпринята без использования приоритета;
– при обнаружении коллизии передающий узел должен инкрементировать свое число незавершенных заданий (backlog);
– если коллизия имела место при 255 последовательных попытках передачи пакета, то это задание снимается.
2. Link Layer (канальный уровень) – формирование пакетов, контроль с помощью циклического избыточного кода CRC. При образовании кода используется порождающий многочлен, в результате получается выражение:
,
где k – длительность контрольной части.
Функции канального уровня используют простое кодирование кадров и несложный механизм обнаружения ошибок без восстановления ошибок за счет повторной передачи.
На Физическом уровне поддерживается передача двоичных данных и их квитирование. Каждый LonTalk-узел работает с этим уровнем в одном из двух режимов: прямом или специальном. Прямой режим использует дифференциальное манчестерское кодирование битов. В специальном режиме данные передаются и принимаются последовательно и без кодирования. В обоих случаях каждый пакет сопровождается 16-битным CRC-кодом. Эти два режима позволяют абстрагироваться от конкретной реализации физической среды передачи. При этом конкретный физический протокол в LonTalk-системе может быть использован, если только он удовлетворяет следующим трем условиям:
1. Пассивное состояние сети (физически) должно соответствовать низкому уровню нагрузки в среде передачи;
2. Ошибка скорости передачи не более 0,0001;
3. Для совместимости с более высокими уровнями OSI-модели все физические протоколы должны поддерживать следующие функции: индикация для вышестоящих уровней прихода информационных пакетов, функция запроса данных, функция текущего статуса физической линии.
В случае работы в прямом режиме, контроль над скоростью передачи данных, длиной заголовков пакетов и кодированием берет на себя сам интерфейсный Neuron-микроконтроллер. При специальном режиме эти задачи возложены на трансивер (приемопередающее устройство для сопряжения различных физических протоколов).
3. Network Layer (сетевой уровень) – доставка пакетов внутри одного домена без взаимодействия между доменами. Этот уровень описывает возможные сетевые топологии на основе использования различных маршрутизаторов.
4. Transport Layer (транспортный уровень) – поддержка функций сервера, функций с/без подтверждения, групповых запросов.
Функции транспортного уровня обеспечивают достоверную передачу пакетов по адресу одного абонента или группе абонентов. Для связи с сеансовым уровнем на транспортном уровне реализована поддержка следующих функциональных запросов: послать телеграмму (send_message), принять телеграмму (rcv_Message) и подтверждение завершения передачи (trans_completed).
5. Session Layer (сеансовый уровень) – поддержка функций по схеме запрос/ответ.
Сеансовый уровень занимается реализацией простого механизма запроса/ответа для доступа к удаленным серверам данных и обеспечивает выполнение всего одной функции: запрос/ответ. Для связи с прикладным уровнем на сеансовом уровне реализована поддержка следующих запросов:
1) для CLIENT-интерфейса:
– послать запрос (Send_Request);
– краткий ответ (P_Response);
– признак завершения передачи (Trans_Completed);
2) для SERVER-интерфейса:
– получить запрос (Rcv_Request)
– послать ответ (Send_Response)
В протоколе LonTalk используются четыре типа функциональных команд, отличающихся агоритмом обработки.
Наиболее надежной (по гарантированности доставки данных) считается функция с подтверждением, т.е. любой цикл запроса со стороны узла-передатчика обязательно завершается подтверждением со стороны узла-приемника (узлов-приемников). Если операция завершается тайм-аутом (подтверждение не пришло за определенное время), то команда повторится. Число повторов и величина тайм-аута - величины конфигурируемые. Сигнал подтверждения генерируется на аппаратном уровне.
Также надежной можно считать функции, работающие по принципу запрос/ответ. При этом любой запрос (в том числе и групповой) будет ожидать ответа. Поступающее сообщение-запрос обрабатывается прикладной задачей, которая, в свою очередь, обязана сформировать сообщение-ответ. В ответных сообщениях могут быть возвращены какие-либо данные. Таким образом, функции запроса/ответа можно использовать для создания прикладных задач, работающих по принципу клиент/сервер.
Менее надежными можно считать функции циклического повтора передачи без ожидания подтверждения. Этот способ используется в системах широкого вещания с большим числом узлов, где включение режима подтверждения приведет к сильной нагрузке на сеть.
Наименее надежной считается функция без подтверждения доставки команд и данных. Такая функция используется в системах с очень высокой производительностью. При этом прикладная задача не получает никакой информации о потерях пакетов.
И на транспортном, и на сеансовом уровнях включен механизм контроля авторизованного доступа. Для предотвращения неавторизованного доступа к узлам и их прикладным задачам в LonTalk используется механизм верификации права доступа узла-передатчика к узлу-приемнику. Ключ авторизации представляет собой 48-битный защитный код, сопровождающий каждое сообщение. На основе анализа такого ключа узлы-приемники принимают решение по обслуживанию сообщений. Запрос, не обладающий правом доступа к данным текущего узла, не будет обслужен.
6. Presentation Layer (уровень представления данных)
7. Application Layer (прикладной уровень)
Уровень представления и прикладной уровень создают основу для совместимости узлов LonTalk-протокола. Прикладной уровень обеспечивает все обычные функции по посылке и получению телеграмм, но он при этом пользуется таким понятием, как сетевые переменные. Уровень представления обеспечивает дополнительной информацией о том, как необходимо интерпретировать сетевые переменные (независимо от прикладной задачи). По существующему соглашению имеется набор переменных, которые можно использовать для датчиков, исполнительных устройств и т.п., независимо от производителя таких устройств.
Одной из важных задач, решаемых на прикладном уровне, является передача так называемых "иностранных" по отношению к LonTalk
телеграмм. Такая функция используется для организации шлюзов между доменами, а также для "прокладки тоннелей" через LonTalk к другим протоколам. Система LonWorks имеет богатый набор программных шлюзов в самые разнообразные системы: Ethernet, T1, X.25, Bitbus, Profibus, CAN, Modnet, SINEC, Grayhill, Opto22 (digital), OptoMux, Modbus, ISAbus, STD32 bus, PC/104, VMEbus и EXMbus.