售前電話
135-3656-7657
售前電話 : 135-3656-7657
在VoIP的環(huán)境中,特別是基于SIP通信的環(huán)境中,我們經(jīng)常會(huì)遇到一些非常常見的問題,例如,單通,30秒就斷線,注冊(cè)問題,回聲等。這些問題事實(shí)上都有非常直接的排查方式和解決辦法,用戶可以按照一定的排查方式,工具非常高效地解決這些問題。但是,因?yàn)樽x者技術(shù)水平參差不齊,網(wǎng)絡(luò)上的很多技術(shù)也不完整。筆者今天系統(tǒng)歸納了這些問題。根據(jù)一些用戶的使用環(huán)境和用戶經(jīng)常遇到一些問題,我們列舉了以下十個(gè)在SIP呼叫中經(jīng)常遇到的問題,并且給出了相應(yīng)的排查方式,用戶可以按照這些方法來解決SIP通話中的這些問題。這十個(gè)經(jīng)典的問題包括:
不能注冊(cè)或呼叫到SIP服務(wù)器端
30秒掛斷呼叫的黃金法則
咬線或摘機(jī)狀態(tài)
單通或無語音
收到400 bad request
收到413,513 Request Entity Too Large或Message Too Large消息
收到408, 480或者487 消息
483 - Too Many Hops
488 – Not Acceptable Here
語音質(zhì)量和思科語音文件示例分享
這里,讀者一定要注意,我們這里僅討論關(guān)于SIP環(huán)境中的常見問題,可能涉及網(wǎng)絡(luò)環(huán)境或者硬件終端的問題,因?yàn)楹芏鄰S家和SIP服務(wù)器的配置不同,可能存在一定的差異,所以用戶在我們的方法中特別需要根據(jù)廠家的不同,增加一些專門針對(duì)每個(gè)廠家或者SIP服務(wù)器的排查方式。我們僅討論一般情況下的排查方式。
一、在一般的SIP 環(huán)境中,通常來說,SIP終端需要注冊(cè)到SIP服務(wù)器端來實(shí)現(xiàn)認(rèn)證,服務(wù)器端獲得SIP終端的位置,然后才能進(jìn)行正常的呼叫流程。注冊(cè)問題可能有以下幾種呈現(xiàn)方式:不能注冊(cè),完全沒有和SIP服務(wù)器連接。如果終端發(fā)送注冊(cè)消息給服務(wù)器端時(shí),雙方完全可能完全沒有實(shí)現(xiàn)通訊。用戶需要在服務(wù)器端通過日志排查方式,檢查SIP終端是否有注冊(cè)消息進(jìn)入到服務(wù)器端,或者SIP終端通過網(wǎng)絡(luò)工具對(duì)服務(wù)器端進(jìn)行排查,例如使用Ping 命令。如果連Ping命令都檢測(cè)不到服務(wù)器地址,基本上可以斷定SIP終端根本沒有和服務(wù)器端連接。關(guān)于服務(wù)器端排查方式很多,最典型的就是使用的Asterisk,F(xiàn)reeSWITCH,OpenSIPS或者Kamailio等開源的軟交換平臺(tái)。每個(gè)平臺(tái)都有各自的排查命令,用戶可以參考官方手冊(cè)來判斷。當(dāng)然,用戶也可以使用linux排查工具對(duì)5060端口抓包排查(例如,sngrep)。本人非常推薦這個(gè)工具,非常好用,可以實(shí)時(shí)檢查SIP消息。
SIP終端發(fā)出了注冊(cè)消息,但是SIP服務(wù)器端沒有返回的消息。如果SIP終端對(duì)SIP服務(wù)器端發(fā)送了注冊(cè)消息,但是服務(wù)器端沒有返回響應(yīng)消息,則可能是服務(wù)器端的問題。用戶需要排查服務(wù)器端為什么沒有返回消息,或者在返回路徑上的節(jié)點(diǎn)是否出現(xiàn)了問題??蛻舳耸盏藉e(cuò)誤消息,收到太多401/407 Unauthorized。SIP終端在注冊(cè)時(shí),如果用戶的安全設(shè)置出現(xiàn)了錯(cuò)誤,可能導(dǎo)致服務(wù)器端發(fā)送多個(gè) 401 錯(cuò)誤。服務(wù)器端第一次發(fā)送到是正常的401驗(yàn)證信息,如果連續(xù)多次發(fā)送401/407 錯(cuò)誤的話,可能是SIP終端輸入了錯(cuò)誤的用戶賬號(hào)信息,SIP終端側(cè)需要配合服務(wù)器端進(jìn)行排查,也可能服務(wù)器端的SIP賬號(hào)消息保存錯(cuò)誤,或者沒有重新加載服務(wù)器相應(yīng)模塊,用戶最好通過服務(wù)器端的CLI命令來檢查內(nèi)存中的SIP終端的真實(shí)數(shù)據(jù)信息。
客戶端收到403 Forbidden 消息。如果用戶帳戶信息沒有問題的話,SIP終端可能沒有輸入正確的From domain或者R-URI。有時(shí),服務(wù)器端禁止同時(shí)注冊(cè)幾個(gè)SIP終端賬號(hào),或者注冊(cè)過于頻繁,服務(wù)器端可能過濾了此地址。需要用戶配合服務(wù)器端地址進(jìn)行進(jìn)一步檢查。這里,筆者僅討論注冊(cè)階段出現(xiàn)的403 問題,當(dāng)然也可能是系統(tǒng)防火墻或者其他的配置禁止了注冊(cè)消息。如果是呼叫時(shí)出現(xiàn)403的話,則可能是另外的原因,例如可能欠費(fèi),可能呼叫了服務(wù)器端禁止的號(hào)碼碼位等其他因素。
二、我們經(jīng)常會(huì)遇到客戶抱怨這樣的問題,電話通話時(shí),在大概30秒左右就斷線。這樣的問題最主要的原因是SIP終端沒有收到ACK消息。SIP終端發(fā)送了 200 OK以后就開始了媒體的創(chuàng)建,RTP語音流開始啟動(dòng),事實(shí)上,SIP終端可能還沒有收到ACK消息,因此在30秒左右,沒有收到消息的一方就發(fā)送了一個(gè)BYE消息。那么,為什么我們沒有收到ACK消息呢?具體的場(chǎng)景如下兩種示例,返回時(shí)因?yàn)镹AT問題導(dǎo)致ACK沒有辦法返回到相應(yīng)的終端: