售前電話
135-3656-7657
售前電話 : 135-3656-7657
流穿透
2.1 背景
當(dāng)話機(jī)跨越 NAT 進(jìn)行通信時(shí),外部媒體流由于不能穿越內(nèi)網(wǎng)從而導(dǎo)致無法通信。這種情況在兩臺(tái)已經(jīng)通信的設(shè)備在長(zhǎng)時(shí)間 Hold 后也會(huì)出現(xiàn),由于外網(wǎng)路由器保存的 NAT 映射信息超時(shí),從而導(dǎo)致 Resume 后仍然無法通信。為保證 NAT 下的正常通信,保證 RTP 流穿透顯得尤為重要。
2.2 原理
根據(jù) RFC6263 , 工作在 INACTIVE 和 RECVONLY 的情況下,要采用規(guī)范里推薦的一種方式來定期發(fā)送 RTP 包。規(guī)范推薦用 RTCP 復(fù)用 RTP 的方法,擔(dān)心很多終端沒有實(shí)現(xiàn),考慮兼容的問題決定采用其他方式。
參考規(guī)范第四節(jié),考慮通過定時(shí)發(fā)送錯(cuò)誤 Payload Type 的 RTP 包來保證通信。
2.3 應(yīng)用
2.3.1 配置
開啟上圖配置后,會(huì)使能 RTP 流穿透,在以下情況會(huì)發(fā)送 RTP Keep Alive 包:
1 話機(jī)撥通電話后會(huì)發(fā)送 RTP 包來打通 NAT 通道(應(yīng)用于 x6 視頻通話)
2 話機(jī)通話 Hold 后會(huì)定時(shí)發(fā)送 RTP 來保持 NAT 連接
2.3.2 抓包
下圖顯示了發(fā)送的 RTP Keep Alive 包,可以看到 wireshark 解析出來的包,正常通話的包編碼為 G.711 PCMU,與發(fā)出去的 RTP Keep Alive 包的編碼是不一致的。
下圖顯示一個(gè)完整的 RTP Keep Alive 包