Bridging between AD HOC local networks and internet-based peer-to-peer networks

Bridging between ad hoc local networks and Internet based peer-to-peer networks involves coupling a bridge device to a local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The bridge device is coupled to a public network using an Internet-based peer-to-peer networking protocol. In one arrangement, metadata related to media accessible from a media server of the local network is determined via the bridge device, and the metadata is transformed via the bridge device to enable peer-to-peer devices of the public network to discover the media via the bridge device using the Internet-based peer-to-peer networking protocol. In another arrangement, metadata related to media accessible from the public network is determined via the peer-to-peer networking protocol, and the metadata is transformed via the bridge device to enable a device of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol.

FIELD OF THE INVENTION

This invention relates in general to computing devices, and more particularly to sharing data between local and Internet-based peer-to-peer networks.

BACKGROUND OF THE INVENTION

Universal Plug and Play™ (UPnP) defines an architecture for pervasive, peer-to-peer networking between all types of consumer electronics, including intelligent appliances, wireless devices, and PCs of all form factors. UPnP technologies provide a way for disparate processing devices to exchange data via proximity or ad hoc networks. The UPnP framework is designed to bring easy-to-use, flexible, standards-based connectivity to ad-hoc or unmanaged networks whether in the home, in a small business, public spaces, or attached to the Internet. UPnP technologies provide a distributed, open networking architecture that leverages TCP/IP and the Web technologies to enable seamless proximity networking in addition to control and data transfer among networked devices.

The UPnP Device Architecture (UDA) is designed to support zero-configuration, “invisible” networking, and automatic discovery for a breadth of device categories from a wide range of vendors. This means a device can dynamically join a network, obtain an IP address, convey its capabilities, and learn about the presence and capabilities of other devices. The UPnP specification includes standards for service discovery. Various contributors publish UPnP device and service descriptions, thus creating a way to easily connect devices and simplifying the implementation of networks. It is the goal of UPnP to enable home electronics to seamlessly interact, thus furthering the usefulness of such devices.

Besides allowing locally connected to devices to intercommunicate, the UPnP standard provides a way for the locally devices to easily access external networks such as the Internet. In many scenarios, it is envisioned that a UPnP Internet Gateway Device (IGD) will reside on the edge of the UPnP network and provide connectivity to a Wide Area Network (WAN), including the Internet. An IGD may be implemented as a standalone device or included in another UPnP device (e.g., a personal computer). Besides allowing local UPnP devices to access the Internet, the IGD may also be configured to allow the user to access devices on the UPnP network via the Internet when the user is away from the local network.

Accessing a home or other local network from an external network is often referred to as remote access. There are currently some technological approaches envisioned to provide remote access to the digital home. Typically, these technologies rely on the IGD or similar fixed device to act as an entry point into the local network. For example, the IGD may be configured to accept connections using Virtual Private Networking (VPN) technologies. VPN uses an encrypted “tunnel” through an untrusted network to securely connect endpoints. A VPN can provide a full range of network connectivity to external devices, and potentially extend the UPnP network to externally networked devices.

However, a VPN connection requires a significant amount of overhead, not only in processing connections, but in setup and maintenance of the VPN. Because a VPN can potentially open the entire local network up to intruders, a number of security precautions must be enforced when implementing a VPN solution. Some types of remote access applications, however, are more limited in scope and therefore a VPN solution is an overly complicated and inconvenient option. Similarly, such remote access may be provided by a UPnP IGD. However, a device such as an IGD is primarily designed for basic routing and firewalling operations, whereas typical P2P applications use functions that are particular to the relevant P2P protocols. Therefore, it may not always be appropriate to control remote access via an IGD for purposes of participating in specialized remote access applications.

One example of a specialized remote access protocol is Internet peer-to-peer (P2P) networking. P2P technologies allow network peers to connect to each other when each party in the P2P network has the same capability. Any of the peers may initiate the communication session with any other of the parties in the network, and the peers may provide different services to each other depending of the P2P implementation. Example P2P protocols include Gnutella, Napster, and Session Initiation Protocol (SIP). The first two protocols are commonly associated with file sharing, and SIP is commonly used for establishing media sessions, including images, voice, sound, etc.

Although a fixed device such as an IGD using VPN may provide access to a home network by elements of an Internet P2P network, the level of access provided by a VPN would be far too great for untrustworthy Internet peers. Further, Internet and other infrastructure-based P2P applications utilize protocols that may be incompatible with UPnP. Therefore, a solution that connects P2P and UPnP networks in a limited fashion is desirable.

SUMMARY OF THE INVENTION

To overcome limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a system, apparatus and method for bridging between ad hoc local networks and Internet based peer-to-peer networks. In one embodiment, a method involves coupling a bridge device to a local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The bridge device is coupled to a public network using an Internet-based peer-to-peer networking protocol. The bridge device determines metadata related to media accessible from a media server of the local network. The metadata is transformed via the bridge device to enable peer-to-peer devices of the public network to discover the media via the bridge device using the Internet-based peer-to-peer networking protocol.

In more particular embodiments, the method further involves facilitating downloading of the media as a file to the peer-to-peer devices of the public network via the bridge device and/or streaming the media to the peer-to-peer devices of the public network via the bridge device. Streaming the media to the peer-to-peer devices of the public network via the bridge device may involve establishing a Session Initiation Protocol session between the bridge device and at least one of the peer to peer devices of the public network. In one arrangement, coupling the bridge device to the local network using the ad-hoc, peer-to-peer protocol involves coupling the bridge device to the local network using Universal Plug and Play, where the bridge device may further act as a Universal Plug and Play control point. Coupling the bridge device to the public network using the Internet-based peer-to-peer networking protocol may also involve coupling the bridge device to a Gnutella network and/or a SIP-based communications network.

