IETF에 bpf 워킹그룹이 있군요
지난 주 bpf 관련 검색하다가 찾았습니다. 지난 3월 IETF 116차 미팅에서 정식으로 BoF에서 WG으로 승급하여 활동을 하고 있더군요. WG 페이지는 https://datatracker.ietf.org/wg/bpf 입니다.
사실 의아했습니다. IETF는 인터넷 기술 관련 표준화를 진행하는 단체입니다. 자기네들이 만든 표준에 대해 될 수 있으면 많은 종류의 구현이 만들어질 수록 좋은 겁니다. RFC도 proposed standard에서 draft standard, internet standard로 올라갈 수록 보다 많은 수의 구현을 확보할 것을 권장하고 있습니다. BPF(또는 eBPF)는 수많은 기술 중의 하나인데 이것에 대한 표준화를 하겠다고? 그래서 WG의 소개문에 해당하는 charter를 찾아서 읽어봤습니다.
The BPF working group is initially tasked with documenting the existing
state of the BPF ecosystem, and creating a clear process for extensions,
including initial extensions that are widely useful and showcase the process.
즉 1) BPF 생태계의 현재 상태에 대한 문서화 2) 향후 확장을 위한 클리어한 프로세스의 정의 로 WG의 역할을 정의하고 있습니다. 확장의 대상과 범위에 대한 정의가 불명확하긴 하지만 BPF 기술 자체의 확산에 관련된 것이라고 유추해볼 수 있을 것 같습니다.
타겟으로 진행 중인 문서화 작업은 표준화 수준에 따라 다음 두 가지 범주에서 진행합니다.
- Proposed Standard
- BPF ISA (instruction set architecture) - BPF는 일종의 VM입니다. 현재 정의된 VM 명령어 셋의 정리 수준에서 문서화가 될 것 같습니다. 다른 변종 BPF를 막고 BPF 생태계를 지키기 위해서이지 않을까 싶습니다.
- BTF (BPF Type Format) - BPF 코드에 대한 디버깅용 정보를 제공하기 위한 틀을 제공함으로써 BPF 개발환경을 개선하기 위한 것으로 보입니다.
- cross-platform 타입 및 기능 제공 - BPF가 linux 뿐 아니라 Windows에서도 지원이 되더군요. 앞으로 지원 플랫폼이 다양화해질 경우에 대비하기 위한 정리로 보입니다.
- Informational - 개발을 위한 기타 지원 성격의 문서들입니다. 특이하게 여기에 아키텍처 문서를 넣어두었네요.
- verification
- conventions/guidelines for producing BPF program
- architecture or framework
Documents
현재 proposed standard에 해당하는 ISA와 BTF 관련 문서가 각각 하나씩 올라와 있습니다.
- Dave Thaler, "eBPF Instruction Set Specification, v1.0", draft-thaler-bpf-isa-01, 2023-07-10.
- Dave Thaler, "eBPF ELF Profile Specification, v0.1", draft-thaler-bpf-elf-00, 2023-03-23.
아직 정식 WG draft가 아닌 개인 draft 상태입니다. 7월 후반에 117차 meeting이 있으니 이 때 정식 draft로의 채택 여부가 결정될 것으로 보입니다.
여담
IETF WG 페이지 말고도 github에도 관련 문서를 모아두는 저장소가 있으니 참고하시기 바랍니다.
BPF에 관심은 있지만 주요 관심사가 아니기 때문에 (업무하고의 관련성도 떨어지기도 했고), 최근 근황은 잘 몰랐는데 2021년부터 윈도우에서도 BPF를 지원한다고 합니다. 어느 수준의 완성도인지는 모르겠지만 한번 들여다 보고 싶네요.
그리고 최근 gcc는 BPF 컴파일도 지원한다고 합니다. 여기에 대해서는 한번 시도해보고 그 내용을 정리해보도록 하겠습니다.