• 沒有找到結果。

1. SIP

4.1 整合網路通訊平台的建立

4.1.3 系統運作模式

4.1.3.2 建立與結束 Session

SIP 透過 INVITE 訊息建立 Session,而當要結束 Session 時,則發出 BYE 訊息。在階層式 SIP 架構下,依舊需要分區域性與全域性兩種方式來探討 Session 的建立與結束,考慮到與其他 SIP 網路系統的互通性,因此在設計上 保留SIP 所規範的標準程序,而在不屬規範的部分增加系統需要的訊息。

(一) 區域性移動下 Session 的建立

圖 10 INVITE Cross the same Domain

當Caller 和 Callee 分別位於 Proxy1 與 Proxy2 的管轄下,而 Proxy1 與 Proxy2 又隸屬同一個 SIP Server 情況下,建立 Session 的流程如圖 10。

1. 透過 AP 將 INVITE 訊息傳給 Proxy1。

2. Proxy1 回應一個 100 Trying 給 Caller,並檢查 Callee 是否位在同一 個 Proxy Server 下,不是的話 Proxy Server 便將 INVITE 往 SIP Server 網域下的 Redirect Server 傳送。

3. Redirect Server 收到 INVITE 後會先到 Location Server 查詢 VLT,

查詢到 Callee 目前的 Outbound Proxy 位置後,Redirect Server 回傳 一個 302 Moved Temporarily 回應訊息給 Proxy1,Proxy1 回應一個 ACK Request 給 Redirect Server 後再根據 302 訊息所指定的位址將 INVITE 訊息往該位址傳送。

4. Proxy2 收到 INVITE 訊息後,先回傳一個 100 Trying 給 Proxy1,

Proxy2 再查詢自己的 UVLT ,查詢得到 Callee 的位置後便透過 AP 將 INVITE 傳給 Callee。

5. Calle 收到 INVITE 後,在決定接受前會依照 INVITE 從 Caller 傳 過來的路徑反方向地回應一個 180 Ringing,此例會先透過 AP 傳給 Proxy2,再傳給 Proxy1,Proxy1 再將訊息透過 AP 傳給 Caller。

6. Callee 決定接受 Caller 的 INVITE 後,一樣會像 180 Ringing 回傳 的路徑一樣回傳 200 ok 給 Caller,而 200 ok 包含 Callee 的位址資 訊。

7. Caller 收到 200 ok 後,再直接往 Callee 的位址傳一個 ACK Request 給 Callee (也可以依照 INVITE 傳給 Callee 的路徑來傳送 ACK) , 而 ACK 包含 Caller 的位址資訊。

8. 等到 Callee 收到 ACK 後,雙方 Session 便成功建立。

(二) 區域性移動下 Session 的結束

圖 11 BYE Cross the same Domain

9. Caller 透過 AP 將 BYE 訊息傳給 Caller 的 Outbound Proxy1。

10. Proxy1 收到 BYE 訊息後檢查 Callee 是否位在同一個 Proxy Server 下 , 不 是 的 話 Proxy Server 便將 BYE 往 SIP Server 網域下的 Redirect Server 傳送。

11. Redirect Server 收到 BYE 後會先到 Location Server 查詢 VLT,查詢 到 Callee 目前的 Outbound Proxy 位置後,Redirect Server 回傳一個 302 Moved Temporarily 回應訊息給 Proxy1,Proxy1 再根據 302 訊息 所指定的位址將 BYE 訊息往該位址傳送。

12. Proxy2 收到 BYE 訊息後,隨後查詢他自己的 UVLT,看看 Callee 是 否在同一個 Proxy2 Server 的管轄下,若是的話,Proxy2 將 BYE 透 過 AP 往前傳給 Callee。

13. Callee 收到 BYE 後依照 BYE 傳送過來的路徑將 200 ok 反向傳給 Caller。

14. Caller 收到 BYE 的 200 ok 後,雙方 Session 便結束。

(三) 全域性移動下 Session 的建立

當Caller 和 Callee 分別位於 Proxy1 與 Proxy2 的管轄下,而 Proxy1 與 Proxy2 又分別隸屬不同 SIP Server 情況下,建立 Session 的流程如圖 12。

圖 12 INVITE Cross the different Domain 1.將 INVITE 訊息傳給 Proxy1。

2.Proxy1 回應一個 100 Trying 給 Caller,並檢查 Callee 是否位在同一 個 Proxy1 Server 下,不是的話 Proxy Server 便將 INVITE 往 SIP Server 網域下的 Redirect Server 傳送。

3.Redirect Server 收到 INVITE 後會先到 Location Server 查詢 VLT,

若查詢不到 Callee 目前的位置,再根據 Callee 的 SIP URI 分析 Callee 的 Home SIP Server 網域,若不在此網域的話,Redirect Server 便依照 Callee 的 SIP URI 得知 Callee 的 Home SIP Server 網域位 置,回傳一個 302 Moved Temporarily 回應訊息給 Proxy1,Proxy1 回 應一個 ACK Request 給 SIP Server1 的 Redirect Server 後再根據 302 訊息所指定的位址將 INVITE 訊息往該位址傳送。

