通用即插即用服务自动发现技术

发布时间:2006-07-25 作者:曾辉,费云,唐亮

    通用即插即用(UPnP)是针对局部网络范围内对等互联而设计的一种应用层技术标准,目的是为家庭、小型企业、公共场所提供基于IP技术、易于使用的网络服务自动发现机制。

      UPnP充分利用传输控制协议/网间协议(TCP/IP)和Web技术的开放式分布网络体系结构,其显著特色在于具有灵活而强大的业务发现能力,能将复杂的网络设备驱动变为简单的远程网络控制,同时还提供互联设备的操作控制和信息共享。

      UPnP标准由UPnP论坛[1]制订,该论坛于1999年10月由微软、Intel等公司发起创建,寻求制订基于可扩展标记语言(XML)的通用设备描述标准,以便在一个可扩展的网络环境中实现设备的互操作,使不同厂商生产的设备所提供的服务和内容能为网络上的所有计算设施使用。目前,UPnP论坛已有700多个成员单位,包括联想、海信、中兴、华为等在内的众多中国IT和通信业著名公司都是该论坛的成员。

      UPnP论坛于2001年11月建立了UPnP技术开发公司(UIC)[2],这是一个开展UPnP设备认证和UPnP商标特许工作的非赢利性组织,有近40家公司加盟,在全球24个国家开展了UPnP注册商标的申报工作,很多跨国公司都把取得UIC认证作为其产品发展的一个里程碑。

      UPnP技术最有力的竞争者是Sun公司提出的Java智能网络基础设施(Jini),其基本思想是将Java应用环境从单一主机的虚拟机向网络化方向扩展。

      UPnP和Jini的体系结构非常类似,功能上各有千秋。和UPnP直接使用底层TCP/IP协议不同的是,Jini主要通过由Java语言定义的接口来实现功能调用,在逻辑层次上看,Jini更接近于一种分布式的应用程序接口/对象共用环境。其好处是可提供更高层次的安全机制,编程更方便且易于和已有Java应用结合,局限性在于效率上会有些牺牲,而且必需使用Java技术。而UPnP则以开放的互联网作为其技术基础,可以支持基于任何语言、任何应用环境的设备的自动发现和连接,因而为业界广泛接受,成为家庭网络重要的支撑技术。

1 UPnP系统结构

1.1 UPnP基本构件
      UPnP系统的基本网络构件包括:设备、服务和控制点。

      UPnP设备是提供服务的网络实体。对于具有多种功能的综合信息设备,可以在逻辑上分解为一个根设备和若干个嵌入式设备,其中,根设备提供核心功能,嵌入式设备提供附加功能。例如,一台包含打印功能的扫描仪,整个扫描仪可以被称为根设备,提供扫描服务,内置于扫描仪中的打印机就被称为嵌入式设备,提供打印服务。

      服务是UPnP系统中最小的可控制单元,它包括一系列可控制的动作和一组记录该服务目前进展情况的状态。

      控制点就是控制UPnP设备工作的网络终端,主要功能包括:获取设备描述和相关服务列表;获取感兴趣的服务描述;发出控制消息控制设备动作;向感兴趣的服务发出订阅消息,以便当服务状态改变时,自动获得事件通知。例如,当通过PC机选台收看电视时,电视机就是设备,PC机就是控制点。

1.2 UPnP协议栈
      UPnP系统的协议栈如图1所示。可以看出,UPnP遵从Internet设计的基本原则,利用很多Internet标准协议,具有很好的兼容性和可扩展性,易于设计和快速开发。

 

      应用层传送的核心内容就是远程服务调用指令和相应的交互信息,其格式遵从UPnP论坛定义的UPnP设备架构(UDA)[3]标准,论坛已标准化13种典型信息终端设备的UDA描述。除此以外,应用层消息还可包括由UPnP论坛工作委员会定义的补充信息以及由UPnP设备厂商定义的特定信息。

      上述应用层的服务控制过程都通过远程对象调用实现,对象描述和调用指令通过简单对象访问协议(SOAP)[4]传送。服务状态信息的变化被抽象为事件,其订阅和通知通过通用事件通知结构(GENA)[5]协议实现。服务发现机制和Web Services类似,通过定义一个专门的发现协议实现,只是该协议较为简单,称之为简单服务发现协议(SSDP)[6]。这些协议消息都封装在互联网上广为使用的超文本传输协议(HTTP)[7]中,其中HTTPU和HTTPMU分别支持单播和多播应用环境,整个协议栈建立在公共的TCP/UDP/IP协议基础之上。下面具体讨论SSDP、SOAP和GENA 3个UPnP核心协议。

