Архив рубрики: mpls cw

MPLS CW load-balance drop

Схема, от PE1,11 — PE2,22 тянутся PWE для p2p поверх которого уже натянут BGP, PE2 с BD используется в качестве l2stitching-а. В определенный период начали падать BGP сессии.

Проблем до Lo (PE2, PE22) нет никаких, потери c (PE1,PE11) сразу до 2х коробок (PE2, PE22), смотрим MACки:

PE в удаленный регион (172.16.9.11, 172.16.9.120):

Вспоминаем проблему при балансировке когда P,PE пытается посмотреть в MPLS Payload и угадать следующий заголовок для расчета хэша балансировки, в l2vpn MAC-и начинающиеся с 4,6  могут ошибочно быть принятыми за IPv4, IPv6 пакеты как WA перед MPLS Payload добавляем заголовок CW [0000] на обоих PE:

Проверяем:

После все ок:

 

Wireshark, парсинг MPLS Ethernet PW + CW

Смотрим кадр EthPW + CW на транзите:
ARP Request:

ARP Reply:

Откуда-то появляется IEEE 802.3 LLC, хотя его конечно нет, это связанно с ошибочной интерпретацией снифера данных идущих после MPLS заголовка. EthType может быть 0x8847 или 0x8848, MPLS unicast/multicast соответственно. Тем самым нам приходиться угадывать что лежит ниже MPLS заголовка. В данном случае снифер не видит наличие поля CW и сразу интерпретирует данные как неверный MAC адрес, имеем:
00 00 00 00 50 00  — Ethernet dst
00 04 00 00 50 00 — Ethernet src
00 05 — длинна данных
00 00 08 06 — LLC заголовок
Т.к мы знаем наверняка, что у нас используется PW + CW, укажем это в явном виде опцией -d  («decode as») и получаем читаемый вид:

Полный список протоколов можно получить:

В Wireshark это делается: Правый клик на кадр, «Decode As», поле «Current» выставляем как: «Ethernet PW (with CW)».