Pull to refresh

Что такое Slow Protocols

Reading time5 min
Views26K
Я как-то никогда не задумывался о том, как работает протокол LACP. Знаю, что делает, для чего нужен, а как передаются его сообщения никогда не интересовало.

Но некоторое время назад мне на глаза попался дамп трафика между двумя маршрутизаторами, где как раз были запросы LACP. Пробежал по нему мельком и глаз зацепился за незнакомое слово — Slow-Protocols.
На удивление информации об этом стандарте на русском языке я практически не нашёл. Есть только отсылки к тому, что это часть стандарта 802.3.

А меж тем вещь-то интересная, тем более, что охватывает не только LACP.
Вот об этом я и хотел устроить краткий ликбез под катом и рассказать ещё, какие проблемы можно словить при определённых условиях.


Итак, есть такой класс протоколов, которые призваны контролировать различные аспекты Ethernet, иначе говоря, Flow Control. Они являются частью стандарта 802.3 и делятся на два вида:

  • Быстрые. Они должны отрабатывать моментально для предотвращения снижения производительности и перерыва в предоставлении сервисов вообще. Как правило они реализуются аппаратно. Собственно, представитель этого класса — механизм PAUSE – когда порт устройства получает трафика больше, чем может обработать, он отсылает PAUSE Frame противоположному узлу с просьбой понизить скорость отправки.
    Случаться такое может при подключении друг к другу разноскоростных интерфейсов — например FE в GE. Либо при настройке ограничения скорости на портах коммутаторов. Случаются даже казусы, но мне с такими проблемами дела иметь не приходилось.

    Однажны я сталкивался с Pause Frame в их несвойственном поведении. В тот день счётчики полученных PAUSE Frames стремительно росли на интерфейсах, система мониторинга тонула в авариях, дождь не прекращался 7-е сутки. Начали анализировать: количество трафика на данных интерфейсах едва переваливало за пару процентов, ни дропов, ни ошибок. Причём, что самое удивтельное, на противоположном конце устройство не отправляло эти самые PAUSE Frames — счётчики Pause Frame Output по нулям. Какая-то фанатастика, потому что промежуточных устройств даже транзитных нет.
    Путём глубокой отладки с участием разработчиков тогда выяснилось, что это какие-то внутренние железные заморочки — чип коммутации имеет маленький буфер и отправляет на линейную плату Pause Frames, чтобы она снизила активность, но всё это хитрым образом разруливается внутри коробки и никак не влияет на сервисы.


    Мехнизм «Паузы» — это технология для полнодуплексных ликнов. Для Half-Duplex существует Back Pressure. Он весьма строгий и не просто заставляет притормозить, а блокирует передачу данных, потому что фактически сообщает передающему коммутатору, что имеет место коллизия и нужно прекратить свои тщетные попытки. Но кого это сейчас волнует?
  • Медленные – те самые Slow Protocols. У них не такие большие аппетиты на частоту отправки и задержки. Они реализуются программно. OAM и LACP относятся именно к этому виду.
    Для них используется специальный MAC-адрес: – 0180-с200-0002, и EtherType 8809.


Далее весьма вольный перевод данного документа, который является дополнением к стандарту 802.3.

Ограничения
Во-первых, на такого вида протоколы накладываются следующие ограничения:

1) Передавать не более 10 кадров в секунду
2) Максимальное число протоколов с EtherType 8809 — десять. Теоретически их может быть больше, но для них уже будет указан другой тип в заголовке Ethernet.
3) Размер кадра «медленных» протоколов ограничен 128 байтами. *Не сказать, что выполняется честно — OAMPDU, например, спокойно может превышать этот размер.

Вышеуказанные ограничения преследуют простую цель — уменьшить объём служебного трафика в сети.

Как для протоколов более высокого уровня существуют специально выделенные мультикастовые IP-адреса (224.0.0.5 для OSPF, например), так и «медленным» протоколам назначили отдельный мультикастовый MAC-адрес: 01-80-C2-00-00-02.

Данный МАС-адрес принадлежит диапазону выделенному ISO/IEC 15802-3 для протоколов, ограниченных одним линком. Фактически это означает, что кадры, передающиеся на данный адрес не могут быть перенаправлены за пределы данного конкретного линка.



