2006/11/13

數位家庭產品初探 -- uPnP 內部 (1)

uPnP 用到的 protocol stack:













UPnP Vendor Defined
UPnP Forum Working Committee Defined
UPnP Device Architecture
HTTPMU
(Discovery)
[SSDP][GENA]
HTTPU
(Discovery)
[SSDP]



SOAP
(Control)
HTTP
(Description)
HTTP
[GENA(Event)]
UDPTCP
IP

一般動作有 discovery(SSDP), description, control, eventing(GENA), presentation.
uPnP 裝置簡單分成 controlled devices (又稱為 devices),及 controll points, 前者類似 server.
uPnP 裝置一定要具備 DHCP client 功能,

也因為 uPnP 裝置必然是在 IP 之上,定址是最開始的工作。若系統有 DHCP server, 則稱為 Managed network, 否則就是 unmanaged network. 當然在 unmanaged network 環境中,我們可以讓某一個 uPnP 裝置上實作 DHCP server。照文件上說明,Auto-IP 採用 169.254/16 範圍(zeroconf),排除前後各 256 個 IP 做為保留(參考 SSDP, RFC3927)。

Auto-IP 就簡單說一下,基本上是以 MAC address 為亂數種子來選取 169.254.1.0 到 169..254.254.255(再說一次,前後各 256 個 IP 列為保留不可使用)。選取位址後以 ARP probe 來測試該 Ip 是否使用中,若是則重覆選取與測試。

事實上,Auto-IP 是為了 unmanaged network,若 uPnP 裝置發現有 DHCP server 的存在,也必須在無連線需求下,切換到 managed network 工作狀態,有連線需求可保留某一段時間後再切換。
要找 DHCP server 可以每五分鐘(非固定)經由送 DHCPDISCOVER 去找是否有人回應 DHCPOFFER。

說到這裡,讓我想起 GeeXboX 並未遵守此項規定。

0 意見: