このリポジトリは 「XDP 入門」の講義資料及びサンプルコードです.
Note 講義資料は後日公開予定です.
- eBPF/XDP に興味がある方
- ネットワークロードバランサーやファイアウォールの実装に興味がある方
- とりあえず eBPF/XDP で動くものを作ってみたい方
Warning XDP プログラムを動作させるためには Linux 環境が必要です. Docker, WSL 環境では動作しません.
本資料を使ったハンズオンは基礎編と実践編の二つのパートで構成されています. XDP の知識が少ない方は基礎編,実践編の順に進めることをお勧めします. XDP のコードを書いたことのある方は実践編のみでよいです.
基礎編では hello world
を出力するだけの簡単なプログラムからパケットカウンタの XDP プログラムを実装,動作させることで XDP プログラムの書き方や動かし方を学びます.
実践編では最終的にシンプルなネットワークロードバランサーである scmlb
を実装して動かすことをゴールとしています.
scmlb
は以下の機能を有します.
- パケットカウンタ
- ファイアウォール
- 非常に単純な DoS 攻撃防御機能
- ラウンドロビンによるロードバランサー
データプレーンは XDP で実装し,コントロールプレーンには Go 言語を利用しています.
詳しくは scmlb/README.mdを参照してください.
ディレクトリ構成は以下のようになっています.
- app
- ハンズオンで利用するテスト用アプリケーションのコード及びビルドスクリプト
- scmlb
- ハンズオンの実践編で利用するネットワークロードバランサーの実装
- 詳しくは scmlb/README.mdを参照してください.
- topology
- ハンズオンで利用するネットワークを作成するためのスクリプト群
- tutorial
- ハンズオンの基礎編で利用する XDP 関連コード