Che cos'è un Watchdog e come funziona?
Innanzitutto, rivolgiamoci all'enciclopedia online:
Un timer watchdog (WDT, o semplicemente un watchdog), a volte chiamato timer per il corretto funzionamento del computer (timer COP), è un timer elettronico o software utilizzato per rilevare e ripristinare i malfunzionamenti del computer.[1] I timer watchdog sono ampiamente utilizzati nei computer per facilitare la correzione automatica di guasti hardware temporanei e per impedire a software anomali o dannosi di interrompere il funzionamento del sistema.
[...]
I microcontrollori spesso includono un watchdog integrato, on-chip. In altri computer il watchdog può risiedere in un chip vicino che si collega direttamente alla CPU, oppure può trovarsi su una scheda di espansione esterna nello chassis del computer.Timer simili si trovano nei circuiti elettronici della stragrande maggioranza dei dispositivi elettronici embedded, inclusi i Keenetic router. Il loro scopo è quello di prevenire un blocco, dal quale il ripristino sarebbe possibile solo con l'accesso fisico al dispositivo. Ciò si basa sul presupposto che il router possa essere installato in un luogo in cui non è possibile accedervi facilmente per spegnerlo e riaccenderlo in qualsiasi momento.
Essenzialmente, un timer watchdog può essere immaginato come un compagno di banco che ti fa periodicamente delle domande per assicurarsi che tu non stia dormendo. Se il compagno non riceve una risposta per un po' di tempo, inizia a darti dei colpetti sul fianco per svegliarti.
Potresti farti delle domande mentalmente, cercando di rimanere sveglio. In quel caso si tratterebbe di un timer watchdog 'software'. Ma ci sono seri motivi per credere che se, dopo esserti posto un'altra domanda, ti addormenti senza rispondere, non sarai in grado di svegliarti da solo all'ultimo momento. Pertanto, un timer watchdog è, di regola, un componente separato, esterno al sistema controllato, come nel caso del compagno. E se un compagno durante una lezione è un timer watchdog inaffidabile perché può addormentarsi lui stesso, le implementazioni hardware di tali timer sono rese molto più affidabili (grazie alla loro semplicità) del sistema controllato.
Tornando ai Keenetic, il timer watchdog al loro interno è parte del microchip SoC (processore). È presente in tutti i chipset MediaTek che utilizziamo ed è stato accuratamente patchato dai nostri sviluppatori per funzionare specificamente a livello di kernel (i watchdog di riferimento del produttore del chip possono essere user-space e, sotto carico elevato, dare falsi positivi a causa della bassa priorità). Esegue costantemente un conto alla rovescia da un numero specifico a zero. Non appena raggiunge lo zero, esegue immediatamente un riavvio hardware del processore. Il firmware del router tenta di impedire al timer di arrivare a zero fornendogli periodicamente un nuovo punto di riferimento. Pertanto, con alcune supposizioni, si può affermare che se il firmware si blocca, smette di fornire al timer un nuovo punto di riferimento, questo raggiunge lo zero e l'intero sistema si riavvia.
Le supposizioni sono necessarie perché il software del router, come il tuo mondo interiore durante una lezione, è un sistema molto complesso composto da molti componenti. E se, per esempio, smetti di prendere appunti ma continui a rispondere al tuo compagno, il tuo compagno non ritiene che tu stia dormendo. Allo stesso modo, il timer watchdog non considera il router bloccato se, ad esempio, il suo client DHCP è in stato di blocco. Questo è estremamente improbabile, ma è comunque così. Solo il kernel del firmware, che è responsabile delle funzioni di base del sistema, interagisce con il timer. Queste includono il routing del traffico e il Wi-Fi.
Quindi possiamo affermare con sicurezza che se, per qualche motivo eccezionale, riesci a portare il router in uno stato in cui il kernel non è in grado di azzerare il contatore del timer watchdog (il che significa anche che il router non è in grado di svolgere le sue funzioni primarie), uscirà da questo stato riavviandosi (l'intervallo di tempo non supera i 15 secondi dal blocco al riavvio). E se scopri che il router è completamente bloccato e non risponde a nulla se non allo spegnimento, allora purtroppo siamo più inclini a sospettare che si tratti di un guasto hardware.
In tutti gli altri casi, riteniamo non necessario riavviare i router Keenetic, come invece fanno alcuni router di altri produttori. Questo perché siamo così sicuri del nostro codice (e della sua copertura di test) che possiamo affermare con certezza: se hai perso la connessione a Internet, non significa che tutti i componenti del firmware siano crollati come un castello di carte. Significa semplicemente che è necessario ristabilire la connessione con il tuo ISP. Nei casi più estremi, potrebbe essere necessario riavviare il modem USB attraverso il quale accedi a Internet. Di tutto questo è responsabile il componente Ping Checker.