• 沒有找到結果。

中華大學 碩士論文

N/A
N/A
Protected

Academic year: 2022

Share "中華大學 碩士論文"

Copied!
85
0
0

加載中.... (立即查看全文)

全文

(1)

中華大學

碩士論文

跨網域之網路服務搜尋架構與家用串流服務系統

系所別:資訊工程學系碩士班 學號姓名:M09602008 林秉陽 指導教授:翁文彥 博士

中華民國九十八年八月

(2)

摘要

近年來隨著頻寬的增加,對於多媒體串流服務的需求也跟著提高,因此除了 提高多媒體串流的 QOS 外,更需提高其便利性。Service Location Protocol (SLP) 提供了一個能動態搜尋環境內可用服務的位置及相關資訊的協定。無論使用 PC 或手持裝置,都能透過 SLP 來搜尋多媒體服務的提供者,經由網路連接遠端 Media Server,取得多媒體串流服務,形成無所不在的網路環境。Session Initiation Protocol (SIP)靠著簡單且可擴充的特性,在建立會議連線方面,已成為被廣泛使 用的通訊協定。因此本篇提出一個同儕式 SLP 架構,讓使用者能夠跨網域搜尋 服務位置,並透過 SIP 建立起多媒體串流服務,結合 session mobility 議題進行連 線的移轉,並對於在 SIP 環境中,不支援多媒體串流基本控制功能的議題進行討 論。

(3)

Abstract

In home network, how to find and use the multimedia stream service are very important issues. In the paper, we proposed peer to peer service location architecture, based on the Service Location Protocol, to support inter-domain service discovery. In our proposed architecture, the directory agent will work as the prosy service, cache the discovery information, which is discovered from another directory agent by the user, and provide the information when another user demands them. We also improve the Session Initiation Protocol to provide the stream control and session mobility for the stream service. The experiment results show the correctness and performance of our system architecture.

(4)

誌謝

感 謝 實 驗 室 的 同 學 詠 程 、 哲 禎 , 在 我 撰 寫 這 篇 論 文 的 時 候 提 供 我 許 多 援 助,感 謝 父 母 的 關 愛 讓 我 能 無 後 顧 之 憂 的 全 心 投 入 論 文 的 撰 寫 , 感 謝 陳 旻 秀 老 師 的 諄 諄 教 誨 , 在 我 遇 上 研 究 瓶 頸 時 提 供 我 許 多 意 見 , 並 不 厭 其 煩 的 再 三 協 助 我 校 稿 , 使 得 這 篇 論 文 能 夠 順 利 問 世 。 另 外 誠 摯 的 感 謝 三 口 試 委 員 翁 文 彥 教 授 、 陳 旻 秀 教 授 與 嚴 力 行 教 授 在 百 忙 中 撥 空 蒞 臨 指 導,並 給 予 論 文 的 指 正 與 提 議 , 使 這 篇 論 文 更 趨 於 完 善 。

有 你 們 的 協 助 讓 我 在 研 究 所 期 間 成 長 茁 壯 , 謝 謝 你 們 。

(5)

目錄

第壹章 序論... 1

1.1 介紹... 1

1.2 論文架構 ... 3

第貳章 相關協定與研究 ... 4

2.1 UPnP 簡介... 4

2.1.1 UPnP 運作... 5

2.2 SLP 簡介 ... 7

2.2.1 SLP 元件 ... 8

2.2.2 SLP 運作 ... 8

2.2.3 SLP 服務位置 ... 9

2.2.4 SLP 訊息 ... 10

2.3 SIP 簡介 ... 11

2.3.1 SIP 元件 ... 11

2.3.2 SIP 訊息 ... 13

2.4 OSGi 簡介 ... 14

2.4.1 OSGi 架構 ... 15

2.4.2 OSGi 優點 ... 17

2.5 相關研究 ... 18

第參章 系統架構與流程 ... 21

3.1 系統架構 ... 21

3.2 同儕式 SLP 架構及查詢流程 ... 23

3.3 SIP 架構及連線流程 ... 27

3.3.1 請求連線 ... 28

3.3.2 暫停播放 ... 29

3.3.3 轉移連線 ... 30

3.3.4 取回連線 ... 32

第肆章 實驗環境 ... 34

4.1 實驗環境 ... 34

4.2 SLP 實驗架構 ... 34

4.2.1 DA 啟動流程 ... 35

4.2.2 SA 註冊程式流程 ... 35

4.2.3 UA 向 DA 查詢服務程式流程 ... 39

(6)

4.3 SIP 程式架構 ... 42

第伍章 實驗結果 ... 48

5.1 實驗環境 ... 48

5.2 實驗結果 ... 49

5.3 系統效能測試 ... 66

5.3.1 系統效能測試結果 ... 68

第陸章 結論與未來展望 ... 74

參 考 文 獻 ... 75

(7)

圖片目錄

圖 2-1 UPnP 元件 ... 5

圖 2-2 UPnP 運作流程 ... 5

圖 2-3 UPnP Discovery ... 6

圖 2-4 分散式互動環境 ... 8

圖 2-5 集中式互動環境 ... 9

圖 2-6 SLP Message Header ... 10

圖 2-7 SIP 通訊流程 ... 13

圖 2-8 SIP 訊息格式 ... 13

圖 2-9 OSGi 平台架構 ... 15

圖 2-10 Bundle 架構 ... 16

圖 2-11 Bundle Life Cycle ... 16

圖 2-12 Service Registry ... 17

圖 3-1 系統架構 ... 22

圖 3-2 Substitute Request Header 格式 ... 24

圖 3-3 SLP 註冊、查詢流程 ... 26

圖 3-4 MediaService Header 格式 ... 28

圖 3-5 請求連線流程 ... 29

圖 3-6 暫停播放流程 ... 30

圖 3-7 轉移連線流程 ... 31

圖 3-8 取回連線流程 ... 33

圖 4-1 程式實作架構 ... 34

圖 4-2 DA 環境架構 ... 35

圖 4-3 SLP 架構 ... 36

圖 4-4 SA 註冊程式流程 ... 37

圖 4-5 UA 向 DA 查詢程式流程 ... 41

圖 4-6 SIP 建立連線程式流程 ... 44

圖 5-1 SLP 查詢情境 ... 48

圖 5-2 SIP 實驗情境 ... 49

圖 5-3 OSGi GUI Shell ... 50

圖 5-4 OSGi 命今提示字元 ... 50

圖 5-5 Media Server GUI ... 51

圖 5-6 SIP Register 封包 ... 51

圖 5-7 SLP 尋找 DA 封包... 52

圖 5-8 SLP 服務註冊封包 ... 52

圖 5-9 SIP GUI ... 53

圖 5-10 SIP 登入畫面 ... 53

(8)

圖 5-11 SLP Service Request 查詢封包 ... 54

圖 5-12 其他網域 DA 搜尋 ... 55

圖 5-13 Substitute Request ... 55

圖 5-14 DA1 對 DA2 查詢服務 ... 56

圖 5-15 DA2 查詢服務回覆 ... 56

圖 5-16 DA1 查詢服務回覆 ... 57

圖 5-17 SLP 查詢服務結果 ... 58

圖 5-18 SIUA Media 頁面 ... 59

圖 5-19 SIUA 接收串流 ... 60

圖 5-20 Device 頁面 ... 61

圖 5-21 發送 REFER 前先暫停串流服務 ... 62

圖 5-22 REFER 封包 ... 62

圖 5-23 UA 轉移成功 ... 63

圖 5-24 Nested REFER 封包 ... 64

圖 5-25 串流取回動作 ... 64

圖 5-26 UA 取回成功 ... 65

圖 5-27 連線轉移及取回數據圖 ... 65

圖 5- 28 跨網域查尋服務測試環境 ... 66

圖 5- 29 Media Server 效能測試環境 ... 67

圖 5- 30 干擾 PC3 測量時間 ... 68

圖 5- 31 T1 時間 (干擾 PC3) ... 69

圖 5- 32 T2 時間 (干擾 PC3) ... 69

圖 5- 33 干擾 PC2 測量時間 ... 70

圖 5- 34 T1 時間 (干擾 PC2) ... 70

圖 5- 35 T2 時間 (干擾 PC2) ... 71

圖 5- 36 Media Server 效能測試時間 ... 72

圖 5- 37 建立連線時間 ... 72

圖 5- 38 平均傳輸速率 ... 73

(9)

表格目錄

表 2-1 SIP Request Method ... 14

表 2-2 SIP Response status code ... 14

表 5-1 設備規格 ... 66

表 5-2 設備規格 ... 67

(10)

第壹章 序論

1.1 介紹

近十餘年來隨著資訊技術的蓬勃發展,帶動了相關網路應用科技的成長,也 加速了各種類型的網路服務應用的開發。隨著網路頻寬的快速增加,許多網路應 用服務也逐漸造福使用者,例如現在廣受喜愛的影音部落格 vlog、無名小站,或 者點閱率超高的 youtube,顯示出對於影音需求的提高。另外一方面,隨著寬頻 網際網路、數位家庭網路時代的來臨,人們不再只是想單純的使用個人電腦透過 網際網路來和其它電腦交換彼此的資訊,而是想將各式各樣的電子電器設備都加 上網路化,使得使用者無論走到哪裡皆可以透過網路來取得這些設備所分享出來 的資源。

在一個理想的數位家庭環境中網路化的設備是不可或缺的,連接上網後的設 備提供了多種的應用服務,例如居家安全偵測、遠端照護、數位通訊或者多媒體 串流服務。多樣的應用服務存在了許多不同的通訊協定,像是 Bluetooth、UPnP、

1394、SIP 等等。如此多的通訊協定對操作的使用者造成了不方便,因此如果有 一套標準是用於整合各種不同通訊協定,當設備加入家用環境時就能自動被安裝 使用,並能彼此互相連通、的交換訊息和資源,必定為使用者帶來便利。事實上,

跨通訊協定整合平台介面的設計有許多的架構已被提出,其中又以 Open Services Gateway Initiative (OSGi)這個組織所提出的開放式服務閘道器引起多家廠商與研 究團隊的注意。OSGi 所定義的開放式服務平台目的是要使得遠端軟體服務供應 商所提供的應用程式與加值服務,能視使用者需求,隨時下載至靠近使用者的閘 道器上,並且自動安裝執行。因此使用者可以透過 OSGi 遠端控制家庭網路中的 家用設備。

當這些各式各樣的設備能夠藉由 OSGi 服務平台來互相的溝通存取後,我們 發現在家庭網路、辦公室網路中,存在著非常多的設備,這些設備們本身所提供 的服務可能不只一種,我們怎麼有辦法能掌握且牢記整個網路的設備有提供哪些

(11)

