В некоторых случаях, например, при использовании сетей в режиме реального времени, когда временные издержки на установление логического соединения перед отправкой данных неприемлемы, а подтверждение о корректности приема данных необходимо, применяется дополнительная процедура LLC3.
Использование этих трех режимов работы подуровня LLC зависит от стратегии разработчиков конкретного стека протоколов. Например, в стеке TCP/IP уровень LLC всегда работает в режиме LLC1, выполняя простую работу по извлечению из кадра и демультиплексированию пакетов различных протоколов – IP, ARP, RARP и др. Аналогично используется подуровень LLC стеком протоколов IPX/SPX. А вот стек Microsoft/IBM, основанный на протоколе NetBIOS/NetBEUI, часто использует режим LLC2. Это происходит в тех случаях, когда сам протокол NetBIOS/NetBEUI должен работать в режиме с восстановлением потерянных и искаженных данных. В этой ситуации соответствующая работа перепоручается уровню LLC2. Если же протокол NetBIOS/NetBEUI работает в дейтаграмном режиме, то протокол LLC работает в режиме LLC1.
Режим LLC2 используется также стеком протоколов SNA в случае, когда на нижнем уровне применяется технология Token Ring.
Все типы кадров подуровня LLC имеют единый формат, представленный на рис.16:
Рис.16. Кадр подуровня LLC сети Ethernet
Кадр LLC обрамляется двумя однобайтовыми полями Флаг, имеющими значение 01111110. Флаги используются на уровне MAC для определения границ кадра LLC. В соответствии с многоуровневой структурой протоколов IEEE 802, кадр LLC вкладывается в кадр подуровня MAC: кадр Ethernet, Token Ring, FDDI и т.д., при этом начальный и конечный флаги LLC отбрасываются.
Кадр LLC содержит собственно поле данных и заголовок, который состоит из трех полей:
· Адрес точки входа службы назначения DSAP (Destination Service Access Point);
· Адрес точки входа службы источника SSAP (Source Service Access Point);
· Управляющее поле (Control).
Поле данных LLC предназначено для передачи по сети пакетов протоколов вышележащих уровней – сетевых протоколов IP, IPX, AppleTalk, DECNet, в редких случаях – прикладных протоколов, когда те вкладывают свои сообщения непосредственно в кадры канального уровня. Поле данных может отсутствовать в управляющих кадрах и в некоторых ненумерованных кадрах.
Адресные поля DSAP и SSAP занимают по одному байту. Они позволяют указать, какая служба верхнего уровня пересылает данные с помощью этого уровня, и используются для демультиплексирования принятых кадров. Значения адресов SAP приписываются протоколам в соответствии со стандартом IEEE 803.2. Так, для протокола IP значение SAP равно 06h, для протокола IPX – E0h, для протокола NetBIOS – F0h. Например, если в кадре LLC значения DSAP и SSAP содержат код E0h, то обмен кадрами осуществляется между двумя IPX-модулями, выполняющимися в разных узлах.
В некоторых случаях адреса DSAP и SSAP различаются. Это возможно лишь в тех случаях, когда служба имеет несколько адресов SAP, что может быть использовано протоколом узла отправителя в специальных целях, например, для уведомления узла-получателя о переходе протокола отправителя в некоторый специфический режим работы. Этим свойством протокола LLC часто пользуется протокол NetBEUI.
Поле управления (1 или 2 байта) имеет более сложную структуру при работе в режиме LLC2 и достаточно простую структуру при работе в режиме LLC1 (рис.17).
По своему назначению все типы кадров подуровня LLC, называемые в стандарте 803.2 блоками данных PDU (Protocol Data Unit), подразделяются на три типа – информационные, управляющие и ненумерованные. Тип кадра задается битами 1 и 2 поля Control: 0x – информационный кадр, 10 – управляющий кадр, 11 – ненумерованный кадр.
Рис.17. Структура поля управления кадра подуровня LLC
Информационные кадры (I – кадры) предназначены для передачи информации в процедурах с установлением логического соединения LLC2 и должны обязательно содержать поле данных. В процессе передачи информационных блоков осуществляется их нумерация в режиме скользящего окна.
Управляющие кадры (S – кадры) предназначены для передачи команд и ответов в процедурах LLC2, в том числе сигналов подтверждения, запросов на повторную передачу одного или группы I-кадров, запроса на временное прекращение передачи I-кадров из-за невозможности их приема (например, вследствие переполнения буфера приемной станции). Управляющие S-кадры обеспечивают упорядоченную, надежную передачу данных в режиме LLC2 от одной станции сети к другой.
Ненумерованные кадры (U – кадры) предназначены для передачи ненумерованных команд и ответов, выполняющих в процедурах без установления логического соединения передачу информации, идентификацию и тестирование LLC-уровня, а в процедурах LLC2 – установление и разъединение логического соединения, а также информирование об ошибках.
В режиме LLC1 используется только один тип кадра – ненумерованный. Именно этот тип процедуры и используется во всех практических реализациях Ethernet.
В режиме LLC2 используются все три типа кадров. В этом режиме кадры делятся на команды и ответы на эти команды. В этом режиме протокол LLC аналогичен протоколу HDLC.
Бит P/F (Poll/Final) имеет следующее значение: в командах он называется Poll и требует, чтобы на команду был дан ответ, а в ответах он называется Final и помечает последний кадр ответа.
Поле S используется для кодирования контрольных функций в управляющих/супервизорных кадрах. Супервизорные кадры кодируются следующим образом:
· Приемник готов RR (Receiver Ready, ss=00);
· Приемник не готов RNR (Receiver Not Ready, ss=01);
· Отказ REJ (Reject, ss=10);
· Выборочный отказ SREJ (Selected Reject, ss=11).
Порядок применения управляющих кадров описан ниже.
Поле M ненумерованных кадров определяет коды команд, передаваемых посредством ненумерованных кадров, например:
· Установить расширенный сбалансированный асинхронный режим (SABME). Эта команда является запросом на установление соединения. Расширенный режим означает использование двухбайтных полей управления для кадров остальных двух типов;
· Ненумерованное подтверждение (UA) - служит для подтверждения установления или разрыва соединения;
· Разрыв соединения (DISC) - запрос на разрыв соединения и др.
Установление соединения начинается посредством передачи в канал команды SAMBE с одновременным включением таймера Ts. Если удаленной станцией эта команда принята без ошибок, и она имеет возможность установить соединение и войти в рабочий режим обмена информацией, то удаленная станция передает ответ UA. При этом на удаленной станции переменные состояния передачи V(S) и приема V(R) обнуляются, и соединение считается установленным. Если же удаленная станция не может войти в рабочий режим обмена информацией, то она передает ответ DM (Disconnect Mode - режим разъединения), а соединение считается не установленным. При отказе в соединении станция - инициатор может попытаться установить соединение повторно в любой момент времени.
После приема корректного ответа UA инициатор соединения, выключив таймер Ts, переводит свои переменные состояния передачи V(S) и приема V(R) в 0 и также полагает, что соединение установлено. В большинстве случаев для различения ответов DM, которые могут поступить на станцию – инициатор в процессе установления соединения, команда SAMBE передается с битом P=1. В этом случае ответом на нее может быть только кадр с установленным битом F.
Если команда SAMBE и/или ответы UA, DM были приняты с ошибками, то они не учитываются станциями, в результате на станции – инициаторе завершится таймер Ts, что является указанием на необходимость повторной передачи команды SAMBE. Указанная последовательность действий продолжается до тех пор, пока не будет правильно принят ответ UA или DM, или же пока не закончится выделенный на установление соединения лимит попыток. В последнем случае об исчерпании лимита информируется верхний уровень.
Процесс разъединения осуществляется передачей в канал команды DISC (Disconnect – разъединить) с установленным битом P. Удаленная станция, приняв правильно команду DISC, передает ответ UA и переходит в режим разъединения. Станция- инициатор разъединения, приняв ответ UA, выключает таймер Ts и также переходит в режим разъединения.
Процедура передачи I-кадра от станции - отправителя к станции - получателю состоит в следующем.
В информационных I-кадрах имеется поле N(S) для указания номера передаваемого кадра. При работе протокола LLC2 используется скользящее окно размером в 127 кадров, поэтому для нумерации передаваемых кадров значение поля N(S) циклически изменяется в диапазоне от 0 до 127. Соответственно, поле N(R) в I- и S-кадрах определяет номер запрашиваемого или подтверждаемого кадра (процедура LLC2 поддерживает полудуплексный режим передачи).
Информация, поступающая на подуровень LLC с верхнего уровня в виде пакета, размещается в поле Данные формируемого I-кадра, которому присваивается порядковый номер передачи N(S) = V(S). Сформированный I-кадр затем передается на подуровень MAC для дальнейшей обработки, а значение переменной состояния передачи V(S) увеличивается на 1 (по модулю 128).
Удаленная станция, получившая адресуемый ей I-кадр, определяет, можно ли его выдать получателю (более высокому уровню). Для этой цели на приемной станции производится сравнение номера N(S) принятого I-кадра со значением переменной состояния приема V(R) данной станции, которая хранит значение, на единицу большее номера последнего кадра, принятого от передатчика. В случае совпадения этих номеров и незанятости верхнего уровня содержимое поля данных принятого I-кадра выдается верхнему уровню, а значение переменной состояния приема V(R) увеличивается на 1 (по модулю 128). Если при этом на принимающей станции есть свой I-кадр для передачи отправителю, то в нем посылается номер N(R) = V(R). Если же такой кадр отсутствует, то для подтверждения приема передается S-кадр RR с тем же номером N(R). При этом ответный кадр должен быть послан не позднее, чем истечет таймер Tr, определяющий максимальный промежуток времени, в течение которого станция - получатель должна подтвердить прием I-кадра.