10分でわかる cilium と xdp / bpf
TRANSCRIPT
サイバーエージェントとさくらインターネットのインフラ談義
さくらインターネット株式会社 Shuji Yamada (山田 修司)
@uzyexeNov14,2017
10分でわかる Cilium と XDP/BPF
Shuji Yamada
• さくらインターネット入社10年目 • インフラエンジニアっぽい • コンテナホスティング Arukas 担当 • CoreOS + Mesos 派閥
(山田 修司)Trust me. I am Engineer _(┐|_ ε:)
2
3
(コンテナアプリとサービス間のネットワーク接続や透過的なロードバランシング、セキュリティポリシーを提供)
What is Cilium ?
Cilium とは
読み方:スリィアム(意味:繊毛、まつげ)
Linux Native, HTTP Aware Networking and Security for Containers.
Cilium
BPF BPF BPF BPF
CONTAINER CONTAINER CONTAINERNIC
Bytecode Injection
Policy Repository
CiliumMonitor
Container Orchestrator(Docker, Kubernates, Mesos)
PluginsCilium CLI
Kernel
Key-Value Store ( etcd / consul )
Cilium Daemon (Code Generator)
Cilium Architecture
6
強力なセキュリティ可視性と制御ロジックを動的に挿入するLinuxカーネルのテクノロジ
What is BPF ?
BPF とは
Linux enhanced Berkley Packet Filter
BPF
eBPF は BPF としばしば略される… (このスライドでも、eBPFのことをBPFと呼んでいる)
Kernel
Application
Network Hardware
Driver
BPFFORWARD
DROP
User Space
Kernel Space
NIC
TCP / IP Stack
XDP [ eXpress Data Path ] Driver に一番近い場所で通信制御
Network Socket
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
TracingLinux IO analysis
BPF Features
Tracing / Profiling
9
ネットワーキング可視化
異常を動的に追跡できる
すべての送受信を走査せずトレース
BPF Features
Power of Networking
10
PerformancePower of Networking
DDoS検知DDoS mitigation
パフォーマンス改善 (XDP: eXpress Data Path)
L7ポリシー制御 Software Defined Network
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
Kernel Space
Verifier + JIT
BPFTraffic Control
IngressNetwork Device Network Stack
BPFTraffic Control
Egress Network Device
Network Socket
User Space
BPF bytecodeSource Code LLVM/clang
bpf syscall
C, Go, P4
compile
Summary• 従来の L3/L4 ネットワークポリシーの課題
• マイクロサービスにおいては不十分
• コンテナにおいても不十分
• IPアドレス(L3)とポート番号(L4)だけではポリシー不足
• HTTP / API (L7) の動的な認識が必要
15
SmartNIC• CPUコア山盛り + BPF なら大概のパケットは捌ける
• でも、インフラ で CPU を使ったら負けだと思う(FPGAとかに処理をオフロードできないと正直キツイ)
• 一部の FPGA based SmartNIC は XDP/BPF をサポート
• SmartNIC を交換するだけで数年戦えるマシンができる?
16
• BPF / XDP
• Linux の software-based networking を推進
• Cilium
• コンテナに BPF / XDP 及び L7ポリシー を提供(コンテナに特別な対応は不要)
• Smart NIC
• FPGA に複雑なネットワーク処理をオフロード17
Summary
Getting Started• The official vagrant box:
$ git clone https://github.com/cilium/cilium
$ cd cilium/examples/getting-started
$ vagrant up
18