10分でわかる cilium と xdp / bpf

20
サイバーエージェントとさくらインターネットのインフラ談義 さくらインターネット株式会社 Shuji Yamada ( 山田 修司 ) @uzyexe Nov 14, 2017 10 分でわかる Cilium XDP/BPF

Upload: shuji-yamada

Post on 21-Jan-2018

592 views

Category:

Technology


13 download

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

BPF

?

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

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

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

まとめ

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.