乾貨|BAT物聯雲IoT協議例析
點選上方“中興開發者社群”,關注我們
每天讀一篇一線開發者原創好文
近年來,物聯網(IoT,Internet of Things)已經從概念階段走向大規模應用。據Gartner統計,全球物聯裝置總數量從2016年的60+億增加到2017年的80+億,預計2020年全球將達到至少300+億物聯裝置。超大規模的裝置聯網必定離不開專業雲端計算服務的支援,諸多網際網路及高科技公司都已推出自己的物聯雲平臺,供終端裝置廠商方便快捷地令其裝置支援聯網功能。我前段時間寫過兩篇文章(《MQTT協議例析》、《CoAP協議例析》)介紹了物聯網主要的兩個應用協議(MQTT、CoAP),自己搭建開發環境測試並基於Wireshark抓包,分析了該兩協議的主要流程與功能要點。在本文中,我將介紹百度雲IoT、阿里雲IoT、騰訊雲IoT三個物聯雲服務對IoT協議的支援情況,並分析抓包流量,對比差異,給出可能的DPI(Deep Packet Inspection)特徵,以助讀者更好了解。
百度雲IoT
百度雲IoT服務支援 MQTT、MQTT over TLS、MQTT over WSS (WSS即WebSocket Secure)三種物聯網協議。百度雲允許使用者自定義例項名,並以該例項名作為使用者獨立DNS子域名,且形成三種協議的服務端URL。當裝置端整合百度雲IoT SDK時,需根據所選用的協議來填寫對應的URL。對於DPI流量識別來說,百度雲IoT的流量特徵較為明顯,可將 *.mqtt.iot.gz.baidubce.com 或其它同類域名用於識別百度雲IoT流量。
阿里雲IoT
阿里雲IoT支援 MQTT over TLS、CoAP over DTLS、HTTPS 三種物聯網協議。阿里雲在使用者自定義產品名時,會自動生成一個 ProductKey,並以該ProductKey作為使用者獨立DNS子域名。對於DPI流量識別來說,阿里雲IoT的流量特徵也較為明顯,可將*.iot-as-mqtt.cn-shanghai.aliyuncs.com、*.iot-as-coap.cn-shanghai.aliyuncs.com 或其它同類域名用於識別阿里雲IoT流量。
騰訊雲IoT
騰訊雲IoT支援 MQTT over TLS、CoAP over DTLS 兩種物聯網協議。與百度雲IoT、阿里雲IoT不同的是,騰訊雲IoT的DNS域名並不是使用者的獨立子域名。騰訊雲在使用者自定義產品名/裝置名時,會自動生成一個 productID,並將“productID+裝置名稱”在TLS的 ClientKeyExchange 訊息、DTLS的 Client Certificate 訊息中提供給雲端。對於DPI流量識別來說,騰訊雲IoT的流量特徵也較為明顯,可將 iotcloud-mqtt.gz.tencentdevices.com、iotcloud-coap.gz.tencentdevices.com 或其它同類域名用於識別騰訊雲IoT流量。
物聯雲協議特徵對比分析
每種物聯雲服務都可能提供給多個不同終端裝置廠商使用,對於DPI流量識別來說,既應該支援識別不同物聯雲服務的流量,也應該支援某一種物聯雲服務內不同廠商終端裝置的應用流量。
首先,按雲服務識別:各物聯雲IoT服務,通常可根據DNS特徵識別伺服器IP地址,再根據IP地址識別相應流量。如因終端裝置本地快取DNS等情況而無法獲取DNS的話,則可將SNI(Servcie Name Indication)或伺服器證書CN(Common Name)作為補充特徵。
其次,按終端應用業務細化識別:各物聯雲IoT服務,要麼可通過DNS細化識別終端應用流量,要麼可通過 Client Key Exchange 或 Client Certificate 訊息細化識別終端應用流量。值得注意的是,百度雲IoT較為特殊,支援明文方式MQTT協議,這時可通過 MQTT CONNECT 中 username 或 PUBLISH/SUBSCRIBE 訊息中 Topic 作DPI特徵,識別更加精細化的終端應用行為資訊。
本文介紹了百度雲IoT、阿里雲IoT、騰訊雲IoT三款國內主流物聯網雲服務的協議支援情況,通過流量對比分析,給出有效的DPI特徵用於流量識別。希望可以幫助讀者瞭解物聯網雲服務之概貌,以進一步學習瞭解IoT,瞭解萬物互聯。
參考資料:
1. 百度雲 IoT https://cloud.baidu.com/solution/iot/index.html
2. 阿里雲 IoT https://iot.aliyun.com/
3. 騰訊雲 IoT https://cloud.tencent.com/product/iotsuite