Вступление
Эту статью хотел бы посвятить некоторым технологиям распределения/балансировки трафика по разрозненным радиолинкам в пределах одной РРЛ.
В предыдущей статье «РРЛ для самых маленьких» https://habr.com/ru/companies/megafon/articles/925514/ я рассказывал о некоторых технологиях и решениях, позволяющих увеличить пропускную способность РРЛ (радиорелейных линий):
- XPIC (Cross-Polarization Interference Cancellation)
- CA (Carrier Aggregation)
- SDB (Super Dual Band)
- или строительство параллельных линков на разных частотах
Использование этих решений позволяет получить РРЛ в конфигурации N+0 (2+0, 4+0, 8+0 или 16+0), где N – это количество независимых радиолинков. Почему независимых? А потому, что эти технологии не занимаются распределением трафика между линками, у них другая задача – организация дополнительных радиолиний ("стволов").

Небольшое отступление:
Практически все современные РРС могут передавать не только пакетный трафик Ethernet, но и трафик Native TDM (E1 или VC12/VC4/STM1 без инкапсуляции в Ethernet/PWE3) в одном радиостволе независимо друг от друга.

Так вот, в этой статье пойдет речь о распределении/балансировки исключительно Ethernet трафика.

Методы балансировки трафика
Из моего опыта могу выделить три метода распределения/балансировки трафика:
- Ручной
- LAG (Link Aggregation Group)
- PLA (Physical Link Aggregation)
Ручной метод балансировки трафика
Метод основывается на балансировке сервисов при их организации или оптимизации с помощью оператора (инженера, эксплуатирующего РРС). Например, сервисы с одними VLAN ID организуются через один радиоствол, а сервисы с другими VLAN ID - через другой ствол или, если используется MPLS, LSP (Label Switching Path) с одними метками MPLS в один ствол, а LSP с другими MPLS метками - в другой ствол.

У такого метода есть явные недостатки:
- Постоянный и тотальный контроль распределения со стороны инженерного состава, что сильно увеличивает трудозатраты.
- Трудно, а чаще невозможно, равномерно распределить нагрузку. Может возникнуть ситуация, когда один радиоствол РРЛ будет перегружен трафиком, а другой недогружен.
- Скорость сервисов не может превышать пропускную способность радиоствола, через который они организованы.
- Нельзя использовать такие радиостволы одновременно в одном VPLS сервисе. Это приведет к возникновению петли и широковещательного шторма.
Но такой метод имеет место быть, особенно на небольших сетях, где требуются лицензии на LAG и PLA, а в наличии их нет. Также этот метод применим не только на РРС с радио интерфейсами, но и на РРС и Ethernet коммутаторах с Ethernet интерфейсами.
LAG
LAG (Link Aggregation Group) – это стандартизованный механизм (IEEE 802.3ad, 802.3ah, IEEE 802.1ax) объединения (агрегирования) однотипных интерфейсов (FE-FE, GE-GE, MW-MW) в единую группу с целью увеличения пропускной способности транспортных каналов и их надежность. В некоторых устройствах LAG может иметь название как E-Trunk. Максимальное количество участников в одной группе LAG достигает 16.

Все производители оборудования рекомендуют использовать в одной группе LAG интерфейсы одинакового типа и полное соответствие их параметров на обеих сторонах. Если в группе планируется использовать хотя бы один FE (FastEthernet) интерфейс, то все участники должны состоять из FE интерфейсов, если GE (GigabitEthernet) - то все GE, если MW (MicroWave) - то все MW.
Однако некоторые именитые производители позволяют миксовать FE и GE интерфейсы в LAG группе, но с большими ограничениями и дополнительными настройками. Микс MW-GE и MW-FE невозможен.
LAG группы могут быть:
- Без балансировки трафика (не более двух линков), где один линк передает трафик и находится в активном режиме, а второй линк не передает трафик и находится в режиме ожидания;
- С балансировкой трафика, где каждый линк в группе передает трафик;
Оба режима работы повышают надежность транспортных каналов, но режим с балансировкой трафика еще и увеличивает пропускную способность. Если рассматривать режимы LAG с точки зрения потери данных при неисправности одного из участников группы, то в обоих режимах будут небольшие потери. Поэтому LAG без балансировки трафика, на мой взгляд, более расточительный.
По протоколам контроля группы и её участников, LAG группы делятся:
- На группы с контролем состояния группы и линков по протоколу LACP или 802.3ah;
- На группы без контроля;
В LAG группах без контроля переключение трафика с неисправного участника группы происходит только при регистрации проблемы на физическом уровне (потеря входящего сигнала или несоответствие параметров интерфейсов на ближней и дальней сторонах). В группах с контролем переключение трафика может быть осуществлено даже при ошибках на линках, за счет циркулирования в этих ликах контрольных пакетов LACPPDU или OAM соответствующих протоколов.
Сервисы в группе назначаются либо на виртуальный интерфейс, определяющий LAG в целом, либо на Master интерфейс, который является участником LAG. Первый вариант удобен с точки зрения гибкости замены любого участника группы, а во втором варианте для замены Master интерфейса придется удалять группу и создавать новую.
А теперь о самом интересном - о балансировке трафика. Трафик в LAG группе может балансироваться:
- Per packet. Балансировка трафика основана на равномерном распределении всех кадров Ethernet между всеми участниками группы. Один кадр в один линк, другой - в другой линк. Не все производители реализовывают такой алгоритм балансировки в оборудовании, включая РРС.
У этого метода есть один большой недостаток – большая чувствительность к задержкам. Ethernet кадры для одного и того же потока передаются по разным линкам. Задержки на каждом линке могут быть разные, а время ожидания кадра для его восстановления в последовательный ряд одинаковое для всего потока, поэтому при больших задержках пакеты могут отбрасываться из-за превышения времени ожидания, что, естественно, влияет на сервис в целом.
- Per flow. Балансировка трафика по маркерам принадлежности к одному потоку. Поток с одним одинаковым маркером или набором одинаковых маркеров поступает в один линк, а поток с другими маркерами - в другой линк.
В качестве маркеров могут выступать:
o MAC адрес: либо MAC Source, либо MAC Destination, либо и то и другое одновременно

