- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
- Asterisk課堂-如何通過(guò)源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統部署環(huán)境要求
- Asterisk課堂-Asterisk技術(shù)架構
- Asterisk課堂-撥號規則基礎
- Asterisk課堂-創(chuàng )建第一個(gè)撥號規則
- Asterisk課堂-撥號規則中的Contexts
- Asterisk課堂-撥號規則中變量的使用
- Asterisk課堂-撥號規則中的Extensions用法
- Asterisk課堂-撥號規則中匹配模式
- Asterisk課堂-IAX2 介紹
- Asterisk課堂-IAX2 呼叫流程
- Asterisk課堂-SIP介紹
- Asterisk課堂-SIP呼叫流程
- Asterisk課堂-終端注冊
- Asterisk課堂-SIP Trunk
- Asterisk課堂-SIP debug

因為Asterisk中的SIP呼叫涉及了不同的網(wǎng)絡(luò )環(huán)境,每個(gè)問(wèn)題都需要依靠具體的日志消息來(lái)判斷。作為一個(gè)系統管理員,雖然不需要發(fā)現熟悉和完全了解SIP的協(xié)議的使用環(huán)境,但是大家至少要了解一些基本的日志信息。這樣的話(huà),用戶(hù)可以快速了解排查問(wèn)題,找出真正的問(wèn)題所在。
視頻中介紹了SIP debug 開(kāi)啟對方法,注冊流程中的消息,呼叫流程中的發(fā)送和asterisk接收消息。另外,視頻中介紹了幾個(gè)第三方的工具。最后解釋了服務(wù)器端和終端debug的對比排查:

下面我們介紹一下幾個(gè)SIP的場(chǎng)景,它們包括SIP注冊(注冊失敗,注冊成功),SIP分機之間呼叫(失敗呼叫和成功的呼叫),然后介紹了第三方的抓包工具,最后還有終端日志排查。
注冊消息的排查,用戶(hù)首先要了解CLI debug 日志開(kāi)啟和關(guān)閉的方式。在開(kāi)始排查SIP消息時(shí),用戶(hù)需要打開(kāi)SIP debug 日志。這樣,SIP 注冊信息就會(huì )顯示在A(yíng)sterisk 后臺。用戶(hù)可以根據SIP 注冊流程,找到注冊,401,再次發(fā)送注冊消息,Asterisk驗證等消息,來(lái)判斷是否是成功或者失敗的注冊。通常,用戶(hù)會(huì )看到日志所顯示的狀態(tài)。
注冊以后,SIP呼叫流程中,從INVITE 發(fā)起呼叫,然后驗證,最后Asterisk回復信息可以排查出是否是成功的呼叫,或者失敗的呼叫。用戶(hù)可以在具體消息日志中找出相應的關(guān)鍵詞,SIP method 等等相關(guān)信息,通過(guò)這些信息來(lái)判斷問(wèn)題。

抓包是判斷問(wèn)題的主要手段。Asterisk環(huán)境中支持了很多Linux 開(kāi)源的第三方工具,用戶(hù)可以使用這些國家抓包,然后通過(guò)圖形界面更加來(lái)做進(jìn)一步分析。除了TCPDUMP, wireshark 以外,還有很多非常方便的SIP抓包工具例如,sngrep。如果用戶(hù)比較熟悉Linux環(huán)境的話(huà),建議使用sngrep 來(lái)實(shí)時(shí)分析SIP數據。

當然,除了通過(guò)Asterisk 系統本身抓包實(shí)現排查以外,用戶(hù)也要同時(shí)打開(kāi)終端的SIP debug 設置,通過(guò)雙方SIP消息對比來(lái)進(jìn)一步發(fā)現問(wèn)題。

最后,Asterisk中的SIP排查涉及了很多方面的內容,我們討論了比較簡(jiǎn)單的注冊流程,呼叫流程的排查方式。希望用戶(hù)對SIP的注冊,呼叫流程有一個(gè)基本的介紹。當然,如果SIP注冊或呼叫流程比較復雜的話(huà),用戶(hù)可能還要考慮防火墻,撥號規則,編碼,NAT等等問(wèn)題。在未來(lái)的技術(shù)討論中,我們會(huì )涉及編碼和NAT等問(wèn)題。