Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rustで挑む、SORACOMのコアネットワーク刷新【SORACOM Discovery 20...

Rustで挑む、SORACOMのコアネットワーク刷新【SORACOM Discovery 2025】

SORACOMを支えるパケット交換の要であるコアネットワーク「PGW基盤」をRustで再設計しました。性能・拡張性を大幅に高めた進化の背景と、IoTプラットフォームとして10年目を迎えた今だからこその技術選定の狙いを解説します。

株式会社ソラコム 最高技術責任者 CTO, CEO of Americas 安川 健太
株式会社ソラコム プリンシパルソフトウェアエンジニア 辻 直志

Avatar for SORACOM

SORACOM PRO

July 30, 2025
Tweet

More Decks by SORACOM

Other Decks in Technology

Transcript

  1. Speakers 安川 健太 (kenta) 最高技術責任者 CTO, CEO of Americas アメリカ在住。3児の父。最近の趣味はドリフト。

    好きな言葉: そんなこともあろうかと作っておきました 辻 直志 (tadashi) プリンシパルソフトウェアエンジニア SORACOMのモバイルコアネットワーク開発を担当 近況:ピアノにハマってベートーヴェンのピアノソナタ 第8番 (悲愴ソナタ) に挑戦中
  2. IoT Devices Cellular Session Mgmt Authentication & Authorization Billing API

    Gateway API Web Console Polaris: Cellular Core Interfaces implemented as distributed system MNO (KDDI/DOCOMO/Global) AWS Direct Connect Dipper: A set of micro services that enable Polaris and external facing API HLR/HSS, SMSC GGSN/PGW GTP SIGTRAN/ Diameter Amazon S3 Device Mgmt VPC VPC VPC Amazon SQS API VPC Hubble: Operating and Monitoring system SORACOM Core Network Architecture 今日のお話
  3. SORACOM PGWのしくみ LB SGW LB SGW LB SGW MNO SORACOM

    PGW PGW PGW PGW PGW PGW PGW PGW PGW PGW PGW PGW session-manager REST API DynamoDB 今日のお話
  4. PGWの主な役割と構成 GTP-u パケット転送 モバイル通信の基盤となるGTPを 用いたデータパケット転送機能 通信量カウント ユーザー毎の通信量を計測・ 集計する機能 通信速度制御 契約プランやポリシーに基づく

    通信速度の適切な制御 PGWノード管理 ノードのネットワーク等の設定 や系統自動切り替え管理による 安定したサービス提供 PGW Linux kernel 通信量カウント 通信速度制御 通信量集計とS3へ送 信 (Node.js) UPF: User Plane Function UPFアプリ (C言語) • GTP-u パケット転送 Kernel 連携 Agent (Go) PGWノード管理 ノード設定 系統死活監視と 自動切り替え
  5. 10年で見えてきた、SORACOM PGWの課題 通信量集計時に負荷が集中 • カーネルからの通信量集計時に負荷 が集中 • 輻輳に備え、余力を持った運用 • ピーク負荷に合わせた運用のため、

    リソース効率が低い ムダ ムダ ムダ ムダ ムダ ムダ 大容量通信時のCPU使用率が高い • 非効率な非同期・並列処理 • カーネルでの通信速度制御
  6. 10年で見えてきた、SORACOM PGWの課題 カーネル依存の非効率性 • 通信セッション作成時に通信 量計測設定、速度制御設定の ためカーネルとの連携が必要 • 並列化できず非効率 C言語実装の複雑化

    • OSSをベースに機能や改善を積み上げて きたが、コード全体の見通しの悪化 • 独自マクロによるHashMap • 独自実装のTCPコネクションプール • 独自の非同期・並列処理ロジック • 魔宮と化し、開発は特定メンバーに依存
  7. PGWの刷新:何をしたのか • GTP-u パケット転送処理を Rust で再実装(極力小さくシンプルに) • 通信量カウント・通信速度制御をUPFアプリ内で実装し、カーネル依存を排除 • この機会に

    Graviton3 プロセッサにも対応 PGW Linux kernel 通信量カウント 通信速度制御 通信量集計とS3へ送 信 (Node.js) UPFアプリ (C言語) • GTP-u パケット転送 Kernel 連携 Agent (Go) PGWノード管理 ノード設定 系統死活監視と 自動切り替え UPFアプリ (Rust) • GTP-u パケット転送 • 通信速度制御 • 通信量カウント、集計、 S3へ送信 PGWノード管理 PGW ノード設定 系統死活監視と 自動切り替え
  8. なぜ Rust なのか CTOがRustで実装を始めたから 高性能かつ軽量 C並みの性能と最小限のオーバー ヘッド 高性能な非同期・並列処理 ノンブロッキング I/O

    で軽量な 非同期・並列処理ランタイム 「開発に参加したい」というエンジニアの増加への期待 みんな Rust 書きたいでしょ? 強力な型システムとメモリ安全性 コンパイル時の型チェックと所有権 システムにより、ガベージコレク ションなしでメモリ安全性を保証 豊富なライブラリ 活発なエコシステム(crates.io)が提 供する質の高いライブラリ群を活用し、 迅速な機能開発を実現
  9. PGW刷新による効果 GTP-u パケット転送時のパフォーマンス向上 CPU効率 3倍 メモリ使用量 25%削減 UPF (C言語) UPF

    (Rust) Load average Memory footprint • Rust の軽量な非同期・並列処理機構を活用 • 創意工夫を凝らしたさまざまな独自実装を Rust のライブラリに置き換え • カーネルでの速度制御の排除
  10. PGW刷新による効果 • セッション確立時の Kernel 連携がなくなり効率化 • コード量が約1/6になり保守性と可読性の劇的な向上 • 多様なバックグラウンドを持つエンジニアの参画 •

    異なる得意言語を持つメンバーやSREメンバーもコードベースに貢献 • Graviton3 移行によりコスト効率とエネルギー効率が向上 • GenAI 活用による爆速機能開発
  11. PGW刷新時の品質保証 各種テストツールを活用 E2E(End to End) 監視 (右図) 実機とSIMを用いた全ての Subscription の通信やVASのテスト

    負荷試験基盤 データ通信の負荷テスト 疎通テストスイート 様々な構成とシナリオを組み合わせた 疎通テスト Cトラック 15:50〜16:10 IoT 負荷試験の 裏側を紹介! ソラコム 宮
  12. まとめ:10年目の進化と、次の10年へ • 課題: ➢ 10年間の成長で、SORACOM PGW(C言語)が性能・保守性の限界に • 解決と成果: ➢ Rustによる刷新でPGW基盤をシンプル・高速・柔軟に再構築

    ➢ CPU効率3倍、メモリ使用量25%削減、コード量1/6、Graviton3対応など、ス ケーラビリティとコスト効率の両面で大きな前進を実現 • 未来へ: ➢ 技術選定は性能だけでなく、未来のチーム構成も重要 ➢ SORACOMは次の10年も「安定した通信」を支えていきます