o IP адрес: либо Source IP address, либо Destination IP address, либо и то и другое одновременно

o MPLS Label: метки MPLS

o И другие: TCP source port, TCP destination port, IP protocol, номер интерфейса, TOS, Traffic class, GRE payload и многое другое (зависит от производителя оборудования и его типа)
Распределение потоков по линкам в LAG группе происходит на основе Hash ключа (Hash key) как результата обработки маркеров Hash функцией. Чем больше используется маркеров, как в количестве, так и типе, тем более разнообразным получается Hash key, что позволяет осуществить равномерную балансировку трафика между участниками LAG группы.
К сожалению, производители РРС сильно оптимизируют ресурсы оборудования и зачастую формируют Hash key только на основе одного типа маркера: либо на MAC адресе, либо на IP адресе, либо на MPLS метке. Это приводит к неравномерной балансировке трафика. Например, при трафике, где есть Ethernet карды с разными 50-ю МАС адресами, и двух линках в LAG, может получится так, что потоки с 30-ю МАС адресами будут следовать через один линк, а потоки с другими 20-ю МАС адресами - в другом линке.

А если количество разнообразных МАС адресов во входящем трафике очень мало, например, 4, то может получиться так, что 3 потока с 3-мя разными МАС адресами проследуют через один линк LAG группы, а один оставшийся поток - через другой линк. Такая же ситуация может произойти и с балансировкой трафика по MPLS меткам.

На более производительном оборудовании (маршрутизаторах и коммутаторах) производители стремятся получить Hash key для балансировки трафика в LAG минимум по 5-и разным типам маркеров (five-tuple), что позволяет получить более равномерную балансировку трафика в группе между её участниками.
У Per-flow балансировки, как и у ручного метода, есть большой недостаток – скорость потока, определенного в конкретный линк LAG группы, не может превышать пропускную способность этого линка. В некоторых случаях это приводит к потере трафика, несмотря на то, что суммарная скорость входящих сервисов меньше, чем пропускная способность LAG.

Есть еще одна особенность LAG – несмотря на то, что производители рекомендуют на обеих сторонах LAG (ближней и дальней) устанавливать одинаковые методы балансировки, балансировка трафика в LAG всегда осуществляется только в сторону передачи (направление Tx).
И так, подведем итоги по LAG.
Плюсы:
- Автоматическая балансировка трафика в отличие от ручного метода;
- Повышение надежности транспортных каналов с минимальными потерями;
- Стандартизация, а значит, есть возможность комбинации стыков с разным типом оборудования, поддерживающего LAG.
Минусы:
- Неравномерность балансировки трафика, особенно в РРС;
- Максимальная скорость информационного потока не может превышать пропускную способность линка в LAG, через который он следует;
- Хоть и минимальные, но всё же потери, при переключении трафика из неисправного линка в исправный;
- Нет возможности комбинации Microwave и FE/GE в одной группе;
- Включение функционала требует отдельной лицензии на некоторых РРС.
PLA
PLA (Physical Link Aggregation) - это нестандартизованный механизм объединения (агрегирования) Microwave интерфейсов в единую группу с целью увеличения пропускной способности РРС и её надежность. В некоторых устройствах PLA может иметь название как L1-LAG или Bonding. Максимальное количество участников в одной группе PLA может достигать 10 (зависит от производителя - типа оборудования и его производительности).
PLA - это обобщенное название, которое несет в себе принцип объединения интерфейсов. В отличие от LAG, где балансировка трафика осуществляется на уровне L2 (per-packet, per-flow), в PLA балансировка трафика осуществляется на физическом уровне, уровне L1.
Поскольку стандартизации нет, а есть только концепт, то производители самостоятельно дорабатывают, модифицируют и улучшают PLA. В результате появляются разные варианты PLA: EPLA, EPLA+, S-EPLA и тому подобное, со своими минусами и плюсами.
Как видно из описания, участниками PLA группы являются только Microwave интерфейсы. Исключением могут быть Gigabit или 10Gigabit Ethernet интерфейсы при использовании решения SDB (Super Dual Band).
Балансировка входящего трафика в PLA основана на разбиении каждого Ethernet кадра на маленькие кусочки и распределении этих фрагментов по всем участникам (интерфейсам) группы. Этот механизм называется Slicing. Поскольку механизм балансировки в PLA не стандартизован, то и размер фрагментов, и другие параметры могут отличаться от вендора оборудования к вендору и от одной версии PLA к другой.

