US20090024762A1 - Method and system for managing data transmission between devices behind network address translators (NATs) - Google Patents

Method and system for managing data transmission between devices behind network address translators (NATs) Download PDF

Info

Publication number
US20090024762A1
US20090024762A1 US11/364,641 US36464106A US2009024762A1 US 20090024762 A1 US20090024762 A1 US 20090024762A1 US 36464106 A US36464106 A US 36464106A US 2009024762 A1 US2009024762 A1 US 2009024762A1
Authority
US
United States
Prior art keywords
devices
supplying
recited
data
segments
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US11/364,641
Other versions
US8788706B2 (en
Inventor
Prasanna Ganesan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WOND Inc
NBCUniversal Media LLC
Original Assignee
Vvond Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vvond Inc filed Critical Vvond Inc
Assigned to WOND INCORPORATED reassignment WOND INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GANESAN, PRASANNA
Priority to US11/364,641 priority Critical patent/US8788706B2/en
Assigned to MARQUEE, INC. reassignment MARQUEE, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: VVOND, INC.
Priority to US11/626,352 priority patent/US20090022166A1/en
Assigned to VUDU, INC. reassignment VUDU, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: MARQUEE, INC.
Publication of US20090024762A1 publication Critical patent/US20090024762A1/en
Publication of US8788706B2 publication Critical patent/US8788706B2/en
Application granted granted Critical
Assigned to VUDU, LLC reassignment VUDU, LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: VUDU, INC.
Assigned to NBCUNIVERSAL MEDIA LLC reassignment NBCUNIVERSAL MEDIA LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VUDU, LLC
Assigned to NBCUNIVERSAL MEDIA LLC reassignment NBCUNIVERSAL MEDIA LLC CORRECTIVE ASSIGNMENT TO CORRECT THE COVERSHEET TO EXCLUDE APP. NO. 11368308, WHICH WAS INADVERTENTLY ADDED AT THE TIME OF RECORDING THE ASSIGNMENT PREVIOUSLY RECORDED AT REEL: 053609 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: VUDU, LLC
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4552Lookup mechanisms between a plurality of directories; Synchronisation of directories, e.g. metadirectories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast

Definitions

  • the present invention relates generally to the area of data transmission, and more particularly to techniques for managing data exchange between devices behind network address translators (NAT), where a network address translator may be employed in a device such as a router, a firewall or other security means.
  • NAT network address translator
  • Network address translation is a way to rewrite the addresses of packets as they travel through a system. Typical uses include allowing several computers to share a single internet connection. Network address translation can also reinforce the security provided by a firewall, and in some cases provide equivalent levels of security. Typical devices that perform network address translation functions for the average computer user may be routers, cable/DSL modems or hardware firewalls that allow multiple computers to connect to it, or computers dedicated to the task of “masquerading” or “internet connection sharing” (ICS).
  • ICS internet connection sharing
  • NATs Network Address Translators
  • the most troublesome of those drawbacks is the fact that they break many existing IP applications, and make it difficult to deploy new ones.
  • the communication between two devices behind respective NATs may be problematic because they do not permit external devices to initiate communication with a device behind a NAT without some explicit and complex configuration of the NAT. This may not be a major problem for a client-server system, since a client behind a NAT can initiate communication with the server (not behind a NAT) and then the two can talk to each other.
  • problems arise in a peer-to-peer system where two different devices (nodes), each behind a NAT, need to communicate with each other. Essentially, neither one of two devices can initiate communication with the other because they are both behind NATs which are configured to block the traffic.
  • a full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Furthermore, any external host can send a packet to the internal host, by sending a packet to the mapped external address.
  • a restricted cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Unlike a full cone NAT, an external host (with IP address X) can send a packet to the internal host only if the internal host had previously sent a packet to IP address X.
  • Port Restricted Cone A port restricted cone NAT is like a restricted cone NAT, but the restriction includes port numbers. Specifically, an external host can send a packet, with source IP address X and source port P, to the internal host only if the internal host had previously sent a packet to IP address X and port P.
  • Symmetric Cone A symmetric NAT is one where all requests from the same internal IP address and port, to a specific destination IP address and port, are mapped to the same external IP address and port. If the same host sends a packet with the same source address and port, but to a different destination, a different mapping is used. Furthermore, only the external host that receives a packet can send a UDP packet back to the internal host.
  • NATs are compatible with each other.
  • a first device behind one type of NAT may not communicate with a second device behind another type of NAT or may communicate only with certain restrictions.
  • each may be behind a type of NAT.
  • a network address translator may be included in a device or module, such as a router, a firewall or other security means.
  • a server in responding to a request from a requesting device for needed data, is configured to determine some of devices in service to be candidates from a database, where the database has many entries, each of the entries pertaining to one of the devices. The candidates are determined in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server then designates a finalist that is most appropriate to supply the needed data according to certain criteria.
  • one of the criteria is to make sure that the finalist is not designated to be a supplying device too much more often than it should be on average.
  • the server then notifies either the requesting device or the supplying device so that the requesting device can get the needed data directly from the supplying device.
  • the request from the requesting device indicates that there are more than one devices needed to supply the needed data collectively at similar time.
  • the server is configured to designating another finalist that is most appropriate to supply the needed data according to certain criteria. One of the criteria is to make sure that the finalist is not designated to be a supplying device more often than it should be on average till there are a sufficient number of supplying devices.
  • the server then notifies the requesting device which ones are to supply the needed data collectively or causes each of the supplying devices to start contacting the requesting device to initiate transmission of the needed data collectively.
  • each of the supplying devices locally caches one or more segments of the needed data, where each of the segments is non-consecutive in a sense that data from all of the segments must be streamed in at similar time to be useful.
  • the present invention may be implemented in software, hardware, or a combination of both as a method, an apparatus or a system.
  • the present invention is a method for managing peer-to-peer communication among a plurality of devices.
  • the method comprises initiating a request to receive needed data from at least one supplying device, wherein the request causes a server to determine some of the devices to be candidates from a database with many entries, each of the entries pertaining to one of the devices.
  • the some of the devices are determined in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device.
  • the server is configured to designate a finalist that is not designated to be a supplying device more often than it should be on average.
  • the requesting device is configured to receive from the server a message including necessary information to initiate a request to the supplying device to download the needed data; or caused to accept the needed data from the supplying device.
  • the present invention is a system for managing peer-to-peer communication among a plurality of devices.
  • the system comprises a plurality of devices in service, and a server coupled to a database with many entries, each of the entries pertaining to one of the devices.
  • the server Upon receiving a request from one of the devices (hereinafter “a requesting device”), the server is configured to determine some of the devices to be candidates from the database in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server is configured to further designate a finalist that is not designated to be a supplying device more often than it should be on average.
  • the requesting device receives from the server a message including necessary information to initiate a request to the supplying device to download the needed data, or is caused to accept the needed data from the supplying device.
  • One of the objects of the present inventions is to provide techniques for managing data transmission between devices, each being behind a network address translator.
  • FIG. 1 shows an exemplary configuration system in which the present invention may be practiced, for simplicity, the configuration includes three representative device A, B, and C;
  • FIG. 2 shows an exemplary entry in a database to maintain status, characteristics or surrounding conditions of devices in service
  • FIG. 3 shows a compatibility chart among four types of NAT
  • FIG. 4 shows, according to one embodiment of the present invention, a flowchart or process of establishing communication between two nodes, each being behind a network address translator;
  • FIG. 5A shows an exemplary configuration of a distributed network system in which the present may be practiced
  • FIG. 5B shows, according to one embodiment, a file is being organized or fragmented in terms of four segments
  • FIG. 5C shows another embodiment in which a file is being organized or fragmented in terms of a header and four segments, where the header is always locally cached;
  • FIG. 5D shows a data stream representing a file or a majority of a file, the file is being divided into four segments
  • FIG. 6A shows an exemplary source information shown as a map illustrating how a library of 5000 movie titles is distributed across N boxes.
  • FIG. 6B shows a source information map corresponding to FIG. 3B , where three other boxes are designated to supply the needed three segments that are together assembled with the locally cached segment to facilitate the playback of the ordered movie.
  • references herein to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one implementation of the invention.
  • the appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Further, the order of blocks in process, flowcharts or functional diagrams representing one or more embodiments, if any, do not inherently indicate any particular order nor imply limitations in the invention.
  • the configuration 100 includes three representative devices A, B, and C, respectively referenced by 102 , 104 and 106 .
  • Each of the devices 102 , 104 and 106 may be a single standalone device or a collection of one or more computing devices.
  • An example of a standalone device or computing device may include, but not be limited to, a desktop computer, a mobile device, a set-top box, and a media device.
  • device A is configured to receive data respectively from device B and device C with the assistance of a server 108 .
  • each of the devices 102 , 104 and 106 and the server 108 is coupled to a router or protected by a firewall or a security means 103 , 105 , 107 or 109 .
  • each of the devices 102 , 104 and 106 and the server 108 is configured to execute a protocol stack so that peer-to-peer communication between any two devices 102 , 104 or 106 can be established.
  • network address translators 110 - 115 of all types.
  • RFC 3049 entitled “Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)” may be referenced and located at http://www.ieff.org/rfc/rfc3489.txt which is hereby incorporated by reference.
  • the server 108 discovers what type of NAT each of registered devices (e.g., 102 , 104 and 106 ) is behind, for example, by receiving a STUN probe request or a registration message therefrom. This discovery process may take place when a device is put into service for the first time or a device is returned to service after a period. Alternatively, the server 108 gets the characteristics and the surrounding conditions of a device by periodically exchanging messages. As a result, a database is created or updated about each of the devices. An exemplary entry 200 in the database is shown in FIG. 2 . The exemplary entry 200 is for one device and may include information that may be stored in expandable layers.
  • a first layer 202 may include information that may be used to facilitate a designation of which device shall communicate with a device requesting to communicate with.
  • a second layer 204 may include detailed information that may be used to facilitate a designation of which device shall communicate more effectively with a device requesting to communicate with.
  • each of the fields in the entry 200 may be updated electronically or manually, and respectively or collectively.
  • “electronically updated” means that the server 108 is periodically in communication with devices in service and gets updated status of each of the devices. For example, a device may use a dynamic IP address that could be reassigned by a corresponding ISP (Internet Service Provider) at any time. By periodically contacting with the device, the server can keep the entry in the database updated. Likewise, “manually updated” means that some information needs updated manually. For example, a device previously-serviced by one ISP is now switched to another ISP, the change of the ISP is likely to be entered manually.
  • “respectively updated” means that the fields in the entry 300 may be updated individually, which means that not all fields in an entry need to be updated as often as others, sometimes only one field needs to be updated. Likewise, “collectively updated” means that some information needs to be updated together. For example, the statuses of whether a device is busy or not and the corresponding available bandwidth may be collectively obtained.
  • the sign 206 means a corresponding field is not fully displayed or can be expanded when needed or depending on implementation.
  • the requesting device sends a request to the server that looks up in the database and determine which two devices are the most appropriate ones to supply data to the requesting device.
  • one of the criteria that the server relies upon to determine the candidates to supply the data is by a type of NAT the candidates are associated with.
  • the server is configured to designate devices that are behind a NAT that is compatible with a symmetric NAT.
  • a “Full-cone” NAT or a “Restricted-cone” NAT is a good candidate.
  • the server selects a device to be the supplier, where the selected device is behind a compatible NAT to that of the requesting device.
  • the sending device when a (sending) device is configured to send data to a (receiving) device, the sending device is provided with an instruction to send the data only to those devices that are behind a compatible NAT. In operation, the sending device is configured to consult with the server to determine which device or devices that the sending device is supposed to transport data thereto.
  • the compatibility between NAT types is such that some NAT types are much more restrictive than others.
  • the compatibility chart shown in FIG. 3 arises.
  • the chart of FIG. 3 essentially defines behind which types of NAT two devices may communicate with each other.
  • Full-cone NATs permit communication with any NAT type (including other Full-cones).
  • Restricted-cone NATs also permit communication with any NAT type,
  • Port-restricted NATs can communicate with Full-cone, Restricted-cone & Port-restricted but not Symmetric.
  • Symmetric NATs can communicate only with Full-cone and Restricted-cone.
  • the server looks up in the database to determine candidates based on the following criteria:
  • the sever In operation, to avoid overusing or repeatedly designating those behind the Symmetric and port-restricted NATs, the sever is also loaded with a balancing module that facilitates to balance the allocation by making sure that same device is not designated to be a streaming or supplying device too much more often than it should be on average.
  • FIG. 4 there shows, according to one embodiment of the present invention, a flowchart or process 400 of managing communication between two devices, each being behind a NAT.
  • the process 400 is presented for peer-to-peer communication between device A and B as shown in FIG. 1 . Accordingly, FIG. 4 may be understood in conjunction with FIG. 1 . It can be appreciated that the description herein for FIG. 4 may be equally applicable to peer-to-peer communication between any two computing devices.
  • a computing device updates a database that keeps various parameters, characteristics, surrounding conditions and status of each of the devices registered with the server.
  • a device can initiate a discovery process by sending a probing message to a server.
  • the server may send to a device a message requesting certain parameters regarding the device to be updated.
  • a STUN protocol (allowing applications to discover the presence and a type of NAT) is used.
  • the server awaits a request from any one of the devices in service at 404 . If no request is received or a predefined time period is out, the process 400 goes back to 402 to keep the database updated. It is now assumed that the request form one of the devices is received. According to one embodiment, the request is received from a device that has just been placed an order for a program (e.g., a large collection of data, a movie, an event broadcast). Because the device has none or only some of the data pertaining to the program, the device needs other selected devices to supply all of the data or the remaining part of the data. Accordingly, the ordering device initiates the request to the server.
  • a program e.g., a large collection of data, a movie, an event broadcast
  • the server Upon receiving the request, assuming the device has been authenticated and the user thereof has been authorized, the server is configured to look up at 406 in the database to select a set of available candidates. Among the criteria that a candidate device must satisfy is the requirement that the candidate must have some or all of the needed data, and the requirement that any NAT that the candidate device is behind is compatible with the NAT associated with the ordering device. At 408 , among the selected candidates, a balancing measurement takes place to make sure that a finalist should not be the one that has been selected more often than others and in good condition to supply the needed data to the ordering device.
  • the server has designated a (supplying) device to supply the needed data
  • a message or an acknowledgement to the request is sent to the supplying device or the ordering device.
  • the ordering device may initiate a request to the supplying device in accordance with the message from the server or the supplying device starts to upload the needed data to the ordering device.
  • a special netfilter is used to convert the data conforming to one protocol in the supplying device to a data format conforming to another protocol to facilitate the data transmission through the respective NATs.
  • the process 400 then goes to 402 to keep updating the database.
  • process 400 is applicable to cases where the ordering device requires more than one supplying devices to supply the needed data. Further it can be appreciated by those skilled in the art that the process 400 is applicable to synchronize more than one supplying devices to supply the needed data to the ordering device at similar time.
  • FIG. 5A shows an exemplary configuration of a distributed network system 500 in which the present invention may be practiced.
  • a server 502 presumably managed and/or populated by a service provider, is configured to handle the delivery of video (or multimedia) services to users via local machines or boxes 506 - 1 , 506 - 2 , . . . 506 - n .
  • the server 502 is not responsible for delivering the content in response to a request from a user, and instead is configured to provide source information as to where and how to retrieve at least some of the content from other boxes.
  • the prior art system requires at least a media storage device to provide the content when any of the client machines is being serviced, while the server 502 does not need necessarily a media storage device to provide the content. Instead, some of the boxes 506 - 1 , 506 - 2 , . . . 506 - n are respectively configured to supply part or all of the content to each other.
  • communication between the server 502 (e.g., corresponding to the server 208 of FIG. 2 ) and the box 506 - 1 over the network paths 508 - 1 and 510 may be limited to small-scale requests and responses (e.g., of small size and very short).
  • a server response to a request from a box may include source information (e.g., identifiers), authorization information and security information.
  • the box 506 - 1 may be activated to begin playback of a title. Data representing the title may be distributed in other boxes.
  • the data is segmented into a number of segments, each is distributed to some boxes in services.
  • the box 506 - 1 may initiate one or more requests to other boxes (e.g., 506 - 2 and 506 - n , corresponding respectively to nodes B and C) in accordance with the source identifiers to request the distributed segments (e.g., 507 - 2 and 507 - n ).
  • the requesting box 506 - 1 receives the distributed segments concurrently from the other boxes according to the process 500 of FIG. 5
  • the contents available in a library being offered in any of the boxes 506 - 1 , 506 - 2 , . . . 506 - n are originally provided by one or more content providers. Examples of the content providers include satellite receivers, television relay stations, analog or digital broadcasting station, movie studios and Internet sites. Depending on implementation, the contents may be initially received or originated in the server 502 . Instead of maintaining and managing the content in a large storage device, the server 502 is configured to distribute the content or files to a plurality of local machines registered with the server 502 .
  • the boxes 506 - 1 , 506 - 2 , . . . 506 - n shown in FIG. 5A are examples of local machines in service.
  • the server 502 at any time has no need to keep a copy of the content.
  • the server 502 at any time has no need to keep a copy of the content.
  • none of the boxes in service has a complete copy of a title until an order is placed. Consequently, with embedded security in the distributed objects, one feature in the present invention may alleviate the concern of electronic piracy and widespread distribution (e.g., by hacking or illegal duplication).
  • a file or at least a portion thereof, regardless of its size, can be accessed instantaneously, thereby realizing instantaneous VOD.
  • a system may offer a large library of titles (e.g., 5000) for access at any time instantly.
  • the files for the titles must be stored in advance to offer instantaneous playback, the local storage of a box would have to have a capacity of 4,000 Gbytes, consequently, rendering instantaneous VOD economically impractical.
  • a beginning portion referred to as a “header”
  • tail segments of a file are locally cached in a box.
  • Such locally cached segments are referred to as residing objects or segments, while segments not residing locally are referred to as distributed objects or segments.
  • the header of the corresponding file is instantly played back.
  • the distributed segments corresponding to the title are retrieved simultaneously from other boxes.
  • the received parts of the distributed segments being streamed in from other boxes is combined with residing segments for the title, if any, to enable a continuous playback.
  • the number of residing objects may be increased or decreased to control the dependency of each box on other boxes for playback.
  • the header is always played first to ensure instant playback.
  • the header size is reduced to zero, in which case, a time-fill program is played first to provide a time frame that is sufficient enough to fetch and assembly the beginning data portion of the segments either locally available or from other boxes.
  • the time-fill program may include one or more trailers related to the title being ordered, various notifications/updates or commercial programs.
  • the time-fill program may be locally configured.
  • the time-fill program is provided to give a time frame in which data being fetched from one or more other devices can be stabilized.
  • the time-fill program provides a platform for sponsors that hope to display their respective programs to audience. Orders or slot positions for these programs in a time-fill program may be auctioned.
  • FIG. 5B there shows an embodiment in which a file 520 is being organized or fragmented in terms of four segments 524 .
  • the file 520 representing a collection of all data pertaining to a title may be divided into any number of segments in consideration of a required transmission rate (e.g., related to the encoding and decoding rates for successful playback), and the minimum uploading and downloading capabilities of a network.
  • FIG. 2C shows another embodiment in which a file 530 is being organized or fragmented in terms of a header 532 and four segments 524 , where the header 532 is always locally cached.
  • One of the advantages of having a header locally cached is to facilitate an instantaneous playback after a movie is order.
  • the length of a header may be predefined or dynamically determined to provide a time buffer (e.g., 5 minutes) sufficiently to retrieve part of the data from the distributed segments for assembling with that of any locally cached segments, if any. As a result, an instantaneous VOD system may be realized.
  • a file or a majority of a file will be fragmented and the segments are distributed among the boxes in service.
  • a required transmission rate e.g., 1 megabit per second or 1 Mbps
  • the minimum uploading and downloading speeds of a network are considered to determine a number that defines the segmentation, and thus the dependency on other boxes and the support for concurrent demands of a particular title.
  • a file or a majority of a file is preferably divided into k segments to optimally utilize the uploading speed of U, assuming that the downloading speed is at least k times faster than the uploading speed.
  • the required transmission may be about 1.0 Mbps while the uploading speed may be about 300 kbps.
  • k 4.
  • an ordering box has a downloading speed four times the uploading speed of the other boxes, up to four segments in other boxes can be downloaded concurrently across the network as streaming into the ordering box without interruption.
  • FIG. 5D shows a data stream 540 representing a file or a majority of a file.
  • the file 540 is divided into four segments 547 - 550 .
  • the segments 547 - 550 are created or formed by respectively sampling the file in a decimated manner.
  • each of the segments includes a plurality of data blocks.
  • an n-th data block in each of the segments 547 - 550 is four successive data blocks in the file.
  • a data block comprises a chunk of data, for example, 256 Kbytes or 1 Mbyte.
  • the data stream 540 is expressed in data blocks as follows: b11, b21, b31, b41, b12, b22, b32, b42, b13, b23, b33, b43, . . . b1n, b2n, b3n, b4n.
  • the four segments 547 - 550 obtained can be respectively expressed as follows:
  • Segment 1 ⁇ b11, b12, b13, b14 . . . ⁇ ;
  • Segment 2 ⁇ b21, b22, b23, b24 . . . ⁇ ;
  • Segment 3 ⁇ b31, b32, b33, b34 . . . ⁇ ;
  • Segment 4 ⁇ b41, b42, b43, b44 . . . ⁇ .
  • a header if used, includes data blocks that must be consecutive so that an instantaneous playback of the header is possible. It is evident that the data blocks in the segments are non-consecutive or interlaced.
  • FIG. 6A shows exemplary source information shown as a map 630 illustrating how a library of 5000 movie titles is distributed across N boxes.
  • Column 632 lists all boxes in service. Each box is assigned a unique identifier for identification. Information in the column 632 may be viewed as the identifiers for the boxes in service. For example, box 1 is assigned a unique identifier of “Box 1 ” or a sequence of alphanumeric characters.
  • the column 634 lists a corresponding IP address for each of the boxes listed in column 632 .
  • the Column 636 lists predetermined time-fill programs for all titles in the library. Depending on implementation, the time-fill programs may be identical or each of the time-fill programs is self-configured in accordance with what has been ordered.
  • the column 638 lists what segments for title 1 are residing in each of the boxes, assuming title 1 is required to have two segments cached in each box.
  • the column 640 lists what segment for title 2 is residing in each of the boxes, assuming title 2 is required to have one segment cached in each of the boxes.
  • the column 642 lists what segment for title 5000 is in a selected set of boxes, assuming title 5000 is required to have one segment in these selected boxes. As a result, all segments in a box may be uniquely addressed for uploading to another box or playback of an ordered title locally.
  • FIG. 6B shows an exemplary source information map 650 corresponding to FIG. 6A .
  • Each of the entries (e.g., IPA 1 ) in the source information map 650 may include the port and address information that facilitates the peer-to-peer or box-to-box communication between two devices. It can be appreciated that relying on multiple sources to retrieve distributed segments to support a playback can be advantageously used in the architecture of current networks where the downloading bandwidth is typically a multiple of the uploading bandwidth.

