Rust에서 eBPF 컨트롤러를 생성 한 최초의 라이브러리 Aya

Linus torvalds 및 많은 개발자 커널 및 다양한 배포 Rust에 대한 마음을 표현했습니다. 그리고 한 번 이상 Linux 커널에서이 프로그래밍 언어로 드라이버를 구현하는 문제가 제기되었습니다.

그리고 이것에 대해 이미 다양한 작품이 공개되었습니다. 우리는 이미 여기 블로그에서 언급했습니다 예를 들어 언급 할 수 있습니다. 실험 성공한 Rust로 재 작성된 대체 유틸리티 세트 인 coreutils에서 (여기에는 sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln 및 ls와 같은 유틸리티가 포함됩니다.)

이 점을 감안할 때 Linus torvalds는이 이니셔티브에 찬성하는 입장을 완전히 제시하지 않았으며 부정적인 점을 표명했습니다 (자세한 내용은 다음 링크에서.)

리누스의 가혹한 비판에도 불구하고 작품 구현에 대해 커널의 Rust가 계속 진행되는 것을 멈추지 않았습니다. 그리고 최근 Aya 라이브러리의 첫 번째 버전이 발표되었습니다., 이는 특별한 JIT 가상 머신의 Linux 커널 내에서 실행되는 Rust에서 eBPF 드라이버를 만들 수 있습니다.

다른 EBPF 개발 도구와 달리 Aya는 libbpf 및 BCC 컴파일러를 사용하지 않습니다., 그러나 Rust로 작성된 자체 구현을 제공합니다. libc 드로어 패키지를 사용하여 커널 시스템 호출에 직접 액세스합니다. Aya 빌드에는 C 언어 도구 또는 커널 헤더가 필요하지 않습니다.

그 사람들을 위해 eBPF를 인식하지 못하는 경우 이것이 바이트 코드 인터프리터임을 알아야합니다. Linux 커널에 내장되어 네트워크 운영 핸들러를 생성하고, 시스템 운영을 모니터링하고, 시스템 호출을 가로 채고, 액세스를 제어하고, 타이밍에 따라 이벤트를 처리하고, 운영 빈도와 시간을 계산하고, kprobes / uprobes / tracepoint를 사용하여 추적 할 수 있습니다.

JIT 컴파일 덕분에 바이트 코드가 즉시 기계 명령어로 변환됩니다. 네이티브 코드의 성능으로 실행됩니다. XDP는 DMA 패킷 버퍼에 직접 액세스하여 네트워크 드라이버 수준에서 BPF 프로그램을 실행하는 수단을 제공하므로 높은 네트워크 부하 조건을위한 고성능 드라이버를 만들 수 있습니다.

Aya에 대해

언급 된 주요 기능 중 Aya에서 우리는 그것을 찾을 수 있습니다 BTF 지원 (BPF 유형 형식), 현재 커널에서 제공하는 유형을 확인하고 비교하기 위해 BPF 의사 코드로 유형 정보를 제공합니다. BTF를 사용하면 다른 버전의 Linux 커널로 다시 컴파일하지 않고도 사용할 수있는 범용 eBPF 드라이버를 만들 수 있습니다.

뿐만 아니라 bpf-to-bpf 호출 지원, 전역 변수 및 이니셜 라이저, 실행 시간으로 aya를 사용하는 기존 프로그램과 유사하게 eBPF 용 프로그램을 설계 할 수 있으며 eBPF의 작업을 고려한 기능을 취소 할 수 있습니다.

반면에 내부 커널 유형 지원, 소켓 및 성능 추적을위한 일반 배열, 해시 맵, 스택, 큐, 스택 추적 및 구조를 포함합니다.

또한 다양한 유형의 eBTF 프로그램을 만들 수 있습니다.에는 필터링 및 트래픽 관리를위한 프로그램, cgroup 및 다양한 소켓 드라이버, XDP 프로그램, 비 차단 도쿄 모드 비동기 요청 처리 및 async-std를위한 플랫폼 지원이 포함됩니다.
커널 컴파일 또는 커널 헤더에 묶이지 않고 빠른 컴파일.

언급하는 것이 중요합니다. API가 아직 안정화되지 않았기 때문에 프로젝트는 여전히 실험적인 것으로 간주됩니다. 그리고 계속 진화합니다. 또한 구상 된 모든 기능이 아직 구현되지 않았습니다.

연말까지 개발자는 Aya의 기능을 libbpf와 동등하게 제공하기를 희망합니다. 그리고 2022 년 XNUMX 월에 첫 번째 안정 버전을 형성합니다. 또한 Linux 커널 용 Rust 코드를 작성하는 데 필요한 Aya 부분을 eBPF 프로그램을로드, 연결 및 상호 작용하는 데 사용되는 사용자 공간 구성 요소와 결합 할 계획입니다.

최종적으로 더 많은 것을 알고 싶다면 그것에 대해, 당신은 할 수 있습니다 다음 링크에서 세부 사항을 확인하십시오.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.