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

ARTICLE DETAIL

資訊詳情

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

ICE流程拆解:candidate屬性詳解與實(shí)戰(zhàn)避坑指南

ICE流程拆解:candidate屬性詳解與實(shí)戰(zhàn)避坑指南 1. 從一次線上事故說(shuō)起為什么 candidate 屬性值得單獨(dú)拎出來(lái)講去年冬天團(tuán)隊(duì)里一個(gè)剛接手 ICE 流程的同學(xué)在聯(lián)調(diào)時(shí)遇到一個(gè)詭異現(xiàn)象兩端明明都拿到了對(duì)方的地址連接卻始終卡在 checking 狀態(tài)日志里看不到任何報(bào)錯(cuò)。排查了大半天最后發(fā)現(xiàn)問(wèn)題出在 candidate 的 foundation 字段上——兩臺(tái)設(shè)備因?yàn)榫W(wǎng)絡(luò)環(huán)境相似生成的 foundation 值撞車了導(dǎo)致 ICE 引擎誤判為同一組候選地址直接跳過(guò)了本該發(fā)起的連通性檢查。這件事讓我意識(shí)到很多人對(duì) ICE 的理解停留在收集候選地址、配對(duì)、檢查連通性這個(gè)粗線條的流程上但真正決定 ICE 能不能跑通、跑得快、跑得穩(wěn)的恰恰是 candidate 屬性這一層的細(xì)節(jié)。標(biāo)題里說(shuō)的ICE 流程1我理解是把 candidate 屬性作為整個(gè) ICE 流程拆解的第一站這個(gè)切入點(diǎn)選得很準(zhǔn)因?yàn)楹竺嫠械呐鋵?duì)、優(yōu)先級(jí)排序、連通性檢查全部建立在 candidate 屬性之上。這篇文章面向的是正在做實(shí)時(shí)音視頻、實(shí)時(shí)通信、P2P 傳輸相關(guān)開(kāi)發(fā)的工程師也適合對(duì)網(wǎng)絡(luò)穿透機(jī)制感興趣、想搞清楚底層原理的技術(shù)人。我會(huì)把 candidate 的每一個(gè)屬性字段拆開(kāi)講清楚它是什么、為什么需要它、實(shí)際生成時(shí)怎么算、踩過(guò)哪些坑。讀完之后你應(yīng)該能獨(dú)立排查大部分跟候選地址相關(guān)的連接問(wèn)題而不是對(duì)著日志干瞪眼。2. candidate 屬性到底是什么先建立整體認(rèn)知2.1 候選地址在 ICE 流程中的位置要理解 candidate 屬性得先知道 candidate 在 ICE 流程里扮演什么角色。ICE 的全稱是 Interactive Connectivity Establishment直譯過(guò)來(lái)就是交互式連接建立。它的核心任務(wù)很簡(jiǎn)單讓兩個(gè)位于不同網(wǎng)絡(luò)環(huán)境下的端點(diǎn)找到一條能互相發(fā)送數(shù)據(jù)的路徑。這個(gè)過(guò)程分幾個(gè)階段。第一階段是收集候選地址每個(gè)端點(diǎn)會(huì)從自己的網(wǎng)卡、系統(tǒng)接口、中繼服務(wù)等地方收集所有可能用于通信的地址每一個(gè)地址就是一個(gè) candidate。第二階段是交換候選地址兩端通過(guò)信令通道把各自的候選列表發(fā)給對(duì)方。第三階段是配對(duì)與連通性檢查把本地的候選和遠(yuǎn)端的候選兩兩組合成 candidate pair逐個(gè)發(fā)送檢查包看哪一對(duì)能通。第四階段是提名與選定從能通的配對(duì)里選出一對(duì)最優(yōu)的作為正式傳輸通道。candidate 屬性貫穿了第一階段到第四階段。收集階段決定了屬性的初始值交換階段把這些屬性原樣傳遞配對(duì)和檢查階段則完全依賴這些屬性來(lái)做優(yōu)先級(jí)排序和去重判斷??梢哉f(shuō)candidate 屬性就是 ICE 流程的身份證每一個(gè)字段都在后續(xù)環(huán)節(jié)里被反復(fù)讀取和使用。2.2 一個(gè) candidate 的完整結(jié)構(gòu)長(zhǎng)什么樣先看一個(gè)典型的 candidate 描述長(zhǎng)什么樣這是從實(shí)際日志里抓出來(lái)的candidate:1 1 UDP 2130706431 192.168.1.100 54321 typ host candidate:2 1 UDP 1694498815 203.0.113.45 12345 typ srflx raddr 192.168.1.100 rport 54321 candidate:3 1 UDP 16777215 198.51.100.20 3478 typ relay raddr 203.0.113.45 rport 12345這三行分別代表了三種典型候選主機(jī)候選、服務(wù)器自反候選、中繼候選。每一行里除了開(kāi)頭的candidate:標(biāo)簽后面跟著一串用空格分隔的字段。這些字段就是我們要重點(diǎn)拆解的 candidate 屬性。從結(jié)構(gòu)上看一個(gè) candidate 由基礎(chǔ)字段和擴(kuò)展字段兩部分組成。基礎(chǔ)字段是每個(gè) candidate 都必須有的包括 foundation、component-id、transport、priority、connection-address、port、candidate-type。擴(kuò)展字段則是可選的根據(jù) candidate 類型不同而不同比如 raddr、rport、tcptype 等。理解這個(gè)結(jié)構(gòu)很重要因?yàn)樵趯?shí)際開(kāi)發(fā)中你經(jīng)常需要手動(dòng)構(gòu)造 candidate 字符串或者在日志里解析這些字段。字段順序是固定的不能隨意調(diào)換否則解析會(huì)出錯(cuò)。我見(jiàn)過(guò)有同學(xué)在拼接 candidate 時(shí)把 priority 和 port 的位置寫反了結(jié)果對(duì)端解析出來(lái)的地址完全錯(cuò)亂排查了很久才發(fā)現(xiàn)是格式問(wèn)題。2.3 為什么這些屬性缺一不可有人可能會(huì)想不就是個(gè) IP 加端口嗎為什么要搞這么多字段這個(gè)問(wèn)題問(wèn)得好答案在于 ICE 要解決的是一個(gè)非常復(fù)雜的工程問(wèn)題在成千上萬(wàn)種網(wǎng)絡(luò)組合下快速找到一條可用的路徑。如果只有 IP 和端口你無(wú)法判斷兩個(gè)候選是不是來(lái)自同一個(gè)網(wǎng)卡去重問(wèn)題無(wú)法決定先檢查哪一對(duì)優(yōu)先級(jí)問(wèn)題無(wú)法知道這個(gè)地址是怎么來(lái)的類型問(wèn)題也無(wú)法處理多網(wǎng)卡、多協(xié)議、多中繼的復(fù)雜場(chǎng)景。每一個(gè)屬性字段都是為了解決一個(gè)具體的工程問(wèn)題而存在的。舉個(gè)例子foundation 字段看起來(lái)只是個(gè)簡(jiǎn)單的字符串但它的作用是讓 ICE 引擎快速識(shí)別這兩個(gè)候選來(lái)自同一個(gè)基礎(chǔ)地址從而避免重復(fù)檢查。如果沒(méi)有 foundationICE 就得逐個(gè)比對(duì) IP、端口、類型效率會(huì)低很多。再比如 priority 字段它是一個(gè) 32 位整數(shù)編碼了候選類型、本地優(yōu)先級(jí)、組件 ID 等多層信息讓排序可以在一個(gè)整數(shù)比較里完成而不是多字段逐一比較。3. 逐個(gè)拆解candidate 核心屬性詳解3.1 foundation候選地址的指紋foundation 是一個(gè)字符串通常是一個(gè)短整數(shù)或者字母數(shù)字組合。它的核心作用是標(biāo)識(shí)一組共享同一基礎(chǔ)地址的候選。什么叫共享同一基礎(chǔ)地址簡(jiǎn)單說(shuō)如果兩個(gè)候選是從同一個(gè)網(wǎng)卡的同一個(gè) IP 上收集來(lái)的只是端口或協(xié)議不同它們的 foundation 就應(yīng)該相同。為什么需要這個(gè)因?yàn)?ICE 在連通性檢查時(shí)如果已經(jīng)檢查過(guò)某個(gè) foundation 的候選對(duì)就不需要再檢查同 foundation 的其他候選對(duì)了。這能大幅減少檢查次數(shù)。想象一下一臺(tái)機(jī)器有 3 個(gè)網(wǎng)卡每個(gè)網(wǎng)卡收集了 UDP 和 TCP 兩種候選那就是 6 個(gè)候選。如果沒(méi)有 foundation 去重兩兩配對(duì)就是 36 對(duì)有了 foundation可能只需要檢查 9 對(duì)。foundation 的生成規(guī)則在不同實(shí)現(xiàn)里略有差異但核心邏輯是一致的把基礎(chǔ) IP、傳輸協(xié)議、候選類型這幾個(gè)因素組合起來(lái)做一個(gè)哈?;蛘咧苯悠唇印FC 5245 里建議的算法是把基礎(chǔ)地址、協(xié)議、候選類型、以及相關(guān)的擴(kuò)展屬性比如 relay 的服務(wù)器地址拼成一個(gè)字符串然后取一個(gè)穩(wěn)定的哈希值。這里有個(gè)坑要注意foundation 必須在整個(gè) ICE 會(huì)話期間保持穩(wěn)定。也就是說(shuō)同一個(gè)候選在多次信令交換中foundation 不能變。我見(jiàn)過(guò)有實(shí)現(xiàn)每次生成 foundation 時(shí)用了隨機(jī)數(shù)導(dǎo)致對(duì)端每次收到的 foundation 都不一樣去重邏輯完全失效檢查次數(shù)暴增連接建立時(shí)間從幾百毫秒漲到了好幾秒。提示如果你在排查連接慢的問(wèn)題先看日志里 foundation 的分布。如果同一個(gè) IP 上的候選 foundation 各不相同大概率是生成邏輯有問(wèn)題。3.2 component-id區(qū)分?jǐn)?shù)據(jù)流通道component-id 是一個(gè)正整數(shù)從 1 開(kāi)始。它用來(lái)標(biāo)識(shí)同一個(gè)候選地址上的不同數(shù)據(jù)流通道。在最早的 ICE 設(shè)計(jì)里component-id 主要服務(wù)于 RTP 和 RTCP 的區(qū)分component-id 為 1 的候選用于傳輸 RTP 媒體流component-id 為 2 的候選用于傳輸 RTCP 控制流。雖然現(xiàn)在很多實(shí)現(xiàn)把 RTP 和 RTCP 復(fù)用在一個(gè)通道上也就是只用一個(gè) component-id但 component-id 這個(gè)字段依然保留著因?yàn)樗诙嗤ǖ缊?chǎng)景下仍然是必要的。比如某些實(shí)時(shí)通信場(chǎng)景需要同時(shí)傳輸音視頻和數(shù)據(jù)可能就會(huì)用到多個(gè) component。component-id 的關(guān)鍵特性是同一個(gè) foundation 下不同 component-id 的候選必須使用不同的端口。這是 ICE 的基本約束因?yàn)橥粋€(gè) IP 加同一個(gè)端口不可能同時(shí)承載兩個(gè)獨(dú)立的通道。如果你在構(gòu)造候選時(shí)違反了這條規(guī)則對(duì)端在配對(duì)時(shí)會(huì)直接丟棄這些候選。實(shí)際開(kāi)發(fā)中component-id 最常見(jiàn)的坑是兩端不一致。比如一端只支持 component-id 1另一端卻發(fā)了 component-id 1 和 2 的候選配對(duì)時(shí) component-id 2 的候選找不到匹配白白浪費(fèi)了檢查資源。所以在信令交換階段最好先協(xié)商好 component 的數(shù)量。3.3 transport傳輸協(xié)議的選擇transport 字段指定了候選使用的傳輸層協(xié)議常見(jiàn)的有 UDP 和 TCP。在實(shí)時(shí)音視頻場(chǎng)景里UDP 是絕對(duì)主力因?yàn)樗难舆t低、抖動(dòng)小適合媒體流傳輸。TCP 通常作為備選用在 UDP 被完全阻斷的網(wǎng)絡(luò)環(huán)境里。UDP 和 TCP 在 ICE 里的行為差異很大。UDP 的連通性檢查就是發(fā)一個(gè)綁定請(qǐng)求收到響應(yīng)就算通。TCP 則復(fù)雜得多因?yàn)?TCP 是面向連接的檢查過(guò)程涉及到握手、連接建立、連接保持等一系列狀態(tài)。而且 TCP 候選還分主動(dòng)和被動(dòng)兩種模式通過(guò) tcptype 擴(kuò)展字段來(lái)標(biāo)識(shí)。tcptype 有三個(gè)取值active、passive、so。active 表示這個(gè)候選會(huì)主動(dòng)發(fā)起 TCP 連接passive 表示它會(huì)等待對(duì)方來(lái)連so 表示可以同時(shí)作為主動(dòng)和被動(dòng)。配對(duì)時(shí)active 必須和 passive 配對(duì)或者 so 和任意一方配對(duì)兩個(gè) active 或兩個(gè) passive 是配不上的。這里有個(gè)實(shí)操經(jīng)驗(yàn)如果你的場(chǎng)景需要 TCP 候選盡量讓一端發(fā) active、另一端發(fā) passive而不是兩端都發(fā) so。因?yàn)?so 雖然靈活但在某些 NAT 環(huán)境下同時(shí)嘗試雙向連接會(huì)導(dǎo)致?tīng)顟B(tài)混亂反而降低成功率。3.4 priority決定檢查順序的核心字段priority 是整個(gè) candidate 屬性里最復(fù)雜、也最關(guān)鍵的字段。它是一個(gè) 32 位無(wú)符號(hào)整數(shù)取值范圍從 0 到 4294967295。ICE 引擎會(huì)按照 priority 從高到低排序候選對(duì)優(yōu)先檢查高優(yōu)先級(jí)的配對(duì)。priority 的計(jì)算公式在 RFC 5245 里有明確定義priority (2^24) * type_pref (2^8) * local_pref (2^0) * (256 - component_id)這個(gè)公式把三種信息編碼進(jìn)了一個(gè)整數(shù)。type_pref 是候選類型的偏好值host 類型最高srflx 次之relay 最低。local_pref 是本地優(yōu)先級(jí)通常根據(jù)網(wǎng)卡的重要程度來(lái)設(shè)置比如有線網(wǎng)卡比無(wú)線網(wǎng)卡高。component_id 則通過(guò)256 - component_id的方式反向編碼讓 component-id 小的候選優(yōu)先級(jí)略高。具體數(shù)值上host 的 type_pref 通常是 126srflx 是 100relay 是 0。這樣算下來(lái)host 候選的 priority 大約在 2130706431 左右srflx 在 1694498815 左右relay 在 16777215 左右。這個(gè)差距非常大確保了 host 候選永遠(yuǎn)優(yōu)先于 srflxsrflx 永遠(yuǎn)優(yōu)先于 relay。為什么這么設(shè)計(jì)因?yàn)?host 候選是直連延遲最低、帶寬最大、最可靠srflx 需要經(jīng)過(guò) NAT 映射多了一跳relay 要經(jīng)過(guò)中繼服務(wù)器延遲最高、成本也最高。ICE 的設(shè)計(jì)哲學(xué)就是能直連就直連直連不行再中繼priority 就是這個(gè)哲學(xué)的數(shù)值化體現(xiàn)。注意priority 是本地生成的但交換后對(duì)端會(huì)原樣使用。也就是說(shuō)你生成的 priority 會(huì)影響對(duì)端的檢查順序。所以不要隨意設(shè)置 priority要按照標(biāo)準(zhǔn)公式來(lái)算否則可能導(dǎo)致連接建立變慢。3.5 connection-address 和 port實(shí)際的通信端點(diǎn)connection-address 就是候選的 IP 地址port 就是端口號(hào)。這兩個(gè)字段看起來(lái)最簡(jiǎn)單但實(shí)際踩坑最多。先說(shuō) IP 地址。在 IPv4 環(huán)境下就是點(diǎn)分十進(jìn)制的形式比如 192.168.1.100。在 IPv6 環(huán)境下是冒號(hào)分隔的十六進(jìn)制形式。這里有個(gè)細(xì)節(jié)IPv6 地址在 candidate 字符串里通常不帶方括號(hào)直接寫地址本身。但如果在其他上下文里引用可能需要加方括號(hào)來(lái)區(qū)分端口。再說(shuō)端口。端口號(hào)的范圍是 1 到 65535但實(shí)際可用的端口受操作系統(tǒng)限制。在 Linux 上1024 以下的端口需要 root 權(quán)限所以 ICE 候選通常使用 1024 以上的端口。另外很多企業(yè)防火墻會(huì)限制某些端口范圍如果你的候選端口恰好落在被封鎖的范圍里連通性檢查就會(huì)失敗。這里有個(gè)實(shí)操技巧在收集候選時(shí)盡量多收集幾個(gè)端口。因?yàn)槟承?NAT 設(shè)備會(huì)對(duì)不同端口做不同的映射策略多試幾個(gè)端口能提高穿透成功率。我見(jiàn)過(guò)一個(gè)案例某運(yùn)營(yíng)商的 NAT 對(duì) 50000 以上的端口映射很穩(wěn)定但對(duì) 30000 以下的端口映射經(jīng)常失敗多收集端口后成功率從 60% 提升到了 95%。3.6 candidate-type候選的來(lái)源分類candidate-type 標(biāo)識(shí)了候選的來(lái)源常見(jiàn)的有四種host、srflx、prflx、relay。host 是主機(jī)候選直接從本地網(wǎng)卡上收集到的地址。這是最原始的候選沒(méi)有經(jīng)過(guò)任何 NAT 映射或中繼。在局域網(wǎng)內(nèi)host 候選通常能直接連通。srflx 是服務(wù)器自反候選通過(guò) STUN 服務(wù)器獲取。端向 STUN 服務(wù)器發(fā)送請(qǐng)求服務(wù)器返回它看到的源地址這個(gè)地址就是端在 NAT 上的公網(wǎng)映射地址。srflx 候選能穿透大部分 NAT是公網(wǎng)通信的主力。prflx 是對(duì)等自反候選不是在收集階段生成的而是在連通性檢查過(guò)程中發(fā)現(xiàn)的。當(dāng)端收到一個(gè)來(lái)自未知地址的檢查請(qǐng)求時(shí)會(huì)把那個(gè)地址作為一個(gè) prflx 候選加入列表。prflx 主要用于處理 NAT 映射變化的情況比如對(duì)稱 NAT 下不同目標(biāo)的映射端口不同prflx 能捕捉到這種變化。relay 是中繼候選通過(guò) TURN 服務(wù)器分配。端向 TURN 服務(wù)器申請(qǐng)一個(gè)中繼地址所有數(shù)據(jù)都通過(guò)這個(gè)地址轉(zhuǎn)發(fā)。relay 的延遲最高、成本最大但穿透能力最強(qiáng)幾乎能應(yīng)對(duì)所有網(wǎng)絡(luò)環(huán)境。ICE 的原則是最后才用 relay所以 relay 的 priority 最低。這四種類型的優(yōu)先級(jí)順序是host srflx prflx relay。實(shí)際實(shí)現(xiàn)里prflx 的優(yōu)先級(jí)通常和 srflx 相當(dāng)或略低因?yàn)樗彩枪W(wǎng)地址只是發(fā)現(xiàn)方式不同。3.7 擴(kuò)展字段raddr、rport 與 tcptype除了基礎(chǔ)字段candidate 還可以帶一些擴(kuò)展字段用來(lái)補(bǔ)充描述候選的來(lái)源信息。raddr 是 related address表示這個(gè)候選的相關(guān)地址。對(duì)于 srflx 候選raddr 是本地的主機(jī)地址也就是 NAT 映射前的地址。對(duì)于 relay 候選raddr 是中繼服務(wù)器看到的端的地址。rport 則是相關(guān)的端口。這兩個(gè)字段的主要作用是診斷和優(yōu)化。比如在排查 NAT 類型時(shí)對(duì)比 raddr 和 connection-address 就能看出 NAT 做了什么樣的映射。如果 raddr 相同但 connection-address 不同說(shuō)明是對(duì)稱 NAT如果 raddr 和 connection-address 的端口也相同說(shuō)明是錐形 NAT。tcptype 是 TCP 候選特有的擴(kuò)展字段取值 active、passive、so。前面講 transport 時(shí)已經(jīng)提過(guò)這里補(bǔ)充一點(diǎn)tcptype 只在 transport 為 TCP 時(shí)出現(xiàn)UDP 候選沒(méi)有這個(gè)字段。如果你在解析 candidate 時(shí)看到 UDP 候選帶了 tcptype那肯定是格式錯(cuò)誤。4. 實(shí)操生成、解析與調(diào)試 candidate4.1 手動(dòng)構(gòu)造一個(gè)合法的 candidate 字符串理解了各個(gè)字段的含義現(xiàn)在來(lái)實(shí)際構(gòu)造一個(gè) candidate。假設(shè)我們要構(gòu)造一個(gè) host 類型的 UDP 候選IP 是 192.168.1.100端口 54321component-id 為 1。先算 priority。type_pref 取 126local_pref 取 65535最大值component_id 為 1priority (2^24) * 126 (2^8) * 65535 (256 - 1) 16777216 * 126 256 * 65535 255 2113929216 16776960 255 2130706431然后 foundation 可以取一個(gè)基于 IP 和類型的哈希值這里簡(jiǎn)化為 1。最終字符串是candidate:1 1 UDP 2130706431 192.168.1.100 54321 typ host再構(gòu)造一個(gè) srflx 候選公網(wǎng)地址是 203.0.113.45端口 12345相關(guān)地址是 192.168.1.100:54321candidate:2 1 UDP 1694498815 203.0.113.45 12345 typ srflx raddr 192.168.1.100 rport 54321注意字段順序foundation、component-id、transport、priority、connection-address、port、typ、candidate-type然后是擴(kuò)展字段。這個(gè)順序不能亂解析器是按位置讀取的。4.2 從日志里解析 candidate 的實(shí)用方法實(shí)際調(diào)試時(shí)你拿到的往往是一大串 candidate 字符串需要快速提取關(guān)鍵信息。用正則表達(dá)式是最方便的方式。下面這個(gè) Python 片段可以解析標(biāo)準(zhǔn)格式的 candidateimport re def parse_candidate(line): pattern rcandidate:(\S) (\d) (\S) (\d) (\S) (\d) typ (\S)(.*) match re.match(pattern, line.strip()) if not match: return None foundation, component_id, transport, priority, addr, port, ctype, ext match.groups() result { foundation: foundation, component_id: int(component_id), transport: transport, priority: int(priority), address: addr, port: int(port), type: ctype, } # 解析擴(kuò)展字段 for kv in ext.strip().split(): if kv in (raddr, rport, tcptype): result[kv] True ext_parts ext.strip().split() for i in range(0, len(ext_parts) - 1, 2): result[ext_parts[i]] ext_parts[i 1] return result這個(gè)解析器能處理大部分標(biāo)準(zhǔn)格式的 candidate。實(shí)際使用時(shí)你可能需要根據(jù)具體實(shí)現(xiàn)的格式做微調(diào)比如有些實(shí)現(xiàn)會(huì)在 candidate 前面加a前綴這是 SDP 格式解析前先去掉即可。4.3 用 priority 排序驗(yàn)證候選質(zhì)量拿到候選列表后第一件事是按 priority 排序看看高優(yōu)先級(jí)的候選是不是符合預(yù)期。正常情況下host 候選應(yīng)該排在最前面然后是 srflx最后是 relay。如果發(fā)現(xiàn) relay 候選的 priority 比 srflx 還高那說(shuō)明 priority 計(jì)算有問(wèn)題。常見(jiàn)原因是 type_pref 設(shè)置錯(cuò)了比如把 relay 的 type_pref 設(shè)成了 100 而不是 0。這種錯(cuò)誤會(huì)導(dǎo)致 ICE 優(yōu)先嘗試中繼路徑連接延遲大幅增加。另一個(gè)檢查點(diǎn)是同一類型候選之間的排序。比如有兩個(gè) host 候選一個(gè)來(lái)自有線網(wǎng)卡一個(gè)來(lái)自無(wú)線網(wǎng)卡有線網(wǎng)卡的 local_pref 應(yīng)該更高priority 也應(yīng)該更高。如果排序反了ICE 會(huì)優(yōu)先嘗試無(wú)線網(wǎng)卡可能帶來(lái)不必要的延遲和抖動(dòng)。4.4 連通性檢查失敗的排查思路連通性檢查失敗是最常見(jiàn)的問(wèn)題表現(xiàn)是 candidate pair 一直處于 waiting 或 in-progress 狀態(tài)最終超時(shí)。排查時(shí)按以下順序檢查第一看候選是否真的交換成功了。有時(shí)候信令通道有問(wèn)題對(duì)端根本沒(méi)收到候選列表或者收到的列表是空的。檢查信令日志確認(rèn)雙方都發(fā)送和接收了 candidate。第二看 foundation 是否有重復(fù)。如果兩個(gè)不同的候選 foundation 相同ICE 會(huì)認(rèn)為它們是同一組可能跳過(guò)必要的檢查。檢查 foundation 的生成邏輯確保不同基礎(chǔ)地址的候選 foundation 不同。第三看端口是否被防火墻阻斷。用 telnet 或 nc 命令測(cè)試候選的 IP 和端口是否可達(dá)。如果不可達(dá)說(shuō)明中間有防火墻或 NAT 設(shè)備阻斷了流量。第四看 transport 是否匹配。如果一端只發(fā) UDP 候選另一端只發(fā) TCP 候選那永遠(yuǎn)配不上對(duì)。檢查雙方的 transport 配置確保至少有一種共同的協(xié)議。第五看 component-id 是否一致。前面提過(guò)component-id 不匹配的候選無(wú)法配對(duì)。檢查雙方的 component 配置。5. 常見(jiàn)問(wèn)題速查與避坑經(jīng)驗(yàn)5.1 candidate 屬性相關(guān)的高頻問(wèn)題下面這張表整理了實(shí)際開(kāi)發(fā)中最常遇到的 candidate 屬性問(wèn)題以及對(duì)應(yīng)的排查方向問(wèn)題現(xiàn)象可能原因排查方向連接卡在 checkingfoundation 重復(fù)導(dǎo)致去重錯(cuò)誤檢查 foundation 生成邏輯連接建立慢priority 排序錯(cuò)誤先檢查了低優(yōu)先級(jí)候選驗(yàn)證 priority 計(jì)算公式部分候選被丟棄component-id 或 transport 不匹配檢查雙方配置一致性srflx 候選缺失STUN 服務(wù)器不可達(dá)或返回錯(cuò)誤測(cè)試 STUN 服務(wù)器連通性relay 候選無(wú)法使用TURN 服務(wù)器認(rèn)證失敗或配額不足檢查 TURN 憑證和配額IPv6 候選解析失敗地址格式不正確確認(rèn) IPv6 地址不帶方括號(hào)TCP 候選配不上對(duì)tcptype 組合不合法確保 active 配 passive5.2 三個(gè)我踩過(guò)的坑第一個(gè)坑foundation 用了隨機(jī)數(shù)。前面提過(guò)某次實(shí)現(xiàn)里 foundation 每次生成都不同導(dǎo)致對(duì)端每次收到的 foundation 都不一樣去重完全失效。表現(xiàn)是連接建立時(shí)間從 300 毫秒漲到了 5 秒以上。修復(fù)方法很簡(jiǎn)單把 foundation 改成基于基礎(chǔ)地址的確定性哈希。第二個(gè)坑priority 的 local_pref 設(shè)成了 0。有一次為了簡(jiǎn)化把 local_pref 統(tǒng)一設(shè)成了 0結(jié)果所有同類型候選的 priority 都一樣ICE 無(wú)法區(qū)分有線網(wǎng)卡和無(wú)線網(wǎng)卡隨機(jī)選擇路徑。表現(xiàn)是連接質(zhì)量不穩(wěn)定有時(shí)延遲很低有時(shí)抖動(dòng)很大。修復(fù)方法是根據(jù)網(wǎng)卡類型設(shè)置不同的 local_pref。第三個(gè)坑raddr 和 rport 填反了。在構(gòu)造 srflx 候選時(shí)把 raddr 和 rport 的位置寫反了導(dǎo)致對(duì)端解析出來(lái)的相關(guān)地址完全錯(cuò)誤。雖然不影響連通性檢查因?yàn)闄z查用的是 connection-address 和 port但在診斷 NAT 類型時(shí)得到了錯(cuò)誤結(jié)論。修復(fù)方法是嚴(yán)格按照字段順序拼接。5.3 一個(gè)容易被忽略的細(xì)節(jié)候選的生存時(shí)間candidate 不是永久有效的。每個(gè)候選都有一個(gè)生存時(shí)間超過(guò)這個(gè)時(shí)間后候選會(huì)被標(biāo)記為失效不再參與連通性檢查。生存時(shí)間的長(zhǎng)度取決于候選類型host 候選通常很長(zhǎng)因?yàn)楸镜氐刂凡粫?huì)變srflx 候選取決于 NAT 映射的保持時(shí)間通常幾十秒到幾分鐘relay 候選取決于 TURN 服務(wù)器的分配策略通常幾分鐘到幾十分鐘。實(shí)際開(kāi)發(fā)中如果 ICE 會(huì)話持續(xù)時(shí)間很長(zhǎng)需要定期刷新候選否則可能出現(xiàn)連接突然中斷的問(wèn)題。刷新方式是重新收集候選并交換或者通過(guò) STUN 綁定請(qǐng)求保持 NAT 映射。我見(jiàn)過(guò)一個(gè)案例某應(yīng)用在通話 10 分鐘后突然斷線排查發(fā)現(xiàn)是 srflx 候選的 NAT 映射過(guò)期了而應(yīng)用沒(méi)有及時(shí)刷新。提示如果你的應(yīng)用需要長(zhǎng)時(shí)間保持連接建議在 ICE 配置里設(shè)置候選刷新間隔通常取 NAT 映射保持時(shí)間的一半比較穩(wěn)妥。6. 從 candidate 屬性看 ICE 的設(shè)計(jì)哲學(xué)把 candidate 屬性全部拆完回頭再看 ICE 的整個(gè)設(shè)計(jì)會(huì)發(fā)現(xiàn)一個(gè)很清晰的思路用豐富的元數(shù)據(jù)換取決策效率。每一個(gè)屬性字段都是為了在某個(gè)環(huán)節(jié)減少計(jì)算量或提高準(zhǔn)確性。foundation 用于快速去重priority 用于快速排序candidate-type 用于快速分類raddr 用于快速診斷。這些字段在收集階段一次性生成之后在整個(gè) ICE 流程里被反復(fù)使用避免了重復(fù)計(jì)算。這種設(shè)計(jì)思路在實(shí)際工程里很有借鑒意義。很多系統(tǒng)在設(shè)計(jì)時(shí)喜歡按需計(jì)算用到什么算什么但 ICE 選擇了提前計(jì)算、冗余存儲(chǔ)的路子。代價(jià)是候選字符串變長(zhǎng)了交換的數(shù)據(jù)量變大了但換來(lái)的是檢查階段的高效和穩(wěn)定。在實(shí)時(shí)通信這種對(duì)延遲極度敏感的場(chǎng)景里這個(gè)取舍是值得的。另一個(gè)值得注意的點(diǎn)是 ICE 對(duì)漸進(jìn)式降級(jí)的支持。host 不行用 srflxsrflx 不行用 relay每一層都有對(duì)應(yīng)的候選類型和優(yōu)先級(jí)。這種設(shè)計(jì)讓 ICE 能在各種網(wǎng)絡(luò)環(huán)境下工作從最簡(jiǎn)單的局域網(wǎng)到最復(fù)雜的多層 NAT都能找到一條可用的路徑。candidate 屬性里的 type_pref 和 priority 就是這個(gè)降級(jí)策略的數(shù)值化表達(dá)。我在實(shí)際項(xiàng)目里體會(huì)最深的一點(diǎn)是不要試圖繞過(guò)標(biāo)準(zhǔn)去優(yōu)化 candidate 屬性。曾經(jīng)有團(tuán)隊(duì)為了減少候選數(shù)量手動(dòng)過(guò)濾掉了所有 relay 候選結(jié)果在部分嚴(yán)格 NAT 環(huán)境下完全連不上。也有團(tuán)隊(duì)為了提高優(yōu)先級(jí)把 relay 的 type_pref 調(diào)高結(jié)果正常網(wǎng)絡(luò)下也走了中繼延遲翻倍。標(biāo)準(zhǔn)里的每一個(gè)數(shù)值都是經(jīng)過(guò)大量實(shí)踐驗(yàn)證的除非你有非常明確的理由和充分的測(cè)試否則老老實(shí)實(shí)按標(biāo)準(zhǔn)來(lái)。最后分享一個(gè)小技巧在調(diào)試 ICE 問(wèn)題時(shí)把雙方的 candidate 列表按 priority 排序后并排打印出來(lái)一眼就能看出配對(duì)的可能性。高優(yōu)先級(jí)的 host 對(duì) host 如果能配上連接就是最優(yōu)的如果只能靠 relay 對(duì) relay那就要考慮網(wǎng)絡(luò)環(huán)境是不是太苛刻了。這個(gè)簡(jiǎn)單的對(duì)比方法幫我快速定位過(guò)很多次連接質(zhì)量問(wèn)題。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美综合加勒比在线| 日韩一级特黄av毛片| 九热大香蕉| 高清国产av无码| 午夜国产成人精品视频| 成人青青草原伊人| 久久日本熟女精品一区| 99热99re超碰精品| 男人把坤坤插入女人的下体| 一区黄二区黄| 99热这里是精品| 国产AV精久久| 丁香五月社区| 狠狠操狠狠| 午夜爽爽爽在线观看永久入口姬片| 午夜爽爽爽| 国产欧美黑人丰满在线| 97超碰人操| 啊啊啊啊啊啊啊好爽不要| 九九无码久久精品视频| 五月婷婷六月丁香| 天天色悠悠激情| 这里只有精品视频| 伊人久久亚洲中文字幕| 日本少妇va7777| 国产按摩一区二区三区| 操少妇很爽av| 91狠| 久久这里都是精品| 青青草手机在线免费观看| 中日韩久久人妻一区二区| 亚洲中文制服诱惑| 少妇500双飞99| 牛牛久久国产精品视频一二三 | 久草线上视频免费看| 久久综合精品一区二区三区| 国产精品久久泡妞网站| 欧美美逼| 精品一区二区三区麻豆| 蜜臀在线视频| 欧美不卡五十路| av黄图片在线观看| 中文字幕丝袜国产第一页不卡| 大香蕉免费3| 国产精品免费1区2区视频| 亚洲无码偷拍| 中文字幕精品一区欧美| 自拍偷拍 高清无码| 亚瑟国产精品久久无码| 男人a天堂手机在线版| 干婷婷综合网| 蜜桃视频一区二区三区在线观看| 动漫av中文| 肥佬影院91| 大色综合| 久久99精品视频| 激情四射五月天| 97视频观看| 超碰激情808| 欧美猛交黑寡妇中文字幕| 亚洲精品一区二区免费在线观看| 亚洲女人毛茸茸91| 日韩啪啪视频| 伊人久久在线视频观看| 色香色香欲天天天影视综合网| 97人肏| 熟女欧美日韩综合婷婷| 密臀视频三区免费网站| 亚洲免费成人精品电影| 亚洲不卡AV在线| 久久国产精品熟女人妻| 欧美中文综合| 亚洲超碰AV| 天堂网亚洲区手机版| 亚洲欧美首页| 精品一二三区久久AAA片| 色色99| 熟妇熟女一区二三区| 日本五十路在线| 欧美少妇高潮| 18禁中文字幕| 东京热激情视频一二三区| 99青青草国产视频| 夜夜爽夜夜| 国产大学生口爆吞精合集| 日韩pv中文| 精品人妻视频一区二区在线播放| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | CCYY草草影院地址入口| 久久婷婷伊人| 色偷综合| 国产美女口爆吞精视频| 九色 人妻 大香蕉| 久久香蕉国产线看观看亚洲女人| 亚洲无码一二三区| 欧美中文字幕一区| 青娱乐福利99| 天堂资源欧美| 激情 欧美 亚洲 小说| 五月天综合| 天美传媒在线一区| 成人在线视频二区| 加勒比aⅴ| 成人无码电影在线观看网| 91oumei| 97久久超碰国产精品| 1024人妻熟女一区二区三区| 日韩精品电影| 欧美成人A天堂片在线观看| 五月婷婷六月丁香| 偷拍综合网| 九月丁香婷婷| 久久精品国产亚洲av水密被窝| 国产精品无码在线| 69丨亚洲丨精品丨入口免费播放| 精品欧美А∨无码黑人大荫蒂| 综合色图区| 青草伊人网| 影音先锋中文字幕日本好一区二区| 9久久美女首页| 超碰97人妻免费在线| 99色在线| 亚洲情色综合| 九九九九九用不成了| 十八禁av无码免费网站APP| 国产黄a三级三级三级av在线看| 超碰九区| 久久发布国产伦子伦精品| 成人怡红院| 国产欧美日韩在线观看麻豆传媒公司| 7777奇米影视久久| 久久久久久少妇| 高清国产av无码| 插插综合网天天影视网| 91黑丝露脚| 97天天摸天天爽| 艳美熟妇先锋一二三区| 精品蜜乳AV免费观看| 人妻大相焦在线| 日本成人A片网站| 曰韩香蕉97| 99日精品欧美国产| 亚州综合网| 亚洲情色一区三区| 99综合网| 欧美Ⅴ性爱| 色爽——AV| 99操碰| 亚洲欧美不卡线| 青青草视频导航官网| 亚洲五码一区二区三区| 免费一二区| 性色av一区二区| 国产精品久久伊人| 亚州熟女乱伦| 夜夜做夜夜爽精品视频| 思思热国产高清| 亚州乱码中文字幕综合久久久| 天堂无码精品国产久| 久久久免费高清中文视频| 超碰三级秋霞| 久久精品国产亚洲AV片多多| 久久午夜色播影院免费高清| 成人久久久精品| 91oumei| 欧美综合娱乐久久| 91第一页| 婷婷精品久久av影视| 无码一区二区三区四区五区六区七区八区九区十区视频 | 日本韩高清无砖码22o| 综合av影片| WWW4虎| 激情久久久| 国产精品日本无码A片| 亚洲的天堂网| 亚洲精品欧美专业| 色色亚洲| 免费观看欧美日韩操逼视频| 九九色热| 亚欧国产无码精品在线| 北约熟女超碰| 大香焦A片| 国产剧情在线| 人人妻人人澡人人爽久久av| 久久风骚城市人| 亚洲永久AV无码精品秋霞| 色墦五月丁香| 99无码视频| 中 文字幕一区二区三四 五 区日 日 骚| 五月丁香六月婷| 国产理论视频在线播放| 久久五十路熟女人妻| 97欧美精品| 亚春色色| 97人人夜| 日韩九九九| 乱操9999| 国产精品一二三| 狠狠爱夜夜干| 999熟女精品| 国产精品久久久久久久久久久久久久久 | 欧美在线55555| 宅男91视频在线播放| 色综合色色| 一级A片女人高潮叫床| 丁香六月激情| 国产乱码精品一区二区三区四川| 日本天天操| 五月天玖玖资源站| 丁香五月激情综合国产| 强免费黄色网址| 亚洲天堂无码| 婷婷五月天成人网| 亚洲欧美激情另类色图| 色噜噜国产在线| 性色avv| 69综合网| 亚洲欧洲第二视频在线观看色图| 欧美 亚洲精品首页| 日本Suv精品一区二区| 人人澡人人干| 精品久久无码午夜福利| 欧美亚洲se91| 久久久久九九九九九| 国产精品午夜精品| 日本丝袜人妻内射| www老逼91| 日本三级黄页| 伊人久久国产免费观看视频| 青青草大香蕉在线视频| 91色综合色| 亚洲天堂少妇| 欧美色亚洲| 黄片免费视频2019| 伊人网综合在线视频| 日亚韩精品视频二区三| 婷婷六月天| 91色爽欧美| 鸥美极品| 日夜伊人网| 欧美日韩国产成人高清| 午夜福利在线合集| 嗯嗯嗯啊啊啊在线免费观看| 九九人妻| 97精品一区二区视频| 国产精品久久99日日| 亚洲天堂久久| 性爱欧美五月| 久久激情婷婷| 婷婷亚洲五月***久久| 这里有精品| 日韩人妻精品中文字幕| 欧美综合另类| 欧美性爱另类综合| 国产性爱欧美性爱在线| 久久精品一区二区| 国产精品自在自拍视频| 青青草视频导航官网| 91高潮| 一区二区视频在线播放| 青青草吊丝| 亚洲交性| 亚洲成熟国产精品美女| 91视频成人福利网站在线一区| 亚洲涩图欧美| 操逼不卡中文字幕| 欧美亚洲影视| 日本成人在线不卡一区二区三区| 国产做?爰片久久毛片?片美国| 冬京热男人的天堂| 久久精品一区二区三区四区五区| 国产女人成人精品视频| 天天内射| 99久久久无码精品国产人| 丁香五月激情综合| 欧洲一区二区| 久久美女福利是上海美女| 四虎AV无码| 国产精品网址| 五月丁香影院| 78操B| 日韩午夜啪啪视频| 色原狠狠天天天| 免费强奸av| 久久久国产精品亚洲精品| 成人26uuu| 亚洲天堂性爱| 国产亚洲精品久久久久小| 又黑又大又粗| 久久久97| 好看的久久不射无码影视影院| 在线视频亚洲无码| 男人的天堂在线2| 欧美不在线| 99综合| 麻豆一区二区AV天美| 日韩操人| 加勒比伊人| 天天综合,91综合永久| 超碰97 线线 在现| 日韩成人色图| 2019精品国产无码成人| 91久久久视| 高潮的A片激情扒开一区| 99色日| 午夜福利精品| 蜜区区视频79| 熟妇熟女亚洲天堂网| 欧美激情综合网| 麻豆av一区二区三区| 人人看人人插| 爱丝福利| 又摸又舔在线观看网站| 久草视频在线视频在线视频在线观看| 久久网亚洲| 五月天精品| 麻豆美女丝袜人妻中文| 日韩欧美天天爽爽爽天天爽爽| 永久免费发布性爱网| 久久久免费高清中文视频| 亚洲无码99| www.av家庭乱伦| 久久夜嗨| 久热9| 天天干天天舔| 亚欧操逼片在线观看 | 俞拍久久国应视频| 亚洲一区二区三区麻豆传媒| 性爱av网站| 中文字幕蜜乳av| 伊蕉97蜜桃97狠狠综合干| 日韩人妻播放| 黄色免费一级在线毛片| 亚洲影视第一页| 91人人爽人人爽| 男人天堂黄片| 天天亚洲| 日韩 女同 综合| 亚洲国产欧美日韩人妻日中文| 91久久免费视频互動交流| 欲色啪| 欧美专利1区2区3区4区5区免费| 日小BB小视频| 亚洲欧美另类图片| 黑人综合色| 欧美不卡在线美女| 亚洲激情AV| 欧亚性爱在线视频| 91东北熟女| 91天天美女| 亚洲精品国产AV天美传媒| 亚洲激情在线| 亚洲图片偷拍视频区| 妇女性内射冈站HDWWWCOM| 午夜传煤十二区精品| 欧美日韩人妻婷婷一区| 亚洲美女精品| 天天干少妇| 3p国产色噜噜一区| 欧美啪啪女女| 口爆吞精在线观看| 啪啪视频亚洲第一| 黄色av网站在线播放| 免费国产视频| 亚洲综合首页| 91亚洲综合在线| 中日992视频| 中文字幕精品乱码| 精国久久一区二区三区98| 校园春色欧美色图| 成人AV素股で擦久久| www.夜夜| 日本在线一二 | 亚洲资源网| 日韩一区二区熟女| 亚洲情色五月天| 久久久一区二区三区四曲免费听 | 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 97操| 国产福利一区二| 国产偷拍网站| 大屁股人妻女教师撅着屁股| 精品无码欧美三级| 国产精品成人久久一区二区三区| 色综合av综合久久| 亚洲乱码精品一区二区| 人妻精品视频一区二区三区| 家庭乱伦国产| 人干人人人操人人摸| 久久成人午夜精品影院 | 99热国产精品| 欧美性色欧美| 性夜影院爽黄A爽免费动漫| 亚洲色宗合| 国产辣妈在线视频福利| 国产精品一区二区亚洲人成毛片| 艹精品| 在线中文字幕极品av| 久久6热视频免费观看| 777奇米影视777四色| 99在线观看| 欧美久久九九| 亚洲精品天天影视综合网 | 日日嗨AV一区二区夜夜| www男人天堂| 蜜臀久久99精品久久久久久无删减| 亚洲综合91| 日韩人妻制服丝袜av| 精品黑人一区二区| caorenqi shipin| 精品人妻一区二区免费蜜桃| 国产精品电影推荐| 人人妻人人爽一区二区三区| 精品人妻一二三| 十八禁av无码免费网站APP| 国产色呦呦| 综合熟女| 东京热不卡视频| 欧美人妖内射| 国产精品亚洲一级av第二区| 日本日逼视频网| 天天综和| 91少妇高潮| 亚洲精品乱码线路中文字幕| 99这里只有精品| 青青色综合| 97操97干| 在线观看色视频| 欧美AB在线观看| 久久精品一区二区三区蜜桃臀| 色欧洲| 蜜乳AV一区二区三区四| 亚洲综合另类欧美久久久| 国产AV人人夜夜澡人人爽麻豆| 国产99热| 99精品在线播放| 久久久久9| 蜜臀99久久精品久久久久| 亚洲乱码国产乱码精网站| 亚洲中文字幕有码视频一区二区三区| 欧美日韩中国x| 欧美一级美片在线观看免费| http://qxhbdz.com| 欧美综合狠| 亚洲一区日韩精品| 人妻在线中出视频| 97综合| 激情五月综合| 美女十八禁| 欧美大香蕉专区网| 亚洲色悠悠久久88| 啪啪啪精品| 人妻天天操天天爽视频免费| 99re视频在线播放青草| 思思性爱| 九九人妻| 国产精品久久久三级无码| 中国小夫妻勾搭露脸淫荡对白 | 麻豆视频test| 欧美色图亚洲激情| 一区二区 韩日AV| 久久久性少妇| 日韩不卡毛片Av免费高清| 国产精品欧美激在线| 五月天婷婷在线看 | 国产精品视屏| 天天日老熟妇| 亚洲春色一区二区三区| 国产白领连续中出在线观看| 91在线免费精品视频| 日韩女优在线| 国产高清午夜成人在线观看| 精品人妻一区二区三区-国产精品| 天天干夜夜一操| 歐美性天天| 亚洲天堂AV在线播放| 99国产精品久久久久久久成人热| 国产亚洲色停停久久99精品91| 78综合网| xxxx网站亚洲精品| 中文字幕精品专区搜索结果91| 国产综合网站在线播放 | 国产精品成人无码a v毛片| 青青草大香蕉在线视频| 亚洲熟女性高潮久久久| 超碰69| 九九热AV| 亚洲欧美人妻| 亚州综合AⅤ| 久久久久久国产精品免费网站| 久久天堂网| 国内外色色色色色成人视频| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美性天天影视| 绯色一区二区三区不卡少妇| 午夜福利区| 乱伦日本色图AⅤ| 欧美日本不卡在线| 丝袜制服字幕在线| 91 亚洲 欧美 日韩 国产 综合| 久久99干一本高清| 97香焦色区| 91精品女厕偷拍视频| 97天天插| 99re在线观看| 99热在线播放| 国产一区自拍欧美日韩| 99精品无码| 荡小穴在线观看| 精品人妻一区二区视频| 欧美热图99| 国产偷仑| 国产原创自拍| 2021久久国产综合精品青草| 97色亚洲| 啊啊啊 在线| 欧美丝袜激情| 婷婷色导航| 影视综合无码少妇| 久久午夜色播影院免费高清| 骚货 中文字幕 av| 欧美久久婷婷| 资源在线观一 二| 亚洲最大成人a毛毛片| 久热一区二区| 亚洲春色欧美| 国产丸一视频| 久久中日麻豆| 玖玖97综合| 亚洲AV无码国产成人| 妇女性内射冈站HDWWWCOM| 国产国产亚洲一二三久久| 久久99精品国产| 国产天天骚| 午夜色婷婷| 激情接吻视频久久久久久| 日本人妻中文字幕| 欧美精品三区| 不卡在线观看视频| 久久久999国产| 麻豆精品三区视频| 欧美91精彩| 天天夜夜久久| 99国产精品免费| 小草三级久久观看| 艳美熟妇先锋一二三区| 夜夜操二区| 国产精品久久久久av| 一区二区娱乐网站| 九九热在线精品视频| 强奸a片网| 久久无码电影| 色久桃花影院在线观看| 波多野结衣一级视频| 囯戸精品高潮呻吟旡码| 国产精品高清2021在线| 人妻无一区二区三区| 久久久久亚洲Av无码专区老牛影视| 欧美啪啪色吧在线| 亚洲精品97久久| 熟女人妻一区二区三区| 九九碰九九爱97超| 日韩黄色片子| 国产精品麻豆免费视频| 日韩一级特黄av毛片| 国产AV激情无码久久无码| AAAAAAAAA黄片| 玖玖爱免费观看视频| 手机看av网站在线看| 亚洲一本大道中文字幕无码在线| 黄片www.| 精品少妇后入一区二区三区四区人妻巨乳 | 91xingse| 97超碰天天爱天天爱| 欧美精品第四五页中文字幕在线观看| 欧美另类自拍 | 久久久性少妇| 国产福利合集| 一级@啪啪视频| 日韩人成网站在线播放| 色99视频| 日韩中文字幕熟妇人妻 | 欧美疯狂做爰xxxx| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 电家庭影院午夜69久久夜色精品国产69乱| 精品无码久久久久久久久果冻糖心| 超碰免费人妻人人| 岛国在线一区二区三区| 久久精品一区二区三区不卡| 中文字幕制服欧美久久一区| 久久成人午夜狠狠| 夜夜精品视频| 奇米四色影视777久久久| 亚洲AV成人无码一区二区三区在线观看| 久久99综合| 台湾肥佬网一区二区三区| 激情综合网一盗摄| 亚州男人天堂| 成年女人黄网站| 欧美色图天堂在线| 亚洲欧美日韩国产丝袜自拍中文| 欧美自拍网| 乱伦熟女专区| 91丨九色丨东北熟女| 欲色影视综合吧| 九九这里只有精品| 午夜视频黄| 操一区| 99色婷婷中文字幕乱色| 欧美色图亚洲色| 亚洲无码免费看| 日韩天美| 97伊人超碰| 精品成人亚洲午夜电影| 人妻激情偷乱视频一区二区三区 | 麻豆天美在线| 极品尤物自安慰| 久草视频制服诱惑| 久热热| 免费看欧美美女黄色大片| 欧美激情超碰777| 夜夜高潮夜夜爽夜夜爱爱一区| 密乳无码| 久久久久久91香蕉国产| 国产农村妇女精品| 大香蕉520| 91美女国产在线| 欧美黄片免费在线观看视频| 久久久久9久久久久| 综合色区偷拍| 日本午夜久久电影| 视频在线观看青青99国产| 刺激性视频黄页| 中文乱码字幕观看视频| 亚洲国产日韩欧美熟妇在线| 淫乱图区| 蜜乳av一区二区| 老熟女区| 色翁荡息又大又硬又粗又爽| 91色五月俺来也| 综合伊人网12色| 欧美熟妇视频| 久久久久97| 啪啪91| 无码国产精品96久久久久孕妇| 天天天天操| 九九九一二三| 五月天伊人| 女生91网站| 青青草视频久久| 男人天堂网站| 大香蕉欧美伊| 国产成人精品必看 | 天天色黄色影院天天操| 另类视频在线| 女同性恋久久| 天天摸天天操视频| 黄污污污污| 一级一性爱免费视频| 日韩二三区| 人人摸.人人色| 好舒服视频| 日韩av不卡在线观看| 欧美亚洲韩国视频十五区 | 四虎精品永久在线观看| 亚洲精品99| 精品九九国产无码| 狠插 制服 自拍| 葡萄牙性视频一二区 | 91在线色| 亚洲高清国产理伦片| 啊啊啊啊啊啊啊啊啊在线观看| 波多野42部无码喷潮在线观看 | 天综合网欧美| 成人无码欧美一级A片狼牙直播| 久久久久久午夜男人的天堂| 亚州操操穴网| 久久久久久电影| 久久久91福利姬| 97人人干| 日熟女| 欧美亚洲综合999| 小草av不卡亚洲二区| 久久99午夜精品一区人妻| 青娱乐 青青青操 日逼| 91在线免费观看处女| 国产女人高潮嗷嗷嗷叫小说 | 欧美激情区| 97日视频| 久热9| 伊人丁香五月婷婷| 欧美同性恋 的搜索结果 - 91n| 粉嫩国产精品久久粉嫩| 午夜无码精品免费看性色| 熟妇人妻丰满久久久久久久无码 | 人人操 欧美| 国产精品3| 97网址www| 亚洲免费人妻在| 综合久久久久久久久91| 日韩欧美久久婷婷网站| 国产精品久久久777| 91九色在线| 成人无码在线超碰网| 久久久久久久| 色网综合网| 日本亚洲vr欧美不卡高清专区| 日韩乱伦影音先锋| 国产无马在线| 亚洲图片91| 欧美偷偷网| 九九热视频这里只有精品| 丁香六月婷| 最新啪啪视频| 尤物黄色在线观看网站| 黄色无码高清黄色无码网站| 久久久月天| 囯产精品强| 亚州久久9| 久久人人爽爽爽人久久久| 综合婷婷| 欧美成va视频网站| 黄片免费久久久久久久| 性色av大全| 九九九九精品九九九九| 91精品网站| 99re这里只有精品2| 亚洲欧美综合网站| 97超碰人操| 日本淫穴在线| 91久久堂| 久久超碰98| 天堂射| 熟妇高潮一区二| 亚洲最大的黄色电影网站。| 亚洲精品久久久久久久久豆丁网| 69精品人人人人| 中文字幕jul-617人妻熟女| 久久av成人无码免费| 蜜乳AV一区| 性影在线视频| 日韩钢筋无码高清啾啾啾| 久久久久久亚洲精品不卡人乳| 久久精品99| 九九内射在线| 91色情黑丝搞鸡在线观看一区二区三区三州 | 91|九色|国产熟女| 欧美一级A片在线看视频性色| 久久久久久久亚洲Av无码| 日本成人A片网站| 国产成人午夜视频网址| 亚洲成人日韩小说| 国产精品视频白浆免费| 免费一级视频特黄色大片| 中文字幕一区二区三区视频播放| 欧美一级A片在线看视频性色| 妺妺跟我一起洗澡没忍住| 亚洲国产无码精品首页久久久| 色婷婷狠狠18禁| 亚洲AV小说| 色第一页| 91青青在线视频| 青青草在线视频播放器| 欧美日韩在线小说| 国产精品盗摄 偷窥盗摄| 涩涩涩综合| 国产亚洲日本精品在线| 婷婷五月成人| 成人熟女视频一区二区三区| 久久爱超碰网| 狠狠色五月亚洲91| 久操精品| 亚洲一区二区三区AV无码| 开心五月婷婷激情| 蜜臀AV成人精品蜜臀AV久久| 91人妻久久久久久久久久久久久| www.成人无码| yw尤物av无码点击进入麻豆| 脫衣舞一区二区三区| 超碰在线看| 婷婷情色五月天| 蜜桃臀一区二区三区久久| 1区2区3区视频| 日韩精品人妻一| 久99| 久久人爽| 91成人18| 三级片网站在线播放| 九九九综合精品| 中文字幕av一区二区三区人妻少妇 | 久久久99免费| 激情五月丁香五月| 天天看高清麻豆| 不卡日本一区二区| 另类 日韩 熟女| 九一综合精品视品av| 96精品久久久| 国产一区二区在线播放量| 天天插天天插| 欧美手机在线综合| AV一区观看| 亚洲 欧美 91| 五月天精品| 影音先锋视频在线| 熟女在线视频| 91日韩国产欧美亚洲另类精盘州至城都| 强奸国产精品视频| 天天肏美女| 97se亚洲| 久久人人爽人人爽人人片Ⅴ| 国产不卡中文字幕免费avi| 啊啊啊久久| 精品少妇一区二区三区在线视频| 精品美女少妇一区二区三区| 亚州91| 天天摸,夜夜摸| 欧美伦乱| 国产小黄片在线免费观看| 天堂精品小草| 人妻二区| 超碰97男人| 国产在线播放成人免费| 激情五月天视频| 欧美亚洲韩国视频十五区| 午夜一区二区三区国产| 北条麻妃性愛视频| 欧美日韩电影成人在线| 肉丝网站91| 牛牛AV人人夜夜澡人人爽| 裸体美女国产免费久久久网站| 亚洲在线A| 视频分类 国内精品| 久色99999| 色官网色综合| 色天欧美| 最新国产亚洲精品精品国产亚洲综合| 蜜桃久久久久久久久久久久| 7777奇米影视久久| 综合av影片| 激情无码日韩| 亚洲极品| 日本九九九九| 天天综合网在线观看| 一区二区日韩欧美久久| 狠狠爱大香蕉| 快点操死我| 成人性爱AV在线免费观看| 求求你操操我| 日韩丰满熟妇| 亚洲中文sv| 亚洲无套久久嗯嗯| 亚洲一区日韩精品中文字幕 | 久久婷婷电影网| 操香逼| 欧美精品xxxwww| 欧美色图片欧美色图| 91一起操| 秋霞 色色| 国产精品熟女九九九| 国产网站在线播放| 欧美激情亚洲| 欧美亚洲国产自久久| 欧美日韩另类在线播放| 亚洲素人综合| 青娱乐 成人娱乐在线| 久久精品午夜国产亚洲AV无码| 亚洲欧美精品久| 成人三级片无码| 老女人综合网| 男人的亚洲天堂| 婷婷色网| 黄色视频60分钟| 亚洲色天堂九9| 激情五月天网站| 欧美激情性久久久久久| 一级免费精品| 日本有码影片下载| 国产亚洲精品美女久久久m| 欧美天堂在线| 青女在线| 69超碰综合| 日本免费专区| 淫荡网址| 欧美综合传媒| 少妇国产不卡| 日韩精品亚洲专区在线影视| 亚洲色天| 天堂av最新电影网| 久久精品视频28| 久久久com| 老司机天天操| 超碰95| 欧美综合色综合| 97爱欧美| 国产丝袜视频| 日韩黄色一区二区三区| av亚欧| 日日摸日日弄日日拍| 欧美A√综合网| 精品一区二区三区蜜桃臀赵总 | 超碰天天久久79| 欧美色婷婷| 亚洲第一狼人丝袜美女另类 | www.狠狠干.coom | 欧美日本天堂| 亚洲人精品久久久喷水| 欧美亚洲中文字幕| 一区操逼日比视频| 亚洲欧美国产中文视频| 97干在线视频| 97欧美日韩精品| 激情四射熟女丝袜| 欧美熟妇操操视频| 青娱乐亚洲热| 青青网三级视频| 久久98| 国产强奸超碰AV| 国产精品一区二区校花| 91性高朝久久久久久久久| 亚洲天堂2020| 亚洲成成熟女人综合一区二区| 玖玖爱伊人玖玖爱| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 日本一区二区不卡精品| 国产精品爽爽v| 国产精品久久久无码aV去| 热99re69精品8在线播放| 日本布卡一区二三区| av橘色网站| 亚洲脚交| 91日韩网站| 久久久久女教师免费一区| 超碰在线1234区| 国产精品夜夜夜| 超碰色美女| 中文三一区| 中文字幕精品码亚洲| 九热久| 日韩精品人妻| 一中国女人毛片水真多| 中日韩免费看男女操逼大全| 97久久久| 成人一二| 大香蕉黄色一级片免费看| 人人操人人干网页| 日本操逼视频导航| 亚洲精品成人激情在线| 91GD.COM| 成人综合色网| 嫩草 人人网精品| 大乔未久88一区| 91九九九吃| 欧美激情精品久久久久久| 亚欧美综合网| 四虎国产精品永久在线囯在线| 在线观看亚洲成人精品| 强奸国产在线| 99久久久无码国产精品性男| 超碰99在线观看| 男人的天堂2010| 青青操在线亚洲视频观看欧美在线| 久久国产对白激情浪潮| 国产AB视频| 9丨久久九九九| 第四色奇米影视777| 九月丁香综合网| 五月天丁香| 亚洲自拍欧美国产首页网曝| 人妻天天爽| 91丝袜| 日本无码1| 伊人久久婷婷| 美女淫穴| 中出20p| 无码高清操逼| 美女国产一区二区久久| 人妻加勒比东京热| 97超碰亚洲| 人妻娇喘 激情视频| 老熟女乱伦片| 激情久久av一区av二区av| 97干com| 91在线丝袜| 中国熟女老妇仑乱一区二区三区| 亚洲精品啪视频| 91久热这里只有精品| 国产精品一级二级在线| 97超碰护士| 另类小色呦| 日韩一级二级在线| 亚洲图片小说欧洲| 国产日韩区| 理论久久婷婷网 8| 狠狠操狠狠燥| 伊人网免费视频| 97干在线| 综合一区二区影视| 强奸乱伦 亚洲一区| 91九色精品熟女内射| 久久综合超碰| 国产乱伦视频污| 午夜免费福利视频一区| 日本淫穴在线| A级片一区| 婷婷色色五月| 无毛精品| 欧美激情性爱视频网站| 嗯啊不要在线观看嗯啊| 啊啊啊啊啊舒服| 第四色奇米影视777| 禁止观看美女黄| 久久久亚洲精品中文字幕人妻| 国产精品美女久久久久AⅤ国产馆| 97超碰69| 亚洲欧美综合图片| 國產尤物AV尤物在線觀看| 天天综合有色网| 中文乱码字字幕在线第5页| 人妻人人操| 亚洲极品| 国产一区二区在线电影| 亚洲欧美日韩电影网站一区| 尤物视频视频官网| 国产欧美伊人| 亚洲成人ab| AV中文在线| 这里都是精品| 婷婷五月色| 亚洲天堂久久| 黄网在线播放| 久久精品操| 狠狠爱综合| 亚洲黄色电影| 91GD.COM| 大香蕉伊人75| 国产原创自拍| 久久久四区| 超碰79人人乐| 久久国产AⅤ| 亚洲美欧999| 日本欧美一区二区三区视频麻豆| 人妻无码后入| AV和黑人在线播放| 天天射夜夜| 国产精品视频白浆免费| 久久精品国产97欧美精品亚洲 | 国产91亚洲精品一区二区三区| 按摩中文字幕| 人人操人人爽人人操人人| 青青草视频在线观看一区二区| 在线毛片片免费观看| 四虎视频在线观看| 免费精品人妻一区二区三| 人妻素股| 开心五月婷婷激情| 中文字幕乱亚洲美女精品一区| 欧美熟妇乱码在线一区| 欧美亚洲一级在线观看| 色天欧美| 狠狠操狠狠插| 日本操逼无码| 精品一国2| 大香蕉黄色一区| 青青在线视频日韩欧美| 看黑丝美女操逼青青网站| 秋霞久久亚洲精品成人| 青青草在线视频播放器| 夜色五月天| 国产精品人人爽人人做可爱福利| 九九国产| 五月天激情网站| 国内偷拍精品一区二区| 天美传媒av在线| AA丁香综合激情| 欧美爱三级日韩久久| 亚洲亚洲亚洲天堂天堂| 91啪啪视频| 日韩强奸av| 97热视频在线观看| 亚洲有薄码区日本系列中文字幕| 中文字幕一区二区三区四区在线视频| 激情综合网一盗摄| 日韩情色视频| 午夜电影在线观看无码专区| 日本综合色图| 欧美亚洲涩涩| 欧美天天插| 自拍偷拍 高清无码| 超碰九7免费| 天天超级碰碰碰| 长长久久88视频| 波多野结衣先锋影音| 欧美日韩久久精品爱爱| 精品网站99999| 精品 码产区一区二-1080P高清在线www-B029AV| 操逼视频国产无套| 日韩欧视频| 日韩电影天堂视频二区三区| 人妻少妇一区二区| 国产熟女免费观看久久| 大象AV在线| 国产精品农村妇女精品| 白 大 人妻 区 在线| 色综合98| 免费在线观看AV无码网站| 无码区蜜乳| 中文字幕熟女人妻丝袜| 97日韩欧美亚洲| 校园春色中文字幕AV| 天天色香欲综合网| 国产动漫操逼视频| 国产成人一级av88| 999久久久免费精品国产牛牛| 热G综合热G中文| 午夜毛片高清免费不卡| 中文字幕天天天天天| 日日夜夜干| 99久久久久| 国产极品美女高潮无套在线观看 | 插老姨肥穴| 俺去久久| 欧美夜夜狠| 91久操| 午夜天堂啪啪| 色牛牛AV| A片 AV一级在线播放观看免费 | 又摸又舔在线观看网站| 欧美天天拍| 亚洲综合网电影91| 水野优香在线观看| 五月婷婷基地| 五月丁香社区婷婷日韩欧美精品影院 | 成人一级性爱| 人人做,人人操,人人摸| 国产v亚洲v日韩v欧美v片另类| 青青草好吊色| 99999亚洲| 凹凸精品熟女在线观看| 久久国产乱子伦精品免费女,网站| 久久99干一本高清| 九九这里只有精品| 久久精品一区二区三区蜜桃臀| 日韩97视频| 无卡一区=区| 天操天操夜操夜月月年年操操| 国产后入清纯| 9 1超碰九色| 欧美色图另类图片| 日韩三级av片| 午夜在线播放| 久久久97| 人妻献身系列第54部| 人人操肉肉| 天天色综亚洲91污| 欧美国产伊人久久久久| 久久久成人国产精品无码| 精品少妇一区二区三区在线视频| 黄网在线播放| 美女尤物福利视频| 夜夜騷av、一區二區|