XDP 시작하기--bpftool 사용 방법 소개

1. bpftool 도구 설치

다른 Linux 배포판에서 bpftool은 다른 패키지에 있는 것 같습니다. 우분투 22에서 bpftool은 linux-tools-generic의 일부인 반면 raspberry pi에서는 bpftool이 별도의 패키지입니다.

우분투에서:

sudo apt install linux-tools-generic

라즈베리 파이에서:

sudo apt install bpftool

그런 다음 whereis 명령을 사용하여 설치 상태를 봅니다.

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

일부 배포 버전에서는 Linux에서 소스 코드를 다운로드하여 직접 설치해야 할 수도 있습니다(업데이트를 위해 소스 코드에서 설치를 시작하는 방법이 도입됨).

2. bpftool 소개

BPFTOOL은 eBPF 프로그램 및 eBPF 맵을 확인하고 작동하기 위해 Linux 커널과 함께 제공되는 도구 소프트웨어입니다. 커널 버전과 bpftool 버전에 따라 실제 사용법과 출력이 이 기사와 약간 다를 수 있습니다.

3. bpftool의 공통 기능

  • sudo bpftool prog list:
    시스템에 로드된 모든 eBPF 프로그램의 정보 목록을 표시한다.
  • bpftool net list는
    커널 네트워크 하위 시스템의 eBPF 프로그램을 표시합니다. 표시 기능 외에도 다른 기능도 지원합니다. man bpftool net을 통해 지원되는 특정 기능을 확인할 수 있습니다.
  • bpftool 링크 목록은
    활성화된 모든 링크를 표시합니다.표시 기능 외에도 다른 기능도 지원합니다.man bpftool 링크를 통해 지원되는 특정 기능을 볼 수 있습니다.
  • bpftool perf 목록은
    시스템의 모든 raw_tracepoint, tracepoint, kprobe 첨부 파일을 표시하며 표시 기능 외에도 다른 기능도 지원합니다. man bpftool perf를 통해 특정 지원 기능을 확인할 수 있습니다.
  • bpftool btf 목록은
    모든 BTF(BPF Type Format) 데이터를 표시합니다. 표시 기능 외에도 다른 기능도 지원합니다. man bpftool btf를 통해 지원되는 특정 기능을 볼 수 있습니다.
  • bpftool 맵 목록은
    시스템에 로드된 모든 bpf 맵 데이터를 표시합니다.표시 기능 외에도 다른 기능도 지원합니다. man bpftool 맵을 통해 지원되는 특정 기능을 볼 수 있습니다.
  • bpftool 기능 프로브 dev eth0
    eth0에서 지원하는 eBPF 기능을 봅니다.

4. bpftool을 사용하여 eBPF 프로그램의 실행 상태를 보는 예

기사 XDP 시작하기 - eBPF 프로그램이 브리지/레이어 2 스위치 포워딩 기능 구현 기사에서 대상 MAC에 따라 패킷을 포워딩하는 eBPF 바이트코드로 eth0 및 eth1을 로드했습니다.

  • xdp_bridge_prog()라는 패킷 처리 함수
  • mac_port_map이라는 지도 데이터베이스

위의 정보를 보려면 다음 두 명령을 사용하고 맵의 내용을 보려면 bpftool 맵 덤프 기능을 사용하십시오.

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

おすすめ

転載: blog.csdn.net/meihualing/article/details/130952378
おすすめ