Zao SDK を無線 LAN 経由でマルチリンクする
設定に不十分な点がありましたので、追記・整理をしました (2025-03-12)。
はじめに
Zao SDK for Jetson で図の様に無線 LAN の先に複数の LTE ルータを接続した構成でマルチリンク動作させる方法を紹介します。
なお、この記事では Jetson に Zao SDK for Jetson がインスール・設定済であることを前提としています。 Zao SDK for Jetson のセットアップ等は、Zao SDK WEBサイトのドキュメント等を参照してください。
対象バージョン
本記事の手順は Zao SDK for Jetson 1.6.1.0 で動作確認を行いましたが、全てのバージョンの Zao SDK for Jetson に適用可能です (2025-03-12 時点)。
1: Jetson 以外の構成・設定
無線 LAN の構成・設定
無線 LAN アクセスポイント (AP) はいわゆる無線ルータとして動作させず、ブリッジ親機として動作させてください。
Jetson 側を中継器 (子機) として、AP に接続するように設定を施しておいてください。
L2 SW の構成・設定
L2 SW に特別な設定は不要です。いわゆるアンマネージドのスイッチングハブで構いません。
無線 LAN AP にスイッチ機能が内蔵されている場合はそれでも構いません。
LTE ルータの構成・設定
LTE ルータは、それぞれ異なるネットワークアドレスに属するようにアドレスを設定してください。
例えば、10.0.1.0/24 に属する 10.0.1.1 と 10.0.2.0/24 に属する 10.0.2.1 といった形です。
DHCP サーバ機能は可能ならば Off にして下さい。
2: Jetson の設定
以下の手順で Jetson の設定を行ってください。
-
Jetson にディスプレイ、USB キーボードを接続して起動
-
Alt+F2 キー押下しログイン画面に切り替え、username, password 入力しログインする
-
ROM 化状態の場合は
sudo ZaoSetting
と実行し、ROM 化解除 & 再起動の後、再度ログインする -
/etc/NetworkManager/dispatcher.d/40-zao
を以下の内容で新規作成する
(例えばsudo vim /etc/NetworkManager/dispatcher.d/40-zao
を実行し vim エディタで入力する)
#!/bin/bash
if [ "$1" = "br0" ] && [ "$2" = "up" ] ; then
ip link add name eth10 type veth peer name eth10-br
ip link set eth10-br master br0
ip link set up dev eth10-br
ip link add name eth20 type veth peer name eth20-br
ip link set eth20-br master br0
ip link set up dev eth20-br
fi
exit 0
これはブリッジが作られるのにあわせて、veth を作成するスクリプトになっています。
- 以下のコマンドを実行する
$ sudo chmod +x /etc/NetworkManager/dispatcher.d/40-zao
作成した 40-zao
に実行フラグを立てています。
- 以下のコマンドを実行する
$ sudo systemctl disable docker.service
$ sudo systemctl disable containerd.service
docker, containerd の自動起動をしないようにしています。
docker の起動にあわせて設定されるファイアウォール (iptables) の挙動が干渉するため無効化しています。
- 以下のコマンドを実行する
$ sudo nmcli con add type bridge ifname br0 con-name br0
$ sudo nmcli con mod br0 bridge.stp no
$ sudo nmcli con mod br0 ipv4.method disabled
$ sudo nmcli con mod br0 ipv6.method ignore
$ sudo nmcli con add type bridge-slave ifname eth0 master br0
ここでは、NetworkManager にブリッジの設定を追加しています。
-
/etc/zao/InfraCtrl.conf
を以下の内容にする
(例えばsudo vim /etc/zao/InfraCtrl.conf
を実行し vim エディタで入力する)
nwk_dev=1,VETH1,virtual/net/eth10
nwk_dev=2,VETH2,virtual/net/eth20
line_1_auto=0
line_1_addr=10.0.1.10
line_1_mask=255.255.255.0
line_1_gw=10.0.1.1
line_1_dns=10.0.1.1
line_2_auto=0
line_2_addr=10.0.2.10
line_2_mask=255.255.255.0
line_2_gw=10.0.2.1
line_2_dns=10.0.2.1
この設定で Zao SDK で veth を Line1, Line2 として扱うようになると共に固定アドレスが割り当てられます。
ここでは、ルータがそれぞれ 10.0.1.1/24, 10.0.2.1/24 の場合を記しています。実際のアドレスに置き換えてください。
-
元が ROM 化状態であった場合は
sudo rm -f /not_overlay
を実行する -
sudo poweroff
を実行
次回起動から、無線 LAN を通じたマルチリンク動作になります。
ディスプレイ、USB キーボードを接続せず動作可能です。
3: 3 回線以上への拡張
上記設定の形を倣って、/etc/NetworkManager/dispatcher.d/40-zao
, /etc/zao/InfraCtrl.conf
に追記してゆけば、3 回線以上の構成にすることも可能です。
補足 A: 無効化手順
上記で施した設定を無効化する手順は以下となります。
-
ログインする
-
ROM 化状態の場合は
sudo ZaoSetting
と実行し、ROM 化解除 & 再起動の後、再度ログインする -
以下のコマンドを実行する
$ sudo nmcli con del br0
$ rm -f /etc/NetworkManager/dispatcher.d/40-zao
-
/etc/zao/InfraCtrl.conf
に追記した部分を戻す -
元が ROM 化状態であった場合は
sudo rm -f /not_overlay
を実行する -
sudo poweroff
を実行
終わりに
本記事では、無線 LAN 接続を通じてマルチリンクする設定を紹介しました。
この構成では無線 LAN 接続が単一障害点となってしまいますが、機器配置の都合などに合わせて活用ください。
また、無線 LAN を用いず、直接 Jetson と L2 SW を Ethernet 接続する構成でも動作可能です。
USB ポートを消費しない、Ethernet はノイズに強く長いケーブルが使用可能、等の特性を活かす構成としても活用ください。
Discussion