• Home
  • About
    • lahuman photo

      lahuman

      열심히 사는 아저씨

    • Learn More
    • Facebook
    • LinkedIn
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

#7 BPF/eBPF

01 Mar 2022

Reading time ~1 minute

BPF/eBPF 소개

7주차의 주제는 Cilium(Cilium은 eBPF (Berkeley Packet Filter)를 기반으로 Pod Network 환경을 제공하는 CNI Plugin 입니다)입니다. 저에게는 어려운 주제였으며, 사실.. 이해를 못하였습니다. 다만, bpf/ebpf에 대해서는 자세하게 설명 해주셔서 이해가 가능했습니다. 자료는 KANG에서 제공되는 내용을 정리 하였습니다.

Linux Network Stack : 리눅스 네트워크 스택의 단점은 복잡하고, 변경에 시간이 걸리고, 레이어를 건너뛰기 어렵습니다.

https://bit.ly/3EiLsU3

IPtables 단점

IPTables/Netfilter 방식과 eBPF 방식 비교를 잘 설명한 포스팅입니다.

끄적끄적 공간 : 네이버 블로그

BPF (Berkeley Packet Filter) kernel hooks : BPF 는 커널에 삽입하여 패킷을 통제(필터링) 할 수 있으며, 다양한 영역에서 Hook 을 통해서 접근 할 수 있습니다.

https://bit.ly/3EiLsU3

extended Berkeley Packet Filter - 링크

  • BPF(1992년) 를 확장해서 eBPF가 (2014년, Alexei Starovoitov) 가 나왔고, eBPF 를 다양한 영역 (보안, 추적, 네트워킹, 모니터링)에서 활용하기 시작하였습니다.

  • eBPF is a revolutionary technology that can run sandboxed programs in the Linux kernel without changing kernel source code or loading kernel modules.
    • 커널 내에 마치 가상머신 처럼 자유롭게 프로그래밍하여 적용

https://ebpf.io/

BPF based tail calls (꼬리 물리) : Return 에서 함수 호출

(참고) XDP(eXpress Data Path) : eBPF based fast data-path

  • Packet Path in Kernel

  • TC Packet Path : Packet Scheduler(Qdisc) - QoS, Filter, NAT, 패킷 Mangle, 패킷 미러, 등

  • 패킷 차단 - 테스트 환경 : pktgen - send UDP packet

  • 패킷 차단 - 비교

(1) Userspace 패킷 차단

(2) Netfilter 패킷 차단

(3) TC Ingress 패킷 차단

(4) XDP 패킷 차단

  • XDP Actions : XDP_DROP, XDP_ABORT, XDP_PASS, XDP_TX, XDP_REDIRECT

  • XDP Mode : Generic(Linux Kernel Network Stack), Native(Network Driver, Intel 등), Offloaded(Network Hardware, Netronome)

https://www.netronome.com/blog/open-source-packet-filtering-bpf-fosdem19/

  • 패킷 차단 비교

  • Native XDP 지원 NIC, 아래 Netronome 는 XDP Offload 지원

마치며

이제 졸업 과제와 8주차 과제만을 남겨두고 있습니다. 졸업 과제는 좀 의미 있는 것을 해야 하는데, 무엇을 해야 할지 고민이 많이 되네요. 금주 안에 고민을 해서 졸업 과제를 시작해야겠습니다.



kangbpfebpf Share Tweet +1