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