服務?哪些功能?如何進行存取呢?甚至當我們來到一個新的環境,我們根本完全 不知道當地有哪些裝置可以使用時,即便當地有 OSGi 服務平台,我們也無從得 知服務如何取得。

網路服務(Service Location)資源動態管理就是為了解決這類問題所產生的解 決方案。Service Location 顧名思議就是指服務的位址,例如 Media Server 提供多 媒體串流服務、印表機提供影印服務等等。在網路中的設備若是要提供服務,必 須至少要有一個位址(IP 或是 Hostname),做為服務傳遞、封包繞送的依據。在 現今有許多方案皆能做到動態管理網路服務的機制,像是 UPnP、JXTA、LDAP、

NAPTR、SLP 等等,它們皆能幫助使用者來動態的尋找、更新、提供、刪除、

與控制目前在網路中的服務。而其中又以 Service Location Protocol (SLP)用途最 為多元廣泛,SLP 是由 IETF 所制定的標準通訊協定,透過其中不同角色的元件 可以適用於各式各樣的網路架構與不同範圍的網路中。另外,SLP 除了提供完備 的通訊機制外,更具備有獨特的 URI 格式能將不同網路架構中設備的網路服務 位址抽象化,並為此網路服務位址提供一系列的描述屬性,分門別類的提供給使 用者查詢過濾使用,達到統一表現所有動態服務管理機制的目的。

當使用者掌握了環境中可用的服務後,要如何控制設備也成為重要的研究議 題。Session Initiation Protocol (SIP)可用來做為使用者遠端連線至 OSGi 來控制家 庭網路設備的依據。近年來,SIP 靠著其簡單、高擴充、高移動的特性,已經被 廣 泛 的 應 用 在 電 信 網 路 領 域 中 。 Voice over IP (VoIP) 與 Third Generation Partnership Project (3GPP)等組織決定採用 SIP 為信號溝通方面的通訊協定,因此 可以預期未來大部分的行動設備以及網路家電也都會支援 SIP。

隨著網路服務技術逐漸成熟的同時,許多服務應用的架構也不斷的被提出,

以影音娛樂為例,為了實現使用者對於影音串流的需求,中華電信推出 MOD 方 案,提供隨點即看的數位影音頻道,未來也可能有更多的廠商加入多媒體串流服 務的提供。多媒體服務的提供者不僅僅存在於一個家用網路環境,甚至存在於不 同網域,由不同的廠商所提供,所以透過 SLP 在家用網路內搜尋多媒體服務是

(12)

不夠的。因此本篇提出了同儕式 SLP 的架構,提供了一個跨網域搜尋服務的架 構,讓使用者能對不同網域的提供者搜尋多媒體服務,並透過 SIP 協定建立起多 媒體串流。

另一方面以 SIP 為基礎的多媒體串流服務在控制中仍存在些許問題,SIP 雖 能快速的建立連線服務,但對於進行中的串流卻沒有控制的能力,尤其在進行多 媒體串流服務時,經常需要用到暫停,播放,快轉的相關指令。為此本篇針對多 媒體串流的基本控制功能,利用 SIP 的高擴充的特性,定義一個擴充標頭,來實 現基本的串流控制功能。

此外 SIP 提供四種類型的移動管理模式[1],分別是 terminal mobility、session mobility、service mobility、personal mobility。Session mobility 又是其中最重要的 議題,本篇延續前兩篇研究錯誤! 找不到參照來源。[3],將原有的視訊串流服務 加入了多媒體串流服務的功能,將雙向的影音串流修改成單向串流,並賦予連線 轉移的功能,實現 session mobility 議題。

1.2 論文架構

本篇論文將在第二章簡介相關協定與研究的課題,分別為 Service Location Protocol (SLP)、Universal Plug and Play (UPnP)、Session Initiation Protocol (SIP)、

Open Services Gateway Initiative (OSGi)。第三章為本篇論文的系統架構,詳細的 說明同儕式 SLP 的運作,以及多媒體串流建立的流程,並且介紹本篇所定義的 SIP 標頭。在第四章為系統的實作,包含 SLP、Media Server 以及 UA 的程式架 構。在第五章我們提出一個多媒體串流服務的情境當作我們的實驗環境以及呈現 實驗結果。最後於第六章中,我們將為本篇論文做總結。

(13)

第貳章 相關協定與研究

2.1 UPnP 簡介

U P n P 全 名 為 U n i v e r s a l P l u g a n d P l a y [ 4 ], 由 微 軟 所 提 出 , 以 隨 插 即 用 的 概 念 運 用 於 P e e r - t o - P e e r 架 構 的 網 路 環 境 下 , 並 透 過 現 有 標 準 協 定 例 如 H T T P 、 T C P 、 U D P 、 I P 、 X M L 等 進 行 運 作 , 讓 任 何 設 備 不 需 要 安 裝 驅 動 程 式 即 可 彼 此 互 相 通 訊。此 構 想 源 自 於 D H C P, 希 望 除 了 讓 設 備 的 網 路 位 址 自 動 取 得 之 外 , 其 它 設 定 也 能 自 動 化 取 得 , 以 達 到 操 作 容 易 、 有 彈 性 , 只 要 設 備 一 連 上 網 路 , 無 論 是 在 家 裏 或 是 在 公 司 等 任 何 地 點 , 皆 能 和 其 他 設 備 互 相 發 現 、 連 結 、 使 用 以 及 控 制 , 並 且 不 需 要 做 任 何 的 設 定 。

U P n P 的 基 本 元 件 有 三 個 , 如 圖 2 - 1 所 示 :

1 . 服 務 ( S e r v i c e ) : 在 U P n P 裡 , 一 個 服 務 都 提 供 了 一 組 變 數 , 用 來 記 錄 此 服 務 目 前 的 狀 態 , 以 及 表 現 服 務 的 動 作 。 例 如 , 印 表 機 列 印 服 務 , 可 能 包 含 了 像 是 開 始 、 停 止 列 印 的 動 作 , 以 及 目 前 是 否 為 空 閒 或 忙 碌 的 狀 態 變 數 資 訊 。

2 . 裝 置 ( D e v i c e ) : 存 放 服 務 和 巢 狀 裝 置 的 容 器 。 例 如 印 表 機 。 3 . 控 制 點 ( C o n t r o l P o i n t ) : 為 U P n P 中 控 制 設 備 的 角 色 , 用 來 取 得 某 裝 置 的 描 述 說 明、服 務 資 訊、傳 送 動 作 訊 息 來 控 制 服 務 、 並 可 向 有 興 趣 的 服 務 訂 閱 其 狀 態 資 訊 , 當 服 務 狀 態 發 生 改 變 時 , 事 件 伺 服 器 便 會 回 傳 事 件 給 控 制 點 。

(14)

圖 2-1 UPnP 元件 2.1.1 UPnP 運作

當 UPnP 設備連接到網路後,會有下列幾項基本運作流程,如圖 2-2:

圖 2-2 UPnP 運作流程

1. 定址 (Addressing):當設備連接上網路之後,必需取得一個 IP 位址,

而 UPnP 網路連線的基礎是 TCP/IP 通訊協定套件,此套件主要目的就

(15)

是負責定址任務,除了使用者自行設定 IP 位址之外,UPnP 設備將會搜 尋 Dynamic Host Configuration Protocol (DHCP)伺服器,並取得所發配 的 IP 位址。

2. 探索 (Discovery):當設備取得 IP 位址之後,就會進行服務發佈以及服 務搜尋的動作。而 UPnP 探索動作所使用的協定為 Simple Service Discovery Protocol (SSDP)簡單服務發現協定,其中內建於 HTTPMU (Multicast)和 HTTPU (Unicast)裡,使裝置宣傳本身有提供哪些服務,以 及控制點如何發現網路上有哪些服務,並進而取得服務的資訊。如圖 2-3,當設備加入網路後,會以 Muticast 的方式發送 SSDP 訊息,發佈 本身的設備及服務,內容包含類型,識別碼以及一份描述相關資訊的 XML 文件。當設備要主動搜尋所需要的服務時,也會以 Muticast 的方 式發送 SSDP 中的 M-SEARCH 訊息來尋找服務,而被尋找的設備將以 Unicast 的方式回覆其相關資訊。

圖 2- 3 UPnP Discovery

3. 描述 (Description):為了深入了解該裝置的功能及如何控制,UPnP 定 義了 Description 訊息,提供裝置的描述。其中描述部份分成設備描述

(16)

以及服務描述。設備描述其中包含訊模組名稱及編號、序列號、製造商 名稱等等。服務描述其中包含服務的命令、服務動作、服務回應、控制 參數等等。

4. 控制 (Control) :當控制點取得設備描述後必需更進一步了解此設備指 令、動作、服務回應以及每一個動作的參數或引數。當取得詳細 UPnP 描述後,就能進行控制動作。而 UPnP 所使用的控制協定為 S i m p l e O b j e c t A c c e s s P r o t o c o l ( S O A P ) 簡 單 物 件 存 取 協 定 , 此 協 定 定 義 了 如 何 使 用 X M L 和 H T T P 來 執 行 遠 端 程 序 呼 叫 的 方 式 , 為 網 際 網 路 上 進 行 R P C 通 訊 的 標 準 , 主 要 功 能 用 來 控 制 裝 置 。

5 . 事件通知 (Event) :服務進行的整個時間內,只要變數值發生了變化或 者模式的狀態發生了改變,就產生了一個事件,系統將修改事件列表的 內容。隨之,事件伺服器把事件向整個網路進行廣播。另一方面,控制 游標也可以事先向事件伺服器預約事件資訊,保證將該控制游標感興趣 的事件及時準確地傳送過來。而 UPnP 發佈 event 的格式為 Generic Event Notification Architecture (GENA)一般事件通知結構,主要用來處理如何 傳送訂閱的訊息以及如何接收通知訊息。

6. 呈現 (Presentation):呈現則是用 HTML 為基礎的介面用以檢視及控制 裝置的狀態,如果裝置有進行呈現網頁 URL,控制點就可以從這個 URL 取得網頁,並將該網頁載入到瀏覽器,根據該網頁的功能容許使用者控 制裝置,以及檢視裝置狀態。

2.2 SLP 簡介

Service Location Protocol (SLP)是由 IETF 所制定的標準協定,它提供了一個 有彈性的架構,讓使用者能動態的在網路中查詢可用服務的位置,在繁雜的服務 中,也能以 Light-weighted Directory Access Protocol (LDAP)語法對查詢的服務過 濾篩選。SLP 屬於 Client/Server 架構,Server 端會收集環境中所有服務的資訊以

(17)

供 Client 端查詢。Client 端能對 Server 發出查詢服務請求或者註冊服務請求。

2.2.1 SLP 元件

根據[5]和[6],SLP 由三個元件組成:

