• 2020.08.03

こんにちは!「にっしんSUN」です。
前回までのブログは読んでいただけましたか?
まだ読んでいないよーという方はこちらから読んでみてください。

第4回はWi-SUN FANでいろんなネットワークを構成してみましょう☆

にっしんSUN
にっしんSUN

鞍馬せんせい。今回は何をするのですか?

鞍馬せんせい
鞍馬せんせい

今回は、10台のWi-SUN FANを使って
いろんなネットワークを机上で作成していきましょう。

スター型ネットワーク

まずは、以下のようなネットワークを構成してみましょう。

親機から子機が1対Nで接続される"スター型ネットワーク"と呼ばれるネットワークです。
子機9台の電源を入れて親機にする端末のlogを見ていきます。
このとき、子機の端末をPCに接続する必要はありません。モバイルバッテリーなど電源供給のみでも動作します。

親機

auto start 1 (BORDER)...
init 1(BORDER)
inf 2b,62,0,5 { FMng: changed fan join state (0 -> 5) }
>inf 40,2b,7d0,12 { NBRS: added new neighbor <001d129f35c5024c>}
inf 40,2b,5ca8,12 { NBRS: added new neighbor <001d129f35c50173>}
inf 40,2b,8110,12 { NBRS: added new neighbor <001d129f35c50266>}
inf 40,2b,9f18,12 { NBRS: added new neighbor <001d129f35c501c9>}
inf 40,2b,e278,12 { NBRS: added new neighbor <001d129f35c5018b>}
inf 40,2b,caf8,12 { NBRS: added new neighbor <001d129f35c501c5>}
inf 40,2b,6aa8,12 { NBRS: added new neighbor <001d129f35c50212>}
inf 40,2b,7d80,12 { NBRS: added new neighbor <001d129f35c501bb>}
inf 40,2b,b18,12 { NBRS: added new neighbor <001d129f35c50228>}

ログの中の

>inf 40,2b,7d0,12 { NBRS: added new neighbor <001d129f35c5024c>}

は、親機が近隣の端末を発見して通信相手の候補にしたことを表しています。他の8台の端末も同じです。

親機

inf 40,2d,dc2b,5ca8 { NBRS: added address <2001:db8::47> to <001d129f35c50173>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::47> => <2001:db8::1>}
inf 40,2d,dc2b,8110 { NBRS: added address <2001:db8::3b> to <001d129f35c50266>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::3b> => <2001:db8::1>}
inf 40,2d,dc2b,caf8 { NBRS: added address <2001:db8::99> to <001d129f35c501c5>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::99> => <2001:db8::1>}
inf 40,2d,dc2b,9f18 { NBRS: added address <2001:db8::9d> to <001d129f35c501c9>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::9d> => <2001:db8::1>}
inf 40,2d,dc2b,7d0 { NBRS: added address <2001:db8::21> to <001d129f35c5024c>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::21> => <2001:db8::1>}
inf 40,2d,dc2b,7f52 { NBRS: added address <2001:db8::fd> to <001d129f35c50228>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::fd> => <2001:db8::1>}
inf 40,2d,dc2b,7f52 { NBRS: added address <2001:db8::e7> to <001d129f35c50212>}
inf 4c,39,7224,71fc { RPL: added node <2001:db8::e7> => <2001:db8::1>}
inf 40,2d,dc2b,7f52 { NBRS: added address <2001:db8::8f > to <001d129f35c501bb>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::8f> => <2001:db8::1>}
inf 40,2d,dc2b,e278 { NBRS: added address <2001:db8::5f> to <001d129f35c5018b>}
inf 4c,39,722c,7204 { RPL: added node <2001:db8::5f> => <2001:db8::1>}
>

以下の

inf 40,2d,dc2b,5ca8 { NBRS: added address <2001:db8::47> to <001d129f35c50173>}

は、通信端末候補と認証を行って正しい端末かどうかを確認し、DHCPv6サーバ機能によりIPアドレスを貸与しています。
次の行の

inf 4c,39,722c,7204 { RPL: added node <2001:db8::47> => <2001:db8::1>}

は、IETF RPLプロトコルによって親IPアドレスの配下にIPアドレスの端末をぶら下げたことを表しています。

これで、接続が完了しました。
接続状態を確認してみましょう。

親機

>nebr
nebr num:9 rank:128(1)
nebr <001d129f35c5024c>: 177/126(-41) <2001:db8::21> <::>
nebr <001d129f35c50173>: 145/132(-41) <2001:db8::47> <::>
nebr <001d129f35c50266>: 181/133(-41) <2001:db8::3b> <::>
nebr <001d129f35c501c9>: 170/128(-41) <2001:db8::9d> <::>
nebr <001d129f35c5018b>: 184/126(-41) <2001:db8::5f> <::>
nebr <001d129f35c501c5>: 134/128(-41) <2001:db8::99> <::>
nebr <001d129f35c50212>: 256/130(-41) <2001:db8::e7> <::>
nebr <001d129f35c501bb>: 256/132(-41) <2001:db8::8f> <::>
nebr <001d129f35c50228>: 256/126(-41) <2001:db8::fd> <::>
>