Вполне возможно, что могут существовать «медленные» протоколы, которые требуют юникастовой пересылки кадра — это не воспрещается. То есть адрес 01-80-C2-00-00-02 — это не требование — это пожелание.
«Медленный» протокол может использовать другой МАС-адрес, но никакой другой протокол, кроме «медленного», не может использовать данный (01-80-C2-00-00-02).

Как уже я заметил выше, тип протоколов группы «Slow Protocols» (EtherType) — 8809. Далее определяются подтипы — subtypes для конкретных представителей сего славного класса:

Подтипы

Подтип Предназначение
0 Неиспользуемый запрещённый подтип
1 Link Aggregation Control Protocol (LACP)
2 Link Aggregation—Marker Protocol
3 Operations, Administration, and Maintenance (OAM)
4-9 Зарезервировано
10 Organization Specific Slow Protcol (OSSP)
11–255 Неиспользуемый запрещённый подтип


Как видите, выделено 8 бит под подтип. О типе 10 поговорим чуть ниже, а с остальными всё понятно:
1 — обычный знакомый нам LACP



2 — также часть механизма LAG для балансировки нагрузки, упорядоченного получения кадров и оптимизации управления линками LAG.
3 — протоколы Ethernet OAM.



Как нужно вести себя при получении кадра Slow Protocols

1) Отбросить все кадры, в которых указаны запрещённые подтипы Slow protocols
2) Пропустить кадры, которые несут известные Slow протоколы (с известными подтипами) и передать их соответсвующим службам.
3) Пропустить кадры, которые несут валидные, но неизвестные протоколы и передать их MAC-клиенту.

OSSPDU

По сути, два известных нам сейчас протокола, которые используют этот стандарт — это LACP и OAM, но вообще-то есть возможность создать собственный «медленный» протокол по своим нуждам. Это и есть тот самый пункт десятьOSSP — Organization Specific Slow Protocol.

Это относится к приложению 57B, которое описывает рекомендации к реализации каких-то специфических протоколов.

Как и у других протоколов есть свои названия их кадров (LACPDU, OAMPDU, BPDU), у OSSP есть неки обобщённый термин для этих целей — OSSPDU.

Далее идут совершенно логичные требования к структуре кадра OSSPDU и правилам передачи в сеть, но стандарт, на то и стандарт, что описывает все тонкости.

В общем я убрал это поглубже.

Форамат кадра OSSPDU и его передача в сеть
Organization Specific Slow Protocol Data Unit состоит из целого числа октетов. Биты в каждом октете нумеруются с 0 до 7. Когда последовательность октетов используется для представления численных значений, наиболее значимые октеты должны передаваться первыми.

Структура кадра:



а) Октеты передаются сверху вниз
б) В пределах октета биты расположены от 0 до 7 слева направо и передаются также слева направо.
в) Когда последовательность октетов представляет численное значение, наиболее значимые октеты должны передаваться первыми.
г) Когда последовательность октетов представляет MAC-адрес, наименее значимый бит первого октета несёт первый бит MAC-адреса. Следующий по значимости бит октета несёт второй бит MAC-адреса. И так далее до 8-го бита. Таким же образом от наименее значимого до наиболее значимого битов 2-го октета назначаются 9-17 биты МАС-адреса. Энд соу он, как говорится.

OSSPDU должен содержать следующие поля:

а) МАС-адрес назначения. Как правило мультикастовый адрес, выделенный для Slow Protocols — 01-80-C2-00-00-02.
б) МАС-адрес отправителя. Юникастовый адрес отправляющего интерфейса (LAG'а, если говорим об агрегированном канале)
в) Поле Length/Type содержит EtherType 8809
г) Поле Subtype содержит значения 10 (0x0A)
д) Поле OUI — Organizationally Unique Identifier. Некий идентификатор для данных.
е) Собственно данные протокола
ё) FCS. Но кого он волнует, если его формирует сам Ethernet?


Вот и весь сказ об этих нехитрых, но малоописанных в рунете протоколах.

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

Файл pcap для ковыряния.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+34
Comments15

Articles

Change theme settings