サイバーエージェントとさくらインターネットのインフラ談義
さくらインターネット株式会社
Shuji Yamada (山田 修司)
@uzyexeNov	14,	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
Cilium
Monitor
Container Orchestrator
(Docker, Kubernates, Mesos)
Plugins
Cilium CLI
Kernel
Key-Value Store
( etcd / consul )
Cilium Daemon
(Code Generator)
Cilium Architecture
BPF
?
6
強力なセキュリティ可視性と制御ロジックを
動的に挿入するLinuxカーネルのテクノロジ
What is BPF ?
BPF とは
Linux enhanced Berkley Packet Filter
BPF
eBPF は BPF としばしば略される…

(このスライドでも、eBPFのことをBPFと呼んでいる)
Kernel
Application
Network Hardware
Driver
BPF
FORWARD
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
Tracing
Linux IO analysis
BPF Features
Tracing / Profiling
9
ネットワーキング可視化
異常を動的に追跡できる
すべての送受信を走査せずトレース
BPF Features
Power of Networking
10
Performance
Power of Networking
DDoS検知
DDoS mitigation
パフォーマンス改善

(XDP: eXpress Data Path)
L7ポリシー制御
Software Defined
Network
BPF Features
Security
11
コードはカーネル内で安全に実行
(サンドボックスで安全性を静的にチェック)
フィルタプログラムを安全に設定できる
Security
Sandboxing
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
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
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
THANK YOU!
© SAKURA Internet Inc.

10分でわかる Cilium と XDP / BPF