Showing posts with label protocol. Show all posts
Showing posts with label protocol. 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: [] [] [] [] [] []

Friday, August 25, 2000

我對資訊家電的淺見 -- Transductor System

對於一個有工程背景的資訊人員來說,光是告訴他一些“社會未來”、“科技未來”云云,或未來的生活會如何被資訊科技所顛覆…等──是不夠的。真正能讓他手蹈足舞的,並在內心感到悸動的,是讓其心靈深切地知道實作內容,因為這才能有著最紮實的感覺……

這次所要探討的是這一系列《我對資訊家電的淺見》最核心的部分,前面一系列的鋪陳,都是為了要讓大家能夠體會將要提出的這個軟體架構的設計理念。

這個軟體模型是一個用來實現多設備或多家電間“自動地”互通訊息,形成自動化家電“網路”的軟體架構。

這樣的軟體系統能夠使家電間自發形成的“通訊”網路呈現一整套服務給人們,提供人類一個“智慧型”的居家環境。

~~

    Transductor System

作者:Yukuan
(著作完成日期:6/30/2000)
(最後修改日期:8/25/2000)



  這回要介紹的是一個被命名為Transductor System的軟體架構,這個軟體系統能提供一個可行的機制,來讓多個機器間進行對話。

  這個軟體系統原本借用生物學的名詞,以Transducer命名,後來為了避免混淆,於是自創了一個新的字彙“Transductor”。

  當初選定“Transducer”,是由於Trandsducer這個字普遍用於電學及生物學上,後來發現,Transducer無論在電學上的用法或生物學上的用法都是取其類似“detector”的意思。

   經仔細考慮,決定自行合成一個新的字彙“Transductor”,以避免發生混淆。“trans-”代表跨越、轉換,“duct”就是輸送管、導 管,合起來再加字為變化就形成了“transductor”,引申義為──用來在不同傳輸管道或媒體間作轉換、中介的裝置。亦即“receptor”和 “effector”的合稱──

  receptor是生物學用詞,其意思類似detector,用來偵測或捕捉外界的物理變化、然後將這個變化的訊息傳遞到內部。

  effector則和receptor恰好相反,effector根據系統內部的訊息,傳遞到外界,造成外界的變化。

   系統架構

  Transductor System包含許多的Transductor Server(簡稱Transductor或T-Server)和最少一個Transductor Client(簡稱T-Client)。

  每一個典型的家電都可以視為(或改裝成)一個T-Server。每個T-Server都含有receptor和effector。receptor負責為家電接收使用者的指示;而effector負責提供最終的服務給使用者。

  各個T-Server(或家電)間是透過T-Client來互通訊息(message)的。T-Server傳給T-Client的訊息稱為“事件”(event);相反的,T-Client傳給T-Server的訊息稱為“請求”(request)。

  event來自T-Server自己內部狀態的改變,而這個改變有必要讓其他T-Server或T-Client得知。最常見的event往往是經由receptor接收使用者的輸入引發的。

  T-Server接收到的request往往會引發effector的動作,這個動作最終的接收者或感受者通常就是家電的使用者。

  T-Client在運作時要先取得各個T-Server相關的Transductor Specification,以作為系統運作或錯誤偵測的基礎。

  每個T-Server都會在T-Client中被分配到一個event pool。T-Server傳到T-Client的event會被放在對映的event pool中,以供進一步處理。

  T-Client中存有許多的rules,這些rules可以由使用者自訂,或透過廠商提供。rule用來指定“特定的events模式”和“相關的requests”間的“映射模式”。

  T-Client中的rules經由events的觸發(trigger)透過inference engine來達成各個T-Server間的溝通與互動。

  為了方便描述,由T-Server傳至T-Client的原始events可以透過combination的方式組成較高階的event。requests也可以透過combination的方式重組成較高階的request。


~~

這裡只提出“系統架構”的概要。至於更進一步的細節,歡迎有興趣的同好直接跟我討論。

Tags: [] []

我對資訊家電的淺見 -- 機器間的對話

有了前面幾回的鋪陳,從這一回開始,就讓我們逐漸挑明、試著談談像 Elisa 那樣的妙管家系列產品,其背後必需有哪些設計理念支撐著?要整合哪些相關技術才能達成這樣的系統…

~~

    機器間的對話

作者:Yukuan
(著作完成日期:8/24/2000)
(最後修改日期:8/25/2000)



   在上一回的故事中可以很容易地觀察到──像 Elisa 這樣的系統,其底層有許許多多分散在室內各個角落的資訊家電,這些家電都可以視為 Elisa 身體 的一部份,雖然家電是分散各處的,但提供給人們的服務卻是成套的,是整合性的。這個高度整合的整體,就是鍾教授所面對的 Elisa 。

  我們可以想像,鍾教授到商店裡買了一組新的資訊家電,在家電買回後,經過Elisa的“身分識別系統”作進一步的確認後(也就是讓 Elisa 體內免疫系統對“新家電”不會產生“組織排斥”),就自動安裝完成、成為 Elisa 身體的一部份…

  像這樣的系統,要如何達成呢?

  根據“組織原理”或“控制理論”的研究:個別的、獨立的或分散各處的分子,要形成一個整合性的組織或達成特定任務的系統,那各個組成分子間必定要有訊息在其間流動。同樣的道理,一個“智慧型”的居家環境,其底層眾多的資訊家電間也要進行某種形式的“對話”──

   如果我們將每一個家電都嵌入一些簡單的“通訊”模組,並讓家電彼此間都能夠透過這個通訊模組互通訊息,形成家電的訊息“網路”,這個家電間的訊息網路 機制能使家電們“自動自 發地”提供成套的、高度整合的服務,以便利人們的居家生活。於是,我們就有一個“智慧型”的居家環境……

  至此,答案已經很明顯了。要實現一個這要的系統,最起碼的要求是,要有一個機制,這個機制能使家電間自由地進行對話,姑且稱之為“機器間的對話”吧。

  大量的機器間要互相對話,一個理論上可行且合乎成本的方式就是提供幾個大型的“場所”,並讓有溝通需求的機器都到這樣的場所進行對話。當然,機器間要聽懂彼此的談話內容,最簡單的方法就是讓他們用同一種語言溝通…

~~

下一回開始,會提出一個可讓資訊家電間作充分對話、以提供一個整合性的、可作成套服務來便利人類生活的軟體架構── “Transductor System”。

Tags: [] []