Opened 7 years ago
Closed 7 years ago
#311 closed баг (готово)
RSTP. Странное поведение.
Reported by: | san | Owned by: | ledol |
---|---|---|---|
Priority: | высокий | Milestone: | 1 очередь |
Component: | sw | Keywords: | |
Cc: |
Description (last modified by )
Имеется три блока ЛК-19(.1.102), ГИС(.1.101), ГРС(.1.251) соединенные в кольцо Ethernet с включенным RSTP на портах. Настройки RSTP(на рисунке красным) подразумевают что в штатном режиме разрыв кольца будет осуществлять блок ГИС, переведя в состояние Discarding порт в сторону ГРС, роль порта - Alternate. Однако в некоторых случаях, после разрыва кольца вручную а затем восстановления его до исходной схемы, блок ГИС не переводит этот порт в состояние Discarding а оставляет его в состоянии Forwarding с ролью Designated, и порт с противоположной стороны(на другом блоке ГРС) находится в таком-же состоянии.
При этом по показаниям счётчиков SW со стороны ГРС пакетов в сторону GE-12 отправляется довольно много (десятки в секунду) а в ГИС с платы GE приходят лишь единицы пакетов в 10 сек., либо счётчик вообще не изменяется продолжительное время.
В какой-то момент (через 20-40-60 секунд или позже) пакеты могут начать проходить, большой пачкой сразу, и схема переходит в штатное рабочее состояние.
Воспроизвести странное поведение с наибольшей вероятностью удаётся перезапустив плату SM-01 в блоке ГРС. Так-же удавалось воспроизвести разрывая DSL линию между ГРС и ЛК-19.
Если после воспроизведения произвести изменения топологии, то странное поведение пропадает.
Attachments (2)
Change History (18)
by , 7 years ago
comment:2 by , 7 years ago
Replying to san:
Однако в некоторых случаях, ... блок ГИС не переводит этот порт в состояние Discarding и отображает его состояние как Designated,
Ты, наверное, хотел сказать "Forwarding"? "Designated" - это не состояние, это роль...
comment:3 by , 7 years ago
Насколько я понимаю работу STP, один из портов должен быть переведен в состояние "Discarding" по факту получения BPDU из обоих портов. Поэтому напрашивается посмотреть (например tcpdump'ом) и выяснить, получает ли CPU платы SW-01 BPDU из портов 5 и 16 коммутатора...
comment:4 by , 7 years ago
Description: | modified (diff) |
---|
comment:5 by , 7 years ago
Description: | modified (diff) |
---|
comment:6 by , 7 years ago
Ты, наверное, хотел сказать "Forwarding
Да, исправил.
один из портов должен быть переведен в состояние "Discarding" по факту получения BPDU из обоих портов. Поэтому напрашивается посмотреть (например tcpdump'ом) и выяснить, получает ли CPU платы SW-01 BPDU из портов 5 и 16 коммутатора...
В блоке ГИС из порта, соответствующего слоту 16 пакеты BPDU приходят, т.к. его роль Root.
А приходят ли из порта слота 5, не помешает проверить.
comment:7 by , 7 years ago
Предлагаю в качестве теста исключить из схемы платы GE-12, соединив блоки каким-либо иным способом, так как есть подозрение, что GE-12 может по каким-то собственным соображениям переставать пропускать трафик...
comment:8 by , 7 years ago
Description: | modified (diff) |
---|
comment:9 by , 7 years ago
Добавил в описание заметку о счётчиках пакетов.
Не удаётся воспроизвести дефект если GE-12 соединить друг с другом не через оптику, а через медные порты.
by , 7 years ago
comment:10 by , 7 years ago
comment:11 by , 7 years ago
Видно что с этого порта в блок ГИС пакеты вообще не приходят за 5 минут, хотя отправляются со стороны ГРС.
comment:12 by , 7 years ago
Непрохождение пакетов, очевидно, и является причиной неправильного поведения RSTP. Похоже, что это не баг SW-01, это баг GE-12...
comment:13 by , 7 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
Покопался в GE-12.
Судя по всему, странное поведение вызвано срабатыванием функции ELB(Ethernet Loopback Blocking) в "оптическом" чипе Raycom RC7020 (1000M Ethernet &16E1 ADM Multiplexer)
The ELB function, detecting ethernet frames looping back to the switching chip. When loopback is detected, the GMII output will automatically be cut off.
Похоже отключить эту фичу можно в регистре 0x0482
Бит 7 PD_EN (Packet Loopback Detection Enable)
1=Enable;
0=Disable
Записал Disable в регистр, попробовал 2 раза воспроизвести - не воспроизводится.
Записал Enable - воспроизвелось с первого раза.
Записал Disable и вот уже 7-й раз не воспроизводится.
Я ещё потыкаю, но думаю это оно.
comment:14 by , 7 years ago
Потыкал. У этой функции есть флаг срабатывания в регистре:
The detect module captures the source address in a GMII input packet and then compares with the source address of all output packets. If no matched packets are found during the PD_FIND_TIME, a new address capture and compare will start; if matched packets are found, the register PD_LOOPBACK will be asserted; if no matched packets are found for 1s, the PD_LOOPBACK assertion will be removed.
Наблюдал за регистром PD_LOOPBACK: во время происшествия регистр принимает значение Packet Input from GMIID is looped
, это точно оно.
comment:15 by , 7 years ago
Принято решение при инициализации оптических плат GE-xxx отключать ELB.
Реализовано в GE-12 ревизии 12.
Ждём аналогичные исправления для GE-16 и GE-108...
comment:16 by , 7 years ago
Resolution: | → готово |
---|---|
Status: | assigned → closed |
ELB отключена в GE-16 ревизии 3 и GE-108 ревизии 5.
Провел следующие эксперименты: