Skip to main content

Інструкція користувача

Що таке Watchdog і як він працює?

Для початку звернемося до онлайн-енциклопедії:

Сторожовий таймер (watchdog timer, WDT, або просто watchdog), іноді його називають таймером правильної роботи комп'ютера (COP-таймер), — це електронний або програмний таймер, який використовується для виявлення та відновлення після збоїв у роботі комп’ютера.[1] Сторожові таймери широко використовуються в комп’ютерах для автоматичного виправлення тимчасових апаратних збоїв, а також для запобігання порушенню роботи системи помилковим або шкідливим програмним забезпеченням.
[...]
Мікроконтролери часто містять вбудований на кристалі watchdog. В інших комп’ютерах watchdog може знаходитися на сусідній мікросхемі, що підключається безпосередньо до ЦП, або може бути розташований на зовнішній платі розширення в корпусі комп’ютера.

Схожі таймери зустрічаються в електронних схемах переважної більшості вбудованої електроніки, включаючи Keenetic маршрутизатори. Їхнє призначення — запобігти такому зависанню, відновлення після якого було б можливе лише за наявності фізичного доступу до пристрою. Це базується на припущенні, що маршрутизатор може бути встановлений у місці, де у вас немає легкого доступу до нього, щоб вимкнути та ввімкнути його в будь-який момент.

По суті, сторожовий таймер можна уявити як сусіда, що сидить поруч з вами на занятті, який періодично ставить запитання, щоб переконатися, що ви не спите. Якщо сусід деякий час не отримує відповіді, він починає штовхати вас у бік, щоб розбудити.

Ви могли б ставити собі запитання подумки, намагаючись не заснути. Тоді це був би «програмний» сторожовий таймер. Але є вагомі причини вважати, що якщо, поставивши собі чергове запитання, ви заснете, не відповівши, то ви не зможете розбудити себе і в останній момент. Тому сторожовий таймер, як правило, є окремим, зовнішнім по відношенню до контрольованої системи, компонентом, як у випадку з сусідом. І якщо сусід на лекції є ненадійним сторожовим таймером, оскільки він сам може заснути, то апаратні реалізації таких таймерів зроблені набагато надійнішими (завдяки своїй простоті), ніж контрольована система.

Повертаючись до Keenetic, сторожовий таймер у них є частиною мікросхеми SoC (процесора). Він присутній у всіх чипсетах MediaTek, які ми використовуємо, і ретельно допрацьований нашими розробниками для роботи саме на рівні ядра (еталонні watchdog-и від виробника мікросхем можуть працювати в просторі користувача і при високому навантаженні давати хибні спрацьовування через низький пріоритет). Він постійно веде зворотний відлік від певного числа до нуля. Як тільки він досягає нуля, він негайно виконує апаратне перезавантаження процесора. Прошивка маршрутизатора намагається запобігти відліку таймера до нуля, періодично надаючи йому нову точку відліку. Таким чином, з деякими припущеннями, можна стверджувати, що якщо прошивка зависає, вона перестає надавати таймеру нову точку відліку, він досягає нуля, і вся система перезавантажується.

Припущення необхідні, оскільки програмне забезпечення маршрутизатора, як і ваш внутрішній світ під час лекції, є дуже складною системою, що складається з багатьох компонентів. І якщо, наприклад, ви перестаєте конспектувати лектора, але продовжуєте відповідати сусідові, сусід не вважає, що ви спите. Аналогічно, сторожовий таймер не вважає маршрутизатор завислим, якщо, наприклад, його DHCP-клієнт перебуває в завислому стані. Це вкрай малоймовірно, але все ж таки можливо. З таймером взаємодіє тільки ядро прошивки, яке відповідає за базові функції системи. До них належать маршрутизація трафіку та Wi-Fi.

Тож можна з упевненістю сказати, що якщо якимось дивом вам вдасться перевести маршрутизатор у стан, коли ядро не зможе скинути лічильник сторожового таймера (що також означає, що маршрутизатор не може виконувати свої основні завдання), він вийде з цього стану шляхом перезавантаження (інтервал часу від зависання до перезавантаження становить не більше 15 секунд). І якщо ви виявите, що маршрутизатор повністю завис і не реагує ні на що, крім вимкнення живлення, то, на жаль, ми схильні підозрювати, що це апаратна несправність.

У всіх інших випадках ми вважаємо непотрібним перезавантажувати маршрутизатори Keenetic, як це роблять деякі маршрутизатори інших виробників. Це тому, що ми настільки впевнені в нашому коді (та його покритті тестами), що можемо з упевненістю сказати: якщо у вас зникло з'єднання з Інтернетом, це не означає, що всі компоненти прошивки посипалися, як картковий будиночок. Це просто означає, що вам потрібно відновити з’єднання з вашим інтернет-провайдером. У крайньому випадку може знадобитися перезапустити USB-модем, через який ви виходите в Інтернет. За все це відповідає компонент Ping Checker.