4.SIP Server3 的 Redirect Server 收 到 INVITE 訊 息 後 , 會 先 至 Location Server 查詢 VLT,若查詢得到 Callee 目前 Outbound Proxy 的位址,會回傳一個 302 訊息給 Proxy1,若 302 所描述的位址是 Callee 目前的 Outbound Proxy 的位址的話,此後動作跳過 5.和 6.

直接執行類似 7. 以後的動作,但是是表示 Callee 目前在 SIP Server3 網域內的某個 Proxy Server 範圍下註冊活動,而不像 7. 之後所指的 SIP Server2 和 Proxy2;若在 Location Server 中的 VLT 中找不到 Callee 的位址(此例),便查詢 HLT,查詢 Callee 目前在哪一個網域 下,而所回傳給 Proxy1 的 302 訊息所表示的位置是 Callee 目前所 在的網域位置,並接著 5. 執行下去。

5.Proxy1 回應一個 ACK Request 給 SIP Server3 的 Redirect Server 再 根據 302 訊息所指定的位址將 INVITE 訊息往該位址傳送。

6.SIP Server2 的 Redirect Server 收 到 INVITE 訊 息 後 , 會 先 至 Location Server 查詢 VLT,查詢到 Callee 目前的 Outbound Proxy 位 置後,Redirect Server 回傳一個 302 Moved Temporarily 回應訊息給 Proxy1。

7.Proxy1 回應一個 ACK Request 給 SIP Server2 的 Redirect Server 再 根據 302 訊息所指定的位址將 INVITE 訊息往該位址傳送。

8.Proxy2 收到 INVITE 訊息後,先回傳一個 100 Trying 給 Proxy1,

Proxy2 再 查 詢 自 己 的 UVLT , 查 詢 得 到 Callee 的 位 置 後 便 將 INVITE 傳給 Callee。

9.Callee 收到 INVITE 後,在決定接受前會依照 INVITE 從 Caller 傳 過來的路徑反方向地回應一個 180 Ringing,此例會先傳給 Proxy2,

再傳給 Proxy1,Proxy1 再將訊息傳給 Caller。

10. Callee 決定接受 Caller 的 INVITE 後,一樣會像 180 Ringing 回傳

(四) 全域性移動下 Session 的結束

圖 13 BYE Cross the different Domain 1. 將 BYE 訊息傳給 Proxy1。

2. Proxy1 檢查 Callee 是否位在同一個 Proxy Server 下,不是的話 Proxy1 Server 便將 BYE 往 SIP Server 網域下的 Redirect Server 傳送。

3. Redirect Server 收到 BYE 後會先到 Location Server 查詢 VLT,若 查詢不到 Callee 目前的位置,再根據 Callee 的 SIP URI 分析 Callee 的 Home SIP Server 網域,若不在此網域的話,Redirect Server 便依照 Callee 的 SIP URI 得知 Callee 的 Home SIP Server 網域 位置,回傳一個 302 Moved Temporarily 回應訊息給 Proxy1,Proxy1 再根據 302 訊息所指定的位址將 BYE 訊息往該位址傳送。

4. SIP Server3 的 Redirect Server 收到 BYE 訊息後,會先至 Location Server 查詢 VLT,若查詢得到 Callee 目前 Outbound Proxy 的位 址,會回傳一個 302 訊息給 Proxy1,而 302 所描述的位址是 Callee 目前的 Outbound Proxy 的位址,此後動作跳過 5.)和 6.) 直 接 執 行 類 似 7.) 以 後 的 動 作 , 但 是 是 表 示 Callee 目 前 在 SIP Server3 網域內的某個 Proxy Server 範圍下註冊活動,而不是 像 7.) 之後所指的 SIP Server2 和 Proxy2;若是在 VLT 中找不到 Callee 的位址的話(此例),便查詢 HLT,查詢 Callee 目前在哪一個網域 下,而所回傳給 Proxy1 的 302 訊息所表示的位置是 Callee 目前所 在的網域位置,並接著 5.) 執行下去。

5. Proxy1 再根據 302 訊息所指定的位址將 BYE 訊息往該位址傳

送。

6. SIP Server2 的 Redirect Server 收到 BYE 訊息後,會先至 Location Server 查詢 VLT,查詢到 Callee 目前的 Outbound Proxy 位置後,

Redirect Server 回 傳 一 個 302 Moved Temporarily 回 應 訊 息 給 Proxy1。

7. Proxy1 再根據 302 訊息所指定的位址將 BYE 訊息往該位址傳 送。

8. Proxy2 收到 BYE 訊息後,查詢自己的 UVLT ,查詢得到 Callee 的位置後便將 BYE 傳給 Callee。

9. Callee 收到 BYE 後,會依照 BYE 從 Caller 傳過來的路徑反方向 地回應一個 200 ok,此例會先傳給 Proxy2,再傳給 Proxy1,Proxy1 再將訊息傳給 Caller。

10. Caller 收到 BYE 的 200 ok 後,雙方 Session 便結束。

相關文件