Opened 6 years ago

Closed 6 years ago

#311 closed баг (готово)

RSTP. Странное поведение.

Reported by: san Owned by: ledol
Priority: высокий Milestone: 1 очередь
Component: sw Keywords:
Cc:

Description (last modified by san)


Имеется три блока ЛК-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)

rstp.png (25.5 KB ) - added by san 6 years ago.
test.png (11.2 KB ) - added by san 6 years ago.

Download all attachments as: .zip

Change History (18)

by san, 6 years ago

Attachment: rstp.png added

comment:1 by san, 6 years ago

Провел следующие эксперименты:

  1. Отключил схему от LAN, подключив ноутбук в ЛК-19. Дефект не проявился после 10 перезапусков SM-01
  1. Подключил обратно в сеть, но отфильтровал BPDU на порту подключенном к сети. Дефект проявился при первом перезапуске SM-01.
  1. Отфильтровал broadcast пакеты из сети. Дефект проявился при первом перезапуске SM-01
Last edited 6 years ago by san (previous) (diff)

in reply to:  description comment:2 by alx, 6 years ago

Replying to san:

Однако в некоторых случаях, ... блок ГИС не переводит этот порт в состояние Discarding и отображает его состояние как Designated,

Ты, наверное, хотел сказать "Forwarding"? "Designated" - это не состояние, это роль...

comment:3 by alx, 6 years ago

Насколько я понимаю работу STP, один из портов должен быть переведен в состояние "Discarding" по факту получения BPDU из обоих портов. Поэтому напрашивается посмотреть (например tcpdump'ом) и выяснить, получает ли CPU платы SW-01 BPDU из портов 5 и 16 коммутатора...

comment:4 by san, 6 years ago

Description: modified (diff)

comment:5 by san, 6 years ago

Description: modified (diff)

comment:6 by san, 6 years ago

Ты, наверное, хотел сказать "Forwarding

Да, исправил.

один из портов должен быть переведен в состояние "Discarding" по факту получения BPDU из обоих портов. Поэтому напрашивается посмотреть (например tcpdump'ом) и выяснить, получает ли CPU платы SW-01 BPDU из портов 5 и 16 коммутатора...

В блоке ГИС из порта, соответствующего слоту 16 пакеты BPDU приходят, т.к. его роль Root.
А приходят ли из порта слота 5, не помешает проверить.

Last edited 6 years ago by san (previous) (diff)

comment:7 by alx, 6 years ago

Предлагаю в качестве теста исключить из схемы платы GE-12, соединив блоки каким-либо иным способом, так как есть подозрение, что GE-12 может по каким-то собственным соображениям переставать пропускать трафик...

Last edited 6 years ago by alx (previous) (diff)

comment:8 by san, 6 years ago

Description: modified (diff)

comment:9 by san, 6 years ago

Добавил в описание заметку о счётчиках пакетов.

Не удаётся воспроизвести дефект если GE-12 соединить друг с другом не через оптику, а через медные порты.

by san, 6 years ago

Attachment: test.png added

comment:10 by san, 6 years ago

Повторил эксперимент с наблюдением за счётчиками во время происшествия вот результаты счётчиков на порту 5 блоков ГИС и ГРС (красный таймер mm:ss отсчитывает время "наоборот")

comment:11 by san, 6 years ago

Видно что с этого порта в блок ГИС пакеты вообще не приходят за 5 минут, хотя отправляются со стороны ГРС.

comment:12 by alx, 6 years ago

Непрохождение пакетов, очевидно, и является причиной неправильного поведения RSTP. Похоже, что это не баг SW-01, это баг GE-12...

Last edited 6 years ago by alx (previous) (diff)

comment:13 by san, 6 years ago

Owner: changed from alx to ledol
Status: newassigned

Покопался в GE-12.
Судя по всему, странное поведение вызвано срабатыванием функции ELB(Ethernet Loopback Blocking) в "оптическом" чипе Raycom RC7020 (1000M Ethernet &16E1 ADM Multiplexer)

The ELB (Ethernet Loopback Blocking) prevents ethernet data from looping back toward the
switch chip when LA /LB optical lines are in loopback mode.

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-й раз не воспроизводится.

Я ещё потыкаю, но думаю это оно.

Last edited 6 years ago by san (previous) (diff)

comment:14 by san, 6 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 san, 6 years ago

Принято решение при инициализации оптических плат GE-xxx отключать ELB.
Реализовано в GE-12 ревизии 12.

Ждём аналогичные исправления для GE-16 и GE-108...

comment:16 by san, 6 years ago

Resolution: готово
Status: assignedclosed

ELB отключена в GE-16 ревизии 3 и GE-108 ревизии 5.

Note: See TracTickets for help on using tickets.