Abstract

Techniques for managing direct communication between two devices are disclosed. Each of the device is behind a network address translator. According to one embodiment, a server, in responding to a request from a requesting device for needed data, is configured to determine some of devices in service to be candidates from a database, where the database has many entries, each of the entries pertaining to one of the devices. The candidates are determined in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server then designates a finalist that is preferably not designated to be a supplying device more often than it should be on average. The server then notifies either the requesting device or the supplying device so that the requesting device can get the needed data directly from the supplying device.

Description

    BACKGROUND
  • 1. Technical Field
  • The present invention relates generally to the area of data transmission, and more particularly to techniques for managing data exchange between devices behind network address translators (NAT), where a network address translator may be employed in a device such as a router, a firewall or other security means.
  • 2. Description of the Related Art
  • Network address translation is a way to rewrite the addresses of packets as they travel through a system. Typical uses include allowing several computers to share a single internet connection. Network address translation can also reinforce the security provided by a firewall, and in some cases provide equivalent levels of security. Typical devices that perform network address translation functions for the average computer user may be routers, cable/DSL modems or hardware firewalls that allow multiple computers to connect to it, or computers dedicated to the task of “masquerading” or “internet connection sharing” (ICS).
  • Network Address Translators (NATs), while providing many benefits, also come with many drawbacks. The most troublesome of those drawbacks is the fact that they break many existing IP applications, and make it difficult to deploy new ones. With the presence of network address translation, the communication between two devices behind respective NATs may be problematic because they do not permit external devices to initiate communication with a device behind a NAT without some explicit and complex configuration of the NAT. This may not be a major problem for a client-server system, since a client behind a NAT can initiate communication with the server (not behind a NAT) and then the two can talk to each other. However, problems arise in a peer-to-peer system where two different devices (nodes), each behind a NAT, need to communicate with each other. Essentially, neither one of two devices can initiate communication with the other because they are both behind NATs which are configured to block the traffic. Thus there is a need for a mechanism that can manage such communication between two devices, each behind a NAT.
  • As known to those skilled in the art, there are a number of variations and implementations of NATs. The common four treatments observed in implementations are: Full Cone, Restricted Cone, Port Restricted Cone, and Symmetric Cone.
  • Full Cone: A full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Furthermore, any external host can send a packet to the internal host, by sending a packet to the mapped external address.
  • Restricted Cone: A restricted cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. Unlike a full cone NAT, an external host (with IP address X) can send a packet to the internal host only if the internal host had previously sent a packet to IP address X.
  • Port Restricted Cone: A port restricted cone NAT is like a restricted cone NAT, but the restriction includes port numbers. Specifically, an external host can send a packet, with source IP address X and source port P, to the internal host only if the internal host had previously sent a packet to IP address X and port P.
  • Symmetric Cone: A symmetric NAT is one where all requests from the same internal IP address and port, to a specific destination IP address and port, are mapped to the same external IP address and port. If the same host sends a packet with the same source address and port, but to a different destination, a different mapping is used. Furthermore, only the external host that receives a packet can send a UDP packet back to the internal host.
  • It is also known that not all NATs are compatible with each other. In other words, a first device behind one type of NAT may not communicate with a second device behind another type of NAT or may communicate only with certain restrictions. Thus there a need for a mechanism that manages various types of communication among devices, each may be behind a type of NAT.
  • SUMMARY
  • This section is for the purpose of summarizing some aspects of the present invention and to briefly introduce some preferred embodiments. Simplifications or omissions in this section as well as in the abstract or the title of this description may be made to avoid obscuring the purpose of this section, the abstract and the title. Such simplifications or omissions are not intended to limit the scope of the present invention.
  • Broadly speaking, the present invention is related to techniques for managing direct communication between two devices, each behind a network address translator. Depending on implementation, a network address translator may be included in a device or module, such as a router, a firewall or other security means. According to one aspect of the present invention, a server, in responding to a request from a requesting device for needed data, is configured to determine some of devices in service to be candidates from a database, where the database has many entries, each of the entries pertaining to one of the devices. The candidates are determined in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server then designates a finalist that is most appropriate to supply the needed data according to certain criteria. Among the criteria that may include, but not be limited to, available bandwidth, physical location, ISP, compatibility of NAT or current status, one of the criteria is to make sure that the finalist is not designated to be a supplying device too much more often than it should be on average. The server then notifies either the requesting device or the supplying device so that the requesting device can get the needed data directly from the supplying device.
  • According to another aspect of the present invention, the request from the requesting device indicates that there are more than one devices needed to supply the needed data collectively at similar time. Thus the server is configured to designating another finalist that is most appropriate to supply the needed data according to certain criteria. One of the criteria is to make sure that the finalist is not designated to be a supplying device more often than it should be on average till there are a sufficient number of supplying devices. The server then notifies the requesting device which ones are to supply the needed data collectively or causes each of the supplying devices to start contacting the requesting device to initiate transmission of the needed data collectively.
  • According to still another aspect of the present invention, each of the supplying devices locally caches one or more segments of the needed data, where each of the segments is non-consecutive in a sense that data from all of the segments must be streamed in at similar time to be useful.
  • Depending on implementation, the present invention may be implemented in software, hardware, or a combination of both as a method, an apparatus or a system. According to one embodiment, the present invention is a method for managing peer-to-peer communication among a plurality of devices. The method comprises initiating a request to receive needed data from at least one supplying device, wherein the request causes a server to determine some of the devices to be candidates from a database with many entries, each of the entries pertaining to one of the devices. The some of the devices are determined in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server is configured to designate a finalist that is not designated to be a supplying device more often than it should be on average. The requesting device is configured to receive from the server a message including necessary information to initiate a request to the supplying device to download the needed data; or caused to accept the needed data from the supplying device.
  • According to one embodiment, the present invention is a system for managing peer-to-peer communication among a plurality of devices. The system comprises a plurality of devices in service, and a server coupled to a database with many entries, each of the entries pertaining to one of the devices. Upon receiving a request from one of the devices (hereinafter “a requesting device”), the server is configured to determine some of the devices to be candidates from the database in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device. Among the candidates, the server is configured to further designate a finalist that is not designated to be a supplying device more often than it should be on average. The requesting device then receives from the server a message including necessary information to initiate a request to the supplying device to download the needed data, or is caused to accept the needed data from the supplying device.
  • One of the objects of the present inventions is to provide techniques for managing data transmission between devices, each being behind a network address translator.
  • Other objects, features, advantages, benefits of the invention will become more apparent from the following detailed description of a preferred embodiment, which proceeds with reference to the accompanying drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which:
  • FIG. 1 shows an exemplary configuration system in which the present invention may be practiced, for simplicity, the configuration includes three representative device A, B, and C;
  • FIG. 2 shows an exemplary entry in a database to maintain status, characteristics or surrounding conditions of devices in service;
  • FIG. 3 shows a compatibility chart among four types of NAT;
  • FIG. 4 shows, according to one embodiment of the present invention, a flowchart or process of establishing communication between two nodes, each being behind a network address translator;
  • FIG. 5A shows an exemplary configuration of a distributed network system in which the present may be practiced;
  • FIG. 5B shows, according to one embodiment, a file is being organized or fragmented in terms of four segments;
  • FIG. 5C shows another embodiment in which a file is being organized or fragmented in terms of a header and four segments, where the header is always locally cached;
  • FIG. 5D shows a data stream representing a file or a majority of a file, the file is being divided into four segments;
  • FIG. 6A shows an exemplary source information shown as a map illustrating how a library of 5000 movie titles is distributed across N boxes; and
  • FIG. 6B shows a source information map corresponding to FIG. 3B, where three other boxes are designated to supply the needed three segments that are together assembled with the locally cached segment to facilitate the playback of the ordered movie.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In the following description, numerous specific details are set forth to provide a thorough understanding of the present invention. The present invention may be practiced without these specific details. The description and representation herein are the means used by those experienced or skilled in the art to effectively convey the substance of their work to others skilled in the art. In other instances, well-known methods, procedures, components, and circuitry have not been described in detail since they are already well understood and to avoid unnecessarily obscuring aspects of the present invention.
  • Reference herein to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one implementation of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Further, the order of blocks in process, flowcharts or functional diagrams representing one or more embodiments, if any, do not inherently indicate any particular order nor imply limitations in the invention.
  • Embodiments of the invention are discussed herein with reference to FIGS. 1-6B. However, those skilled in the art will readily appreciate that the detailed description given herein with respect to these figures is for explanatory purposes as the invention extends beyond these limited embodiments
  • Referring now to FIG. 1, there shows a configuration 100 in which the present invention may be practiced. The configuration 100 includes three representative devices A, B, and C, respectively referenced by 102, 104 and 106. Each of the devices 102, 104 and 106 may be a single standalone device or a collection of one or more computing devices. An example of a standalone device or computing device may include, but not be limited to, a desktop computer, a mobile device, a set-top box, and a media device. In one embodiment, it is assumed that device A is configured to receive data respectively from device B and device C with the assistance of a server 108.
  • As shown in FIG. 1, each of the devices 102, 104 and 106 and the server 108 is coupled to a router or protected by a firewall or a security means 103, 105, 107 or 109. According to one embodiment of the present invention, each of the devices 102, 104 and 106 and the server 108 is configured to execute a protocol stack so that peer-to-peer communication between any two devices 102, 104 or 106 can be established. Along a communication path between any two of the devices, there are network address translators 110-115 of all types. For a list of currently available types and characteristics thereof, RFC 3049 entitled “Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)” may be referenced and located at http://www.ieff.org/rfc/rfc3489.txt which is hereby incorporated by reference.
  • In operation, the server 108 discovers what type of NAT each of registered devices (e.g., 102, 104 and 106) is behind, for example, by receiving a STUN probe request or a registration message therefrom. This discovery process may take place when a device is put into service for the first time or a device is returned to service after a period. Alternatively, the server 108 gets the characteristics and the surrounding conditions of a device by periodically exchanging messages. As a result, a database is created or updated about each of the devices. An exemplary entry 200 in the database is shown in FIG. 2. The exemplary entry 200 is for one device and may include information that may be stored in expandable layers. As depicted, a first layer 202 may include information that may be used to facilitate a designation of which device shall communicate with a device requesting to communicate with. A second layer 204 may include detailed information that may be used to facilitate a designation of which device shall communicate more effectively with a device requesting to communicate with. Depending on an actual deployment, each of the fields in the entry 200 may be updated electronically or manually, and respectively or collectively.
  • In one embodiment, “electronically updated” means that the server 108 is periodically in communication with devices in service and gets updated status of each of the devices. For example, a device may use a dynamic IP address that could be reassigned by a corresponding ISP (Internet Service Provider) at any time. By periodically contacting with the device, the server can keep the entry in the database updated. Likewise, “manually updated” means that some information needs updated manually. For example, a device previously-serviced by one ISP is now switched to another ISP, the change of the ISP is likely to be entered manually.
  • In one embodiment, “respectively updated” means that the fields in the entry 300 may be updated individually, which means that not all fields in an entry need to be updated as often as others, sometimes only one field needs to be updated. Likewise, “collectively updated” means that some information needs to be updated together. For example, the statuses of whether a device is busy or not and the corresponding available bandwidth may be collectively obtained.
  • In any case, the sign 206 means a corresponding field is not fully displayed or can be expanded when needed or depending on implementation. With the database, when one of the devices requests data substantially at the same time from more than one devices (e.g., two other devices), the requesting device sends a request to the server that looks up in the database and determine which two devices are the most appropriate ones to supply data to the requesting device. According to one aspect of the present invention, one of the criteria that the server relies upon to determine the candidates to supply the data is by a type of NAT the candidates are associated with.
  • For example, the requesting device is behind a symmetric NAT, the server is configured to designate devices that are behind a NAT that is compatible with a symmetric NAT. Given the above named four types, either a “Full-cone” NAT or a “Restricted-cone” NAT is a good candidate. Accordingly, among other criteria (e.g., a preferred ISP, a desired network speed and current status of a device), the server selects a device to be the supplier, where the selected device is behind a compatible NAT to that of the requesting device.
  • According to another embodiment, when a (sending) device is configured to send data to a (receiving) device, the sending device is provided with an instruction to send the data only to those devices that are behind a compatible NAT. In operation, the sending device is configured to consult with the server to determine which device or devices that the sending device is supposed to transport data thereto.
  • The compatibility between NAT types is such that some NAT types are much more restrictive than others. For example, with the above described four standard protocols, the compatibility chart shown in FIG. 3 arises. The chart of FIG. 3 essentially defines behind which types of NAT two devices may communicate with each other. In other words, Full-cone NATs permit communication with any NAT type (including other Full-cones). Restricted-cone NATs also permit communication with any NAT type, Port-restricted NATs can communicate with Full-cone, Restricted-cone & Port-restricted but not Symmetric. Symmetric NATs can communicate only with Full-cone and Restricted-cone.
  • Operationally, it appears that the devices behind Full-cone/Restricted-cone NATs are more “valuable” than others because they can be used to stream or transport data to any peer making a request. On the other hand, devices behind Port-restricted NATs are less “valuable” because they cannot stream or transport data to devices behind Symmetric peers. Devices behind Symmetric NATs are even less valuable because they cannot stream or transport data to peers behind either a Symmetric or a Port-restricted NAT.
  • Accordingly, when there is a request for peers to receive or supply data, it is preferable to avoid using up those devices behind the Full-cone/Restricted-cone NAT. In one embodiment, the server looks up in the database to determine candidates based on the following criteria:
      • Determine if there is a device behind a Symmetric NAT, if there is a one, chose that first;
      • If it is not possible to select a one behind such a Symmetric NAT first, the next candidates would be those behind a Port-restricted NAT.
      • Otherwise, devices behind a Full-cone or restricted-cone peer will be selected.
  • In operation, to avoid overusing or repeatedly designating those behind the Symmetric and port-restricted NATs, the sever is also loaded with a balancing module that facilitates to balance the allocation by making sure that same device is not designated to be a streaming or supplying device too much more often than it should be on average.
  • Referring now to FIG. 4, there shows, according to one embodiment of the present invention, a flowchart or process 400 of managing communication between two devices, each being behind a NAT. To facilitate the understanding of the present invention, the process 400 is presented for peer-to-peer communication between device A and B as shown in FIG. 1. Accordingly, FIG. 4 may be understood in conjunction with FIG. 1. It can be appreciated that the description herein for FIG. 4 may be equally applicable to peer-to-peer communication between any two computing devices.
  • At 402, a computing device, referred herein as a server, updates a database that keeps various parameters, characteristics, surrounding conditions and status of each of the devices registered with the server. There may be many ways to keep the database updated. For example, a device, newly installed or recently put back online, can initiate a discovery process by sending a probing message to a server. Alternatively, the server may send to a device a message requesting certain parameters regarding the device to be updated. According to one embodiment, a STUN protocol (allowing applications to discover the presence and a type of NAT) is used.
  • The server awaits a request from any one of the devices in service at 404. If no request is received or a predefined time period is out, the process 400 goes back to 402 to keep the database updated. It is now assumed that the request form one of the devices is received. According to one embodiment, the request is received from a device that has just been placed an order for a program (e.g., a large collection of data, a movie, an event broadcast). Because the device has none or only some of the data pertaining to the program, the device needs other selected devices to supply all of the data or the remaining part of the data. Accordingly, the ordering device initiates the request to the server.
  • Upon receiving the request, assuming the device has been authenticated and the user thereof has been authorized, the server is configured to look up at 406 in the database to select a set of available candidates. Among the criteria that a candidate device must satisfy is the requirement that the candidate must have some or all of the needed data, and the requirement that any NAT that the candidate device is behind is compatible with the NAT associated with the ordering device. At 408, among the selected candidates, a balancing measurement takes place to make sure that a finalist should not be the one that has been selected more often than others and in good condition to supply the needed data to the ordering device.
  • At 410, it is assumed that the server has designated a (supplying) device to supply the needed data, a message or an acknowledgement to the request is sent to the supplying device or the ordering device. Depending on implementation, the ordering device may initiate a request to the supplying device in accordance with the message from the server or the supplying device starts to upload the needed data to the ordering device.
  • In one embodiment, at 412, a special netfilter is used to convert the data conforming to one protocol in the supplying device to a data format conforming to another protocol to facilitate the data transmission through the respective NATs. The process 400 then goes to 402 to keep updating the database.
  • It should be noted that the process 400 is applicable to cases where the ordering device requires more than one supplying devices to supply the needed data. Further it can be appreciated by those skilled in the art that the process 400 is applicable to synchronize more than one supplying devices to supply the needed data to the ordering device at similar time.
  • To further understand the present invention, FIG. 5A shows an exemplary configuration of a distributed network system 500 in which the present invention may be practiced. A server 502, presumably managed and/or populated by a service provider, is configured to handle the delivery of video (or multimedia) services to users via local machines or boxes 506-1, 506-2, . . . 506-n. Different from the prior art system that delivers video data to a subscriber upon receiving a request therefrom, the server 502 is not responsible for delivering the content in response to a request from a user, and instead is configured to provide source information as to where and how to retrieve at least some of the content from other boxes. In other words, the prior art system requires at least a media storage device to provide the content when any of the client machines is being serviced, while the server 502 does not need necessarily a media storage device to provide the content. Instead, some of the boxes 506-1, 506-2, . . . 506-n are respectively configured to supply part or all of the content to each other.
  • According to one embodiment, when fulfilling a request from a local machine or a box 506-1 (e.g., corresponding to node A of FIG. 2), communication between the server 502 (e.g., corresponding to the server 208 of FIG. 2) and the box 506-1 over the network paths 508-1 and 510 may be limited to small-scale requests and responses (e.g., of small size and very short). A server response to a request from a box may include source information (e.g., identifiers), authorization information and security information. Using the response from the server 502, the box 506-1 may be activated to begin playback of a title. Data representing the title may be distributed in other boxes. The data, as will be shown below, is segmented into a number of segments, each is distributed to some boxes in services. Substantially at the same time, the box 506-1 may initiate one or more requests to other boxes (e.g., 506-2 and 506-n, corresponding respectively to nodes B and C) in accordance with the source identifiers to request the distributed segments (e.g., 507-2 and 507-n). Assuming proper authorization, the requesting box 506-1 receives the distributed segments concurrently from the other boxes according to the process 500 of FIG. 5
  • The contents available in a library being offered in any of the boxes 506-1, 506-2, . . . 506-n are originally provided by one or more content providers. Examples of the content providers include satellite receivers, television relay stations, analog or digital broadcasting station, movie studios and Internet sites. Depending on implementation, the contents may be initially received or originated in the server 502. Instead of maintaining and managing the content in a large storage device, the server 502 is configured to distribute the content or files to a plurality of local machines registered with the server 502. The boxes 506-1, 506-2, . . . 506-n shown in FIG. 5A are examples of local machines in service. Unless there is a need for a backup copy, the server 502 at any time has no need to keep a copy of the content. On the other hand, unless there is a special need to keep a complete copy of an extremely high-demand title in a box, none of the boxes in service has a complete copy of a title until an order is placed. Consequently, with embedded security in the distributed objects, one feature in the present invention may alleviate the concern of electronic piracy and widespread distribution (e.g., by hacking or illegal duplication).
  • For convenience, it is assumed herein that data or a file pertaining to a title is played back when the title is selected and ordered by a user. When an order for a title is placed, a corresponding file must be available for playback. One of the features in the present invention is that a file, or at least a portion thereof, regardless of its size, can be accessed instantaneously, thereby realizing instantaneous VOD. According to one embodiment, where a file is 840 Mbytes on average and a box includes a storage capacity of 300 Gbytes, a system may offer a large library of titles (e.g., 5000) for access at any time instantly. In the prior art, if the files for the titles must be stored in advance to offer instantaneous playback, the local storage of a box would have to have a capacity of 4,000 Gbytes, consequently, rendering instantaneous VOD economically impractical.
  • According to one aspect of the present invention, only a beginning portion (referred to as a “header”) and possibly one or more tail segments of a file are locally cached in a box. Such locally cached segments are referred to as residing objects or segments, while segments not residing locally are referred to as distributed objects or segments. When a title is selected, the header of the corresponding file is instantly played back. During the time the header is being played, the distributed segments corresponding to the title are retrieved simultaneously from other boxes. When the header is finished, the received parts of the distributed segments being streamed in from other boxes is combined with residing segments for the title, if any, to enable a continuous playback. Depending on the popularity and concurrent demand for a particular title, the number of residing objects may be increased or decreased to control the dependency of each box on other boxes for playback. Typically, the more residing objects for a title a box has, the more distributed copies of the title there are in the entire system and thus the less dependency of the ordering box on the other boxes.
  • In one embodiment, the header is always played first to ensure instant playback. In another embodiment, the header size is reduced to zero, in which case, a time-fill program is played first to provide a time frame that is sufficient enough to fetch and assembly the beginning data portion of the segments either locally available or from other boxes. Depending on implementation, the time-fill program may include one or more trailers related to the title being ordered, various notifications/updates or commercial programs. The time-fill program may be locally configured. In one embodiment, the time-fill program is provided to give a time frame in which data being fetched from one or more other devices can be stabilized. In another embodiment, the time-fill program provides a platform for sponsors that hope to display their respective programs to audience. Orders or slot positions for these programs in a time-fill program may be auctioned.
  • Referring to FIG. 5B, there shows an embodiment in which a file 520 is being organized or fragmented in terms of four segments 524. In general, the file 520 representing a collection of all data pertaining to a title may be divided into any number of segments in consideration of a required transmission rate (e.g., related to the encoding and decoding rates for successful playback), and the minimum uploading and downloading capabilities of a network. FIG. 2C shows another embodiment in which a file 530 is being organized or fragmented in terms of a header 532 and four segments 524, where the header 532 is always locally cached. One of the advantages of having a header locally cached is to facilitate an instantaneous playback after a movie is order. While the header is being played back, the needed segments are retrieved from other designated boxes. It can be appreciated the length of a header may be predefined or dynamically determined to provide a time buffer (e.g., 5 minutes) sufficiently to retrieve part of the data from the distributed segments for assembling with that of any locally cached segments, if any. As a result, an instantaneous VOD system may be realized.
  • Regardless whether a header is used or not, a file or a majority of a file will be fragmented and the segments are distributed among the boxes in service. According to one embodiment, given a required transmission rate (e.g., 1 megabit per second or 1 Mbps), the minimum uploading and downloading speeds of a network are considered to determine a number that defines the segmentation, and thus the dependency on other boxes and the support for concurrent demands of a particular title.
  • It is assumed that a minimum uploading speed is U and a required transmission rate is D, and D/U=K<k, where k is the smallest integer greater than K. In one embodiment, a file or a majority of a file is preferably divided into k segments to optimally utilize the uploading speed of U, assuming that the downloading speed is at least k times faster than the uploading speed. For example, in a POTS-based DSL network for residential areas, the required transmission may be about 1.0 Mbps while the uploading speed may be about 300 kbps. Hence, k=4. Assuming that an ordering box has a downloading speed four times the uploading speed of the other boxes, up to four segments in other boxes can be downloaded concurrently across the network as streaming into the ordering box without interruption.
  • FIG. 5D shows a data stream 540 representing a file or a majority of a file. The file 540 is divided into four segments 547-550. The segments 547-550 are created or formed by respectively sampling the file in a decimated manner. As a result, each of the segments includes a plurality of data blocks. Depending on an exact data length of the file 540, an n-th data block in each of the segments 547-550 is four successive data blocks in the file. In one embodiment, a data block comprises a chunk of data, for example, 256 Kbytes or 1 Mbyte.
  • As shown in FIG. 5D, the data stream 540 is expressed in data blocks as follows: b11, b21, b31, b41, b12, b22, b32, b42, b13, b23, b33, b43, . . . b1n, b2n, b3n, b4n. With the decimated sampling, the four segments 547-550 obtained can be respectively expressed as follows:
  • Segment 1={b11, b12, b13, b14 . . . };
  • Segment 2={b21, b22, b23, b24 . . . };
  • Segment 3={b31, b32, b33, b34 . . . }; and
  • Segment 4={b41, b42, b43, b44 . . . }.
  • It should be noted, however, a header, if used, includes data blocks that must be consecutive so that an instantaneous playback of the header is possible. It is evident that the data blocks in the segments are non-consecutive or interlaced.
  • FIG. 6A shows exemplary source information shown as a map 630 illustrating how a library of 5000 movie titles is distributed across N boxes. Column 632 lists all boxes in service. Each box is assigned a unique identifier for identification. Information in the column 632 may be viewed as the identifiers for the boxes in service. For example, box 1 is assigned a unique identifier of “Box 1” or a sequence of alphanumeric characters. The column 634 lists a corresponding IP address for each of the boxes listed in column 632. The Column 636 lists predetermined time-fill programs for all titles in the library. Depending on implementation, the time-fill programs may be identical or each of the time-fill programs is self-configured in accordance with what has been ordered. The column 638 lists what segments for title1 are residing in each of the boxes, assuming title1 is required to have two segments cached in each box. The column 640 lists what segment for title2 is residing in each of the boxes, assuming title2 is required to have one segment cached in each of the boxes. The column 642 lists what segment for title5000 is in a selected set of boxes, assuming title5000 is required to have one segment in these selected boxes. As a result, all segments in a box may be uniquely addressed for uploading to another box or playback of an ordered title locally.
  • FIG. 6B shows an exemplary source information map 650 corresponding to FIG. 6A. There are three other boxes 606-n, 606-3 and 606-1 designated to supply three needed segments that are together assembled with a locally cached segment to facilitate the playback of the ordered movie. Each of the entries (e.g., IPA1) in the source information map 650 may include the port and address information that facilitates the peer-to-peer or box-to-box communication between two devices. It can be appreciated that relying on multiple sources to retrieve distributed segments to support a playback can be advantageously used in the architecture of current networks where the downloading bandwidth is typically a multiple of the uploading bandwidth.
  • The present invention has been described in sufficient details with a certain degree of particularity. It is understood to those skilled in the art that the present disclosure of embodiments has been made by way of examples only and that numerous changes in the arrangement and combination of parts may be resorted without departing from the spirit and scope of the invention as claimed. Accordingly, the scope of the present invention is defined by the appended claims rather than the foregoing description of embodiments.