In another more particular embodiment, the method further involves determining via the bridge device metadata related to media accessible from the public network via the peer-to-peer networking protocol. The metadata is transformed via the bridge device to enable the peer-to-peer devices of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol.

In another embodiment of the invention, a method involves coupling a bridge device to a home network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The bridge device is coupled to a public network using an Internet-based peer-to-peer networking protocol. The bridge device determines metadata related to media accessible from the public network via the peer-to-peer networking protocol, and transforms the metadata to enable a device of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol.

In another embodiment of the invention, an apparatus includes one or more network interfaces capable of communicating via a local network and a public network, and a processor coupled to the one or more network interfaces. A memory is coupled to the processor, and includes instructions that cause the processor to connect to the local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The instructions cause the processor to connect to the public network using an Internet-based peer-to-peer networking protocol, determine metadata related to media accessible from a media server of the local network, and transform the metadata to enable peer-to-peer devices of the public network to discover the media via the apparatus using the Internet-based peer-to-peer networking protocol.

In more particular embodiments, the instructions further cause the processor to facilitate downloading the media as a file from the local network to the peer-to-peer devices of the public network via the one or more network interfaces and/or to facilitate streaming of the media to the peer-to-peer devices of the public network via the one or more network interfaces. The instructions may cause the processor to connect to the local network using Universal Plug and Play, and in one configuration to act as a Universal Plug and Play control point. The Internet-based peer-to-peer networking protocol may include at least one of a Gnutella-based protocol and a SIP-based communications protocol. The instructions may further cause the processor to determine metadata related to media accessible from the public network via the peer-to-peer networking protocol, and transform the metadata to enable the peer-to-peer devices of the local network to discover the media using the ad-hoc, peer-to-peer protocol.

In another embodiment of the invention, an apparatus includes one or more network interfaces capable of communicating via a local network and a public network, and a processor coupled to the one or more network interfaces. A memory is coupled to the processor, and includes instructions that cause the processor to connect to the local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The instructions cause the processor to connect to the public network using an Internet-based peer-to-peer networking protocol, determine metadata related to media accessible from the public network via the peer-to-peer networking protocol, and transform the metadata via bridge device to enable a device of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol.

In another embodiment of the invention, a computer-readable medium has instructions stored which are executable by a bridge device capable of being coupled to a first network and a second network. The instruction causing the bridge device to perform steps that include connecting to the first and second networks. One of the first and second network includes a local network utilizing an ad-hoc, peer-to-peer protocol, and the other of the first and second networks includes a public network having peer-to-peer devices coupled via an Internet-based peer-to-peer networking protocol. The instruction causing the bridge device to determine metadata related to media accessible from devices of the first network, and transform the metadata to enable devices of the second network to discover the media via the bridge device.

In another embodiment of the invention, a system includes a first network and a second network. One of the first and second networks includes a local network utilizing an ad-hoc, peer-to-peer protocol, and the other of the first and second networks includes a public network having peer-to-peer devices coupled via an Internet-based peer-to-peer networking protocol. A bridging device is coupled to the first network and the second network. The bridging device includes: means for discovering media accessible from devices of the first network; means for determining metadata related to the media; and means for transforming the data between formats conforming to the protocols of the first network to formats conforming to the protocols of the second network to enable devices of the second network to discover the media via the bridging device.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

Generally, the present invention relates to using a locally coupled device act as a bridge to external peer-to-peer (P2P) networks. In one arrangement, the local network includes Universal Plug and Play (UPnP) compatible devices and services that are made accessible to an Internet P2P network via a locally coupled bridging device. In other configurations, the UPnP/P2P bridge makes UPnP services of the local network available to the P2P network. For example, the bridging device may offer media from one or UPnP media servers to peers of the P2P network. In order to provide this functionality, the bridging device will translate metadata between the UPnP network, and may also modify mechanisms used to access the underlying media.

In reference now toFIG. 1, a block diagram100illustrates a system for coupling a local network102with a P2P network104on the Internet106(or other external network) according to embodiments of the invention. The local network102may include any combination of data transmission media and protocols. For example, the network may utilize wired or wireless data transmission media. Similarly, devices on the local network102may use various physical and data link layer protocols to intercommunicate, including, Ethernet, FDDI, PPP, ATM, HDLC, Fibre Channel, X-10, serial/parallel point-to-point connections, etc. A number of higher layer network protocols may operate on the network102as well, including TCP/IP, UDP/IP, IPX, Appletalk, ICMP, ARP, SNMP, DNS, FTP, NetBEUI.

Generally, the local network102may support one or more protocols for ad-hoc, peer-to-peer service discovery and interoperability. One example of this type of protocol is the UPnP architecture. UPnP uses the Simple Service Discovery Protocol (SSDP) for service discovery, and is generally built on top of Internet Protocol (IP) based networks. Although concepts of the present invention may be described in terms of UPnP networks, those familiar with the applicable art will appreciate that these concepts may be applied to any manner of ad-hoc, peer-to-peer networking arrangement suitable for consumer oriented networks. For example, the present invention may also be any combination of home networking and control technologies such as Jini, Bluetooth, X-10, xAP, Rendezvous, HomeRF, IrDA, etc.

Many consumer devices108include data processing capabilities, and therefore can benefit from being locally networked. In the illustrated diagram100, the local network devices108, fixed or portable, include an entertainment system110(such as digital TV, set-top box, digital video recorder, display, LCD projector), audio/video player/recorder, digital still/video camera, computer112, printer114, smart appliance116, mobile communications device118(e.g., cellular phone or PDA), and may include any other home or industrial or in-vehicle automation system including sensors and control devices. These devices108are merely exemplary; any manner of electronic or electromechanical device may be made network-aware and interoperate via the local network102. Protocols such as UPnP are designed to be generic and flexible so that any type of control or data processing functionality can be abstracted and offered as a service to any other UPnP capable entity on the network102.