1.User Agent(使用者代理人 UA):主要用來替使用者向 Service Agent 或是 Directory Agent 查詢所需要服務的位址以及相關資訊的應用程式。多半為一台 PDA、手機、或是 Note Book 等可移動的電腦設備。

2.Service Agent(服務代理人 SA):為一個提供服務的角色,部署於一個區域中,

會對 UA 或 DA 宣傳一個或多種的服務,較適用於一般小型區域網路。

3.Directory Agent(目錄代理人 DA):為一個蒐集服務的角色,會將多個 SA 所宣 傳的服務存於自身資料庫,並提供 UA 查詢使用。

2.2.2 SLP 運作

SLP 的運作可分為兩種,分別為分散式互動與集中式互動。分散式互動環境 可為一個或多個 SA 以及一個或多個 UA 所構成,適用於小型的區域網路裡。集 中式互動環境通常都會擁有較多個 SA,相對的網路負載也會比較重,因此需要 一個或多個 DA 來集中管理服務,儲存多個 SA 所註冊的服務。因此 UA 則可以 直接對 DA 查詢服務,不需要向多個 SA 進行查詢,以降低網路負載。

如圖 2-4 為 SLP 分散式互動的環境。為一個小型區域網路,由多個 SA 負責 宣傳本身提供的服務,供 UA 做查詢。首先,UA 對環境中所有 SA 以 multicast 方式發送 Service Request 查詢服務,以取得所需服務資訊。當 SA 有 UA 所查詢 的服務資訊,就會以 unicast 方式對 UA 發送 Service Reply 訊息。如果該網路沒 有支援 Multicast 的話,即採用 broadcast 方式進行。

圖 2-4 分散式互動環境

(18)

在集中式互動的環境下需要一個或多個 DA 來集中管理 SA 的服務資訊,應 用於較大的網路環境中。首先 UA 及 SA 可以經由兩種方式知道 DA 的所在位址,

第一種是 DA 會定時的以 multicast 的方式發送 DA Advertisement 給 UA 及 SA。

第二種是 UA 及 SA 以 multicast 的方式發送 Service Request 的請求訊息,其查詢 服務類型為 service︰directory-agent,用以表示要尋找 DA 這項服務,當 DA 收到 時,會以 unicast 的方式回覆 DA Advertisement 訊息,以告知位址所在。

如圖 2-5,當 SA 知道 DA 所在位址後,就能以 unicast 方式發送 Service Registration 訊息將服務註冊到 DA 中,註冊完成後 DA 會回覆一個 Service Acknowledge 表示註冊成功。同樣的 UA 也能以 unicast 方式對 DA 發送 Service Request 查詢服務,DA 搜尋到服務後,將以 Service Reply 訊息回覆給 UA。

圖 2-5 集中式互動環境 2.2.3 SLP 服務位置

SLP 協定中對於服務的描述定義了以下的格式, service︰<srvtype>︰

//<addrspec>。<srvtype>即為 SLP 服務類型,可分為兩種模式一般類型以及抽象 類型。在一般類型的表示模式通常為標準的網路協定,例如 service︰http。而在 抽象類型表示格式為 service︰<abstract-type>︰<concrete-type>,<abstract-type>

代表抽象的服務類型,可以由服務提供者自行定義。<concrete-type>則表示實際 的服務類型,如 http,例如 service︰printer:http。<addrspec>則為 Hostname 或

(19)

是 IP Address。

2.2.4 SLP 訊息

SLP 封包是由一個 SLP Message 標頭加上 SLP Message 所組成,如圖 2-6 為 SLP Message Header 格式。Version 欄位用來描述 SLP 的版本。Function-ID 欄位 用來描述 SLP Message 的形式。Length 欄位用來描述 SLP 封包的長度。OFR 為 控制旗標。XID 欄位為連線序號。Language Tag 欄位用來描述訊息發出需求以及 回應所要使用的共同語言(如 en、de)。

而控制旗標共有三個,<O>代表 OVERFLOW Flag(0x80),用來表示訊息是 否有超過資料包的長度限制。<F>代表 FRESH Flag(0x40),當 SA 向 DA 重新註 冊某服務時,若設定此旗標,則蓋過原先的服務訊息,若沒設定則代表更新原先 服務訊息的某些內容。<R>代表 REQUEST MCAST Flag(0x20)。用來決定發佈的 訊息是否要使用 multicast 來發送。

圖 2-6 SLP Message Header

SLP 定義了以下 11 種 SLP Message 的形式:

1. Service Request:用於尋找服務。使用者可依照個人的喜好,設定想搜尋的 服務類型、服務範圍(scope-list 欄位)、以及設定某些服務的屬性。

2. Service Reply:主要為 SA 或 DA 回傳查詢結果以及回覆錯誤訊息。回覆的 資訊將存放於 URL Entry 欄位,其中包含了完整的服務資訊,例如服務位 置、服務的存活時間、以及安全認證等等。

3. Service Registration:為 SA 向 DA 註冊服務所發送的訊息,當 DA 回傳 Service

(20)

4. Service Deregister:用於 SA 向 DA 註銷服務所發送的訊息。當 DA 回傳 Service Acknowledgment 確認訊息後即代表註銷成功。

5. Service Acknowledge:用於 DA 回覆 SA 註冊成功的訊息。6.Attribute Request:

