uPnP (Universal Plug and Play)
- 작성자
- 고친과정
2011년 6월 9일 : 처음씀
2. 개요
uPnP (Universal Plug and Play)는 오늘날 IPv4기반의 Network상황에서 Home networking을 위해서 많이 활용되고 있습니다. 그리고 DLNA의 수단으로써 좀더 강력한 사용자 접근성을 발휘합니다. 이 페이지는 그러한 uPnP (Universal Plug and Play)에 대해서 간략히 정리해보고자 합니다.
이 문서는 표준을 엄격히 서술하는 것이 아니며 통상적인 범용구현을 위하여 나름 재해석한 내용을 담고 있습니다. 표준과 다른 부분도 있을수 있으니 이점 유념하도록 합니다.
이 문서는 표준을 엄격히 서술하는 것이 아니며 통상적인 범용구현을 위하여 나름 재해석한 내용을 담고 있습니다. 표준과 다른 부분도 있을수 있으니 이점 유념하도록 합니다.
3. 이 글을 읽기전에 필요한 선행지식 요소
- 용어정의
- Action: Service 에 요청하는 명령. 하나 이상의 입력 또는 출력 인수를 사용할 수 있으며 반환 값도 가질 수 있습니다.
- Control point: Device 및 Service 의 제공정보를 검색하고 이에 맞는 이벤트를 수집 및 제어를 수행를 담당하는 부분
- Device: 논리적인 개념의 장치로 정의되며 또 다른 논리적인 개념의 Device 및 Service를 포함할수 있으며 Network 에 자신의 존재를 알리는 일련의 행위를 주도합니다.
- RootDevice: 어떠한 논리적 Device에 속하지 않은 최상위의 Device를 말합니다.
- Service: 논리적인 개념의 기능 단위로 정의되며 제어에 있어서 가장 작은 단위를 말합니다. Action과 Model들에게 상태 변수와 물리적 장치의 상태를 제공 할 수 있습니다.
- IPv4, IPv6
- UDP, TCP
- RFC2616: Hypertext Transfer Protocol -- HTTP/1.1
- XML(Extensible Markup Language). W3C recommendation.
- DNS (Domain Name System)
- DHCP (Dynamic Host Configuration Protocol)
- RFC2279: UTF-8, a transformation format of ISO 10646
- UUID (Universally Unique IDentifier)
- SSDP(Simple Service Discovery Protocol)
- SOAP (Simple Object Access Protocol)
- GENA (General Event Notification Architecture)
4. 개략적인 흐름
- Protocol stack
uPnP (Universal Plug and Play) Vendor uPnP (Universal Plug and Play) Forum uPnP (Universal Plug and Play) Device Architecture SSDP Multicast events SOAP GENA HTTP UDP TCP IP
- 탐색 및 제어의 흐름
[PNG image (25.2 KB)]
- UPnP 의 실현단계
- Step0: Device 와 Control Point 들간에 적절한 Network 주소체계를 부여하여 검색이 가능한 Network주소를 이용할수 있도록 하는 단계.
- Step1: Control Point가 적절한 Device 를 찾고 이를 정돈하는 단계.
- Step2: Device 의 자세한 기능을 Control Point가 수집하는 단계.
- Step3: Control Point 가 Device로 적절한 명령 및 이벤트를 하달하는 단계.
- Step4: Device가 제공하는 상태변화를 Control Point 가 인지하는 단계.
- Step5: Device들의 사용자 Interface를 표시하는 단계.
5. 개발요소
- DHCP Server
- dhcpd
- DHCP Client
- dhclient, dhcpcd
- HTTP Server (v1.1 support)
- Apache
- HTTP Client
- cURL, wget
- XML parser
- UUID Generator
- util-linux
- SSDP(Simple Service Discovery Protocol)
- SOAP
- GENA (General Event Notification Architecture)
6. 동작요소
6.1. Addressing
- uPnP (Universal Plug and Play)의 가장 첫 단추는 주소체계(Addressing)의 이해와 구현이 선행되어야 합니다.
- uPnP (Universal Plug and Play)는 IP기반의 Network상에서 구현되므로 IP주소가 필요합니다.
- uPnP (Universal Plug and Play)의 Control Point 와 Device는 DHCP server를 구현할 필요는 없지만 DHCP client 에 대응하는 일련의 DHCP network 주소체계 및 AutoIP 를 확보할수 있어야 합니다.
- uPnP (Universal Plug and Play)와 DLNA는 IPv4기반하에 동작하는게 기본적인 사항입니다. 그러나 IPv6호환성이 고려됩니다.
6.2. Discovery
[PNG image (40.14 KB)]
- SSDP(Simple Service Discovery Protocol)를 사용하여 장비를 탐색합니다.
- Control point는 장비를 탐색하는데 적극적이고 장비들은 이러한 탐색에 응답하게 됩니다.
6.3. Description
- Control point는 장비를 탐색후 장비에 대한 제한적인 정보만을 가지고 있게 되는데 Description을 통해서 장치로부터 좀더 세부적인 정보를 XML형태로 취득합니다.
6.4. Control
- 장비들에게 XML로 표현되는 형태의 SOAP으로 명령을 내릴 수 있습니다.
6.5. Event
- 장비의 상태변화를 Control point에게 XML로 표현되는 형태의 GENA로 통지합니다.
6.6. Presentation
- 장비가 URL을 제공하여 Control point가 이를 이용하여 특정 내용을 가져올 수 있도록 제공합니다. 내용에 따라서 사용자에게 제어할 수 있도록 Interface를 제공합니다.
7. 참고자료
- http://www.upnp.org/
- http://www.dlna.org/
- http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf
- RFC2710: Multicast Listener Discovery (MLD) for IPv6
- RFC2616: Hypertext Transfer Protocol -- HTTP/1.1
- Multicast and Unicast UDP HTTP Messages
- RFC2279: UTF-8, a transformation format of ISO 10646
- XML(Extensible Markup Language). W3C recommendation.
- http://pds14.egloos.com/pds/200907/11/09/uPNP_and_DLNA.pdf
- http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
- http://quimby.gnus.org/internet-drafts/draft-cai-ssdp-v1-03.txt
- SOAP (Simple Object Access Protocol)
- http://opentools.homeip.net/dev-tools-for-upnp
- LG UDAP
- GENA - General Event Notification Architecture Base: Client to Arbiter