Вимкнення підтримки STP на порту комутатора роутера
У деяких випадках, підключаючи до роутера домашніх клієнтів за допомогою кабелю (телевізор, NAS, комп'ютер, ТВ-приставка тощо), ви можете помітити постійну втрату/відновлення з'єднання на мережевому порту. Це може бути пов’язано з протоколом STP (Spanning Tree Protocol), який використовується в роутерах Keenetic для організації Mesh Wi-Fi-системи.
У цьому випадку в системному журналі роутера можна побачити такі повідомлення (у наведеному прикладі проблема на порту 2):
[I] 01:08:14 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN). [I] 01:08:14 kernel: br0: port 1(eth2.1) entered blocking state [I] 01:08:14 kernel: br0: port 1(eth2.1) entered listening state [I] 01:08:17 kernel: br0: port 1(eth2.1) entered learning state [I] 01:08:18 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link down at port 2. [I] 01:08:18 kernel: br0: port 1(eth2.1) entered blocking state [I] 01:08:18 kernel: br0: port 1(eth2.1) entered listening state [I] 01:08:21 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN). [I] 01:08:21 kernel: br0: port 1(eth2.1) entered blocking state [I] 01:08:21 kernel: br0: port 1(eth2.1) entered listening state [I] 01:08:24 kernel: br0: port 1(eth2.1) entered learning state [I] 01:08:27 kernel: br0: port 1(eth2.1) entered forwarding state [I] 01:08:27 kernel: br0: topology change detected, propagating
Починаючи з версії KeeneticOS 3.4.1, було додано протокол STP для запобігання утворенню петель. Цей протокол використовується для всіх дротових підключень у Wi-Fi-системі.
При зміні топології дерево STP у вбудованому комутаторі перебудовується, проходячи етапи: блокування > прослуховування > навчання > пересилання.
Коли порт переходить із вимкненого стану у ввімкнений (до нього підключається мережевий клієнт), роутер повинен перевірити, чи не спричинить його ввімкнення мережеву петлю. Для цього він тимчасово блокує зв'язок (перейшов у стан блокування) та аналізує вхідні мережеві пакети (перейшов у стан прослуховування, а потім у стан навчання). Це займає деякий час, і передача даних через усі локальні порти блокується на кілька секунд. Коли роутер розуміє, що вмикати порт безпечно і це не призведе до утворення петлі, передача даних відновлюється (перейшов у стан пересилання).
Спрацьовування STP може також відбуватися, якщо в локальній мережі роутера є пристрої, які часто змінюють стан з'єднання Ethernet (наприклад, через погане дротове з'єднання). Ось приклад журналу, коли на порту 2 відбувається часте «мерехтіння» з'єднання:
[I] 08:43:10 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN). [I] 08:43:21 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link down at port 2. [I] 08:43:23 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN). [I] 08:43:36 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link down at port 2. [I] 08:43:38 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN). [I] 08:43:50 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link down at port 2. [I] 08:43:53 ndm: Network::Interface::Switch: "GigabitEthernet0/1": switch link up at port 2 (1000FD/AN).
Така поведінка призводить до перебудови топології STP і, як наслідок, до короткочасного розриву з’єднання. Щоб уникнути такої поведінки, можна вимкнути протокол STP на порту вбудованого комутатора, до якого підключено кінцеве обладнання. Для цього, починаючи з версії KeeneticOS 3.5, було додано спеціальну команду role iseg.
На роутері (контролері Wi-Fi-системи) через інтерфейс командного рядка (CLI) виконайте команду role iseg, щоб роутер не реагував на зміни стану з'єднання на порту.
Наприклад, щоб вимкнути STP на порту 2 комутатора, послідовно виконайте такі команди:
interface GigabitEthernet0/1 role iseg system configuration save
Важливо
Не підключайте ретранслятор Keenetic, підключений до Wi-Fi-системи, до порту, на якому використовується команда role iseg, оскільки це створить петлю.