2 UPnP核心协议

2.1 SSDP协议
      SSDP用于服务发现,控制点通过它定位其感兴趣的资源在网络中的位置,设备通过它告之它们的可用性。SSDP客户(控制点)可往本地保留的多播地址的SSDP端口(如239.255.255.250:1900)发送“发现”(Discovery)消息来寻找SSDP服务;SSDP服务(设备)也可以同样的方式发送SSDP指示来宣示它的存在。

      SSDP消息由4个部分组成:

  • 服务类型,如扫描、时钟等。
  • 唯一的客户服务名(USN),用于区分同一服务类型的不同的具体服务。
  • 有效期,指明SSDP客户在其缓存中保存该服务信息的时间。
  • 位置信息,指示服务所在的具体位置。

      表1表示了一个SSDP消息示例。

 

      消息宣示了一个类型为upnp:NetworkCamera的服务存在,其有效期为3天,从地址10.10.9.200/NC可以取得其服务描述文件。

2.2 SOAP协议
      SOAP用于服务控制调用,它以XML形式提供了一个简单、轻型的可在分散或分布式环境中交换结构化信息的机制。SOAP消息是一个XML文档,包括一个必备的SOAP封装、一个可选的SOAP头和一个必备的SOAP体。SOAP本身并没有定义任何应用层语义。

2.3 GENA协议
      GENA协议被用于事件订阅和通知。订户向它的订阅仲裁者发送订阅请求,仲裁者将会向订户转发它收到的符合订户订阅要求的通知。订户也可以和事件源直接发生通信,此时,通知源同时又扮演了订阅仲裁者的角色。

3 基于UPnP的服务发现
      基于UPnP的服务自动发现和调用过程包括6个功能:寻址、发现、描述、控制、事件、展示,如图2所示。

3.1 寻址
      寻址功能实现设备如何获得IP地址,这是基于IP网络技术的UPnP系统首先必需解决的问题。UPnP首选采用动态主机配置协议(DHCP)寻址机制。每个设备应配备一个DHCP客户端,在首次与网络相连时自动搜索网络中的DHCP服务器,通过信息交互使用服务器分配给它的IP地址。如果网络中没有可用的DHCP服务器,即网络处于未管理状态,则设备通过自动IP寻址(Auto-IP)[8]确定其地址,并保证其地址和其他设备没有冲突。

3.2 发现
      发现功能实现控制点搜索网络上的UPnP设备,同时UPnP设备也要宣告自己的存在。当一个新设备被添加到网络后,会通过标准的本地多播地址多播发现消息宣告其根设备和嵌入式设备服务。所有控制点将监听该多播地址,获取设备所宣布的新能力可用信息。同样,当一个新控制点被添加到网络后,它会多播一条发现消息来搜索感兴趣的设备或服务,或同时搜索两者。所有设备均必须监听该多播地址。

      NOTIFY(宣告)消息使用SSDP的NT(宣告类型)方法,包含4个主要组成部分:

  • 在NT标头中发送的潜在搜索目标(例如设备类型)
  • 在USN标头中发送的宣告复合标识符
  • 在LOCATION(位置)标头中发送的关于设备更多信息的统一资源定位(URL)地址
  • 在CACHE-CONTROL(缓存控制字段)标头中发送的宣告消息合法持续时间

      搜索消息使用SSDP的M-SEARCH(SSDP定义的一种搜索请求方法),其主要内容为ST(搜索类型)标头中的搜索目标。

