PyCon APAC 2023

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう
2023-10-28 , track 4

本セッションでは、パケット処理系の開発について、性能評価を通じた改善プロセスを通じて一緒に探求します。
はじめにパケット処理の基本原理・ベンチマーキングの手法について説明したのち、改善プロセスで中心となる 性能試験環境・結果の可視化 で Python をどのように活用したか紹介します。
この発表を通じて、自社のネットワークや自作パケット処理の性能測定と向上に関心のある開発者、エンジニア、アーキテクトにとって「通信の高速化ってこうやって行うのか!」とちょっと世界の見方が変わる有益な時間を提供します


背景とモチベ

  • 弊社ではフルMVNO事業をやっており、その中のPGW-Uと呼ばれるインターネットに出るための自作パケット処理系の通信効率の性能を上げることが求められていました
  • そのためにpython製のツールとライブラリを駆使して計測し高速化をしました

話す内容

  • 私たちは、XDPと呼ばれるeBPFを使った高速パケット処理技術を使って実装しています
  • 性能試験を通した改善プロセスでは、負荷試験のパケット生成・テスト結果の記録・メトリックの分析など多くの場面で Python を活用しています

それぞれの場面での活用事例を紹介します

  • scapy で TRex のパケット生成にモバイル網で使うプロトコルのパケットを追加しました
  • 性能試験のテスト完了後、性能指標を TRex から取得し Pushgateway で記録しました
  • Jupyter Lab 上で Grafana 経由の CSV ファイルを pandas.DataFrame に加工し、可視化や評価を行いました

性能試験を通じた改善例

  • 大量のエントリを流した際にメモリ使用量が大きくなるとコケる問題を発見して修正した事例
  • パケットのcheck sumの処理で遅くなったので処理性能を向上させるためにchecksum機能をoptoutする機能を追加した事例
  • 特定のパケットに対してマルチコア対応がされていないことを発見して、IntelのNICドライバに機能を追加してマルチコア対応させた。その結果$(nproc| CPUコア数)倍の効率アップができた事例

21卒新卒で京都の大手ゲーム会社に就職し、ゲーム機開発やSDK開発などに携わる。
その後は学生時代に立ち上げに関わったネットワークに関するベンチャーに転職し、ソフトウェアエンジニアリングの力でモバイルの世界をよりよくするため日々社会実装を行っている。