"nebr"コマンドは自身の電波圏内にいる端末とその端末の電波強度を表しています。
今回は、机上では全て電波圏内であり、電波強度は表示できる最高レベル(-41dbm)が表示されています。

親機

>rplsr
rplsr - Routing links (9 in total):
rplsr -- 2001:db8::47 to 2001:db8::1 (lifetime: 7170 seconds)
rplsr -- 2001:db8::3b to 2001:db8::1 (lifetime: 7173 seconds)
rplsr -- 2001:db8::99 to 2001:db8::1 (lifetime: 7190 seconds)
rplsr -- 2001:db8::9d to 2001:db8::1 (lifetime: 7148 seconds)
rplsr -- 2001:db8::21 to 2001:db8::1 (lifetime: 7150 seconds)
rplsr -- 2001:db8::fd to 2001:db8::1 (lifetime: 7164 seconds)
rplsr -- 2001:db8::e7 to 2001:db8::1 (lifetime: 7196 seconds)
rplsr -- 2001:db8::8f to 2001:db8::1 (lifetime: 7162 seconds)
rplsr -- 2001:db8::5f to 2001:db8::1 (lifetime: 7158 seconds)
>

ネットワークの状態を、前回も登場した"rplsr"コマンドで確認すると全て親機(2001:db8::1)に接続されていることがわかりますね。

にっしんSUN
にっしんSUN

接続できました☆
これだと机上でマルチホップネットワークは
作れないのではないでしょうか。

鞍馬せんせい
鞍馬せんせい

いえ、"MAC Address Filter"という機能を使用して
机上でマルチホップネットワークを作成できます。
実際に作成してみましょう。

マルチホップネットワーク

次のようなネットワークを構成します。

このようなマルチホップネットワークを机上で構成するためにはMAC Address Filterを使用します。
MAC Address Filterは、特定のMAC Address以外からのデータを受信しないように設定ができます。

MAC Address

ネットワーク機器に物理的に割り当てられた一意の識別番号。物理アドレスとも呼ばれる。

R1を例に各端末の設定をしてみましょう。

R1

>mac
mac <001d129f35c50173>,LLA<fe80::21d:129f:35c5:173>
>macf deny
>macf allow 001d129f35c50266
>macf allow 001d129f35c502ab
>macf
macf default ( deny )
macf <001d129f35c50266> ( allow )
macf <001d129f35c502ab> ( allow )
>

R1ではBRとR2とのみ通信を行います。
"macf deny"で全てのMAC Addressからのデータを拒否し、"macf allow <MAC Address>"で許可する端末を指定します。

このような設定を全ての端末に行うと・・・

親機

>rplsr
rplsr - Routing links (9 in total):
rplsr -- 2001:db8::47 to 2001:db8::1 (lifetime: 7159 seconds)
rplsr -- 2001:db8::3b to 2001:db8::47 (lifetime: 7148 seconds)
rplsr -- 2001:db8::9d to 2001:db8::3b (lifetime: 7199 seconds)
rplsr -- 2001:db8::5f to 2001:db8::9d (lifetime: 7190 seconds)
rplsr -- 2001:db8::99 to 2001:db8::5f (lifetime: 7179 seconds)
rplsr -- 2001:db8::e7 to 2001:db8::99 (lifetime: 7173 seconds)
rplsr -- 2001:db8::8f to 2001:db8::e7 (lifetime: 7168 seconds)
rplsr -- 2001:db8::21 to 2001:db8::8f (lifetime: 7196 seconds)
rplsr -- 2001:db8::fd to 2001:db8::21 (lifetime: 7149 seconds)
>

このように一直線に接続をすることができました。

にっしんSUN
にっしんSUN

机上でマルチホップネットワークができましたね☆

鞍馬せんせい
鞍馬せんせい

このように、実際に設置する前にネットワークの確認ができます。
では、最後に通信の確認をしてみましょう。

マルチホップネットワークの通信確認

通信確認をしてみましょう。
今回はPingで512byteのデータを10回送信してみます。
R1へのPingの実行・・

BR

>rplsr
rplsr - Routing links (9 in total):
rplsr -- 2001:db8::47 to 2001:db8::1 (lifetime: 7159 seconds)
(省略)
>ping start 2001:db8::47 512 0 5 10
ping <2001:db8::47> (seq=1 sz=512bytes time=0.140sec) 1/10
ping <2001:db8::47> (seq=2 sz=512bytes time=0.140sec) 2/10
ping <2001:db8::47> (seq=3 sz=512bytes time=0.160sec) 3/10
ping <2001:db8::47> (seq=4 sz=512bytes time=0.220sec) 4/10
ping <2001:db8::47> (seq=5 sz=512bytes time=0.110sec) 5/10
ping <2001:db8::47> (seq=6 sz=512bytes time=0.130sec) 6/10
ping <2001:db8::47> (seq=7 sz=512bytes time=0.150sec) 7/10
ping <2001:db8::47> (seq=8 sz=512bytes time=0.100sec) 8/10
ping <2001:db8::47> (seq=9 sz=512bytes time=0.160sec) 9/10
ping <2001:db8::47> (seq=10 sz=512bytes time=0.180sec) 10/10
10 transmitted, 10 received, 0.0% loss (min=0.100/max=0.220/avr=0.149 sec)
>