В первых релизах PLA были только фрагменты с заголовками, указывающими на номер фрагмента и его принадлежность к Ethernet кадру (начальный фрагмент, конечный фрагмент или единственный фрагмент, если Ethernet кадр по длине меньше фрагмента).
В последующих версиях PLA добавилась еще информация о приоритетности передаваемого фрагмента (подобие QoS). Так появились сегменты со своими заголовками.
В сегменты, как и во фрагменты, могли добавляться еще и результаты их проверок на ошибки (FCS).
Из вышеизложенного можно выделить несколько негативных моментов:
- Увеличение служебной информации при формировании PLA, которая может достигать 30% от передаваемого трафика, что негативно сказывается на пропускной способности группы и что необходимо учитывать при планировании сети РРС.
- Несовместимость версий PLA. Это значит, что версия и тип PLA должны быть одинаковыми как на ближней, так и на дальней стороне, в отличие от LAG.
- По Microwave линкам при PLA уже передаются не Ethernet карды, а PLA фрагменты или сегменты, поэтому включение PLA на РРС надо начинать выполнять с дальней стороны РРЛ.
Но, несмотря на негативные моменты, в PLA есть существенные плюсы:
- Равномерное распределение трафика по всем участникам PLA группы.
- Скорость единичного сервиса (потока с одинаковыми маркерами Ethernet кадра) может превышать пропускную способность не только одного из участников PLA, но и достигать пропускной способности всей PLA группы без учета служебной информации.

Поскольку РРС поддерживают адаптивную модуляцию (АМ), где пропускная способность радиолинков может уменьшаться из-за ухудшения погодных условий, то модуль PLA должен быть проинформирован об этом, чтобы не передавать в такие линки больше трафика во избежание его потери. Для таких случаев разработчики применили в РРС технологию оповещения под названием Bandwidth Notification (BA). Благодаря работе BA модуль PLA передает в проблемный линк меньше трафика вплоть до полного прекращения. Весь трафик распределяется между оставшимися линками.

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

При восстановлении неисправного линка в работу трафик автоматически начнет по нему следовать вновь и будет это делать с учетом равномерного распределения в группе.

Подведем итоги по PLA.
Плюсы:
- Равномерное распределение трафика по всем участникам PLA группы;
- Скорость единичного сервиса может достигать пропускной способности PLA группы без учета служебной информации;
- Контроль со стороны модуля PLA за состоянием линков в группе;
- Некоторые конфигурации PLA позволяют переключать трафик из неисправного линка менее чем за 50 мс, что существенно не влияет на работу сервисов;
- PLA группа как и LAG повышает надежность транспортных каналов;
Недостатки:
- В PLA участниками могут быть только Microwave интерфейсы. Исключением является технология SDB (Super-Dual Band);
- Версии PLA должны быть одинаковы как на ближней, так и на дальней сторонах. PLA c EPLA несовместимы;
- Служебный трафик в PLA может достигать 30% от пропускной способности PLA группы.
Заключение
Применяйте решения к месту и учитывайте все их особенности.
Если Вы планируете применить LAG на сети, рекомендую в первую очередь рассмотреть возможность использования высокоскоростных интерфейсов вместо агрегации низкоскоростных.
Ну, а если у вас РРЛ организована между высокопроизводительными Ethernet коммутаторами или IP маршрутизаторами, где для формирования Hash key в LAG используется комбинация маркеров (five-tuple), а на самих РРС слабый Hash алгоритм, то предлагаю:
1. LAG организовать только на коммутаторах или маршрутизаторах;
2. На РРС не настраивать LAG на ответных интерфейсах;
3. На РРС организовать сервисы без указания конкретных VLAN ID, так называемые «трубы». Где каждый сервис соединяет стыковочные интерфейсы коммутатора или маршрутизатора порт в порт, эмулируя прямое соединение кабелем. На NNI (Network – Network Interface) может быть задействована технология MPLS или QinQ.
