Глава 9 | «« Назад |  Оглавление |  Вперед »»

Канальный уровень.

Задача канального уровня - обеспечить взаимодействие устройств внутри локальной сети путем передачи специальных блоков данных, которые называются кадрами (frame). В процессе формирования они снабжаются служебной информацией (заголовком), необходимой для корректной доставки получателю, и, в соответствии с правилами доступа к среде передачи, отправляются на физический уровень.

При приеме данных с уровня PHY необходимо выделить кадры, предназначенные данному устройству, проверить их на отсутствие ошибок, и передать сервису или протоколу, которому они предназначались.

Нужно обратить внимание, что именно канальный уровень отправляет, принимает, и повторяет кадры в случае коллизии. Но определяет состояние разделяемой среды физический уровень. Поэтому процесс доступа (с необходимым уточнением) подробно описан в предыдущей главе.

Информационное взаимодействие на канальном уровне сетей стандарта Ethernet так же, как и на физическом, принято разделять на дополнительные подуровни, которые не были предусмотрены стандартом OSI-7.

  • LLC (Logical Link Control). Уровень управления логическим каналом;
  • MAC (Media Access Control). Уровень доступа к среде.

Подуровень MAC

В идеология множественного доступа к среде Ethernet передачу данных приходится реализовать по широковещательному принципу "каждый для всех" (broadcasting). Это не может не наложить отпечаток на процесс формирования и распознавания кадров. Рассмотрим строение кадра Ethernet DIX, как наиболее часто используемого для передачи IP трафика.

Для идентификации устройств используются 6-ти байтовые MAC-адреса, которые отправитель обязательно должен указать в передаваемом кадре. Старшие три байта представляют собой идентификатор производителя оборудования (Vendor codes), младше - индивидуальный идентификатор устройства.

За уникальность последних несет ответственность производитель оборудования. С идентификаторами производителя дело обстоит сложнее. Существует специальная организация в составе IEEE, которая ведет список вендоров, выделяя каждому из них свой диапазон адресов. Кстати, занести туда свою запись стоит совсем не дорого, всего US $1250. Можно отметить, что создатели технологии Ethernet, Ксерокс и DEC, занимают первую и последнюю строчку списка соответственно.

Такой механизм существует для того, что бы физический адрес любого устройства был уникальным, и не возникло ситуации его случайного совпадения в одной локальной сети.

Нужно особо отметить, что на большинстве современных адаптеров можно программным путем установить любой адрес. Это представляет определенную угрозу работоспособности сети, и может быть причиной тяжелых "мистических" неисправностей.

MAC-адрес может быть записан в различной форме. Наиболее часто используется шестнадцатеричная, в которой пары байтов отделяются друг от друга символами "-" или ":". Например, сетевая карта Realtek, установленная в моем домашнем компьютере, имеет адрес 00:C0:DF:F7:A4:25.

МАС-адрес позволяет выполнять единичную (Unicast), групповую (Multicast) и широковещательную адресацию кадров (Broadcast).

Единичная адресация означает, что узел-источник направляет свое сообщение только одному получателю, адрес которого явно указывается.

В режиме групповой адресации кадр будет обработан теми станциями, которые имеют такой же Vendor Code, как и у отправителя. Признаком такой посылки является "1" в младшем бите старшего байта МАС-адреса (X1:XX:XX:XX:XX:XX). Такой формат достаточно удобен для "фирменного" взаимодействия устройств, но на практике используется достаточно редко.

Другое дело широковещательная посылка, в которой адрес получателя кодируется специальным значением FF-FF-FF-FF-FF-FF. Переданный пакет будет принят и обработан всеми станциями, которые находятся в локальной сети.

Таблица 9.2. Формат кадра Ethernet

Preamble
Преамбула
SFD DA Адрес назначения SA Адрес Источника Type/Length
Тип/Длина
Data
Данные
FCS
Контрольная сумма
7 байт 1 байт 6 байт 6 байт 2 байта 46-1500 байт 4 байта

Для успешной доставки одного адреса назначения явно недостаточно. Нужна дополнительная служебная информация - длина поля данных, тип сетевого протокола и др.

  • Преамбула (Preamble). Состоит из 8 байтов. Первые семь содержат одну и ту же циклическую последовательность битов (10101010), которая хорошо подходит для синхронизации приемопередатчиков. Последний (Start-of-frame-delimiter, SFD), 1 байт (10101011), служит меткой начала информационной части кадра. Это поле не учитывается при определении длины кадра и не рассчитывается в контрольной сумме.
  • МАС-адрес получателя (Destination Address, DA).
  • МАС-адрес отправителя (Source Address, SA). Первый бит всегда равен нулю.
  • Поле длины либо тип данных (Length/Type, L/T). Два байта, которые содержат явное указание длины (в байтах) поля данных в кадре или указывают на тип данных. Ниже, в описании LLC будет показано, что возможно простое автоматическое распознавание разных типов кадров.
  • Данные (Data). Полезная нагрузка кадра, данные верхних уровней OSI. Может иметь длину от 0 до 1500 байт.
  • Для корректного распознавания коллизий необходим кадр не менее чем из 64 байт. Если поле данных менее 46 байт, то кадр дополняется полем заполнения (Padding).
  • Контрольная сумма (Frame Check Sequence, FCS). 4 байта, которые содержит контрольную сумму всех информационных полей кадра. Вычисление выполняется по алгоритму CRC-32 отправителем и добавляется в кадр. После приема кадра в буфер, приемник выполняет аналогичный расчет. В случае расхождения результата вычислений, предполагается ошибка при передаче, и кадр уничтожается.

