Project III SIP Mobility Date 20081202 1 SIP
Project III SIP Mobility Date: 2008/12/02 1
SIP Mobility • Pre-call mobility (Project 2) • Mid-call mobility – 假設Mobile Node (MN)已經利用SIP跟遠方某 Correspondent Node (CN) 建立起RTP連線 – 若MN從某一網域移動到另一個網域,則會被重新分配 一個新的IP,此時CN必須作出適當的RTP Session重 建才能維持連線,而其過程如下: • MN送出RE-INVITE訊息告知CN進行RTP Session重建 • MN送出RE-REGISTER訊息告知home registrar更新其位置 2
支援SIP Mobility的 Media Streaming系統架構 Media Server io n RE-INVITE W 200 OK NE INVITE ss Se n io ss Se P 200 OK P RT RT IP Network Client 3
Media Streaming系統運作流程 Media Server Client INVITE 200 OK ACK RTP Session Handoff happened IP is changed RE-INVITE 200 OK ACK New RTP Session with new IP 4
建立Media Streaming系統 使用 Eclipse + JAIN-SIP 6
系統需求 • 程式語言及開發 具 – JAVA JDK 5. 0 – Eclipse IDE • 函式庫 – JAIN-SIP – JMF (Java Media Framework) • 需要安裝 jmf-2_1_1 e-windows-i 586. exe 8
UA的IP設定 –. /UA/src/PCSButton. java • 在PCSButton類別的建構子中需要修改: – super. PCS_LOCAL_IP = “ 192. 168. 71. 196”; • 本機Handoff前的原始IP – super. PCS_LOCAL_PORT = 5656; • 本機的SIP port – super. PCS_REMOTE_ADDR = "192. 168. 71. 196: 4321"; • Media Server的IP及Port – super. PCS_REMOTE_FILENAME = "smoking. mpeg"; • 要播放的影片檔名 12
Handoff_UA的IP設定– . /HANDOFF_UA/src/Main. Class. java • 在Main. Class類別的main中需要修改: – String Server. IP = "192. 168. 71. 196"; • Media Server的IP – String Handoff. New. IP = "192. 168. 71. 166"; • 本機Handoff後的新IP 13
各專案的main class • Resource Server專案 – Resource. GUI • UA專案 – PCSButton • Handoff_UA專案 – Main. Class 14
Factories • JAIN SIP defines four different factories each with respective responsibilities, namely: • Sip. Factory – This interface defines methods to create new Stack objects and other factory objects. • Address. Factory – This interface defines methods to create Sip. URI’s and Tel. URL’s. • Header. Factory – This interface defines methods to create new Headers objects. • Message. Factory – This interface defines methods to create new Request and Response objects. 16
Address. Factory • 建立Address. Factory – Address. Factory af = sip. Factory. create. Address. Factory(); • 常用的函式 – create. Sip. URI • 假設要建立一個SIP URI: sip: vincent@wmnet. com • JAIN-SIP語法是: Sip. URI tmp. URI = af. create. Sip. URI(“vincent”, “wmnet. com”); – create. Address • 假設要建立一個SIP address: “WH”<sip: vincent@wmnet. com> • JAIN-SIP語法是: Address tmp. Addr = af. create. Address(tmp. URI); tmp. Addr. set. Display. Name(“WH”); 17
Header. Factory • 建立Header. Factory – Header. Factory hf = sip. Factory. create. Header. Factory(); • 常用的函式 – create. From. Header – create. To. Header – create. Via. Header – create. Content. Type. Header – create. Cseq. Header – create. Max. Forwards. Header – create. Contact. Header – create. Header 18
Message. Factory • Create new Message. Factory – Message. Factory mf =sip. Factory. create. Message. Factory(); • Frequently use function – create. Request • REGISTER, INVITE, ACK, CANCEL, BYE – create. Response • TRYING, RINGING, 200 OK 19
SIP Mobility程式實作 修改. /UA/src/PCSButton. java 20
PCSParameter所提供的參數 • 為了簡化程式架構,我們先把需要用到的資訊放 在名為pcs. Param的物件裏,其中可用的資訊有: – Address. Factory address. Factory; – Message. Factory message. Factory; – Header. Factory header. Factory; – String New. IP • Handoff後新取得的IP – int Contact. Port; • Handoff後的SIP port – int audio. RTPPort; • 聲音的RTP port – int audio. RTCPPort; • 聲音的RTCP port – …(略) 21
RE-INVITE與原INVITE的差異 • SIP Header部份 – Contact Header需要使用新IP作為SIP URI – CSeq number需要加 1 • SDP部份 – Origin (“o=”) • 改為Handoff後新取得的IP – Connection ("c=") • 必須為 0. 0 (e. g. "c=IN IP 4 0. 0") 22
實作部份 Part I – SIP Header • (1) 產生 CSeq Header 物件 – pcs. Param. header. Factory. create. CSeq. Hea der(? ? , Request. INVITE); • (2) 產生 Contact URI – pcs. Param. address. Factory. create. Sip. URI( "New. Rtp. Dest", ? ? ); – contact. URI. set. Port(? ? ); 23
實作部份 Part II – SDP Content • (3) 產生 Origin 物件 – sdp. Factory. create. Origin("UA", ? ? ); • (4) 產生 Connection 物件 – sdp. Factory. create. Connection("IN", "IP 4", ? ? ); • (5) 產生 Audio RTP port 物件 – sdp. Factory. create. Media. Description("audio", ? ? , 1, "RTP/AVP", format); • (6) 產生 Audio RTCP port 物件 – sdp. Factory. create. Attribute("rtcp", ? ? ); – (Hint: 可以參考Video部分的設定方法) 24
補充說明 • 真正會需要修改到的檔案: – UA: PCSButton. java – Handoff-UA: Main. Class. java 26
- Slides: 28