次世代システム研究室のS.T.です。今回はLinuxカーネルに実装されているパケット処理基盤XDPで,特定ポート宛て通信の宛先ポート書き換えを試してみます。MySQLは脇役です。 はじめに XDPとは XDP(eXpress Data Path)はLinux kernel 4.8から実装された<fn>BPF Features by Linux Kernel Version</fn>パケット処理基盤です。古くからカーネルに実装されているパケットフィルタであるBPFを拡張して,カーネル内部の関数にアタッチしてメトリクス収集などを行えるようにしたeBPFを,ネットワークデバイスのドライバに近い関数に適用可能にしたもの,というとイメージがつきやすいかと思います。図1のようなイメージでパケットを処理します。XDPを使うと,カーネルのプロトコルスタックに入る前のパケットを参照・改変することができるため
![XDPでPacket Rewriting – MySQLのポートを書き換える - GMOインターネットグループ グループ研究開発本部](https://cdn-ak-scissors.b.st-hatena.com/image/square/d69e3e060d70b9afb1f3ff4f8c7d33d628b699ea/height=288;version=1;width=512/https%3A%2F%2Fwww.gmo-jisedai.com%2Fwp-content%2Fuploads%2Fnetwork-150x150.png)