400 likes | 668 Views
智慧家庭中資源導向隨插即用服務管理協定的設計與 實現 Resource-Oriented Plug-and-Play Service Management Protocol for Smart Home Environment. 報告者 : 陳鵬宇 指導 教授 : 廖峻鋒老師. 大綱. 前言 相關研究 系統設計 預計實驗 結論與未來研究. 前言. 智慧家庭環境 佈 滿不同廠牌的電子產品, ex: 感測器、手機、冷氣等等 服務 (service) 是由環境中各個位置的軟硬體元件,藉由互相合作來提供各式服務
E N D
智慧家庭中資源導向隨插即用服務管理協定的設計與實現Resource-Oriented Plug-and-Play Service Management Protocol for Smart Home Environment 報告者:陳鵬宇 指導教授:廖峻鋒老師
大綱 • 前言 • 相關研究 • 系統設計 • 預計實驗 • 結論與未來研究
前言 • 智慧家庭環境 • 佈滿不同廠牌的電子產品,ex:感測器、手機、冷氣等等 • 服務(service)是由環境中各個位置的軟硬體元件,藉由互相合作來提供各式服務 • ex:感測器負責感測溫度,藉由軟體運算來控制冷氣達到溫控服務
前言 • 服務管理 • 智慧家庭環境使用服務管理機制 • 管理協調服務中的各式軟硬體元件 • 處理各式設備、軟體與裝置的偵測、發現、資料傳送及組合等問題 • UPnP (Universal Plug and Play)就是一種管理機制
前言 • UPnP • 由UPnPForum所推廣的一套網路協定 • 目標是使家庭網路的各種設備互相連線,並簡化相關網路的實作 • 協定主要有三種: • 發現 Discovery - SSDP • 控制 Control - SOAP • 事件Eventing-GENA
前言 • 研究問題及目標 • 問題與困難 • UPnP控制步驟SOAP效能較差 • UPnP技術門檻需求高 • 目標 • 設計一個新的服務管理協定 • Resource-Oriented Service Administration (ROSA) • 優點 • 使用Representational State Transfer(REST)軟體架構風格 • 提供簡單的操作方法 • 通過大家熟悉的HTTP方法來操作服務,降低使用的技術門檻
前言 • 使用REST軟體架構風格優點 • REST相較於SOAP明顯的更加簡潔與輕量 • programmableweb網站的統計資料中,REST應用日漸增加 • 2014年REST已到70%,而SOAP只有21% • REST嚴格遵守HTTP,能夠提供統一介面讓使用者操作 • REST的無狀態溝通性質,適合應用在智慧家庭環境 • 將server繁重的附載轉移到client • client擁有相對於server較強的運算設備
相關研究-URI • Uniform Resource Identifier用來標識網際網路資源 • URI可使client對資源透過特定的協議進行操作 • 在REST與HTTP中,資源皆由URI所表示 • ROSA URI設計 • 使用AURI代替一組資源(Caporuscioet al.) • 通過AURI發送multicast • 根據IETF 5785 • 使用 /.well-known/註冊已知資源 • ex : GET /.well-known/discover
相關研究- HTTP • HTTP是目前網際網路上應用最廣泛的一種網路傳輸協議 • 在REST中經常使用到HTTP的標準方法有四種 • GET • 向指定資源發出讀取請求,使用GET方法只在讀取資源狀態 • POST • 向指定資源送出資料,請求伺服器進行處理,用於新增資源 • PUT • 向指定資源位置上傳其最新內容,用於更新資源狀態 • DELETE • 請求伺服器刪除指定資源 • HTTPU與HTTPMU • 在UDP基礎上實現HTTP • 用來實現廣播(multicast)的機制
相關研究-廣播 • 廣播 • 把訊息同時傳遞給一組目的地址 • 單點傳送將相同資料送到n台主機,需傳送n次才完成 • 廣播只需傳送一次即可 • 可以節省網路上的資訊傳送量 • UPnP使用239.255.255.250作為廣播位址
相關研究 • Representational State Transfer(REST) • Fielding在2000年提出的軟體架構風格 • 遵守幾項關鍵原則 • 所有資源都要有一個唯一id • REST中的一切都被認為是一種資源,每個資源都由URI表示 • 將所有資源鏈接在一起 • 資源在網路互相連結,可使讓資源互相提供服務 • 使用標準方法 • REST嚴格遵守HTTP,並使用HTTP中的標準方法 • 無狀態溝通 • request必須是完整且獨立的,發送時要包含所有需要用到的數據 • Ex:當在瀏覽網頁時現在頁面是第5頁,若要求翻回上一頁的話,此要求要附帶第5頁這個狀態,而不是只要求上一頁。
相關研究 - RMM • Richardson Maturity Model • 判斷符合rest設計風格的模型 • 分為四個等級
相關研究 • Level 0 sling plain old XML POST /appointmentService HTTP/1.1 <openSlotRequest date = "2010-01-04" doctor = "mjones"/> HTTP/1.1 200 OK <openSlotList> <slot start = "1400" end = "1450"> <doctor id = "mjones"/> </slot> <slot start = "1600" end = "1650"> <doctor id = "mjones"/> </slot> </openSlotList>
相關研究 • Level 1Resources POST /doctors/mjones HTTP/1.1 <openSlotRequest date = "2010-01-04"/> HTTP/1.1 200 OK <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openSlotList>
相關研究 • Level 2HTTP method GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 HTTP/1.1 200 OK <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"/> <slot id = "5678" doctor = "mjones" start = "1600" end = "1650"/> </openSlotList>
相關研究 • Level 3Hypermedia Controls GET /doctors/mjones/slots?date=20100104&status=open HTTP/1.1 HTTP/1.1 200 OK <openSlotList> <slot id = "1234" doctor = "mjones" start = "1400" end = "1450"> <link rel = "/linkrels/slot/book" uri = "/slots/1234"/> </slot> … </openSlotList>
系統實作-設備架構 • UPnP的網路服務是由Device、Service、Action、Argument、State Variable 及Control Point 組成 • ROSA服務管理機制將上述元素皆視為resource • ROSA URI http://127.0.0.1:8080 /light /lightService /lightLevel
系統實作-UPnP發現 • 在發現步驟中由SSDP操作 • SSDP是由HTTPU與HTTPMU為基礎來實作 • 發現步驟會有兩種情況 • M-SEARCH • 控制點(ControlPoint)透過SSDP發現有興趣的服務 • Presence Announcement • 設備(Device)加入網路,透過SSDP宣告自己的存在
系統實作-UPnP發現 • 控制點想要搜尋有興趣的服務或設備 • 已搜索設備種類以TV為例 M-SEARCH * HTTP/1.1 Host: 239.255.255.250:1900 Man: "ssdp:discover" MX: 3 ST: urn:schemas-upnp-org:device:TV:1 HTTP/1.1 200 OK Location: http://140.134.26.63:4004/description.xml ... Cache-Control: max-age=1800 (or Expires: 1800) ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
系統實作-UPnP發現 • 當設備加入網路時會告知當地的控制點 NOTIFY * HTTP/1.1 ... Location:http://140.134.26.63:4004/description.xml NTS: ssdp:alive ST:urn:schemas-upnp-org:device:InternetGatewayDevice:1 … NOTIFY * HTTP/1.1 … NTS: ssdp:bye-bye ST:urn:schemas-upnp-org:device:InternetGatewayDevice:1 …
系統實作-ROSA發現 • M是一種AURI GET /.well-known/discover HTTP/1.1 Host: 239.255.255.250:1900 MX: 3 RT: http://selab.iecs.fcu.edu.tw/rt/WebCam/1 PORT: 3344 HTTP/1.1 204 No Content URL: http://webcam1.selab.iecs.fcu.edu.tw ... RT: http://selab.iecs.fcu.edu.tw/rt/WebCam/1
系統實作-ROSA發現 • 當設備加入網路時會告知當地的控制點 PUT /.well-known/presence HTTP/1.1 ... URI:http://127.0.0.1:8080/device/WebCam RT: http://selab.iecs.fcu.edu.tw/rt/WebCam/1 DELETE /.well-known/presence HTTP/1.1 URL:http://127.0.0.1:8080/device/WebCam RT:http://selab.iecs.fcu.edu.tw/rt/WebCam/1
系統實作-UPnP描述 • 控制點發現設備後,必須獲取描述檔來得知設備的能力 • 設備描述檔能提供的訊息
系統實作-UPnP描述 • 設備描述檔能提供的訊息
系統實作-ROSA描述 • 使用Web Application Description Language(WADL)描述服務 • 檔案由發現訊息中URI標頭位址取得 • 以資源http://localhost:8080/device/light/lightLevel為例 HTTP/1.1 204 No Content URL: http://webcam1.selab.iecs.fcu.edu.tw ... RT: http://selab.iecs.fcu.edu.tw/rt/WebCam/1
系統實作-UPnP控制 • 在控制階段,是使用SOAP進行操作 • 控制點可以透過SOAP • 使用服務或設備 • 查詢服務或設備目前狀態
系統實作-UPnP控制 <serviceType>urn:schemas-upnp-org:service:DimmingService:1</serviceType> <serviceId>urn:upnp-org:serviceId:DimmingService:1</serviceId> <SCPDURL>/service/level_description.xml</SCPDURL> <controlURL>/service/level/control</controlURL> <eventSubURL>/service/level/eventSub</eventSubURL> • 若想控制設備,必須傳送SOAP訊息 • 以控制燈光亮度為例
系統實作-UPnP控制 • 若成功,設備會回傳200ok
系統實作-ROSA控制 • 使用REST架構風格,採用HTTP來傳送 • URI是透過前面ROSA URI命名規則來實作 • Active Resource可以透過HTTP • 使用服務或設備 • 查詢服務或設備目前狀態
系統實作-ROSA控制 • 以取得燈光狀態為例 • Active Resource會針對該資源使用GET方法取得狀態 • 若該資源存在則會回應成功接受要求的封包 GET http://127.0.0.1:8080/device/light/LightStatus HTTP/1.1 ….. Response-Code: 200 …. Payload: {"LightStatus":"0"}
系統實作-ROSA控制 • 以控制燈光狀態為例 • Active Resource會針對該資源使用PUT方法更新狀態 • 若該資源存在並且提供服務則會回應成功接受要求的封包 PUT http://140.134.26.63:8080/device/light/LightLevel HTTP/1.1 … Payload: 81 Response-Code: 200 … Payload: {" LightLevel ":"81"}
系統實作-UPnP事件 • 控制點能對有興趣的服務進行訂閱 • 當動作列表與狀態變數列表改變時,服務會更新並發送事件訊息,訂閱該服務的控制點會接收到這些事件訊息 • 事件訊息通過General Event Notification Architecture (GENA)來進行格式化,再經由HTTP進行傳送
系統實作-UPnP事件 • 以下為事件訊息範例 • 以通知lightLevel為例 NOTIFY http://127.0.0.1:8080/device/light/3 HTTP/1.1 ... NT: upnp:event SID: F7B18FFD-975E-47FA-B3A4-1768EED8A549 <e:propertysetxmlns:e="urn:schemas-upnp-org:event-1-0"> <e:property> <lightLevel>30</lightLevel> </e:property> </e:propertyset>
系統實作-UPnP事件 • 訂閱事件時,控制點會向設備發送一個訂閱訊息 • 每個訂閱訊息都包含訂閱期限 • 若成功訂閱,會回傳確認封包 SUBSCRIBE http://127.0.0.1:8080/device/light/5/lightLevel HTTP/1.1 ... Callback: http://127.0.0.1:8080/device/light/2 NT: upnp:event Timeout: max-age=1800 HTTP/1.1 200 OK … SID: F7B18FFD-975E-47FA-B3A4-1768EED8A549 Timeout: max-age=1800
系統實作-UPnP事件 • 若要保持訂閱,期限內控制點必須在到期前進行續訂動作 • 若不想收到訂閱訊息,則取消訂閱 SUBSCRIBE http://127.0.0.1:8080/device/light/5/lightLevel HTTP/1.1 ... SID: F7B18FFD-975E-47FA-B3A4-1768EED8A549 Timeout: max-age=1800 UNSUBSCRIBE http://127.0.0.1:8080/device/light/5/lightLevel HTTP/1.1 … SID: F7B18FFD-975E-47FA-B3A4-1768EED8A549
系統實作-ROSA事件 • ROSA利用HTTP來進行訂閱、續訂、通知與取消訂閱 • 訂閱訊息屬於新增資訊,使用POST方法來實作 • 若訂閱成功,resource則會回傳訊息來確定訂閱 • 續訂訊息屬於更新資訊,使用PUT方法實作 POST http:// 140.134.26.63:8080 /.well-known/subscribe/stateVariableName HTTP/1.1 Callback: http://140.134.26.63:8080/.well-known/callback Timeout: max-age=1800 HTTP/1.1 204 No Content SID: uuid:a0d599de-275b-4171-8ae9-c8a0da7aad13 PUT http://140.134.26.63:8080/.well-known/callback HTTP/1.1 SID: uuid:a0d599de-275b-4171-8ae9-c8a0da7aad13 Timeout: max-age=1800
系統實作-ROSA事件 • 取消訂閱屬於刪除資訊,使用DELETE來實作 • resource狀態改變,會對所有訂閱的resource進行通知 • 狀態改變屬於更新資訊,所以本研究使用PUT來實作 DELETE http://140.134.26.63:8080/.well-known/subscribe HTTP/1.1 SID: uuid:a0d599de-275b-4171-8ae9-c8a0da7aad13 PUT http://140.134.26.63:8080/.well-known/callback HTTP/1.1 … SID: uuid:a0d599de-275b-4171-8ae9-c8a0da7aad13 {“lightLevel”:”30”}
預計實驗 • 比對兩系統的搜索時間差異 • 了解resource與resource type對發現的影響 • 隨機產生n種resource type,最少三種 • 接著產生m個resource • 產生一段URI例如:http://local:port/rt1/resource01 • 每種resource type有m/n個resource • 啟動m個resource • 每個resource每5秒發布一次存在通知訊息 • 確認收到m個resource通知訊息後 • Control Point/Active Resource開始發出discovery訊息搜尋 • 從n種rt中隨機選3種 • 發出discovery後等待response,先到先選 • 全部完成後停下,記錄全程時間 • 固定n=3,m由10漸漸提升至30 • 固定m=30,n由1漸漸提升至10
預計實驗 • 比較兩系統在控制時所使用的封包流量 • 了解resource與resource type對控制的影響 • 隨機產生n種resource type,最少三種 • 接著產生m個resource • 產生一段URI例如:http://local:port/rt1/resource01 • 每種resource type有m/n個resource • 啟動m個resource • Control Point/Active Resource隨機選取其中三個resource • GET/PUT各個變數一次,以此來計算流量 • 固定n=3,m由10漸漸提升至30 • 固定m=30,n由1漸漸提升至10
結論與未來研究 • 提出ROSA服務管理機制 • 提出使用REST改善UPnP的好處 • 以REST取代SOAP改善效能 • HTTP操作介面 • 無狀態溝通更適合智慧家庭環境 • 預期達到RMMLevel3 Hypermedia Controls • 完成ROSA服務管理協定