Проблема с флаппингом порта — это действительно реальная штука, и я занимаюсь этим уже довольно долго. Я пробовал менять порты, кабели — без разницы. В 99% случаев виноваты не кабели, я уже устал от того, сколько людей сваливают всё на них. В моей практике проблемы с кабелями проявляются совсем иначе. Плохой кабель НИКОГДА не вызовет такого эффекта: месяц работать без единого сбоя, а потом вдруг начать постоянно флаппить независимо от трафика, при этом переподключение не помогает (или только на короткое время), и единственное, что реально помогает — это перезагрузка питания RB5009, причём на заметно более длительный срок, но всё равно не навсегда.
Что ещё интереснее, когда флаппинг начинается, даже обычный ребут не помогает надолго, только именно отключение питания способно восстановить нормальную работу на длительный срок. И как инженер-электронщик могу сказать: на коротких длинах качество кабеля вообще не имеет значения — даже самый плохой кабель будет работать отлично, потому что он способен не просто соответствовать, а даже превосходить необходимые допуски по качеству и мощности сигнала. Почти невозможно, чтобы плохой кабель на маленьком расстоянии создавал какие-либо проблемы.
В моём случае речь идёт о 1 Гбит-соединении между RB5009 и управляемым коммутатором Netgear GC110P. Иногда оно работает месяц, два или даже дольше, но как только начинаются сбои, единственное спасение — перезагрузка питания RB5009. Ничего другого толком не помогает — ни перезагрузка питания Netgear, ни переподключение коннекторов на обоих концах, по крайней мере не на долго. Я даже пробовал снизить скорость порта RB5009 до 100 Мбит, когда заметил начало флаппинга. Без отключения питания работало какое-то время, но потом флаппинг начался и на 100 Мбит — явно не решение. Помогает только перезагрузка питания.
Ещё любопытный момент: при 100 Мбит светодиод линка на коммутаторе Netgear может через какое-то время погаснуть, но связь при этом остаётся и не флаппит. Достаточно просто переподключить UTP-кабель, чтобы LED «проснулся». Похоже, что какая-то часть процесса автоопределения Ethernet в RB5009 перестаёт работать или начинает работать неправильно. Проблемы с качеством сигнала тут точно ни при чём, особенно на 100 Мбит, где требования к кабелю просто смехотворно низкие и легко перекрываются даже очень плохой проводкой.
Другая возможная причина — это, возможно, какой-то сбой таймингов/клокинга/PLL в контроллере 88E6393X, используемом в RB5009. Может, со временем происходит сдвиг в частотах, появляется чувствительность к каким-то факторам, и из-за этого сначала всё нормально, а потом что-то запускает нестабильность, из которой помогает выйти только перезагрузка питания. Это также объясняет, почему обычный ребут не сбрасывает внутренние ошибки чипа, которые накапливаются, а лишь инициализирует устройство заново. Надеюсь, что это можно будет исправить программно, а не проблема с самим чипом или дизайном платы.