#Kuroko ##Kuroko プロトコル仕様
ファイルのダウンロード (ノードA,B,C,D) Aを配布ノードとする
A: Bluetoothアドバタイズで自分のIPとポート番号をアドバタイズする
B,C,D: アドバタイズを受信したノードはAに対して提供するファイルのリスト要求を送る
A: ノードAは現在自分の持っているファイルの情報をまとめてB,C,Dに送信する
B,C,D: Download Availableとして選択できるようにする
B,C,D: Download Availableからファイルを選択するとファイルのダウンロード要求が配布ノードに送られる
A: ダウンロード要求を受け取ったノードは自分の中に持っているノードのトラッキング情報から自分と同じようにダウンロードしようとしているノードの情報を教える
(B,C,D (h(file)) -> A, A (H=tracker[h(file)] -> B,C,D)
くりかえし
B,C,D: ダウンロードアルゴリズムをにダウンロードするべきピースを決めて、ノードへピースのダウンロード要求を送る。この場合まだファイルを持っているノードが一台もいないので配布ノードであるAにピースのダウンロード要求を送る
A : ピースダウンロード要求を受け取ったノードは、ファイルを転送する
B,C,D: ピースの転送が完了すると、配布ノードに対してファイルをダウンロードが完了したことを通知する。
くりかえし
トラッカーから情報が渡されてくるのでその情報を元にどうやってピースを選択すればいいかを決める
|----------|--------------|-----------------------|------|
| preamble | Access addr | PDU | CRC |
| 1byte | 4byte | 2-39bytes | 3byte|
----------------------------------------------------------
|
|--------------|-----------------|----------------------------------|
| Header | MAC Address | Payload |
| 2byte | 6byte | 0~31byte |
---------------------------------------------------------------------
|
|-------------|-----------------|------------------|-----------------|------------|
| prefix | UUID | Major | Minor | TX power |
| 9byte | 16byte | 2byte | 2byte | 2byte |
-----------------------------------------------------------------------------------
Prefix(4byte): 4c00 02 16 (little-endian)
4c00はiBeaconを示す (ID Typ Len)
UUID: 上位8バイトがKurokoを示す00 ff 00 ff 00 ff 00 ff
の順番になっている事。この下の下位8bitにIDが続く(ノードIDの下位8byte)
Major(2byte)+Minor(2byte)+TX Power: IPv4 + ポート番号 (6バイトを詰める)
http://info.tek.com/rs/584-WPH-840/images/A-5_TIF2015_BluetoothLE.pdf
WiFiと同じ2.4GHz帯を利用いているが、Wi-Fiで使われていないチャンネルを利用して干渉対策をしている。
(電力消費の問題でBluetooth:32ch(Data Channel:32ch), Bluetooth LE:3ch(Data Channel:37ch)しかない)
BLEアドバタイズをホップさせた場合何か引き起こされる問題はあるのかどうか?
dtstat (ネットワークの送受信 + vmstat)
dstatグラフ化ツール https://github.com/sh2/dstat2graphs
グラフ化ができるが4MBまでの制限がるのでオープンソースで利用する
欠点はdstat -tvfn --output ~/Desktop/out.csv 1しか受け付けないこと
iperf (スループット計測)
どういう時にスループットを計測するか?を考えておく
iperfの結果をグラフにするにはどうしたらいいかを考える
iperf -s
iperf -c
でとりあえずデータを送信してスループットを測定できる
必要な測定:
測定する授業をいくつかピックアップ (何個測定するべきか?、どのぐらいの時間間隔で測定するべきか)
混雑している時と混雑してない時の変化を調べる