2023-11-01 :-(
_ 自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう
さくらインターネットのひとによる資料。自社サービスの LTE の PGW (Packet data network Gateway. ref. モバイルネットワーク通信の仕組み|IoTコラム|さくらのIoT) をパフォーマンス測定した話題。
PGW は制御信号を処理する部分と、利用者信号を処理する部分から成る。ここでは利用者信号を処理する部分について。
利用者信号の部分を PGW-U と呼ぶこととする。PGW-U は内製。PGW-U については ENOG63 モバイルネットワークのデータプレーンをXDPで作る話 | ドクセル
PGW-U はようするにパケット処理をしている。パケットの処理を高性能化するにはハードウェアでがんばったりソフトウェアでがんばったりする。ハードウェアは高価なのでハードウェアとソフトウェアのハイブリッドでがんばる。
RSS (Receive Side Scaling) によりパケットを複数 CPU (マルチコア) に並列させ(ハードウェア)、各 CPU では内製 PGW-U で高速処理する(ソフトウェア)。
RSS は NIC のドライバレベルで処理するというもの。ドライバがパケットを CPU に分散させる。ここの図が分かりやすい。 Receive Side Scaling (RSS) の概要 - Windows drivers | Microsoft Learn
PGW-U では XDP を利用して高速化している。 XDP 何も分からない。
XDPとはeXpress Data Pathの略でLinuxカーネル内で動作するeBPFベースの高性能なパケット処理技術です. 制限のあるC言語で記述したプログラムをBPFバイトコードにコンパイルし,NICにアタッチすることでカーネルのプロトコルスタックより手前でパケット処理を行うことができます.
実際のパフォーマンス測定はホスト 2 つ用意しておこなう。 パケット生成用ホストと PGW-U 用ホスト。TRex でパケットを生成して PGW-U へ流す。TRex は DPDK を利用している。実装は Python で書かれている。
XDP とは
- eBPF をベースにした高性能パケット処理技術。Linux カーネル内で動作する。
- XDP 対応した NIC が必要(Native XDP)だが、 非対応 NIC であっても XDP を使うことができる(Generic XDP)
- パケット処理を高速する手段として DPDK もあるが、 DPDK と違い XDP は CPU コアを占有しない。そのぶんスループットとレイテンシは DPDK のほうが高い。
- 参考 XDPメモ(アーキテクチャ、性能、ユースケース) | bobuhiro11's blog
- 上記ブログで参照している論文 The eXpress data path の p.62 に性能評価の結果が書かれている。
- XDP のチュートリアル GitHub - xdp-project/xdp-tutorial: XDP tutorial 環境構築などから書かれている。
_ BIGLOBE 固定IPアドレス を契約した
固定IPアドレスは 10 年ぶりくらいに再契約 (以前は かもめインターネット を契約していたとき)
仕事で客先から VPN 接続を割り当てられる予定だが、その接続元として固定IPアドレスが必要である。現在は自社のIPアドレスはすでに登録済みなので、自社に出社すれば VPN 接続可能。在宅勤務やりたい場合は自宅に固定IPアドレスが必要。ということでせっかくだから固定IPアドレスを契約した。
最近は自分から遊び心が失われてしまっていたので、こうしてまた固定IPアドレスで遊ぶのもいい機会である。





