bpf echo
1.0.0
bpf-echo est un serveur d'écho TCP et UDP ultra-rapide qui prend en charge le trafic IPv4 et IPv6. Son implémentation exploite le filtre de paquets Berkeley étendu et la collection de compilateurs BPF afin de rediriger les paquets sortants directement vers la file d'attente de réception du socket d'envoi. Il est parfait pour évaluer les serveurs proxy ou les bibliothèques réseau, où vous voulez vous assurer que le serveur en amont ne constitue pas un goulot d'étranglement.
Les conditions requises pour exécuter bpf-echo
sont :
pip3 install pyroute2
python3-bpfcc
dans les référentiels de packages Ubuntu. Consultez INSTALL.md de bcc pour plus de détails4.1
$ sudo ./bpf-echo --ipv4 127.0.0.1 --port 1122 # run in different terminal
$ echo "hello" | nc -W1 127.0.0.1 1122
hello
usage: bpf-echo.py [-h] [--ipv4 IPV4] [--ipv6 IPV6] [--port PORT]
[--ifname IFNAME]
optional arguments:
-h, --help show this help message and exit
--ipv4 IPV4 IPv4 address that will reflect packets. Disabled if empty
string. (default: 127.0.0.1)
--ipv6 IPV6 IPv6 address that will reflect packets. Disabled if empty
string. (default: )
--port PORT TCP/UDP destination port that will reflect packets.
(default: 12345)
--ifname IFNAME Interface the eBPF classifier will be loaded on. (default:
lo)
La mise en œuvre du BPF est plutôt simple et fait donc quelques compromis :