Download - 實驗三 : MGCP
1
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗三 : MGCP 實驗目的
使同學瞭解 MGCP 模擬程式和基本通話流程,熟悉 MGCP 的命令與訊息,並了解 Call Agent 程式的運作,並學會開發新的通話服務。 實驗原理
CA
TGW RGW
SS7
PSTN CO
SG
RTP
MGCP
修改 CA 以開發新服務
2
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
執行 MGCP simulation Program
將網頁上 voip_v1.zip 的資料夾解壓縮後存於電腦中,直接點選 VoIP.exe 即可使用。資料夾中其他檔案均為所需,不得任意刪減,否則將可能無法正確執行。 voip_v1 所放置的路徑不得有空白,否則模擬程式將無法正確執行 (ex: 不的放於 My document ,桌面 .. )
3
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (1/4)
加入 CA加入 RGW
選擇是否語音支援
4
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (2/4)
初始化 CA
初始化 Endpoint初始化 RGW
編輯更改
5
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (3/4)
完成模擬環境建構
6
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (4/4)
CA 會偵測其管轄區域內的電話 RGW 其管轄區域內的電話會自動向 CA 進行註冊 電話顯示狀態
7
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (1/3)
模擬程式所在之 IP
模擬程式選擇的 port
8
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (2/3)
此為接收 RGW 訊息的位置
為 CA 所在的電腦 IP
CA 所在的 port
9
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (3/3)
CA 所管理的電話端資料 電話端 id
RGW 所屬IP
RGW 所屬 port
10
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
RGW 設定 ( 無 Voice Support)
接收 RGW 訊息的位置接收 CA 訊息的位置
可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port) 顯示出此 RGW 下電話端點
ID(endpointID) 的範圍
11
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
RGW 設定 ( 有 Voice Support)
接收 RGW 訊息的位置接收 CA 訊息的位置
可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port) 選擇此 RGW 所管的電話端點資料存放位置
12
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
電話鍵盤按鍵意義
此為拿起電話 (hd 指令 )
此為掛上電話 (hu 指令 )
此為電話鍵盤 ( 符號數字指令 )
此視窗顯示所傳送的指令其意義為:電話 endpointID + 指令
此為傳送指令按鍵
13
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (1/4)
實驗步驟二 : 開發新服務 ( 話中插撥、隨身碼、熱線… )
決定開發的新服務的通話流程
畫出 message flow
修改 CA 的finite state machine
14
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
開發環境 程式是以 C 語言所撰寫,開發者需備有 Microsoft
Visual Studio C++ ,或其他可編譯 C 語言的軟體。將casim.zip 檔案解壓縮後存於電腦硬碟任一資料夾中,開啟通話代理人程式開發專案 CASim.dsw 檔案,選擇CASim.cpp 後則可進行新服務的開發。
目前測試的結果用 Visual Studio .NET 2003 會有問題,所以最好使用 Visual C++ 6.0.
15
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (2/4) MGCP 正常的通話訊息流程 :
16
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (3/4) 基本通話有限狀態機 (由通話訊息流程決定)
17
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (4/4) 通話代理人 Call Agent 程式運作
(A),(B) 構成 call agent simulator, (B) 中 mgcLoop 會接收來自 (C)RGW 的 MGCP Msg, 然後再由 (A) 應用層根據訊息,目前的通話狀態,還有caller 及 callee 的元件狀態,呼叫對應的執行程式,然後回應 Ack 給對應的 MGCP 程序並決定 caller,callee 的下一狀態。我們主要更改的部分為(A) 應用層,即 CASim.cpp 的部分檔案。
18
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
範例 隨身碼 (Follow-me Service)
19
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
執行方法 將 CASimd.exe 複製到 Voip_v1 所在的資料夾中,然後在 simulator 上就可看到所發展的成果。
Note: CASimd.exe 是透過 socket 和 simulator 的interface 做 communication. 所以 simulator 上的 ip address 一定要填正確。
How to Debug:CA 在每個動作完成都會 log 至 file, programmer也可將debug message output 至 file.
20
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
程式說明 1
msgToUI.c : 負責讓 CA 和 UI 能夠傳遞message ,這部份是已做好的不用管它。 msgToUI.h :
finite state machine 的 statetype :這部份就是programmer 需要新增的地方。
EndpoindData :對於每個 user(telephone) 所需紀錄的資料。 trace.h, trace.c: 用來 debug 用,可用 PRINT印到營幕並寫到檔案 tool.h, tool.c: 完全用不到
21
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
程式說明 2
CASim.h: StateType: stateType 的字串,當加入一個新的
state時也需把此字串加入 CASim.c:
整個 CA 的主程式,此次作業最主要要修改的就是processCallFlow()這個函數,根據不同的 state 收到不同的 events 要做不同的事。
22
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
作業要求與繳交方式 評分方式:
程式部份: 80% 報告: 20% 創新性及完整性: 20%
繳交方式 mailto : [email protected] 信件標題 : 學號 _姓名 附件
source code file 報告
內容必須說明你所開發的新服務為何, finite state machine, message flow …等 繳交期限
2004/06/01 PM6:00 Demo時間 :2004/06/02 AM10:00~PM5:00 ,如有不行者請另外跟我約時間。