Also included in the local network102are media servers120,122. These servers120,122are logical entities defined in the UPnP Audio Video (AV). The UPnP AV specification is an adaptation of UPnP that allows consumer electronics devices to distribute digital entertainment content throughout a home/office network. UPnP AV deals with three specific logical entities, media servers120, media renderers (e.g., entertainment system110, computer112), and control points (e.g., computer112, mobile device118). Alternatively, any device110,112,114,116,118,125may function as a media server, a media renderer or a control point, even at the same time, and several devices may assume the same roles at the same time. The media servers120,122may include dedicated hardware (e.g., standalone, network-attached storage) or may be incorporated into other devices such as the computer112and/or entertainment system110. In the latter arrangement, the devices containing the media server120,122may also include other UPnP AV logical components. For example, the computer112may include a sound card and speakers that serve as a UPnP media renderer, and a graphical user interface (GUI) and input devices that serve as a UPnP control point. Although a computer112may already have this capability (e.g., MP3 jukebox software), by presenting the functions as UPnP AV logical components, any other UPnP device on the network102may be able to seamlessly interface with these functions. For example, the mobile device118may be automatically configured as a control point, and be able to control playback of music on the computer112from anywhere in the local environment.

The local network102is typically designed to service a limited physical region, as indicated by the physical region124. This region124may include any space where a user would like devices to easily interoperate, including a home, office, hotel room, automobile, airplane, boat, public wireless hotspot, etc. The protocols used in the local network102(e.g., UPnP) often assume that the network102will need to support only a limited number of devices operating within a reasonably small area. However, many devices on the local network102may benefit from information services available via the external network106, particularly the Internet.

Generally, devices108of the local network102may access the Internet106via a special UPnP function known as an Internet Gateway Device (IGD)125. An IGD provides routing and firewall services on behalf of the devices108, similar to the functions of a conventional gateway. The IGD125has a narrowly defined function—to act as a gateway. As such the IGD125only deals with the low level protocols needed to deliver data to endpoints, and (with some exceptions) is unconcerned about the format or application level protocols used by devices on the network102.

However, many network applications use common application protocols that may be used by a wide variety of different devices and software. One example is a P2P network. Generally, P2P protocols involve end-user devices communicating directly with one another without requiring an intermediary device, such as a server. For example, Internet email is designed to send messages between end-users, but typically does not operate in a P2P fashion. Email applications require a number of known network servers in order to operate. For example, and email application may require the Internet Protocol (IP) address of a Post Office Protocol (POP) or Internet Message Access Protocol (IMAP) server for retrieving incoming email, in addition to an IP address of a Simple Mail Transport Protocol (SMTP) server for outgoing messages. The messages are passed between these and other network servers before being delivered to end-users.

In contrast, a P2P network involves individual user devices, or nodes, discovering and initiating direct connections with each other. The nodes directly negotiate the transactions, and may act independently or cooperatively to perform certain tasks. The diagram100ofFIG. 1shows an example Internet-based P2P network104. The P2P network104may include devices, fixed or portable, such as computers128,130, an entertainment system (such as digital TV, set-top box, digital video recorder, display, LCD projector), audio/video player/recorder, digital still/video camera, computer, printer, smart appliance, mobile communications device134(e.g., cellular phone or PDA), home or industrial or in-vehicle automation system including sensors and control devices that directly communicate with other peer nodes. Other devices, such as computer132and mobile device134, may utilize a proxy136that may process some or all of the P2P tasks on behalf of the devices132,134. Alternatively, all devices on the P2P network may utilize a proxy136that may process some or all of the P2P tasks on behalf of the devices.

The P2P network104may perform many different functions. One example is P2P file sharing, popularized by such applications/protocols as Napster and Gnutella. The original Napster protocol used a centralized server to store descriptions of files that were available for sharing on end-users computers. Other users could find objects of interest on that centralized server, and thereafter connect to a computer that currently stored that object of interest. In contrast, the Gnutella protocol removes need for a centralized search server, and allows peers themselves to process and forward search requests. Even though Gnutella operates with minimal fixed infrastructure (e.g., servers), Gnutella peers may still need to connect to a well-known server in order to find IP addresses of peers with which to initially connect.

Another example of a peer-to-peer protocol is the Session Initiation Protocol (SIP). SIP is used in providing services such as Voice Over Internet Protocol (VoIP), Push To Talk (PTT) on mobile networks, etc. SIP is a standard for initiating, modifying, and terminating interactive user sessions. Typically, SIP sessions involves multimedia elements such as video, voice, instant messaging, push-to-talk voice communications, whiteboarding, online games, virtual reality, etc. SIP peers may require the services of a location server or similar database in order to locate an end-user device, the actual negotiation of a SIP session may occur between the peers themselves.

The SIP framework was to provide functions analogous to those call processing functions and features present in the public switched telephone network (PSTN). As such, SIP provides features similar to those familiar to telephone users, such as dialing numbers and handling of various status tones (e.g. ringing, busy, dial-tone, etc.). SIP may also allow communications devices to use more advanced call processing features such as call-waiting, call-forwarding, caller identification, etc.

SIP works in concert with several other protocols and is only involved in the signaling portion of a communication session. SIP is generally used for setting up and tearing down voice or video calls. The media of SIP-established calls are often communicated over different protocols, such as the Real time Transport Protocol (RTP). SIP is also often used with the Session Description Protocol (SDP), which is used to describe and negotiate the media content of the session. For example, SDP can be used to describe codecs, data rates, TCP/UDP ports, and other data descriptive of the media session.

Applications that use SIP and related protocols via the Internet106may be able to take advantage of devices on the UPnP network as well. For example, it may be desirable to use SIP session to establish a streaming media playback session using from a media server120,122to an Internet coupled device, such as mobile device134. However, the UPnP network102will not typically be openly coupled to the Internet106to allow such an interaction to take place. Even if such a connection between Internet device134and media servers120,122were available, the UPnP media servers120,122would not likely be adapted to establish a session using SIP.

