實驗 一 : rtp

30
1 N TU C SIE VoIP Lab N TU C SIE VoIP Lab 實實 : RTP 實實實實 實實實實實實 RTP 實實實實實實實實實實 實實實 RTP RTCP 實實實實實實實實實實 實實實實 SIP Signaling IP Network RTP Media Stream 利利 cclRTP( 利利利利利 ) 利利 RTP 利利利利利利 利利利利利利利利利 ,。

Upload: karma

Post on 14-Jan-2016

136 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: 實驗 一  : RTP

1

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗 一 : RTP

實驗目的 了解如何利用 RTP 在網路上傳送語音封包 加深對 RTP 、 RTCP 封包的基本格式的認識

實作部分

SIP Signaling

IP Network

RTP Media Stream

利用 cclRTP( 工研院技轉 ) ,處理 RTP 的傳送與接收,以及聲音的輸出入。

Page 2: 實驗 一  : 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)

Page 3: 實驗 一  : RTP

3

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (1/3)

硬體需求 : 音效卡、喇叭、麥克風、區域網路、網路卡、IP

CSimRTPDlg::CSimRTPDlg 中加入 cclRTPStartup(2) 做 RTP 的一些物件初始化 設定最大 channel 數為 2

RTPOpenPort() 開啟 RTP port

Page 4: 實驗 一  : RTP

4

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (2/3)

void CSimRTPDlg::OnOK() 中把 WavIO 關閉 加入 RTPPeerConnect(ConnectIP,ConnectPort) 將

RTP 連線到對方電腦 IP 為 ConnectIP port 為 ConnectPort( 這裡內定為 9000)

開啟聲音的 IO ,即可以開始傳送 RTP

Page 5: 實驗 一  : RTP

5

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (3/3)

程式執行後如下 :

輸入對方 IP

兩台按連線可通話

連線後變掛斷

按 Exit 離開

Page 6: 實驗 一  : RTP

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 ,並開始錄放聲音

Page 7: 實驗 一  : RTP

7

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗二 : SIP User Mobility

實驗目的 藉由 Location Server 和 Redirect Server 的設計,深入瞭解 SIP

的運作及訊息格式。 實作部分

( 1 )實作一個 Location Server 來接收 SIP REGISTER ,而且 要將 REGISTER 中 Contact header 裡的 URI 記錄下來 。

Page 8: 實驗 一  : RTP

8

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

( 2 )實作一個 Redirect Server 來接收 SIP INVITE Requests , 並且對 INVITE Request 送出 SIP 302 Moved Temporarily

Response ,其中要把剛剛紀錄下來的 URI 放在 Contact

header 中。

Page 9: 實驗 一  : RTP

9

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

Sample [1/5] CCL SIP User Agent

( 1 ) Preference ( 喜好設定 )

Page 10: 實驗 一  : RTP

10

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

Sample [2/5]

勾掉 ( 因為不用 Proxy)

填入 Registar 的 IP,Port

Page 11: 實驗 一  : RTP

11

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

Sample [3/5]

填入自己的名字

填入想要聽的 Port

Page 12: 實驗 一  : RTP

12

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

Sample [4/5]

200 OK

REGISTER

To:[email protected]

Contact:[email protected]

hinet.netLocation ServerRedirect Server

[email protected]

Page 13: 實驗 一  : RTP

13

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

Sample [5/5]

[email protected]

SIP:[email protected]

[email protected]

(1)SIP:[email protected]

(2)SIP:[email protected]

(3)SIP:[email protected]

hinet.netLocation ServerRedirect Server

Page 14: 實驗 一  : RTP

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

Page 15: 實驗 一  : RTP

15

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗三 : MGCP

實驗目的 使同學瞭解 MGCP 模擬程式和基本通話流程,熟悉 MGCP 的

命令與訊息,並了解 Call Agent 程式的運作,並學會開發新的通話服務。

實驗原理

CA

TGW RGW

SS7

PSTN CO

SG

RTP

MGCP

修改 CA 以開發新服務

Page 16: 實驗 一  : RTP

16

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (1/4)

加入 CA加入 RGW

選擇是否語音支援

Page 17: 實驗 一  : RTP

17

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (2/4)

初始化 CA

初始化 Endpoint

初始化 RGW編輯更改

Page 18: 實驗 一  : RTP

18

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (3/4)

完成模擬環境建構

Page 19: 實驗 一  : RTP

19

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

實驗流程 (4/4)

CA 會偵測其管轄區域內的電話 RGW 其管轄區域內的電話會自動向 CA 進行註冊

電話顯示狀態

Page 20: 實驗 一  : RTP

20

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

CA 設定 (1/3)

模擬程式所在之 IP

模擬程式選擇的 port

Page 21: 實驗 一  : RTP

21

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

CA 設定 (2/3)

此為接收 RGW 訊息的位置

為 CA 所在的電腦 IP

CA 所在的 port

Page 22: 實驗 一  : RTP

22

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

CA 設定 (3/3)

CA 所管理的電話端資料 電話端 id

RGW 所屬IP

RGW 所屬 port

Page 23: 實驗 一  : RTP

23

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

RGW 設定 ( 無 Voice Support)

接收 RGW 訊息的位置

接收 CA 訊息的位置

可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port)

顯示出此 RGW 下電話端點ID(endpointID) 的範圍

Page 24: 實驗 一  : RTP

24

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

RGW 設定 ( 有 Voice Support)

接收 RGW 訊息的位置

接收 CA 訊息的位置

可供使用者選擇訊息需透過哪一個位置 ( 通常都設和 RGW 相同的 Domain Name 和不相衝的 port)

選擇此 RGW 所管的電話端點資料存放位置

Page 25: 實驗 一  : RTP

25

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

電話鍵盤按鍵意義

此為拿起電話 (hd 指令 )

此為掛上電話 (hu 指令 )

此為電話鍵盤 ( 符號數字指令 )

此視窗顯示所傳送的指令其意義為:電話 endpointID + 指令

此為傳送指令按鍵

Page 26: 實驗 一  : RTP

26

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

通話服務的開發 (1/4)

實驗步驟二 : 開發新服務 (話中插撥、隨身碼、熱線… )決定開發的新服

務的通話流程

畫出 message flow

修改 CA 的finite state machine

Page 27: 實驗 一  : RTP

27

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

通話服務的開發 (2/4)

MGCP正常的通話訊息流程 :

Page 28: 實驗 一  : RTP

28

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

通話服務的開發 (3/4)

基本通話有限狀態機 (由通話訊息流程決定)

Page 29: 實驗 一  : RTP

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 的部分檔案。

Page 30: 實驗 一  : RTP

30

NTU CSIEVoIP Lab

NTU CSIEVoIP Lab

範例 隨身碼 (Follow-me Service)