欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網運營的一線實戰(zhàn)洞察。

嵌入式視角下的MQTT協(xié)議實戰(zhàn):機制、落地與避坑指南

嵌入式視角下的MQTT協(xié)議實戰(zhàn):機制、落地與避坑指南 做了這么多年嵌入式我越來越覺得物聯(lián)網項目里真正決定體驗的往往不是傳感器精度多高、MCU主頻多快而是設備跟云端之間那根“看不見的線”夠不夠穩(wěn)。而MQTT就是這根線上最常見的載體。今天想跟你好好聊聊這個協(xié)議——不是泛泛地講概念而是從嵌入式工程師的實際視角把它拆開揉碎看看里面的機制到底怎么工作、在真實項目里怎么落地、又有哪些坑是文檔里不會寫但現(xiàn)場一定會踩的。這篇文章適合正在做或準備做物聯(lián)網設備端開發(fā)的朋友無論是用ESP32快速原型驗證還是在STM32、RTOS環(huán)境下做產品級固件甚至是在Linux板卡上做網關都應該能從中找到可以直接參考的東西。我會盡量把協(xié)議機制、代碼實現(xiàn)和排障經驗串在一起講力求讓你讀完能對MQTT有一個立體、可落地的認識。1. 為什么物聯(lián)網設備端幾乎繞不開MQTT先說一個我從多個項目里總結出來的判斷物聯(lián)網通信方案選型本質上是帶寬、功耗、實時性、可靠性、實現(xiàn)復雜度這五個維度的平衡而MQTT在絕大多數(shù)場景下都能站在一個非常舒服的位置。1.1 從一份需求說起假設你現(xiàn)在接手一個環(huán)境監(jiān)測項目十幾個節(jié)點分布在廠區(qū)不同角落每個節(jié)點用STM32采集溫濕度、PM2.5和噪聲數(shù)據(jù)通過4G模塊上云云端要能實時展示曲線也要能遠程下發(fā)控制指令比如打開排風扇。最初你可能會想用HTTP——每個節(jié)點定時POST JSON數(shù)據(jù)到服務器簡單直接。但用一段時間就會發(fā)現(xiàn)幾個問題節(jié)點多了以后服務器要維護大量短連接壓力很大設備端的網絡狀態(tài)不穩(wěn)定HTTP請求經常超時數(shù)據(jù)就丟了而且服務器想主動給設備下發(fā)指令特別別扭要么設備輪詢要么就得搞長連接或WebSocket工程復雜度一下子就上去了。換用MQTT之后這些問題會變得順滑很多。設備只需要和服務器維持一個TCP長連接數(shù)據(jù)通過發(fā)布消息上報指令通過訂閱主題下發(fā)服務器不需要知道設備IP、不需要維護復雜路由設備也不需要公網地址純粹通過主題來解耦。1.2 MQTT的核心設計哲學MQTT全稱是MQ Telemetry Transport最早是1999年由IBM的Andy Stanford-Clark和Arcom的Arlen Nipper為石油管道衛(wèi)星通信場景設計的。這個背景很重要因為石油管道那種環(huán)境帶寬極其有限、鏈路極不可靠、設備節(jié)點又多所以協(xié)議從誕生那天起就帶著三個基因極簡報文、容忍斷線、發(fā)布訂閱。所謂發(fā)布訂閱簡單說就是把消息的發(fā)送方和接收方徹底解耦。設備A往主題factory/zone1/sensor發(fā)布消息任何訂閱了這個主題的客戶端不管是云端服務、手機App還是另一臺設備都能收到這條消息。發(fā)布者不需要知道誰在收訂閱者不需要知道誰在發(fā)Broker代理服務器在中間做轉發(fā)。這種模式對設備端極其友好因為設備端只關心兩件事連上Broker把消息丟給Broker。剩下的分發(fā)、路由、權限控制全是Broker的事。1.3 和常見協(xié)議的對比對比維度MQTTHTTP/HTTPSCoAPTCP私有協(xié)議傳輸層TCPTCPUDPTCP/UDP報文開銷最小可到2字節(jié)頭請求頭往往幾百字節(jié)4字節(jié)頭由開發(fā)者定義實時下發(fā)支持服務端可推送不友好需輪詢支持觀察模式支持消息可靠性支持QoS分級依賴HTTP狀態(tài)碼確認報文需自己設計實現(xiàn)復雜度低低中高典型場景物聯(lián)網設備上報/下發(fā)接口調用、網頁資源受限的傳感網定制化強但開發(fā)量大拿HTTP做類比你會更容易理解MQTT的輕量一個HTTP GET請求光是頭部就可能有幾百字節(jié)而MQTT一個完整的PUBLISH報文固定頭加主題加負載幾十個字節(jié)就能搞定而且QoS 0場景下連應答都不需要。對于NB-IoT、2G這種按流量計費、帶寬極窄的無線網絡這個差距是真實可見的成本差異。1.4 MQTT在嵌入式學習路線中的位置如果你是剛入門嵌入式、正糾結先學什么我的建議是MCU外設和RTOS是基本功但通信協(xié)議一定要盡早涉及而MQTT是一個特別好的切入點。原因很實在它不需要你懂太多底層網絡知識只要有TCP/IP協(xié)議棧比如lwIP、Wiznet硬協(xié)議棧就能在上面跑起來它也不挑硬件一個ESP8266、一塊STM32加個串口WiFi模塊幾十行代碼就能把數(shù)據(jù)送到云端更關鍵的是它的調試工具鏈非常成熟你可以用MQTTX、mosquitto_sub這種現(xiàn)成工具在PC上模擬全部行為這對理解“設備-服務器-客戶端”三方交互非常有幫助。2. MQTT協(xié)議核心機制逐層拆解很多初學者看MQTT覺得頭大是因為一上來就扎進報文格式和回調函數(shù)里缺少一個整體框架。我建議你按“連接生命周期”這個思路去理解怎么建立連接、怎么保證連接活著、怎么傳輸數(shù)據(jù)、怎么保證數(shù)據(jù)不丟、怎么優(yōu)雅地告知別人自己掛了。把這個鏈條走通協(xié)議就算吃透了一半。2.1 連接建立CONNECT與CONNACK的細節(jié)客戶端和Broker建立MQTT會話第一步是發(fā)送CONNECT報文。這個報文里包含幾個關鍵字段ClientID、Clean Session標志、Keep Alive心跳周期、Username/Password以及可選的Will遺囑信息。其中ClientID特別值得注意。Broker要求同一時刻同一ClientID只能有一個連接存在如果兩個客戶端用了相同ClientID后連接的會把先連接的踢掉這在很多項目里是“設備頻繁掉線”的隱形元兇。設備重啟后如果固件里生成ClientID的邏輯不穩(wěn)定比如用了隨機數(shù)每次重連ClientID都變那么Broker上舊的會話就永遠得不到清理長期運行會堆積大量殘留會話消耗服務器內存。建議產品化設備固件里用芯片唯一ID或MAC地址作為ClientID的一部分比如esp32_a1b2c3d4e5f6。Clean Session標志決定了連接是持久會話還是臨時會話。置1表示連接斷開后Broker立即清除該客戶端的會話狀態(tài)置0表示Broker會保存客戶端的訂閱關系和離線期間QoS 1/2的消息等下次同ClientID上線時再補推。這個機制用好了能極大提升設備斷線重連后的數(shù)據(jù)連續(xù)性但代價是Broker內存消耗增加所以要在產品設計階段就決定好會話策略。2.2 Topic的結構設計與通配符規(guī)則Topic是MQTT消息路由的路徑結構上用斜杠分層比如devices/device01/telemetry/temperature。設計Topic時最忌諱的是把設備唯一標識放在層級深處這會讓權限配置和通配符訂閱變得非常痛苦。MQTT提供了兩種通配符單層和多層#。比如訂閱devices//telemetry/temperature就能收到所有設備上報的溫度消息不管中間的設備ID是什么訂閱devices/#則能收到devices下面所有層級的消息。上一級$SYS開頭的是Broker的系統(tǒng)主題用于發(fā)布Broker自身的運行狀態(tài)比如客戶端連接數(shù)、消息吞吐量這在運維監(jiān)控時很有用。關于Topic命名和規(guī)劃幾個實操經驗分享給你層級不要超過五層否則主題長度會白白消耗帶寬而且管理起來容易亂把設備類型放前面devices/{device_id}/telemetry/xxx把具體數(shù)據(jù)類型放后面方便用通配符做批量訂閱發(fā)布權限和訂閱權限要分開規(guī)劃設備端只允許往自己的Topic發(fā)布不允許訂閱別的設備消息這個在Broker的ACL里一定要限制住不然后果不堪設想云端可以訂閱通配符設備端不要用#去訂閱一堆和自己無關的消息白白耗流量燒電。2.3 QoS語義及其實現(xiàn)原理QoSQuality of Service是MQTT里最容易被誤解的部分。它分三個等級QoS 0最多一次。消息發(fā)出去了就不管了不管Broker有沒有收到不管接收方有沒有處理。適合傳感器周期上報這類允許丟數(shù)據(jù)的場景在嵌入式設備上也是最常用的等級。QoS 1至少一次。發(fā)送方發(fā)出消息后必須等到Broker返回PUBACK才認為發(fā)送完成否則重發(fā)。好處是保證Broker肯定能收到壞處是可能重復投遞接收方要做冪等處理。QoS 2恰好一次。通過兩輪四次握手PUBLISH-PUBREC-PUBREL-PUBCOMP保證消息既不丟也不重復代價是鏈路交互次數(shù)翻倍實時性和吞吐都會受影響。實際項目中除非是交易類、控制類指令一般很少用QoS 2。這里要糾正一個常見誤區(qū)QoS不是端到端的而是分段保證的。發(fā)布端與Broker之間是一段Broker與訂閱端之間是另一段。發(fā)布方用QoS 1發(fā)消息Broker可能以QoS 0轉給訂閱方這個在連接配置里是可以分別指定的。所以如果你需要消息到達最終接收方都有保證兩端的QoS都要配置成相應等級。2.4 Retain、遺囑與Keep Alive三個“小而美”的設計Retain標志可能是很多嵌入式工程師最容易忽略的一項。當發(fā)布者往主題發(fā)消息時如果置了RetainBroker會把這個消息存為“保留消息”這樣以后任何客戶端訂閱這個主題都會立刻收到這條保留消息。這個特性做狀態(tài)同步特別有用設備上線后往device/status發(fā)一條Retain消息表示“在線”云端或App后續(xù)訂閱這個主題不需要等設備再上報就知道當前狀態(tài)。要注意的是Retain消息會一直存在如果設備狀態(tài)變了要用新的Retain消息覆蓋設備離線要發(fā)一條空負載的Retain消息把它清掉否則云端讀到的永遠是過期狀態(tài)。遺囑消息Last Will and Testament則是一個“善后”設計。設備在建立連接時帶上一條遺囑指定遺囑主題和遺囑消息內容如果之后Broker檢測到設備異常斷開比如TCP連接超時、心跳超時、網絡無故中斷Broker就會代替設備把遺囑消息發(fā)布出去。這樣云端就能立刻感知設備異常下線而不是等超時。我在實際項目里經常用device/{id}/status這個主題配合遺囑設備正常上線發(fā)布Retain消息“online”異常掉線Broker自動發(fā)遺囑“offline”形成一個非常干凈的生命周期管理閉環(huán)。Keep Alive心跳機制則是維持連接的“體溫計”。客戶端在CONNECT時聲明一個心跳間隔通常30到120秒之后每隔這段時間就發(fā)一個PINGREQ報文給BrokerBroker回PINGRESP。如果Broker在約1.5倍間隔時間內沒收到任何報文就認為連接已死斷開連接并觸發(fā)遺囑消息。這個機制對嵌入式設備尤其重要因為很多嵌入式設備走的無線網絡運營商NAT超時一般只有幾分鐘如果沒有心跳保活連接會被網絡設備悄悄斷開設備端還以為連接還活著直到下次發(fā)數(shù)據(jù)才傻眼。3. 嵌入式端實戰(zhàn)從ESP32到STM32的落地經驗理解協(xié)議是第一步真正把它跑在受限的嵌入式環(huán)境里會有一堆工程問題等著你。這一節(jié)我以ESP32和STM32兩個平臺為例把從零到能跑通全鏈路的經驗和代碼片段整理出來。3.1 基于ESP-IDF的MQTT客戶端實現(xiàn)ESP-IDF自帶的esp-mqtt組件是基于ESP32的lwIP協(xié)議棧封裝的高層API底層用的是mqtt_client.c使用起來非常簡單。但簡單歸簡單有幾個配置項如果沒搞清楚實際項目里會很被動。先看一個最小可用的初始化流程#include mqtt_client.h static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data) { esp_mqtt_event_handle_t event event_data; switch ((esp_mqtt_event_id_t)event_id) { case MQTT_EVENT_CONNECTED: ESP_LOGI(MQTT, Connected to broker); // 連接成功后訂閱指令主題 esp_mqtt_client_subscribe(event-client, devices/esp32/cmd, 1); // 發(fā)布一條上線消息 esp_mqtt_client_publish(event-client, devices/esp32/status, online, 0, 1, 0); break; case MQTT_EVENT_DATA: ESP_LOGI(MQTT, Received: %.*s, event-data_len, event-data); // 解析并執(zhí)行云端下發(fā)的指令 break; case MQTT_EVENT_DISCONNECTED: ESP_LOGW(MQTT, Disconnected from broker); // 斷線后esp-mqtt內部會自動重連這里主要做業(yè)務上的處理 break; default: break; } } void app_main(void) { esp_mqtt_client_config_t mqtt_cfg { .broker.address.uri mqtt://192.168.1.100:1883, .session.keepalive 60, .credentials.client_id esp32_a1b2c3d4e5f6, .credentials.username device01, .credentials.authentication.password passwd, .session.disable_clean_session true, .network.reconnect_timeout_ms 5000, }; esp_mqtt_client_handle_t client esp_mqtt_client_init(mqtt_cfg); esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL); esp_mqtt_client_start(client); }注意幾個坑esp_mqtt_client_publish的參數(shù)順序是(client, topic, data, len, qos, retain)len傳0表示自動用strlen計算但如果你發(fā)的數(shù)據(jù)是二進制流里面可能帶\0一定要顯式傳長度否則消息會被截斷.session.disable_clean_session true對應Clean Session置0也就是持久會話。開啟后設備重連Broker會記住它的訂閱設備端就不需要每次重連都重新訂閱一遍但Broker側會話內存會增加這個要根據(jù)實際設備量權衡事件回調里不要做耗時操作比如不要直接在里面解析大JSON、跑算法或者寫Flash。標準做法是把數(shù)據(jù)拷貝到隊列或任務通知交給其他任務處理。因為esp-mqtt的事件是跑在它自己的task上下文里的如果阻塞太久TCP接收緩沖會溢出導致連接質量問題。3.2 數(shù)據(jù)序列化JSON與二進制怎么選很多新手喜歡把傳感器的所有數(shù)據(jù)拼成一個很長的JSON字符串一次性發(fā)上云比如{t:25.6,h:58.2,pm25:35.4,noise:62.1,battery:78,rssi:-65}這樣做的好處是云端解析方便各種云平臺、Node-RED都能直接消費。但在嵌入式設備端要注意幾個問題第一浮點數(shù)轉字符串再打包成JSONMCU上做這個操作比較吃力尤其是Cortex-M0這種小核跑起來會有明顯延遲第二JSON字符串越長空中傳輸時間越長掉線窗口越大功耗也越高。我常用的策略是“雙軌制”日常周期上報用緊湊二進制格式按固定字段順序打包成字節(jié)流云端先根據(jù)設備類型和協(xié)議版本解析這種格式十幾二十個字節(jié)就能塞下全部數(shù)據(jù)調試模式或做產品演示時才發(fā)JSON方便抓包看內容。如果你覺得自研二進制格式維護成本高也可以考慮用CBOR或Protobuf它們在MCU上有現(xiàn)成庫解析效率和JSON完全不是一個量級。還有一點很關鍵無論用哪種格式都建議在消息里帶一個單調遞增的序列號或時間戳云端消費側做去重和亂序處理都靠它。我之前遇到過一個詭異問題設備上報的數(shù)據(jù)在云端經常出現(xiàn)舊值覆蓋新值的現(xiàn)象查到最后就是網關轉發(fā)消息亂序丟了一個序號字段導致下游沒法判序。3.3 STM32 lwIP/串口WiFi模塊的MQTT移植思路如果你用的是STM32且需要通過以太網接入常見的路徑有兩種一是跑帶lwIP的以太網方案比如W5500硬協(xié)議?;騍TM32PHYFreeRTOSlwIP二是用串口WiFi模塊比如ESP8266或Air724MCU通過AT指令驅動。兩種路徑移植MQTT的思路差別很大。先說帶lwIP的情況嵌入式MQTT庫最主流的是Eclipse Paho MQTT Embedded-C它有MQTTClient這個平臺無關的封裝只需要你實現(xiàn)網絡層的connect、read、write、disconnect這幾個函數(shù)就能跑起來。底層可以基于lwIP的socket也可以基于Netconn API。這里提醒一下lwIP默認的MEM_SIZE和TCP_SND_BUF/TCP_WND比較保守如果頻繁發(fā)大數(shù)據(jù)包要適當調大這些參數(shù)否則MQTT的send會被阻塞或返回錯誤表現(xiàn)為連接正常但消息發(fā)不出去。再說串口WiFi模塊的方案MCU只把MQTT報文當普通數(shù)據(jù)交給WiFi模塊透傳嗎不能直接這么干因為AT模塊的串口透傳模式通常只是裸TCP透傳MQTT報文本身需要MCU自己構造也就是你需要在MCU端實現(xiàn)MQTT協(xié)議的封包和解包。好在MQTT協(xié)議本身不復雜一個狀態(tài)機加上CRC校驗其實MQTT沒有CRC靠TCP保證就能搞定。如果想省事可以選那種內置MQTT協(xié)議的AT固件比如ESP-AT官方固件就支持ATMQTTCONN等命令MCU發(fā)幾條AT指令就能完成連接和發(fā)布代價是靈活性差一些而且如果固件有bug很難繞過。3.4 斷線重連與低功耗策略物聯(lián)網設備最大的敵人是“死了還在假裝活著”。設備端斷線重連不能簡單地“斷了我重連”要有策略。推薦指數(shù)退避方案第一次重連等3秒第二次等6秒第三次12秒最多拉到5分鐘封頂同時記錄連續(xù)失敗次數(shù)超過一定閾值要主動上報本地錯誤狀態(tài)或者進入低功耗深睡過一段時間再起來嘗試而不是無限空轉。在ESP-IDF里esp-mqtt自帶reconnect_timeout_ms但對于需要精細控制退避策略的場景更適合自己監(jiān)聽MQTT_EVENT_DISCONNECTED在事件里做業(yè)務決策比如“連續(xù)掉線N次就重啟WiFi”很多時候比單純靠協(xié)議層重連有效得多。低功耗場景下MQTT最大的矛盾在于長連接需要高頻心跳而高頻心跳會頻繁喚醒射頻非常耗電。如果設備電池只能支撐幾個月卻要保持“實時在線”這是個無解的矛盾除非接受一個折中設備平時處于deep sleep上報數(shù)據(jù)時醒來臨時連接發(fā)完就斷線睡覺。這種模式不走Keep Alive長連接而是“按時醒來發(fā)完走人”功耗能壓到極低代價是云端看到設備的狀態(tài)是“時隱時現(xiàn)”不適合需要持續(xù)在線控制的設備。如果是需要“在線但省電”的場景可以考慮用NB-IoT那種PSM模式或者把心跳周期拉長到幾分鐘同時配合遺囑消息功耗和實時性取一個中間值。4. 服務端搭建與調試工具鏈協(xié)議是雙方的事光有設備端還不行Broker選型、服務器部署、調試工具的使用這些環(huán)節(jié)直接決定開發(fā)效率和生產穩(wěn)定性。4.1 Broker選型Mosquitto還是EMQX輕量測試階段我個人很推薦Mosquitto。它是Eclipse社區(qū)的老牌開源Broker單機部署只要一條命令資源占用極小樹莓派上都能跑非常適合開發(fā)環(huán)境快速驗證協(xié)議邏輯。但Mosquitto的功能相對基礎集群、規(guī)則引擎、插件擴展這些企業(yè)級能力比較弱生產環(huán)境設備量一旦上千單節(jié)點很容易成為瓶頸。EMQX在這幾年是很多物聯(lián)網團隊的選擇它基于Erlang/OTP天生適合高并發(fā)連接幾萬甚至幾十萬連接在一個節(jié)點上都扛得住而且自帶Web管理控制臺、規(guī)則引擎、數(shù)據(jù)橋接能直接把消息流轉到MySQL、Kafka、InfluxDB這些存儲系統(tǒng)。還有Kepserver這種工業(yè)領域常用的OPC網關近幾個版本也提供了MQTT IoT Gateway能把PLC的OPC數(shù)據(jù)直接映射成MQTT主題在工業(yè)物聯(lián)網項目里很常見。選型建議很簡單做原型驗證或者設備量在百級以內用Mosquitto產品化、設備量千級以上、需要可視化監(jiān)控和規(guī)則鏈用EMQX省去后續(xù)遷移的痛苦。4.2 Docker快速搭建MQTT服務器不管選哪種Broker用Docker部署都會省去很多環(huán)境相關的麻煩。以EMQX為例docker run -d --name emqx \ -p 1883:1883 \ -p 8083:8083 \ -p 8084:8084 \ -p 18083:18083 \ emqx/emqx:5.8.0端口說明一下1883是MQTT標準端口8083是WebSocket端口瀏覽器里的MQTT客戶端一般都走這個8084是WebSocketSSL18083是EMQX自帶管理控制臺的端口。啟動后訪問http://服務器IP:18083默認賬號admin/public就能看到連接數(shù)、消息流入流出速率這些實時指標。Mosquitto更簡單不過要注意Docker跑Mosquitto需要掛載配置文件否則默認配置不允許遠程匿名連接docker run -d --name mosquitto \ -p 1883:1883 \ -v /path/to/mosquitto.conf:/mosquitto/config/mosquitto.conf \ eclipse-mosquitto:2一個能跑起來的最小配置長這樣listener 1883 0.0.0.0 allow_anonymous true persistence true persistence_location /mosquitto/data/生產環(huán)境務必關閉allow_anonymous改成賬號密碼認證再疊加啟用TLS否則你的Broker就是一臺公共廣播站。4.3 MQTT調試利器MQTTX與命令行工具調試MQTT最常見也最好用的桌面工具是MQTTX支持Windows/Mac/Linux界面清爽可以同時建多個客戶端連接手動指定Topic、QoS、Retain這些標志位也可以腳本化自動測試。它還能直接模擬遺囑消息這對驗證設備離線通知邏輯特別有用。比如你想測試“設備異常斷開后云端的遺囑監(jiān)聽邏輯是否正確”直接在MQTTX里建一個帶遺囑的連接然后強殺這個連接看Broker是否發(fā)布了遺囑。命令行場景下Mosquitto自帶的客戶端工具也是神器# 訂閱主題加 -v 選項會打印消息主題 mosquitto_sub -h localhost -t devices/# -v # 發(fā)布一條消息到指定主題 mosquitto_pub -h localhost -t devices/esp32/cmd -m {action:reboot} # 用 -q 指定QoS用 -r 開啟Retain mosquitto_pub -h localhost -t devices/esp32/status -m online -q 1 -r這套工具鏈的最大價值在于它讓你能把“設備端-云端”和“測試客戶端”分開來查問題。設備端數(shù)據(jù)上報不上來先用MQTTX訂閱設備主題看Broker到底有沒有收到消息如果Broker收到了但云端沒顯示那問題就在云端消費側不要一上來就懷疑設備固件。4.4 與云平臺對接一機一密與Topic權限除了自建Broker很多項目會直接選用阿里云IoT、華為云IoT或騰訊云IoT平臺。這些平臺的MQTT接入地址、端口、認證方式都有差異但大致流程一致在云端創(chuàng)建產品和設備拿到設備三元組ProductKey、DeviceName、DeviceSecret設備端用三元組計算簽名拼進MQTT的Username和Password字段就能連上。連接時注意這些云平臺對ClientID格式有嚴格約定通常是DeviceName_安全級別_時間戳這種后綴拼錯了連不上拼對了但大小寫出錯也連不上細節(jié)一定要對著文檔核對。云平臺的Topic體系也頗有講究通常分為物模型Topic如/sys/{ProductKey}/{DeviceName}/thing/event/property/post、自定義Topic和數(shù)據(jù)流轉Topic。設備端只能往云端規(guī)定的Topic發(fā)布或訂閱權限在平臺側控制。這些Topic往往比自建Broker的Topic長得多在設計設備固件時要把Topic存儲的內存預留好我用ESP32時因為Topic太長導致發(fā)送緩沖區(qū)不夠出現(xiàn)過發(fā)布接口返回錯誤的問題后來把緩沖區(qū)從默認的1024調到2048才解決。5. 常見問題與排障經驗實錄最后這部分把我的實際排障經驗和高頻問題整理成速查表每一個都是踩過坑換來的。5.1 高頻故障速查表現(xiàn)象可能原因排查思路與解法設備連不上Broker端口不通、防火墻攔截、Broker地址配錯先本機用MQTTX測試再在設備端ping服務器IP確認網絡層通不通1883被運營商封鎖也很常見嘗試改走8883端口TLS能連接但一訂閱就斷開ClientID重復或被Broker判定為非法訂閱檢查是否有兩個客戶端用了相同ClientID檢查ACL權限設備端沒權限訂閱某些主題會被斷開設備頻繁掉線重連NAT超時、心跳間隔太長、WiFi信號差縮短Keep Alive到30秒確認設備端啟用了心跳排查周圍WiFi信道干擾順便看RSSI變化趨勢消息偶爾丟失QoS 0場景下網絡抖動Broker端內存溢出對關鍵數(shù)據(jù)升到QoS 1設備端記錄發(fā)送日志檢查Broker日志看是否有連接被強制斷開消息重復收到使用了QoS 1且接收端沒做冪等消費端按消息里的序列號去重升級到QoS 2但確認你的場景能接受額外網絡開銷遺囑消息沒觸發(fā)設備是“優(yōu)雅斷開”而不是異常斷開只有異常斷線才觸發(fā)遺囑如果設備主動調用disconnectBroker不會發(fā)遺囑確認遺囑主題和QoS配置正確Broker內存持續(xù)上漲大量持久的會話堆積檢查是否大量ClientID變了但Clean Session為0定時清理殘留會話限制離線消息大小5.2 一個典型的“幽靈掉線”排查案例有一次在客戶現(xiàn)場設備上報數(shù)據(jù)總是每隔一兩分鐘斷一次然后又重新連上看云端日志全是CONNACK成功和DISCONNECT交替。一開始懷疑是設備端代碼問題用支持抓包的調試器盯了好久也沒發(fā)現(xiàn)異常。后來我用MQTTX掛在同一個Broker上觀察全局連接發(fā)現(xiàn)設備連接斷開的時間點很有規(guī)律——幾乎精確地落在每兩分鐘整。這個規(guī)律立刻讓我想到運營商NAT超時很多4G模塊默認的心跳是120秒而運營商NAT的空閑超時通常也是2到5分鐘。設備端發(fā)了心跳Broker回了PINGRESP但NAT映射已經被回收了下一次心跳就丟了。Broker端一直沒收到后續(xù)報文就按Keep Alive超時把連接斷開觸發(fā)重連。而問題更隱蔽的地方在于設備端的lwIP認為TCP連接還是活的因為沒收到RST所以不會主動重連直到應用層超時才能感知。解決辦法是雙管齊下把Keep Alive從120秒縮短到30秒同時在設備端加了TCP層的心跳檢測和異常重連機制。從那以后掉線頻率幾乎降到零。這個案例也側面說明MQTT的Keep Alive不能簡單照抄配置要結合自己所處網絡環(huán)境來定尤其是蜂窩網絡和跨運營商通信心跳間隔寧可小一點。5.3 設備端資源受限的優(yōu)化心得MCU的Flash和RAM都很珍貴跑MQTT庫之前一定要算清楚開銷。以Paho Embedded-C為例默認緩沖區(qū)分配是連接緩沖區(qū)加發(fā)送緩沖區(qū)最大包大小直接決定RAM占用。如果你只需要發(fā)幾十字節(jié)的傳感器數(shù)據(jù)把緩沖區(qū)調小到256字節(jié)內存占用可以省下一大截。但要注意如果Topic本身很長加上固定頭、可變頭、消息體總包大小一旦超過緩沖區(qū)接口就會返回MQTT_BUFFER_TOO_SMALL錯誤。正確的做法是事先估算最壞情況下的報文大小。我在一個STM32L4項目里就遇到這個問題。固件里規(guī)劃了一塊1KB的MQTT發(fā)送緩沖區(qū)結果設備端訂閱的主題長度達到150字節(jié)加上負載將近300字節(jié)勉強沒問題。但后來在固件里加了OTA升級包URL上報功能URL里塞了帶簽名的長連接整條消息奔著1.2KB去了發(fā)布直接失敗。后來我把消息拆分URL拆成多條內容塊分批發(fā)才繞過了物理限制。這個經驗告訴我做MQTT設備端開發(fā)時報文最大長度是一個要提前確定的架構級參數(shù)后續(xù)所有功能設計都得為它讓路別等到上線了才發(fā)現(xiàn)頂不住。5.4 安全相關的底線建議如果你做的設備要過等保、過安全測試或者連接的是公網Broker下面幾條是基礎底線不做到位很容易被攻破生產環(huán)境禁用匿名連接每個設備分配獨立賬號密碼用一機一密方式動態(tài)生成不要所有設備用同一個密碼優(yōu)先使用8883端口TLS加密通信哪怕證書是自簽的也比裸用1883強得多如果MCU性能不夠跑完整TLS握手至少要做設備端到Broker端的鑒權并考慮使用更輕量的XAUTH、PSK等方案設備端不要硬編碼Broker密碼在固件里最好通過產線工具注入到獨立存儲區(qū)域防止固件逆向后密碼泄露導致整個Broker被刷Topic劃分時收和發(fā)的權限要嚴格隔離。一個常規(guī)的權限配置是設備能往device/{id}/pub/#發(fā)布只能訂閱device/{id}/sub/#跨設備訂閱一律拒絕。這些習慣看似繁瑣但真到出事的時候就知道了多一道閘就多一份安全。6. 最后分享幾個個人習慣根據(jù)自己的實際經驗最后羅列幾條我平時做MQTT項目時一定會遵守的習慣算是給新入坑的朋友一些參考第一每個Topic的消息結構一定要寫文檔哪怕不寫正式文檔也要在代碼倉庫里維護一份Markdown記錄字段類型、單位、取值范圍、版本變更。MQTT項目后期最痛苦的永遠是消息格式的兼容問題設備固件不能像App一樣強制升級格式一旦定了再改是牽一發(fā)動全身。第二設備端固件里把連接狀態(tài)、最后心跳時間、最后消息收發(fā)時間記錄下來出了問題先看這個日志能省大量摸底時間。我見過太多設備掛在墻角問現(xiàn)場的人說“剛才還好好的”拿日志一看重連機制早就失效了。第三新項目上線前做一個簡單的拔線測試把設備正常跑起來然后直接插拔網線或者斷電WiFi觀察設備重連、緩存、消息補償、遺囑觸發(fā)這些行為是否符合預期。這個測試聽著簡單但很多看起來很高端的物聯(lián)網項目連這一步都做不好。MQTT作為一個已經存在二十多年的協(xié)議其設計簡練而實用但它終究只是個傳輸管道真正值錢的是圍繞它建立的一整套端到端系統(tǒng)設計能力。希望這篇文章能幫你把這條管道的每個閥門都看清楚下次做物聯(lián)網項目時能少走一些彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色五月激情五月开心五月| 日日狠狠久久偷偷四色综合免费 | 丁香五月婷婷五月天在线| 婷婷在线免费| 天天草天天摸| 五月在线婷色| 五月丁香花激情综合网| 国产三级在线播放| 日韩久久成人| 开心深爱激情网| 91人妻视频| 久久视频婷婷| 狠狠色综合图片| 色狠狠综合| 婷婷色五月久久| 丁香五月天激情四射网| 婷婷丁香五月在线观看91| 五月婷婷花| 玖玖综合玖玖| www久| 五月丁综合在线观看| 色五月婷婷AV| 99cao婷婷| 色综合久久天天综合网| 人人干人人看| 热久久99热欧美国产亚洲| 激情五月天色网站| 九一牛视频探花| 99九九久久| 久综合| 五月天色裸体视频| 亚洲综合丁香婷婷六月天| 影音先锋天天日| 99欧美| 日本久久婷婷| 激情视频网址| 色婷婷亚洲婷婷| 五月丁香花免费视频| 在线99色| 九九精品re免费视频| 激情小说五月天| 久久综合爱| 婷婷久久欧美| www,99热在线观看| 狼人伊人干| 大香蕉婷婷丁香视频在线| 综合五月激情网| 99热在线播放| 九九热在视频| 2025天天爽天天摸| 另类视频丁香五月| 天天天天天日| 五月婷在线色视频| 丁香六月婷婷久久综合| 狠狠综合网| 久久这里只有精品热在99| 欧日美女Va| 91色在线| 久婷婷五月激情| 91丨九色丨高潮丰满日本| 一起操 91N.com| 日韩野外 无套| 激情婷婷丁香五月| 亚洲激情六月| 九热...av| 91精产品自偷自偷综合| 九九视频这里只有精品| 激情综合六月| 五月婷婷六月丁香玖玖玫瑰91| 日日杆天天| 天天插插天天| 天天爽夜夜爽夜夜爽精品视频| 色色COm| 伍月婷婷六月丁香| 亚洲免费婷婷| 五月婷婷激情综合网| 激情小说之五月| 色五月欧美| 2022人人操人人看| 婷丁香久综合| 五月丁查人人| 人人干99| 国产熟妇的荡欲午夜视频| 97天堂| 日韩免费视频| 成年视频免费观看| 69五月天视频| 99这里有精品| 亚洲乱码精品久久久久..| 玖玖在线视频| 日韩激情网站| 强辱丰满人妻HD中文字幕| 99国产精品久久久久久久久久久| 国产毛片精品一区二区色欲黄A片| 亚洲妇女熟BBW| 亚洲在线网站| 99热在线爱| 天天拍夜夜爽日日| 91美女被操| 99在线免费视频| 99色综合网| 五月天无码视屏播放| 五月天无码视屏播放| 六月亭亭久久综合激情| 中文字幕黄色片| 综合网五月| 丁香网五月天| www.狠狠| 婷婷五月天美女21p| 九九视频在线| 玖玖五月| 欧美日本一区二区三区| 97AV在线视频| Www.狠狠| 色婷婷丁香香香蕉视频| 狠狠干无码| 伊人激情综合| 激情五月婷婷欧美极品| 久热 91| 校花娇喘呻吟校长陈若雪视频| 综久久久| 婷婷香五月综合激情| 天天干天天爽| 涩 五月 婷婷 狠狠| 高清无码.com| 色停停香蕉视频| 嫩草AV久久伊人妇女超级A| 亚洲电影中文字幕| 伍月婷丁香花全集| 欧类av怡春院| 99热这里只有精品21| 人人草人人舔| 五月丿香啪啪| 天天插天天插天天插天天插| 亚洲精品a成人在线播放| 日韩AV在线免费观看| 南京搡BBBB搡BBBB| 天天综合精品| 啪啪色激情五月天| 婷婷五月花| 金品在线视频99| 9久热这里只有精品视频| 99热这里只有精品在线观看| 四川操逼站| 管管補管管紱| 国产做爰视频免费播放| 五月天婷婷色播| 伊人啪啪网| 99热很操老逼| 99热这里只有精品55| 最近中文字幕2019视频1| 天天射天天干天插色综合| 五月WWW| 风流少妇A片一区二区蜜桃| 激情五月综合网最新| 99操逼| 国产亚洲精品久久久久久久久动漫 | 丁香五月AV| 久久精彩视频99| 538在线精品| 日本色噜| 激情内射人妻1区2区3区| ww亚洲ww在线观看| 国产精产国品一二三在观看| 免费观看的AV| 卡视频1区2区| www.jiujiujiu| 婷婷综合日本| 亚洲AV成人在线| 五月婷婷综合在线视频| 久热这里只有精品6| 激情五月瑟瑟| 久久久噜噜噜久久人妻| 五月丁香无码| 亚洲精品V天堂中文字幕| 久久之人妻| 婷婷亚洲综合| 免费播放99性爱视频| 91色五月在线观看| 色婷婷丁香五月| 99草视频在线观看| 九九视频这里只有精品| 91dy.av| 色色六月| 色六月婷婷| 色色色99| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 日韩AV中文字幕在线| 午夜激情五月天| 久久九九囯产| 久久99综合| 99久久66| 色九九一二| 久久久久网站| 婷婷五月丁香色情| 亚洲成人在线综合| 夜夜嗨一区二区三区直播内容| 日日懆天天懆| 97久久久久| 婷婷深爱五月天| 五月天五月色| 亚洲旡码| 五月激情婷婷四射| 99国产精品白浆在线观看免费| 啪啪激情网站| 伊人婷婷大香蕉| 婷婷色婷婷| 亚洲噜色| 色婷婷先锋| 色五月亚洲| 婷婷香五月| 伊人玖玖网| 日日天天干| 色婷婷丁香五月天激情综合网| 婷婷丁香社区| AV中文网| 亚洲婷婷91丁香| 五月熟妇婷婷久久| 国产 亚洲 在线| 国外亚洲成AV人片在线观看| 91操片| 这里只有精品在线播放| 热99国产精品| www99在线观看视频| 色偷偷AV亚洲男人的天堂| 激情综合丁香五月| 校园激情 亚洲| 婷婷五月丁香综合激情| 一区二区你懂的| 五月综合无码| 99自拍视频网站| 色五月婷婷啪啪五月| 色婷婷五月天成人网| 91欧美| 玖玖五月| 青青草五月天| 天天做天天爱天天做| 他改变了拜占庭| 综合网色综合| 殴美97色| 禁片二区| 91日综合欧美| 5Www色5夜| 久热九九| 大香蕉手机视频| 五月天婷婷免费| 国产精品视频久久99| 久久婷婷青草五月天| 色偷偷人人| 青青久在线视频免费观看| 激情文学五月丁香六月婷婷| 久久黄色片| 五月婷婷久久激情 | 天天人人人人人人人人人人人| 99re这里只有精品视频6| 国产视频福利| 站长推荐无码播放| 激情综合无码| 狠狠色丁香综合| 久久精品视频99| 天天综合91入口| 深夜婷婷 丁香| 丁香婷婷久久 | 韩国情人在线电视剧免费观看高清版全集| 日本三级大片| www.精品99| 激情综合播播| 国产成人精品一区二三区熟女在线| 婷婷久久精品| 日韩成人精品中文字幕| 欧美色婷婷| 99热在线精品观看| 久草热8精品视频在线观看| 五月天狠狠色| 九九这里有精品| 婷婷色色网| 99综合| 婷婷激情图片| 成功精品影院| 色激情五月| 天天爱天天做天天操| 天天爽天天摸| 九九99香蕉在线视频播放| 深情五月天| WWW五月| 五月丁香六月婷婷无码| 97人人操人人爽| 五月婷婷五月天| 丁香五月Av| 色色色色网| 99色色网| 伦乱人妻| 久久五月视频| 丁香五月在线观看完整版| 色婷婷裸体色性在线| VfJxEwPH| 丁香婷婷深情五月亚洲| 色香蕉婷婷| 99在线看视频| 99久久久国产大片| 日日日日操| 五月天婷婷影院| 九九99精品视频| 五月婷综合| 极品人妻VIDEOSSS人妻| 丁香六月婷婷开心婷婷网| 五月婷婷丁香大陆免费| 色色五月丁香婷婷| 噜噜噜精品欧美成人在线观看| 另类五月激情| 9999久久久久| 91久久九色| 久久伊人大香蕉| 五月天开心婷婷久久| 久久机热这里只有精品| 超碰99在线| 成人无码精品1区2区3区免费看| 婷婷六月丁综合| 色婷婷中文在线| 五月婷免费视频久久久| 91热久久| 五月天伊人久久| 久热大香蕉| 思思re视频在线| 久久狠狠干| 中文字幕网伦射乱中文| 婷婷情色五月天| 涩涩五| 婷婷婷婷色| 五月婷婷综合视频| 97热在线精品| 久久色这里只有精品| 五月丁香色色网| 五月天另类小说久久小说网| 5月色亭亭视频| 国精产品一区一区三区有限公司杨 | 狠狠草婷婷| 丁香五月激情综合| 国产三级在线播放| 婷婷丁香激情| 婷婷欠久少妇| 视频这里只有精品16| www.99婷婷| 思思热99er| 日日夜夜狠狠婷婷色| 亚洲五月停停| 丁香五月 性爱| 天天爱天天做天天舔| 91丨九色丨熟女丰满| 99热传媒| www.五月天社区| 俺也去色| 婷婷丁香五月久久| 五月天成人综合| 操碰99| 色五月婷婷网| 国产精品美女| 91婷婷色五月| 99色中文| 色~性~乱~伦~噜| 九月av| 97操男人的天堂| 婷婷五月综合啪| 可以看的av| 91狠狠色色丁香婷婷综合久久| 婷婷五月天在线观看免费| av国产精品| 国产色色网站网址| 99操99| 六月婷欧美| 亚洲人人操| 日韩精品电影| 91一起艹| 99热99ai| 青青草免费公开视频| 99热网站在线观看| 九九九九九999999| 常久最新免费的色吊丝| 色婷婷无吗| 日日爽日日爽| 天天操婷婷| 舔色婷婷| 9999久久久久| 最近中文字幕2019视频1| 六月丁香五月婷婷首页| 97超碰,人人舔,人人操,人人摸 | 国产肥白大熟妇BBBB视频| 思思99精品视频在线观看| 久久婷婷五月天| 欧美日韩国产伦精品日韩人妻一| 久热婷婷| 激情黄色五月天| 五月天久久婷| 丁香五月最新地址| 国产Va视频| 少妇搡BBBB搡BBB搡毛茸茸| 久久婷婷五月综合色丁香| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 色五月婷婷五月天| 亚洲综合无码| 婷婷五月丁香基地| 九月丁香婷婷| 五月 婷婷 成人| av成人在线播放| 99久久久| 亚州精品久久久久AV无码| 久久久人人操A V| www.久久爱.com| 国产日产成人亚洲欧美国产VA| 婷婷五月影院| 成人视频在线免费播放| 日本在线视频手机播放五月婷| 日韩丁香涩| 日本欧美成人片AAAA| 另类专区在线观看| 噢美99| 欧美五月婷婷| 午夜婷婷五月天在线| 天天做天天爱天天高潮| 狠狠色噜噜狠狠色噜噜噜999| 久久艹 五月天| 七七九色| 色狠狠色噜噜噜a天堂一区| 五月天基地| 五月丁香五月综合欧美| 色播五月婷婷五月| 激情 五月 婷婷 丁香| 91操黄| 人人人操| 开心婷婷丁香五月| 婷婷五月天人妻| 大香蕉Av在线| 日韩AV在线免费| 99操| 九色无码| 精a品a| 丁香六月天AV| 另类A片| 大香蕉婷婷婷| 六月成人网| 九九亚洲综合| 色五月婷婷天天操夜夜操| 婷婷色网站| 五月婷婷9| 精品夜夜澡人妻无码AV| 99免费热视频在线| 五月丁香激| 99热777| 四色综合网| 色综合色色色色| 丁香六月天婷婷色| 美国少妇性做爰| 激情綜合W W W,激情五月天| 成人版视频在线观看| 婷婷丁香人妻久久在线观看| 天天成人综合| 同性gv国产精品一区二区| 婷婷丁香五月色偷偷| 丁香婷婷激情网站| se色婷婷视频| 91色情播放| 婷婷丁香一月| 日日色五月天| 丁香五月亚洲激情婷婷射| 日本久久人| 五月丁香A片| caop视频| www...com黄在线观看| 国自产拍偷拍精品啪啪一区二区| 91热爆在线| 婷婷综合激情| 日本久久99| 99热免费观看| 极品少妇XXXX精品少妇偷拍| 久久精品99国产精品日本| 婷婷精品视频| 日本精品人妻无码77777| 婷婷久久大香蕉| 99热这里只有精品在线观看| www.色婷婷.com| www.婷婷五月天| 丁香五月香蕉| 中文字幕日产A片在线看| 9久精品| 韩国真做片在线观看| 久久99网站| 思思热在线观看| 粉嫩AV久久一区二区三区| 丁香六月激情| aaa久久久| 涩涩激情五月婷婷| 婷婷五月天激情电影| 六月婷婷啪啪| 亚洲综合激情五月久久| 亚洲人人96@| 婷婷久久免费看| 国产激情久久久| 九九九精品视频免费观看| 五月伊人综合| 欧美婷婷综合| 99在线视频精品| 中文字幕在线观看视频www| 异能之下短剧免费观看全集| 色青青视频| 婷婷丁香人妻天天久久| 五月天丁香综合久久国产| 婷婷五月天开心激情网| 人妻久久人妻久久第一区| 五月丁香好婷婷A片网| 婷婷性爱网| 欧美大肥婆大肥BBBBB| 大香伊人久色| 丁香六月婷婷综合欧美| 久久激情综合| 射久久丁香五月| 久久99热这里只有精品| 综合福利网| 超碰色女人| 狠狠五月激情在线| 99精品福利视频| 欧美影院婷婷| 任我干视频在线观看| 免费亚洲成人电影AV| 日韩成人无码片| 亚洲成人网站在线观看| 色欲AV导航| 婷婷综合激情| 五月天婷婷涩涩| 丁香婷婷精品视频| 91无码高清| 欧洲色色| 色九网| 亚洲欧州色情在线观看| 夜夜操夜夜操| 草草影院爱爱| 精品久久久久久久久久久久人妻| 91色色色| 五月婷婷色白丝| 美女婷婷六月色| 五月天婷婷色色网| 亚洲最大视频网站| 伊人六月无码视频| AV性爱网| 操逼毛片国语对白| 激情五月天电影| 久草热久草在线视频| 激情五月天啪啪| 久热这里只有精品性色AV| 视色综合| 欧美成人猛片AAAAAAA| 婷婷九月激情| 这里有精品| 热99AV网站| 超碰91在线| 婷婷九月亚洲| 激情六月天婷婷| 激情五月激情综合网| 91要啪| 天天操屄网| 第五色婷婷| 狠狠综合久久综合| 婷婷五月激情在线| 婷婷五月天性色| 天天综合色丁香| 超碰在线观看99| 国产精品人妻在线网址| 天天综合中文| 伊人激情网| 色综合久久天天综合网 | 99精品在线| 色欲久久久久久综合网综合网| 五月天婷婷视频30| 狠狠爱成人综合网| 丁香五月激情六月综合| 99久久国产宗和精品1上映| 色5在线| 色综合色五月| 精品乱码视频| av狠狠操| 国产日批视频| www.9操| 日本熟妇人妻在线| 我淫我色婷婷五月天激情四射| 无码G高清天| 成人做爰A片免费看网站找不到了| 久久久久9999| 六月丁香婷| 欧美日韩AAAAA| www.婷婷| 婷婷之六月丁香| 亚洲狠狠色丁香婷婷综合久久| 五月婷人妻| 国产精品久久久爽爽爽麻豆色哟哟| 图片区 小说区 区 亚洲五月| 婷婷丁香77777| 五月天开心网| 综合五月激情| 综合色视频| 成人av在线网址| 丁香五月综合| 国产成人片| 精品婷婷五月视| www,奇米影视| 天天爽日日爽夜夜爽| 九九九九九九九九九九九九九国产精品| 韩国婷婷丁香五月| 操操熟女| 激情五月天影院| 人色五月天婷婷| 99热午夜精品| 日日干天天爽| 精品色| www.婷婷网| 日日操夜夜操中国无码| 青草五月天| 久久激情五月天| 久er免费视频| 91岛国片| av婷婷六月丁香社区在线观看| 婷婷性爱五月天| 99色热| 久久91久久精品久久| 狠狠干五码| 日本专区久久| 成人免费120分钟啪啪| 丁香五月综合网亚洲综合欧美狠狠 | 欧美一线视频| 激情综合色婷婷啪啪六月天| 99这里只有精品8| 5月婷婷激情在线| 久久色情| 天天干,天天日| 久久人妻伦理| 九九热九九热精品| AV无码免费| 天天日天天久久青青| 婷婷久久免费| 五月婷婷网五月在线| 久久99婷婷| 激情99| 色五月综合网| 天堂婷婷五月在线| 久久性视频| 天天网曰日曰夜夜综合永久免费| 91性交在线播放| 五月天伊人| 99热9999| 美女精品一级不卡视频| 一本色道久久综合狠狠躁小说| 狠狠色狠狠鲁| 伍月激情天| 中文字幕 码精品视频网站| av免费在线网站| 婷婷五月天丁香综合网| 99久久99综合| caop视频| WwW色婷婷| 伊人综合网站| 日本欧美成人片AAAA| 囯产精品久久欠久久久久久九大| AV九九| 91久久久久久久久久久| 激情九月综合| 97人人射| 亚洲无码99| 色五月婷婷五月| 五月丁香| 久久九九99| 思思热在线观看| 色欲日日躁| 天天日日天天| 青青草视频福利| 五月天激情久色| 青青草蜜臀| 狠狠色激情综合| 五月婷婷干| 国内精品玖玖| 色婷婷亚洲精品天天综| 少妇人妻人伦A片| 丁香 久久| 激情九月综合| 天天干天天做| yazhoujiqingav| 五月停视频天堂| 99情色五月天| 婷婷丁香五月天影院| 亚洲视频操| jiujiu热在线视频| 丁香婷婷六月天| 欧美va欧美va差| 天天日综合| 亚洲成人在线免费| 99热精品在线观看| 亚洲成人电影在线免费观看| 金品在线视频99| 九九色影视| 天天免费成年人视频| 国模淫穴色图| 五月丁香啪综合| 99热这里只有精品在线| 婷婷中文字幕欧美| 久久免费丁香| 天天爽—爽| 久色欧美| 六月激情婷婷| 成人国产网| 99热在线精品观看| 99热精品一区| 九九热精品视频在线观看| 久久视频这里有精品99| 久久婷婷一级片| 97色婷婷在线观看| 天天婷婷天天| 女人被男人吃奶到高潮| 日日夜夜天天| 色色色在线观看| 丁香五色月婷婷网| 99免费视频| 国产精产国品一二三在观看| 日韩无码性爱| 天天插天天日天天爽| 97成人在线视频精品| 久久久这里都是精品| 99热777| 99操逼| 91在线视频观看午夜福利| 99热国产精品| 亚洲欧美一区二区三区爱爱动图| 久热这里| 四月婷婷五月丁香| 99精品在线下载| 九九99精品| 男同色五月开心五月激情五月| 国产成人+综合亚洲+天堂| 欧美va欧美va差| 久久综合激情| 中文字幕九九九九| www,天天干| 香蕉久久国产AV一区二区| 99在线视频资源| 久热播这里只有精品| 五月婷婷丁香六月| 4399亚洲视频| 色五月婷婷九月| 丁香五月花影院| www久久99com| 色色色欧美| 丁香五月婷婷Av| 亚洲婷婷激情五月天| 五月天激情四射| 粉嫩av懂色av蜜臀av熟妇| 五月激情婷婷在线| 久9综合| 六月丁香婷婷色综合| 久热99| 热99精品视频五月| 日本九婷婷| 成人视频免费观看高清完整版在线观看| 九九热只有精品6| 五月激情六月综合| 五月色网| 香蕉综合在线| 人妻激情综合| 人妻精品在线| 99色热视频| 超碰在线观看9| 激情宗合 激情宗合| 婷婷开心久久| 91狠狠色丁香| 99热天堂| 狠狠色狠狠| 超碰免费大香蕉| 丁香婷婷九月| 婷婷综合97| 99热主页日本| 狠狠久久婷五月| 日韩成人中文字幕| 91精品无码| 99久久婷婷国产综合| 丁香六月狠狠干| 大香蕉精品视频| 综合激情五月丁香| 99久在线精品99re8| 九九热这里只有精品首页| AV人人操| 夜夜天天久久婷婷| 婷婷综合中文字幕| 综合久久人妻| 碰碰人人漕| 五月天婷婷网站888| 91色综合| 五月激情小说| 色综合网综合| 日本情色一区二区| 激情五月天啪啪| 超碰九色| 四LLL少妇BBBB槡BBBB| 思思综合热| 国产亚洲成人综合| 五月天社区婷婷丁香社区| 91黄址| 超碰91在线| 九九爱看亚洲| 伊人青涩网| 人人97碰| 桃色激情婷婷伊人网| 淫视馆av三区| 性色婷婷| 精品无码色欲AV| 99久久婷婷综合| 999久久久国产精品| 色五月婷婷婷婷婷婷婷婷婷婷| 五月婷婷性爱| 天天干天天射色综合| Www99热| 五月的婷婷六月丁香| 欧美A级成人婬片免费看理论| 激情五月丁香五月| 九九精品网站| 丁香九月色| 色综合婷婷| 九九这里精品| 丁香六月婷婷久久高清| 蜜臀AV在线观看| 九九热在线视频观看| 另类图片色五月| 中文字幕1区2区。| 五月丁香激情婷婷| 丁香五月婷婷亚洲另类| 强伦轩人妻一区二区电影| 欧美成人精品A片免费一区99| 婷婷丁香五月高清| 色视频2025| 91性人人| 国产精产国品一二三在观看| 午夜婷婷久久 | 六月丁丁香| 久久亚洲网| 99超级碰碰| 97在线观看| 日本久久婷| 天天爽天天干天天| 久久这里只有精彩| 一起草av在线观看| 韩国中文字幕91| 日日噜狠狠| 国产综合网在线| 天天做天天爱天天爽在| 婷婷趴趴| 午夜在线成人网站免费观看| 伊人色综合网| 天堂中文国产| 天天激情| 99爱免费在线视频| 久热99| 视频一二区| 五月婷婷久久爱| 被强行糟蹋的女人A片| 色婷天天| 蜘蛛女侠2003满天星免费观看| 婷婷五月天,影院| 五月天婷婷av| 欧美超级视频97| 久久久久久婷| 综合欧美五月婷婷| 欧美成人精品A片免费一区99| 在线中文字幕视频| 99热国产精品| 日韩黄色网络| 99啪在线| 玖玖玖婷婷婷| 日日操夜夜操中国无码| Blackedraw视频一区二区| 色色色9| 67194成I人在线观看线路1| 九九热在线精品| 五月丁香中文字幕| 五月好婷婷| 这里只精品热在线18| 中文字幕日韩无码制服诱或| 精品国产va久久久久久久| 亚洲精品乱码久久久久久按摩观| 67194成I人在线观看线路1| 9l视频自拍9l九色9l成人| 国产免费一区二区三州老师F1F1……| 午夜激情四射影院| 色亭亭丁香五月天| 90色免费视频| 色婷婷精品视频在线播放| 亞洲自怕| 婷婷五月天大香蕉在线视频观看| 热婷婷av| 97艹| 99在线视频资源| 日本久久婷| 色狠狠综合| 婷婷丁香五月亚洲欧美| 久久亚洲A| 六月色婷婷欧美| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 欧美内射AAAAAAXXXXX| 99热精品免费| 香蕉久久国产AV一区二区| 色哟呦av| 激情综合九| 六月婷婷网| 久99久精品视频| 在线不卡视频| 久久99最新| 丁香五月网在线观看| 亚洲第一色区| 色五月婷婷网| 五月丁香黄色视频| 五月天激情综合网| 国产av第一专区| 九九综合网色全集| 九色视频91| 狠狠干2007| 热思思| 婷婷丁香花五月天| 五月丁香影院| 五月丁香久久综合91| 五月亭亭色| 激情综合网丁香| 99精品爱| 9月色婷婷| 99热精品在线在线| 五月丁香婷婷老司机| 97操碰视频| 欧美天天干五月丁香| 人人爽欧美婷婷久久久五月丁香 | 9久久精品视频| 日韩色色小视频| 色综色五月天婷婷| 欧美综合123区| 欧类av怡春院| 4399在线观看免费高清黄色视频| 天天日天天狠狠操| 桃色激情网| 涩五月婷婷| 热99.com婷婷| 综合久久综合久久| 精品久久久91久久影视网| 99久高清视频| 成人五月天在线观看| 色婷婷五月在线| 欧美A级成人婬片免费看理论| 99久热精品在线| 色波激情五月天| 综合久久五月天| 婷婷综合视频| 综合久久久婷| 亚洲 在线 性爱| PORNY九色9l自拍视频成人| 午夜天堂一区人妻| 国产精品视频免费看| 五月丁婷婷| 日本三级日本三级99| 日本婷婷色| 五月婷婷激情四季| 九月婷婷色色| 五月四色激情| 天天日日人| 久婷婷色| 丁香五月 性爱| 婷婷五月在线综合| 久久3p| 丁香五月激情图片婷婷| 六月婷婷天天操夜夜爽视频| 99亚洲精品视频| 99精品偷自拍| 啪啪一区| 久久超视频| 一起草日本| 九九热99精品| 丁香五月激情网| 久久九九玖玖| 色色色热| 激情五月天色色色| 米奇影视资源777狠狠色婷婷五月天激情网 | 一本久久亚洲五月婷婷| 成人午夜无码视频| pom538精品视频| 久草五月天| 五月天丁香婷婷视频网址 | 这里只有精品网站| 666555。COm毛片| 天天色天天爱天天舔| 操操啪| 91丨九色丨丰满人妖| 亚洲另类日本| 超级碰碰碰久久网站视频| 丁香五月婷婷精品视频| 欧美日韩成人在线| 亚洲五月天,激情视频| 97干网站| 欧美 日韩 成人 在线| 野战毛片三一3| 96色婷婷| 五月天亭亭俺也| 婷婷丁香五月天色色| 操射国产日本| 91色综合久久| 色欲天天综合| 99精品久| 思思热99热| 亚洲综合成人网站| 天天操综合网| 中文字幕网站在线观看| 九九热视频这里只有精品| 伊人久久大香| 免费亚洲婷婷| 99精品久久久久| 婷婷五月天堂| 超碰99在线观看| 99精品在线观看视频| 九九这里只有精品在线视频| 天天色天天| 狠色狠色狠狠色综合网| 亚洲精品无码一区二区| 激情亚洲色图片丁香综合| 久久久天堂国产精品女人| 大伊久久| 激情文学 综合 九月| 丁香六月久久| 久久人人九九| 婷婷五月色| 狠狠狠人妻| 日操夜操天天操不卡| 久久免片| 天天摸天天肏| 天天干天天干天天干| 激情狠狠丁香月| 久久综合最新网址| 可以看的av| 日韩啪啪网| 午夜天堂一区人妻| 操操操AV| 丁香五月婷婷AV| 激情五月综合| 99精品22| 亚洲综合婷婷五月| 亚洲国产无线乱码在线观看| 播五月丁香六月| 欧美日韩成人一区二区| 超碰在线看| 999影院成人在线影院| 婷婷爱爱蜜臀天天操| 色综合五月天| 99热这里只要精品免费| 97人人做| 亚洲国产精品二二三三区| 丁香五月另类小说| 亚洲视频二区| 婷婷在线中文字幕| 99热99精品| 亚洲色五月天是什么| 毛片蕉地一二| 丁香五月偷拍| 亚洲成人在线五月天| www.超碰在线| 激情综合网激情五月俺也去| 久久丝袜婷婷| 九九九午夜影院成人| 丁香五月激情综合婷综| 日本三级日本三级99| 曰日爽日日操| 久久视频66| 超碰在线观看成人视| 色色婷| 欧美日韩成人在线网站| 五月色无码| 婷婷操久久| 色99综合色88| 日韩无码色色| 久久婷婷六月综合综合色| 色色综合无码| 婷婷久久影院| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 亚洲精品国产精品乱码视99| 天天日天天干天天爱| 久久久A级视频| 亚洲精品白浆高清久久久久久| 久久精品99久久久久久| 五月天婷婷成人资源站| 日韩成人网址| 狠狠九九婷婷韩| 丁香婷婷五月香蕉91| 婷婷性爱| 五月婷婷色| www.五月天社区| 五月天开心激情网色欲无码| 2017人人操| 色噜婷婷| 无码成人播放器| 天天爽天天爽| 婷婷操久久| 久久人妻久久| 婷婷丁香五月,狠狠综合| 久久久人妻不卡| 婷婷射图五月天| 婷婷之玖玖| 99爱在线| 婷婷丁香九色| 亚洲乱码日产精品BD在线观看| 成人精品在线| 91婷婷丁香五月| 久热这里只有| 丁香五月天天高清在线| 亚洲久久婷婷丁香五月天| 日本色频| 色色色99| 人人操AV| 色哟哟精品| 久婷婷五月综合欧美| 久久无意婷婷| 热婷婷av| 内射 无码 伊人| 婷婷99狠狠躁天天久久久九九九| 99亚洲天堂| 色综合久久888| 久热这里只有精品6| 五月丁香婷婷色| 婷婷五月综合在线| 超碰大香蕉网| 91viP在线看| 婷婷久月| 99热啪啪| 亭亭五月丁香五月天激情| 亭亭色色五月天| 欧美黄色AA片哗啦啦啦| 色婷婷手机在线| 五月天婷婷久久视频| 午夜激情五月天| 天天爽天天摸| 97 A I色色| 天天天天天天操| 一本色道久久综合狠狠躁小说| 五月天综合视频| 亚洲激情婷婷| 丁香六月婷婷色播| 亚洲综合视频网| 婷色五月天| 丁香五月Av| 婷婷五月天成人网| 国产精品第一国产精品| 久777| 久久99网| 久久精品系列| 久久精品9| 久热这里只有精品3| 色五月婷婷丁香国产在线| 熟女五月天久久综合| 精品皮股午夜AV| 538在线精品| 97久久精品| 99久久综合网| 大香蕉 婷婷| 亚洲欧洲一二| 色婷婷伊人| 综合婷婷六月| 99综合激情久久精品久久| 夜夜爱网站| 任你爽视频| 99精彩视频| 97综合视频在线| 97欧美在线| 秋霞电影一级黄| 人妻久久久久久久久妻久久久久| 久久性爱视频久久性爱视频| 97亚洲婷婷| 色人久久| 玖玖九九9999在线观看视频精品| 亚洲色夜| 开心久久爱五月天| 思思热高清在线观看| www九九热| 成人中文网| 91久久久久久久久久| 丁香五月网络网络| 深情五月天| 熟女激情五月天| 成人丁香婷婷| www.婷婷五月天| 日日夜夜噜噜爽爽| 激情爱爱网站超大免费| 色丁香五月婷婷| 色综合香蕉| 丁香婷婷久久激情| 日亚二欧美| 精品无码久久久久久久久 | 老师的粉嫩小又紧水又多A片视频| 丁香九月综合在线| 色色自拍视频网站| 天天碰夜夜爽| 婷婷亚洲色| 婷婷终合色图| 亚洲熟妇AV综合网五月丁香伊人| 婷婷狠狠操| 国产69久久久欧美黑人A片| 色玖玖综合| 国产性色蜜乳| 久操大香蕉| 丁香久久激情俄| 国产夫妻操逼内射视频| 性爱久久| 婷婷六月丁香五月图区| 狠狠色综合网| 丁香五月Av| 国产乱人偷精品人妻A片| 色综合九九色综合88| 六月天丁婷婷| 亚洲无码99| 日韩超碰在线| 综合久久人妻| 成人国产欧美大片一区| 国产精品人妻欲求不满| 五月丁香五月婷婷在线观看| 亚洲另类电影| 精品在线网站| 丁香婷婷激情五月天无毒不卡蜜桃| 日韩性爱AV| 婷婷五月亚洲激情| aa久久| 日韩国产在线免费观看| 精品免费99| AA片在线观看视频在线播放| 久久曰曰| 色婷婷9| 色涩影院六月丁香| 99热99re6国产在线播放| 精品夜夜澡人妻无码AV| 另类小说五月天| 99re在线视频| 色一情一乱一乱一区9| 六月色丁香中文字幕| 国产精品99久久久久久久女警| 久久婷婷五月天激情新地址| 五月丁香免费视频| 欧美日比视频| 色婷久| 人妖色AV色综合| 成人色五婷婷| 婷婷丁香五月天操逼| www.lingjunshare.com| 99热在线观看| 色婷婷色五月色丁香| JAPANRCEP老熟妇乱子伦视频 | 91久久久久久久久久久| 久久婷婷丁香| 久久婷婷91| 五月婷啪| 婷婷丁香久久| 色五月综合网| 久久久精品人妻| 亭亭玉立国色天香| 日日爽夜夜爽| 人人操Av| 夫妇交换刺激做爰| 69er小视频| 色天使久久综合| 天天做好综合色| 海外网站专业操老外| 九热视频在线精品15| 9l视频自拍九色9l视频自拍九色9l社区| 综合久久综合久久|