3.3 描述
      描述功能实现UPnP设备/服务的形式化描述。控制点在发现了一个设备之后,为了更多地了解设备及其功能,并与设备交互,必须从发现消息中得到设备描述的统一资源定位信息,并通过URL取得设备/服务的描述信息。

      基于XML[9]的UPnP设备/服务描述是实现服务发现、资源共享的基础。UPnP论坛制订了设备描述模板,各厂商在设计新的UPnP设备时必需遵从此模板标准,并给出其XML描述文档。

      设备的UPnP描述一般分成两个逻辑部分:设备描述以及服务描述。

      UPnP设备描述包括特定厂商、制造商信息,如模块名称和编号、序列号、制造商名称、特定厂商网站URL等。对于设备中的每种服务,设备描述都包含服务类型、名称、服务描述URL、控制URL以及事件URL。

      UPnP服务描述定义了动作及其参数、状态变量及其数据类型、范围和事件特征。

      一个完整的UPnP设备描述包括根设备描述文件和嵌入式设备描述文件,两者是嵌套的关系,嵌入式设备描述文件整体是根设备描述文件中<devicelist>元素(设备列表元素)的一个子元素。

      取得UPnP设备描述非常简单:控制点在发现消息的URL上发出HTTP GET(HTTP定义的一种获取数据的方法)请求,然后设备返回设备描述。取得UPnP服务描述也是一个相似的流程,需要使用设备描述中的URL。

3.4 控制
      控制功能实现控制点向UPnP设备发出动作指令。在接收设备和服务描述之后,控制点就可以根据描述向这些服务发出动作指令,同时控制点也可以接收关于动作执行结果的响应。发出动作指令实质上就是一种远程过程调用,控制点将动作对象调用发送到设备服务,当动作完成(或执行失败)后,服务返回相应的结果或出错信息。

      在UPnP中,上述控制过程是由控制点向服务的控制统一资源定位地址(在设备描述的服务元素controlURL子元素部分提供)发送一个SOAP消息实现的。

3.5 事件
      如果控制点订阅了事件,那么当相关服务状态改变时,UPnP设备将向控制点发出通知消息。控制点发现该设备和取得该设备及其服务的描述之后,就可配置事件触发功能。一个UPnP服务描述包括服务响应的动作列表和运行时描述服务状态的变量列表,如果一个或多个状态变量可以被事件触发,服务将会在这些变量发生变化时发布更新,控制点可以订阅以获得此信息。

      订阅者可采用GENA的SUBSCRIBE(订阅)方法发送订阅消息。服务收到订阅消息后,返回的响应中包括:唯一的订阅标识符、事件消息交付URL、事件编号、订阅持续时间。

      服务通过发送事件消息来发布其状态变量的变更,这些消息包含一个或多个状态变量名以及这些变量的当前值。

3.6 展示
      展示是UPnP的任选功能,利用此功能,控制点可以方便地监视或控制UPnP设备。当控制点发现设备并取得设备描述之后,如果描述中包含展示URL,控制点就可以通过此URL获得一个页面,并在浏览器中加载该页面。根据页面功能,用户可以控制设备和/或浏览设备状态。展示URL包含在设备描述的presentationURL元素中,取得展示页面通过一个基于HTTP的过程完成。

