Блог‎ > ‎

О вреде STP, приложенного к кривым рукам

Отправлено 17 мар. 2014 г., 04:27 пользователем Константин Ханкин   [ обновлено 17 мар. 2014 г., 05:01 ]
Небольшое творчество студенческое в качестве заглавия:
STP vs RSTP


Итак, представим себе такую сеть: есть есть несколько компьютеров, подключенных к одному коммутатору. К этому же коммутатору подлючен ещё один, существенно более старый (каталист с 12.0). Компьютеры загружаются с сети (если быть точным, тянут /home с сети по GlusterFS, что в нашем случае несущественно). Помимо компьютеров подключены и другие устройства, получающие адреса с DHCP. Всё замечательно, пользователи довольны.

В один прекрасный день в приступе паранойи я решаю включить STP. Никаких особых предпосылок к этому нет, все розетки контролируются, пользователи лишнего не делают, но ведь правильно же с STP! Начинаю делать и обнаруживаю, что в IOS 12.0 нет поддержки RSTP и portfast. Пофиг, включаю STP, приоритетом задаю корневой коммутатор - красота, завелось. Тестирую, что всё работает (ничего не перезагружая, это важно!). И довольный ухожу.

На следующий день получаю жалобу - компьютеры загружаются с 10 раза, а где-то не загружаются вообще. Сетевые принтеры не печатают. Начинаю копать. Выясняется, что DHCP-клиент получает адрес сильно позже момента, когда надо монтировать /home. При этом, хотя сетевая ФС замечательно переживает разрывы сетевого соединения длительностью даже в несколько десятков минут, она абсолютно не терпит отсутствия подключения в момент монтирования.

Первое желание какое? Правильно, увеличить таймауты, ведь руками-то сделанное всё работает! Другое желание - делать монтирование в rc.local вместо fstab, проверяя наличие адреса и подключения. Но некрасиво же, работало! Хватит искать воркэраунды, думать надо! Минута на раздумия - и простой вывод: STP не успевает перевести порт в Forwarding до истечения таймаута.

В моём случае поднимать таймауты до минуты и более было плохо. Так что был просто отключен STP. Всё снова заработало, как раньше.

Выводы:
  1. Прежде, чем что-то сделать - подумайте, спланируйте. Plan->Do->Check->Act, а никак не (Fuck Off Planning)->Do->(Fuck Off Checking).
  2. Если что-то сделали - тестируйте всесторонне. Для этого нужен предварительно подготовленный план тестирования. Предварительно подготовленный!
  3. Не всегда надо сразу кидаться клепать воркэраунды. Иногда докопаться до сути проблемы и вернуть всё взад как было не так уж и долго, как может показаться.
Comments