ebpf

eBPF 스택 추적의 명령 포인터에 동일한 IP가 두 번 있고 관련이 없는 이상한 IP가 있는 eBPF 프로그램이 포함되어 있는 이유는 무엇입니까?
ebpf

eBPF 스택 추적의 명령 포인터에 동일한 IP가 두 번 있고 관련이 없는 이상한 IP가 있는 eBPF 프로그램이 포함되어 있는 이유는 무엇입니까?

eBPF 프로그램에서 커널 스택 추적을 얻을 때 중복되고 이상한 항목이 나타납니다. 누군가 이것을 설명할 수 있습니까? 먼저 관련 eBPF 프로그램 조각부터 시작하겠습니다. 다음과 같이 스택 추적 그래프를 선언합니다. struct { __uint(type, BPF_MAP_TYPE_STACK_TRACE); __type(key, u32); __type(value, stack); __uint(max_entries, 1 << 14); } stacks SEC(".maps...

Admin

컨테이너 외부의 포트만 거부하기 위해 systemd 리소스 관리를 사용할 수 있나요?
ebpf

컨테이너 외부의 포트만 거부하기 위해 systemd 리소스 관리를 사용할 수 있나요?

최신 Fedora 39에서는 루트 없는 컨테이너용 podman을 설정하고 /etc/systemd/system/user-1000.slice.d/user-resources.conf를 생성하여 사용자가 바인딩할 수 있는 포트를 제한했습니다. [Slice] SocketBindAllow = 12345 SocketBindDeny = any 이제 예상대로 사용자는 포트 20202에 바인딩할 수 없습니다. 예를 들면 다음과 같습니다. $ nc -4 -lp 20202 Ncat: bind to 0.0.0.0...

Admin

루프백 인터페이스에 대한 XDP 일반 전송 패킷이 삭제되었습니다.
ebpf

루프백 인터페이스에 대한 XDP 일반 전송 패킷이 삭제되었습니다.

xdp를 통해 UDP 패킷을 전송하려고 하는데(수신은 제대로 작동함) UDP가 패킷을 처리하기 전에 패킷이 삭제됩니다. 커널: Linux fedora 6.5.12-300.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 20 22:44:24 UTC 2023 x86_64 GNU/Linux PRETTY_NAME="Fedora Linux 39(워크스테이션 에디션)" 내 xdp 프로그램과 소켓이 사용됩니다 xdpgeneric. 패킷이 전송되는 것을 보고 tcpdumpip_rcv ...

Admin

eBPF 및 검증된 Linux 커널 모듈
ebpf

eBPF 및 검증된 Linux 커널 모듈

eBPF는 어떤 면에서 사용자 측 검증 커널 모듈보다 성능이 뛰어납니까? 코드 검증의 가치에 대해서는 의문을 제기하지 않습니다. 두 접근 방식 모두 완전히 정적으로 검증됩니다. 두 방법 모두 일반적으로 권한이 있는 사용자에게만 부여되는 기능이 필요합니다. 그러나 사용자 공간에서 유효성 검사기를 실행하면 사용자에게 유효성 검사기, 보안 수준 및 허용되는 가정 중에서 더 많은 선택권이 제공됩니다. 유효성 검사기는 커널과 독립적으로 더 빠르게 개발될 수도 있습니다. 이 질문을 하기 전에 읽은 내용이 있습...

Admin

bpftrace에서 argv[0]을 얻는 방법은 무엇입니까?
ebpf

bpftrace에서 argv[0]을 얻는 방법은 무엇입니까?

매우 간단한 스크립트가 있습니다. #!/usr/bin/bpftrace tracepoint:syscalls:sys_enter_exec* { @start[pid] = nsecs; printf("START;%-6d;", pid); join(args->argv); } tracepoint:syscalls:sys_enter_exit* { $from = @start[pid]; $until = nsecs; printf("STOP;%-5d;%-16d\n", pid, $...

Admin

TC BPF를 사용하여 포트 리디렉션
ebpf

TC BPF를 사용하여 포트 리디렉션

한 포트에서 다른 포트로 TC BPF들어오는 트래픽을 리디렉션하는 데 사용하고 싶습니다 . 아래는 내 코드이지만 다음의 예제도 시도했습니다.808080사람 8tc-bpf(검색 8080), 동일한 결과가 나타납니다. #include <linux/bpf.h> #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h> #include <linux/pkt_cls.h> #include <linux/if_ether.h&g...

Admin

pmap은 "다른 객체"의 매핑을 보여줍니다. 이러한 객체가 무엇인지 어떻게 알 수 있습니까?
ebpf

pmap은 "다른 객체"의 매핑을 보여줍니다. 이러한 객체가 무엇인지 어떻게 알 수 있습니까?

내 Rust 애플리케이션에서 일종의 메모리 누수를 조사하고 있습니다. 메모리는 꾸준히 증가합니다(약 30M에서 시작하여 매일 50M씩 증가). 애플리케이션은 Rust로 작성되었으며 XDP/BPF 프로그램을 일부 인터페이스에 연결하고 일부 데이터를 읽고 BPF 맵을 통해 일부 측정항목을 게시합니다. 흥미롭게도 "누수"는 테스트 환경에서만 발생합니다(프로덕션에서의 메모리 사용량은 지금까지 매우 안정적입니다). 아래는 일부 pmap 출력입니다( 출력이 많고 문제의 일부가 아니기 *.so때문에 필터링했습니다...

Admin

ebpf에서 환경 변수 읽기
ebpf

ebpf에서 환경 변수 읽기

ebpf프로그램 을 작성하려고 하는데 C사용자가 설정한 환경변수를 읽어보고 싶습니다. .getenv​C​ bpf_helper()이 작업을 수행하는 기능을 찾을 수 없습니다 . 이 목적을 위한 기능이 있습니까? 그렇지 않다면 어떻게 구현할 수 있습니까? ...

Admin

쉘에 관계없이 실행된 모든 명령을 기록하시겠습니까?
ebpf

쉘에 관계없이 실행된 모든 명령을 기록하시겠습니까?

사용자가 다음 명령을 실행한다고 가정합니다. zcat file.gz | grep something | gzip > grepped.gz execve나는 모든 s를 기록하고 stdins/stdouts를 함께 연결하고 비슷한 형식으로 재구성하여 syslog에 넣는 커널 함수(아마도 BPF 필터?)를 찾고 있습니다 . 쉘과 상호작용하지 않고 이를 수행할 수 있는 방법이 있습니까? ...

Admin

1마이크로초 미만의 대기 시간이 긴 콘텐츠를 측정하기 위한 DPROBES(DTRACE_PROBE)
ebpf

1마이크로초 미만의 대기 시간이 긴 콘텐츠를 측정하기 위한 DPROBES(DTRACE_PROBE)

현재 대기 시간이 긴 애플리케이션의 성능을 분석하고 있지만 측정 결과에 전혀 확신이 없습니다. 지금까지 나는 DPROBES계측기를 사용해왔고BCC/기능측정용. 이 숫자를 확인할 수 있는 사람이 있나요? 또한, 더 좋은 방법을 아시는 분 계시면 알려주세요. 측정값 usleep(1): 평균 = 53962나노초 #include <unistd.h> #include <sys/sdt.h> int main() { int i; for(i=0; i<1000000; i++){ ...

Admin

커널 4.19.232의 linux-tools-common에서 linux bpftool을 찾을 수 없습니다.
ebpf

커널 4.19.232의 linux-tools-common에서 linux bpftool을 찾을 수 없습니다.

bpf내 Linux 커널에 올바르게 설치되었는지 확인하려고 합니다 . 다음과 같이 커널에서 활성화됩니다. jakew@desktop:~$ cat config | grep BPF CONFIG_CGROUP_BPF=y CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT_ALWAYS_ON=y # CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set CONFIG_IPV6_SEG6_BPF=y CONFIG_NETFILTER_XT_MATCH_BPF=y CONFI...

Admin

C/C++에서 현재 cgroup ID를 얻는 방법은 무엇입니까?
ebpf

C/C++에서 현재 cgroup ID를 얻는 방법은 무엇입니까?

이것eBPF 도우미 함수bpf_get_current_cgroup_id명백한 작업을 수행하는 eBPF 프로그램에 대해 정의됩니다 . u64 bpf_get_current_cgroup_id(void) Return A 64-bit integer containing the current cgroup id based on the cgroup within which the current task is running. 하지만 이에 상응하는 시스...

Admin

eBPF의 기능적 한계는 무엇입니까?
ebpf

eBPF의 기능적 한계는 무엇입니까?

내가 아는 한 이는 주로 관찰 가능성(예: 읽기 전용)에 사용됩니다. 패킷을 라우팅할 수는 있지만 더 할 수 있는 일이 있나요? 파일 시스템을 조작하고, 신호를 보내고, eBPF 프로그램에서 쓸 수도 있나요? ...

Admin

Mellanox NIC는 XDP 후크에서 DRV_MODE를 지원하지 않습니까?
ebpf

Mellanox NIC는 XDP 후크에서 DRV_MODE를 지원하지 않습니까?

첫 번째 eBPF 프로그램을 XDP 후크에 로드하려고 하는데 DRV_MODE를 사용할 수 없습니다. Ubuntu 20.04 LTS (GNU/Linux 5.4.0-100-generic x86_64)보다 구체적으로는 , 및 NIC 를 사용하고 있습니다 ca:00.0 Ethernet controller: Mellanox Technologies MT2892 Family [ConnectX-6 Dx]. 드라이버를 최신 버전으로 업데이트했습니다. driver: mlx5_core version: 5.6-2.0.9 ...

Admin