VoIP(Megaco/H.248)基本呼叫流程
最近總結了一下Megaco/H.248基本呼叫的流程,不含任何錯誤處理,先用文字的方法描述如下,後續會陸續推出時序圖版本,以及其他基本流程,如MG註冊,MG lock/unlock,長時間摘機不撥號,被叫用戶忙,撥號錯誤,supplemental service,如Call Waiting(呼叫等待),Call Transfer(呼叫轉接),Three Way Call(三方通話)等,盡情期待!
名詞解釋
VoIP(Voice Over IP): 網絡電話,通過IP網絡來傳輸語音信息。
Megaco/H.248: ITU-T和IETF基於軟交換的思想共同制定的媒體網關控制協議,與SIP各有千秋。
DSP: Digital Signaling Processor(數字信號處理器) - e.g. MindSpeed M82359
VCP: Virtual Control Processor(微處理器) - e.g. Zarlink Le79271
SLAC: Subscriber Line Audio Processing Circuit(用戶線音頻處理電路) - e.g. Zarlink Le79238
SLIC: Subscriber Line Interface Circuit(用戶線接口電路) - e.g. Zarlink Le79121
場景
MGC -- MG1 -- UserA
-- MG2 -- UserB
基本呼叫流程
- 用戶A摘機(Offhook):SLIC輸出給VCP終端信號,從而引起VCP中斷。
- MG1向用戶A送撥號音(Dialtone):VCP接到SLIC終端信號後,發生中斷,執行送撥號音子程序,將存儲器(Register)中撥號音碼經U接口迴環給POTS。POTS的 CODEC(編碼解碼器)將這些撥號音PCM碼進行處理後變成模擬信號RCV輸出到SLIC的RCVN和RCVP差分輸入端,再經SLIC的PT、PR輸出給話機,使之發出撥號聲音。
- MG1檢測到用戶A的摘機,將此摘機事件通過Notify命令上報給MGC;
- MGC向MG1返回Reply;
- 用戶A撥號(Dial digits):用戶A聽到撥號音後就可進行撥號,VCP接收到第一個撥號號碼後就會停止對POTS送撥號音信號。撥號模擬信號經SLIC輸出給DTMF(雙音多頻處理器件),DTMF將其變成二進制的8421碼並等數據有效後(Dva/DVb爲高)送給VCP。
- MG1將所收集到的號碼與從MGC下載的DigitMap做匹配比較,如果合法,則將所撥號碼及匹配結果用Notify消息上報MGC;
- MGC向MG1返回Reply;
- MGC向MG1發送Add消息,在MG中創建一個context,並在context中加入用戶A的termination和RTP termination,其中RTP 的Mode設置爲ReceiveOnly,並設置語音壓縮算法(如G.711);
- MG1向MGC返回Reply消息,其中攜帶分配的RTP資源,包括IP地址、採用的語音壓縮算法(如G.711)和RTP 端口號等;
- MGC向MG2發送Add消息,在MG2中創建一個context,並在context中加入用戶B的termination 和RTP termination,其中RTP的Mode設置爲SendOnly,並設置語音壓縮算法;
- MG2向MGC返回Reply消息,其中攜帶分配的RTP資源,包括IP地址、採用的語音壓縮算法(如G.711)和RTP 端口號等;
- MGC向MG1發送Modify消息,在MG1中把用戶A的RTP Mode設置爲SendReceive;
- MG1向MGC返回Reply;
- MGC向MG2發送Modify消息,請求MG2給用戶B送振鈴音(al/ri);
- MG2的VCP控制SLIC產生鈴流信號,該鈴流信號通過SLIC的PT/PR輸出到用戶B的話機,使得話機產生振鈴(Alerting),振鈴節奏由VCP控制。
- MG2向MGC返回Reply;
- 用戶B摘機(Offhook),SLIC輸出給VCP終端信號,從而引起VCP中斷。
- MG2檢測到用戶B的摘機,將此摘機事件通過Notify命令上報給MGC;
- MGC向MG2返回Reply;
- MGC向MG2發送Modify消息,在MG2中把用戶B的RTP Mode設置爲SendReceive;
- MG2向MGC返回Reply;
------------------- 此時用戶A和用戶B的RTP通話正式建立 -------------------
RTP(Real Time Protocol)連接建立成功後,模擬語音信號通過SLAC的轉換爲數字信號,形成TDM(Time Division Multiplex)流,TDM流經過DSP的處理變爲IP包通過IP網絡進行傳輸,接收端先通過DSP將IP包轉化爲TDM流,再通過SLAC轉換爲模擬信號。
------------------- 用戶B先掛機結束通話 -------------------
- 用戶B掛機(Onhook),SLIC輸出給VCP終端信號,從而引起VCP中斷。
- MG2檢測到用戶B的掛機,將此掛機事件通過Notify命令上報給MGC;
- MGC向MG2返回Reply;
- MGC向MG2發送Subtract消息,釋放用戶B和及其RTP連接;
- MG2向MGC返回Reply,釋放資源,並向MGC上報呼叫的媒體流統計信息;
- MGC向MG1發送Modify命令,請求MG1給用戶A放忙音(cg/bt)
- MG1向用戶A放忙音(Busy Tone),VCP執行放忙音子程序,將存儲器(Register)中忙音碼經U接口迴環給POTS,POTS的CODEC(編碼解碼器)將這些忙音PCM碼進行處理後變成模擬信號RCV輸出到SLIC的RCVN和RCVP差分輸入端,再經SLIC的PT、PR輸出給話機,使之發出忙音。
- MG1向MGC返回Reply;
- 用戶A掛機(Onhook), SLIC輸出給VCP終端信號,從而引起VCP中斷。
- MG1檢測到用戶A的掛機(Onhook),將此掛機事件通過Notify命令上報給MGC;
- MGC向MG1返回Reply;
- MGC向MG1發送Subtract消息,釋放用戶A及其RTP連接;
- MG1向MGC返回Reply。