Per svolgere le sue funzioni, il Berkeley Packet Filter è stato integrato come interprete in linguaggio macchina all’interno di una macchina virtuale. Di conseguenza, il BPF esegue un formato predefinito di istruzioni. In qualità di interprete, il Berkeley Filter legge i file sorgente, li analizza ed esegue un’istruzione dopo l’altra. Poi traduce le istruzioni in codice macchina per l’esecuzione diretta.
Grazie alle SysCalls, che sono chiamate di funzioni di sistema speciali e pronte all’uso, il Berkeley Filter invia richieste al centro del sistema operativo, chiamato anche kernel. Quest’ultimo controlla i permessi di accesso prima di accettare o rifiutare la richiesta. Tra le circa 330 SysCalls di Linux vi sono ad esempio:
- read – permesso di lettura, con il quale si può leggere un file
- write – permesso di scrittura, che consente la scrittura di un file
- open – consente di aprire i file o i dispositivi
- close – consente di chiudere i file o i dispositivi
- stat – consente di recuperare lo stato di un file
Grazie a un continuo e costante sviluppo, oggi il BPF funziona come una macchina virtuale universale direttamente nel kernel del sistema operativo, dove si svolge l’intero processo e l’organizzazione dei dati. Con l’aggiunta di nuove caratteristiche, il filtro è noto come Extended BPF, abbreviato eBPF. Questo è in grado di eseguire qualsiasi codice intermedio (byte code) utilizzato in modo sicuro e durante il runtime (compilazione just-in-time) direttamente nel kernel operativo. L’Extended BPF funziona nel kernel operativo all’interno di un ambiente isolato ed è per tale motivo protetto. Il modello di ambiente noto come Sandbox minimizza il rischio che il sistema abbia un effetto negativo sulla logica del kernel operativo.