R9へのPingの実行・・

BR

>rplsr
rplsr - Routing links (9 in total):
(省略)
rplsr -- 2001:db8::fd to 2001:db8::21 (lifetime: 7149 seconds)
>ping start 2001:db8::fd 512 0 5 10
ping <2001:db8::fd> (seq=1 sz=512bytes time=1.470sec) 1/10
ping <2001:db8::fd> (seq=2 sz=512bytes time=1.860sec) 2/10
ping <2001:db8::fd> (seq=3 sz=512bytes time=1.750sec) 3/10
ping <2001:db8::fd> (seq=4 sz=512bytes time=1.620sec) 4/10
ping <2001:db8::fd> (seq=5 sz=512bytes time=1.630sec) 5/10
ping <2001:db8::fd> (seq=6 sz=512bytes time=1.780sec) 6/10
ping <2001:db8::fd> (seq=7 sz=512bytes time=1.670sec) 7/10
ping <2001:db8::fd> (seq=8 sz=512bytes time=1.600sec) 8/10
ping <2001:db8::fd> (seq=9 sz=512bytes time=1.660sec) 9/10
ping <2001:db8::fd> (seq=10 sz=512bytes time=1.810sec) 10/10
10 transmitted, 10 received, 0.0% loss (min=1.470/max=1.860/avr=1.685 sec)
>

どちらもloss 0%で通信ができていることが確認できました。

にっしんSUN
にっしんSUN

鞍馬せんせい、R9へのPingの時間がR1より1秒以上遅いですね?

鞍馬せんせい
鞍馬せんせい

はい、端末間をホップしてデータが届きますのでこのような結果になります。
ホップ数が増えると、時間もかかりますよ。
順番に実行した結果を見せますね。

BR

>rplsr
rplsr - Routing links (9 in total):
rplsr -- 2001:db8::47 to 2001:db8::1 (lifetime: 7159 seconds)
rplsr -- 2001:db8::3b to 2001:db8::47 (lifetime: 7148 seconds)
rplsr -- 2001:db8::9d to 2001:db8::3b (lifetime: 7199 seconds)
rplsr -- 2001:db8::5f to 2001:db8::9d (lifetime: 7190 seconds)
rplsr -- 2001:db8::99 to 2001:db8::5f (lifetime: 7179 seconds)
rplsr -- 2001:db8::e7 to 2001:db8::99 (lifetime: 7174 seconds)
rplsr -- 2001:db8::8f to 2001:db8::e7 (lifetime: 7168 seconds)
rplsr -- 2001:db8::21 to 2001:db8::8f (lifetime: 7196 seconds)
rplsr -- 2001:db8::fd to 2001:db8::21 (lifetime: 7149 seconds)
>ping start 2001:db8::47 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=0.120/max=0.380/avr=0.176 sec)
>ping start 2001:db8::3b 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=0.230/max=0.540/avr=0.384 sec)
>ping start 2001:db8::9d 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=0.340/max=0.810/avr=0.499 sec)
>ping start 2001:db8::5f 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=0.610/max=1.230/avr=0.788 sec)
>ping start 2001:db8::99 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=0.730/max=1.300/avr=1.003 sec)
>ping start 2001:db8::e7 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=1.030/max=1.310/avr=1.128 sec)
>ping start 2001:db8::8f 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=1.090/max=1.840/avr=1.367 sec)
>ping start 2001:db8::21 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=1.240/max=1.810/avr=1.472 sec)
>ping start 2001:db8::fd 512 0 3 10 1
10 transmitted, 10 received, 0.0% loss (min=1.460/max=1.960/avr=1.623 sec)
>

送信先 R1 R2 R3 R4 R5 R6 R7 R8 R9
平均応答時間(sec) 0.176 0.384 0.499 0.788 1.003 1.128 1.367 1.472 1.623
鞍馬せんせい
鞍馬せんせい

ホップ数が増えるごとにかかる時間が増えていっていることがわかりますね。
ホップ数は少ないほうがよいということです。

にっしんSUN
にっしんSUN

なるほどー、マルチホップは距離がのびる反面、
到達に少し時間がかかってしまうのですね。

鞍馬せんせい
鞍馬せんせい

Wi-SUN FANは自動的に最適なネットワークを構成しますので、
最小のホップ数で通信します。
次回は、簡単なサンプルプログラムで動かしていきましょう。

にっしんSUN
にっしんSUN

鞍馬せんせい、ありがとうございました☆

今回のまとめ

☆ 実際の設置前に机上でネットワークの想定ができるため評価が簡単

Wi-SUNおよびWi-SUN AllianceロゴはWi-SUNアライアンスの登録商標です。