Zum Inhalt springen

Berkeley Packet Filter

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 30. Dezember 2024 um 08:48 Uhr durch imported>WolfgangRieger.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Berkeley Packet Filter (BPF), auch Berkeley-Filter, bietet auf unixähnlichen Betriebssystemen eine Schnittstelle zur Sicherungsschicht an, die es erlaubt, Datenpakete der Sicherungsschicht zu senden und zu empfangen. Falls der Treiber der Netzwerkschnittstelle den Promiscuous Mode unterstützt, kann die Schnittstelle in diesen Modus geschaltet werden, damit alle Pakete des Netzwerkes, auch jene, die für andere Netzwerkadapter bestimmt sind, empfangen werden können.

Das BPF unterstützt außerdem das Filtern von Datenpaketen, damit nur interessante Pakete verarbeitet werden und somit Rechenleistung gespart wird.

Die Berkeley-Filter-Funktionalität ist als Interpreter in Maschinensprache für die BPF-VM implementiert. Computerprogramme können somit Daten aus dem Paket lesen, arithmetische Operationen darauf ausführen, das Resultat gegen die Filterdefinition vergleichen und anschließend das Paket akzeptieren oder verwerfen. Auf manchen Systemen, einschließlich FreeBSD und WinPcap, wird Just-in-time-Kompilierung (Konvertierung von Instruktionen der virtuellen Maschine in Maschinensprache) unterstützt, um die Leistung des Systems zu verbessern. Seitdem auch unter Linux die Just-in-time-Kompilierung unterstützt wird, entwickelt sich der BPF dort zu einer universalen virtuellen Maschine im Kernel.<ref>Michael Larabel: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Phoronix, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive )Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> BPF ist ein offizielles Back-End für LLVM (ab Version 3.7).<ref>Michael Larabel: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Phoronix, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive )Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Der Interpreter kann im Kernel-Modus oder Benutzer-Modus laufen. Kernel-Modus-Interpreter werden z. B. für Socket-Filter unter Linux oder WinPcap-Mechanismen benutzt. Einen Benutzer-Modus-Interpreter bietet die libpcap-/WinPcap-Implementierung des Pcap-API. Auf Systemen ohne Kernel-Modus-Unterstützung für den Filtermechanismus können damit Pakete im Benutzermodus gefiltert werden.

2007 wurden von Robert Watson und Christian Peron die Zero-copy buffer extensions zur BPF-Implementierung hinzugefügt. Damit können vom Gerätetreiber erfasste Pakete direkt in den Speicher von Programmen im Benutzermodus geschrieben werden und es entfällt ein zusätzliches Kopieren der Daten.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden. Seit 2014 ist mit Linux Version 3.18 der extended Berkeley Packet Filter (abgekürzt eBPF), eine Erweiterung des BPF (der rückwirkend zur Unterscheidung als classic Berkeley Packet Filter bezeichnet wird, abgekürzt cBPF), Teil des Linux-Kernels.<ref>Linux kernel 3.18, Section 1.3. bpf() syscall for eBFP(sic!) virtual machine programs, Nachricht auf kernelnewbies.org, abgerufen am 30. Dezember 2024.</ref>

Weblinks

Einzelnachweise

<references />