Therefore, in one embodiment of the invention, a UPnP to P2P bridge device140is provided to allow an Internet-coupled, P2P network104to take advantages of services of the local, UPnP network102. The bridge device140is able to connect directly to peers of the P2P network, as indicated by paths142,144. These connections142,144may be provided by a direct connection between the bridge device140and the Internet106, or some intermediary public network, such as a wireless provider network. Additionally, the bridge device140may establish P2P connections142,144via an element the UPnP network102, such as via the UPnP IGD125.

One of the advantages of using the bridge device140is that the device140can be custom tailored to the respective protocols of the local network102and the P2P network104. One example of this is shown in the block diagram200ofFIG. 2, which shows a bridging scenario according to embodiments of the invention. A bridge device202is coupled both to a UPnP local network204and an Internet P2P network206. The P2P network206may utilize a file-sharing protocol such as Gnutella, Napster, BitTorrent, FreeNet, etc. The arrangement200may also be applicable to other types of P2P protocols, including a distributed computing model such as Berkeley Open Infrastructure for Network Computing (BOINC), Alchemi, etc. In the illustrated example, a peer device208of the P2P network206desires to access a file from the local network204using the P2P protocol. To enable this access, a bridge device210is coupled to both the P2P network206and the local network204.

Generally, P2P networks206provide a mechanism for both querying to find data (e.g., based on filenames) and for transferring the data that is found. For example, the Gnutella protocol utilizes specially crafted query messages that are passed to a select number of peers. Each of the peers checks the query (usually a character string) against any files stored by the peer. If the query results in a hit, the result is sent back to the requesting node. If a download is desired based on the query results, then a separate media access mechanism is invoked, such as downloading a file or streaming of media. These two aspects of P2P communications are referred to herein as “control” and “media session” aspects of P2P networking.

The bridge210may be configured to respond to and provide files to any peer of the P2P network206. However, the owner of the local network204may want to limit access to the network204, such that access is limited to certain devices, accounts, or other access restrictions. For example, the device208may be a mobile device of the owner of the local network204, and the bridge may honor requests only from an identifier associated with the mobile device208, such as a media access control (MAC) address, hostname, IP address, etc. Alternatively, the bridge210and peer device208may use pre-arranged hash or encryption of query strings, such that standard, clear text queries directed to the bridge210will present zero results. If an encrypted query is sent from the peer device208to the bridge210, however, the bridge may potentially return some results, by either de-encrypting the query string and comparing against unencrypted local metadata or comparing the encrypted search string against encrypted metadata.

The bridge210typically need not include any files of its own for sharing. The bridge210should, however, be able to determine files that are available via entities of the UPnP network204. For example, a media server212may include a persistent data store214for holding music, video, images, and the like. The media server212may include a UPnP Content Directory Service (CDS)216that allows media servers212and similar devices to expose available content in an XML tree data structure. The content discoverable via the CDS216may include individual pieces of content such as songs and video clips. The CDS content may also include containers, which represent collections of items such as playlists and photo albums. Each CDS content object, whether an item or container, includes metadata that describes various attributes of the object, such as title, artist, etc.

The CDS216allows a UPnP devices, such as a UPnP Control Point, to browse the content on the media server212and obtain detailed information about individual content objects. The CDS216provides lookup functions such as “browse” and “search” that allows devices to discover individual data objects stored on the media server212. The CDS216also provides functions that allow inserting/creating new objects in the media server212. Once data objects have been located in the CDS216, metadata included in the objects can be used for locating the content via a UPnP Media Renderer device. For example, the metadata may include a Universal Resource Identifier (URI) that points to a file located on the media server216. By using a standard content lookup method (i.e. the CDS216), the processes of storing, retrieving, changing, and rendering digital content can be handled by many UPnP devices. The standards-based nature of UPnP allows these devices to successfully communicate such actions, even though the devices may be from different vendors and use different operating systems.

In the illustrated example, the bridge210includes a UPnP Control Point interface218and a UPnP Media Renderer interface220that emulates respective Control Point and Media Renderer devices on the network204. These interfaces218,220allow the bridge210to search for and deliver content on the UPnP network204(e.g., acting as a UPnP Control Point) for the benefit of the device208on the P2P network206. For example, assume the user of device208wishes to query for a sound recording of Mozart. The user forms query222using a search string (e.g., “Mozart”). This query222is submitted via the P2P network206, where it is received by a P2P interface224of the bridge210. Although the query222is shown going directly from the peer device208to the bridge210, it will be appreciated that queries222(and associated responses) are often routed between intermediate elements of the P2P network206for purposes of efficiency and scalability.

The P2P interface224handles the incoming query by at least examining the content and deciding whether to process further based on some predetermined criteria. Assuming that the query222is one that the bridge210intends to process further, the query is transformed, as indicated by path226. The transformation226may involve extracting relevant data, making an internal record of the query data for later processing, and applying changes to specific query data. These changes may involve encryption/decryption, stripping out control characters, changing character formats (e.g., ASCII, Unicode), rearranging order of data, and adding data specific to the UPnP network204. In this example, the transformed data is passed226to the control point interface218, where it becomes a CDS query228. A CDS query228in this example might look like the example of Listing 1 below.

The CDS216processes the query228, which may involve querying the data store214, as indicated by path230and providing a result232. In the UPnP AV standard, search results232from a CDS216are in an XML formatted document. An example result232is shown below in Listing 2, wherein two results containing the search term “Mozart” are returned. Note that the “res” elements in Listing also provide the bridge210a way to access the file for purposes of downloading.

