문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: eBPF]] == 개요 == Express Data Path (XDP)는 개발자가 network program을 eBPF로 작성하여서 NIC, Driver, Socket단에 삽입할 수 있도록 하고, 커널에서 유저로의 전환 없이, Linux network stack을 타기 전에 매우 이른 시점에 Network program을 정의할 수있도록 한다. 이를 통해서 Overhead를 줄여서 high-end, flxible network programming을 가능하게 하였다. XDP는 리눅스 커널 4.18부터 도입되었으며, 많은 Production level에서 사용되고 있다. 사용예시로는, load balancing, packet filtering, user-defined packet forwarding, security, network tracing등이 있다. == Return value == * XDP_ABORTED: 패킷을 버리고 xdp_exception을 발생시킴 * XDP_DROP: 패킷을 버림 * XDP_PASS: 패킷을 커널로 보냄 * XDP_TX: 패킷을 수신된 인터페이스로 재전송 (Forward packet to the same NIC) * XDP_REDIRECT: 패킷을 다른 인터페이스(NIC)로 전달 == 예시 == <syntaxhighlight lang=c> #include <linux/bpf.h> #include <bpf/bpf_helpers.h> SEC("xdp_prog1") int xdp_prog_drop(struct xdp_md *ctx) { return XDP_DROP; } char _license[] SEC("license") = "GPL"; // Build XDP to bpf object file clang -O2 -target bpf -c xdp_kern.c -o xdp_kern.o // Load XDP program to socket buffer sudo ip link set eno2 xdpgeneric obj xdp_kern.o sec xdp_prog1 </syntaxhighlight> == References == # https://github.com/ahn9807/eBPF-Tutorial.git Express Data Path 문서로 돌아갑니다.