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