Подуровень LLC

Данный подуровень обеспечивает единый, независимый от используемого метода доступа, интерфейс с верхним (сетевым) уровнем. По сути, можно сказать, что на нем определяется логическая структура заголовка кадра Ethernet.

Как ни странно, единый стандарт не определен до сих пор. Так как особых технических трудностей при определении типов кадров устройствами не оказалось, на практике могут параллельно использоваться четыре модификаций:

  • 802.3/LLC (или кадр Novell 802.2)
  • Raw 802.3 (или кадр Novell 802.3)
  • Ethernet DIX (или кадр Ethernet II)
  • Ethernet SNAP

Причина вполне обычна. Технология Ethernet начала свое развитие задолго до принятия стандартов IEEE 802. Первоначально подуровень LLC не выделялся из общего протокола и, соответственно, в специальном заголовке не было нужды. После принятия стандартов IEEE, и появления двух отличных друг от друга форматов кадров канального уровня, понадобился механизм согласования. Попытка введения нового, "объединяющего" варианта заголовка, привела к возникновению очередного формата кадра.

Что бы не слишком запутаться в частных (и не слишком важных) отличиях, рассмотрим только наиболее широко распространенный в локальных сетях кадр Ethernet DIX (Ethernet II), структура которого уже была рассмотрена в описании подуровня МАС.

Как наиболее важный момент, необходимо отметить смысл поля Length/Type (длина/типа данных). 2-байтовое поле Length (Длина) кадра Raw 802.3, в кадре Ethernet DIX используется в качестве поля типа протокола (Type), и явно указывает на тип протокола верхнего уровня, вложившего свой пакет в поле данных кадра. Если подходить строго, то видно, что к Ethernet DIX название Length (Длина) не имеет отношения. Но терминология устоялась, и проще пойти на неоднозначную формулировку, чем ее ломать.

Автоматическое распознавание типов кадров Ethernet выполняется достаточно просто, и поддерживается подавляющим большинством сетевых устройств. Так, для отличия Ethernet DIX от Raw 802.3 в поле Type указываются значения, превышающие значение максимальной длины поля данных (1500 байт). Например, для IP используется код 0800, для IPX - 8037, Х.25 - 0805, и т.п.

Так же, в случае наличия полей LLC, несложно отличить кадр Ethernet SNAP от 802.3/LLC. Но эти форматы не используются в 10/100baseT, и подробно останавливаться на них в рамках данного изложения не имеет смысла.

Кадры Ethernet с тегами VLAN 802.1q

Первое время массовому внедрению Ethernet не мешали "врожденные" недостатки стандарта (в особенности полное отсутствие средств обеспечения безопасности). Но сети быстро росли, и ограничения начали всерьез сдерживать технологию в целом.

Для решения проблемы было предложено несколько "фирменных" методов маркировки фреймов (например ISL, VLT), однако на сегодня имеет смысл говорить только о стандарте 802.1q. Его смысл достаточно прост - в заголовок добавляется 4 байта, в которых содержится информация о номере виртуальной сети (vlan), и информация о приоритете.

Таким образом, заголовок приобретает следующий вид:

Preamble
Преамбула
SFD DA Адрес назначения SA Адрес Источника Ether
Type
Метка Type/Length
Тип/Длина
Data
Данные
FCS
Контр. сумма
7 байт 1 байт 6 байт 6 байт 2 байта 2 байта 2 байта 46-1500 байт 4 байта

Поле EtherType, TPID (Tagged Protocol Identifier) содержит код 0x8100. Оно соответствует полю тип протокола стандартного поля кадра Ethernet и указывает на необходимость обработки кадра согласно требованиям IEEE 802.1q.

Поле "Метка" надо рассмотреть подробнее:

Приоритет CFI VLAN ID
3 байта 1 байт 12 байт

Поле приоритета кадра - 3 бита, 1-битовое поле CFI (Canonical Format Identifier) и 12-битовое поле VID (идентификатор виртуальной сети) называются TCI (Tagged Control Information).

Такое решение позволило решить проблемы приоритезации и разделить одну сеть на множество отдельных виртуальных сетей. Т.е. основные проблемы оказались решены.

Однако, тут не обошлось и без проблем. Прежде всего, фрейм ethernet увеличил длину до 1522 октетов, и с 802.1q может корректно работать далеко не всякое старое оборудование (регулируется спецификацией 802.3ас). Да и вообще, нововведение серьезно усложнило коммутаторы - для распознавания тегов о них требуется большая мощность, и для соблюдения приоритетов - несколько очередей в исходящих буферах. А для установки тегов приоритета более того. Способность анализировать более высокие протоколы (например 4-го уровня по модели OSI), и исходя из порта назначения и настроек устанавливать тэги.

Во-вторых, внедрение дополнительных тегов не решило всех проблем Ethernet - количество VLAN ограничено 4096. С приоритетами до сих пор оборудование разных брендов обращается довольно произвольным образом...

Тем не менее, стандарт 802.1q позволил сильно усложнить структуру сетей, и добавил принципиальные возможности. Сейчас без него просто невозможно представить сколь-нибудь большую сеть.

Глава 9 | «« Назад |  Оглавление |  Вперед »»