實驗 一 : rtp
DESCRIPTION
實驗 一 : RTP. 實驗目的 了解如何利用 RTP 在網路上傳送語音封包 加深對 RTP 、 RTCP 封包的基本格式的認識 實作部分. IP Network. SIP Signaling. RTP Media Stream. 利用 cclRTP( 工研院技轉 ) ,處理 RTP 的傳送與接收,以及聲音的輸出入。. 介紹 cclRTP( 工研院電通所技轉,僅附 object code). 處理 RTP 的傳送與接收 (cclRtp.h cclRtp.c rtp.h rtp.c) 處理聲音的輸出入 (WavInOut.h WavInOut.c) - PowerPoint PPT PresentationTRANSCRIPT
1
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗 一 : RTP
實驗目的 了解如何利用 RTP 在網路上傳送語音封包 加深對 RTP 、 RTCP 封包的基本格式的認識
實作部分
SIP Signaling
IP Network
RTP Media Stream
利用 cclRTP( 工研院技轉 ) ,處理 RTP 的傳送與接收,以及聲音的輸出入。
2
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
介紹 cclRTP( 工研院電通所技轉,僅附 object code)
處理 RTP 的傳送與接收 (cclRtp.h cclRtp.c rtp.h rtp.c)
處理聲音的輸出入 (WavInOut.h WavInOut.c) 將 RTP 與聲音的輸出入結合,並建立到對方的
RTP 連線 (SimRTPDlg.h SimRTPDlg.c)
3
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (1/3)
硬體需求 : 音效卡、喇叭、麥克風、區域網路、網路卡、IP
CSimRTPDlg::CSimRTPDlg 中加入 cclRTPStartup(2) 做 RTP 的一些物件初始化 設定最大 channel 數為 2
RTPOpenPort() 開啟 RTP port
4
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (2/3)
void CSimRTPDlg::OnOK() 中把 WavIO 關閉 加入 RTPPeerConnect(ConnectIP,ConnectPort) 將
RTP 連線到對方電腦 IP 為 ConnectIP port 為 ConnectPort( 這裡內定為 9000)
開啟聲音的 IO ,即可以開始傳送 RTP
5
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (3/3)
程式執行後如下 :
輸入對方 IP
兩台按連線可通話
連線後變掛斷
按 Exit 離開
6
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
程式流程
先執行 CSimRTPDlg::CSimRTPDlg 初始化 cclRTP 與 WavIOObj 開啟 RTP port 。
按下“連線”按鍵後,程式會呼叫 OnOK function 先關閉 WavIO 再呼叫 RTP 連線,並指定 target ip 與 port 。
指定好 target ip 與 port 之後 程式會先把 buffer 清掉 再開啟 WavIO ,並開始錄放聲音
7
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗二 : SIP User Mobility
實驗目的 藉由 Location Server 和 Redirect Server 的設計,深入瞭解 SIP
的運作及訊息格式。 實作部分
( 1 )實作一個 Location Server 來接收 SIP REGISTER ,而且 要將 REGISTER 中 Contact header 裡的 URI 記錄下來 。
8
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
( 2 )實作一個 Redirect Server 來接收 SIP INVITE Requests , 並且對 INVITE Request 送出 SIP 302 Moved Temporarily
Response ,其中要把剛剛紀錄下來的 URI 放在 Contact
header 中。
9
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
Sample [1/5] CCL SIP User Agent
( 1 ) Preference ( 喜好設定 )
10
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
Sample [2/5]
勾掉 ( 因為不用 Proxy)
填入 Registar 的 IP,Port
11
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
Sample [3/5]
填入自己的名字
填入想要聽的 Port
12
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
Sample [4/5]
200 OK
REGISTER
Contact:[email protected]
hinet.netLocation ServerRedirect Server
13
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
Sample [5/5]
(1)SIP:[email protected]
(2)SIP:[email protected]
(3)SIP:[email protected]
hinet.netLocation ServerRedirect Server
14
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
程式實做部分 Location Server, Redirect Server 可用各種程式語言實做,包括
Java Socket, WinSock, Perl, Berkely Socket … 程式架構如下 :
接收註冊訊息,並且進行 Parse
將 Location Information放置於檔案或資料庫中
接收 INVITE 訊息,並且進行 Parse
傳回 302 Move Temporarily 的 SIP Message
15
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗三 : MGCP
實驗目的 使同學瞭解 MGCP 模擬程式和基本通話流程,熟悉 MGCP 的
命令與訊息,並了解 Call Agent 程式的運作,並學會開發新的通話服務。
實驗原理
CA
TGW RGW
SS7
PSTN CO
SG
RTP
MGCP
修改 CA 以開發新服務
16
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (1/4)
加入 CA加入 RGW
選擇是否語音支援
17
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (2/4)
初始化 CA
初始化 Endpoint
初始化 RGW編輯更改
18
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (3/4)
完成模擬環境建構
19
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
實驗流程 (4/4)
CA 會偵測其管轄區域內的電話 RGW 其管轄區域內的電話會自動向 CA 進行註冊
電話顯示狀態
20
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (1/3)
模擬程式所在之 IP
模擬程式選擇的 port
21
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (2/3)
此為接收 RGW 訊息的位置
為 CA 所在的電腦 IP
CA 所在的 port
22
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
CA 設定 (3/3)
CA 所管理的電話端資料 電話端 id
RGW 所屬IP
RGW 所屬 port
23
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
RGW 設定 ( 無 Voice Support)
接收 RGW 訊息的位置
接收 CA 訊息的位置
可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port)
顯示出此 RGW 下電話端點ID(endpointID) 的範圍
24
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
RGW 設定 ( 有 Voice Support)
接收 RGW 訊息的位置
接收 CA 訊息的位置
可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port)
選擇此 RGW 所管的電話端點資料存放位置
25
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
電話鍵盤按鍵意義
此為拿起電話 (hd 指令 )
此為掛上電話 (hu 指令 )
此為電話鍵盤 ( 符號數字指令 )
此視窗顯示所傳送的指令其意義為:電話 endpointID + 指令
此為傳送指令按鍵
26
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (1/4)
實驗步驟二 : 開發新服務 (話中插撥、隨身碼、熱線… )決定開發的新服
務的通話流程
畫出 message flow
修改 CA 的finite state machine
27
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (2/4)
MGCP正常的通話訊息流程 :
28
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
通話服務的開發 (3/4)
基本通話有限狀態機 (由通話訊息流程決定)
29
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 的部分檔案。
30
NTU CSIEVoIP Lab
NTU CSIEVoIP Lab
範例 隨身碼 (Follow-me Service)