Claims (20)

1. A method for managing peer-to-peer communication among a plurality of devices, the method comprising:
in responding to a request from one of the devices (hereinafter “requesting device)” for needed data, determining some of the devices to be candidates from a database with many entries, each of the entries pertaining to one of the devices, wherein the determining of the some of the devices is conducted in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device;
among the candidates, designating a finalist that is deemed most appropriate to be a supplying device according to predefined criteria; and
notifying either the requesting device or the supplying device so that the requesting device can get the needed data directly from the supplying device.
2. The method as recited in claim 1, wherein the database is updated periodically or according to a predefined time by receiving a probing message from a device newly put into service or returned into service.
3. The method as recited in claim 2, wherein the criteria include compatibility of a NAT with a NAT of the requesting device, and the supplying device is not too often designated than it should be on average.
4. The method as recited in claim 2, wherein the request indicates that there are more than one devices needed to supply the needed data collectively at similar time.
5. The method as recited in claim 4, wherein the designating of the finalist comprises, till there are a sufficient number of supplying devices to the requesting device, keeping designating another finalist that is not designated to be a supplying device more often than it should be on average.
6. The method as recited in claim 5, further comprising:
notifying the requesting device which ones are to supply the needed data collectively; or
causing each of the supplying devices to start contacting the requesting device to initiate transmission of the needed data collectively.
7. The method as recited in claim 5, wherein each of the supplying devices locally caches one or more segments of the needed data.
8. The method as recited in claim 7, wherein each of the segments is non-consecutive in a sense that data from all of the segments must be streamed in at similar time to be useful.
9. The method as recited in claim 8, wherein the data from the segments streamed in from the supplying device and any locally cached in the requesting device is multiplexed to recover original data in the requesting device.
10. A method for managing peer-to-peer communication among a plurality of devices, the method comprising:
initiating a request to receive needed data from at least one supplying device, wherein the request causes a server to determine some of the devices to be candidates from a database with many entries, each of the entries pertaining to one of the devices, wherein the determining of the some of the devices is conducted in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device, among the candidates, the server is configured to designate a finalist that is not designated to be a supplying device more often than it should be on average; and
receiving from the server a message including necessary information to initiate a request to the supplying device to download the needed data; or
causing to accept the needed data from the supplying device.
11. The method as recited in claim 10, wherein the database is updated periodically or according to a predefined time by receiving a probing message from a device newly put into service or returned into service.
12. The method as recited in claim 10, wherein the request indicates that there are more than one devices needed to supply the needed data collectively at similar time.
13. The method as recited in claim 12, wherein, till there are a sufficient number of supplying devices, the server keeps designating another finalist that is not designated to be a supplying device more often than it should be on average.
14. The method as recited in claim 13, wherein the message includes information respectively identifying the supplying devices, and further comprising:
initiating a request to each of the supplying devices to download the needed data collectively; or
causing to accept the needed data from the supplying devices collectively.
15. The method as recited in claim 14, wherein each of the supplying devices locally caches one or more segments of the needed data.
16. The method as recited in claim 15, wherein each of the segments is non-consecutive in a sense that data from all of the segments must be streamed in at similar time to be useful.
17. The method as recited in claim 16, wherein the data from the segments streamed in from the supplying device and any locally cached in the requesting device is multiplexed to recover original data in the requesting device.
18. A system for managing peer-to-peer communication, the system comprising:
a plurality of devices in service; and
a server coupled to a database with many entries, each of the entries pertaining to one of the devices, wherein, upon receiving a request from one of the devices (hereinafter “a requesting device”), the server is configured to determine some of the devices to be candidates from the database in accordance with at least compatibility of respective network address translators with a network address translator of the requesting device, among the candidates, the server is configured to further designate a finalist that is not designated to be a supplying device more often than it should be on average, and
wherein the requesting device receives from the server a message including necessary information to initiate a request to the supplying device to download the needed data, or is caused to accept the needed data from the supplying device.
19. The system as recited in claim 18, wherein the request indicates that there are more than one devices needed to supply the needed data collectively at similar time, and each of the supplying devices locally caches one or more segments of the needed data.
20. The system as recited in claim 20, wherein each of the segments is non-consecutive in a sense that data from all of the segments must be streamed in at similar time to be useful.
US11/364,641 2006-02-27 2006-02-27 Method and system for managing data transmission between devices behind network address translators (NATs) Active 2030-04-18 US8788706B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/364,641 US8788706B2 (en) 2006-02-27 2006-02-27 Method and system for managing data transmission between devices behind network address translators (NATs)
US11/626,352 US20090022166A1 (en) 2006-02-27 2007-01-23 Method and system for providing media services by distributed networks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/364,641 US8788706B2 (en) 2006-02-27 2006-02-27 Method and system for managing data transmission between devices behind network address translators (NATs)

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/626,352 Continuation US20090022166A1 (en) 2006-02-27 2007-01-23 Method and system for providing media services by distributed networks

