Управление каналом передачи данных высокого уровня (HDLC ) - это бит-ориентированный прозрачный код синхронный канальный уровень протокол, разработанный Международной организацией по стандартизации (ISO). Стандарт для HDLC - ISO / IEC 13239: 2002.
HDLC предоставляет услуги с установлением соединения и без установления соединения..
HDLC можно использовать для многоточечных соединений через исходный главный-подчиненный режимы Normal Response Mode (NRM) и Asynchronous Response Mode (ARM), но сейчас они используются редко; теперь он используется почти исключительно для подключения одного устройства к другому с использованием асинхронного сбалансированного режима (ABM).
HDLC основан на IBM протокол SDLC, который является протоколом уровня 2 для системной сетевой архитектуры IBM (SNA). Он был расширен и стандартизирован ITU как LAP (Link Access Procedure), в то время как ANSI назвал их по существу идентичную версию ADCCP.
. Спецификация HDLC не определяет полную семантика полей кадра. Это позволяет выводить из него другие полностью соответствующие стандарты, и с тех пор производные инструменты появились в бесчисленных стандартах. Он был принят в стек протоколов X.25 как LAPB, в протокол V.42 как LAPM, в Стек протоколов Frame Relay как LAPF и в стек протоколов ISDN как LAPD.
Исходными стандартами ISO для HDLC являются следующие:
ISO / IEC 13239: 2002, текущий стандарт, заменил все эти спецификации.
HDLC послужил источником вдохновения для протокола IEEE 802.2 LLC, и это основа для механизма кадрирования, используемого с PPP в синхронном режиме. линии, используемые многими серверами для подключения к WAN, чаще всего Интернет.
. Аналогичная версия используется в качестве канала управления для E-carrier (E1) и SONET многоканальные телефонные линии. Cisco HDLC использует низкоуровневые методы кадрирования HDLC, но добавляет поле протокола к стандартному заголовку HDLC.
HDLC кадры могут передаваться по синхронным или асинхронным последовательным каналам связи. Эти ссылки не имеют механизма для отметки начала или конца кадра, поэтому необходимо идентифицировать начало и конец каждого кадра. Это достигается за счет использования уникальной последовательности битов в качестве разделителя кадра или флага и кодирования данных, чтобы гарантировать, что последовательность флагов никогда не будет видна внутри кадра. Каждый кадр начинается и заканчивается разделителем кадров. Разделитель кадра в конце кадра также может обозначать начало следующего кадра.
Как для синхронных, так и для асинхронных каналов, последовательность флагов является двоичной "01111110" или шестнадцатеричной 0x7E, но детали сильно отличаются.
Поскольку последовательность флагов состоит из шести последовательных 1-битов, другие данные кодируются, чтобы гарантировать, что они никогда не содержат более пяти 1-битов в строке. Это делается с помощью вставки битов : каждый раз, когда в передаваемых данных появляются пять последовательных 1-битных битов, данные приостанавливаются и передается 0-бит.
Принимающее устройство знает, что это происходит, и после просмотра пяти 1-битов в строке следующий 0-бит удаляется из полученных данных. Если вместо этого шестой бит равен 1, это либо флаг (если седьмой бит равен 0), либо ошибка (если седьмой бит равен 1). В последнем случае процедура приема кадра прерывается и должна быть перезапущена при следующем обнаружении флага.
Эта вставка битов служит второй цели - обеспечению достаточного количества переходов сигналов. В синхронных каналах данные кодируются NRZI, так что 0-бит передается как изменение сигнала в линии, а 1-бит передается как без изменения. Таким образом, каждый нулевой бит предоставляет возможность принимающему модему синхронизировать свои часы через контур фазовой автоподстройки частоты. Если в строке будет слишком много 1 битов, получатель может потерять счет. Битовая вставка обеспечивает минимум один переход за шесть битов во время передачи данных и один переход за семь битов во время передачи флага.
Когда по симплексному или полнодуплексному синхронному каналу не передаются никакие кадры, по каналу непрерывно передается ограничитель кадров. Это генерирует одну из двух непрерывных форм сигнала в зависимости от начального состояния:
Спецификация HDLC позволяет использовать 0-бит в конце разделителя кадра с началом следующего разделителя кадра, то есть «011111101111110». Некоторое оборудование не поддерживает это.
Для полудуплексной или многоточечной связи, когда несколько передатчиков совместно используют линию, приемник на линии будет видеть непрерывные холостые 1 биты в межкадровом периоде, когда ни один передатчик не активен.
HDLC передает байты данных с младшим значащим битом первым (не путать с порядком little-endian, который относится к порядку байтов в многобайтовом поле).
При использовании асинхронной последовательной связи, такой как стандартные RS-232 последовательные порты, вставка битов в синхронном стиле не подходит по нескольким причинам :
Вместо этого в асинхронном кадрировании используется «прозрачность контрольных октетов», также называемая «заполнением байтов » или «заполнением октетов». Октет границы кадра - 01111110, (0x7E в шестнадцатеричном формате ). «Управляющий управляющий октет » имеет значение 0x7D (битовая последовательность «10111110», так как RS-232 передает младший бит первым). Если в передаваемых данных появляется один из этих двух октетов, отправляется escape-октет, за которым следует октет исходных данных с инвертированным битом 5. Например, байт 0x7E будет передан как 0x7D 0x5E («10111110 01011110»). Другие зарезервированные значения октета (такие как XON или XOFF ) могут быть экранированы таким же образом при необходимости.
«последовательность прерывания» 0x7D 0x7E завершает пакет с неполной последовательностью заполнения байтов, вынуждая получателя обнаружить ошибку. Это можно использовать для прерывания передачи пакета без шансов, что частичный пакет будет интерпретирован получателем как действительный.
Содержимое кадра HDLC показано в следующей таблице:
Флаг | Адрес | Элемент управления | Информация | FCS | Флаг |
---|---|---|---|---|---|
8 бит | 8 или более битов | 8 или 16 бит | переменной длины, 8 × n бит | 16 или 32 бита | 8 бит |
Обратите внимание, что флаг конца одного кадра может быть (но не обязательно) флагом начала (начала) следующий кадр.
Данные обычно отправляются в количестве, кратном 8 битам, но этого требуют только некоторые варианты; другие теоретически допускают выравнивание данных не на 8-битных границах.
проверочная последовательность кадра (FCS) - это 16-битная CRC-CCITT или 32-битная CRC-32, вычисленная по Поля адреса, управления и информации. Он предоставляет средства, с помощью которых приемник может обнаруживать ошибки, которые могли быть вызваны во время передачи кадра, такие как потерянные биты, перевернутые биты и посторонние биты. Однако, учитывая, что алгоритмы, используемые для вычисления FCS, таковы, что вероятность того, что определенные типы ошибок передачи останутся необнаруженными, увеличивается с увеличением длины данных, проверяемых на наличие ошибок, FCS может неявно ограничивать практический размер кадра.
Если вычисление FCS получателем не совпадает с вычислением отправителя, что указывает на то, что кадр содержит ошибки, получатель может либо отправить отправителю отрицательный пакет подтверждения, либо ничего не отправить.. После получения пакета с отрицательным подтверждением или истечения времени ожидания пакета с положительным подтверждением отправитель может повторно передать неудачный кадр.
FCS была реализована, потому что многие ранние каналы связи имели относительно высокий коэффициент ошибок по битам, и FCS можно было легко вычислить с помощью простых и быстрых схем или программного обеспечения. Более эффективные схемы прямого исправления ошибок теперь широко используются другими протоколами.
Управление синхронным каналом передачи данных (SDLC ) изначально было разработано для соединения одного компьютера с несколькими периферийными устройствами через многоточечная шина. Исходный «нормальный режим ответа» - это режим «главный-подчиненный», в котором компьютер (или первичный терминал ) дает каждому периферийному устройству (вторичный терминал ) разрешение на разговор по очереди. Поскольку вся связь осуществляется либо с первичным терминалом, либо с него, кадры включают только один адрес, адрес вторичного терминала; первичному терминалу не присвоен адрес. Существует различие между командами,, отправляемыми первичным сервером вторичному, и ответами, отправляемыми вторичным сервером первичному, но это не отражается в кодировке; команды и ответы неотличимы, за исключением разницы в направлении, в котором они передаются.
Нормальный режим ответа позволяет совместно использовать канал связи между вторичными и первичными без конкуренции, поскольку первичный канал дает вторичным каналам разрешение на передачу по одному. Он также позволяет работать по полудуплексным каналам связи, если первичный знает, что он может не передавать, когда он дал разрешение вторичному.
Асинхронный режим ответа - это дополнение HDLC для использования по полнодуплексным каналам. Сохраняя различие между первичным и вторичным, он позволяет вторичному каналу передавать данные в любое время. Таким образом, должен быть какой-то другой механизм, гарантирующий, что несколько вторичных устройств не будут пытаться передавать одновременно (или только один вторичный).
Асинхронный сбалансированный режим добавляет концепцию комбинированного терминала, который может действовать как первичный и вторичный. К сожалению, в этом режиме работы есть свои особенности реализации. В то время как наиболее распространенные отправляемые кадры не заботятся о том, находятся ли они в кадре команды или ответа, некоторые важные кадры имеют (особенно большинство ненумерованных кадров и любой кадр с установленным битом P / F), а поле адреса полученного кадра должно быть исследованным, чтобы определить, содержит ли он команду (полученный адрес - наш) или ответ (полученный адрес - адрес другого терминала).
Это означает, что поле адреса не является необязательным, даже в соединениях точка-точка, где нет необходимости устранять неоднозначность однорангового узла, с которым разговаривают. Некоторые варианты HDLC расширяют адресное поле, включая адреса источника и назначения или явный бит команды / ответа.
Можно выделить три основных типа кадров HDLC:
Общий формат поля управления:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
N (R). Номер последовательности приема | P / F | N (S). Номер последовательности отправки | 0 | I-кадр | ||||
N (R). Номер последовательности приема | P/F | тип | 0 | 1 | S-кадр | |||
тип | P/F | тип | 1 | 1 | U-образный |
Также существуют расширенные (двухбайтовые) формы I и S кадров. Опять же, младший бит (крайний правый в этой таблице) отправляется первым.
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
N (R). Номер последовательности приема | P / F | N (S). Номер последовательности отправки | 0 | Расширенный I- кадр | |||||||||||||
N (R). Номер последовательности приема | P / F | 0 | 0 | 0 | 0 | тип | 0 | 1 | Расширенный S-кадр |
Опрос / Финал - это одиночный бит с двумя именами. Он называется Poll, когда является частью команды (устанавливается первичной станцией для получения ответа от вторичной станции), и Final, когда является частью ответа (устанавливается вторичной станцией для указания ответа или окончания передачи). Во всех остальных случаях бит ясен.
Бит используется как маркер , который передается туда и обратно между станциями. Одновременно должен существовать только один токен. Вторичный отправляет финал только тогда, когда он получил опрос от первичного. Первичный сервер отправляет опрос только тогда, когда он получил окончательный ответ от вторичного сервера, или по истечении времени ожидания, указывающего, что бит был потерян.
При работе в качестве комбинированной станции, важно поддерживать различие между битами P и F, потому что могут быть два цикла контрольных точек, работающих одновременно. Бит AP, поступающий в команда с удаленной станции не является ответом на наш бит P; только бит F, поступающий в ответ.
Оба кадра I и S содержат порядковый номер приема N (R). N (R) обеспечивает положительное подтверждение приема I-кадров с другой стороны канала. Его значением всегда является первый еще не полученный кадр; он подтверждает, что все кадры со значениями N (S) до N (R) -1 (по модулю 8 или по модулю 128) были приняты, и указывает N (S) следующего кадра, который он ожидает получить.
N (R) работает одинаково, независимо от того, является ли он частью команды или ответа. Комбинированная станция имеет только одно пространство порядковых номеров.
Он увеличивается для последовательных I-кадров по модулю 8 или по модулю 128. В зависимости от количества бит в порядковом номере, до 7 или 127 I-кадров могут ожидать подтверждения в любое время.
Информационные кадры или I-кадры переносят пользовательские данные с сетевого уровня. Кроме того, они также включают информацию об управлении потоками и ошибками в сочетании с данными. Подполя в поле управления определяют эти функции.
Младший значащий бит (передаваемый первым) определяет тип кадра. 0 означает I-кадр. За исключением интерпретации поля P / F, нет никакой разницы между кадром команды I и кадром ответа I; когда P / F равно 0, эти две формы полностью эквивалентны.
Контрольные кадры, или «S-кадры», используются для управления потоком и ошибками всякий раз, когда совмещение невозможно или нецелесообразно, например, когда на станции нет данные для отправки. S-кадры в HDLC не имеют информационных полей, хотя некоторые протоколы, производные от HDLC, используют информационные поля для "множественного избирательного отклонения".
Поле управления S-кадром включает в себя начальную цифру «10», указывающую, что это S-кадр. За ним следует 2-битный тип, бит опроса / финала и 3-битный порядковый номер. (Или 4-битное поле заполнения, за которым следует 7-битный порядковый номер.)
Первые (наименее значимые) 2 бита означают, что это S-кадр. Все S-кадры включают в себя бит P / F и порядковый номер приема, как описано выше. За исключением интерпретации поля P / F, нет никакой разницы между S-кадром команды и S-кадром ответа; когда P / F равно 0, две формы полностью эквивалентны.
Ненумерованные кадры или U-кадры в основном используются для управления ссылками, хотя несколько используются для передачи пользовательских данных. Они обмениваются информацией управления сеансом и управления между подключенными устройствами, а некоторые U-кадры содержат информационное поле, используемое для информации управления системой или пользовательских данных. Первые 2 бита (11) означают, что это U-кадр. Пять битов типа (2 перед битом P / F и 3 бита после бита P / F) могут создавать 32 различных типа U-кадра. В некоторых случаях одна и та же кодировка используется для разных вещей, таких как команда и ответ.
Различные режимы описаны в § Конфигурации связи. Вкратце, существует два нерабочих режима (режим инициализации и режим отключения) и три рабочих режима (нормальный ответ, асинхронный ответ и асинхронные сбалансированные режимы) с 3-битными или 7-битными (расширенными) порядковыми номерами.
Эти кадры могут использоваться как часть обычной передачи информации.
Есть несколько кадров U, которые не являются частью HDLC, но определены в других связанных стандартах.
Конфигурации каналов можно разделить на следующие категории:
Три конфигурации канала:
Дополнительная конфигурация канала - это режим отключения. Это режим, в котором находится вторичная станция до того, как она будет инициализирована первичной, или когда она явно отключена. В этом режиме вторичный сервер отвечает почти на каждый кадр, кроме команды установки режима, ответом «Режим отключения». Цель этого режима - позволить первичному устройству надежно обнаружить, что вторичный выключен или иным образом сброшен.
Минимальный набор, необходимый для работы:
Модуль HDLC на другом конце передает кадр (UA), когда запрос принят. Если запрос отклонен, он отправляет (DM) кадр режима отключения.
Тип кадра | Имя | Команда /. Ответ | Описание | Информация | Формат C-поля | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||||
Информация (I) | C / R | Данные обмена пользователем | N (R) | P / F | N (S) | 0 | ||||||
Supervisory (S) | Готовность к приему (RR) | C / R | Положительное подтверждение | Готов к приему I-кадра N (R) | N(R) | P / F | 0 | 0 | 0 | 1 | ||
Прием не готов (RNR) | C / R | Положительное подтверждение | Не готов к приему | N(R) | P / F | 0 | 1 | 0 | 1 | |||
Reject ( REJ) | C/R | Negative Acknowledgement | Retransmit starting with N(R) | N(R) | P/ F | 1 | 0 | 0 | 1 | |||
Selective Reject (SREJ) | C/R | Negative Acknowledgement | Retransmit only N(R) | N(R) | P/F | 1 | 1 | 0 | 1 |
Unnumbered frames are identified by the low two bits being 1. With the P/F flag, that leaves 5 bits as a frame type. Even though fewer than 32 values are in use, some types have different meanings depending on the direction they are sent: as a command or as a response. The relationship between the DISC(disconnect) command and the RD(request disconnect) response seems clear enough, but the reason for making SARMcommand numerically equal to the DMresponse is obscure.
Name | Command/. Response | Description | Info | C-Field Format | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
Set normal response mode SNRM | C | Set mode | Use 3 bit sequence number | 1 | 0 | 0 | P | 0 | 0 | 1 | 1 |
SNRM extended SNRME | C | Set mode; extended | Use 7 bit sequence number | 1 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Set asynchronous response mode SARM | C | Set mode | Use 3 bit sequence number | 0 | 0 | 0 | P | 1 | 1 | 1 | 1 |
SARM extended SARME | C | Set mode; extended | Use 7 bit sequence number | 0 | 1 | 0 | P | 1 | 1 | 1 | 1 |
Set asynchronous balanced mode SABM | C | Set mode | Use 3 bit sequence number | 0 | 0 | 1 | P | 1 | 1 | 1 | 1 |
SABM extended SABME | C | Set mode; extended | Use 7 bit sequence number | 0 | 1 | 1 | P | 1 | 1 | 1 | 1 |
Set Mode SM | C | Set mode, generic | New in ISO 13239 | 1 | 1 | 0 | P | 0 | 0 | 1 | 1 |
Set initialization mode SIM | C | Initialize link control function in the addressed station | 0 | 0 | 0 | P | 0 | 1 | 1 | 1 | |
Request initialization mode RIM | R | Initialization needed | Request for SIMcommand | 0 | 0 | 0 | F | 0 | 1 | 1 | 1 |
Disconnect DISC | C | Terminate logical link connection | Future I and S frames return DM | 0 | 1 | 0 | P | 0 | 0 | 1 | 1 |
Request disconnect RD | R | Solicitation for DISCCommand | 0 | 1 | 0 | F | 0 | 0 | 1 | 1 | |
Unnumbered acknowledgment UA | R | Acknowledge acceptance of one of the set-mode commands. | 0 | 1 | 1 | F | 0 | 0 | 1 | 1 | |
Disconnect mode DM | R | Responder in disconnected mode | Mode set required | 0 | 0 | 0 | F | 1 | 1 | 1 | 1 |
Unnumbered information UI | C/R | Unacknowledged data | Has a payload | 0 | 0 | 0 | P/F | 0 | 0 | 1 | 1 |
UI with header check UIH | C/R | Unacknowledged data | New in ISO 13239 | 1 | 1 | 1 | P/F | 1 | 1 | 1 | 1 |
Unnumbered poll UP | C | Used to solicit control information | 0 | 0 | 1 | P | 0 | 0 | 1 | 1 | |
Reset RSET | C | Used for recovery | Resets N(R) but not N(S) | 1 | 0 | 0 | P | 1 | 1 | 1 | 1 |
Exchange identification XID | C/R | Used to Request/Report capabilities | 1 | 0 | 1 | P/F | 1 | 1 | 1 | 1 | |
Test TEST | C/R | Exchange identical information fields for testing | 1 | 1 | 1 | P/F | 0 | 0 | 1 | 1 | |
Frame reject FRMR | R | Report receipt of unacceptable frame | 1 | 0 | 0 | F | 0 | 1 | 1 | 1 | |
Nonreserved 0 NR0 | C/R | Not standardized | For application use | 0 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonreserved 1 NR1 | C/R | Not standardized | For application use | 1 | 0 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonreserved 2 NR2 | C/R | Not standardized | For application use | 0 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Nonrese rved 3 NR3 | C/R | Not standardized | For application use | 1 | 1 | 0 | P/F | 1 | 0 | 1 | 1 |
Ack connectionless, seq 0 AC0 | C/R | Not part of HDLC | IEEE 802.2 LLC extension | 0 | 1 | 1 | P/F | 0 | 1 | 1 | 1 |
Ack connectionless, seq 1 AC1 | C/R | Not part of HDLC | IEEE 802.2 LLC extension | 1 | 1 | 1 | P/F | 0 | 1 | 1 | 1 |
Configure for test CFGR | C/R | Not part of HDLC | Was part of SDLC | 1 | 1 | 0 | P/F | 0 | 1 | 1 | 1 |
Beacon BCN | R | Not part of HDLC | Was part of SDLC | 1 | 1 | 1 | F | 1 | 1 | 1 | 1 |
C-Field Format | Command | Response | C-Field Format | Command | Response | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||
1 | 1 | 0 | 0 | P/F | 0 | 0 | 0 | UI | 1 | 1 | 1 | 0 | P/F | 0 | 1 | 0 | (unused) | |||
1 | 1 | 0 | 0 | P/F | 0 | 0 | 1 | SNRM | 1 | 1 | 1 | 0 | P/F | 0 | 1 | 1 | CFGR | |||
1 | 1 | 0 | 0 | P/F | 0 | 1 | 0 | DISC | RD | 1 | 1 | 1 | 0 | P/F | 1 | 0 | x | (unused) | ||
1 | 1 | 0 | 0 | P/F | 0 | 1 | 1 | SM | 1 | 1 | 1 | 0 | P/F | 1 | 1 | x | AC0–AC1 | |||
1 | 1 | 0 | 0 | P/F | 1 | 0 | 0 | UP | 1 | 1 | 1 | 1 | P/F | 0 | 0 | 0 | SARM | DM | ||
1 | 1 | 0 | 0 | P/F | 1 | 0 | 1 | (unused) | 1 | 1 | 1 | 1 | P/F | 0 | 0 | 1 | RSET | |||
1 | 1 | 0 | 0 | P/F | 1 | 1 | 0 | UA | 1 | 1 | 1 | 1 | P/F | 0 | 1 | 0 | SARME | |||
1 | 1 | 0 | 0 | P/F | 1 | 1 | 1 | TEST | 1 | 1 | 1 | 1 | P/F | 0 | 1 | 1 | SNRME | |||
1 | 1 | 0 | 1 | P/F | 0 | x | x | NR0–NR3 | 1 | 1 | 1 | 1 | P/F | 1 | 0 | 0 | SABM | |||
1 | 1 | 0 | 1 | P/F | 1 | x | x | (unused) | 1 | 1 | 1 | 1 | P/F | 1 | 0 | 1 | XID | |||
1 | 1 | 1 | 0 | P/F | 0 | 0 | 0 | SIM | RIM | 1 | 1 | 1 | 1 | P/F | 1 | 1 | 0 | SABME | ||
1 | 1 | 1 | 0 | P/F | 0 | 0 | 1 | FRMR | 1 | 1 | 1 | 1 | P/F | 1 | 1 | 1 | UIH | |||
BCN |
The UI, UIH, XID, TEST frames contain a payload, и может использоваться как в качестве команд, так и в качестве ответов. Команда SM и ответ FRMR также содержат полезную нагрузку.