TL;DR
Zetta platformを使ってNat越え通信をお試ししてみた記録です。
Zenoh とは
とにかく軽くて、かなり何でもつながる凄いプロトコルです。
詳しい説明は@Shintaro_Hosoaiさんのこちらの記事や@takasehidekiさんのこのプレゼン等を参照ください。
Zenoh Routerと呼ばれるサーバを用いることで、遠隔地の別ネットワークのPC同士でもpub/sub通信させることができます。また、MQTTやOPC-UAの様なPLCで使う通信規格や各種DBとも通信が可能です。
Zetta platformとは
Zenohの開発を行っているZetta Scaleが運営しているZenoh用のPaaSです。ZenohのRouterメッシュの管理をしたり、クライアントに渡す認証情報の発行をWebで完結させることができます。
AWSやAzureで自前のZenoh Routerを建てれば通信はできるのですが、Zetta Platformを使えば、ネットワークの設定等の手間を少しだけ省くことができます。参考
やること
Zetta Platformを使って、ネットワーク越しに pub / subを行う。
環境
Ubuntu 24.04
Zenoh 1.1.0 1.0.4 ※1.1.0にて動作確認済
(可能であれば、別々のルータ配下のPCを1台ずつ)
1. ユーザー登録
以下のURLに開いてユーザー登録をいます。
Get Startedを押して登録を開始してください。基本的にNEXTを押していくだけで、登録できました。
支払い方法の追加などが必要なので、適当なクレジットカードを登録してください。
2. Projectを作成する
ログイン後のホーム画面で、[Create Project]を押してプロジェクトを作成します。
プロジェクトの名前とZenohのバージョンは1.0.4を選択し、NEXTを押します。
Zenoh Routerを追加する画面に遷移します。Zenoh Routerの名前と設置するリージョン選択し、NEXTを押します。
ストレージの追加画面に遷移します。使わなければNEXTを押します。
MQTTとのコネクタ作成画面です。使わなければNEXTを押します。
(MQTTと通信させる場合はなぜかここで追加が必須)
確認画面に遷移します。最後にcreate projectを押すとプロジェクト作成されます。
クライアントを作成して認証情報を発行する
作成したプロジェクトを開いて[Use my Project]を押下します。
以下の画面に遷移するので右上の[USE MY PROJECT]->[Connect a client app]を押下
以下の画面に遷移します。Clientの名前を入力して[NEXT]をクリックしてください。
画面が遷移して、pythonのサンプルプログラムをダウロードする方法と実行方法が表示されます。
画面の指示に従って、curlを使ってサンプルプログラムをダウロードして、unzipなどで適当なディレクトリに回答します。
同様の手順でもう一つclient作成してダウンロードすれば準備は完了です。
通信テスト
クライアントの作成と各PCへのサンプルプログラムのダウンロードが完了したら、
以下のコマンドで対応するZenohのライブラリをインストールしてください。
(Ubuntu 24.04からaptでインストールできないライブラリは、venv等の仮想環境でインストールするよう警告が出ます。適当な仮想環境を準備してください。)
pip3 install eclipse-zenoh==1.1.0
追記 2025/1/11現在、Zenoh 1.1.0に対応した模様です。
PC1
python3 z_sub.py -c config.json
PC2
python3 z_pub.py -c config.json
通信が成功すれば、ブラウザのprojectのHomeで下記のようにRouterとClientが接続されて表示されます。
停止する
プロジェクト使わない場合には、ホームの下記の画面からインスタンスの停止ができます。
停止しておかないと稼働してる時間分ずっと料金が発生します。ご注意ください。
お値段
有料のSaaSサービスなのでお金かかります。 0.3ユーロ/時間とのこと
実際に、一番ボーレートの小さいSmallを設定し、2日間ちょっと動かしっぱなしで合計54時間 17.01 ドル 2400円ちょっとでした。
30日動かすとして 35,000円/月くらいになるので、ちょっとお高い印象です。
稼働・停止ができるので、使わないときに止めておけば料金は安く抑えられるので、ちょっとした実験用にはよいのではないでしょうか。
データ量でも料金が変わってくるみたいなので、運用次第かもですが。
感想とか
- セキュリティ関係の設定なんかも使いやすくまとまっているので、ちょっとした実験に使うの良さそう
- 今回はROS 2でrmw_zenohを試していないので、後々試す
- 長期で使うなら自前サーバ建てた方が良いかも
参考資料