Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

10分でわかる Cilium と XDP / BPF

2,094 views

Published on

2017年11月14日開催 『サイバーエージェントとさくらインターネットのインフラ談義』のスライド資料です

Published in: Technology
  • Be the first to comment

10分でわかる Cilium と XDP / BPF

  1. 1. サイバーエージェントとさくらインターネットのインフラ談義 さくらインターネット株式会社 Shuji Yamada (山田 修司) @uzyexeNov 14, 2017 10分でわかる Cilium と XDP/BPF
  2. 2. Shuji Yamada • さくらインターネット入社10年目 • インフラエンジニアっぽい • コンテナホスティング Arukas 担当 • CoreOS + Mesos 派閥 (山田 修司) Trust me. I am Engineer _(┐¦_ ε:) 2
  3. 3. 3 (コンテナアプリとサービス間のネットワーク接続や 透過的なロードバランシング、セキュリティポリシーを提供) What is Cilium ? Cilium とは 読み方:スリィアム(意味:繊毛、まつげ) Linux Native, HTTP Aware Networking and Security for Containers.
  4. 4. Cilium BPF BPF BPF BPF CONTAINER CONTAINER CONTAINERNIC Bytecode Injection Policy
 Repository Cilium Monitor Container Orchestrator (Docker, Kubernates, Mesos) Plugins Cilium CLI Kernel Key-Value Store ( etcd / consul ) Cilium Daemon (Code Generator) Cilium Architecture
  5. 5. BPF ?
  6. 6. 6 強力なセキュリティ可視性と制御ロジックを 動的に挿入するLinuxカーネルのテクノロジ What is BPF ? BPF とは Linux enhanced Berkley Packet Filter BPF eBPF は BPF としばしば略される…
 (このスライドでも、eBPFのことをBPFと呼んでいる)
  7. 7. Kernel Application Network Hardware Driver BPF FORWARD DROP User Space Kernel Space NIC TCP / IP Stack XDP [ eXpress Data Path ] Driver に一番近い場所で通信制御 Network Socket
  8. 8. Network Socket Similar DPDK ? DPDK とは 違う DPDK DPDK Libraries NIC Kernel Driver BPF NIC TCP / IP Stack XDP Application Kernel Driver TCP / IP Stack Application Network Socket
  9. 9. Tracing Linux IO analysis BPF Features Tracing / Profiling 9 ネットワーキング可視化 異常を動的に追跡できる すべての送受信を走査せずトレース
  10. 10. BPF Features Power of Networking 10 Performance Power of Networking DDoS検知 DDoS mitigation パフォーマンス改善
 (XDP: eXpress Data Path) L7ポリシー制御 Software Defined Network
  11. 11. BPF Features Security 11 コードはカーネル内で安全に実行 (サンドボックスで安全性を静的にチェック) フィルタプログラムを安全に設定できる Security Sandboxing
  12. 12. Available BPFが対応している機能 12 •L3 forwarding (IPv6 & IPV4) •Host connectivity •Encapsulation
 (VXLAN/Geneve/GRE) •ICMPv6 generation •NDisc & ARP responder •Access Control •Port Mapping (TCP/UDP) •Connection tracking •L3/L4 Load Balancer •Statistics •Events (perf ring buffer) •Debugging framework •NAT46
  13. 13. Kernel Space Verifier + JIT BPF Traffic Control
 Ingress Network Device Network
 Stack BPF Traffic Control
 Egress Network Device Network Socket User Space BPF bytecodeSource Code LLVM/clang bpf syscall C, Go, P4 compile
  14. 14. まとめ 14
  15. 15. Summary • 従来の L3/L4 ネットワークポリシーの課題 • マイクロサービスにおいては不十分 • コンテナにおいても不十分 • IPアドレス(L3)とポート番号(L4)だけではポリシー不足 • HTTP / API (L7) の動的な認識が必要 15
  16. 16. SmartNIC • CPUコア山盛り + BPF なら大概のパケットは捌ける • でも、インフラ で CPU を使ったら負けだと思う
 (FPGAとかに処理をオフロードできないと正直キツイ) • 一部の FPGA based SmartNIC は XDP/BPF をサポート • SmartNIC を交換するだけで数年戦えるマシンができる? 16
  17. 17. • BPF / XDP • Linux の software-based networking を推進 • Cilium • コンテナに BPF / XDP 及び L7ポリシー を提供
 (コンテナに特別な対応は不要) • Smart NIC • FPGA に複雑なネットワーク処理をオフロード 17 Summary
  18. 18. Getting Started • The official vagrant box: $ git clone https://github.com/cilium/cilium
 $ cd cilium/examples/getting-started
 $ vagrant up 18
  19. 19. THANK YOU!
  20. 20. © SAKURA Internet Inc.

×