The bridge210receives the CDS result232and transforms234the result in a form usable on the peer-to-peer network, which is then sent out via the P2P interface224of the bridge. For example, in Gnutella, this may involve forming a QueryHit message236that is returned to the requesting peer208. The QueryHit message236includes a listing of files that satisfy the initial query222, as well as data (e.g., IP address, port) relating to the bridge210that allows the requesting node208to download any results shown in the QueryHit236. When transforming234the CDS result232to a QueryHit236, the bridge210may form a temporary filename for any hits for purposes of presenting results to recipients on the P2P network206. For example, the download URI in Listing 2 only provides initiates an Active Server Pages (ASP) call in order to retrieve the underlying file, but the actual filename is not provided. Therefore, the bridge210may create a temporary filename (e.g., using the title) for each CDS entry, and cache the UPnP access data (e.g., URI, protocol info) related with each temporary filename sent out in the QueryHit message236.

It may be assumed that the user of the requesting peer208will eventually want to download a file offered by the bridge210via the P2P network206. Note that in Gnutella (and other P2P protocols), the actual download of files occurs out-of-band, meaning that the download occurs directly between the downloader208and the uploader210(both are referred to as “servent” in P2P terminology). A download request238is sent from peer208to bridge210. In the Gnutella protocol, this request is in the form of an HTTP GET. For example, a request238according to the present example might look like the request in Listing 3.

If the bridge210is firewalled so that it cannot receive the incoming request238, the Gnutella protocol allows the bridge210to request the content be “pushed” to the requested content to the peer208by way of a “Push” message. If a Push is successful, the firewalled peer210can establish a connection with the other peer208, which then proceeds to perform a specialized HTTP GET transaction. Upon receipt of the HTTP GET, the bridge210determines which entry of the CDS216that the request238corresponds to, and a UPnP request is formed240and sent242to the appropriate media server212. The media server212may respond by uploading244the data to the media renderer220interface of bridge210. The bridge210connects246this incoming data244as outgoing content248sent to the requestor208. The connection246may involve simply buffering the data, although other data conversions may occur (e.g., stripping/converting certain characters) depending on the local and P2P environments.

It will be appreciated that the transactions inFIG. 2are provided by way of example, and many variations may occur. For example, the bridge210may include its own CDS database (not shown), that caches and/or aggregates listings from multiple media servers212of the UPnP network204. Therefore, the CDS Search queries228,232may be performed within the bridge itself. An example of such an aggregated CDS listing is described in commonly-owned U.S. patent application entitled AGGREGATED CONTENT LISTING FOR AD-HOC PEER TO PEER NETWORKS by Costa-Requena, et al, filed on 21 Dec. 2004 having Ser. No. 11/019,934, which is hereby incorporated by reference in its entirety.

In the example ofFIG. 2, an element208of the P2P network206accesses media from a media server212of a UPnP network204by way of a bridge210. Similarly, as shown inFIG. 3, a bridging device300according to an embodiment of the invention can provide media from a P2P network302for the benefit of a local UPnP network304. In this example, the bridge300includes a CDS interface306that may be accessed by elements of the UPnP network302, in particular a UPnP Control Point308. The Control Point308can perform searches at the CDS interface306, and the bridge300can use those searches to form queries on the UPnP network304. The bridge300also includes a media server interface310that is used to deliver the content to the UPnP network304, such as the media renderer312. Finally, the bridge300includes a P2P interface314that interacts according to the protocols of the P2P network304

An example of a transaction with the illustrated system involves the Control Point308executing a CDS search request316with the CDS interface306of the bridge300. This search request316is transformed318within the bridge to form a query320of the P2P network304. At least one peer322of the network receives the query320, either directly, or (more commonly) indirectly via multiple hops through nodes of the P2P network304. The peer322determines that the query320can be satisfied by one or more files in the peer's data store324, and a QueryHit326is sent back to the bridge300.

Those familiar with P2P protocols will appreciate that the bridge300can (and quite often will) receive a plurality of QueryHits326from the P2P network304. The returns from a P2P query are generally dynamic and unpredictable, whereas the a query to a CDS is expected to be more static and reliable. Therefore the bridge300may use some predetermined criteria for processing328these hits326. For example, the bridge300might wait a predetermined amount of time for the query to finish processing, aggregate duplicate entries, delete entries from slow nodes, more highly rank entries that are present on multiple servents, etc. Even so, the bridge300may provide special processing328to the hit data326so that a search result330provided to the Control Point308indicates that there may be delays or network failures in accessing media seen in the result330. For example, the title of individual items in the search result330may be prefaced with “P2P-” or similar indicator of source.

The CDS search result330will also contain an “res” element describing how the requested content can be accessed. The “res” element may include a URI corresponding to the media server interface310of the bridge300. If the user indicates via the Control Point308to play a resultant file from the search result330, the Control Point308may direct332the Media Renderer312to initiate334a download or streaming of the file. The bridge300receives this request334at the media server interface310, and translates336the request to form a download request338via the P2P network304. Assuming the bridge300can establish a connection with the originating servent322, the content is downloaded340by the P2P interface314of the bridge300. The P2P interface314connects342this data to the media server interface310, where it is finally sent344to the media renderer312.

The media renderer312may be able to buffer and store the entire content file directory, in which case the transfer344may involve a file transfer (e.g., HTTP GET or FTP GET). Alternatively, the media renderer312may only support a streaming format. In this latter case, the bridge300may include memory, either volatile or non-volatile, that buffers and/or stores the media file data, and streams344the data to media renderer312when at least enough of the content is buffered on the bridge300such that the streaming344can continue uninterrupted. The bridge300may thereafter discard such downloaded data, or cache/store it for later access.

In the examples ofFIGS. 2 and 3, the P2P networks206,304were generally described as file sharing networks. However, the concepts described in relation to file sharing may be equally applicable to distributed computing applications that involve the transfer of data between peers. For example, a distributed, P2P computing arrangement may transfer blocks of data via the bridge210,300to elements of the UPnP network204,302, where the data is appropriately processed by processing elements of the network204,302. Thereafter, the processed data may be passed back out to the P2P networks206,304via the bridge210,300to fulfill the end purposes of the distributed application.

