eBPF

1 개요[ | ]

extended BPF (eBPF), extended Berkeley Packet Filter
확장 BPF, 확장 버클리 패킷 필터
  • BPF의 확장판
  • 클래식 BPF와는 다른 명령어 세트 또는 실행기술을 사용한다.
  • FreeBSD, NetBSD, WinPcap 등 일부 플랫폼은 JIT 컴파일러를 사용하여 BPF 명령어를 원시 코드로 변환하여 성능을 향상시킨다.
  • 리눅스에는 BPF JIT 컴파일러가 포함되어 있으며 기본적으로 비활성화되어 있다.
  • 동일한 가상 머신 언어에 대한 커널 모드 인터프리터는 다른 OS(예: Tru64 유닉스)에서의 원시(raw) 데이터링크계층 메커니즘과 패킷 캡처 메커니즘의 소켓 필터에 사용된다.
  • 리눅스 커널에는 버전 3.18부터 확장 BPF(eBPF)라는 확장 BPF 가상 머신이 포함되어 있다.
  • eBPF 프로그램은 다양한 추적 점에 연결하는 것과 같이, 네트워킹 이외의 목적으로도 사용할 수 있다.
  • 커널 버전 3.19부터 eBPF 필터를 소켓에 연결할 수 있고, 커널 버전 4.1부터는 수신 및 송신 네트워킹 데이터 경로의 트래픽 제어 분류기에 연결할 수 있다.
  • 더 이상 사용되지 않는 기존 버전들은 '클래식 BPF (cBPF)'로 명명되었다.
  • 요즘 리눅스 커널은 eBPF만 실행하고, 로드된 cBPF 바이트 코드는 프로그램 실행 전에 커널에서 eBPF 표현으로 투명하게 변환된다.

2 같이 보기[ | ]

3 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}