Publications (2)

Publication Number Publication Date
US20090024762A1 true US20090024762A1 (en) 2009-01-22
US8788706B2 US8788706B2 (en) 2014-07-22

Family

ID=40264801

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/364,641 Active 2030-04-18 US8788706B2 (en) 2006-02-27 2006-02-27 Method and system for managing data transmission between devices behind network address translators (NATs)
US11/626,352 Abandoned US20090022166A1 (en) 2006-02-27 2007-01-23 Method and system for providing media services by distributed networks

Family Applications After (1)

Application Number Title Priority Date Filing Date
US11/626,352 Abandoned US20090022166A1 (en) 2006-02-27 2007-01-23 Method and system for providing media services by distributed networks

Country Status (1)

Country Link
US (2) US8788706B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220160A1 (en) * 2006-03-17 2007-09-20 Macrovision Corporation Peer to peer gateway
US20100146099A1 (en) * 2008-12-04 2010-06-10 Microsoft Corporation Network Address Translators (NAT) Type Detection Techniques
US20100198979A1 (en) * 2009-01-30 2010-08-05 Cisco Technology, Inc. Media streaming through a network address translation (nat) device
US20100239226A1 (en) * 2009-03-19 2010-09-23 Eldon Technology Limited Archiving broadcast programs
US20110082941A1 (en) * 2009-10-06 2011-04-07 Electronics And Telecommunications Research Institute Method of providing direct communication in internet protocol network
US20110135284A1 (en) * 2009-12-08 2011-06-09 Echostar Technologies L.L.C. Systems and methods for selective archival of media content

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788706B2 (en) * 2006-02-27 2014-07-22 Vudu, Inc. Method and system for managing data transmission between devices behind network address translators (NATs)

Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178183B1 (en) * 1997-05-21 2001-01-23 International Business Machines Corporation Method and apparatus for receiving conventional telephone calls while connected to the internet
US20020042875A1 (en) * 2000-10-11 2002-04-11 Jayant Shukla Method and apparatus for end-to-end secure data communication
US20020059425A1 (en) * 2000-06-22 2002-05-16 Microsoft Corporation Distributed computing services platform
US20020075714A1 (en) * 2000-06-08 2002-06-20 Pereira Jose P. Content addressable memory with configurable class-based storage partition
US20020108121A1 (en) * 2001-02-02 2002-08-08 Rachad Alao Service gateway for interactive television
US20020116533A1 (en) * 2001-02-20 2002-08-22 Holliman Matthew J. System for providing a multimedia peer-to-peer computing platform
US20020169885A1 (en) * 2001-02-02 2002-11-14 Rachad Alao Digital television application protocol for interactive television
US20020178261A1 (en) * 2001-05-25 2002-11-28 Chang Frederic Robert Method of improving the reliability of peer-to-peer network downloads
US20030046260A1 (en) * 2001-08-30 2003-03-06 Mahadev Satyanarayanan Method and system for asynchronous transmission, backup, distribution of data and file sharing
US20030152034A1 (en) * 2002-02-01 2003-08-14 Microsoft Corporation Peer-to-peer method of quality of service (Qos) probing and analysis and infrastructure employing same
US20030182291A1 (en) * 2002-03-20 2003-09-25 Sreenath Kurupati Method and data structure for a low memory overhead database
US20030233475A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Method and apparatus for network address translation integration with internet protocol security
US20030233576A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Detection of support for security protocol and address translation integration
US20030233568A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Method and apparatus for control of security protocol negotiation
US20030236828A1 (en) * 2002-01-04 2003-12-25 Klaus Rock Method for reducing the latency time for interactive data communication via a satellite network
US20040093434A1 (en) * 2001-03-08 2004-05-13 Peter Hovell Address translator
US20040133640A1 (en) * 2002-10-31 2004-07-08 Yeager William J. Presence detection using mobile agents in peer-to-peer networks
US20040139228A1 (en) * 2003-01-15 2004-07-15 Yutaka Takeda Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US20040172476A1 (en) * 2003-02-28 2004-09-02 Chapweske Justin F. Parallel data transfer over multiple channels with data order prioritization
US20040267875A1 (en) * 2003-06-30 2004-12-30 Hennessey Wade L. Method and apparatus for establishing peering rules for distributed content delivery
US20050238034A1 (en) * 2004-04-12 2005-10-27 Brian Gillespie System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20060184688A1 (en) * 2005-02-17 2006-08-17 Nec Laboratories America, Inc. System and Method for Parallel Indirect Streaming of Stored Media from Multiple Sources
US20060209853A1 (en) * 2005-03-16 2006-09-21 Minoru Hidaka Packet transfer device and transfer control method thereof
US20070058670A1 (en) * 2005-08-08 2007-03-15 American Megatrends, Inc. UDP to TCP bridge
US20070174471A1 (en) * 2003-04-30 2007-07-26 Cedric Van Rossum Secure, continous, proxy-optimized, device-to-device data download reception system and method of use
US7254608B2 (en) * 2002-10-31 2007-08-07 Sun Microsystems, Inc. Managing distribution of content using mobile agents in peer-topeer networks
US7284051B1 (en) * 1998-12-28 2007-10-16 Fujitsu Limited Relaying apparatus for use in a network system
US20080192769A1 (en) * 1997-07-30 2008-08-14 Steven Tischer Apparatus and method for prioritizing communications between devices
US20080294785A1 (en) * 2007-05-23 2008-11-27 Brother Kogyo Kabushiki Kaisha Communication system, node device, node process program and a message transmitting and receiving method
US20090022166A1 (en) * 2006-02-27 2009-01-22 Wond, Inc. Method and system for providing media services by distributed networks
US20090043889A1 (en) * 2005-01-21 2009-02-12 Matsushita Electric Industrial Co., Ltd. Communication system, data processing apparatus, server, data processing method, program that executes the data processing method, and recording medium to record the program
US20090113067A1 (en) * 2007-10-30 2009-04-30 Flemming Andreasen Communicating a selection of a potential configuration

