Showing posts with label SIP. Show all posts
Showing posts with label SIP. Show all posts

Tuesday, June 17, 2003

Session Initiation Protocol

就 VoIP 網路而言, SIP是一個非常有彈性而且功能強大的通訊協定, SIP 能夠更有力的支援許多智慧型的電話網路服務及各種使用者平台,並且能夠快速而有效的發展許多先進的功能。

這次是要實作 SIP protocol 的 redirect server 。我決定讓它能夠支援 multi-user ,每次由 user end 那 send 出的 request 都會在 server 上由個別的 Thread 處理。

我將整個架構切割成 SipStack, SipProvider, SipListener 等三個 class 或 interface 。

  • SipStack 將底層 network protocol 封裝起來,供 SipProvider 使用。
  • SipProvider 則提供基本的 SIP message 傳遞及分送。並將收到訊息後的對應動作委託給SipListener 處理。
  • SipListener 是一個 interface ,用來傾聽 SipProvider 送來的 event ,並處理。

此外, SipHeader 被設計來剖析 SIP message 的 header。

最後, RedirectServer 則 implements 了 SipListener 這個介面。 RedirectServer 也處理了所有關於 SIP redirect server 的高階協定。

由於要支援 multi-thread ,且軟體以 OO設計,再加上此 SIP 是 application layer 的 protocol ,所以決定以 Java 語言實作。

若只滿足於達到作業的功能要求,程式部分還滿單純的。唯之前並未真正接觸過網路程式設計,所以費了一翻功夫在相關程式寫法的摸索。

此外,我還為本程式立下 reusable 和 extendable 的目標。所以在分析及設計上費了一番功夫。

這個 SIP AP 的底層是採用 UDP 協定。原則上,在目前設計的架構下我們可以很容易地切換到 TCP 。也可以很容易地改寫成其他 SIP AP 。

沒力氣再掰下去了,有興趣的話,這裡也附上原始碼。請自行參照。

Tags: [] [] [] [] [] []