4 应用实例分析
      以一个简单的远程可控网络摄像机设备为例分析说明UPnP的工作过程。

      该摄像机不但可以作为网络公共设备供联网用户控制使用,提供拍摄的视频监视信号,而且安装在一个可旋转的云台上,可以在用户的控制下上下左右旋转,以调整到用户想要监视的视角。定义设备类型为urn:schemas-upnp-org:device:NetworkCamera:1,其服务包括调节分辨率、压缩比等图像相关服务和设备的旋转控制服务。将这两种服务分别定义为urn:schemas-upnp-org:service:NetworkCameraPicture:1和urn:schemas-upnp-org:servi ce:Rotation:1。图3示出利用UPnP自动发现该摄像机服务的流程图,具体过程为:


      (1)假设网络有可用的DHCP服务器,网络摄像机分配到的IP地址为10.10.9.200。获得地址后,摄像机使用SSDP的NOTIFY方法向网络中的所有控制点宣告其服务。

      (2)控制点从发现消息中得到设备描述的URL,使用HTTP的GET方法取得UPnP设备描述文件:Network_camera.xml。然后,控制点对设备描述文件进行解析,获取其中的服务描述文件URL,分两次使用HTTP的GET方法取得两个服务描述文件:CameraPictureSCPD.xml和RotationSCPD.xml,通过对服务描述文件的解析可以知道其提供的功能和控制方法。为了表述简洁,图3所示的消息流程中只给出一个HTTP消息交互过程,HTTP响应消息的消息体即为UPnP设备描述/服务描述。

      (3)对服务描述文件进行解析后,控制点使用SUBSCRIBE方法对其感兴趣的变量(图像分辨率)发出订阅请求,这样服务会在分辨率发生变化时向控制点发送事件消息。

      (4)对服务描述文件解析后,控制点向旋转控制服务发出动作消息,该消息发往的地址为设备描述文件中的controlURL字段。旋转控制服务收到此消息后,将按照消息中给出的参数控制云台旋转,并返回200 OK消息。

      (5)假设网络中的其他控制点(控制点Y)改变了摄像机的分辨率,由于控制点X已订阅此事件通知,因此网络摄像机将会把这一事件消息报告给控制点X。

5 结束语
      作为家庭网络的核心技术之一,UPnP充分重用互联网技术标准,提供服务的跨平台自动发现和远程控制。基于UPnP技术的设计应用程序将非常简单,目前许多国家在制订家庭网络体系结构时都采用了该项技术,因此UPnP有良好的应用前景,中国设备制造商应当积极研究开发基于UPnP的应用和设备规范。

6 参考文献
[1] UPnP Forum[EB/OL]. [2004-06-20]. http://www.UPnP.org.
[2] UPnP Implementers Corp. (UIC)[EB/OL]. [2005-05-20]. http://www.UPnP-ic.org/.
[3] UPnP Device Architecture 1.0, Version 1.0.1[S]. UpnP Forum.2003.
[4] GUDGIN M, HADLEY M, MENDELSOHN N, et al. SOAP Version 1.2[EB/OL]. [2003-06-24].
http://www.w3.org/TR/soap12/.
[5] COHEN S, AGGARWAL Y, GOLAND Y. General event notification architecture base GENA[S]. draft-cohen-gena-client. 2000 .
[6] GOLAND Y Y, CAI T, LEACH P, et al. Simple service discovery protocol/1.0[S]. draft-cai-ssdp-v1-03. 1999.
[7] FIELDING R, GETTYS J, MOGUL J, et al. Hypertext transfer protocol——HTTP/1.1[S]. RFC 2616. 1999.
[8] TROLL R. Automatically choosing an IP address in an Ad-Hoc IPv4 network[EB/OL]. [2000-03-02]. http://search.ietf.org/internet-drafts/draft-ietf-dhc-ipv4-autoconfig-05.txt.
[9] Extensible markup language[EB/OL]. [2000-10-06]. http://www.w3.org/XML/.

收稿日期:2006-05-25

[摘要] 随着数字家电的普及,家庭网络技术呈现出越来越广阔的市场应用前景。为了实现家庭网络互联设备的操作控制和信息共享,需要采用通用即插即用(UPnP)技术。UPnP充分重用包括IP、传输控制协议(TCP)、数据报协议(UDP)、超文本传输协议(HTTP) 和可扩展标记语言(XML)在内的互联网技术标准,提供服务的跨平台自动发现和远程控制。采用UPnP可实现灵活而强大的业务发现能力,能将复杂的网络设备驱动变为简单的远程网络控制,同时还能提供互联设备的操作控制和信息共享。

[关键词] 通用即插即用;服务发现;服务描述

[Abstract] Along with the popularization of digital home appliances, the home networking technologies have the prospects for a broader market application. It requires the Universal Plug and Play (UPnP) technology to fulfill control and data transfer of interconnected devices in a home network. The UPnP technology makes full use of the multiple Internet technology standards including Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP) and Extensible Markup Language (XML) to provide cross-platform automatic service discovery and remote control. UPnP helps implement the flexible and powerful service discovery capability and change complex network device driving into simple remote network control. Moreover, it enables control and data transfer of networked devices.

[Keywords] UPnP; service discovery; service description