File transfer is only one way that computing elements exchange data. Other paradigms of data transfer include streaming. Streaming generally involves sending a serial stream of data for immediate processing by end points. Although file transfers are also accomplished using streams of data, these streams are assembled into a contiguous block of data and stored once the entire file has been received via the stream. In contrast, a true streaming application usually processes data on the fly and thereafter discarded. Further, the data stream may be joined at an arbitrary point in time, as there is not necessarily a logical beginning or end to a stream as there is with a file download.

The processing of a stream typically involves transforming the data into perceptible signals, including sound and video. Media such as sound and video are robust in the sense that occasional dropped, out of order, or corrupted pieces of data don't significantly degrade the final signal. However, such media is sensitive to latency or long gaps occurring in the stream. Therefore media such as sound and video can be transported using efficient, although unreliable protocols, such as UDP/IP. In particular, a whole set of protocols such as multicast, the Real time Transport Protocol (RTP), Real Time Streaming Protocol (RTSP), Active Streaming Format (ASF), etc., have been developed specifically for the peculiar requirements of streaming media.

In reference now toFIG. 4, a UPnP to P2P bridge400is shown that couples a UPnP network402to a P2P device404for streaming data according to an embodiment of the invention. Similar to the examples shown inFIGS. 2 and 3, the streaming data processed by the bridge400inFIG. 4is streaming music originating from a UPnP Media Server406. In this case, the P2P device404is a SIP enabled mobile apparatus that is operable by one or both of the Internet408and a mobile services provider network410(e.g., a wireless data network). The mobile device404is capable of setting up sessions using SIP and other protocols (e.g., SDP), and receiving the streaming data via an appropriate streaming protocol.

In this example, the mobile device404may have a listing of songs that are available on the home media server406. Entries of the song list can be used to form a URI used for accessing each song via the bridge400. In one example, the mobile device404sends a SIP INVITE412to a SIP interface414of the bridge400. The URI in this SIP INVITE412contains a description of the target media (e.g., song title) and the IP address/port of the SIP interface414. The description of the desired media may be complete or incomplete (e.g., a search string). The bridge400may use other techniques for forming the media descriptor, such as using a numeric identifier that is formed by a hash of a song title or a hash of the song's content. Alternatively, a standard URI may be used for all such requests (e.g., music-service@hostname), and the media descriptor data is embedded in the SIP message headers or SIP message body.

The bridge400, upon receiving the INVITE412, may need to query the media server406in order to determine the existence and location of the requested content. This may involve converting416some of the data included in the INVITE request412into a CDS Search request418. Here, the Search request418is delivered from a Control Point interface420to a CDS422associated with the Media Server406. In some arrangement, multiple CDS/Media Servers may be searched, and the results of those searches may need to be examined. Assuming a positive result424is received from the CDS422, the bridge400can transform426data in the result to form a SIP ACK428which is sent back to the requesting terminal404. Other SIP transactions (not shown) may occur between the invite428and ACK428, such as TRYING and RINGING responses sent from the bridge400to the mobile terminal404.

The SIP interface414of the bridge400can be configured to operate as a SIP User Agent, such that the SIP enabled mobile device404needs no special adaptations in order to connect to the bridge400, except for the ability for form the proper requests to stream the music (or perform any other data transfer). In the SIP negotiations412,428, the bridge and mobile device404will also define the media parameters via SDP (or other methods known in the art). In this example, the bridge400includes and RTP/RTSP interface430that is capable of engaging in media sessions as negotiated between the bridge400and the mobile device404. After the ACK404is received, the mobile device404establishes a media session432with the RTP/RTSP interface430. In turn, a media renderer interface434of the bridge400establishes a streaming connection436with the media server406, and data from this stream436is routed438to the outgoing stream432. The routing438may involve simply sending the data unaltered, or may involve transcoding and similar transformations.

A device such as bridge400may also facilitate more traditional SIP interactions, such as two way voice and video calls.FIG. 5illustrates an example of voice call established with elements of a UPnP network502via a bridge device500according to an embodiment of the present invention. In this example, a UPnP intercom504is employed via a local network502. The intercom504may be a dedicated collection of devices (e.g., speaker/microphone panels) or may use UPnP to provide intercom functionality by causing disparate UPnP capable devices (e.g., stereos, computers, speakerphones, mobile phones) to interact as an intercom system. The bridge500includes a SIP interface506and an RTP/RTSP interface508that operate with the Internet510and/or mobile provider networks512as described above. The bridge500also includes a Control Point interface514and a Media Renderer interface516for communicating with elements of the UPnP network502.

A mobile device518is capable of SIP and RTP/RTSP communication via any combination of the Internet510and provider networks512. The user of the device518initiates a voice call to the intercom504by sending a SIP invite520to the SIP interface506of the bridge500. The bridge500converts522the INVITE512to a format suitable to request524a UPnP connection with the intercom504. The UPnP request524is sent via the Control Point interface514of the bridge500, and an affirmative response526is received by the Control Point interface514. The response526is converted528to a SIP ACK530. Upon receipt of the ACK530, the mobile device518establishes two-way voice communications532with the RTP/RTSP interface508of the bridge500. The bridge500also establishes a voice session534between the Media Renderer interface516and the intercom504. The bridge500connects536these two sessions532,534, by at least passing/buffering data, and possibly performing transcoding and other operations.

