亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

嵌入式視角下的MQTT協(xié)議實(shí)戰(zhàn):機(jī)制、落地與避坑指南 做了這么多年嵌入式我越來越覺得物聯(lián)網(wǎng)項(xiàng)目里真正決定體驗(yàn)的往往不是傳感器精度多高、MCU主頻多快而是設(shè)備跟云端之間那根“看不見的線”夠不夠穩(wěn)。而MQTT就是這根線上最常見的載體。今天想跟你好好聊聊這個(gè)協(xié)議——不是泛泛地講概念而是從嵌入式工程師的實(shí)際視角把它拆開揉碎看看里面的機(jī)制到底怎么工作、在真實(shí)項(xiàng)目里怎么落地、又有哪些坑是文檔里不會(huì)寫但現(xiàn)場一定會(huì)踩的。這篇文章適合正在做或準(zhǔn)備做物聯(lián)網(wǎng)設(shè)備端開發(fā)的朋友無論是用ESP32快速原型驗(yàn)證還是在STM32、RTOS環(huán)境下做產(chǎn)品級(jí)固件甚至是在Linux板卡上做網(wǎng)關(guān)都應(yīng)該能從中找到可以直接參考的東西。我會(huì)盡量把協(xié)議機(jī)制、代碼實(shí)現(xiàn)和排障經(jīng)驗(yàn)串在一起講力求讓你讀完能對(duì)MQTT有一個(gè)立體、可落地的認(rèn)識(shí)。1. 為什么物聯(lián)網(wǎng)設(shè)備端幾乎繞不開MQTT先說一個(gè)我從多個(gè)項(xiàng)目里總結(jié)出來的判斷物聯(lián)網(wǎng)通信方案選型本質(zhì)上是帶寬、功耗、實(shí)時(shí)性、可靠性、實(shí)現(xiàn)復(fù)雜度這五個(gè)維度的平衡而MQTT在絕大多數(shù)場景下都能站在一個(gè)非常舒服的位置。1.1 從一份需求說起假設(shè)你現(xiàn)在接手一個(gè)環(huán)境監(jiān)測項(xiàng)目十幾個(gè)節(jié)點(diǎn)分布在廠區(qū)不同角落每個(gè)節(jié)點(diǎn)用STM32采集溫濕度、PM2.5和噪聲數(shù)據(jù)通過4G模塊上云云端要能實(shí)時(shí)展示曲線也要能遠(yuǎn)程下發(fā)控制指令比如打開排風(fēng)扇。最初你可能會(huì)想用HTTP——每個(gè)節(jié)點(diǎn)定時(shí)POST JSON數(shù)據(jù)到服務(wù)器簡單直接。但用一段時(shí)間就會(huì)發(fā)現(xiàn)幾個(gè)問題節(jié)點(diǎn)多了以后服務(wù)器要維護(hù)大量短連接壓力很大設(shè)備端的網(wǎng)絡(luò)狀態(tài)不穩(wěn)定HTTP請(qǐng)求經(jīng)常超時(shí)數(shù)據(jù)就丟了而且服務(wù)器想主動(dòng)給設(shè)備下發(fā)指令特別別扭要么設(shè)備輪詢要么就得搞長連接或WebSocket工程復(fù)雜度一下子就上去了。換用MQTT之后這些問題會(huì)變得順滑很多。設(shè)備只需要和服務(wù)器維持一個(gè)TCP長連接數(shù)據(jù)通過發(fā)布消息上報(bào)指令通過訂閱主題下發(fā)服務(wù)器不需要知道設(shè)備IP、不需要維護(hù)復(fù)雜路由設(shè)備也不需要公網(wǎng)地址純粹通過主題來解耦。1.2 MQTT的核心設(shè)計(jì)哲學(xué)MQTT全稱是MQ Telemetry Transport最早是1999年由IBM的Andy Stanford-Clark和Arcom的Arlen Nipper為石油管道衛(wèi)星通信場景設(shè)計(jì)的。這個(gè)背景很重要因?yàn)槭凸艿滥欠N環(huán)境帶寬極其有限、鏈路極不可靠、設(shè)備節(jié)點(diǎn)又多所以協(xié)議從誕生那天起就帶著三個(gè)基因極簡報(bào)文、容忍斷線、發(fā)布訂閱。所謂發(fā)布訂閱簡單說就是把消息的發(fā)送方和接收方徹底解耦。設(shè)備A往主題factory/zone1/sensor發(fā)布消息任何訂閱了這個(gè)主題的客戶端不管是云端服務(wù)、手機(jī)App還是另一臺(tái)設(shè)備都能收到這條消息。發(fā)布者不需要知道誰在收訂閱者不需要知道誰在發(fā)Broker代理服務(wù)器在中間做轉(zhuǎn)發(fā)。這種模式對(duì)設(shè)備端極其友好因?yàn)樵O(shè)備端只關(guān)心兩件事連上Broker把消息丟給Broker。剩下的分發(fā)、路由、權(quán)限控制全是Broker的事。1.3 和常見協(xié)議的對(duì)比對(duì)比維度MQTTHTTP/HTTPSCoAPTCP私有協(xié)議傳輸層TCPTCPUDPTCP/UDP報(bào)文開銷最小可到2字節(jié)頭請(qǐng)求頭往往幾百字節(jié)4字節(jié)頭由開發(fā)者定義實(shí)時(shí)下發(fā)支持服務(wù)端可推送不友好需輪詢支持觀察模式支持消息可靠性支持QoS分級(jí)依賴HTTP狀態(tài)碼確認(rèn)報(bào)文需自己設(shè)計(jì)實(shí)現(xiàn)復(fù)雜度低低中高典型場景物聯(lián)網(wǎng)設(shè)備上報(bào)/下發(fā)接口調(diào)用、網(wǎng)頁資源受限的傳感網(wǎng)定制化強(qiáng)但開發(fā)量大拿HTTP做類比你會(huì)更容易理解MQTT的輕量一個(gè)HTTP GET請(qǐng)求光是頭部就可能有幾百字節(jié)而MQTT一個(gè)完整的PUBLISH報(bào)文固定頭加主題加負(fù)載幾十個(gè)字節(jié)就能搞定而且QoS 0場景下連應(yīng)答都不需要。對(duì)于NB-IoT、2G這種按流量計(jì)費(fèi)、帶寬極窄的無線網(wǎng)絡(luò)這個(gè)差距是真實(shí)可見的成本差異。1.4 MQTT在嵌入式學(xué)習(xí)路線中的位置如果你是剛?cè)腴T嵌入式、正糾結(jié)先學(xué)什么我的建議是MCU外設(shè)和RTOS是基本功但通信協(xié)議一定要盡早涉及而MQTT是一個(gè)特別好的切入點(diǎn)。原因很實(shí)在它不需要你懂太多底層網(wǎng)絡(luò)知識(shí)只要有TCP/IP協(xié)議棧比如lwIP、Wiznet硬協(xié)議棧就能在上面跑起來它也不挑硬件一個(gè)ESP8266、一塊STM32加個(gè)串口WiFi模塊幾十行代碼就能把數(shù)據(jù)送到云端更關(guān)鍵的是它的調(diào)試工具鏈非常成熟你可以用MQTTX、mosquitto_sub這種現(xiàn)成工具在PC上模擬全部行為這對(duì)理解“設(shè)備-服務(wù)器-客戶端”三方交互非常有幫助。2. MQTT協(xié)議核心機(jī)制逐層拆解很多初學(xué)者看MQTT覺得頭大是因?yàn)橐簧蟻砭驮M(jìn)報(bào)文格式和回調(diào)函數(shù)里缺少一個(gè)整體框架。我建議你按“連接生命周期”這個(gè)思路去理解怎么建立連接、怎么保證連接活著、怎么傳輸數(shù)據(jù)、怎么保證數(shù)據(jù)不丟、怎么優(yōu)雅地告知?jiǎng)e人自己掛了。把這個(gè)鏈條走通協(xié)議就算吃透了一半。2.1 連接建立CONNECT與CONNACK的細(xì)節(jié)客戶端和Broker建立MQTT會(huì)話第一步是發(fā)送CONNECT報(bào)文。這個(gè)報(bào)文里包含幾個(gè)關(guān)鍵字段ClientID、Clean Session標(biāo)志、Keep Alive心跳周期、Username/Password以及可選的Will遺囑信息。其中ClientID特別值得注意。Broker要求同一時(shí)刻同一ClientID只能有一個(gè)連接存在如果兩個(gè)客戶端用了相同ClientID后連接的會(huì)把先連接的踢掉這在很多項(xiàng)目里是“設(shè)備頻繁掉線”的隱形元兇。設(shè)備重啟后如果固件里生成ClientID的邏輯不穩(wěn)定比如用了隨機(jī)數(shù)每次重連ClientID都變那么Broker上舊的會(huì)話就永遠(yuǎn)得不到清理長期運(yùn)行會(huì)堆積大量殘留會(huì)話消耗服務(wù)器內(nèi)存。建議產(chǎn)品化設(shè)備固件里用芯片唯一ID或MAC地址作為ClientID的一部分比如esp32_a1b2c3d4e5f6。Clean Session標(biāo)志決定了連接是持久會(huì)話還是臨時(shí)會(huì)話。置1表示連接斷開后Broker立即清除該客戶端的會(huì)話狀態(tài)置0表示Broker會(huì)保存客戶端的訂閱關(guān)系和離線期間QoS 1/2的消息等下次同ClientID上線時(shí)再補(bǔ)推。這個(gè)機(jī)制用好了能極大提升設(shè)備斷線重連后的數(shù)據(jù)連續(xù)性但代價(jià)是Broker內(nèi)存消耗增加所以要在產(chǎn)品設(shè)計(jì)階段就決定好會(huì)話策略。2.2 Topic的結(jié)構(gòu)設(shè)計(jì)與通配符規(guī)則Topic是MQTT消息路由的路徑結(jié)構(gòu)上用斜杠分層比如devices/device01/telemetry/temperature。設(shè)計(jì)Topic時(shí)最忌諱的是把設(shè)備唯一標(biāo)識(shí)放在層級(jí)深處這會(huì)讓權(quán)限配置和通配符訂閱變得非常痛苦。MQTT提供了兩種通配符單層和多層#。比如訂閱devices//telemetry/temperature就能收到所有設(shè)備上報(bào)的溫度消息不管中間的設(shè)備ID是什么訂閱devices/#則能收到devices下面所有層級(jí)的消息。上一級(jí)$SYS開頭的是Broker的系統(tǒng)主題用于發(fā)布Broker自身的運(yùn)行狀態(tài)比如客戶端連接數(shù)、消息吞吐量這在運(yùn)維監(jiān)控時(shí)很有用。關(guān)于Topic命名和規(guī)劃幾個(gè)實(shí)操經(jīng)驗(yàn)分享給你層級(jí)不要超過五層否則主題長度會(huì)白白消耗帶寬而且管理起來容易亂把設(shè)備類型放前面devices/{device_id}/telemetry/xxx把具體數(shù)據(jù)類型放后面方便用通配符做批量訂閱發(fā)布權(quán)限和訂閱權(quán)限要分開規(guī)劃設(shè)備端只允許往自己的Topic發(fā)布不允許訂閱別的設(shè)備消息這個(gè)在Broker的ACL里一定要限制住不然后果不堪設(shè)想云端可以訂閱通配符設(shè)備端不要用#去訂閱一堆和自己無關(guān)的消息白白耗流量燒電。2.3 QoS語義及其實(shí)現(xiàn)原理QoSQuality of Service是MQTT里最容易被誤解的部分。它分三個(gè)等級(jí)QoS 0最多一次。消息發(fā)出去了就不管了不管Broker有沒有收到不管接收方有沒有處理。適合傳感器周期上報(bào)這類允許丟數(shù)據(jù)的場景在嵌入式設(shè)備上也是最常用的等級(jí)。QoS 1至少一次。發(fā)送方發(fā)出消息后必須等到Broker返回PUBACK才認(rèn)為發(fā)送完成否則重發(fā)。好處是保證Broker肯定能收到壞處是可能重復(fù)投遞接收方要做冪等處理。QoS 2恰好一次。通過兩輪四次握手PUBLISH-PUBREC-PUBREL-PUBCOMP保證消息既不丟也不重復(fù)代價(jià)是鏈路交互次數(shù)翻倍實(shí)時(shí)性和吞吐都會(huì)受影響。實(shí)際項(xiàng)目中除非是交易類、控制類指令一般很少用QoS 2。這里要糾正一個(gè)常見誤區(qū)QoS不是端到端的而是分段保證的。發(fā)布端與Broker之間是一段Broker與訂閱端之間是另一段。發(fā)布方用QoS 1發(fā)消息Broker可能以QoS 0轉(zhuǎn)給訂閱方這個(gè)在連接配置里是可以分別指定的。所以如果你需要消息到達(dá)最終接收方都有保證兩端的QoS都要配置成相應(yīng)等級(jí)。2.4 Retain、遺囑與Keep Alive三個(gè)“小而美”的設(shè)計(jì)Retain標(biāo)志可能是很多嵌入式工程師最容易忽略的一項(xiàng)。當(dāng)發(fā)布者往主題發(fā)消息時(shí)如果置了RetainBroker會(huì)把這個(gè)消息存為“保留消息”這樣以后任何客戶端訂閱這個(gè)主題都會(huì)立刻收到這條保留消息。這個(gè)特性做狀態(tài)同步特別有用設(shè)備上線后往device/status發(fā)一條Retain消息表示“在線”云端或App后續(xù)訂閱這個(gè)主題不需要等設(shè)備再上報(bào)就知道當(dāng)前狀態(tài)。要注意的是Retain消息會(huì)一直存在如果設(shè)備狀態(tài)變了要用新的Retain消息覆蓋設(shè)備離線要發(fā)一條空負(fù)載的Retain消息把它清掉否則云端讀到的永遠(yuǎn)是過期狀態(tài)。遺囑消息Last Will and Testament則是一個(gè)“善后”設(shè)計(jì)。設(shè)備在建立連接時(shí)帶上一條遺囑指定遺囑主題和遺囑消息內(nèi)容如果之后Broker檢測到設(shè)備異常斷開比如TCP連接超時(shí)、心跳超時(shí)、網(wǎng)絡(luò)無故中斷Broker就會(huì)代替設(shè)備把遺囑消息發(fā)布出去。這樣云端就能立刻感知設(shè)備異常下線而不是等超時(shí)。我在實(shí)際項(xiàng)目里經(jīng)常用device/{id}/status這個(gè)主題配合遺囑設(shè)備正常上線發(fā)布Retain消息“online”異常掉線Broker自動(dòng)發(fā)遺囑“offline”形成一個(gè)非常干凈的生命周期管理閉環(huán)。Keep Alive心跳機(jī)制則是維持連接的“體溫計(jì)”??蛻舳嗽贑ONNECT時(shí)聲明一個(gè)心跳間隔通常30到120秒之后每隔這段時(shí)間就發(fā)一個(gè)PINGREQ報(bào)文給BrokerBroker回PINGRESP。如果Broker在約1.5倍間隔時(shí)間內(nèi)沒收到任何報(bào)文就認(rèn)為連接已死斷開連接并觸發(fā)遺囑消息。這個(gè)機(jī)制對(duì)嵌入式設(shè)備尤其重要因?yàn)楹芏嗲度胧皆O(shè)備走的無線網(wǎng)絡(luò)運(yùn)營商N(yùn)AT超時(shí)一般只有幾分鐘如果沒有心跳?;钸B接會(huì)被網(wǎng)絡(luò)設(shè)備悄悄斷開設(shè)備端還以為連接還活著直到下次發(fā)數(shù)據(jù)才傻眼。3. 嵌入式端實(shí)戰(zhàn)從ESP32到STM32的落地經(jīng)驗(yàn)理解協(xié)議是第一步真正把它跑在受限的嵌入式環(huán)境里會(huì)有一堆工程問題等著你。這一節(jié)我以ESP32和STM32兩個(gè)平臺(tái)為例把從零到能跑通全鏈路的經(jīng)驗(yàn)和代碼片段整理出來。3.1 基于ESP-IDF的MQTT客戶端實(shí)現(xiàn)ESP-IDF自帶的esp-mqtt組件是基于ESP32的lwIP協(xié)議棧封裝的高層API底層用的是mqtt_client.c使用起來非常簡單。但簡單歸簡單有幾個(gè)配置項(xiàng)如果沒搞清楚實(shí)際項(xiàng)目里會(huì)很被動(dòng)。先看一個(gè)最小可用的初始化流程#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內(nèi)部會(huì)自動(dòng)重連這里主要做業(yè)務(wù)上的處理 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); }注意幾個(gè)坑esp_mqtt_client_publish的參數(shù)順序是(client, topic, data, len, qos, retain)len傳0表示自動(dòng)用strlen計(jì)算但如果你發(fā)的數(shù)據(jù)是二進(jìn)制流里面可能帶\0一定要顯式傳長度否則消息會(huì)被截?cái)?session.disable_clean_session true對(duì)應(yīng)Clean Session置0也就是持久會(huì)話。開啟后設(shè)備重連Broker會(huì)記住它的訂閱設(shè)備端就不需要每次重連都重新訂閱一遍但Broker側(cè)會(huì)話內(nèi)存會(huì)增加這個(gè)要根據(jù)實(shí)際設(shè)備量權(quán)衡事件回調(diào)里不要做耗時(shí)操作比如不要直接在里面解析大JSON、跑算法或者寫Flash。標(biāo)準(zhǔn)做法是把數(shù)據(jù)拷貝到隊(duì)列或任務(wù)通知交給其他任務(wù)處理。因?yàn)閑sp-mqtt的事件是跑在它自己的task上下文里的如果阻塞太久TCP接收緩沖會(huì)溢出導(dǎo)致連接質(zhì)量問題。3.2 數(shù)據(jù)序列化JSON與二進(jìn)制怎么選很多新手喜歡把傳感器的所有數(shù)據(jù)拼成一個(gè)很長的JSON字符串一次性發(fā)上云比如{t:25.6,h:58.2,pm25:35.4,noise:62.1,battery:78,rssi:-65}這樣做的好處是云端解析方便各種云平臺(tái)、Node-RED都能直接消費(fèi)。但在嵌入式設(shè)備端要注意幾個(gè)問題第一浮點(diǎn)數(shù)轉(zhuǎn)字符串再打包成JSONMCU上做這個(gè)操作比較吃力尤其是Cortex-M0這種小核跑起來會(huì)有明顯延遲第二JSON字符串越長空中傳輸時(shí)間越長掉線窗口越大功耗也越高。我常用的策略是“雙軌制”日常周期上報(bào)用緊湊二進(jìn)制格式按固定字段順序打包成字節(jié)流云端先根據(jù)設(shè)備類型和協(xié)議版本解析這種格式十幾二十個(gè)字節(jié)就能塞下全部數(shù)據(jù)調(diào)試模式或做產(chǎn)品演示時(shí)才發(fā)JSON方便抓包看內(nèi)容。如果你覺得自研二進(jìn)制格式維護(hù)成本高也可以考慮用CBOR或Protobuf它們?cè)贛CU上有現(xiàn)成庫解析效率和JSON完全不是一個(gè)量級(jí)。還有一點(diǎn)很關(guān)鍵無論用哪種格式都建議在消息里帶一個(gè)單調(diào)遞增的序列號(hào)或時(shí)間戳云端消費(fèi)側(cè)做去重和亂序處理都靠它。我之前遇到過一個(gè)詭異問題設(shè)備上報(bào)的數(shù)據(jù)在云端經(jīng)常出現(xiàn)舊值覆蓋新值的現(xiàn)象查到最后就是網(wǎng)關(guān)轉(zhuǎn)發(fā)消息亂序丟了一個(gè)序號(hào)字段導(dǎo)致下游沒法判序。3.3 STM32 lwIP/串口WiFi模塊的MQTT移植思路如果你用的是STM32且需要通過以太網(wǎng)接入常見的路徑有兩種一是跑帶lwIP的以太網(wǎng)方案比如W5500硬協(xié)議?;騍TM32PHYFreeRTOSlwIP二是用串口WiFi模塊比如ESP8266或Air724MCU通過AT指令驅(qū)動(dòng)。兩種路徑移植MQTT的思路差別很大。先說帶lwIP的情況嵌入式MQTT庫最主流的是Eclipse Paho MQTT Embedded-C它有MQTTClient這個(gè)平臺(tái)無關(guān)的封裝只需要你實(shí)現(xiàn)網(wǎng)絡(luò)層的connect、read、write、disconnect這幾個(gè)函數(shù)就能跑起來。底層可以基于lwIP的socket也可以基于Netconn API。這里提醒一下lwIP默認(rèn)的MEM_SIZE和TCP_SND_BUF/TCP_WND比較保守如果頻繁發(fā)大數(shù)據(jù)包要適當(dāng)調(diào)大這些參數(shù)否則MQTT的send會(huì)被阻塞或返回錯(cuò)誤表現(xiàn)為連接正常但消息發(fā)不出去。再說串口WiFi模塊的方案MCU只把MQTT報(bào)文當(dāng)普通數(shù)據(jù)交給WiFi模塊透傳嗎不能直接這么干因?yàn)锳T模塊的串口透傳模式通常只是裸TCP透傳MQTT報(bào)文本身需要MCU自己構(gòu)造也就是你需要在MCU端實(shí)現(xiàn)MQTT協(xié)議的封包和解包。好在MQTT協(xié)議本身不復(fù)雜一個(gè)狀態(tài)機(jī)加上CRC校驗(yàn)其實(shí)MQTT沒有CRC靠TCP保證就能搞定。如果想省事可以選那種內(nèi)置MQTT協(xié)議的AT固件比如ESP-AT官方固件就支持ATMQTTCONN等命令MCU發(fā)幾條AT指令就能完成連接和發(fā)布代價(jià)是靈活性差一些而且如果固件有bug很難繞過。3.4 斷線重連與低功耗策略物聯(lián)網(wǎng)設(shè)備最大的敵人是“死了還在假裝活著”。設(shè)備端斷線重連不能簡單地“斷了我重連”要有策略。推薦指數(shù)退避方案第一次重連等3秒第二次等6秒第三次12秒最多拉到5分鐘封頂同時(shí)記錄連續(xù)失敗次數(shù)超過一定閾值要主動(dòng)上報(bào)本地錯(cuò)誤狀態(tài)或者進(jìn)入低功耗深睡過一段時(shí)間再起來嘗試而不是無限空轉(zhuǎn)。在ESP-IDF里esp-mqtt自帶reconnect_timeout_ms但對(duì)于需要精細(xì)控制退避策略的場景更適合自己監(jiān)聽MQTT_EVENT_DISCONNECTED在事件里做業(yè)務(wù)決策比如“連續(xù)掉線N次就重啟WiFi”很多時(shí)候比單純靠協(xié)議層重連有效得多。低功耗場景下MQTT最大的矛盾在于長連接需要高頻心跳而高頻心跳會(huì)頻繁喚醒射頻非常耗電。如果設(shè)備電池只能支撐幾個(gè)月卻要保持“實(shí)時(shí)在線”這是個(gè)無解的矛盾除非接受一個(gè)折中設(shè)備平時(shí)處于deep sleep上報(bào)數(shù)據(jù)時(shí)醒來臨時(shí)連接發(fā)完就斷線睡覺。這種模式不走Keep Alive長連接而是“按時(shí)醒來發(fā)完走人”功耗能壓到極低代價(jià)是云端看到設(shè)備的狀態(tài)是“時(shí)隱時(shí)現(xiàn)”不適合需要持續(xù)在線控制的設(shè)備。如果是需要“在線但省電”的場景可以考慮用NB-IoT那種PSM模式或者把心跳周期拉長到幾分鐘同時(shí)配合遺囑消息功耗和實(shí)時(shí)性取一個(gè)中間值。4. 服務(wù)端搭建與調(diào)試工具鏈協(xié)議是雙方的事光有設(shè)備端還不行Broker選型、服務(wù)器部署、調(diào)試工具的使用這些環(huán)節(jié)直接決定開發(fā)效率和生產(chǎn)穩(wěn)定性。4.1 Broker選型Mosquitto還是EMQX輕量測試階段我個(gè)人很推薦Mosquitto。它是Eclipse社區(qū)的老牌開源Broker單機(jī)部署只要一條命令資源占用極小樹莓派上都能跑非常適合開發(fā)環(huán)境快速驗(yàn)證協(xié)議邏輯。但Mosquitto的功能相對(duì)基礎(chǔ)集群、規(guī)則引擎、插件擴(kuò)展這些企業(yè)級(jí)能力比較弱生產(chǎn)環(huán)境設(shè)備量一旦上千單節(jié)點(diǎn)很容易成為瓶頸。EMQX在這幾年是很多物聯(lián)網(wǎng)團(tuán)隊(duì)的選擇它基于Erlang/OTP天生適合高并發(fā)連接幾萬甚至幾十萬連接在一個(gè)節(jié)點(diǎn)上都扛得住而且自帶Web管理控制臺(tái)、規(guī)則引擎、數(shù)據(jù)橋接能直接把消息流轉(zhuǎn)到MySQL、Kafka、InfluxDB這些存儲(chǔ)系統(tǒng)。還有Kepserver這種工業(yè)領(lǐng)域常用的OPC網(wǎng)關(guān)近幾個(gè)版本也提供了MQTT IoT Gateway能把PLC的OPC數(shù)據(jù)直接映射成MQTT主題在工業(yè)物聯(lián)網(wǎng)項(xiàng)目里很常見。選型建議很簡單做原型驗(yàn)證或者設(shè)備量在百級(jí)以內(nèi)用Mosquitto產(chǎn)品化、設(shè)備量千級(jí)以上、需要可視化監(jiān)控和規(guī)則鏈用EMQX省去后續(xù)遷移的痛苦。4.2 Docker快速搭建MQTT服務(wù)器不管選哪種Broker用Docker部署都會(huì)省去很多環(huán)境相關(guā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標(biāo)準(zhǔn)端口8083是WebSocket端口瀏覽器里的MQTT客戶端一般都走這個(gè)8084是WebSocketSSL18083是EMQX自帶管理控制臺(tái)的端口。啟動(dòng)后訪問http://服務(wù)器IP:18083默認(rèn)賬號(hào)admin/public就能看到連接數(shù)、消息流入流出速率這些實(shí)時(shí)指標(biāo)。Mosquitto更簡單不過要注意Docker跑Mosquitto需要掛載配置文件否則默認(rèn)配置不允許遠(yuǎn)程匿名連接docker run -d --name mosquitto \ -p 1883:1883 \ -v /path/to/mosquitto.conf:/mosquitto/config/mosquitto.conf \ eclipse-mosquitto:2一個(gè)能跑起來的最小配置長這樣listener 1883 0.0.0.0 allow_anonymous true persistence true persistence_location /mosquitto/data/生產(chǎn)環(huán)境務(wù)必關(guān)閉allow_anonymous改成賬號(hào)密碼認(rèn)證再疊加啟用TLS否則你的Broker就是一臺(tái)公共廣播站。4.3 MQTT調(diào)試?yán)鱉QTTX與命令行工具調(diào)試MQTT最常見也最好用的桌面工具是MQTTX支持Windows/Mac/Linux界面清爽可以同時(shí)建多個(gè)客戶端連接手動(dòng)指定Topic、QoS、Retain這些標(biāo)志位也可以腳本化自動(dòng)測試。它還能直接模擬遺囑消息這對(duì)驗(yàn)證設(shè)備離線通知邏輯特別有用。比如你想測試“設(shè)備異常斷開后云端的遺囑監(jiān)聽邏輯是否正確”直接在MQTTX里建一個(gè)帶遺囑的連接然后強(qiáng)殺這個(gè)連接看Broker是否發(fā)布了遺囑。命令行場景下Mosquitto自帶的客戶端工具也是神器# 訂閱主題加 -v 選項(xiàng)會(huì)打印消息主題 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這套工具鏈的最大價(jià)值在于它讓你能把“設(shè)備端-云端”和“測試客戶端”分開來查問題。設(shè)備端數(shù)據(jù)上報(bào)不上來先用MQTTX訂閱設(shè)備主題看Broker到底有沒有收到消息如果Broker收到了但云端沒顯示那問題就在云端消費(fèi)側(cè)不要一上來就懷疑設(shè)備固件。4.4 與云平臺(tái)對(duì)接一機(jī)一密與Topic權(quán)限除了自建Broker很多項(xiàng)目會(huì)直接選用阿里云IoT、華為云IoT或騰訊云IoT平臺(tái)。這些平臺(tái)的MQTT接入地址、端口、認(rèn)證方式都有差異但大致流程一致在云端創(chuàng)建產(chǎn)品和設(shè)備拿到設(shè)備三元組ProductKey、DeviceName、DeviceSecret設(shè)備端用三元組計(jì)算簽名拼進(jìn)MQTT的Username和Password字段就能連上。連接時(shí)注意這些云平臺(tái)對(duì)ClientID格式有嚴(yán)格約定通常是DeviceName_安全級(jí)別_時(shí)間戳這種后綴拼錯(cuò)了連不上拼對(duì)了但大小寫出錯(cuò)也連不上細(xì)節(jié)一定要對(duì)著文檔核對(duì)。云平臺(tái)的Topic體系也頗有講究通常分為物模型Topic如/sys/{ProductKey}/{DeviceName}/thing/event/property/post、自定義Topic和數(shù)據(jù)流轉(zhuǎn)Topic。設(shè)備端只能往云端規(guī)定的Topic發(fā)布或訂閱權(quán)限在平臺(tái)側(cè)控制。這些Topic往往比自建Broker的Topic長得多在設(shè)計(jì)設(shè)備固件時(shí)要把Topic存儲(chǔ)的內(nèi)存預(yù)留好我用ESP32時(shí)因?yàn)門opic太長導(dǎo)致發(fā)送緩沖區(qū)不夠出現(xiàn)過發(fā)布接口返回錯(cuò)誤的問題后來把緩沖區(qū)從默認(rèn)的1024調(diào)到2048才解決。5. 常見問題與排障經(jīng)驗(yàn)實(shí)錄最后這部分把我的實(shí)際排障經(jīng)驗(yàn)和高頻問題整理成速查表每一個(gè)都是踩過坑換來的。5.1 高頻故障速查表現(xiàn)象可能原因排查思路與解法設(shè)備連不上Broker端口不通、防火墻攔截、Broker地址配錯(cuò)先本機(jī)用MQTTX測試再在設(shè)備端ping服務(wù)器IP確認(rèn)網(wǎng)絡(luò)層通不通1883被運(yùn)營商封鎖也很常見嘗試改走8883端口TLS能連接但一訂閱就斷開ClientID重復(fù)或被Broker判定為非法訂閱檢查是否有兩個(gè)客戶端用了相同ClientID檢查ACL權(quán)限設(shè)備端沒權(quán)限訂閱某些主題會(huì)被斷開設(shè)備頻繁掉線重連NAT超時(shí)、心跳間隔太長、WiFi信號(hào)差縮短Keep Alive到30秒確認(rèn)設(shè)備端啟用了心跳排查周圍WiFi信道干擾順便看RSSI變化趨勢消息偶爾丟失QoS 0場景下網(wǎng)絡(luò)抖動(dòng)Broker端內(nèi)存溢出對(duì)關(guān)鍵數(shù)據(jù)升到QoS 1設(shè)備端記錄發(fā)送日志檢查Broker日志看是否有連接被強(qiáng)制斷開消息重復(fù)收到使用了QoS 1且接收端沒做冪等消費(fèi)端按消息里的序列號(hào)去重升級(jí)到QoS 2但確認(rèn)你的場景能接受額外網(wǎng)絡(luò)開銷遺囑消息沒觸發(fā)設(shè)備是“優(yōu)雅斷開”而不是異常斷開只有異常斷線才觸發(fā)遺囑如果設(shè)備主動(dòng)調(diào)用disconnectBroker不會(huì)發(fā)遺囑確認(rèn)遺囑主題和QoS配置正確Broker內(nèi)存持續(xù)上漲大量持久的會(huì)話堆積檢查是否大量ClientID變了但Clean Session為0定時(shí)清理殘留會(huì)話限制離線消息大小5.2 一個(gè)典型的“幽靈掉線”排查案例有一次在客戶現(xiàn)場設(shè)備上報(bào)數(shù)據(jù)總是每隔一兩分鐘斷一次然后又重新連上看云端日志全是CONNACK成功和DISCONNECT交替。一開始懷疑是設(shè)備端代碼問題用支持抓包的調(diào)試器盯了好久也沒發(fā)現(xiàn)異常。后來我用MQTTX掛在同一個(gè)Broker上觀察全局連接發(fā)現(xiàn)設(shè)備連接斷開的時(shí)間點(diǎn)很有規(guī)律——幾乎精確地落在每兩分鐘整。這個(gè)規(guī)律立刻讓我想到運(yùn)營商N(yùn)AT超時(shí)很多4G模塊默認(rèn)的心跳是120秒而運(yùn)營商N(yùn)AT的空閑超時(shí)通常也是2到5分鐘。設(shè)備端發(fā)了心跳Broker回了PINGRESP但NAT映射已經(jīng)被回收了下一次心跳就丟了。Broker端一直沒收到后續(xù)報(bào)文就按Keep Alive超時(shí)把連接斷開觸發(fā)重連。而問題更隱蔽的地方在于設(shè)備端的lwIP認(rèn)為TCP連接還是活的因?yàn)闆]收到RST所以不會(huì)主動(dòng)重連直到應(yīng)用層超時(shí)才能感知。解決辦法是雙管齊下把Keep Alive從120秒縮短到30秒同時(shí)在設(shè)備端加了TCP層的心跳檢測和異常重連機(jī)制。從那以后掉線頻率幾乎降到零。這個(gè)案例也側(cè)面說明MQTT的Keep Alive不能簡單照抄配置要結(jié)合自己所處網(wǎng)絡(luò)環(huán)境來定尤其是蜂窩網(wǎng)絡(luò)和跨運(yùn)營商通信心跳間隔寧可小一點(diǎn)。5.3 設(shè)備端資源受限的優(yōu)化心得MCU的Flash和RAM都很珍貴跑MQTT庫之前一定要算清楚開銷。以Paho Embedded-C為例默認(rèn)緩沖區(qū)分配是連接緩沖區(qū)加發(fā)送緩沖區(qū)最大包大小直接決定RAM占用。如果你只需要發(fā)幾十字節(jié)的傳感器數(shù)據(jù)把緩沖區(qū)調(diào)小到256字節(jié)內(nèi)存占用可以省下一大截。但要注意如果Topic本身很長加上固定頭、可變頭、消息體總包大小一旦超過緩沖區(qū)接口就會(huì)返回MQTT_BUFFER_TOO_SMALL錯(cuò)誤。正確的做法是事先估算最壞情況下的報(bào)文大小。我在一個(gè)STM32L4項(xiàng)目里就遇到這個(gè)問題。固件里規(guī)劃了一塊1KB的MQTT發(fā)送緩沖區(qū)結(jié)果設(shè)備端訂閱的主題長度達(dá)到150字節(jié)加上負(fù)載將近300字節(jié)勉強(qiáng)沒問題。但后來在固件里加了OTA升級(jí)包URL上報(bào)功能URL里塞了帶簽名的長連接整條消息奔著1.2KB去了發(fā)布直接失敗。后來我把消息拆分URL拆成多條內(nèi)容塊分批發(fā)才繞過了物理限制。這個(gè)經(jīng)驗(yàn)告訴我做MQTT設(shè)備端開發(fā)時(shí)報(bào)文最大長度是一個(gè)要提前確定的架構(gòu)級(jí)參數(shù)后續(xù)所有功能設(shè)計(jì)都得為它讓路別等到上線了才發(fā)現(xiàn)頂不住。5.4 安全相關(guān)的底線建議如果你做的設(shè)備要過等保、過安全測試或者連接的是公網(wǎng)Broker下面幾條是基礎(chǔ)底線不做到位很容易被攻破生產(chǎn)環(huán)境禁用匿名連接每個(gè)設(shè)備分配獨(dú)立賬號(hào)密碼用一機(jī)一密方式動(dòng)態(tài)生成不要所有設(shè)備用同一個(gè)密碼優(yōu)先使用8883端口TLS加密通信哪怕證書是自簽的也比裸用1883強(qiáng)得多如果MCU性能不夠跑完整TLS握手至少要做設(shè)備端到Broker端的鑒權(quán)并考慮使用更輕量的XAUTH、PSK等方案設(shè)備端不要硬編碼Broker密碼在固件里最好通過產(chǎn)線工具注入到獨(dú)立存儲(chǔ)區(qū)域防止固件逆向后密碼泄露導(dǎo)致整個(gè)Broker被刷Topic劃分時(shí)收和發(fā)的權(quán)限要嚴(yán)格隔離。一個(gè)常規(guī)的權(quán)限配置是設(shè)備能往device/{id}/pub/#發(fā)布只能訂閱device/{id}/sub/#跨設(shè)備訂閱一律拒絕。這些習(xí)慣看似繁瑣但真到出事的時(shí)候就知道了多一道閘就多一份安全。6. 最后分享幾個(gè)個(gè)人習(xí)慣根據(jù)自己的實(shí)際經(jīng)驗(yàn)最后羅列幾條我平時(shí)做MQTT項(xiàng)目時(shí)一定會(huì)遵守的習(xí)慣算是給新入坑的朋友一些參考第一每個(gè)Topic的消息結(jié)構(gòu)一定要寫文檔哪怕不寫正式文檔也要在代碼倉庫里維護(hù)一份Markdown記錄字段類型、單位、取值范圍、版本變更。MQTT項(xiàng)目后期最痛苦的永遠(yuǎn)是消息格式的兼容問題設(shè)備固件不能像App一樣強(qiáng)制升級(jí)格式一旦定了再改是牽一發(fā)動(dòng)全身。第二設(shè)備端固件里把連接狀態(tài)、最后心跳時(shí)間、最后消息收發(fā)時(shí)間記錄下來出了問題先看這個(gè)日志能省大量摸底時(shí)間。我見過太多設(shè)備掛在墻角問現(xiàn)場的人說“剛才還好好的”拿日志一看重連機(jī)制早就失效了。第三新項(xiàng)目上線前做一個(gè)簡單的拔線測試把設(shè)備正常跑起來然后直接插拔網(wǎng)線或者斷電WiFi觀察設(shè)備重連、緩存、消息補(bǔ)償、遺囑觸發(fā)這些行為是否符合預(yù)期。這個(gè)測試聽著簡單但很多看起來很高端的物聯(lián)網(wǎng)項(xiàng)目連這一步都做不好。MQTT作為一個(gè)已經(jīng)存在二十多年的協(xié)議其設(shè)計(jì)簡練而實(shí)用但它終究只是個(gè)傳輸管道真正值錢的是圍繞它建立的一整套端到端系統(tǒng)設(shè)計(jì)能力。希望這篇文章能幫你把這條管道的每個(gè)閥門都看清楚下次做物聯(lián)網(wǎng)項(xiàng)目時(shí)能少走一些彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 欲香欲色综合天天伊人| 大香蕉综合| 91麻豆va国产精品| 国产综合操逼高清| 欧美操逼熟女| 在线人人人人人人精品超| 日韩人妻无码不卡网站| 欧美日本成人一区二区| 国内偷拍精品一区二区| 黑人综合网| 麻豆色99999| 国产精品suv一区| 96AV精品| 加勒比日本在线| 国产免费一区二区三区最新不卡 | 日韩天天本| 天美国产三级传媒| 九九热精品| 岛园激情| 日韩成人人妻网站| 超碰久在线天天做| 亚洲色图伊人网| 亚洲射综合网| 97天天弄| 97在线欧| 麻豆一区二区三区在线看 | 国产成人免费观看在线视频| 色五天伊人| 免费岛国一级片| 中文字幕 一区二区 亚洲无码| 牛黄色久午久| 成人看片网站| 久久草草欧美精品| 国产精品交换一区二区| 亚洲色图超碰在线| 精品夜夜澡人妻无码| 婷婷五月av| 欧美黄色大香蕉一区二区| 精品偷拍13p欧美dodk视频| 国产亚洲欧美每日在线| 天天干天天燥| 日本日皮视频逼| 亚洲欧美经典一区二区| 日韩超碰精品综合| 国产视频小说| 国产高清午夜成人在线观看| 国产精品色哟哟| 超碰这里只有精品| 日韩精品人妻中文字幕不卡乱码| 久久人妻熟女一区二区| 欧美极品美女aaaaaa级黄片| 亚洲日韩精品一区视频在线| 天天日天天爽| 欧美精品久久| 国产精品操| 欧美亚洲自拍另类人妻| 久久久久久久亚洲Av无码| 2019久久久久久久久福利| 日本高清_区二区三区| 久久精品国产亚洲AV无码电影| www.色婷婷色综合| 日本裸体久久色噜噜| 激情情色五月天| 久久久久久综合久久伊人蜜月| 日韩在线电影| 亚洲 自拍偷拍 欧美| 大香蕉丝袜一级片| 性色高清在线| 自拍啪啪视频| 亚洲熟女性高潮久久久| 肉丝网站91| 乳欲人妻办公室奶水| 国产色呦呦| 久久99网站| 亚洲情色1区| 香蕉免费一区二区三区不读| 九九九九精| av一区二区三区四区| 国产精品国产拍高清AV| 中文幕97| 91肉丝| 白嫩国模丰满一二三区| 久久做97| 欧美性爱第一页久久| 人妻精品视频一区二区| 18岁禁 茉莉成人久久| 精品久操| 精品日韩中文在线| 九九热精品免费视频| 国产AV天美传媒一区二区三区 | 欧美一级AAAAAAA| 日本肉体xxxx裸交| 日本中文字幕熟妇| 天天综合网日韩7799| 精品国产乱码久久久久久久久1| 狠狠躁日日躁夜夜躁A| 白丝AV| 香蕉婷婷| 国产超碰在线| 熟妇人妻精品一区二区| 福利色色| 深夜激情| 99视频内射三四| 亚洲综合骚逼| 色在线亚洲视频www| 韩国久久97| 91欧美经典| 九九久久综合| 日曰骚久久精品| 国产1769在线| 人人操人人精品影片| 亚洲av综合色区图片亚洲| 午夜呻吟欧美| 91大神精品长腿在线观看网站| 成人欧美一区二区三区黑人一| 肥佬影院91| 日韩啪啪视频| 九九碰九九爱97超碰| 夜夜嗨一区二区| 97伊人| 激情深爱五月天| 日韩精品人妻中文字幕不卡乱码| 99国产人成精品| 好吊色综合| 久久99黄色卞西瓜| 嗯嗯啊啊啊啊轻点视频| 欧美很很操视频| 99re综合伊人| 狠狠五月天| 丰满人妻一区二区三区免费 | 96久久久精品| 三级片网站在线播放| 国产成人啪一区二区| 熟妇人妻一区二区三在线| 天天操综合网| 欧美色图偷拍另类| 无码最新| 日韩精品亚洲一二三| 99视频在线| 日韩在线观看三级电影| 久久天天躁日日躁狠狠躁| 欧美Ⅴ性爱| 骚女高跟AV在线| 国产成人无码高清| 一本精品日本在线视频精品| 99最新日韩偷拍视频| 亚州AV无码国产精品| 欧美韩日精品99综合| 欧美色婷婷| 精品亚洲| 欧亚日本情色| 好看的91视频| 97亚洲中文| 久久熟女人| 乱伦熟女专区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 91欧美另类| 97人人草| 国产强上视频在线观看| 操逼操逼操| 麻豆国产成人精品| 91大胆欧美| 亚洲精品影视老司机| 91色插| 日欧毛片久久| 97色冈| 美女黄频a美女大全免费皮| 操一操摸一摸| 91精品人妻| 欧美男人亚洲天堂| 91女人的网站| 日韩熟妇二区| 麻豆这里只有精品| 人人爱人人操人人性| 国产在线视频午夜精华在| 九九九九一级| 大香伊人在线一区| 超碰97人妻| 日韩精品三级| 国产人人干| 久久日本熟妇熟色高清| 青娱乐 成人娱乐在线| 嫩草影院在线观看精品| 国产麻豆福利av在线播放| 91天堂网| 少妇熟女一区二区三区| 亚洲精品九九九九九九| 日韩 女同 综合| 亚洲欧美日韩有码| 亚洲精品丝袜| 97网址www| 91原创在线观看| av国产无码| 中文字幕久热视频在线| 夜夜天天噜狠狠爱2021| 国产日韩欧美亚洲精品95| 久久专区| 国产精品久久久久久久久久久久| 青青五月天| 亚洲操操操无码| 超碰在线第一页| 欧美一区二区成人一卡| 超碰98综合网| 国产吹潮女在线观看| 亚洲熟女乱综合一区二区三区| 在线观看一级α片刺激高潮视频| 欧美性爱18观看| 久久成年片色大黄全免费网站| 97亚洲精品超碰| 精品视频久久| 欧洲特黄毛片免费看欧洲毛片| 91天天综合网| 人人模人人看| 无码精品一区二区三区潘金莲| 久久riav中文精品| 爱媛媛久久国产福利| 欧日a| 五月天偷拍| 韩国久久97| 亚洲欲色9532548967一区| 综合色图亚洲欧美| 高清肉丝中文无码| 偷拍亚洲情色| 亚洲妇色| 五月婷婷性爱| 91人妻爽爽人人做人人澡| 99精品久久久久久| 国语精品内射在线观看| 亚洲成A∨人影院在线欢看| 乱伦熟女区| 啊啊啊好舒服视频| 亚洲色婷婷久久91| 99精品成人免费看| 99re只有精品| 精品无码久久久久久久杏吧| 人人操人人操人人操人人操人人操人人人11.CM | 97精品综合| 亚洲 中文 女同| 中文字幕日韩人妻视频一区二区三区交换夫妻| 国产精品久久久久久久久久二区三区| 91白虎| 欧美福利视频啊啊啊啊| 天天干,天天日| 亚洲在线欧美| 白丝AV| 亚洲丝袜诱惑| 做爱A级亚欧| 天天看,天天做| 97在线视频观看| 美女久久久久久久| 老熟女综合网| 99老司机精品视频在线观看| 人人插人人搞人人操| 欧美老熟另类| 精品久久久久成人码免| a亚洲欧美色欲| 啊啊啊好疼| 性91| 亚洲精品国产精品乱码不99| 久久久久久久久九九久孕交| 91综合网在线| 人人扣人人操| 国产精品久久久久久9999| 美女诱惑一区| 久久这里只精品99re66图| 天天做天天爱天天爽AV| 青青五月天| 在线综合色| 亚州成人A√| 国内精品久9| 国产精品ⅴ无码大片在线看.| 丁香激情网| AV色五月天| 国产丝袜欧美在线视频| 在线女人91| 久热这里只有精品9| 亚洲免费成人在线高清无码视频 | 神马久久中文字幕| 日韩无码一区二区三区| 色综合色欲色综合色综合色综合| 亚洲91大片| 国产综合色精品在线观看| 92福利社视频| 精品久| 久久国产视频性吧| 97亚洲中文| 超碰人人在线| 亚州欧美在线| 另类小说五月天| 日本布卡一区二三区| 久久亚洲AV无码专区首页| 最新亚洲风情电影| 国产精品ⅴ无码大片在线看.| 91蜜臀熟女| 亚洲欧美999| 艳美熟妇先锋一二三区| 翔田千里无码一区| 精品久久久不卡一区二区| 男女日B国产| 久久久9品一区二区三区| 超碰97丝袜| 91亚洲黑人| 秋霞Av理论一级在线| 欧美大香蕉卡久久| 13小男生GAY自慰脱裤子| 中文字幕一区二区三区蜜臀| 欧美日韩啪啪电影| 色www精品视频在线观看| 老熟女乱伦一区| 欧美激情片一区二区| 日韩成人私密一级精品av| 欧美天堂日韩三级国产传媒| 国产操伦| 超碰吊日色| 91国产精品在线看| 91社操逼| 久久国产精品m码| 天天综合亚在线| 亚洲最新Av| 色老牛| 欧美一级做a爰片免费视频| 清纯唯美亚洲另类| 精品十三区| 午夜欧美女人操逼| 国产精品久久aV| 99热18这里只有精品| 亚洲激情AV| 大学生美女口爆| 一级黄碟在线看| 日日夜夜干| 色哟哟综合| 台湾佬中文娱乐网久久久久久久久久com| 99色热| 国产精品成久久久久午夜午夜| 日韩精品人妻中文字有码在线 | 午夜福利在线视频1000| 啊v视频在线观看| 无码一区免费在线不卡| 久久精品99| 嗯嗯啊啊啊好舒服| 国产亚洲国产超碰| 国产对白刺激视频| 欧美天天射| 男女性扦B| 国产欧美日韩女同性恋ww喷水精品| 亚洲图片色图欧美另类| 蜜臀久久99精品久久久久久-DVD原版全| 9精品在线| 天天爽爽爽爽| 色五月综合| 三级色综合| 97色碰| 玖玖资源视频一区二区三区| 欧美情色男人的天堂| 五月激情啪啪| 高清国产av无码| 美国精品国产精品| 天天看天天干| 欧美日韩97| 一本色道久久综合狠狠操| 亚洲精品骚逼| juliaann精品熟女一区| 九九热精品| 国产女人91精品嗷嗷嗷嗷| 国产人妖的免费的视频| 91福利网在线观看| 亚洲毛片基地专区| 黄色无码高清黄色无码网站| 色综合加勒比| 日本韩高清无砖码22o| 天天综合91入口| 久操影视| 九九人妻| 欧美激情亚洲情色| 我想要啊 啊 啊| 欧美在线干| 天天激色| 一本大道青青| 果冻传媒A片麻豆熟妇人妻| 91女优在线观看| 男人的天堂在线| 日韩少妇在线视频| 美女91色黄18| 精品视频一区二区| 色逼综合| 操婢日韩| 成人八戒网站| 婷婷久久五月| 黄色网址久久精品欧美喷水| 2025亚洲男人天堂| 91嫩草欧美| 黄资源| 久久精品国产精品| 俺去啦自拍| 加勒比aⅴ| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 视频在线中文字幕| 国产一区二区精品久久久不卡蜜臀| 99热线麻豆 | 97免费视频在线| 91久久青青草原精品| 啪啪视频免费在线观看| 色欲无码人妻日韩欧美精品| 日韩人妻无码专区| 视频在线观看一二三区| 欧美A√综合网 | 国产在线观看一区二区三区| 日日操免费视频| 色嗨嗨在线| 日本污ww视频网站| 国产极品999| 欧美在线 亚洲| 麻豆天美在线| 美女操逼A A| 亚洲蜜桃V妇女| 又黄又爽在线观看视频| 日欧毛片久久| 日韩无码人妻| 久久99午夜精品一区人妻| 五月综合久久| 91丨精品丨国产丨丝袜| 亚洲资源站| 97在线视频观看网站| 抽插无码高清一区| 18精品一区| 韩国毛片一区二区三区| 性色AV蜜色av色欲av| 日韩AV无码中文一区二区| 91 刺激在线| 东京热不卡视频| 狠狠爱大香蕉| 久久久久成人亚洲国产| 女同性恋一区二区三区精品视频| 插插综合网天天影视网| 翔田千里AⅤHD无码| 亚洲天堂热| www.AV有限公司一区| 激情欧美97| 色婷婷激一区二区三区| 中文有码第五页| 美女91网| WWW黄片COM| 天天影视射综合网| 激情黄色片在线观看| 欧美日韩99| 91男人天堂网| 熟妇xxxxx性春色| 嗯啊不要在线| 蜜臀99精品国产高清在线观看| 国产日韩精品无码去免费专区国产| 热久久这里只有精品| 亚洲情色综合网| 日韩熟女乱伦中出| 久久111| 蜜臀久久99精品久久久| 婷婷五月天综合网| 熟妇女伦乱视频| 91黑人无码激情在线| 超碰天天操你比| 国产精品嫩草影院午夜两性| 欧美三级一级| 日本孕妇一区二区视频操逼免费看 | 欧美精品成人在线播放| 91美女在线视频| 成年人网站在线免费观看| 日韩av女优在线免费一区| www.久久超碰| 色婷婷成人| 欧美草草高清日韩视频| 六月天婷婷| 高清无码人妻久久久一区二区三区aⅴ| 在线精品福利免费播放| 爱丝福利| 中文字幕成人| 色吧91| 亚洲AV无码| 国产欧美在线观看免费观看| 欧美亚洲第1页| 人人操我人人干| 超碰98综合网| 深田咏美亚洲精品福利社| 桑老女人九区| 天天日天天干天天摸天天操| 两女互慰AV高潮喷水在线观看| 国产精品久久久久久高清无码免费看 | 午夜精品久久久久久久99蜜桃一| 国产91丝袜在线播放蜜月| 亚洲欧美在线观看2021| 91亚洲黄色网| 少妇诱惑视频| AV网站高清无码在线观看| 十八禁电影伊人网| 亚洲黑丝在线| 牛牛操视频逼| 成年人免费观看网站| 色99在线| 国产辣妈在线视频福利| 激情四射熟女丝袜| 亚洲AV免费在线| 久久成年片色大黄全免费网站| 精品九九九九九九九| 在线视频免费播放一区| 久久久91| 新视频sss国产| 99久久久久| 久久久久久久久久久免费精品| 国外91| 天美传媒国产原创中文字幕亚洲欧美另类 | 校园春色综合色| 岛国黄色大片网站| www久久国产精品| 视频黄站| 亚洲色9| 色99视频| 国产精品探花视频| 中文字幕乱碼在线| 五月丁香婷婷啪啪| AV网站高清无码在线观看| 欧美日韩亚洲天堂| 玖玖爱伊人玖玖爱| 97中文字幕色| 色婷婷五月天| 殴美在线AⅤ| 一级性爱视频免费观看| 男女啊啊啊| 亚洲资源网| 亚洲国产综合久久久性感熟妇| 国产精品香蕉热久久新品| 最新无码国产| 精品人妻av区天天看片| 性生活性生大爱77AV国产| av亚洲天堂资源网站| 婷婷五月天丁香| 日韩人成网站在线播放| 亚洲无线码欧洲精品区别| 日韩大香蕉| 国产精品白丝AV| 任你干在线视频| 热久久九九热| 久久欧洲| 久艹伊人精品综合在线| 东京日日夜夜| 亚洲人妻一区二区三区| 超碰碰碰碰| 一区在线国产播放| 十八禁啪啦拍视频无遮挡| 日韩精品免费高清视频在线| 国产极品精品美女视频| 操B视频日韩无码| 蜜桃狠狠色伊人亚洲综合网站| 欧美亚州综合网图片| 乱操9999| 51一区二区三区| 亚洲人人夜夜澡人人爽| 91熟女视频网| 亚洲97资源| 在线洲亚线| 中文字幕一区二区三区四五区| 97欧美久久久久久久| 久湿久久| av草草在线电影| 亚洲国产亚洲天堂| 1204人成网站色www| 亚洲有薄码区久久在线一区| 欧洲一区二区| 嗯嗯不要视频| 国产偷人伦激情在线观看| 国产一国产一级毛片古装| 好吊色青靑草| yw尤物av无码点击进入麻豆| 亚洲中文字幕在线视频一区二区| 亚洲一区中文精品| 国产野战露脸在线播放| 99久久婷婷丁香| 色综合久久88色综合久久天天| 日韩精品视频在线观看一卡二卡| 91精品丝袜在线观看| 伊人99热| 禁止观看美女黄| 国产成人主播| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 强奸国产精品视频| 秋霞免费AV| 99免费视频| 色狠人在线99| 舔人妻中文免费视频| 大香久久| 懂色av色欲av蜜臀av| 激情专区综合| 欧美一级欧美三级在线观看| 欧美日本不卡| 欧美组图日韩亚洲中文字幕| 亚洲精品官网在线观看| 超碰99在线| 97色论| 又黄又硬又粗又长国产视频| 国产精品精品系列在线观看| 26uuu国产成人综合| 91人妻爽爽人人做人人澡| 日韩精品人妻中文字幕久久久| 色777999综合| 影音先锋少妇| 午夜免费视频1000| 欧美大片天天看| 中文字幕后石码四区五区| 久久超碰98| 校园春色AV天堂| xxxx网站亚洲精品| 欧美色图亚州激情| 日韩精品熟妇| 中文色综合| 97干在线视频| 97在线欧| 97这里有精品| 韩国黄片aaaa| 狼人综合婷婷激情四射| 日韩天美| 久久久神马影院| 国产精品不卡一区二区三区av| 黄色视频特级毛片| 欧美视频第二页| 爱爱啊啊啊| 亚洲色综合| 亚州大图综合色图| 亚洲三区视频| 欧美亚洲激情小说| 国产三级片在线观看| 中文字幕 国产区| 亚洲熟久久| 少妇厨房愉情理伦片bd在线观看| 六六久久日韩不卡| 麻豆一区二区AV天美| 不卡一区二区日本视频| 色九九九综合| 中字幕人妻一区二区三区| 亚洲情色第一页| 日韩精品一二三| 99热99色| 欧美九九九九九| 激情婷婷| 成人怡红院| 九九九九久久久| www.男人的天堂| 少妇超碰在线| 欧美超碰97| 99re6久热只有精品6在线直播 | 99久久99久久免费精品蜜臀| 国产精品交换一区二区| 久久啊啊| 亚洲天堂另类小说男人| av毛片aaaaa免费看| 大香蕉 222| 91逼逼女人91| 尤物视频视频官网| 97香蕉人人乳| 黄片色区软件| 熟女熟妇伦久久影院毛片一区二区 | 婷婷中文网| 亚洲综合色在线| 三级片网站在线播放| 国内毛片四区| 美国美女AV在线| 内射夫妻三片| 色天堂在线观看| 日韩不卡av一二三| 欧美97爱| 亚洲一本色码中文字幕| 久久精品国产亚洲AV片多多| 啊啊啊啊无码| 麻豆久久久久久久久丝袜 | 国产黄色剧情影片麻豆免费播放| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 国产超碰| 亚洲色欧美| 超碰98综合网| www.夜夜操| 在线观看亚洲成人精品| 九九九九97| 920日本午夜免费| 99久久精品无码一区二区毛片免费| av东京热男人的天堂| 国产日韩欧美三级片| 一区二区三区国产在线播放| 久久精品夜色国产亚洲AV| 久久婷婷亚洲| 你草精品在线视频| 国产激情在线| PMv在线观看| 亚洲欧美啪啪| 免费农村成人少妇人妻Aa一区二区视频| 草草影院日本第一页| 99九九久久| 操熟女91| 人人色97| 日本男人天堂| 日韩欧美水蜜桃人妻| 亚洲AV成人在线| 亚洲性爱乱操x| 国产日本顶级一区二区三区| 精品国产72| 亚洲成av人片色午夜乱码| 2024年最新色情网站在线观看| 伊人aaa| 91国产精品熟女| 婷婷中文网| 天天视频网站黄| 久久99国产精品| 后入福利| 操死我了嗯嗯嗯| 翘臀vidoes| 中日高清无码操逼视频| 天堂а√在线最新版在线 | 免费一级毛片在线视频观看| 日韩人妻有码免费视频| 91人人| 97国产精选| 麻豆人妻偷人精品无码视频| 麻豆婷婷成人一二三| 天天爱天天韩国日本牛牛牛牛 | 欧美高清在线| 高清肉丝中文无码| 99色婷婷中文字幕乱色| 欧美综合97www| 伊人AAA| 精品久久99| 人妻在线视频| 色乱二区| 人人插人人摸人人| 久久国产热视频97电影| 久久亚洲欧美中文字幕国语| 欧洲黄色网| 百度百度日本操逼| 中文字幕三四区| 最近二区三区视频大全| 国产精品农村妇女| 九九九九九九综合| 999国产精品999久久久久久| 天天碰久久入| 欧日韩一二三f区| 大香蕉性欧美| 高颜值美女口爆高潮浪叫| 亚洲色图欧美色图综合| 一二三四区电影| 久久9免费视频| 99精品综合久久久久五月天| 在线 欧美 亚洲| 狠狠97| 91欧美经典| 久久久四区| 久久久久久网址| 51国产午夜精品视频| 精品美女在线视频| 蜜臀人妻少妇久久在线观看| 伊人久久大香蕉线AV五月天| 日韩美女高潮喷水视频| 精吧天堂| 97久操| 思思热一热婷婷热一热| 青久久| 老司机香蕉| 久一区久久蜜桃| 日本操逼视频在线| 约操熟妇| 天天天天操| 中文字幕精品丝袜| 无码人妻精品一区二区三区九九| 超碰精品人妻狠狠干| 色97欧美| 久久产精品一区二区三区电影| 少妇熟女1区2区3区| 久久直播国产| 激情丁香五月| 欧美色天堂网在线视频| 日韩欧美麻豆| 亚洲无码精品AV久久久| 免费A V在线播放| 91oumei| 天操老女人| 欧美 色 亚洲| 草草影院最新网址| 99热综合| 日韩 成人 有码| 91美女片在线| A片A5445444| 26uuu国产免费观看| 99re6国产精品99re在线| 亚洲熟久久| 亚洲国产97| 国产精品久久久久久久黄无码| 99在线精品视频| 色大香蕉97N| 草草草视频| 色成人Www精品永久观看| 私色综合网| 欧美第二页午夜| 欧美成熟性爱精品| 婷婷大香蕉| 91男人天堂网| 久久性爱视频免费看| 日本肉体xxxx裸交| 黄色区免费观看中文字幕| 天综合网| 怡红院成人视频| 国产高清成人mv在线观看| 毛片视频白嫩| 久久精品超碰| 九月丁香综合网| 少妇同性| 黑人娇小av在线播放| 熟女被操视频网址| 国产精品天干天干综合网麻豆| 亚洲男人天堂网| 色色婷婷丁香| 中文字幕无码不卡啪啪| 国产操逼视频在线观看| 欧美日韩国产中文精品字幕自在自线,| 后入式999| 国产精品免费日韩| 人妻熟女一区二区三区在线| jazzjazz国产精品麻豆| 色婷婷丁香五月| 99久久免费看精品国产一区| av无码av无码专区| 亚洲情色在线| 日欧操屄| 蜜臀人妻少妇久久在线观看| 一级黄色性爱裸体视频| 久久久久久久一级黄色打同平台| 日韩射图| 免费看一级a性色生活片久久无| 97精品久久久久中文字幕| 肏逼福利网站| 国产怡红院| 综合久久少妇中文字幕| 91欧美高清| 九九九九热| 97青青操视频| 日韩欧美大片免费高清啪啪| 亚洲熟女综合| 久久欲| 精品人妻一区二区三区视频| 亚洲熟女性高潮久久久| 裸体美女久久久| www.99中文字幕| 伊人色综合欧美| AV免费在线播放一区| 97爱啪| 97久久视频| 欧美在线啊啊| 97大色网| 日本激情免费大片| 久久熟女嫩草成人片免费| 激情五月婷婷综合| 欧美精品97| 综合网~91综合网| 亚洲国产婷婷在线播放| 亚洲日本天堂| 久久久精品国产亚洲AV无码| 亚洲久9| 欧美天堂日韩三级国产传媒| 青娱乐欧美激情一区二区| 呻吟 欧美 日本 中出| 婷婷五月激情综合| 婷婷超| 亚洲暴力强奸AV| 91精品国产91久久久久久久久久久久| 亚洲成人网站在线观看| 思思久热在线精品66| 久久綜合很很很| 亚洲无码AV九九九| 欧亚日韩一区在线| 一区| 色999亚洲人成色| 久96热在线观看视频| 伊人亚洲综合| 亚洲人妻一区二区三区| 久久精品国产AV一区二区三区| 十八禁一区二区无码观看| 操操啪| www.亚洲黄色| 天美av在线| 天天综合香 ld视频| 亚洲九月丁香| 欧洲在线性爱视频| 偷拍亚洲情色| 中美日韩毛片| 久久五月丁香| 一本大道不卡一二三区| 91色婷婷综合久久中文字幕二区| 亚洲情色图片区| 九九色综合| 一区操逼日比视频| 欧美在线91| 九九人妻| 青青草伊人久久| 丁香五月电影| 99精品视频在线观看免费| 亚洲图片欧美| 啊啊啊轻点在线观看| yazhousetuoumei| 婷婷色综合| 久久夜黄色无码A级大片| 丁香色狠狠色综合久久小说| 青久久| 欧美少妇性乱| 亚洲s在线观看| 色五月激情综合网| 国产日韩在线播放| 亚洲精品尤物yw在线影院| 欧美97爱| 麻豆91熟妇人妻中文字幕茄子| 色www精品视频在线观看| 99999精品视频| 人妻久久久久久久久久久久久久久| 久久九九视频九九视频| CCYY草草影院地址入口| 91搡老女人老妇女老熟女歌词翻译| 亚洲激情深爱文学小说网站| 一区二区视频你懂的| 日韩av三四区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 曰韩成人免费视频| 少妇xx精品| 91精品微拍福利| 丁香婷婷五月| 欧美少妇第一页| 欧美极品少妇交| 五月香婷婷| www.99视频| 99色婷婷| 在线只有精品| 思思热在线观看| 中文字幕成人| 九九这里只有精品| 久久久97| 久久久激情| 狠狠综合网| 熟妇在线视频一区二区| 国产在线76页| 熟妇熟女亚洲天堂网| 超碰超碰95| 麻豆AV一区二区| 成人精品视频一区二区| 大香蕉欧美伊| 国产熟女二区| AV色五月| 少妇大屁屁| 天天做天天爱| A级片日韩欧美国产欧美视频精选观看| 日韩欧美性吧婷婷乱伦大香蕉| 日本在线观看网址| 男女激烈网站最新| 夜夜影视四色| 99色在线| 日韩熟女精品无码专区一区二区| 国产传媒日本欧美专区| 国产白丝在线| 国产精品69久久久久孕妇欧美| 桑老女人九区| 亚州男人天堂| 另类TS人妖一区二区三区 | 黑白配性爱AV成| 天天做天天爱| av在线播放国产一区| 岛国黄色大片网站| 91粉芽高清在线一区二区| 精品久久99| 国产自产22区| 国产久久久久久| 日韩精品在线视频在线观看| 中国一区二区亚洲人妻| 91美女丝袜诱惑视频| 亚洲AV资源| 黑人干亚洲| 久九九九| 日韩欧美中文日韩欧美色| 色婷婷丁香五月天| 欧美熟妇操操视频| 亚欧操逼片在线观看 | 亚洲一区日韩精品中文字幕| 亚洲无吗在线视频| 久操大香蕉手机视频在线看 | 日日狠狠久久偷偷色综合免费| 亚洲最大的黄色电影网站。| 热热色国产一二区AV| 日日骚AV| 99精品成人免费看| 色九九九| 99少妇| 国产欧美精选激情视频| 人妻少妇一区二区| 91美女看B| 日韩无码极品| 亚洲国产欧美中日韩成人综合视频| 久久久啊啊| 97视频一区| 中国国产精品一区视频| 色综合美国| 久久中文字幕女同性恋一区| av亚欧| 九月婷婷综合| 亚洲 欧美 综合 91| 欧美视频一| 丁香五月影院| 国产中文字幕在线观看| 亚洲一区日韩精品| 亚洲天堂区| 骚鸭AV| 国产aⅴ无码片毛片一级网站| 久久久久性熟视频| 精品久9| 综合久久婷婷| 亚洲天天精品| 上海一级黄片| 久久久久久久国产| 欧州一区二区三区四区| 麻豆60秒| 密臀在线一区尤物| 中文字幕av乱伦| 精品少妇人妻| 日本日逼高清| 国产精品熟女九九九| 婷婷久久五月综合激情| 精品超碰中文在线| 老熟乱一区二区三区四区| 久久无码电影| 人妻熟女一区二区| 日日摸夜夜夜夜爽| 91精品婷婷国产综合久久竹菊| 乱性AV| 午夜性| 思思热在线视频在线| 日韩女优在线| 青娱乐淫乱1314| 成人AV素股で擦久久| 亚洲欧美另类激情小说| 日韩情色视频| 2023天天操夜夜操| 欧美天天谢综合网| 国产家庭乱伦表演| 91欧美长吊| 岛国片在线播放| 欧美亚洲se91| 日韩一区二区高清在线观看的| 亚洲熟女乱色一区二区三区久久久| 免费A V在线| 91爱网| 精品人妻少妇| 高清国产av无码| 天天爽夜夜操| 亚洲97超碰| 久久这里都是精品| 午夜男女爽爽爽影院视频| 欧美精品丝袜久久久中文字幕| 美女裸体无遮挡永久免费观看网站| 亚洲s在线观看| 国产福利电影| 亚洲熟女一区| 伊人久久大香大香线蕉中文| 欧美少妇高潮| 另类图片五月| 欧美性爱第一页久久| 欧美中文狠| 综合欧美日本三级| 94色色电影网| 黄总AV色图| 日韩性爱免费视频在线网站| 欧亚 另类 久| 欧美中文字幕男人天堂久久精品| 一中国女人毛片水真多| 99蜜桃臀亚洲成人在线观看| 丁香六月东京热| 久久加勒比| 青青操在线亚洲视频观看欧美在线 | 丁香久久| av一区二区三区不卡| 劲爆欧美人妖三区91| 熟女精品一区二区三区| av一区二区三区不卡| 九九免费影片| 97亚洲性爱| 免费在线观看国内色片网站网址| 91性感在线| 日本淫穴在线| 色婷婷丁香五月| av强奸乱轮| 日韩97P| Aa东京男人的天堂| 校园春色之综合网| 99精品视频在线观看免费| 国产传媒一区二区三区| 日韩精品电影| 久久久久久久一级黄色打同平台| 精品国产91av一区二区三区| 婷婷激情丁香| 超碰这里只有精品| 啊啊啊不要好疼视频| 三级网色| 日本国产亚洲一区在线观看| 亚州色图欧美色图| 天天摸夜夜操视频| 亚洲天堂色图| 亚洲高清无码免费观看视频| 免费看黄片现成| 黄色工厂这里只有精品| 97在线青| 亚洲人在线| 五月天婷婷影院| 久久精品店| 亚洲av无码国产精品字幕| 风韵犹存大大大大香蕉| 天天拍天| 久久色一区二区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧美亚洲天天| 物业黑人 AV一区| 亚洲第一色页夜| 天天日日舔舔| 天天综合精品| 在线播放中文字幕| aaaa黄片| 日韩色| av天堂天堂av日韩| 精品国产91内射久久| 亚洲情色综合| 91美女在线| 亚洲色图欧美色18直播在线| 97超色| 伦理日韩国产久久| 人人爽人人精品乱人伦AV| 夜夜嗷嗷一区二区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 狠狠爱综合网| 国产无套粉嫩白浆在| aⅴ日韩成人电影av在线免费看av大全| 黄色片,com| 激情抓乳插进去啪啪啪日韩| 日本成人免费一区二区三区| 欧美国产精品久久九九| 97在线观看免费视频| 偷拍 亚洲 欧美| 九九九免费视频| 色综合一区二区三区| 永久免费观看的毛片的网站| 亚洲色狠| 亚洲天堂久久久久久粉红视频| 亚洲欧美情色| 丁香色狠狠色综合久久小说| 大肥女高潮bbwbbwhd视频| 97日韩欧美| 操国产逼| 99这里只有精品国产| 国产Aα| 一区二区三区激情在线观看| 国产精品青草综合久久| 噜噜在线| 99自拍B亚洲 | 吊色| 啊啊啊啊无码|