Skip to content

Instantly share code, notes, and snippets.

@gucchan22
Last active November 26, 2016 08:48
Show Gist options
  • Save gucchan22/45b4cac0ad75693731422de38e009514 to your computer and use it in GitHub Desktop.
Save gucchan22/45b4cac0ad75693731422de38e009514 to your computer and use it in GitHub Desktop.

#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: ピースの転送が完了すると、配布ノードに対してファイルをダウンロードが完了したことを通知する。
くりかえし

配布ノードのデータフォーマット仕様

ダウンロードアルゴリズム

トラッカーから情報が渡されてくるのでその情報を元にどうやってピースを選択すればいいかを決める

BLEアドバタイズフォーマット


|----------|--------------|-----------------------|------|
| 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バイトを詰める)

BLEアドバタイズについてわかったこと

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

でとりあえずデータを送信してスループットを測定できる
必要な測定:
測定する授業をいくつかピックアップ (何個測定するべきか?、どのぐらいの時間間隔で測定するべきか)
混雑している時と混雑してない時の変化を調べる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment