[eBPF Summit Day 2 Recap - Cilium](https://cilium.io/blog/2020/10/29/ebpf-summit-day-2)
### Safe Programs, the Foundation of BPF by Alexei Starovoitov (Facebook)
[Safe Programs The Foundation of BPF - Alexei Starovoitov, Facebook - Full Keynote](https://www.youtube.com/watch?v=AV8xY318rtc)
eBPF開発者でありメンテなのAlexeiの講演。
- eBPFがカーネルを拡張してプログラミングするための手段として、カーネルモジュールよりもはるかに安全なアプローチであることに焦点を当てた。Verifierにより、プログラムの安全性がチェックされ、カーネルがクラッシュしてシステムが停止しないことが保証される。
- しかし、その安全性を保証することは必ずしも容易ではない。最適化を行うたびに、コンパイラはプログラマの本来の意図を少しずつ難読化し、Verifierはコンパイルされたバイトコードの安全性を検証することが難しくなる。
- BTFがRestricted-C言語に型安全性を提供することで、その安全性をさらに強化する方法。今後の展開は?eBPFリンカ、eBPFライブラリ、eBPFダイナミックリンク拡張など。
> Maximum attention to safety in all aspects of BPF programming that's what makes it unique and that's why BPF is an undoubted choice today for kernel extensions and kernel programming.
### Kernel Tracing in Production with Falco by Kris Nóva (Falco)
[Kernel tracing in production with Falco - Kris Nova, Sysdig - Full Keynote](https://www.youtube.com/watch?v=6E-xA0ZjIGM)
最終的なタイトルは"How do we instrument the kernel without a kernel module in GKE? "。
- Falcoはカーネルのインスツルメンテーションを利用して、カーネル内で起こっていることを追跡し、特定のルールに基づいてアラートを発行する。カーネルモジュールでやる。
- しかし、ホスト上でカーネルモジュールのロードをサポートしていないGKEではどうか?⇒ eBPF。Falcoの開発者は、eBPFを使ってエミュレーションデバイスを作成し、カーネルモジュールを置き換えた。
- eBPFベースのエンジンがLinuxカーネルモジュールの代わりに実行できるようになったことで、Falcoの他の部分は大きな変更なしに簡単にプラグインできるようになった。
- カーネルモジュール、eBPFとclang 9およびclang 10を使用したFalcoの動作例。これらの例の主な目的は、異なる実装間の移動が容易であることと、不審な活動に対して警告を発するためにどのように動作するか。
### Performance Wins with BPF: Getting Started by Brendan Gregg (Netflix)
[Performance Wins with BPF: Getting Started - Brendan Gregg, Netflix - Full Keynote](https://www.youtube.com/watch?v=wyfhjr_ufag)
- 周期的なプロセスを見つけるexecsnoop、設定ミスや見つからないファイルを見つけるopensnoop、TCPセッションの詳細を検査するtcplife、遅いI/O性能を見つけるext4slower、ブロックI/O性能のボトルネックを見つけるbiosnoopなど、現在利用可能なツールを紹介。これらのツールは、簡単にアクセスできるプログラムのほんの一例に過ぎず、異常なアクティビティを見つけて、迅速に利益を得られる。
- ほとんどの場合、既存のツールで問題を解決できるが、それができない場合は、プログラマーのように考えてソリューションを構築する必要がある。もし今から始めるのであれば、bpftraceから始めるのがよい。bccの実装を検討している場合、代わりにlibbpfベースのツールをチェックすることを勧める。libbpf のおかげで、opensnoop を 151KB のシングル・バイナリに構築できた。
- eBPFの未来は、同じ情報を表示するGUIの開発にあると考えている。eBPFに依存している中間システムを知らないオペレーターやユーザーに対して、このデータを表示できるようになれば、新しい道が開けると考えている。
### Kubernetes Network Policy Logging with eBPF by Zang Li (Google)
[Kubernetes Network Policy Logging with eBPF - Zang Li, Google - Full Keynote](https://www.youtube.com/watch?v=oLS25ztnlMk)
- Kubernetesのネットワークポリシーがどのように実装されているのか、ポリシーとシナリオの例を挙げて説明。さらに、CNIプロバイダーによる実装の違いが、iptables、eBPF、Open vSwitch、その他の実装など、ポリシーの実装方法に直接影響する。また、ポリシーの実施に加えて、セキュリティ意識の高い顧客は、ポリシーの決定に関連するイベントをログに記録したいと考えている。
- Google社にとっては、データパスへの影響を最小限に抑えることが重要だった。設計段階では、iptablesでは複雑なネットワーク要件に対応できないことがすぐにわかった。Ciliumは、彼らが必要とする柔軟性とプログラマビリティを提供してくれた。さらに、eBPFベースのネットワークポリシーを実装しているため、データパスからiptablesへの依存をすべて取り除くことができた。これらの要因により、Googleは最終的にGKEとAnthosのCNIプロバイダーとしてCiliumを選択した。
- GoogleがCiliumのモニターインフラをどのように拡張して利用し、ネットワーク接続に関する有用なデータを抽出・記録しているかを説明。ネットワーク接続の可視性と観測性を提供するために、GoogleはCilium monitorを使用している。Cilium monitorはユーザースペースのアプリケーションとして実行され、eBPFプログラムによって利用可能になったデータにperf ring bufferを介してアクセスできる。このバッファには、イベントのタイプ、ソース、ポリシーバーディクト、方向など、必要と思われるあらゆる情報が含まれている。Googleでは、このプロセスをさらに最適化するために、観測されたすべてのパケットではなく、新規接続時にのみポリシーイベントを生成し、詳細なポリシーログエンジンを実現した。
### The Future of eBPF-based Networking and Security by Thomas Graf (Isovalent)
[The Future of eBPF based Networking and Security - Thomas Graf, Isovalent - Full Keynote](https://www.youtube.com/watch?v=slBAYUDABDA)
- 1990年代のネットワークは、ほとんどが物理的なものだった。ダイヤルアップモデムの時代でもあった。1999年には、ipchainsの後継としてiptablesが作られた。2003年にはVLANが登場し、Xenハイパーバイザーが誕生し、EMCがVMWareを買収した。2007年にはKVMがLinuxカーネルに統合され、仮想化の時代が到来した。しかし、ネットワークの場合は、ほとんど何も変わっていなかった。2009年、Open vSwitchの最初のリリースにより、ネットワーク仮想化の時代が始まった。2010年にはOpenStackが誕生した。2013年にはDockerが登場し、ネットワークを仮想化層から直接継承し、コンテナも当初はミニチュアのVMのように扱われいた。2014年にはKubernetesが誕生し、意図的にネットワークの実装をあまり前提としなかった。にもかかわらず、Kubernetesは当初、文字通りモデムが支配していた15年前に設計されたシステムであるiptablesを多用していた。
- 同じ年の2014年には、eBPFがLinuxカーネルに導入された。2015年にはLinuxのネットワークがプログラマブルになり、2016年にはXDPがカーネルに統合され、現在では多くのeBPFベースのロードバランシングソリューションのベースとなっている。2016年には、Ciliumプロジェクトが初めて発表され、eBPFを基盤として完全にゼロから設計された。移行が完了した。最初に物理サーバーの上に構築された時代から、SDNが最初に生まれた仮想マシンをベースにした時代、そして現在ではネットワークやセキュリティ層がクラウドネイティブなワークロード専用に構築されている時代へと移行した。
- 次の展開は?トーマスは、業界がeBPFとXDPによるエッジロードバランシングに注目し始めると考えている。また、pod-to-podやsocket-to-socketのネットワーキングをさらに改善することで、アプリケーションの認識を向上させる。また、APIとシステムコールが類似していることから、ネットワークとシステムのセキュリティに対するアプローチがより統一され、ポリシー、エンフォースメント、アラートの間の懸念事項の分離が少なくなる。最後に、物理的なワークロードと仮想化されたワークロードやコンテナ化されたワークロードの橋渡しをする機会があり、eBPFベースのサービスメッシュがカーネルに実装されるようになる。