Короткий ответ

Flapping — линк циклически Up/Down или STP блокирует/разблокирует порт. С клиента это «сеть моргает»: ARP пропадает, DHCP renew, RDP падает. Не отключайте STP глобально. Снимите логи порта, счётчики CRC, есть ли второй линк в тот же сегмент (петля), жив ли кабель, не бьёт ли BPDU guard.

Клиенты в 10.0.10.0/24 будут терять шлюз 10.0.10.1 пачками. Сначала физика и петля, потом «тюнинг» spanning-tree.

Симптомы и как отличить

  • На свитче: %LINK-3-UPDOWN каждые 2–10 с;
  • Windows: «Network cable unplugged»;
  • Ubuntu: link down / link up в dmesg;
  • весь VLAN тормозит — подозрение на петлю, не один патч-корд.
КартинаНе обязательно flap портаКуда
Высокий RTT без up/downзадержкаЗадержка LAN
Loss без логов linkdropПотери
Нет трафика VLANVLAN/trunkVLAN

Возможные причины

  1. Битый патч-корд, плохой RJ-45, PoE overload.
  2. Пользователь воткнул два кабеля в один ПК/свитч (петля).
  3. STP: порт в listening/blocking, несогласованный mode (PortFast на транке).
  4. UDLD/односторонняя линк на оптике.
  5. NIC драйвер, EEE, энергосбережение.
  6. Дублирующий LAG без настройки etherchannel (петля).
  7. VM: vNIC disconnect в гипервизоре, не физика.
  8. Кабель в порт с errdisable (BPDU guard сработал — выглядит как «мертвый порт»).

Диагностика

1. С клиента: это линк или L3

Get-NetAdapter | Format-Table Name, Status, LinkSpeed
Get-EventLog -LogName System -Source 'Tcpip','e1dexpress','mlx4eth63','Ndis' -Newest 20 -ErrorAction SilentlyContinue
ping -n 30 10.0.10.1
ip -br link
journalctl -k -b --grep='link'
ethtool eth0

Если Status прыгает — физика/драйвер. Если линк Stable, а ping пачками пропадает — STP/VLAN/шторм выше, не обязательно этот NIC.

2. Лог и состояние порта коммутатора

show logging | include UPDOWN|err-disable|STP|spanning
show interfaces GigabitEthernet0/10
show spanning-tree interface GigabitEthernet0/10 detail
show errdisable detect

err-disabled — не «флап», а защита. Смотрите причину: bpduguard, link-flap, psecure-violation.

3. Петля

Признаки: CPU свитча высокий, broadcast counters взлетают, MAC одного адреса на разных портах.

show mac address-table | include 10.0.10
show spanning-tree inconsistentports

С двух концов «лишнего» кабеля: один и тот же сегмент 10.0.10.0/24. Вытаскивайте один кабель, не оба аплинка сразу без схемы.

4. Кабель vs оптика

Меняйте патч-корд, порт, SFP по одному. Для DAC/оптики: DOM, CRC. Клиентский тест:

ethtool -S eth0 | grep -Ei 'err|crc|drop'

5. Не сервер ли сам рвёт линк

Get-NetAdapterPowerManagement
powercfg /devicequery wake_armed

Энергосбережение NIC на ПК даёт периодический down. На сервере Ubuntu:

ethtool --show-wol eth0
cat /sys/class/net/eth0/device/power/control

Решение

Сценарий A. Кабель/порт

Замена патч-корда, другого порта в том же VLAN. После стабильных 10 минут — верните в мониторинг.

Сценарий B. errdisable BPDU guard на access

Пользователь воткнул свитч. Уберите каскад. Порт:

shutdown
no shutdown

PortFast только на access к оконечным устройствам, BPDU guard включён. Не на транке к другому свитчу.

Сценарий C. Два линка без LAG

Либо настройте LACP на обоих концах одинаково, либо оставьте один кабель. Два «просто воткнутых» аплинка = петля до STP, затем флапы при reconverge.

Сценарий D. EEE/драйвер ПК

Обновите драйвер NIC, отключите EEE на этом адаптере, проверьте. Не отключайте Windows Update целиком.

Сценарий E. Гипервизор

Проверьте, что порт группы не в trunk mismatch, vSwitch не бриджит два физических без STP. Со стороны Ubuntu-гостя линк может моргать при live migration — это другой класс, не access-петля.

6. Клиентский след, если свитч «в другой комнате»

Пока нет CLI коммутатора, докажите flap с хоста. На Windows:

Get-NetAdapter | Format-Table Name, Status, LinkSpeed, MediaConnectState
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Tcpip'} -MaxEvents 20 |
  Select-Object TimeCreated, Id, Message

На Ubuntu journalctl -k -b | grep -i 'link\|carrier' с метками времени. Если Status не меняется, а ping пачками пропадает — это не физический flap NIC, а STP/шторм/маршрут. Тогда не меняйте патч-корд десять раз. Если Status прыгает синхронно с syslog свитча — кабель, PoE, EEE, драйвер.

Петля: все ПК VLAN 10 одновременно теряют 10.0.10.1, CPU свитча высокий. Один ПК моргает — его порт. Два кабеля в настольный свитч пользователя — классика; BPDU guard должен погасить порт, и это успех защиты, не «сломали STP». Включайте порт после удаления петли, не отключайте guard. Для оптики смотрите DOM и односторонний линк: CRC без down тоже бывает, это соседняя статья про loss, не flap. Зафиксируйте errdisable reason до shutdown/no shutdown, иначе причина исчезнет из оперативной памяти инженера.

Как проверить, что проблема устранена

Лог порта без UPDOWN 15–30 минут. ping -n 200 10.0.10.1 без пачек потерь. MAC-таблица стабильна. STP: порт forwarding, не jumping. DHCP-аренда не сбрасывается.

ping -n 200 10.0.10.1
Get-NetAdapter

Если не помогло

  • Флап только на PoE-точке — бюджет PoE, короткий кабель, не STP.
  • Только ночью — патч, скрипт ifdown.
  • Оптика в одну сторону: UDLD, замените пару.
  • Flap после включения storm control — порог слишком низкий, режет нормальный broadcast (DHCP). Поднимите порог, не отключайте STP.

Профилактика

  • BPDU guard на access, Loop guard на uplink по дизайну.
  • Не два кабеля «для надёжности» без LACP.
  • Мониторинг link traps и errdisable.
  • Запас патч-кордов, запрет пользовательских свитчей политикой порта.

FAQ

Отключить STP на время диагностики?

Нет. Для поиска петли STP как раз показывает blocking. Отключение уронит сеть штормом.

PortFast на всех портах?

Только access к хостам. На транках и между свитчами — нет.

Чем flap отличается от loss?

Flap — состояние линка/STP меняется. Loss может быть на стабильном Up (CRC, очередь). Смотрите лог линка.

Ubuntu пишет carrier lost раз в сутки. Это flap?

Разовое — патч/VM migrate. Постоянно раз в N секунд — эта статья.

Нужно ли менять STP mode MST/RSTP «на всякий»?

Нет. Смена режима без плана — краткий шторм на всей сети. Сначала петля и кабель.