[eBPF Summit Day 1 Recap - Cilium](https://cilium.io/blog/2020/10/28/ebpf-summit-day-1) CilliumのブログでRecapを書いてくれている。 ### A Beginner’s Guide to eBPF Programming by Liz Rice (Aqua) [A Beginner's Guide to eBPF Programming - Liz Rice - Full Keynote](https://youtu.be/lrSExTfS-iQ) - eBPFプログラムとは何か、ユーザー空間とカーネル空間の違い。 - eBPF Mapとは何か、eBPFプログラムがどのようにしてイベントに基づいてトリガーされるのか。 - kprobeに基づいて "Hello, World "を表示するeBPFプログラムを簡単かつ迅速に作成する方法の紹介。 - bccライブラリを使った方法を紹介した後、このデータをeBPFマップに格納することで、よりスケーラブルなソリューションを実現する方法と、ユーザースペースのアプリケーションからそのデータを取得する方法のデモ。 ### BPF as a Fundamentally Better Dataplane by Daniel Borkmann (Isovalent) [BPF as a Fundamentally Better Dataplane - Daniel Borkmann, Isovalent - Full Keynote](https://youtu.be/Qhm1Zn_BNi4) eBPFの概要と実行エンジンとしての機能を説明。 - カーネルのeBPFサポートの改善点として、eBPF間の関数呼び出しのサポート、境界付きループ、グローバル変数、スタティックリンク、BTF、1プログラムあたり100万命令までのサポートなどがある。カーネルヘルパーは150個、mapsは30個。BPF: 114命令,11レジスタ,(x86-64: 2000+命令,16レジスタ) - eBPFによるカーネルの攻撃対象領域の削減について、eBPFに基づく修正プログラムを実装するためのワークフローが、特定のディストリビューションからバックポートされたカーネルを待つよりも、はるかに迅速かつ容易に導入できる - eBPFによるカーネルのスケーラビリティと拡張性の向上、ロードバランシングやDDoS軽減のユースケースにおけるXDPとDPDKのパフォーマンスの比較。 - eBPFをベースとしたポリシーをコンテナやポッドに実装することで、従来のファイアウォールよりも優れたパフォーマンスとスピードを実現できる。 - eBPFベースのソリューションが、生のパフォーマンスを向上させるためのPod同士のネットワークの場合や、バックエンドアプリケーションへのサービスのロードバランシングの場合に、どのように使用できるか。 - 最近統合されたbpf_redirect_peer()とbpf_redirect_neigh()のサポートにより、ホストスタックのオーバーヘッドを排除することで、Pod間の接続性を向上させ、大幅なパフォーマンスの向上を実現する。 - eBPFを使って帯域管理やTCPの輻輳制御などを実現する方法 ### Our eBPF Journey at Datadog by Tabitha Sable and Laurent Bernaille (Datadog) [BPF as a Fundamentally Better Dataplane - Daniel Borkmann, Isovalent - Full Keynote](https://www.youtube.com/watch?v=Qhm1Zn_BNi4) - Datadogは、数万台のホスト、数十のKubernetesクラスターを稼働させ、複数のクラウド・プロバイダーで運用している - Datadogのアーキテクチャは、ポッドごとのルーティング可能なIPアドレスに依存しており、各クラスタが固有の範囲を使用して直接アクセスできることを保証する。その結果、IPアドレス空間の管理とクラスタ間のディスカバリーがより困難となる。 - 当初、Datadogは各プロバイダーの様々なCNIプラグインに依存していたが、プロバイダーによって違いがあった。また、ネットワークポリシーのサポートが不足している場合が多く、e2eの暗号化を簡単に実装する方法がなかった。サービスのロードバランシングのために、初期の設計では kube-proxy と iptables に依存していたが、規模が大きくなるとこのオーバーヘッドも困難になった。IPVSは初期の問題をある程度軽減することができたが、1層ではなく2層での接続追跡という追加の課題があった。 - これらの要件の結果、DatadogはCNIプラグインとしてCiliumを選択した。Ciliumを使用することで、Datadogはkube-proxyを完全に削除することができ、またeBPFを使用してネットワークポリシーを施行し始めた。Ciliumは、複数のクラウドプロバイダーに対応したユニバーサルなCNIであり、e2eの暗号化を簡単に実現できる機能を備えているため、適していた。Datadogは、内部トラフィックだけでなく、ネットワーク・エッジ・フィルタリング、DDoS軽減、ルーティングなど、セキュリティ、コンプライアンス、ネットワーク・パフォーマンスに関する自社製品にeBPFを導入することを検討している。 ### Security Auditing and Enforcement using eBPF by KP Singh (Google) [Security Auditing and Enforcement using eBPF - KP Singh, Google - Full Keynote](https://www.youtube.com/watch?v=XFJw37Vwzcc) eBPF上にLinuxセキュリティモジュールを構築した動機の話。 - 2019年に、利用できない監査データのリクエストを提示され、Linuxで監査とエンフォースメントを行う全く新しい方法を構築することにつながった。 - Kernel Runtime Security Instrumentation(KRSI)は、エンフォースメントとともに、システム上で行われていることを監視する両方の役割を担う。約200のLSMフックは、LSMが適切な判断を下すために必要なすべてのデータを提供する。 - eBPFのRing buffer、bpf_d_path()ヘルパー、bpf_local_storage()と呼ばれるstorage blob、sleepableなeBPFプログラム、ブートタイムローディングなど、最近カーネルに統合されたeBPFの新機能の概要。アトミックな操作については、現在進行中。 - eBPFが他のLSMに取って代わることはないかもしれないが、この2つのソリューションは平和的に共存できると考えている。