L'azienda Yandex ha pubblicato il codice sorgente dell'utility skbtrace, che offre strumenti per monitorare il funzionamento dello stack di rete e tracciare l'esecuzione delle operazioni di rete in Linux. L'utility è realizzata come un'estensione del sistema di debug dinamico BPFtrace. Il codice è scritto in linguaggio Go ed è distribuito sotto licenza MIT. È supportato il funzionamento con i kernel Linux 4.14+ e con gli strumenti BPFTrace 0.9.2+.
Durante il funzionamento, l'utility skbtrace genera script in un linguaggio di alto livello BPFtrace che eseguono una traccia dinamica e un'analisi del tempo di esecuzione delle operazioni associate con lo stack di rete Linux e i socket di rete. Gli script vengono poi tradotti in applicazioni eBPF e eseguiti a livello di kernel.
Fra le funzionalità specifiche di skbtrace si segnala la misura del tempo di trasmissione dei pacchetti tra l'interfaccia di rete in ingresso e quella in uscita, la durata della connessione TCP dal ricevimento del SYN fino all'arrivo del FIN/RST, le latenza tra i diversi eventi di elaborazione dei pacchetti e il tempo necessario per stabilire la connessione TCP. Skbtrace può anche essere utilizzato per identificare la ritrasmissione di pacchetti TCP, anche se incapsulati in altri pacchetti, e funge da semplice analogia dell'utilità tcpdump, capace di analizzare l'esecuzione di alcune procedure del kernel, come la chiamata kfree_skb per liberare memoria durante l'abbandono dei pacchetti.
Fonte: opennet.ru