In the preceding figures, various examples were presented of use-case scenarios for a bridge device according to embodiments of the invention. Many types of apparatus may be able to act as a bridge, including conventional desktop a portable computers, set top boxes, digital media centers, portable communications devices, and other processing devices known in the art. In reference now toFIG. 6, a block diagram illustrates an example bridge600according to embodiments of the invention. The bridge600includes a computing arrangement601. The computing arrangement601may include custom or general-purpose electronic components. The computing arrangement601includes a central processor (CPU)602that may be coupled to random access memory (RAM)604and/or read-only memory (ROM)606. The ROM606may include various types of storage media, such as programmable ROM (PROM), erasable PROM (EPROM), etc. The processor602may communicate with other internal and external components through input/output (I/O) circuitry608. The processor602carries out a variety of functions as is known in the art, as dictated by software and/or firmware instructions.

The computing arrangement601may include one or more data storage devices, including hard and floppy disk drives612, CD-ROM drives614, and other hardware capable of reading and/or storing information such as DVD, etc. In one embodiment, software for carrying out the operations in accordance with the present invention may be stored and distributed on a CD-ROM616, diskette618or other form of media capable of portably storing information. These storage media may be inserted into, and read by, devices such as the CD-ROM drive614, the disk drive612, etc. The software may also be transmitted to computing arrangement601via data signals, such as being downloaded electronically via a network, such as the Internet621. The computing arrangement601may be coupled to a user input/output interface622for user interaction. The user input/output interface622may include apparatus such as a mouse, keyboard, microphone, touch pad, touch screen, voice-recognition system, monitor, LED display, LCD display, etc.

The computing arrangement601may be coupled to other computing devices via networks. In particular, the computing arrangement includes a network interface624capable of interacting with respective local “home” networks626and external “public” networks621,628. The network interface624may include a combination of hardware and software components, including media access circuitry, drivers, programs, and protocol modules. Ultimately, the computing arrangement601may be configured to allow exchange control and media session data between devices630,631of the external networks621,628and devices632,634,636of the local network626. In particular, the external networks include the Internet621and a wireless provider network628that provides digital data services to mobile users. An infrastructure-based P2P network638may reside on one or both external network621,628. Additionally, the local network626may include an ad-hoc P2P network that enables communications between diverse consumer electronics devices, as exemplified by the UPnP media renderer632, media server634, and control point636.

The computing arrangement601includes processor executable instructions640for carrying out tasks of the computing arrangement601. These instructions640may include a bridging module642that handles the bridging functionality of the computing arrangement601. As will be described in greater detail hereinbelow, the bridging module642handles both control and data transfer aspects of bridging operations. The control aspects of the bridging operation may include data query/response, connection requests, status query/response, and translating these responses between networks621,628,626. The data transfer aspects may include operations related to file transfer, streaming data, and transforming/transcoding data.

The bridging module642may interact with other modules that assist in one or more functions associated with bridging. For example, a security module644may handle user authentication, data encryption, security of the network interface, and other aspects needed to safely connect to the untrusted networks621,628. An encoder/decoder module646may include a codecs library for processing media streams. The bridging module642may use codecs from the encoder/decoder module646for transforming data files and data streams processed via the bridge600. Finally, a network services module648may provide common network services for the bridging module642, such as accessing domain name resolution services, location services, time services, etc.

In reference now toFIG. 7, a block diagram illustrates a more detailed view of a bridging module700according to embodiments of the invention. The bridging module700may be configured as a single or multi-threaded process, and may involve multiple processes executing on the same or different processors. The primary functions of the module700are divided into two general categories, control and media transfer, as exemplified by respective control and media session components702,704. Both the control and media session components702,704manage communications between an external network interface706and an internal network interface708, which are coupled to respective external and internal networks (not shown). The network interfaces706,708typically include the software and protocol stacks needed to communicate via respective networks. The network interfaces706,708may share the same hardware, drivers, and underlying network functional layers (e.g., data link, network, transport, session, presentations) but may include different configurations and separate application-level functionality. For example, the external network interface706will likely have security measures such as strict restrictions on accepting connections and stateful packet inspection, etc.

The control module702handles control signals and metadata involved with discovering and using services via internal and external network interfaces706,708, and the media session module704handles the actual data transfer of individual, block, files, or streams of data. Although the bridging module700may use a single instantiation each of control and media session components702,704, it is more likely that a plurality of each module may be instantiated, either statically or dynamically. For example, a fixed number of control components702may instantiated for known combinations of control scenarios (e.g., sharing of UPnP media to a Gnutella network, two way streaming of UPnP audio device to Internet SIP phone). In such a case, each instantiation of the control component702would handle all of the communications of that type.

In other arrangements, specially adapted components702,704could be generated at run-time for each situation encountered. For example, a general purpose listener on the external network interface706could detect an incoming SIP message requesting a session for streaming a song located on a UPnP media player. The listener application could instantiate a control component702that handles SIP communications via the external network interface706and handles CDS communications via the internal interface708. The media session components704could be similarly dynamically created, either by the listener program, or by the control component702. Generally, the control component702will be involved in negotiating session parameters, and the composition of the media session component704may not be known until the negotiation is complete.

The control component702is generally involved in handling data transactions that are peripheral to the actual transfer of media and other data. The control component may702may include external and internal control interfaces710,712. These interfaces710,712may be generically defined and instantiated as specific interfaces (e.g., SIP, CDS, P2P Query/Session management) depending on system and session requirements. The specific instantiations of the interfaces710,712may be pre-configured with the system setup and/or instantiated at runtime based on needs. A connector component714handles translation of data and states between the interfaces710,712.

The media session component704is generally involved in handling the data transfers that are enabled by use of the bridge700. The media session component704may include external and internal session interfaces716,718. These interfaces716,718may be instantiated as specific interfaces (e.g., HTTP, RTP/RTSP, and FTP) depending on system and session requirements. The specific instantiations of the interfaces716,718may be pre-configured with the system setup and/or instantiated at runtime based on needs. A connector component719handles translation of data and states between the interfaces716,718.

