Di recente ho avuto una discussione con qualcuno che ha avuto a che fare con le impostazioni del firewall aziendale. Il firewall cancellerà la sua tabella di stato da qualsiasi connessione che è rimasta inattiva per oltre 10 minuti. Purtroppo il suo comportamento quando riceve un segmento per una connessione che non è nella sua tabella di stato è quello di eliminare silenziosamente il segmento. Ciò significa che può impiegare più di 8 minuti perché un'applicazione STCP si renda conto di non poter più comunicare con il suo punto finale e ristabilire la connessione. Questo era fastidioso per i suoi utenti.
A questo punto ho suggerito di modificare l'applicazione per includere un messaggio configurabile di livello applicativo keep-alive. Sfortunatamente, cambiare l'applicazione non è un'opzione. L'applicazione inoltre non imposta l'opzione SO_KEEPALIVE socket, quindi anche cambiando il timer keep-alive a livello di sistema da 2 ore di default a 9 minuti non risolverà il problema.
La soluzione è un segmento di terze parti TCP layer keep-alive. Si tratta di un segmento keep-alive di livello TCP che sembra provenire dall'applicazione (utilizzando l'indirizzo IP del modulo come indirizzo sorgente e la porta TCP dell'applicazione come porta sorgente) e che viene inviato all'indirizzo IP e alla porta dell'host remoto. Il firewall lo nota come attività e mantiene la connessione nella sua tabella di stato.
La spiegazione e gli esempi del mio strumento 3rd_party_keep_alive sono troppo lunghi per questo post del blog, quindi potete trovare i dettagli qui.