358 Views
March 21, 26
スライド概要
2026/3/21に開催された、情報科学若手の会・セキュリティ若手の会 春の陣2026で話したスライドです。
https://wakate.connpass.com/event/382858/
マイクロコントローラ上で実現する NDN Forwarder 2026/03/21 加藤 颯 (GitHub: sou1118) @情報科学若手の会・セキュリティ若手の会 春の陣2026 1
アジェンダ 1. 現在のインターネットの課題 2. ICN(情報指向ネットワーク)とは 3. CCNx と NDN — 2つの代表的プロトコル 4. NDN の詳細とIP通信との比較 5. マイクロコントローラ向けNDN Forwarderの設計と実装 6. まとめ 2
1. ICNの基本概念 3
現在のインターネットの仕組み — ロケーション指向 • 現在のIP通信は 「誰と通信するか」 を指定する • • • ホスト名→DNS→IPアドレス→パケット転送 送信元と宛先のIPアドレスで1対1の通信経路を確立 TCP/IPは1970年代に設計されたホスト間通信のためのアーキテク チャ • 当時の利用形態: リモートログイン、ファイル転送 4
利用形態の変化—ホスト間通信からコンテンツ取得へ • WWW登場以降、インターネットの主要な利用はコンテンツの取得に 変化 • • • 動画配信(YouTube、Netflix)、SNS、オンラインショッピング ユーザは「○○サーバに接続したい」のではなく 「○○の動画が見たい」 現在の対応策: CDN(Content Delivery Network)が アプリケーション層で対処 • しかしネットワーク層は依然としてホスト中心のIPに依存 「何を取得するか」が重要なのに、「誰とつなぐか」を 前提とした通信は非効率じゃね? 5
ロケーション指向の具体的な課題 課題 説明 パフォーマンス 同じコンテンツでも遠方のサーバまで取りに行く必要がある 負荷集中 人気コンテンツへのアクセスがサーバに集中 耐故障性 サーバがダウンすると取得不可 モビリティ 端末が移動するとIPアドレスが変わり通信が途切れる アドレス管理 IPアドレスの割り当て・NAT・枯渇問題 6
ICN—情報指向ネットワーク技術 ICN (Information-Centric Networking): ネットワーク層自体を コンテンツ中心に再構築 • 基本的な考え方 • • IPアドレスの代わりにコンテンツの名前でデータを要求・転送 「誰とつなぐか」→ 「何を取得するか」 へのパラダイムシフト • 近くに同じデータがあれば、遠方のサーバに行かずに取得可能 • ICNの主要な特徴 • • • 名前ベースの転送(Name-based Forwarding) ネットワーク内キャッシュ(In-network Caching) データ自体への署名によるセキュリティ 7
ICNの3つのデータ構造 ICNノード(ルータ)は以下の3つのテーブルを持つ(IPルータのルーティ ングテーブルに相当) テーブル 役割 IP での対応 PIT(Pending Interest Table) 未解決の要求を記録。同一要求の集約 (Interest Aggregation) — (該当なし) FIB(Forwarding 名前プレフィックスと転送先の対応 Information Base) ルーティングテーブル CS (Content Store) — (ルータにはない。 CDN/プロキシが担う) 受信データのキャッシュ IPルータにはないPITとCSがICNの大きな特徴。 ルータ自身がキャッシュを持ち、要求の集約も行う。 8
ICN通信の流れーInterest(要求) 1. Consumer が「/example.com/video.mp4」という名前の Interest を送信 2. 各ルータはCS→PIT→FIBの順に処理 3. CSにあればキャッシュから即応答、なければFIBに従い上流へ転送 4. 最終的にProducerまたはキャッシュを持つノードに到達 Interest Consumer video.mp4 9
ICN通信の流れーInterest(要求) 1. Consumer が「/example.com/video.mp4」という名前の Interest を送信 2. 各ルータはCS→PIT→FIBの順に処理 3. CSにあればキャッシュから即応答、なければFIBに従い上流へ転送 4. 最終的にProducerまたはキャッシュを持つノードに到達 Consumer /example.com /video.mp4 CS /example.com /video.mp4 PIT FIB 10
ICN通信の流れーInterest(要求) 1. Consumer が「/example.com/video.mp4」という名前の Interest を送信 2. 各ルータはCS→PIT→FIBの順に処理 3. CSにあればキャッシュから即応答、なければFIBに従い上流へ転送 4. 最終的にProducerまたはキャッシュを持つノードに到達 ・・・ Consumer /example.com /video.mp4 CS CS PIT PIT FIB FIB /example.com /video.mp4 11
ICN通信の流れーInterest(要求) 1. Consumer が「/example.com/video.mp4」という名前の Interest を送信 2. 各ルータはCS→PIT→FIBの順に処理 3. CSにあればキャッシュから即応答、なければFIBに従い上流へ転送 4. 最終的にProducerまたはキャッシュを持つノードに到達 ・・・ Consumer /example.com /video.mp4 CS CS PIT PIT FIB FIB Producer /example.com /video.mp4 12
ICN通信の流れーData(応答) 1. Producer(またはキャッシュノード)がDataパケットを返送 2. DataはInterestが通った経路を逆向きにたどる (PITに記録された経路) 3. 途中のルータがDataをキャッシュ(CSに保存) 4. 同じ名前の次のInterestにはキャッシュから応答可能 Data Consumer Producer /example.com /video.mp4 /example.com /video.mp4 13
ICN通信の流れーData(応答) 1. Producer(またはキャッシュノード)がDataパケットを返送 2. DataはInterestが通った経路を逆向きにたどる (PITに記録された経路) 3. 途中のルータがDataをキャッシュ(CSに保存) 4. 同じ名前の次のInterestにはキャッシュから応答可能 ・・・ Consumer CS CS Producer /example.com /video.mp4 PIT PIT /example.com /video.mp4 14
ICNの歴史と2つのプロトコル • 2006年 Van Jacobson氏がCCN(Content-Centric Networking)を発表 • 2009年 PARCがCCNxプロジェクトとしてオープンソース公開 • 2010年 NSFがFIAプログラムでNDNプロジェクトに資金提供 • 当初はCCNx 0.xをコードベースとして共有 • 2012年 PARCとNDNチームが分離 • 2013年 PARCがCCNx 1.0を設計(非後方互換)、NDNチームは 独自に発展 → 同じルーツからCCNxとNDNの2つのプロトコルが分岐 15
ICNの歴史と2つのプロトコル(標準化) • IRTF(Internet Research Task Force)にICN Research Group設置(2012年) • CCNx 1.0: IRTF RFC 8569 / RFC 8609(2019年) • NDN: NDN Packet Format Specification v0.3(独自仕様と して発展) 16
CCNxとNDNの共通点 両プロトコルはICNの基本原則を共有 • 2種類のパケット: 要求パケットと応答パケット • • CCNx: Interest / Content Object NDN: Interest / Data • 3つのデータ構造: PIT, FIB, CS • 名前ベースの転送: 階層型の名前を用いたLongest Prefix Match • ネットワーク内キャッシュ: ルータがDataをキャッシュ • データ署名: Producerがデータに署名し、通信路ではなくデータ自 体を保護 • TLVエンコーディング: パケットはType-Length-Value形式 17
CCNxとNDNの主要な違い 項目 CCNx 1.0 NDN パケット名称 Interest / Content Object 完全一致 + プレフィックス一致 ループ防止 HopLimit フィールド(最大255ホップ) Nonce フィールド(ランダム値で重 複検出) 標準化 IRTF RFC 8569, 8609 NDN Packet Format Spec v0.3(独自) 代表的実装 Cefore(NICT) NFD(UCLA, NIST, MITRE) 設計思想 ルーティングがループしない前提 ルーティングにループがありうる前提 セキュリティ 通信路の保護も考慮 データ自体の保護を重視 18
NDNのアーキテクチャ — 砂時計モデル IPもNDNも砂時計型(Hourglass)のアーキテクチャ IP: 「thin waist」= IPプロトコル(アドレスベース) NDN: 「thin waist」= 名前付きデータのチャンク(コンテンツベース) データ署名 thin waist thin waist Forwarding Strategy ref: https://named-data.net/project/archoverview/ 19
NDNがIPの課題を解決する仕組み IPの課題 NDNでの解決 アドレス枯渇 名前空間は無限。名前に長さ制限なし NAT問題 コンテンツ提供にアドレス公開不要 モビリティ 名前は変わらないので移動しても通信継続 マルチキャスト PITのInterest集約で自然に実現 DDoS Interest-Dataの1対1対応でフロー制御 セキュリティ 通信路ではなくデータ自体に署名 しかしながら、既存のIPを置き換えることは不可能に近い 20
NDNの実験で用いられる環境 シミュレータ系 • ndnSIM (ns-3:ネットワークシミュレータを基にしたもの) 実環境 • • NFD (Named Data Networking Forwarding Daemon) ndn-lite など M5Stackのような拡張が容易なデバイスで動かせるプロトコルスタック が存在しない→なら作ろう! 21
2.プロトコルスタックについて 22
プロトコルスタックについて • ESP32上にL3相当のNDNプロトコルスタックをフルスクラッチ実装 • 一部ESP-IDFのライブラリに依存しているが置き換えは可能なので ESP32以外のマイコン上でも動作させることは可能 https://github.com/sou1118/ndn-embeds • 近距離だと受信成功率は100%でRTTも2桁で収まる Application Layer NDN Protocol Layer (L3) ESP-NOW Protocol Layer (L2) Wi-Fi Physical Layer(L1) 23
NDNプロトコルスタックのアーキテクチャ Application Layer (センサーデータ取得、Interest生成など) NDN Core Protocol Layer (共通実装) Interest/Data Packet Encoding/Decoding PIT Management CS Management (Caching) FIB Management Forwarding Strategy Face API ESP-NOW Adapter ESP-NOW API ここに関しては 差し替え可能 24
いろんな通信規格のモジュールが売ってる ref: https://www.switch-science.com/products/10809 ref: https://www.switch-science.com/products/9425 25
動かすアプリケーションについて 実用例として • キャッシュを効かせられるようなアプリケーション • 移動などで頻繁に接続先が変わるようなアプリケーション がよく実験対象としてシミュレーションされている Application Layer NDN Protocol Layer (L3) ESP-NOW Protocol Layer (L2) Wi-Fi Physical Layer(L1) 26
Bitchatの登場 • Twitterの生みの親、Jack氏がBitchatを開発 • • Bluetooth Meshを使い端末同士を数珠つなぎし、ローカルネットワークを 簡単に構築し、そのネットワークでメッセージをやり取りできる Android/iOS双方ともに対応 • 学術分野で言うDTN(耐遅延性ネットワーク)とMANET(モバイルア ドホックネットワーク)の実用例 • 2025年末に始まったデモが全土で激化し、イラン政府はインターネッ トを遮断したからか、ダウンロード数が前月比15倍に急増した 今回作ったプロトコルスタックでNDNを使ったMANETを構築すると より拡張しやすいプラットフォームにできるのでは? 27
組込みRustという選択肢 Espressifは積極的にRustでの組込み開発をサポートしている 最近のESP32C, HシリーズはRISC-Vなため、難しい環境構築は不要 Zephyrもno_stdであれば結構動くらしい(未検証) Cargoが非常に便利 ref: https://github.com/esp-rs ref: https://github.com/esp-rs/esp-hal 28
まとめ やったこと • ESP32上にNDNプロトコルスタックをフルスクラッチ実装 (ndn-embeds) • MANETを構築し、メッセージングアプリのプロトタイプを動作確認 設計のポイント • Face APIによる通信規格の抽象化 → ESP-NOW以外への 差し替えが可能 • ESP-IDF依存を最小限に抑え、他のマイコンへの移植性を確保 今後の展望 • LoRa / 有線LAN など他Faceの対応 29
参考文献 L. Zhang, A. Afanasyev, J. Burke, V. Jacobson, et al., “Named data networking," ACM SIGCOMM CCR, vol. 44, no. 3, pp. 66–73, 2014. DOI: 10.1145/2656877.2656887 G. Xylomenos, C. N. Ververidis, et al., “A Survey of Information-Centric Networking Research," IEEE CSST, vol. 16, no. 2, pp. 1024–1049, 2014. DOI: 10.1109/SURV.2013.070813.00063 B. Wissingh, C. A. Wood, et al., “ICN: CCNx and NDN Terminology," IRTF RFC 8793, 2020. DOI: 10.17487/RFC8793 ICNRG, “Design Choices and Differences for NDN and CCNx 1.0," draft-icnrg-harmonization-00. URL: https://icnrg.github.io/draft-icnrg-harmonization/ named-data.net, “NDN: Motivation & Details." URL: https://named-data.net/project/archoverview/ NDN Packet Format Specification v0.3. URL: https://docs.named-data.net/NDN-packet-spec/current/ 30
参考文献 A. Afanasyev, J. Shi, B. Zhang, et al., “NFD Developer's Guide," NDN-0021, 2021. URL: https://named-data.net/wp-content/uploads/2021/07/ndn-0 021-11-nfd-guide.pdf named-data-iot/ndn-lite. URL: https://github.com/named-data-iot/ndn-lite M. Mosko, I. Solis, C. Wood, “CCNx Semantics," IRTF RFC 8569, 2019. M. Mosko, I. Solis, C. Wood, “CCNx Messages in TLV Format," IRTF RFC 8609, 2019. 朝枝 仁, 「オープンソースCeforeがもたらす新しいネットワークサービスの可能 性」, 電子情報通信学会誌, Vol.104, No.4, pp.346-353, 2021年4月. V. Jacobson, D. K. Smetters, J. D. Thornton, et al., “Networking Named Content," CoNEXT '09, 2009. 31