Slide 1

Slide 1 text

ギャルのパンティおくれ shu-kitamura

Slide 2

Slide 2 text

自己紹介 ● 出身 ○ 大阪府枚方市 ○ 3年前から札幌住み ● 業務 ○ SIer ○ デバイスドライバ関係 ● 趣味 ○ テニス、フットサルやってます ○ お笑いが好きです

Slide 3

Slide 3 text

話すこと 1. DBについて 2. デモ 3. eBPF・XDPについて

Slide 4

Slide 4 text

DBについて データベースではなくドラゴンボール の方です。 一星球~七星球を集め、神龍(シェンロン)を呼び出すと 何でも一つ願いを叶えてくれる。 ● 生き返らせる ● 若返らせる みたいな願いが作中では多かった。 最近の作品では「 ○○について教えて」とかで呼び出されていて、 ChatGPTみたいな扱いを受けているらしい。

Slide 5

Slide 5 text

ギャルのパンティおくれ 作中で最初に叶えられた願い。 この流れを eBPF(XDP) という技術を使って表現してみる。 いでよドラゴン 願いを言え ギャルのパンティ おくれーーーーーっ!!!!! こっちが叶った 世界征服の願いを叶えようとしていた ピラフ シェンロン ウーロン

Slide 6

Slide 6 text

デモ① ウーロンの邪魔が入らない いでよドラゴン 願いを言え。どんな願いもひとつだけ 叶えてやろう 世界を征服したい たやすい願いだ

Slide 7

Slide 7 text

デモ② ウーロンの邪魔が入る いでよドラゴン 願いを言え。どんな願いもひとつだけ 叶えてやろう ギャルのパンティおくれ たやすい願いだ

Slide 8

Slide 8 text

eBPF(XDP) という技術を使って、NICが受け取ったパケットを監視する。 ウーロンの正体は以下の動作をする eBPF(XDP) プログラム 1. TCPペイロードが 「願いを言え ……」のパケットを待つ 2. パケットを書き換えて、送り返す。 以下の3点を書き換えている。 ● TCPペイロードを「ギャルのパンティおくれ」に書き換え ● 送信元・先の MAC/IPアドレス、ポートを入れ替え ● TCPのSEQ/ACK、チェックサムを再計算して書き換え 何が起きたのか

Slide 9

Slide 9 text

eBPF (Extended Berkeley Packet Filter) とは? eBPFはLinux カーネル内のVMでバイトコードを実行できる機能。 ● ユーザ空間からバイトコードをロードする ● ロードされたコードはカーネル内のVMで動作する ● ロード時にVerifier(検証機)が危険なプログラムを弾くから安全 ○ 例:無限ループ、不正なメモリアクセスなど ● 柔軟で多様な用途 ○ パケットモニタリング ○ ファイアウォール ○ ロードバランサ ○ システムコールの追跡 などなど この蜂は eBee という名前 自分で書いたプログラムを カーネルで安全に実行できるのが良さ と理解しています(僕は)

Slide 10

Slide 10 text

プログラムの種類 eBPFプログラムには種類があります。 ● XDP : NICがパケットを受信したときに○○する ● TC : ネットワークスタックを通過したときに○○する ● kprobe : 特定のカーネル関数が実行されたときに○○する 他にも色々あります。 ○○の部分を自分で書く

Slide 11

Slide 11 text

XDPとは NICがパケットを受信したときに、任意の処理を加える。 XDPプログラムはXDP Actions(終了コード)によってパケットを制御する。 サポートされているXDP Actionsは以下 ● XDP_PASS : パケットを通過させる ● XDP_TX : パケットを受信したNICから送信 ● XDP_REDIRECT : パケットを別のNICから送信 ● XDP_DROP : パケットを破棄する ● XDP_ABORTED : プログラムがエラーの時に使う。パケットは破棄する

Slide 12

Slide 12 text

図にすると カーネル ハードウェア NIC ドライバ XDP ネットワークスタック ソケット NIC アプリケーション XDP_TX XDP_REDIRECT XDP_PASS XDP_DROP パケット

Slide 13

Slide 13 text

ウーロンがやってたこと カーネル ハードウェア NIC ドライバ       XDP ネットワークスタック ソケット NIC アプリケーション XDP_TX パケット eBPFでパケットを 書き換え

Slide 14

Slide 14 text

用途 今回みたいなおふざけ用の技術ではない。 もちろん、ちゃんと使われている技術です。 ● ロードバランサ ○ Katran(Facebook) ● コンテナ間の通信制御・監視 ○ Cilium ● DDoS対策 ○ Gatebot(Cloudflare)