MQTTの通信を見てみよう
2016.8.25 コワーキングスペースWakU2
自己紹介
 名前:末増 孝志(スエマス タカシ)
 GLEAN 株式会社所属?
 カメハメハ会社員(雨が降ったら出社しません)
 コワーキングスペースWakU2のお手伝い
 通信(テレコム)業界にどっぷり
 どちらかというとケーブルさばく人
(オンプレな人)です
好きな落語家は柳家京太郎
Facebook:Takashi Suemasu
本日のお題目
 突然ですが、Wireshark/tcpdump使って
ます?
• 今日はMQTTの中身を見てみましょう。
• 「そんなのはサービス側に任せときゃ
いいんだよ」
• まぁ、そう言わずにお付き合いください。
こんな構成にしてみました。
 とりあえずテスト環境
VM/phy Server
vmnic/nic
VM
publisher
paho
vmnic
MQ Broker
mosquitto
tcpdump
VM
subscriber
paho
vmnic
paho mosquitto paho
QoSにより変わる信号数。
MQTT Duration QoS2 QoS1 QoS0
Ping Request Broker ← Sub 0 0
Ping Responce Broker → Sub 0 0
Conect Command Pub → Broker 1 1 1
Connect ACK Pub ← Broker 2 2 3
Publish Message Pub → Broker 3 3 2
Publish Received Pub ← Broker 4
Publish Release Pub → Broker 5
PublishComplete Pub ← Broker 6
Publish Message Broker → Sub 7 4 4
Publish Ack Pub ← Broker 5
Disconnect Req Pub → Broker 8 6 2
ICMPではない
TCPセッションでも違いが…
 どのQoSでも3ウェイハンドシェイクは行
う(当然)
 Pub/Sub<->Brokerあたり、4pkt必要
 QoS2/QoS1では4ウェイクローズでお行儀
よくセッション切断。
 Pub/Sub<->Brokerあたり、4pkt必要
 QoS0ではRESETによるブチ切り。
 Pub/Sub<->Brokerあたり、2pkt必要
Why need Capture?
 今はまだホビーっぽいところから抜け出
せてない。
 いずれ、大量のセンサーが襲い掛かって
くる。
運用設計やトラシューのためにもフィールドでの
キャプチャツールは必要になってくる。
Broker(サーバ)側でキャプチャでき
る?
 ゴメンナサイm(_ _)m
クラウド側での検証できてません。
 いずれはAWS/GCPでの検証予定。
センサー(端末)側でキャプチャすると
きは?
 センサーの処理もしてるのにキャプチャまで
させるの?
• あとこんなのもあると便利
 そこでおなじみこれ!
Raspi Cap
phy Server
nic
VM
こんな構成にしてみました。②
 RasPi Capの検証環境
publisher
paho
vmnic
MQ Broker
mosquitto
tcpdump
VM
subscriber
paho
vmnic
ホントはこちら側を物理
にしないとならない
ホントはこちら側を物理
にしないとならない
Raspberry Pi PacketCapture
 Raspbian + tcpdump(wireshark)
パフォーマンス的にはちとツライです。
• Arch Linux + pf_ring
パフォーマンスに余裕があります。
キャプチャしたなら、
再利用もしないと
 同じメッセージをたくさん投げつける
センサー→OSの限界ではなく、
回線→サービスの限界まで投げつけてやる
•センサー側を増殖させる
Raspiたくさんほしいけど、
お小遣いがががががが、
PCAPファイルをゴニョゴニョ
増殖!
センサー側IPアドレスを
インクリメントして、
Connect Comandを大量に
投げつけ
今後の方向性
 Raspi Cap
 1Gbps対応
 これはUSB LANアダプタでできそう
 トリガ対応
 必要な時だけキャプチャ
 ばらまき対応
 Wi-Fi使わないデータ吸い上げ方法
 PCAPファイルの再利用
 TCPセッションの再現
 送信側システムの構築
ご清聴ありがとうございます。

Mqttの通信を見てみよう