UA 可以使用此訊息來得知某個服務所提供的屬性 ( 如 service : http : //myhost.com)或某服務類型範圍內,所有服務的屬性(如 service:http)。並 可依 Tag-list 來取得所需要的幾個屬性值,不需全部取得。

6. Attribute Request:UA 可以使用此訊息來得知某個服務所提供的屬性或某服 務類型範圍內,所有服務的屬性。

7. Attribute Reply:為 SA 或 DA 回傳符合的屬性資訊給 UA,回傳的屬性資訊 則存於在 attr-list 欄位中。

8. DA Advertisement:用於 DA 宣傳本身資訊的訊息。URL 欄位內容為 service:

directory-agent://<addrspec>)。

9. Service Type Request:UA 可以使用此訊息來得知目前網路上的 SA 或 DA 提供了哪些服務類型(可查詢 Naming Authority)。

10. Service Type Reply:為 SA 或 DA 回傳所有的服務類型給 UA。

11. SA Advertisement:用於 SA 宣傳本身資訊的訊息,URL 欄位內容為 service:

service-agent://<addrspec>。

2.3 SIP 簡介

Session Initiation Protocol (SIP)為一種連線服務管理的通訊協定,由哥倫比亞 大學教授和其研究小組於西元 1996 年向 IETF 所提出的草案,並發佈於 RFC3261[1]。SIP 擁有簡單且可擴充的特性,能夠快速的建立、修改及終止擁有 影像或音訊的互動式會議連線,屬於 Client/Server 的架構。

2.3.1 SIP 元件

SIP 透過 URI 賦予獨一無二的 SIP 帳號,用來當作 SIP 終端連線的依據,其 格式為<帳號>@<Domain>,例如 Bob@chu.edu.tw。在[1]的定義中,SIP 主要由 四個角色所組成,分別為 User Agent、Registrar Server、Proxy Server、以及 Redirect

(21)

Server。

如圖 2-7,每個 User Agent 都具有一個 SIP URI,可以扮演 Client 端的角色 發送 SIP 訊息,也可以扮演 Server 端的角色接收 SIP 訊息,為建立連線的終端角 色。Proxy Server 為 SIP 訊息轉送的角色,當 Client 要對 Server 發送 SIP 訊息時,

會先將 SIP 訊息送至 Proxy Server,透過 Proxy Server 向 Registrar Server 查詢 Server 端的位址資訊。

Registrar Server 負責管理並維護 Domain 內 User Agent 的 SIP URI 資訊,當 使用者將 SIP URI 和密碼登入至 Registrar Server 中時,便會將 SIP URI 對應 IP 位址儲存到資料庫中。Proxy Server 查詢到 IP 資訊後,就能依 Server 端對應的 IP 位址發送 SIP 訊息。

當 Server 端的位址不在同一個 Domain 時便查詢不到 Server 端的位址資訊,

因此 Proxy Server 會向 Redirect Server 查詢 Server 端所在地的 Proxy Server。

Redirect Server 負責紀錄每個區域 Proxy Server 的資訊,因此 Proxy Server 就能向 Domain B 的 Proxy Server 發送訊息,將 Client 的 SIP 訊息傳送到 Server 端,SIP 連線完成後,即建立 RTP 串流連線。

(22)

圖 2-7 SIP 通訊流程 2.3.2 SIP 訊息

SIP 訊息包含三個部份,分別為 start-line、message-header、以及

message-body,如圖 2-8。start-line 的格式根據訊息類型為 Request 或 Response 有所不同。當訊息類型為 Request 時,start-line 的格式為<Request Method><SIP URI><SIP 版本>。基本的 Request Method 分為 6 種,如表 2-1。當訊息類型為 Response 時,start-line 的格式為<SIP 版本><Status Code>,Status Code 描述著 Request 執行情況。基本的 Response Status Code 分為 6 種,如表 2-2。

圖 2-8 SIP 訊息格式

(23)

表 2-1 SIP Request Method

表 2-2 SIP Response status code

在[1]中定義了許多個 SIP 的 message-header,例如 Via、From、To、Call-ID、

Content-Type、Content-Length 等等。總共分成四類,分別為 General-header、

Entity-header、Request-header、Response-header。而在 message-body 訊息主題部 份,是透過 SDP 協定攜帶協商訊息進行溝通。

2.4 OSGi 簡介

Open Service Gateway initiative (OSGi)為 OSGi Alliance 所制定的一個開放式 的標準以及服務平台[7],起源於 1999 年三月,其組織成員包括世界各大廠商如 IBM、Intel、Nokia、Sony 等等。OSGi 服務平台為一個家用閘道器,能夠連接內 外部網路。對內能集中管理家用網路服務並達到服務分享的功能,對外能向遠端 服務提供者下載應用程式或加值服務,並在平台上自動安裝及執行。其跨平台及

(24)

可攜性高的特性,經常運用在家用、車用以及行動設備上。

2.4.1 OSGi 架構

如圖 2-9 所示,OSGi 建構於 Java Virtual Machine (JVM)之上,是以 JAVA 為 基礎的平台,繼承了 JAVA 跨平台、可攜式的特性。建構於 JVM 上的為 OSGi Framework,負責應用程式的運算。執行在 OSGi Framework 中的應用程式稱為 Bundle,Bundle 可被動態的安裝、更新、移除,皆不需要重新啟動 OSGi 服務平 台。而 Bundle 所提供的介面服務稱為 Service, Bundle 可以將自身所提供的 Service Export 給其他 Bundle 使用,當然也能 Import 其他 Bundle 所提供的服務 供自己使用。

圖 2-9 OSGi 平台架構

實際上,Bundle 為一個 JAVA Archive (JAR)檔,如圖 2-10,其中包含了 Manifest 檔,用來描述此 Bundle 的詳細資訊,例如名稱、版本、啟動類別位址 以及要 Import 和 Export 的 Package 或 Service。Activator,為 Bundle 的啟動類別,

實作了 Start 以及 Stop 方法,負責 Bundle 啟動及停止的動作。另外還包含許多的 Classes 以及資源檔,例如説明文件、圖檔以及原始碼。

(25)

圖 2-10 Bundle 架構

如圖 2-11,每個部署在 OSGi Framework 的 Bundle 都有其生命週期由 Life Cycle 層管理,主要分成六個狀態,分別為安裝 (Install)、解析 (Resolved)、啟 動 (Starting)、執行 (Active)、停止以及卸載 (Uninstall)。

圖 2-11 Bundle Life Cycle

當 Bundle 啟動後會將自身所提供的服務註冊到 Service Registry 中,如圖 2-12,Service Registry 會對部署在 OSGi Framework 的 Bundles 發送新加入 Bundle 的 Service 資訊,或者當有 Bundle 想要 Import 其他 Bundle 的 Service 時,就能對 Service Registry 查詢,讓 Bundle 間能更快速的分享服務。

(26)

圖 2-12 Service Registry 2.4.2 OSGi 優點

根 據 [ 7 ] 描 述 , O S G i 在 設 計 上 具 有 以 下 幾 個 優 點 :

1 . 與 作 業 平 台 無 關 : O S G i A P I 可 以 在 任 何 硬 體 平 台 以 及 作 業 系 統 中 實 作 出 來 , 與 傳 統 閘 道 器 只 能 侷 限 在 單 一 作 業 系 統 中 使 用 有 所 不 同 。

2 . 與 應 用 程 式 無 關 : 軟 體 開 發 廠 商 只 要 根 據 O S G i 所 開 發 出 來 的 標 準 A P I 去 實 作 不 同 的 應 用 程 式 , 即 可 提 供 多 樣 化 的 服 務 , 不 必 侷 限 於 某 個 領 域 中 。

3 . 安 全 性 : O S G i 制 定 了 許 多 不 同 等 級 的 安 全 性 , 像 是 物 件 存 取 權 、 下 載 模 組 簽 署 等 , 可 依 不 同 需 求 來 使 用 。

4 . 多 重 服 務 : 使 用 者 可 依 照 個 人 喜 好 來 選 擇 安 裝 不 同 服 務 供 應 商 所 提 供 的 服 務 。

5 . 多 重 區 域 網 路 技 術 : O S G i 整 合 了 各 式 各 樣 的 區 域 網 路 技 術 , 像 是 B l u e t o o t h 、 H AVi 、 I E E E 8 0 2 . 11 、 I E E E 1 3 9 4 、 H o m e R F 、 U P n P 、 J i n i 等 等 , 並 強 化 補 足 了 各 種 缺 點 。

6 . 多 重 設 備 存 取 技 術 : O S G i 實 作 了 服 務 導 向 的 概 念 , 可 透 過 B r i d g e B u n d l e 的 轉 換 , 將 不 同 技 術 的 裝 置 註 冊 至 S e r v i c e R e g i s t r y 中,成 為 O S G i D e v i c e S e r v i c e ( I m p o r t ),供 其 他 O S G i 上 的 S e r v i c e 使 用 。 亦 可 將 S e r v i c e 經 由 設 定 某 些 屬 性 之 後 ,

(27)

註 冊 至 S e r v i c e R e g i s t r y 中 , 再 透 過 B r i d g e B u n d l e 轉 換 , 成 為 Vi r t u a l D e v i c e ( E x p o r t ) 。 此 動 作 的 好 處 像 是 讓 U P n P 網 路 中 的 D e v i c e 可 透 過 O S G i 與 J i n i 網 路 中 的 D e v i c e 做 溝 通 使 用。

7 . 與 既 有 的 標 準 相 容:O S G i 所 制 定 的 規 格 輔 助 了 現 有 的 網 路 技 術 , 使 它 們 能 夠 互 相 的 溝 通 使 用 。 此 好 處 讓 各 家 服 務 供 應 商 能 專 心 開 發 設 備 , 不 需 考 慮 相 容 性 問 題 。

2.5 相關研究

在 發 現 服 務 的 議 題 , 學 者 們 在 不 同 的 協 定 上 提 出 了 各 類 的 研 究 方 式 , 例 如 [ 8 ] 為 了 減 少 S L P 註 冊 的 步 驟 , 作 者 以 S I P 現 存 的 S I P R E G I S T E R 方 法 來 完 成 S L P 註 冊 , 透 過 新 定 義 的 U R L 以 及 A t t r i b u t e s 等 標 頭 來 挾 帶 服 務 訊 息 。 而 當 要 取 得 服 務 資 訊 時 , 使 用 S I P O P T I O N S 方 法 來 達 成 , 並 將 查 詢 術 語 包 含 在 標 頭 檔 中 , 實 現 以 S I P 完 成 S L P 的 服 務 發 現 機 制,能 更 快 速 的 進 行 服 務 發 現 並 有 效 的 減 少 網 路 負 載 。

[9]提供了在家用環境中發現服務的方法。OSGI 提供了一個整合性的平台,

讓不同的異質網路可以連通。但如何在環境中快速並發現適當的服務是作者想探 討的。因此作者提出了一個架構,對設備進行摘要式的描述,讓使用者能輕易的 搜尋及連接服務。在 Monitor 元件部份,負責監聽是否有新設備註冊到 OSGI,

並搜尋此設備的 DRIVER,再給予合適的 description。Registry 元件部份將會存 放所有設備的 descriptions。Interface 元件部份將允許其他設備查詢所需的 description。作者主要引入了一個描述的觀念,裡面包含了獨一無二的名字,以 及在標題上有基本的描述資訊。並加入了語義的方式,讓使用者對服務更加了解。

另外,為了整合異質環境的服務,各種整合不同協定的服務架構也相繼的被 提出,例如[10]提出以 OSGi 平台整合以 SIP 為基礎的行動網路,作者將 SIP Server 以 Bundle 的形式部署在 OSGi 平台中,當 SIP Device 註冊到 SIP Server 的同時,

也會將此 SIP Device 的資訊註冊到 OSGi Service Registry 中,進而讓 OSGi 平台

(28)

中的 Service 也能 Import 到 SIP Device 的服務,相對的,OSGi 平台中整合了許 多不同協定的服務,作者定義了一個 Bridging Bundle 將 OSGi 中不同協定的服 務,進行轉換並註冊到 SIP Server 中,讓 OSGi 平台中的服務也能 Export 給 SIP 環境使用。

當得到服務資訊後,如何對服務進行控制也是一大研究議題,例如[11]提供 一個 Ubiquitous 的智慧型家用網路環境,當使用者進入一個陌生的環境,透過環 境中的藍芽、GPS 裝置能自動的偵測使用者位置,並透過 802.11 無線上網,自 動的對環境中的 SLP DA 查詢服務,了解環境中存在何種設備,提供何種服務,

並主動的告知使用者,而使用者就能經由 SIP 對可使用的設備發出連線請求,例 如視訊、顯示器。

[12]提出了一個以 OSGi 整合異質環境的架構,透過安裝在 OSGi 平台中的 SLP DA Bundle 收集異質環境設備所提供的服務,例如 UPnP Webcam。作者實作 了一個 SISUA 用於服務的查詢以及連線的建立。SISUA 由兩個主要元件所組 成,一個為 SLP 的 UA 角色,用於向 DA 查詢服務,另一個為 SIP 的 UA 角色,

用於 SIP 連線的建立。此外,OSGi 平台中也安裝了一個 SISUA Bundle 中介角色,

用於處理 OSGi 內部及外部的 SIP 連線以及的異質設備的溝通。作者定義了 Message 標頭檔,用於挾帶 UPnP 的控制指令,當使用者欲控制 OSGi 平台中的 UPnP 設備時,就能對 SISUA Bundle 發送 Message 方法來控制,達成異質環境服 務的搜尋及控制。

在連線轉移議題上也有許多學者透過不同的轉移方式進行研究,例如[13]提 出了一個類似[11]的環境架構,環境中的 SA (顯示器、麥克風等等)對 DA 宣傳服 務,使用者可以透過手持裝置對 DA 查詢服務。另一方面使用者透過手持裝置對 遠端的使用者建立 SIP 連線。此外作者還加入了 session mobility 議題,定義了一 個 Multi-Device System Manager (MDSM)中介角色,以 t h i r d - p a r t y c a l l c o n t r o l [ 1 4 ] 的 機 制 將 原 先 的 連 線 轉 移 到 查 詢 到 的 設 備 上 。

錯誤! 找不到參照來源。討論了 Session mobility 議題,提出了如何利用 SIP

(29)

讓使用者能在進行影音通話的過程中能自由的變換通話設備,以及將視訊串流隨 意分流或取回的機制。作者使用了 Refer 機制[15]實現串流轉出的動作,以及 Nested Refer 機制[16]實現串流取回的動作。另外作者將 SIP 所定義的 UA 擴充為 Session Manager、Session User 及 Free Node 三種不同的角色,依據這些角色,使 用者能在任意一台裝置上進行連線服務的再轉移或取回動作。

[17]提出了一個 UPnP 架構的多媒體串流服務,作者以 UPnP 的 Audio/Video Architecture 操作 Control Point 建立起 Media Server 與 Media Renderer 的單向串流 服務,並透過 UPnP 以定義的 Actions 控制指令,將原先的串流連線轉移到另一 台 Media Renderer。其中此篇提出了 SIP 雖然能建立連線,但對的串流不能進行 控制,而 UPnP 的 Actions 提供了對串流進行控制的功能,因此較適合用於多媒 體串流服務。

透過上述幾項相關研究,我們發現 SIP 可以經由 Internet 對遠端的使用著建 立連線,但是 SLP 查尋服務的範圍卻只侷限於同一個網域中,以上述 SLP 結合 SIP 所構成的環境來看,似乎不能發揮其最大效用。此外,SIP 通常用於建立雙 向的串流服務,而且不能對串流進行控制,因此不適用於建立多媒體串流服務。

為了解決這些問題,本篇提出了同儕式 SLP 架構,增強 SLP 跨網域查詢服務的 機制,並以 SIP 建立起單向的多媒體串流服務,因此第三章將描述同儕式 SLP 的系統架構以及如何解決 SIP 無法對串流進行控制的問題。

(30)

第參章 系統架構與流程

3.1 系統架構

當 使 用 者 假 日 在 家 休 息 , 想 使 用 家 用 環 境 中 的 M e d i a S e r v e r 所 提 供 的 多 媒 體 串 流 服 務 來 欣 賞 電 影 。 因 此 , 使 用 者 透 過 筆 記 型 電 腦 向 部 署 在 家 用 網 路 的 多 媒 體 串 流 伺 服 器 搜 尋 服 務 。 但 是 , 所 搜 尋 到 的 多 媒 體 串 流 檔 案 並 不 是 使 用 者 所 喜 愛 的,因 此 使 用 者 將 透 過 網 路 服 務 搜 尋 機 制 對 另 一 個 網 域 影 片 供 應 商 查 詢 多 媒 體 串 流 服 務 。 當 查 詢 的 結 果 回 傳 給 使 用 者 後 , 使 用 者 即 知 道 多 媒 體 串 流 服 務 的 位 置,就 能 以 S I P 協 定 對 遠 端 的 M e d i a S e r v e r 進 行 連 線 請 求 並 建 立 起 單 向 RT P 串 流 連 線 觀 賞 電 影 。 而 若 使 用 者 覺 得 筆 記 型 電 腦 的 解 析 度 不 夠 , 而 且 音 質 也 不 夠 好 , 因 此 想 要 移 動 到 客 廳 使 用 數 位 電 視 繼 續 觀 賞 剛 才 播 放 的 影 片 , 則 將 可 透 過 s e s s i o n m o b i l i t y 機 制 實 現,將 原 來 M e d i a S e r v e r 與 筆 記 型 電 腦 的 RT P 串 流 轉 移 到 M e d i a S e r v e r 與 數 位 電 視 的 串 流 。

根 據 上 述 情 境 主 要 結 合 了 S I P 及 S L P 協 定 建 製 出 一 個 能 線 上 查 詢 與 收 看 的 多 媒 體 串 流 服 務 。 然 而 在 有 跨 網 域 的 服 務 搜 尋 架 構 , 在 目 前 的 S L P 機 制 下 並 不 完 整 , 雖 然 S L P 支 援 跨 網 域 查 詢 服 務 , 但 是 使 用 者 必 需 根 據 遠 端 D A 的 I P 位 址 發 送 U n i c a s t 查 詢 服 務 請 求 , 假 設 同 一 網 域 有 多 個 使 用 者 需 要 相 同 服 務 , 都 必 需 各 別 向 遠 端 D A 發 送 查 詢 請 求 , 如 此 一 來 過 多 的 查 詢 訊 息 增 加 了 網 路 負 載 , 也 造 成 了 不 必 要 的 資 源 浪 費 。 因 此 本 篇 論 文 將 提 出 一 個 使 用 同 儕 架 構 於 S L P 應 用 的 代 理 服 務 查 詢 機 制。我 們 希 望 讓 使 用 者 透 過 同 儕 式 S L P 搜 尋 家 用 網 路 或 是 不 同 網 域 的 服 務 提 供 者 是 否 提 供 多 媒 體 串 流 服 務 , 藉 由 取 得 服 務 資 訊 得 知 M e d i a S e r v e r 所 提 供 的 節 目 列 表 。 而 這 些 代 查 所 得 資 料 亦 將 快 取 存 於 S L P D A

(31)

的 資 料 庫 中 , 讓 同 網 域 的 其 他 使 用 者 能 夠 直 接 對 D A 查 詢 服 務 , 而 不 用 各 別 跨 網 域 查 詢 。 當 使 用 者 取 得 所 需 資 訊 後 就 能 透 過 S I P 協 定 對 M e d i a S e r v e r 請 求 建 立 連 線,就 能 實 現 單 向 多 媒 體 串 流 的 服 務 , 當 然 此 連 線 也 符 合 S I P 協 定 , 能 被 修 改 及 終 止 。

如 圖 3 - 1 , 右 邊 為 家 用 網 路 環 境 , 提 供 著 不 同 的 設 備 以 及 不 同 的 服 務 , 例 如 數 位 電 視 、 網 路 印 表 機 及 個 人 電 腦 等 等 。 這 麼 多 種 類 的 設 備 及 服 務 都 能 透 過 家 用 閘 道 器 來 集 中 管 理。而 家 用 閘 道 器 上 部 署 的 為 O S G i 平 台 , 負 責 集 中 管 理 家 中 各 種 不 同 協 定 的 設 備 , 每 個 設 備 所 提 供 的 服 務 都 需 以 B u n d l e 的 方 式 運 行 在 O S G i 平 台 上 , 各 種 B u n d l e 提 供 著 各 種 不 同 的 服 務 並 能 互 相 使 用 。 因 此 為 了 提 高 服 務 的 被 搜 尋 性 , 我 們 將 S L P 的 D A 以 及 啟 動 D A 的 模 組 S e r v i c e A g e n t C o n t r o l P o i n t ( S A C P ) 製 作 成 B u n d l e 部 署 在 O S G i 平 台 上 。

圖 3-1 系統架構

(32)

實 際 上 D A 與 S A 為 一 體 兩 面 的 模 式 , 當 要 啟 動 D A 時 必 需 由 S A 註 冊 服 務 後 才 能 啟 動 , 透 過 S A 註 冊 一 個 服 務 , 引 發 D A 監 聽 S L P 封 包 。 因 此 本 篇 定 義 了 一 個 S A C P 模 組 , 將 使 用 者 喜 好 的 多 媒 體 串 流 服 務 提 供 者 的 伺 服 器 位 置 註 冊 於 D A 中 , 一 方 面 啟 動 D A , 另 一 方 面 當 在 家 用 環 境 中 搜 尋 不 到 喜 愛 的 多 媒 體 串 流 檔 案 時 , 就 能 向 D A 搜 尋 其 他 網 域 有 哪 些 其 他 的 多 媒 體 串 流 伺 服 器 能 進 行 搜 尋 動 作 。

當 D A 啟 動 後 , 環 境 中 的 M e d i a S e r v e r 就 可 以 將 本 身 提 供 的 多 媒 體 串 流 服 務 註 冊 到 D A 。 M e d i a S e r v e r 為 結 合 S I P 連 線 功 能 的 影 音 資 料 庫 , 同 時 也 是 S L P 的 S A 角 色 , 當 M e d i a S e r v e r 啟 動 時,會 先 搜 尋 環 境 中 是 否 有 D A 的 存 在,如 果 有 的 話,會 以 u n i c a s t 的 方 式 對 D A 發 送 S e r v i c e R e g i s t r a t i o n 訊 息 , 將 本 身 提 供 的 服 務 註 冊 到 D A 。

而 S I U A 是 本 篇 所 開 發 的 應 用 程 式 , 為 使 用 者 操 作 的 個 人 電 腦 或 者 手 持 裝 置 , 由 兩 個 元 件 所 組 成 , 一 個 為 S L P 的 U A , 另 一 個 為 S I P 的 U A 。 因 此 S I U A 可 以 對 S L P 發 送 S e r v i c e R e q u e s t 查 詢 服 務 , 也 可 以 對 M e d i a S e r v e r 發 送 S I P R e q u e s t 建 立 多 媒 體 串 流 服 務 。

為 了 實 現 跨 網 域 查 詢 情 境,我 們 實 作 了 同 儕 式 S L P 架 構,同 儕 式 S L P 賦 予 D A 有 U A 查 詢 的 功 能 。 當 S I U A 欲 到 指 定 的 D A 2 查 詢 服 務 時 , 會 要 求 D A 發 送 一 個 代 替 查 詢 請 求 給 D A 2 , 而 D A 則 會 以 U A 的 身 份 對 不 同 網 域 的 D A 2 查 詢 服 務 , 等 有 回 覆 便 將 搜 尋 到 的 服 務 回 傳 給 S I U A 並 存 於 D A 自 身 的 資 料 庫 中 。

3.2 同儕式 SLP 架構及查詢流程

由 於 S L P 搜 尋 服 務 是 以 M u l t i c a s t 方 式 對 相 同 群 組 的 發 送 S L P 詢 問 , 因 此 S L P 封 包 只 能 在 同 一 個 網 域 間 傳 送 , 搜 尋 服 務 的

(33)

範 圍 將 受 到 侷 限 。 以 多 媒 體 串 流 服 務 來 說 不 同 於 常 見 的 家 用 服 務 , 家 用 服 務 通 常 存 在 於 家 中 , 通 常 固 定 且 移 動 性 低 , 例 如 , 印 表 機、數 位 電 視 等 等,所 以 S L P 對 於 搜 尋 家 用 服 務 有 著 顯 著 的 效 果 。 然 而 , 多 媒 體 串 流 服 務 不 一 定 只 存 在 於 家 用 環 境 , 可 能 存 在 於 各 種 不 同 的 環 境 , 因 此 想 要 達 成 多 媒 體 串 流 服 務 的 搜 尋 , 必 需 要 跨 網 域 對 不 同 的 服 務 提 供 者 搜 尋 服 務 才 能 得 到 更 完 整 的 服 務 資 訊 。

為 了 加 強 S L P 跨 網 域 搜 尋 服 務 機 制,本 篇 在 S L P 訊 息 中 定 義 了 S u b s t i t u t e R e q u e s t M e s s a g e 來 實 現 同 儕 式 S L P 架 構。如 圖 3 - 2,

此 標 頭 的 F u n c t i o n I D 為 1 2 表 示 為 代 替 查 詢 請 求 , 基 本 的 欄 位 與 S e r v i c e R e q u e s t [ 4 ] 大 致 相 同 , 主 要 增 加 了 D A a d d r e s s 的 欄 位 為 了 讓 使 用 者 能 夠 自 由 選 擇 想 查 詢 服 務 的 目 地 端 I P , 此 欄 位 的 I P 位 址 以 字 串 的 類 型 呈 現 。 當 D A 判 定 此 為 代 替 查 詢 請 求 時 , 就 會 擷 取 D A a d d r e s s 欄 位 的 I P 位 址 當 作 是 目 的 端 D A 的 I P 位 址 , 而 此 時 D A 將 會 以 U A 的 角 色 依 據 原 先 s e r v i c e t y p e 欄 位 的 服 務 類 型 , 對 此 I P 的 D A 發 送 u n i c a s t 查 詢 服 務 動 作 。

圖 3-2 Substitute Request Header 格式

S u b s t i t u t e R e q u e s t 查 詢 流 程 如 圖 3 - 3 , 圖 中 擁 有 兩 個 不 同 網 域,分 別 為 1 9 2 . 1 6 8 . 1 . X 的 D o m a i n A,以 及 1 9 2 . 1 6 8 . 2 . X 的 D o m a i n

(34)

1 9 2 . 1 6 8 . 2 . 1 , 以 及 D A 2 , I P 位 址 為 1 9 2 . 1 6 8 . 2 . 2 。

當 M e d i a S e r v e r 要 註 冊 服 務 給 D A 時 會 先 以 m u l t i c a s t 方 式 搜 尋 環 境 中 是 否 有 D A 的 存 在 , 搜 尋 的 S e r v i c e Ty p e 即 為 s e r v i c e : d i r e c t o r y - a g e n t , 當 D A 2 收 到 後 會 以 u n i c a s t 方 式 回 傳 r e p l y 給 M e d i a S e r v e r, 因 此 M e d i a S e r v e r 確 定 環 境 中 有 D A 2 的 存 在 , 當 要 註 冊 服 務 時 , 就 會 以 u n i c a s t 方 式 對 D A 2 進 行 註 冊 。

註 冊 服 務 的 主 要 使 用 S e r v i c e R e g i s t r a t i o n M e s s a g e, F u n c t i o n I D 為 3, 主 要 表 示 此 封 包 為 S L P 註 冊 服 務 請 求 。 U R L l i f e t i m e 表 示 此 服 務 存 活 的 時 間 , 單 位 為 秒 。 當 存 活 時 間 到 期 時 , D A 就 會 將 此 服 務 註 銷 掉 。 U R L L e n g t h 用 來 描 述 註 冊 服 務 的 長 度 , 單 位 為 b y t e 。 U R L 則 為 註 冊 服 務 的 U R L 。 S e r v i c e Ty p e 為 M S 。 D A 2 收 到 S A 的 註 冊 後 則 會 回 傳 一 個 S e r v i c e A c k n o w l e d g e , F u n c t i o n I D 為 5 以 確 認 服 務 已 註 冊 完 成 。

(35)

圖 3-3 SLP 註冊、查詢流程

圖 左 D o m a i n A 包 含 兩 個 元 件 , 分 邊 是 擁 有 S L P U A 功 能 的 S I U A, I P 位 址 為 1 9 2 . 1 6 8 . 1 . 1, 以 及 D A, I P 位 址 為 1 9 2 . 1 6 8 . 1 . 2 。 當 S I U A 要 查 詢 服 務 時,同 樣 也 會 以 m u l t i c a s t 方 式 搜 尋 環 境 中 是 否 有 D A 的 存 在 , 當 尋 找 到 D A 時 再 以 u n i c a s t 方 式 查 詢 服 務 。 S I U A 查 詢 服 務 的 封 包 包 含 F u n c t i o n 欄 位 為 1 的 S e r v i c e R e q u e s t , 表 示 為 服 務 搜 尋 請 求 。 S e r v i c e Ty p e L i s t : s e r v i c e : M S 表 示 要 搜 尋 的 服 務 類 型 為 M S 。 此 時 D A 就 要 處 理 S I U A 的 服 務 搜 尋 請 求 , D A 會 以 S e r v i c e Ty p e L i s t 欄 位 為 根 據 , 搜 尋 是 否 有 相 同 的 服 務 類 型 。 當 搜 尋 完 畢 D A 會 回 傳 一 個 F u n c t i o n I D 為 2 的 S e r v i c e R e p l y , 其 中 包 含 了 N u m b e r o f U R L s 的 欄 位 , 此 欄 位 表 示 有 多 少 項 服 務 被 搜 尋 到 , 當 沒 有 搜 尋 到 相 同 服 務 時 , 此 欄 位

(36)

的 值 即 為 0 。

當 S I U A 在 D o m a i n A 找 不 到 有 M e d i a S e r v e r 提 供 多 媒 體 串 流 服 務 , S I U A 必 需 跨 網 域 對 D o m a i n B 的 D A 2 查 詢 。 因 此 S I U A 對 D A 發 送 了 F u n c t i o n I D 為 1 2 的 S u b s t i t u t e R e q u e s t, 表 示 希 望 D A 代 替 S I U A 向 D A 2 查 詢 服 務 。 S u b s t i t u t e R e q u e s t 主 要 多 包 含 D A A d d r e s s 欄 位,讓 S I U A 能 自 行 輸 入 目 地 端 D A 2 的 I P 透 過 D A 進 行 代 替 查 詢 動 作 。

當 D A 收 到 S u b s t i t u t e R e q u e s t 後 會 以 U A 的 身 份 依 據 其 D A A d d r e s s 欄 位 及 S e r v i c e Ty p e L i s t 欄 位 來 對 D A 2 發 送 u n i c a s t 的 服 務 查 詢 。 D A 2 搜 尋 到 符 合 的 服 務 類 型 時 , 則 會 回 傳 S e r v i c e R e p l y 。 其 中 N u m b e r o f U R L s 值 為 1 表 示 搜 尋 到 一 筆 服 務 。 U R L L i f e t i m e 為 此 服 務 存 活 時 間。U R L L e n g t h 為 此 服 務 U R L 之 長 度 。 以 及 搜 尋 到 服 務 之 類 型 U R L 。

當 D A 收 到 S e r v i c e R e p l y 後 , 會 有 兩 個 動 作 , 第 一 就 是 將 搜 尋 到 的 服 務 註 冊 在 D A 自 身 的 資 料 庫 中 以 便 日 後 供 U A 查 詢 。 第 二 就 是 將 S e r v i c e R e p l y 回 傳 給 S I U A , 完 成 代 替 查 詢 的 動 作 。 3.3 SIP 架構及連線流程

當 多 媒 體 串 流 服 務 搜 尋 到 之 後 , 使 用 者 能 透 過 S I P 協 定 建 立 串 流 連 線 。 為 了 符 合 使 用 S I P 開 啟 單 向 串 流 的 需 要 , 我 們 在 S I P M e s s a g e H e a d e r 中 定 義 了 M e d i a S e r v i c e H e a d e r,針 對 影 音 串 流 服 務 進 行 暫 停 、 播 放 , 選 台 及 停 止 的 功 能 。

如 圖 3 - 4 , M e d i a S e r v i c e 標 頭 包 含 四 個 欄 位 , 每 個 欄 位 以 8 個 b i t 表 示 , 分 別 是 t y p e 、 a d m i n 、 l e n g t h 、 o p t i o n 。 t y p e 欄 位 用 來 描 述 本 機 所 提 供 串 流 服 務 的 形 態。當 數 值 等 於 0 的 時 候 表 示 為 單 向 接 收 , 當 數 值 等 於 1 的 時 候 表 示 為 單 向 傳 送 。 a d m i n 欄 位 用 來 描 述 使 用 者 下 達 操 作 的 指 令 集 。 當 數 值 等 於 0 的 時 候 , 表 示 使

(37)

用 者 進 行 選 擇 影 音 播 放 的 動 作 , 選 擇 的 資 訊 會 存 在 o p t i o n 欄 位 中 。 當 數 值 等 於 1 的 時 候 , 表 示 使 用 者 進 行 暫 停 的 動 作 。 當 數 值 等 於 2 的 時 候,表 示 使 用 者 繼 續 播 放 影 音。當 數 值 等 於 3 的 時 候,

表 示 使 用 者 進 行 連 線 轉 移 的 動 作 。 L e n g t h 欄 位 用 來 描 述 o p t i o n 欄 位 的 長 度 , 單 位 為 B y t e , 以 字 元 的 型 態 表 現 。 O p t i o n 欄 位 用 來 挾 帶 使 用 者 所 輸 入 的 影 音 頻 道 或 者 多 媒 體 檔 案 名 稱,以 字 串 的 型 態 表 現 。

圖 3-4 MediaService Header 格式 3.3.1 請求連線

S I P 主 要 分 成 兩 個 部 份 , 分 別 是 C l i e n t 與 S e r v e r , 當 使 用 者 取 得 服 務 資 訊 後 會 對 M e d i a S e r v e r 提 出 連 線 請 求 , 如 圖 3 - 5 , C l i e n t 端 S I U A 發 送 一 個 I N V I T E 訊 息 給 S e r v e r 端 M e d i a S e r v e r,

S I P 封 包 內 包 含 了 M e d i a S e r v i c e 標 頭 , 用 來 描 述 連 線 形 態 及 操 作 指 令 , 其 內 容 為 t y p e / a d m i n / l e n g t h / o p t i o n = 0 0 1 2 。

第 一 個 數 值 0 代 表 C l i e n t 端 的 傳 輸 型 態 為 單 向 接 收 串 流 , 因 為 單 向 串 流 服 務 C l i e n t 端 不 需 要 向 S e r v e r 端 傳 送 串 流 資 料 。 第 二 個 位 數 值 0 代 表 C l i e n t 端 對 S e r v e r 端 提 出 選 台 的 請 求 。 第 三 個 字 元 為 1 代 表 o p t i o n 欄 位 有 一 個 b y t e 。 第 四 個 字 串 2 , 表 示 C l i e n t 選 擇 頻 道 2 的 節 目,根 據 S L P 所 取 得 M e d i a S e r v e r 的 資 訊,

第 四 個 字 串 可 以 透 過 使 用 者 的 選 擇 而 改 變 , 例 如 < 檔 案 名 稱 > 。

(38)

S e r v e r 端 收 到 I N V I T E 訊 息 後 , 會 回 傳 一 個 2 0 0 O K 表 示 答 應 請 求,其 中 M e d i a S e r v i c e 標 頭 包 含 的 第 一 個 位 元 1 表 示 只 提 供 單 向 串 流 傳 輸 形 態 。 C l i e n t 端 得 知 S e r v e r 端 同 意 連 線 請 求 後 , 即 發 送 一 個 A C K , 表 示 確 認 無 誤 後 即 開 始 RT P 單 向 串 流 。

圖 3-5 請求連線流程 3.3.2 暫停播放

作 為 一 個 單 向 串 流 服 務 , M e d i a S e r v e r 提 供 了 基 本 的 暫 停 及 播 放 操 作 。 如 圖 3 - 6 , 當 使 用 者 要 暫 停 正 在 播 放 的 串 流 服 務 時 , 會 對 M e d i a S e r v e r 發 送 一 個 I N V I T E , 其 中 M e d i a S e r v i c e 標 頭 的 值 為 0 1 , 第 一 個 位 元 0 代 表 C l i e n t 端 屬 於 單 向 串 流 接 收 形 態 。 第 二 個 位 元 1 代 表 目 前 發 送 的 是 暫 停 請 求 。 當 S e r v e r 端 收 到 後 會 暫 停 RT P 串 流 並 暫 停 讀 取 正 在 播 放 的 檔 案 , 接 著 對 C l i e n t 發 送 一 個 2 0 0 O K , 其 中 M e d i a S e r v i c e 標 頭 的 值 為 11 , 第 一 個 位 元

(39)

1 代 表 S e r v e r 端 提 供 的 是 單 向 串 流 傳 送 的 服 務 。 第 二 個 位 元 1 代 表 此 2 0 0 O K 為 對 應 暫 停 請 求 所 發 送 。 C l i e n t 收 到 2 0 0 O K 後 , 會 回 覆 一 個 A C K 完 成 暫 停 請 求 的 動 作 。 相 對 的 播 放 請 求 的 流 程 也 同 上 述 。

圖 3-6 暫停播放流程 3.3.3 轉移連線

如 圖 3 - 7 , 當 S I U A 1 想 要 把 與 M e d i a S e r v e r 的 連 線 移 轉 到 S I U A 2 時 , 我 們 將 使 用 R E F E R 機 制 錯 誤 ! 找 不 到 參 照 來 源 。 。 在 移 轉 連 線 前 S I U A 1 會 先 對 M e d i a S e r v e r 發 送 暫 停 請 求 , 透 過 暫 停 的 機 制,能 確 保 連 線 移 轉 到 第 三 方 時 能 從 瞬 間 移 轉 的 時 間 點 繼 續 播 放 。 接 著 S I U A 1 會 發 送 一 個 R E F E R 給 S I U A 2 , 其 中 R e f e r - To 的 內 容 為 M e d i a S e r v e r 的 U R I , 表 示 S I U A 2 要 透 過

(40)

S I U A 1 的 委 託,對 M e d i a S e r v e r 要 求 建 立 連 線;另 外 M e d i a S e r v i c e 標 頭 的 內 容 為 0 3 , 代 表 S I U A 2 只 需 運 行 單 向 串 流 接 受 形 態 , 並 告 知 此 為 連 線 移 轉 事 件 。 S I U A 2 了 解 此 連 線 的 資 訊 及 目 的 後 , 就 對 M e d i a S e r v e r 發 送 一 個 包 含 M e d i a S e r v i c e 標 頭 的 I N V I T E 訊 息 , 內 容 0 3 一 樣 描 述 著 S I U A 2 的 服 務 形 態 為 單 向 接 受 , 並 告 知 此 為 連 線 移 轉 事 件 。

當 M e d i a S e r v e r 在 連 線 進 行 中 收 到 I N V I T E 訊 息 , 會 透 過 M e d i a S e r v i c e 標 頭 的 內 容 0 3 來 得 知 此 為 連 線 移 轉 事 件 , 隨 後 一 方 面 對 S I U A 2 發 送 2 0 0 O K 表 示 同 意 連 線 , 另 一 方 面 會 對 S I U A 1 發 送 B Y E 訊 息 中 止 連 線,最 後 U e r B 發 送 給 M e d i a S e r v e r 一 個 確 認 的 A C K 後 , 即 完 成 連 線 移 轉 , 建 立 起 M e d i a S e r v e r 對 S I U A 2 的 單 向 服 務 串 流 。

圖 3-7 轉移連線流程

(41)

3.3.4 取回連線

當 S I U A 1 想 要 將 移 轉 出 的 連 線 取 回 時,因 為 S I U A 1 無 法 直 接 與 M e d i a S e r v e r 溝 通 , 因 此 需 要 通 過 中 間 角 色 S I U A 2 來 進 行 訊 息 傳 送 , 如 此 一 來 , 正 好 符 合 N e s t e d R E F E R 機 制 錯 誤 ! 找 不 到 參 照 來 源 。 , 因 此 , S I U A 1 取 回 連 線 的 流 程 如 圖 3 - 8 。 S I U A 1 對 S I U A 2 發 送 一 個 R E F E R 訊 息,其 R e f e r - To 標 頭 以 N e s t e d R E F E R 定 義 的 格 式 撰 寫,代 表 S I U A 1 希 望 S I U A 2 對 本 身 發 送 R E F E R 訊 息 , 而 R E F E R 的 對 象 為 M e d i a S e r v e r 。 接 著 S I U A 2 即 對 S I U A 1 發 送 R E F E R 訊 息 , 另 一 方 面 也 對 M e d i a S e r v e r 提 出 暫 停 請 求 , 以 確 保 接 收 端 的 播 放 時 間 點 。 經 由 上 述 之 R E F E R 流 程 , S I U A 1 即 透 過 N e s t e d R E F E R 機 制 取 回 原 本 M e d i a S e r v e r 對 S I U A 1 的 單 向 串 流 服 務 。

(42)

圖 3-8 取回連線流程

(43)

第肆章 實驗環境

4.1 實驗環境

本 篇 系 統 實 作 方 面,我 們 使 用 了 三 個 開 放 式 原 始 碼 來 進 行 程 式 改 寫 。 第 一 個 開 放 式 原 始 碼 為 M a v e n j S L P , 是 一 套 S e r v i c e L o c a t i o n P r o t o c o l v e r s i o n 2 的 實 作 計 畫 [ 1 8 ],用 來 實 作 本 篇 的 S L P D A 、 S A 及 U A 角 色 元 件 。 第 二 個 開 放 式 原 始 碼 為 S I P C o m m u n i c a t o r , 是 一 套 S e s s i o n I n i t i a t i o n P r o t o c o l v o i p 的 實 作 [ 1 9 ] , 用 來 實 作 本 篇 M e d i a S e r v e r 及 S I U A 角 色 元 件 。 第 三 個 開 放 式 原 始 碼 為 O W 2 F o r g e O s c a r [ 2 0 ], 提 供 了 O S G i 平 台 的 實 作 , 以 及 一 系 列 的 B u n d l e。其 中 在 B u n d l e 的 部 份 使 用 了 O s c a r B u n d l e R e p o s i t o r y 和 A D E L E B u n d l e R e p o s i t o r y 中 所 提 供 的 B u n d l e , 部 份 則 為 本 篇 所 實 作 的 B u n d l e , 例 如 部 署 在 O S G i 環 境 中 的 D A 。

此 三 個 開 放 式 原 始 碼 皆 是 以 J AVA 語 言 為 基 礎 , 充 份 表 現 出 J AVA 語 言 可 攜 、 跨 平 台 高 效 能 的 優 點 。 整 體 架 構 如 圖 4 - 1。 我 們 將 j S L P 的 S A 和 D A 角 色 元 件 結 合 了 O S G i 監 聽 服 務 的 能 力 製 作 成 S A C P 模 組 , 讓 O S G i 平 台 能 收 集 環 境 中 所 有 S A 的 服 務 註 冊 以 S L P S e r v i c e U R L 提 供 S L P U A 查 詢 的 能 力 。 另 一 方 面 將 j S L P 的 U A 角 色 元 件 與 S I P C o m m u n i c a t o r 結 合 成 S I U A,同 時 擁 有 S L P U A 動 態 取 得 服 務 以 及 S I P U A 跨 異 質 網 路 控 制 的 能 力 。

圖 4-1 程式實作架構

(44)

4.2.1 DA 啟動流程

本 篇 將 D A 部 署 在 O S G i 環 境 中,如 圖 4 - 2 為 O S G i F r a m e w o r k 且 安 裝 了 多 種 B u n d l e。步 驟 1,J S L P A P I 模 組 向 S e r v i c e R e g i s t r y 註 冊 一 個 A d v e r t i s e r 物 件 提 供 給 其 他 B u n d l e 使 用 , A d v e r t i s e r 物 件 為 S L P 所 定 義 用 來 註 冊 服 務 的 物 件,提 供 了 設 定 服 務 屬 性、註 冊 及 註 銷 服 務 的 介 面 。 步 驟 2 當 要 啟 動 D A 時 需 要 透 過 S A C P 模 組 觸 發 , S A C P 模 組 會 向 S e r v i c e R e g i s t r y 取 得 A d v e r t i s e r 服 務 物 件 , 並 透 過 A d v e r t i s e r 服 務 物 件 進 行 服 務 註 冊 動 作 。 步 驟 3 S A C P 模 組 會 將 使 用 者 預 設 的 遠 端 多 媒 體 串 流 服 務 提 供 者 的 S L P S e r v i c e U R L 註 冊 給 S L P D A , 一 方 面 S A C P 模 組 在 進 行 註 冊 動 作 時 , 另 一 方 面 也 會 呼 叫 到 S L P C o r e 及 S L P D a e m o n 元 件 引 發 D A 監 聽 機 制 , 如 此 一 來 D A 就 能 收 發 S L P M e s s a g e 並 處 理 S L P R e q u e s t , 完 成 D A 的 啟 動 。

圖 4-2 DA 環境架構 4.2.2 SA 註冊程式流程

M e d i a S e r v e r 由 三 個 部 份 組 成 , 分 別 為 S L P 的 S A 、 M e d i a

(45)

C o n t e n t 以 及 S I P 的 U A 。 如 圖 4 - 3 , 當 M e d i a S e r v e r 啟 動 時 能 透 過 S A 部 份 對 D A 進 行 服 務 的 註 冊 , 另 一 方 面 有 S I P 的 U A 來 處 理 S I P 訊 息 建 立 串 流 服 務 。 因 此 M e d i a S e r v e r 啟 動 時 , 會 以 S A 的 角 色 將 本 身 所 提 供 的 多 媒 體 串 流 服 務 註 冊 到 D A 。

圖 4-3 SLP 架構

詳 細 程 式 流 程 如 圖 4 - 4。 M e d i a S e r v e r 透 過 A d v e r t i s e r 物 件 呼 叫 r e g i s t e r ( ) 方 法 , 並 根 據 參 數 u r l ( 服 務 位 址 ) 、 s c o p e s ( 服 務 範 圍 )、 以 及 a t t r i b u t e s ( 服 務 屬 性 ) 建 構 S e r v i c e R e g i s t r a t i o n 物 件 , 接 著 將 S e r v i c e R e g i s t r a t i o n 物 件 當 成 引 數 呼 叫 S L P C o r e 的 靜 態 方 法 s e n d M e s s a g e T C P ( ) , 並 等 待 接 收 s e n d M e s s a g e T C P ( ) 方 法 回 傳 的 S e r v i c e A c k n o w l e d g e m e n t 物 件 。

在 S L P C o r e 的 s e n d M e s s a g e T C P ( ) 靜 態 方 法 中 , 首 先 建 立 T C P S o c k e t 。 接 著 呼 叫 S L P M e s s a g e 類 別 的 g e t B y t e s ( ) 方 法 將 S e r v i c e R e g i s t r a t i o n 物 件 以 多 型 表 示 為 S L P M e s s a g e 物 件 並 轉 換 成 位 元 組 陣 列 , 透 過 T C P S o c k e t 以 u n i c a s t 方 式 傳 送 S L P 註 冊 訊 息 給 D A 。

(46)

圖 4-4 SA 註冊程式流程

(47)

此 時 D A 已 經 啟 動 並 有 Tc p S e r v e r T h r e a d 在 監 聽 S L P M e s s a g e。 Tc p S e r v e r T h r e a d 執 行 緒 建 立 了 T C P S e r v e r S o c k e t 來 等 待 連 線 並 接 收 S L P D a e m o n 的 T C P S o c k e t 所 傳 送 過 來 的 位 元 組 陣 列 。 透 過 呼 叫 S L P M e s s a g e 類 別 的 p a r s e ( ) 方 法 將 接 收 到 的 位 元 組 陣 列 進 行 解 析 , 分 辨 出 此 S L P M e s s a g e 的 I P 位 址 、 p o r t、 連 線 方 式 、 x i d ( 類 似 s e q u e n c e n u m b e r ) 以 及 f u n c t i o n I D , 並 轉 換 回 S L P M e s s a g e 物 件 , 再 呼 叫 h a n d l e M e s s a g e ( ) 方 法 來 處 理 S L P M e s s a g e 物 件 。

在 h a n d l e M e s s a g e ( ) 方 法 中 , 透 過 S L P M e s s a g e 物 件 的 成 員 f u n c I D 得 知 此 S L P M e s s a g e 類 型 的 物 件 實 際 上 是 一 個 S e r v i c e R e g i s t r a t i o n 物 件 。 於 是 便 呼 叫 r e g i s t e r S e r v i c e ( ) 方 法 , 將 S L P M e s s a g e 物 件 轉 型 為 S e r v i c e R e g i s t r a t i o n 物 件 並 當 成 引 數 來 註 冊 S L P 服 務 資 訊 。

在 r e g i s t e r S e r v i c e ( ) 方 法 中,將 參 數 S e r v i c e R e g i s t r a t i o n 物 件 當 成 引 數 來 建 構 S e r v i c e 物 件 。 而 S e r v i c e 物 件 代 表 著 一 個 S L P 的 服 務 , 其 中 包 含 S e r v i c e U R L 類 型 的 物 件 和 儲 存 服 務 屬 性 D i c t i o n a r y 類 型 的 容 器 物 件 成 員 。 接 著 再 呼 叫 S L P U t i l s 的 靜 態 方 法 a d d Va l u e ( ) 將 s c o p e 以 及 S e r v i c e 物 件 儲 存 在 r e g i s t e r e d S e r v i c e s 的 H a s h M a p 中 , 完 成 註 冊 S L P 服 務 資 訊 的 動 作 。

在 註 冊 完 S L P 服 務 資 訊 之 後 , 則 將 S e r v i c e U R L 物 件 的 成 員 l i f e t i m e 以 及 S e r v i c e U R L 物 件 儲 存 至 s e r v i c e D i s p o s a l Q u e u e ( Tr e e M a p ) 中 , 並 呼 叫 n o t i f y A l l ( ) 方 法 來 通 知 目 前 使 用 w a i t ( ) 方 法 進 行 等 待 的 S e r v i c e D i s p o s a l T h r e a d 執 行 緒,準 備 開 始 計 時 服 務 的 有 效 存 活 時 間 。

在 S L P D a e m o n 中 的 S e r v i c e D i s p o s a l T h r e a d 執 行 緒 收 到 通 知 時 , 則 會 使 用 w a i t 方 法 來 等 待 ( 計 時 ) 註 冊 服 務 的 存 活 時 間 。 如 果

(48)

存 活 時 間 截 止 , 卻 未 收 到 延 長 服 務 的 訊 息 通 知 時 , 則 會 向 s e r v i c e D i s p o s a l Q u e u e 取 回 S e r v i c e U R L 物 件 , 再 將 S e r v i c e U R L 物 件 當 成 引 數 建 構 S e r v i c e D e r e g i s t r a t i o n 物 件 , 呼 叫 d e r e g i s t e r S e r v i c e ( ) 方 法 進 行 註 銷 S L P 服 務 資 訊 , 而 S e r v i c e U R L 物 件 也 從 s e r v i c e D i s p o s a l Q u e u e 中 移 除 。

在 進 行 完 所 有 註 冊 程 序 之 後 , 由 r e g i s t e r S e r v i c e 方 法 返 回 到 h a n d l e M e s s a g e ( ) 方 法 中 , 並 在 h a n d l e M e s s a g e ( ) 方 法 中 建 構 S e r v i c e A c k n o w l e d g e m e n t 物 件 , 以 S L P M e s s a g e 以 及 整 數 型 態 的 e r r o r c o d e 為 引 數 , 將 S e r v i c e A c k n o w l e d g e m e n t 物 件 以 R e p l y M e s s a g e 類 型 的 物 件 ( 多 型 ) 回 傳 給 Tc p S e r v e r T h r e a d 執 行 緒。

在 Tc p S e r v e r T h r e a d 執 行 緒 中 , R e p l y M e s s a g e 物 件 呼 叫 方 法 g e t B y t e s ( ) , 將 自 身 轉 換 為 位 元 組 陣 列 , 並 透 過 T C P S o c k e t 傳 送 位 元 陣 列 給 S A 的 S L P C o r e 的 s e n d M e s s a g e T C P ( ) 方 法 中 的 T C P S o c k e t 。

再 s e n d M e s s a g e T C P 方 法 中 , 將 位 元 組 陣 列 還 原 回 R e p l y M e s s a g e 物 件,再 回 傳 給 A d v e r t i s e r 物 件 的 r e g i s t e r ( ) 方 法 。 最 後 r e g i s t e r ( ) 方 法 將 R e p l y M e s s a g e 物 件 轉 型 回 S e r v i c e A c k n o w l e d g e m e n t 物 件 。

4.2.3 UA 向 DA 查詢服務程式流程

當 S I U A 要 查 詢 環 境 中 所 提 供 的 M e d i a S e r v e r 服 務 時 , 會 透 過 L o c a t o r 物 件 呼 叫 f i n d S e r v i c e s ( ) 方 法 準 備 向 S L P D a e m o n 查 詢 並 取 得 S L P 服 務 資 訊 , 如 圖 4 - 5 。

在 f i n d S e r v i c e s ( ) 方 法 中 , 透 過 參 數 t y p e ( 查 詢 服 務 類 型 ) 、 s c o p e s ( 查 詢 服 務 範 圍 )、 s e a r c h F i l t e r ( 查 詢 服 務 屬 性 的 L D A P 過 濾 字 串 ) 來 建 構 S e r v i c e R e q u e s t 物 件,並 將 S e r v i c e R e q u e s t 物 件 當 成 引 數 呼 叫 s e n d R e q u e s t ( ) 方 法 來 傳 送 查 詢 訊 息 。

(49)

在 s e n d R e q u e s t ( ) 方 法 中 , 呼 叫 S L P C o r e 的 靜 態 方 法 s e n d M e s s a g e ( ) 將 查 詢 訊 息 以 及 一 布 林 值 當 成 引 數 , 以 u n i c a s t 方 式 傳 送 給 D A , 而 布 林 值 所 代 表 的 意 思 為 是 否 需 要 R e p l y 。

在 s e n d M e s s a g e ( ) 方 法 中 , 首 先 建 立 一 個 D a t a g r a m S o c k e t 以 及 s e t u p R e c e i v e r T h r e a d 等 待 接 收 D A 的 回 傳 訊 息 。 接 著 呼 叫 S L P M e s s a g e 類 別 的 g e t B y t e s ( ) 方 法 將 S e r v i c e R e q u e s t 物 件 以 多 型 表 示 為 S L P M e s s a g e 物 件 並 轉 換 成 位 元 組 陣 列 , 透 過 D a t a g r m a S o c k e t 方 式 傳 送 S L P 註 冊 訊 息 給 D A 的 m u l t i c a s t s o k e t T h r e a d 。

D A 啟 動 時 也 會 執 行 S L P C o r e 的 m u l t i c a s t s o k e t T h r e a d, 進 行 m u l t i c a s t 封 包 的 監 聽。當 M u l t i c a s t S o c k e t 接 收 到 S I U A 傳 來 的 查 詢 訊 息 後 會 透 過 呼 叫 S L P M e s s a g e 類 別 的 p a r s e ( ) 方 法 將 接 收 到 的 位 元 組 陣 列 進 行 解 析 , 並 轉 換 回 S L P M e s s a g e 物 件 , 再 呼 叫 S L P D a e m o n 中 的 h a n d l e M e s s a g e ( ) 方 法 來 處 理 S L P M e s s a g e 物 件。

在 S L P D a e m o n 的 h a n d l e M e s s a g e 方 法 中,由 參 數 S L P M e s s a g e 物 件 的 成 員 f u n c I D 得 知 此 S L P M e s s a g e 物 件 實 際 上 為 一 個 S e r v i c e R e q u e s t 物 件 , 因 此 將 S L P M e s s a g e 物 件 轉 型 為 S e r v i c e R e q u e s t 物 件 , 並 透 過 S e r v i c e R e q u e s t 物 件 的 成 員 s c o p e L i s t 中 的 s c o p e 來 呼 叫 r e g i s t e r e d S e r v i c e s 的 方 法 g e t 取 回 以 L i s t 表 示 的 s e r v i c e s , 再 將 s e r v i c e s 中 的 每 個 s e r v i c e 的 成 員 u r l 的 S e r v i c e Ty p e 、 以 及 p r e d i c a t e 和 S e r v i c e R e q u e s t 物 件 的 u r l S e r v i c e Ty p e 、 p r e d i c a t e 進 行 比 對 , 符 合 的 就 將 u r l ( 服 務 位 址 ) 加 入 r e s u l t s ( L i s t ) 中 , 完 成 查 詢 服 務 的 動 作 。

當 查 詢 服 務 完 後 , 將 S e r v i c e R e q u e s t 物 件 與 r e s u l t s 當 成 引 數 建 構 S e r v i c e R e p l y 物 件 , 再 將 S e r v i c e R e p l y 物 件 當 成 引 數 呼 叫

(50)

圖 4-5 UA 向 DA 查詢程式流程

參考文獻

相關文件

„ 移動滑鼠游標到縮圖上, 移動滑鼠游標到縮圖上, ACDSee會自動顯示放大 ACDSee 會自動顯示放大 的縮圖

2-1 註冊為會員後您便有了個別的”my iF”帳戶。完成註冊後請點選左方 Register entry (直接登入 my iF 則直接進入下方畫面),即可選擇目前開放可供參賽的獎項,找到iF STUDENT

大學教育資助委員會資助大學及絕大部分專上院 校接納應用學習中文(非華語學生適用)的「達 標」

學校收到有非華語幼兒的在家進 行這個活動的片段分享。學校適 時提供個別支援,從中以多範疇

密碼系統中,通常將想要保護的密碼訊息稱為 plain text。而將經過加密後產生的加密訊息稱為 cipher text。在這 中間的過程,會用到可以對外供應的 Public Key 以及私人保

107 年第四季(10-12

如何 如何在小學語文課程中加強中華文化的學習 在小學語文課程中加強中華文化的學習 在小學語文課程中加強中華文化的學習

參觀人數達 10人或以上 專為殘疾人士或長者服務的註冊學校、慈