The control and media session components702,704may access a database720via a database interface722. Generally, both components702,704may need to store and read data structures for purposes of handling individual transactions, instantiating data objects, managing preferences, etc. The database722may store query data724that tracks data related to past and current queries. For example, the query data724may include temporary URIs mapped to the external interface706that correspond to a location accessible via the internal interface708. These temporary URIs and other identifiers may also be associated with media objects726that represent individual files or streams of data. The media objects726may also contain other metadata such as type of encoding, bitrates, file sizes, etc.

The media session component704or other software may track individual sessions using session objects728stored in the database720. The session objects728may contain such data as identity of network endpoints, protocols used, session history, etc. Another type of data stored in the database720is configurations730and preferences732. Configurations730may be applied by users or other software. For example, IP addresses of the network interfaces706,708may be automatically configured by the Dynamic Host Configuration Protocol (DHCP), which occurs at system start up. Alternatively, a user may apply a static IP address via a user interface component734. The user interface component734provides a way for users to directly or indirectly control and view status of the bridge software700.

The bridge700may also need to configure other components. In particular, where the bridge700is operating behind a firewall, gateway, and/or Network Address Translator (NAT), the bridge700may need to configure the NAT/firewall/gateway to accept incoming connection. This configuration of a NAT/firewall/gateway can be accomplished by a component such as a gateway configurator734. The configurator734may include the ability to configure a gateway using, for example, a UPnP control point interface to access an IGD. These configurations can be applied for initial setup, and changed dynamically as needed. For example, the bridge may temporarily set an IGD to allow incoming connections on a particular port for a single session, and thereafter disable connections on the port.

The control and media session components702,704may have interfaces710,712,716,718that are generically defined, and adaptable for use with a wide variety of bridging services. In reference now toFIGS. 8A-D, block diagrams800A-D illustrate various specific instantiations of the various generic interfaces. In diagram800A ofFIG. 8A, a generic external control interface802may be instantiated as, among other things, a Napster control interface804, a Gnutella control interface806, and a SIP control interface808. These specific interfaces804,806,808handle the actions needed to connect and exchange control signals according to the respective protocols of each interface804,806, and808. In diagram800B ofFIG. 8B, a generic external media interface809may be instantiated as, among other things, an HTTP server interface810, an HTTP client interface812, and an RTP/RTSP interface814. These specific interfaces810,812,814handle the actions needed to exchange media and other data according to the respective protocols of each interface810,812, and814. Some of the interfaces, such as the HTTP client interface812, may be for receiving data only, and others, such as the HTTP server interface810, for sending data. Others, such as the RTP/RTSP interface814, may be used for both sending and receiving data over the external network.

In diagram800C ofFIG. 8C, a generic internal control interface816may be instantiated as, among other things, a UPnP Control Point interface818and a UPnP CDS interface820. These specific interfaces818,820handle the actions needed to connect and exchange control signals according to the respective protocols of the internal network, which are UPnP control functions in this example. In diagram800D ofFIG. 8D, a generic internal control interface822may be instantiated as, among other things, an HTTP server interface824, an HTTP client interface826, an RTP/RTSP interface828, a UPnP Media Server interface830, and a UPnP Media Renderer interface832. These specific interfaces824,826,828,830, and832handle the actions needed to exchange media and other data according to the respective protocols of each interface824,826,828,830, and832. As with the media interfaces ofFIG. 8B, these specific interfaces824,826,828,830, and832may act as one-way or two-way data transfer interfaces.

The generic interfaces ofFIGS. 8A-Dmay define behaviors that are generally applicable to most of the specific functions. For example, the control interfaces802,816may define common, generic actions such as CONNECT, DISCONNECT, LISTEN, QUERY, QUERY_RESULT, etc. When the specific interfaces are formed, these generic actions are instantiated using the specific data and events required by the instantiated interface protocols. Similarly, the generic interfaces may incorporate generic data structures that may be transformed into specific structures required by the end protocols. An example of a generic data structure900according to embodiments of the invention is shown inFIG. 9. The illustrated generic structure900is for creating file queries. As such the file query object900contains data that may be common to almost all queries, such as a query string902. Other data, such as search depth904(which may be equivalent to hops on a Gnutella-like network), may not be applicable to all queries, such as those directed to a single, known, repository or server.

An advantage of using a generic data structure900is that specific structures may be instantiated from the generic structure900, thus providing a way of transforming between different structures. For example, a Napster query906, a Gnutella query908, and a UPnP CDS query910all inherit from the file query object900. As can be seen, each of the specific instances906,908,910include respective search strings912,914,916that are the same as the search string902. The specific instances906,908,910may make changes to some of the generic data, such as the addition of a null character to the end of the Gnutella search string914.

In reference now toFIG. 10, a flowchart illustrates a procedure1000for distributing media from a local network to peer-to-peer devices on a public network. A bridge device is coupled1002to a local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The bridging device is coupled1004to a public network using an infrastructure-based peer-to-peer networking protocol. The bridge device determines or includes1006metadata related to media accessible from one or more media servers of the local network. The metadata is transformed1008via the bridge device to enable a device of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol. The metadata is via the bridge device to enable peer-to-peer devices of the public network to discover the media via the bridge device using the infrastructure-based peer-to-peer networking protocol.

In reference now toFIG. 11, a flowchart illustrates a procedure1100for distributing media from peer-to-peer devices on a public network to a local network. A bridge device is coupled1102to a local network using an ad-hoc, peer-to-peer protocol used for exchanging data between consumer electronics devices. The bridging device is coupled1104to a public network using an infrastructure-based peer-to-peer networking protocol. The bridge device determines or includes1106metadata related to media accessible from the public network via the peer-to-peer networking protocol. The metadata is transformed1108via the bridge device to enable a device of the local network to discover the media via the bridge device using the ad-hoc, peer-to-peer protocol.