Patent Citations (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178183B1 (en) * 1997-05-21 2001-01-23 International Business Machines Corporation Method and apparatus for receiving conventional telephone calls while connected to the internet
US20080192769A1 (en) * 1997-07-30 2008-08-14 Steven Tischer Apparatus and method for prioritizing communications between devices
US7284051B1 (en) * 1998-12-28 2007-10-16 Fujitsu Limited Relaying apparatus for use in a network system
US20020075714A1 (en) * 2000-06-08 2002-06-20 Pereira Jose P. Content addressable memory with configurable class-based storage partition
US20020059425A1 (en) * 2000-06-22 2002-05-16 Microsoft Corporation Distributed computing services platform
US20020042875A1 (en) * 2000-10-11 2002-04-11 Jayant Shukla Method and apparatus for end-to-end secure data communication
US20020108121A1 (en) * 2001-02-02 2002-08-08 Rachad Alao Service gateway for interactive television
US20020169885A1 (en) * 2001-02-02 2002-11-14 Rachad Alao Digital television application protocol for interactive television
US20020116533A1 (en) * 2001-02-20 2002-08-22 Holliman Matthew J. System for providing a multimedia peer-to-peer computing platform
US20040093434A1 (en) * 2001-03-08 2004-05-13 Peter Hovell Address translator
US20020178261A1 (en) * 2001-05-25 2002-11-28 Chang Frederic Robert Method of improving the reliability of peer-to-peer network downloads
US20030046260A1 (en) * 2001-08-30 2003-03-06 Mahadev Satyanarayanan Method and system for asynchronous transmission, backup, distribution of data and file sharing
US20030236828A1 (en) * 2002-01-04 2003-12-25 Klaus Rock Method for reducing the latency time for interactive data communication via a satellite network
US20030152034A1 (en) * 2002-02-01 2003-08-14 Microsoft Corporation Peer-to-peer method of quality of service (Qos) probing and analysis and infrastructure employing same
US7133368B2 (en) * 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
US20030182291A1 (en) * 2002-03-20 2003-09-25 Sreenath Kurupati Method and data structure for a low memory overhead database
US20030233576A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Detection of support for security protocol and address translation integration
US20030233568A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Method and apparatus for control of security protocol negotiation
US20030233475A1 (en) * 2002-06-13 2003-12-18 Nvidia Corp. Method and apparatus for network address translation integration with internet protocol security
US20040133640A1 (en) * 2002-10-31 2004-07-08 Yeager William J. Presence detection using mobile agents in peer-to-peer networks
US7254608B2 (en) * 2002-10-31 2007-08-07 Sun Microsystems, Inc. Managing distribution of content using mobile agents in peer-topeer networks
US20040139228A1 (en) * 2003-01-15 2004-07-15 Yutaka Takeda Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US7328280B2 (en) * 2003-01-15 2008-02-05 Matsushita Electric Industrial Co., Ltd. Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US20040172476A1 (en) * 2003-02-28 2004-09-02 Chapweske Justin F. Parallel data transfer over multiple channels with data order prioritization
US20070174471A1 (en) * 2003-04-30 2007-07-26 Cedric Van Rossum Secure, continous, proxy-optimized, device-to-device data download reception system and method of use
US20040267875A1 (en) * 2003-06-30 2004-12-30 Hennessey Wade L. Method and apparatus for establishing peering rules for distributed content delivery
US20050238034A1 (en) * 2004-04-12 2005-10-27 Brian Gillespie System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client
US20090043889A1 (en) * 2005-01-21 2009-02-12 Matsushita Electric Industrial Co., Ltd. Communication system, data processing apparatus, server, data processing method, program that executes the data processing method, and recording medium to record the program
US20060184688A1 (en) * 2005-02-17 2006-08-17 Nec Laboratories America, Inc. System and Method for Parallel Indirect Streaming of Stored Media from Multiple Sources
US20060209853A1 (en) * 2005-03-16 2006-09-21 Minoru Hidaka Packet transfer device and transfer control method thereof
US20070058670A1 (en) * 2005-08-08 2007-03-15 American Megatrends, Inc. UDP to TCP bridge
US20090022166A1 (en) * 2006-02-27 2009-01-22 Wond, Inc. Method and system for providing media services by distributed networks
US20080294785A1 (en) * 2007-05-23 2008-11-27 Brother Kogyo Kabushiki Kaisha Communication system, node device, node process program and a message transmitting and receiving method
US20090113067A1 (en) * 2007-10-30 2009-04-30 Flemming Andreasen Communicating a selection of a potential configuration
US7788383B2 (en) * 2007-10-30 2010-08-31 Cisco Technology, Inc. Communicating a selection of a potential configuration

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
D'Acunto, "A Measurement of NAT and Firewall Characteristics in Peer-to-Peer Systems," 2009, ASCI Conference, 1-5. *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220160A1 (en) * 2006-03-17 2007-09-20 Macrovision Corporation Peer to peer gateway
US20100146099A1 (en) * 2008-12-04 2010-06-10 Microsoft Corporation Network Address Translators (NAT) Type Detection Techniques
US9160794B2 (en) * 2008-12-04 2015-10-13 Microsoft Technology Licensing, Llc Network address translators (NAT) type detection techniques
US20100198979A1 (en) * 2009-01-30 2010-08-05 Cisco Technology, Inc. Media streaming through a network address translation (nat) device
US8166179B2 (en) * 2009-01-30 2012-04-24 Cisco Technology, Inc. Media streaming through a network address translation (NAT) device
US20100239226A1 (en) * 2009-03-19 2010-09-23 Eldon Technology Limited Archiving broadcast programs
US9723249B2 (en) 2009-03-19 2017-08-01 Echostar Holdings Limited Archiving broadcast programs
US20110082941A1 (en) * 2009-10-06 2011-04-07 Electronics And Telecommunications Research Institute Method of providing direct communication in internet protocol network
US20110135284A1 (en) * 2009-12-08 2011-06-09 Echostar Technologies L.L.C. Systems and methods for selective archival of media content
US8315502B2 (en) 2009-12-08 2012-11-20 Echostar Technologies L.L.C. Systems and methods for selective archival of media content
US8873927B2 (en) 2009-12-08 2014-10-28 Echostar Technologies L.L.C. Systems and methods for selective archival of media content

Also Published As

Publication number Publication date
US20090022166A1 (en) 2009-01-22
US8788706B2 (en) 2014-07-22

Similar Documents

Publication Publication Date Title
US10924448B2 (en) Content delivery from home networks
US10171534B2 (en) Placeshifting of adaptive media streams
US7818402B1 (en) Method and system for expediting peer-to-peer content delivery with improved network utilization
EP2897340B1 (en) Routing proxy for adaptive streaming
KR100994948B1 (en) A method of distributing a digital content file and a digital content distribution system
US9176955B2 (en) Method and apparatus for sharing media files among network nodes
US20020162109A1 (en) Distributed storage on a P2P network architecture
US8788706B2 (en) Method and system for managing data transmission between devices behind network address translators (NATs)
US10313415B2 (en) Using segment routing to access chunks of content
Detti et al. Mobile peer-to-peer video streaming over information-centric networks
EP3446460B1 (en) Content routing in an ip network that implements information centric networking
US7080129B2 (en) Site selection based on Internet Protocol address
EP2175608B1 (en) Method of transmitting data between peers with network selection
US20100094938A1 (en) Method of transmitting data between peerss by selecting a network according to at least one criterion and associated management device and communication equipment
KR100616250B1 (en) System And Method For Transmitting The Data From Server To Clients In The Internet Network
JP2009177811A (en) Method for live transmission of content intended to be recovered later in p2p mode after being split, control device, and associated facility
US20080195697A1 (en) Data reception apparatus of consumer electronics device, method thereof, data reproduction method, and consumer electronics device

Legal Events

Date Code Title Description
AS Assignment

Owner name: WOND INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GANESAN, PRASANNA;REEL/FRAME:017638/0878

Effective date: 20060223

AS Assignment

Owner name: MARQUEE, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:VVOND, INC.;REEL/FRAME:018481/0603

Effective date: 20061002

AS Assignment

Owner name: VUDU, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:MARQUEE, INC.;REEL/FRAME:020361/0957

Effective date: 20070424

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

AS Assignment

Owner name: VUDU, LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:VUDU, INC.;REEL/FRAME:053585/0162

Effective date: 20200613

AS Assignment

Owner name: NBCUNIVERSAL MEDIA LLC, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VUDU, LLC;REEL/FRAME:053609/0302

Effective date: 20200820

AS Assignment

Owner name: NBCUNIVERSAL MEDIA LLC, NEW YORK

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE COVERSHEET TO EXCLUDE APP. NO. 11368308, WHICH WAS INADVERTENTLY ADDED AT THE TIME OF RECORDING THE ASSIGNMENT PREVIOUSLY RECORDED AT REEL: 053609 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:VUDU, LLC;REEL/FRAME:058756/0244

Effective date: 20200820

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8