在本論文的設計中,可以使用任何支援 RFC3261 的 UA 與我們的 JXTA SIP Peer 溝通,
亦可利用 JXTA SIP Peer 自動產生的 MjSip UA,對整個 JXTA SIP Peer 的運作方式都是 相同的。而且無論 UA 與 JXTA SIP Peer 是在相同的主機上還是各別運行在不同主機裡,
也都不會有影響。因此後面的探討將不會特別針對何種 UA,並假設 UA 與 JXTA SIP Peer 跑在不同的主機上。
在下面運作中,皆假設 UA 已將 JXTA SIP Peer 設定為 outbound proxy,若是使用 JXTA SIP 自行建立的 UA,則 outbound proxy 會自動設定完成。
4.1 Registration
UA 向 JXTA SIP Peer 進行註冊的動作如下(見圖 26):
1. UA 先向它的 outbound proxy 即 JXTA SIP Peer 發出註冊要求。
2. JXTA SIP Peer 的 SIP 層收到後註冊要求後,會依據 contact address 等資訊產生 JXTA User Binding。然後由 P2P 層產生 User Binding Advertisement 儲存在本地快取裡,
並把公告索引發佈到 Rendezvous 網路上。
3. 最後再由 JXTA SIP Peer 的 SIP 層回傳 200 OK 的訊息給 UA,就完成了註冊的動作。
JXTA SIP Peer
User Agent Registrar
JXTA Peer
Rendezvous Network 1. REGISTER
3. 200 OK
2. Publish Index
圖 26:Registration 的運作方式
29
4.2 Proxy: Message Forwarding
UA 利用 JXTA SIP Peer 的 Proxy 收發訊息的過程如下:
1. UA A 發出要求訊息給 JXTA SIP Peer A。
2. JXTA SIP Peer A 根據 Request-URI 裡的 SIP URI 去搜尋符合的 User Binding
Advertisement,先檢查本地快取,若沒有則向 Rendezvous Super-Peer 發出搜尋要求 (discovery request)。
2. Query Adv
圖 27:Proxy: Message Forwarding
3. 擁有該 User Binding Advertisement 的 JXTA Peer C 會把公告傳回給 JXTA SIP Peer A。
4. 接著 JXTA SIP Peer A 利用 JXTA User Binding 裡的 Pipe Advertisement,與 UA B 的 outbound proxy JXTA SIP Peer B 建立 pipe 連線。JXTA SIP Peer B 可能與 JXTA Peer C 為同一個 Peer。
5. 透過建立好的 pipe 把要求訊息送給 JXTA SIP Peer B。
6. JXTA SIP Peer B 會查詢本身的 P2P Location Server,得知 UA B 的位置後,將要求 訊息傳遞給它。
7. UA B 將回應訊息傳送給它的 outbound proxy 即 JXTA SIP Peer B。
8. 如同步驟 4,JXTA SIP Peer B 會利用 JXTA User Binding 建立一個 pipe 連到 JXTA SIP Peer A。
9. 接著 JXTA SIP Peer B 利用 pipe 將回應訊息傳送給 JXTA SIP Peer A。
30
10. 最後,JXTA SIP Peer A 遞送該回應訊息給要求發送者 UA A。
4.3 Redirection
JXTA SIP Peer 進行 redirection 的動作如下:
1. UA 傳送要求訊息給 JXTA SIP Peer。
2. JXTA SIP Peer 收到後,根據 Request-URI 裡的 SIP URI 去搜尋符合的 User Binding Advertisement,先檢查本地快取,若沒有則向 Rendezvous Super-Peer 發出搜尋要求 (discovery request)。
3. 擁有該 User Binding Advertisement 的 JXTA Peer 會把公告傳回給 JXTA SIP Peer。
4. JXTA SIP Peer 會從 JXTA User Binding 取出 contact address,用來產生 302 Moved Temporarily 的回應訊息回覆給 UA,告訴 UA 應該把要求訊息傳遞到哪裡。
JXTA SIP Peer
User Agent Redirector
JXTA Peer A 1. Request
4. 302 Moved
3. Respond Adv Temporarily
JXTA Peer B Rendezvous Network
圖 28:Redirection 運作方式
4.4 Multiple Domain
JXTA SIP Peer 上的各種 SIP 伺服器,不會限制 UA 的網域是否要一致,可以讓 UA 使用 任意的網域名稱進行註冊。只要是有透過 JXTA SIP Peer 註冊的 UA,它的 binding 就能 夠被任何 JXTA SIP Peer 查詢到。因此無需任何的修改與設定,我們的 JXTA SIP Peer 便 可以讓各種不同網域名稱的 UA 使用。
31
4.5 Interoperability
4.5.1 Interoperation with Conventional SIP Domain
要讓 JXTA SIP Peer 形成的 P2P SIP 網域裡的 UA 與其他 SIP 網域的 UA 互通,需要如下 的設定。JXTA SIP Domain 裡所有 UA 的網域名稱都要向 DNS 登錄,並且跟 DNS 設定 某幾個 JXTA SIP Peer 會提供這些網域的 SIP 服務,這些 Peer 稱為 JXTA SIP Proxy Peer。
建議的做法是直接限制 JXTA SIP Domain 中所能註冊的網域名稱,將允許被註冊的幾個 網域名稱設定為全域的系統參數,由此 JXTA SIP Peer 可以分辨哪些網域不在它的管理 範園內。有了這樣的設定後,當一般 SIP Domain 的 UA X 要送訊息給 JXTA SIP Domain 的 UA Y 時,UA X 的 Proxy 會向 DNS 查詢負責 UA Y 所屬網域的 SIP 伺服器,就會查 到了 JXTA SIP Proxy Peer。JXTA SIP Proxy Peer 再透過 P2P Location Service 查到負責 UA Y 的 JXTA SIP Peer,最後就可以傳訊息傳給 UA Y。相反的,當 UA Y 要傳訊息給 UA X 時,JXTA SIP Peer 會發現 UA X 的網域並不在 JXTA SIP Domain 裡面,因此不會 向 P2P Location Service 查詢,而是直接以一般 SIP 的方式,利用 DNS 找出對方的 Proxy,
然後傳遞訊息。如此一來 JXTA SIP Domain 的 UA 就能夠與其他 SIP 網域的 UA 互傳訊 息,進而建立會話連線了。
圖 29:Interoperation with Conventional SIP Domain
32
4.5.2 Interoperation with other P2PSIP Domain
只要其他 P2P SIP Domain 能夠支援與一般的 SIP Domain 互通的能力,則運用前一節敘 述的方法,我們的 JXTA SIP Domain 就可以透過相同的方式與該 P2P SIP Domain 互相支 援、傳遞訊息了。
33