>100 Views
August 07, 25
スライド概要
# この資料の目的
Zenohという通信基盤を、ただ“動かす”のではなく、
「なぜそれが存在するのか」「何を再定義しようとしているのか」まで踏み込んで
ぼくが語れるように(独断と偏見で)なるために作成した資料(間違っていても良い、まずはその入り口に入り、改善していくことが重要)
※ただし、まだ作成中です。気長に作っていきます。
# 対象読者
- C言語をマスターしている人
- ソケット通信とかROS通信とかわかっている人
- OSI参照モデルを知っている人
- 通信ミドルウェアの枠を超えて、構成・思想・自由を感じ取りたい人
# チュートリアルの出口:
- Zenoh の思想とアーキテクチャを理解できるようになる
- Zenoh プログラムをC言語で実装できるようになる
- Zenoh の応用例として、どんなのあるか理解できる
# 読者にとっての価値:
- Zenohの解釈を違った視点でわかる
- Zenohの通信プログラムを組める
TOPPERS/箱庭WG活動でUnityやらAthrillやらmROSやら触ってます。 最近は仕事の関係でWeb系の技術に注力しつつ、箱庭への転用を模索しています。 2023年8月1日:合同会社箱庭ラボに移動しました
Zenoh Tutorial 合同会社箱庭ラボ CTO 森崇
はじめに • この資料の目的 • Zenohという通信基盤を、ただ“動かす”のではなく、 • 「なぜそれが存在するのか」「何を再定義しようとしているのか」まで踏み込んで • ぼくが語れるように(独断と偏見で) なるために作成した資料(間違っていても良い、まずはその入り口に入り、改善していくことが重要) • 対象読者 • C言語をマスターしている人 • ソケット通信とかROS通信とかわかっている人 • OSI参照モデルを知っている人 • 通信ミドルウェアの枠を超えて、構成・思想・自由を感じ取りたい人 • チュートリアルの出口: • Zenoh の思想とアーキテクチャを理解できるようになる • Zenoh プログラムをC言語で実装できるようになる 読者にとっての価値: - Zenohの解釈を違った視点でわかる - Zenohの通信プログラムを組める • Zenoh の応用例として、どんなのあるか理解できる 2
アジェンダ • Zenohとは? • Zenohの全体像 • Zenohの概念モデル • 環境構築 • チュートリアル 3
Zenohとは? • ZettaScale Technology社が開発 • オープンソース(Eclipse Project)の通信プロトコルおよびミドルウェア • 特徴 • 低遅延・高スループット • 様々な通信機能 • 出版購読型、Key-Value Store に基づくデータ管理や計算処理の機能 • 柔軟なネットワーク構成 • Peer-to-Peer通信やNAT越えが可能 • 多種のプログラミング言語の対応 • Python や C/C++等 • Zenoh のコア機能は Rust によって実装されている 4
Zenohの全体像(ぼくの解釈) Zenohは、データ操作・通信手段・ネットワーク構成の すべてを民主化する次世代ミドルウェア データ操作の標準化 通信方式の選択性 通信構成の柔軟な対応 データ転送 トランスポート Entity pub /sub /get/reply QUIC, TLS, TCP, UDP(Unicast/Multicast) Client/Peer/Router データ検索 Network Topology query IPv4, IPv6, 6LoWPAN Mesh/Star/Tree データ永続化 Data Link Scouting put/store/get Wi-Fi, Ethernet, Bluetooth, Serial Multicasting/Gossip 5
Zenohの概念モデル Communication Method Transfer Store Routing Entity Client Search [凡例] 僕が勝手に 概念化したもの Zenoh 用語 Communication Protocol Entity Peer Router Autonomous Relay Centralized Relay Data Link Transport Network Mesh Star Tree Topology Network Config Multicasting Scouting Gossip 6
環境構築 • 環境構成 • ホスト:Ubuntu 24.04 / Windows WSL2 • Docker Compose ここ繋げると、Client Bもメッ シュに参加できる(はず) Mesh Client B Peer B Client A Peer A Router Client C 172.20.0.10 172.20.0.11 172.10.0.10 Docker Compose ホストPC ここ繋げるだけだと、 Client B と Client C としかつながらない(はず) 7
インストール手順 • TODO 8
インストールした環境の動作確認 • TODO 9
チュートリアル • 公式ドキュメント • GitHubリポジトリ • zenoh/zenoh-c • サンプルコード解説 • pub/sub • 動作確認 • peer構成での pub/sub通信 • mesh構成での pub/sub通信 • NAT超えでの pub/sub通信 • 通信方式の変更 UDP/TCP 10
公式ドキュメント • TODO 11
GitHubリポジトリ • TODO 12
サンプルコード解説 • TODO 13
動作確認(peer構成での pub/sub通信) • TODO 14
動作確認(mesh構成での pub/sub通信) • TODO 15
動作確認(NAT超えでの pub/sub通信) • TODO 16
動作確認(通信方式の変更 UDP/TCP) • TODO 17