Premiers pas avec XDP - Introduction à l'utilisation de bpftool

1. Installez l'outil bpftool

Il semble que dans différentes distributions Linux, bpftool se trouve dans différents packages, sur Ubuntu 22, bpftool fait partie de linux-tools-generic, tandis que dans raspberry pi bpftool est un package séparé.

sur ubuntu :

sudo apt install linux-tools-generic

Sur le Raspberry Pi :

sudo apt install bpftool

Utilisez ensuite la commande whereis pour afficher l'état de l'installation

xxx@xxx-pc:~$ whereis bpftool
bpftool: /usr/sbin/bpftool /usr/share/man/man8/bpftool.8.gz

Sur certaines versions de distribution, vous devrez peut-être également télécharger le code source de Linux et l'installer vous-même (la méthode de démarrage de l'installation à partir du code source est introduite pour être mise à jour)

2. Introduction à bpftool

BPFTOOL est un outil logiciel fourni avec le noyau Linux pour vérifier et exploiter les programmes eBPF et les cartes eBPF. Notez qu'en fonction de la version du noyau et de la version de bpftool, l'utilisation et la sortie réelles peuvent être légèrement différentes de cet article.

3. Fonctions communes de bpftool

  • sudo bpftool prog list :
    affiche la liste des informations de tous les programmes eBPF qui ont été chargés dans le système. En plus de la fonction d'affichage, il prend également en charge des fonctions telles que le vidage. Vous pouvez vérifier les fonctions spécifiques prises en charge via man bpftool prog.
  • bpftool net list
    affiche les programmes eBPF dans le sous-système réseau du noyau. En plus de la fonction d'affichage, il prend également en charge d'autres fonctions. Vous pouvez vérifier les fonctions spécifiques prises en charge via man bpftool net.
  • La liste des liens bpftool
    affiche tous les liens activés. Outre la fonction d'affichage, elle prend également en charge d'autres fonctions. Vous pouvez afficher les fonctions spécifiques prises en charge via le lien man bpftool.
  • La liste bpftool perf
    affiche toutes les pièces jointes raw_tracepoint, tracepoint, kprobe du système, en plus de la fonction d'affichage, elle prend également en charge d'autres fonctions, vous pouvez vérifier les fonctions spécifiques prises en charge via man bpftool perf.
  • bpftool btf list
    affiche toutes les données BPF Type Format (BTF). En plus de la fonction d'affichage, il prend également en charge d'autres fonctions. Vous pouvez afficher les fonctions spécifiques prises en charge via man bpftool btf.
  • bpftool map list
    affiche toutes les données de carte bpf chargées dans le système. En plus de la fonction d'affichage, il prend également en charge d'autres fonctions. Vous pouvez afficher les fonctions spécifiques prises en charge via man bpftool map.
  • bpftool feature probe dev eth0
    Affichez les fonctionnalités eBPF prises en charge par eth0.

4. Un exemple d'utilisation de bpftool pour afficher l'état d'exécution des programmes eBPF

Dans l'article XDP Getting Started – eBPF Program Implements Bridge/Layer 2 Switch Forwarding Function , nous avons chargé eth0 et eth1 avec le bytecode eBPF qui transfère les paquets en fonction du MAC cible.

  • Une fonction de traitement de paquets appelée xdp_bridge_prog()
  • Une base de données cartographique appelée mac_port_map

Utilisez les deux commandes suivantes pour afficher les informations ci-dessus et utilisez la fonction de vidage de carte bpftool pour afficher le contenu de la carte

xxx@raspberrypi:~ $ sudo bpftool prog list | tail -n 4
	xlated 64B  not jited  memlock 4096B
21: xdp  name xdp_bridge_prog  tag 610be6df09f4715b  gpl
	loaded_at 2023-05-31T13:57:17+0800  uid 0
	xlated 704B  not jited  memlock 4096B  map_ids 1
xxx@raspberrypi:~ $ sudo bpftool map list
1: hash  name mac_port_map  flags 0x0
	key 8B  value 4B  max_entries 100  memlock 4096B
xxx@raspberrypi:~ $ sudo bpftool map dump id 1

Je suppose que tu aimes

Origine blog.csdn.net/meihualing/article/details/130952378
conseillé
Classement