US10033655B2 - Packet prioritization based on client device feedback - Google Patents
Packet prioritization based on client device feedback Download PDFInfo
- Publication number
- US10033655B2 US10033655B2 US14/845,454 US201514845454A US10033655B2 US 10033655 B2 US10033655 B2 US 10033655B2 US 201514845454 A US201514845454 A US 201514845454A US 10033655 B2 US10033655 B2 US 10033655B2
- Authority
- US
- United States
- Prior art keywords
- buffer
- packets
- client devices
- client
- client device
- 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.)
- Active, expires
Links
- 238000012913 prioritisation Methods 0.000 title claims abstract description 82
- 239000000872 buffer Substances 0.000 claims abstract description 489
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000003247 decreasing effect Effects 0.000 claims abstract description 11
- 230000003111 delayed effect Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 description 36
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 230000000717 retained effect Effects 0.000 description 6
- 230000007423 decrease Effects 0.000 description 4
- 230000001105 regulatory effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/122—Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2458—Modification of priorities while in transit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/0231—Traffic management, e.g. flow control or congestion control based on communication conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/0284—Traffic management, e.g. flow control or congestion control detecting congestion or overload during communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/11—Identifying congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/0278—Traffic management, e.g. flow control or congestion control using buffer status reports
Definitions
- This disclosure relates to the prioritization of packet delivery to client devices.
- Local networks servicing a premise may provide for delivery of multimedia content over various mediums, such as one or more wireless channels.
- Multimedia content delivered over a wireless network can be particularly vulnerable to problems arising in the transmission of the content to a client device and in the processing of the content at the client device. For example, where multiple premises or devices are sharing the same wireless channel, multimedia content may be streamed to a plurality of client devices at one time, and it is possible that network congestion can cause macro blocking or total audio/video delivery failure where packets are consumed by a device at a faster rate than the rate at which packets are received by the device.
- one or more buffers are used at a client device to account for the non-deterministic rate at which packets are delivered to a client device from an access point or central device providing a wireless network.
- the one or more buffers can temporarily store packets as they are received from an access point, and the client device can read packets from the one or more buffers for decoding and output.
- the rate at which a buffer is filled may depend on a number of factors including the bandwidth available to a client device.
- Bandwidth allocated to a client device may depend on various factors, such as congestion of an associated wireless network, and an underflow condition may arise if the one or more buffers at a client device receive packets at a lower bit rate than the bit rate at which packets are read from the one or more buffers. For example, if a decoder is reading packets from a buffer at a faster rate than the rate at which packets are written into the buffer, the situation may arise where the buffer is emptied and the decoder has no packet to read from the buffer. An underflow condition can result in a stalled or fragmented picture in the output of the associated multimedia content.
- the rate at which packets are consumed by a client device may vary according to a number of factors including the type or quality of content received at the device (e.g., high-definition channels require more bandwidth than standard-definition channels).
- a central device transmits packets evenly or at a common bitrate or quality of service to each of a plurality of client devices, and packet streams output to each of the plurality of client devices may be given the same priority level.
- client devices do not generally consume received packets at a constant or common bitrate, and one or more client devices within a group of client devices that are served by a common central device can become underserved or encounter an underflow event while other client devices within the group maintain a full or nearly full buffer.
- a client device receiving a weak wireless signal from an access point may consume more airtime than client devices receiving a stronger wireless signal from the access point. Therefore, a need exists for improving methods and systems for prioritizing packet delivery to a plurality of client devices.
- FIG. 1 is a block diagram illustrating an example network environment operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- FIG. 2A is a block diagram illustrating an example network environment operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein each of the multiple devices is operating at a normal operating condition.
- FIG. 2B is a block diagram illustrating an example network environment operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein one or more of the multiple devices are operating at a stressed operating condition.
- FIG. 2C is a block diagram illustrating an example network environment operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein an underflow event is imminent at one or more of the multiple devices.
- FIG. 3 is a block diagram illustrating an example client device operable to facilitate dynamic packet prioritization for delivery of content to multiple client devices.
- FIG. 4 is a flowchart illustrating an example process operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- FIG. 5 is a block diagram of a hardware configuration operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- Methods, systems, and computer readable media described herein are operable to prioritize packet delivery to a plurality of client devices based upon feedback received from the client devices, wherein the feedback includes buffer status information associated with the client devices.
- the rate of transmitting packets to a client device having a stressed buffer may be increased, while the rate of transmitting packets to one or more other client devices may be decreased.
- a client device operating at a stressed condition or having a stressed buffer may include devices having a buffer that is operating at a stressed level or at a level indicating that an underflow event at the buffer is imminent.
- Buffer status information may be received periodically or conditionally at a central device in the form of feedback messages output from one or more client devices.
- a feedback mechanism may relay an audio/video decode buffer status from each client back to a central device (e.g., gateway, modem, router, or any other device operable to route communications to a plurality of devices).
- the audio/video decode buffer status may be communicated to a central device in a variety of formats, and may provide an indication of the capacity and/or usage of the associated audio/video decode buffer.
- each client device may periodically, conditionally, or in response to a request output a current buffer fill position (e.g., using a position of a write pointer) to a central device.
- the position of a write pointer may vary at different client devices based on various factors. For example, the position of a write pointer within a buffer may depend on the data rate of source content, negotiated data rate between the client device and central device, and packet prioritizations (e.g., priority of client, device, flow, etc.).
- An embodiment of the invention described herein may include a method comprising: (a) outputting one or more packet streams from a central device to each of a plurality of client devices; (b) receiving a message from one or more respective client devices of the plurality of client devices, wherein the message indicates the status of a buffer associated with each respective client device; (c) determining that at least one of the respective client devices is in a stressed condition based upon the buffer status indicated in the message received from the at least one respective client device, wherein the message indicates that the number of packets within the buffer associated with the at least one respective client device in a stressed condition is less than a threshold level; and (d) prioritizing the delivery of packets to the at least one respective client device that is determined to be in a stressed condition over the delivery of packets to the one or more other client devices within the plurality of client devices.
- prioritizing the delivery of packets to the at least one respective client device that is determined to be in a stressed condition over the delivery of packets to the one or more other client devices within the plurality of client devices comprises: (a) decreasing the rate at which packets are delivered to the one or more other client devices within the plurality of client devices; and (b) increasing the rate at which packets are delivered to the at least one respective client device that is determined to be in a stressed condition.
- the message received from at least one of the other client devices indicates that packets are being received by the buffer associated with the at least one of the other client devices at a rate greater than or equivalent to the rate at which packets are being output from the buffer, such that delivery of packets to the buffer may be delayed without causing the buffer to empty.
- the message indicates the status of a buffer associated with a client device by identifying the position of a write pointer within the buffer.
- the position of the write pointer within the buffer is identified with respect to one or more boundaries associated with the buffer.
- requests are periodically output to one or more of the plurality of client devices for information associated with the status of a buffer, and the message from one or more respective client devices of the plurality of client devices is received in response to the requests.
- requests are periodically output at a first frequency to devices that are not in a stressed condition, and requests are periodically output at a second frequency to devices that are in a stressed condition, the second frequency being higher than the first frequency.
- a default prioritization of packet delivery is re-established for the plurality of client devices.
- An embodiment of the invention described herein may include an apparatus comprising: (a) one or more interfaces configured to be used to: (i) output one or more packet streams to each of a plurality of client devices; and (ii) receive a message from one or more respective client devices of the plurality of client devices, wherein the message indicates the status of a buffer associated with each respective client device; and (b) a module configured to: (i) determine that at least one of the respective client devices is in a stressed condition based upon the buffer status indicated in the message received from the at least one respective client device; and (ii) prioritize the delivery of packets to the at least one respective client device that is determined to be in a stressed condition over the delivery of packets to the one or more other client devices within the plurality of client devices.
- An embodiment of the invention described herein may include one or more non-transitory computer readable media having instructions operable to cause one or more processors to perform the operations comprising: (a) outputting one or more packet streams from a central device to each of a plurality of client devices; (b) receiving a message from one or more respective client devices of the plurality of client devices, wherein the message indicates the status of a buffer associated with each respective client device; (c) determining that at least one of the respective client devices is in a stressed condition based upon the buffer status indicated in the message received from the at least one respective client device; and (d) prioritizing the delivery of packets to the at least one respective client device that is determined to be in a stressed condition over the delivery of packets to the one or more other client devices within the plurality of client devices.
- FIG. 1 is a block diagram illustrating an example network environment 100 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- a central device 105 may provide video, audio and/or data services to a subscriber by communicating with a wide area network (WAN) 110 through a connection to a subscriber network 115 (e.g., hybrid fiber-coaxial network, fiber network, cellular network, high speed data network, etc.).
- the central device 105 may include a gateway device, a broadband modem, a wireless router including an embedded modem, or any other device or access point operable to route communications between one or more client devices and a network.
- the central device 105 may provide a local network 120 for delivering services to one or more client devices 125 .
- the local network 120 may include a local area network (LAN), wireless local area network (WLAN), personal area network (PAN), Multimedia over Coax Alliance (MoCA) network, mobile hotspot network, and others.
- LAN local area network
- WLAN wireless local
- a subscriber can request, receive and interact with multimedia and/or data services through a client device 125 .
- a client device 125 may include a set-top box (STB), computer, mobile device, tablet, television, and any other device operable to receive multimedia and/or data services.
- Multimedia and/or data services may be received at a client device 125 through a connection to a central device 105 .
- a television may receive multimedia and/or data services through a connection to a central device 105 and/or a STB. While the components shown in FIG. 1 are shown separate from each other, it should be understood that the various components can be integrated into each other.
- the central device 105 may provide a WLAN for client devices 125 within range of the central device 105 (or within range of a wireless extender configured to route communications between the central device 105 and client devices 125 ), and multimedia and/or data services may be provided to client devices 125 through wireless communications (e.g., Wi-Fi).
- the bit rate at which communications are passed over a WLAN may vary according to many different factors, the number of client devices 125 connected to the WLAN and the strength of a wireless radio signal received at each client device 125 from the central device 105 being only a couple of such factors.
- client devices 125 may buffer multimedia content as it is received. For example, a client device 125 may store packets of a received multimedia stream in a buffer for a period of time before outputting the packets to a decoder such that the decoder receives the packets at a more consistent bit rate.
- client devices 125 When a WLAN provided by a central device 105 becomes congested to a certain point, client devices 125 generally receive multimedia content at a lower bit rate. When the bit rate at which a client device 125 receives content falls to a certain level, the rate at which packets are loaded into the client device's buffer may fall below the rate at which packets are output from the buffer for playback of the associated multimedia content. A shortfall in the bit rate of incoming packets into the buffer can lead to an underflow event, wherein a read pointer catches up to a write pointer at the buffer, and the read pointer is therefore pointing to an empty slot in the buffer.
- an underflow event occurs at a buffer, the device's decoder becomes starved of packets needed to output the associated multimedia content at an expected quality level.
- an underflow event can lead to macro-blocking, a stalled or fragmented picture, or loss of media.
- a client device 125 can monitor and report real-time statistics or status updates for an associated buffer (e.g., audio/video buffer).
- the client device 125 can monitor the relative positions of the write and read pointers of an associated buffer. For example, the read pointer may read and output packets from the bottom of the buffer, and the write pointer may write packets into the buffer at the next highest slot that is available (e.g., slot that is not filled with a packet) within the buffer. As the buffer empties, the distance between the write pointer and read pointer decreases and as the buffer fills, the distance between the write pointer and read pointer increases. It should be understood that the buffer may be a circular buffer.
- Each buffer may include various regions indicating the status of the buffer or the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold.
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold.
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold. It should be understood that the normal operating threshold and the underflow threshold may be measured according to a certain distance between the read pointer and write pointer, wherein the certain distance indicates the number of slots within the buffer that are filled relative to the maximum capacity of the buffer.
- the central device 105 can request and/or periodically receive reports from client devices 125 , the reports including information identifying the position of a write pointer within a buffer associated with each respective client device 125 .
- Each report may include information identifying the position of a write pointer at a certain time or over a certain period of time. The identification of the write pointer position may be based upon the position of the write pointer relative to one or more threshold buffer positions (e.g., above or below a normal operating threshold, underflow threshold, etc.).
- a client device 125 may output a report to a central device 105 when a write pointer crosses a boundary within an associated buffer or when the write pointer enters or has been within a certain region of the buffer for a predetermined period of time. For example, a client device 125 can signal a central device 105 when a write pointer crosses a normal operating threshold or underflow threshold of an associated buffer.
- the central device 105 may make a determination as to the buffer status or delivery health or status of a multimedia stream delivered over a wireless connection to a client device 125 based upon feedback received from the client device 125 . For example, when a write pointer is positioned within a normal operating region of a buffer associated with a client device 125 , the central device 105 can determine that the client device 125 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective buffer.
- the central device 105 can determine that packets are being output from the respective buffer at a faster rate than the rate at which packets are being received by the client device 125 .
- the central device 105 can respond to write pointer reports received from one or more client devices 125 by adjusting the rate and/or order at which packets are transmitted to the client devices 125 . For example, when each respective buffer of a plurality of client devices 125 is operating at a normal operating condition, the central device 105 can schedule the output of packets to the client devices 125 evenly or at a common bit rate.
- the central device 105 can increase the rate at which packets are output to the one or more client devices 125 that are operating at a stressed level (i.e., client devices 125 operating at a stressed level may include client devices 125 having a buffer operating at a level indicating that an underflow event has occurred or is imminent) and can decrease the rate at which packets are output to other client devices 125 that are operating at a normal condition.
- a stressed level i.e., client devices 125 operating at a stressed level may include client devices 125 having a buffer operating at a level indicating that an underflow event has occurred or is imminent
- the central device 105 can further increase the rate at which packets are output to the one or more client devices 125 that are operating at an underflow level and can further decrease the rate at which packets are output to other client devices 125 that are operating at a normal condition or stressed condition.
- the central device 105 may identify one or more of the multiple client devices 125 for which to increase the rate of packet transmissions.
- the central device 105 may further determine that service flow(s) to one or more client devices may be temporarily terminated or delayed to account for the increased rate of packet transmissions targeted at another client device 125 .
- the determination may be based on priority levels associated with each of the client devices 125 , and the priority levels may be based upon a variety of parameters or characteristics (e.g., type of data flow delivered to the client device, subscription level associated with the client device, primary user of the client device, etc.).
- a certain user or device within a subscriber premise may be given priority over other users or devices, and certain content that a user has purchased (e.g., pay-per view content, video on-demand (VoD) content, etc.) may be given priority over other types of content.
- certain content that a user has purchased e.g., pay-per view content, video on-demand (VoD) content, etc.
- FIG. 2A is a block diagram illustrating an example network environment 200 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein each of the multiple devices is operating at a normal operating condition.
- client devices 125 e.g., clients 1 - 3
- FIG. 2A client devices 125 are receiving packets from a central device 105 at a rate that is sufficient to sustain the rate at which packets are being consumed by each of the client devices 125 .
- the central device 105 may receive one or more multimedia streams from a multimedia source 205 .
- the multimedia streams may be received at the central device 105 as one or more packet streams.
- a packet stream destined for client device 1 is received at the central device 105 as packets P 1 a - c
- a packet stream destined for client device 2 is received at the central device 105 as packets P 2 a - c
- a packet stream destined for client device 3 is received at the central device 105 as packets P 3 a - c.
- packet streams may be received at the central device 105 by a packet prioritization module 210 .
- the packet prioritization module 210 may control the rate at which transmitter buffers for individual devices (e.g., client 1 transmitter buffer 215 a , client 2 transmitter buffer 215 b , client 3 transmitter buffer 215 c ) are filled with packets destined for a device associated with the transmitter buffer.
- the rate at which transmitter buffers are filled with packets may be based upon the congestion of a network used for delivering content to client devices and/or the status of audio/video buffers 220 a - c at client devices serviced by the central device 105 (e.g., client devices 1 - 3 ). While the client transmitter buffers 215 a - c are shown in FIG. 2A as being linear, it should be understood that the client transmitter buffers 215 a - c may be circular buffers.
- the status of audio/video buffers 220 a - c at client devices may be determined based upon the position of a write pointer 225 a - c within each respective audio/video buffer 220 a - c .
- Packets may be received from a central device 105 at a client device 125 through a local network interface 230 a - c .
- the received packets may be placed into a receiver buffer (e.g., client receiver buffer 235 a - c ). From the client receiver buffers 235 a - c , packets may be moved or written into an audio/video buffer 220 a - c .
- a buffer may be filled from the bottom to the top, wherein a packet is written into a buffer at the position of a write pointer 225 a - c , and the write pointer 225 a - c may be positioned at the highest available slot in the buffer. Packets may be read or removed from the bottom of the audio/video buffers 220 a - c by an audio/video decoder 240 a - c , and may be output from an audio/video decoder 240 a - c to a display device associated with the respective client device 125 .
- the audio/video buffers 220 a - c may be used as the audio/video buffers 220 a - c . While the audio/video buffers 220 a - c are shown in FIG. 2A as being linear, it should be understood that the audio/video buffers 220 a - c may be circular buffers.
- an audio/video buffer 220 a - c While an audio/video buffer 220 a - c is being filled with packets at a faster rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to rise within the buffer until the buffer is eventually filled to a maximum capacity. While the audio/video buffer 220 a - c is being filled with packets at a slower rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to drop within the buffer until the buffer is eventually emptied.
- each audio/video buffer may include various regions indicating the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each audio/video buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold (e.g., normal operating threshold 245 a - c ).
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold (e.g., underflow threshold 250 a - c ).
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold. It should be understood that the maximum capacity of a buffer may be upgraded or may be variable, and that the thresholds and regions may be altered accordingly.
- the central device 105 may make a determination as to the status of the audio/video buffers 220 a - c based upon feedback received from the various client devices (e.g., clients 1 - 3 ) associated with the audio/video buffers. For example, when the write pointer 225 a - c is positioned within the normal operating region of an audio/video buffer 220 a - c (as is the case for the write pointers 225 a - c shown in FIG. 2A ), the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- a client device 125 can provide feedback associated with the position of a write pointer to the central device 105 periodically or conditionally (e.g., when the write pointer crosses a threshold boundary, when the write pointer has been within a certain buffer region for a predetermined period of time, etc.).
- the packet prioritization module 210 can prioritize packet transmissions by regulating the rate and/or order at which packets are transmitted to client devices. For example, when the packet prioritization module 210 determines that each audio/video buffer 220 a - c of a plurality of clients (e.g., clients 1 - 3 ) are operating at a normal operating condition (as is the case in FIG. 2A ), the packet prioritization module 210 can schedule the output of packets to the client devices evenly or at a common rate. As an example, where each of clients 1 - 3 are operating at a normal operating condition, the output of packets to clients 1 - 3 may be scheduled at a 1:1:1 (client 1 :client 2 :client 3 ) ratio.
- the packet prioritization module 210 can regulate the rate at which packets are transmitted to client devices by manipulating the order at which packets are placed into client transmitter buffers 215 a - c . For example, when each of clients 1 - 3 are operating at a normal operating condition, the packet prioritization module 210 may cause the client transmitter buffers 215 a - c to be filled evenly (e.g., where bandwidth permits three packets to be output, one packet may be placed into each of the client transmitter buffers 215 a - c ). Packets may be output from the client transmitter buffers 215 a - c to an associated client device through a local network interface 255 (e.g., Wi-Fi, Ethernet, MoCA, etc.).
- a local network interface 255 e.g., Wi-Fi, Ethernet, MoCA, etc.
- the output of packets from the client transmitter buffers 215 a - c may be scheduled such that all packets within a first buffer (e.g., client 1 transmitter buffer 215 a ) are output, then all packets within a second buffer (e.g., client 2 transmitter buffer 215 b ) are output, then all packets within a next buffer (e.g., client 3 transmitter buffer 215 c ) are output, and after all packets are output from the last client transmitter buffer, the transmission algorithm may be repeated starting at the first buffer.
- a first buffer e.g., client 1 transmitter buffer 215 a
- second buffer e.g., client 2 transmitter buffer 215 b
- all packets within a next buffer e.g., client 3 transmitter buffer 215 c
- packets P 1 a , P 2 a and P 3 a are delivered to their respective client devices 125 , placed into an associated client receiver buffer 235 a - c , and added to an audio/video buffer 220 a - c.
- FIG. 2B is a block diagram illustrating an example network environment 200 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein one or more of the multiple devices are operating at a stressed operating condition.
- client 1 is consuming packets at a faster rate than packets are being received by the client, and clients 2 and 3 are receiving packets from a central device 105 at a rate that is sufficient to sustain the rate at which packets are being consumed by each of the clients 2 and 3 .
- the central device 105 may receive one or more multimedia streams from a multimedia source 205 .
- the multimedia streams may be received at the central device 105 as one or more packet streams.
- a packet stream destined for client device 1 is received at the central device 105 as packets P 1 a - c
- a packet stream destined for client device 2 is received at the central device 105 as packets P 2 a - c
- a packet stream destined for client device 3 is received at the central device 105 as packets P 3 a - c.
- packet streams may be received at the central device 105 by a packet prioritization module 210 .
- the packet prioritization module 210 may control the rate at which transmitter buffers for individual devices (e.g., client 1 transmitter buffer 215 a , client 2 transmitter buffer 215 b , client 3 transmitter buffer 215 c ) are filled with packets destined for a device associated with the transmitter buffer.
- the rate at which transmitter buffers are filled with packets may be based upon the congestion of a network used for delivering content to client devices and/or the status of audio/video buffers 220 a - c at client devices serviced by the central device 105 (e.g., client devices 1 - 3 ). While the client transmitter buffers 215 a - c are shown in FIG. 2B as being linear, it should be understood that the client transmitter buffers 215 a - c may be circular buffers.
- the status of audio/video buffers 220 a - c at client devices may be determined based upon the position of a write pointer 225 a - c within each respective audio/video buffer 220 a - c .
- Packets may be received from a central device 105 at a client device 125 through a local network interface 230 a - c .
- the received packets may be placed into a receiver buffer (e.g., client receiver buffer 235 a - c ). From the client receiver buffers 235 a - c , packets may be moved or written into an audio/video buffer 220 a - c .
- a buffer may be filled from the bottom to the top, wherein a packet is written into a buffer at the position of a write pointer 225 a - c , and the write pointer 225 a - c may be positioned at the highest available slot in the buffer. Packets may be read or removed from the bottom of the audio/video buffers 220 a - c by an audio/video decoder 240 a - c , and may be output from an audio/video decoder 240 a - c to a display device associated with the respective client device 125 .
- the audio/video buffers 220 a - c may be used as the audio/video buffers 220 a - c . While the audio/video buffers 220 a - c are shown in FIG. 2B as being linear, it should be understood that the audio/video buffers 220 a - c may be circular buffers.
- an audio/video buffer 220 a - c While an audio/video buffer 220 a - c is being filled with packets at a faster rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to rise within the buffer until the buffer is eventually filled to a maximum capacity. While the audio/video buffer 220 a - c is being filled with packets at a slower rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to drop within the buffer until the buffer is eventually emptied.
- each audio/video buffer may include various regions indicating the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each audio/video buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold (e.g., normal operating threshold 245 a - c ).
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold (e.g., underflow threshold 250 a - c ).
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold.
- the central device 105 may make a determination as to the status of the audio/video buffers 220 a - c based upon feedback received from the various client devices (e.g., clients 1 - 3 ) associated with the audio/video buffers. For example, when the write pointer 225 a - c is positioned within the normal operating region of an audio/video buffer 220 a - c (as is the case for the write pointers 225 b - c shown in FIG. 2B ), the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is consuming packets from the buffer at a faster rate than the rate at which packets are being written into the buffer. Thus, the packet prioritization module 210 can determine that delivery of packets to the stressed client device (e.g., client 1 ) should be prioritized over client devices that are operating at a normal condition (e.g., clients 2 and 3 ).
- the stressed client device e.g., client 1
- a normal condition e.g., clients 2 and 3
- a client device 125 can provide feedback associated with the position of a write pointer to the central device 105 periodically or conditionally (e.g., when the write pointer crosses a threshold boundary, when the write pointer has been within a certain buffer region for a predetermined period of time, etc.).
- the packet prioritization module may compare the positions of write pointers 225 a - c for each client device 125 to determine which if any of the client devices (e.g., clients 1 - 3 ) are in the best position to potentially handle a slowdown of data delivery.
- the client devices e.g., clients 1 - 3
- the packet prioritization module 210 may make the determination to briefly hold off sending a packet to client 3 , and use the additional air time or bandwidth to send additional data to client 1 .
- the packet prioritization module 210 can prioritize packet transmissions by regulating the rate and/or order at which packets are transmitted to client devices. For example, when the packet prioritization module 210 determines that audio/video buffer 220 a of client 1 is operating at a stressed operating condition and that each audio/video buffer 220 b - c of clients 2 and 3 are operating at a normal operating condition (as is the case in FIG. 2B ), the packet prioritization module 210 can schedule the output of packets such that client 1 is favored over clients 2 and/or 3 . As an example, a transmission of packets to client 3 can be skipped or delayed such that an extra packet transmission can be made to client 1 . The output of packets to clients 1 - 3 may be scheduled at a 2:1:0 (client 1 :client 2 :client 3 ) ratio.
- the packet prioritization module 210 can regulate the rate at which packets are transmitted to client devices by manipulating the order at which packets are placed into client transmitter buffers 215 a - c . For example, when client 1 is operating at a stressed operating condition and each of clients 2 and 3 are operating at a normal operating condition, the packet prioritization module 210 may give greater priority to filling client 1 transmitter buffer 215 a over client transmitter buffers 215 b - c (e.g., where bandwidth permits three packets to be output, two packets may be placed into client 1 transmitter buffer 215 a , one packet may be placed into client 2 transmitter buffer 215 b , and client 3 transmitter buffer 215 c can be left empty). Thus, during the current packet transmission instance shown in FIG. 2B , a packet is withheld from client 3 so that an additional packet may be delivered to client 1 to allow the audio/video buffer 220 a to refill.
- Packets may be output from the client transmitter buffers 215 a - c to an associated client device through a local network interface 255 (e.g., Wi-Fi, Ethernet, MoCA, etc.).
- the output of packets from the client transmitter buffers 215 a - c may be scheduled such that all packets within a first buffer (e.g., client 1 transmitter buffer 215 a ) are output, then all packets within a second buffer (e.g., client 2 transmitter buffer 215 b ) are output, then all packets within a next buffer (e.g., client 3 transmitter buffer 215 c ) are output, and after all packets are output from the last client transmitter buffer, the transmission algorithm may be repeated starting at the first buffer.
- a first buffer e.g., client 1 transmitter buffer 215 a
- second buffer e.g., client 2 transmitter buffer 215 b
- a next buffer e.g., client 3 transmitter buffer 215 c
- Packets output from the central device 105 during transmit time slot “N” are placed into an associated client receiver buffer 235 a - b , and added to an audio/video buffer 220 a - b .
- Prioritization of transmissions to client 1 over transmissions to clients 2 and/or 3 may be continued (e.g., through transmit time slot N+1, transmit time slot N+2, and so on) until the write pointer 225 a crosses the normal operating threshold 245 a to enter a normal operating region.
- FIG. 2C is a block diagram illustrating an example network environment 200 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices, wherein an underflow event is imminent at one or more of the multiple devices.
- client 1 is consuming packets at a faster rate than packets are being received by the client, such that client 1 is at risk of an underflow event
- clients 2 and 3 are receiving packets from a central device 105 at a rate that is sufficient to sustain the rate at which packets are being consumed by each of the clients 2 and 3 .
- the central device 105 may receive one or more multimedia streams from a multimedia source 205 .
- the multimedia streams may be received at the central device 105 as one or more packet streams.
- a packet stream destined for client device 1 is received at the central device 105 as packets P 1 a - c
- a packet stream destined for client device 2 is received at the central device 105 as packets P 2 a - c
- a packet stream destined for client device 3 is received at the central device 105 as packets P 3 a - c.
- packet streams may be received at the central device 105 by a packet prioritization module 210 .
- the packet prioritization module 210 may control the rate at which transmitter buffers for individual devices (e.g., client 1 transmitter buffer 215 a , client 2 transmitter buffer 215 b , client 3 transmitter buffer 215 c ) are filled with packets destined for a device associated with the transmitter buffer.
- the rate at which transmitter buffers are filled with packets may be based upon the congestion of a network used for delivering content to client devices and/or the status of audio/video buffers 220 a - c at client devices serviced by the central device 105 (e.g., client devices 1 - 3 ). While the client transmitter buffers 215 a - c are shown in FIG. 2C as being linear, it should be understood that the client transmitter buffers 215 a - c may be circular buffers.
- the status of audio/video buffers 220 a - c at client devices may be determined based upon the position of a write pointer 225 a - c within each respective audio/video buffer 220 a - c .
- Packets may be received from a central device 105 at a client device 125 through a local network interface 230 a - c .
- the received packets may be placed into a receiver buffer (e.g., client receiver buffer 235 a - c ). From the client receiver buffers 235 a - c , packets may be moved or written into an audio/video buffer 220 a - c .
- a buffer may be filled from the bottom to the top, wherein a packet is written into a buffer at the position of a write pointer 225 a - c , and the write pointer 225 a - c may be positioned at the highest available slot in the buffer. Packets may be read or removed from the bottom of the audio/video buffers 220 a - c by an audio/video decoder 240 a - c , and may be output from an audio/video decoder 240 a - c to a display device associated with the respective client device 125 .
- the audio/video buffers 220 a - c may be used as the audio/video buffers 220 a - c . While the audio/video buffers 220 a - c are shown in FIG. 2C as being linear, it should be understood that the audio/video buffers 220 a - c may be circular buffers.
- an audio/video buffer 220 a - c While an audio/video buffer 220 a - c is being filled with packets at a faster rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to rise within the buffer until the buffer is eventually filled to a maximum capacity. While the audio/video buffer 220 a - c is being filled with packets at a slower rate than the rate at which packets are being removed from the audio/video buffer 220 a - c , an associated write pointer 225 a - c will continue to drop within the buffer until the buffer is eventually emptied.
- each audio/video buffer may include various regions indicating the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each audio/video buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold (e.g., normal operating threshold 245 a - c ).
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold (e.g., underflow threshold 250 a - c ).
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold.
- the central device 105 may make a determination as to the status of the audio/video buffers 220 a - c based upon feedback received from the various client devices (e.g., clients 1 - 3 ) associated with the audio/video buffers. It should be understood that a client device 125 can provide feedback associated with the position of a write pointer to the central device 105 periodically or conditionally (e.g., when the write pointer crosses a threshold boundary, when the write pointer has been within a certain buffer region for a predetermined period of time, etc.).
- the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- the write pointer 225 a - c is positioned within the underflow region of an audio/video buffer 220 a - c (as is the case for the write pointer 225 a shown in FIG.
- the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is consuming packets from the buffer at faster rate than the rate at which packets are being written into the buffer, and that an underflow event at the buffer is imminent. Thus, the packet prioritization module 210 can determine that delivery of packets to the client device operating at the underflow condition (e.g., client 1 ) should be prioritized over client devices that are operating at a normal condition (e.g., clients 2 and 3 ) or stressed condition.
- the underflow condition e.g., client 1
- a normal condition e.g., clients 2 and 3
- Packet transmissions to each client device operating at a normal condition may be delayed to allow an increase in the rate at which packets are transmitted to the client device operating in an underflow condition (e.g., client 1 ) until the audio/video buffer associated with the underflow device is filled to a normal operation region.
- a normal condition e.g., clients 2 and 3
- an underflow condition e.g., client 1
- the packet prioritization module may compare the positions of write pointers 225 a - c for each client device 125 to determine which if any of the client devices (e.g., clients 1 - 3 ) are in the best position to potentially handle a slowdown of data delivery.
- the client devices e.g., clients 1 - 3
- the packet prioritization module 210 may make the determination to briefly hold off sending a packet to clients 2 and 3 , and use the additional air time or bandwidth to send additional packets to client 1 .
- the packet prioritization module 210 can prioritize packet transmissions by regulating the rate and/or order at which packets are transmitted to client devices. For example, when the packet prioritization module 210 determines that audio/video buffer 220 a of client 1 is operating at an underflow condition and that each audio/video buffer 220 b - c of clients 2 and 3 are operating at a normal operating condition (as is the case in FIG. 2C ), the packet prioritization module 210 can schedule the output of packets such that client 1 is favored over clients 2 and/or 3 . As an example, a transmission of packets to clients 2 and 3 can be skipped such that extra packet transmissions can be made to client 1 . The output of packets to clients 1 - 3 may be scheduled at a 3:0:0 (client 1 :client 2 :client 3 ) ratio.
- the packet prioritization module 210 can regulate the rate at which packets are transmitted to client devices by manipulating the order at which packets are placed into client transmitter buffers 215 a - c . For example, when client 1 is operating at an underflow condition and each of clients 2 and 3 are operating at a normal operating condition, the packet prioritization module 210 may give greater priority to filling the client 1 transmitter buffer 215 a over client transmitter buffers 215 b - c (e.g., where bandwidth permits three packets to be output, three packets may be placed into client 1 transmitter buffer 215 a and client transmitter buffers 215 b - c can be left empty). Thus, during the current packet transmission instance shown in FIG. 2C , packets are withheld from clients 2 and 3 so that more packets may be delivered to client 1 to allow the audio/video buffer 220 a to refill.
- Packets may be output from the client transmitter buffers 215 a - c to an associated client device through a local network interface 255 (e.g., Wi-Fi, Ethernet, MoCA, etc.).
- the output of packets from the client transmitter buffers 215 a - c may be scheduled such that all packets within a first buffer (e.g., client 1 transmitter buffer 215 a ) are output, then all packets within a second buffer (e.g., client 2 transmitter buffer 215 b ) are output, then all packets within a next buffer (e.g., client 3 transmitter buffer 215 c ) are output, and after all packets are output from the last client transmitter buffer, the transmission algorithm may be repeated starting at the first buffer.
- a first buffer e.g., client 1 transmitter buffer 215 a
- second buffer e.g., client 2 transmitter buffer 215 b
- a next buffer e.g., client 3 transmitter buffer 215 c
- transmit time slot “N” client 1 is set to receive its respective packets (P 1 a - c ).
- P 1 a - c the respective packets
- no packets are delivered to clients 2 or 3 .
- Packets output from the central device 105 during transmit time slot “N” are placed into an associated client receiver buffer 235 a , and added to an audio/video buffer 220 a . Prioritization of transmissions to client 1 over transmissions to clients 2 and 3 may be continued (e.g., through transmit time slot N+1, transmit time slot N+2, and so on) until the write pointer 225 a crosses the normal operating threshold 245 a to enter a normal operating region.
- FIG. 3 is a block diagram illustrating an example client device 125 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- the client device 125 may include an audio/video buffer monitor 305 .
- the audio/video monitor 305 may monitor an audio/video buffer 220 and may generate and output a report including statistics or status reports associated with the audio/video buffer 220 .
- Packets may be received from a central device 105 at a client device 125 through a local network interface 230 . As packets are received at a client device 125 the received packets may be placed into a receiver buffer (e.g., client receiver buffer 235 ). From the client receiver buffer 235 , packets may be moved or written into an audio/video buffer 220 . As an example, a buffer may be filled from the bottom to the top, wherein a packet is written into a buffer at the position of a write pointer 225 , and the write pointer 225 may be positioned at the highest available slot in the buffer.
- a receiver buffer e.g., client receiver buffer 235
- Packets may be read or removed from the bottom of the audio/video buffer 220 by an audio/video decoder 240 , and may be output from an audio/video decoder 240 to a display device associated with the respective client device 125 .
- this is only one example type of buffer, and that various types of buffers may be used as the audio/video buffer 220 . While the audio/video buffer 220 is shown as being linear, it should be understood that the audio/video buffer 220 may be a circular buffer.
- the status of an audio/video buffer 220 may be determined based upon the position of a write pointer 225 within the audio/video buffer 220 . While an audio/video buffer 220 is being filled with packets at a faster rate than the rate at which packets are being removed from the audio/video buffer 220 , an associated write pointer 225 will continue to rise within the buffer until the buffer is eventually filled to a maximum capacity. While the audio/video buffer 220 is being filled with packets at a slower rate than the rate at which packets are being removed from the audio/video buffer 220 , an associated write pointer 225 will continue to drop within the buffer until the buffer is eventually emptied.
- each audio/video buffer may include various regions indicating the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each audio/video buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold (e.g., normal operating threshold 245 ).
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold (e.g., underflow threshold 250 ).
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold. It should be understood that the maximum capacity of a buffer may be upgraded or may be variable, and that the thresholds and regions may be altered accordingly.
- the audio/video buffer monitor 305 may poll the audio/video buffer 220 to identify the current position of the write pointer 225 within the audio/video buffer 220 .
- the audio/video buffer monitor 305 may identify a region the write pointer 225 is within based upon the position of the write pointer 225 relative to one or more thresholds or boundaries (e.g., normal operating threshold 245 , underflow threshold 250 , etc.).
- the audio/video buffer monitor 305 may generate a message identifying the position of the write pointer 225 within the audio/video buffer 220 and/or a corresponding region of the buffer (e.g., normal operating region, stressed operating region, underflow region, etc.).
- the position of the write pointer 225 may be described in various ways or formats (e.g., identification of a slot position within the buffer, distance between the write pointer and a corresponding read pointer, percentage of the buffer that is filled, etc.).
- the audio/video buffer monitor 305 may poll the audio/video buffer 220 periodically. For example, the audio/video buffer 220 may generate a report identifying the position of a write pointer 225 within the audio/video buffer 220 once over a predetermined period (e.g., one (1) minute, two (2) minutes, etc.) when the audio/video buffer 220 is in a normal operating condition. The audio/video buffer 220 may generate a report identifying the position of a write pointer 225 at an increased frequency (e.g., once every thirty (30) seconds, fifteen (15) seconds, etc.) when the write pointer 225 enters a stressed operating region or underflow region of the audio/video buffer 220 .
- a predetermined period e.g., one (1) minute, two (2) minutes, etc.
- the audio/video buffer 220 may generate a report identifying the position of a write pointer 225 at an increased frequency (e.g., once every thirty (30) seconds, fifteen (15) seconds, etc.) when the write pointer 225 enters
- the audio/video buffer monitor 305 may poll the audio/video buffer 220 conditionally. For example, the audio/video buffer monitor 305 may receive a notification when the write pointer 225 crosses a threshold (e.g., normal operating threshold 245 , underflow threshold 250 , etc.) of the audio/video buffer 220 , and the audio/video buffer monitor 305 can generate a message to notify a central device 105 of the transition. The audio/video buffer monitor 305 may poll the audio/video buffer 220 in response to a request received from a central device 105 .
- a threshold e.g., normal operating threshold 245 , underflow threshold 250 , etc.
- the central device 105 may request an identification of the status of a write pointer 225 within an audio/video buffer 220 periodically, and the frequency at which the central device 105 requests a report from the client device 125 may be based upon the most recent status of the write pointer 225 .
- the central device 105 may request a report at a first frequency (e.g., once every minute, two (2) minutes, etc.), but when the central device 105 determines that the write pointer 225 has entered into a stressed or underflow region of the audio/video buffer 220 , the central device 105 may request a report at a second frequency (e.g., once every thirty (30) seconds, fifteen (15) seconds, etc.).
- a first frequency e.g., once every minute, two (2) minutes, etc.
- a second frequency e.g., once every thirty (30) seconds, fifteen (15) seconds, etc.
- the message generated by the audio/video buffer monitor 305 may be output to a central device 105 through the local network interface 230 , and may be received by a packet prioritization module 210 through a local network interface 255 at the central device 105 .
- the packet prioritization module 210 may make a determination as to the status of the audio/video buffer 220 based upon feedback received from the client device 125 . For example, when the write pointer 225 is positioned within the normal operating region of an audio/video buffer 220 , the packet prioritization module 210 can determine that the client device 125 associated with the audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the audio/video buffer 220 .
- the packet prioritization module 210 may determine that the client device 125 associated with the audio/video buffer 220 is consuming packets at a faster rate than the rate at which the audio/video buffer 220 is receiving packets, and the packet prioritization module 210 may prioritize packet transmissions to the client device 125 at the expense of one or more other client devices 125 .
- FIG. 4 is a flowchart illustrating an example process 400 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- the process 400 may be carried out by a central device 105 of FIG. 1 while outputting communications to a plurality of client devices (e.g., client devices 125 of FIG. 1 ). It should be understood that the process 400 may be carried out continuously, periodically, or conditionally. For example, transmissions of communications to one or more of a plurality of client devices may be prioritized when resources of the central device 105 and/or corresponding local network (e.g., local network 120 of FIG. 1 ) become congested.
- local network e.g., local network 120 of FIG. 1
- status reports may be received from a plurality of devices.
- a central device 105 of FIG. 1 may receive a status report from each of a plurality of client devices 125 of FIG. 1 , wherein the status report provides information associated with the status of a buffer at each respective client device 125 .
- each status report may provide an indication of the number of packets relative to a threshold level associated with a buffer.
- each status report may identify a position of a write pointer 225 of FIG. 2A within an audio/video buffer 220 of FIG. 2A .
- Each status report may identify a region of the audio/video buffer 220 (e.g., normal operating region, stressed operating region, underflow region, etc.) that the write pointer 225 is within.
- the position of the write pointer 225 may be described in various ways or formats (e.g., identification of a slot position within the buffer, distance between the write pointer and a corresponding read pointer, percentage of the buffer that is filled, etc.). It should be further understood that a client device 125 can provide feedback associated with the position of a write pointer to the central device 105 periodically or conditionally (e.g., when the write pointer crosses a threshold boundary, when the write pointer has been within a certain buffer region for a predetermined period of time, etc.).
- each audio/video buffer may include various regions indicating the rate at which packets are being received by the buffer with respect to the rate at which packets are being output from the buffer.
- each audio/video buffer may have a maximum capacity, the maximum capacity being the maximum number of packets that may be retained by the buffer at any given time.
- Each buffer may have a normal operating region, the normal operating region being the portion of the buffer that is below the maximum capacity of the buffer and above a normal operating threshold (e.g., normal operating threshold 245 of FIG. 2A ).
- Each buffer may have a stressed operating region, the stressed operating region being the portion of the buffer that is below the normal operating threshold and above an underflow threshold (e.g., underflow threshold 250 of FIG. 2A ).
- Each buffer may have an underflow region, the underflow region being the portion of the buffer that is below the underflow threshold.
- a determination may be made that a first device is in a stressed condition.
- the determination that a first device is in a stressed condition may be made, for example, by a central device 105 of FIG. 1 (e.g., packet prioritization module 210 of FIG. 2A ).
- the determination that a first device is in a stressed condition may be based upon the position of a write pointer 225 within a buffer (e.g., audio/video buffer 220 of FIG. 2A ) associated with the first device.
- the packet prioritization module 210 may determine that a device is in a stressed condition when a write pointer 225 is within a stressed operating region or underflow region of an audio/video buffer 220 associated with the device.
- the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is receiving packets at a rate sufficient to keep up with the rate at which packets are being output by the respective audio/video buffer 220 .
- the packet prioritization module 220 can determine that the client device associated with the respective audio/video buffer 220 is consuming packets from the buffer at a faster rate than the rate at which packets are being written into the buffer.
- the packet prioritization module 210 can determine that the client device associated with the respective audio/video buffer 220 is consuming packets from the buffer at a faster rate than the rate at which packets are being written into the buffer, and that an underflow event at the buffer is imminent.
- the rate at which communications are transmitted to one or more devices other than the first device may be decreased.
- the packet prioritization module 210 may determine that delivery of packets to the first device is to be prioritized over the delivery of packets to one or more other devices, wherein the other devices are operating at a normal operating condition. Packet transmissions to each of the one or more other client devices operating at a normal condition may be delayed to allow an increase in the rate at which packets are transmitted to the first client device that is operating in a stressed condition.
- the packet prioritization module 210 may compare the positions of write pointers 225 for each client device 125 to determine which if any of the client devices are in the best position to potentially handle a slowdown of data delivery.
- the one or more other devices selected for a decreased rate of packet transmissions may include one or more client devices having audio/video buffers 220 that are operating within a normal operating region (i.e., a write pointer 225 is within the normal operating region of the buffer 220 ).
- the packet prioritization module 210 may make the determination to briefly hold off sending a packet to the one or more other devices, and use the additional air time or bandwidth to send additional packets to the first device.
- the rate at which communications are transmitted to the first device may be increased.
- the packet prioritization module 210 may prioritize the delivery of packets to the first device over the delivery of packets to the one or more other devices. Using the bandwidth available as a result of decreasing the rate of transmissions to the one or more other devices, the packet prioritization module 210 can increase the rate of transmissions to the first device.
- the packet prioritization module 210 can prioritize packet transmissions by regulating the rate and/or order at which packets are transmitted to client devices. For example, when the packet prioritization module 210 determines that the first device is to be prioritized over the one or more other devices, the packet prioritization module 210 can schedule the output of packets such that the first device is favored over the one or more other devices. As an example, a transmission of packets to one or more of the other devices can be skipped or delayed such that extra packet transmissions can be made to the first device.
- the packet prioritization module 210 can regulate the rate at which packets are transmitted to client devices by manipulating the order at which packets are placed into client transmitter buffers 215 of FIG. 2A-C . For example, when the first device is prioritized over the one or more other devices, the packet prioritization module 210 may give greater priority to filling a transmitter buffer 215 associated with the first device over client transmitter buffers 215 associated with the one or more other devices.
- a determination can be made whether the first device is still in a stressed condition.
- the determination whether the first device is still in a stressed condition may be made, for example, by the central device 105 (e.g., at the packet prioritization module 210 ).
- the packet prioritization module 210 may make the determination whether the first device is still in a stressed condition based upon the most recent report received by the central device 105 from the first device, wherein the report indicates the most recently monitored position of a write pointer 225 within an audio/video buffer 220 .
- the process 400 can return to 415 .
- the packet prioritization module 210 determines that a write pointer 225 is within a stressed operating region or underflow region of an audio/video buffer 220 associated with the first device, the rate of transmitting communications to the one or more other devices may be maintained or may be further decreased and the rate of transmitting communications to the first device may be maintained or may be further increased at 415 and 420 respectively.
- the packet prioritization module 210 may make the determination that the position of the write pointer 225 within the audio/video buffer 220 has improved as a result of the most recent rate decrease of transmissions to the one or more other devices and rate increase of transmissions to the first device, and the packet prioritization module 210 can maintain the current rates of transmissions to the one or more other devices and first device.
- the process 400 can proceed to 430 .
- the packet prioritization module 210 determines that a write pointer 225 is within a normal operating region of an audio/video buffer 220 associated with the first device, prioritization of communication transmissions to each of the plurality of devices may be reset to a previous or default priority setting. Delivery of packets to each of the plurality of devices may be scheduled according to a previous or default delivery schedule or prioritization of devices or flows.
- FIG. 5 is a block diagram of a hardware configuration 500 operable to facilitate dynamic packet prioritization for delivery of content to multiple devices.
- the hardware configuration 500 can include a processor 510 , a memory 520 , a storage device 530 , and an input/output device 540 .
- Each of the components 510 , 520 , 530 , and 540 can, for example, be interconnected using a system bus 550 .
- the processor 510 can be capable of processing instructions for execution within the hardware configuration 500 .
- the processor 510 can be a single-threaded processor.
- the processor 510 can be a multi-threaded processor.
- the processor 510 can be capable of processing instructions stored in the memory 520 or on the storage device 530 .
- the memory 520 can store information within the hardware configuration 500 .
- the memory 520 can be a computer-readable medium.
- the memory 520 can be a volatile memory unit.
- the memory 520 can be a non-volatile memory unit.
- the storage device 530 can be capable of providing mass storage for the hardware configuration 500 .
- the storage device 530 can be a computer-readable medium.
- the storage device 530 can, for example, include a hard disk device, an optical disk device, flash memory or some other large capacity storage device.
- the storage device 530 can be a device external to the hardware configuration 500 .
- the input/output device 540 provides input/output operations for the hardware configuration 500 .
- the input/output device 540 can include one or more of a network interface device (e.g., an Ethernet card), a serial communication device (e.g., an RS-232 port), one or more universal serial bus (USB) interfaces (e.g., a USB 2.0 port), one or more wireless interface devices (e.g., an 802.11 card), and/or one or more interfaces for outputting video and/or data services to a client device 125 of FIG. 1 (e.g., STB, television, computer, tablet, mobile device, etc.).
- a network interface device e.g., an Ethernet card
- serial communication device e.g., an RS-232 port
- USB universal serial bus
- wireless interface devices e.g., an 802.11 card
- the input/output device can include driver devices configured to send communications to, and receive communications from one or more networks (e.g., local network 120 of FIG. 1 , subscriber network 115 of FIG. 1 , WAN 110 of FIG. 1 , etc.).
- networks e.g., local network 120 of FIG. 1 , subscriber network 115 of FIG. 1 , WAN 110 of FIG. 1 , etc.
- Methods, systems, and computer readable media described herein are operable to prioritize packet delivery to a plurality of client devices based upon feedback received from the client devices, wherein the feedback includes buffer status information associated with the client devices.
- the rate of transmitting packets to a client device having a stressed buffer may be increased, while the rate of transmitting packets to one or more other client devices may be decreased.
- Buffer status information may be received periodically or conditionally at a central device in the form of feedback messages output from one or more client devices.
- Such instructions can, for example, comprise interpreted instructions, such as script instructions, e.g., JavaScript or ECMAScript instructions, or executable code, or other instructions stored in a computer readable medium.
- Implementations of the subject matter and the functional operations described in this specification can be provided in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
- Embodiments of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible program carrier for execution by, or to control the operation of, data processing apparatus.
- a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- a computer program does not necessarily correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- the processes and logic flows described in this specification are performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output thereby tying the process to a particular machine (e.g., a machine programmed to perform the processes described herein).
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks (e.g., internal hard disks or removable disks); magneto optical disks; and CD ROM and DVD ROM disks.
- semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
- magnetic disks e.g., internal hard disks or removable disks
- magneto optical disks e.g., CD ROM and DVD ROM disks.
- the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/845,454 US10033655B2 (en) | 2015-09-04 | 2015-09-04 | Packet prioritization based on client device feedback |
PCT/US2016/045825 WO2017039955A1 (en) | 2015-09-04 | 2016-08-05 | Packet prioritization based on client device feedback |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/845,454 US10033655B2 (en) | 2015-09-04 | 2015-09-04 | Packet prioritization based on client device feedback |
Publications (2)
Publication Number | Publication Date |
---|---|
US20170070440A1 US20170070440A1 (en) | 2017-03-09 |
US10033655B2 true US10033655B2 (en) | 2018-07-24 |
Family
ID=56799560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/845,454 Active 2036-09-16 US10033655B2 (en) | 2015-09-04 | 2015-09-04 | Packet prioritization based on client device feedback |
Country Status (2)
Country | Link |
---|---|
US (1) | US10033655B2 (en) |
WO (1) | WO2017039955A1 (en) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10158525B2 (en) | 2015-08-12 | 2018-12-18 | Nxp Usa, Inc. | System and method for radio base station device hot switching and hot swapping |
US10212754B2 (en) | 2015-08-12 | 2019-02-19 | Nxp Usa, Inc. | System and method for radio base station device hot reconnection (hot plugging) |
US9979600B2 (en) * | 2015-12-15 | 2018-05-22 | Nxp Usa, Inc. | System and method for automatic load adaptive antenna carrier bandwidth dynamic reconfiguration in radio base station system |
US10122386B2 (en) | 2015-12-15 | 2018-11-06 | Nxp Usa, Inc. | System and method for on-the-fly modification of the properties on an active antenna carrier in radio base station communication operation |
US11044183B2 (en) | 2015-12-29 | 2021-06-22 | Xilinx, Inc. | Network interface device |
US11165683B2 (en) * | 2015-12-29 | 2021-11-02 | Xilinx, Inc. | Network interface device |
US10178641B2 (en) | 2016-01-04 | 2019-01-08 | Nxp Usa, Inc. | System and method for automatic delay compensation in a radio base station system |
US11588876B2 (en) * | 2020-06-16 | 2023-02-21 | T-Mobile Usa, Inc. | Device-side playback restrictions on high throughput networks |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002056627A1 (en) | 2001-01-16 | 2002-07-18 | Siemens Aktiengesellschaft | Method for reporting status information between a mobile station and a radio access network |
US20050111604A1 (en) | 2003-11-21 | 2005-05-26 | Ken Okuyama | Serial data communication system having plurality of data transmission paths |
US20060282566A1 (en) | 2005-05-23 | 2006-12-14 | Microsoft Corporation | Flow control for media streaming |
-
2015
- 2015-09-04 US US14/845,454 patent/US10033655B2/en active Active
-
2016
- 2016-08-05 WO PCT/US2016/045825 patent/WO2017039955A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002056627A1 (en) | 2001-01-16 | 2002-07-18 | Siemens Aktiengesellschaft | Method for reporting status information between a mobile station and a radio access network |
US20050111604A1 (en) | 2003-11-21 | 2005-05-26 | Ken Okuyama | Serial data communication system having plurality of data transmission paths |
US20060282566A1 (en) | 2005-05-23 | 2006-12-14 | Microsoft Corporation | Flow control for media streaming |
Non-Patent Citations (3)
Title |
---|
D. Shuman, et al., "Energy-efficient transmission scheduling for wireless media streaming with strict underflow constraints", Modeling and Optimization in Mobile Ad Hoc, and Wireless Networks and Workshops, 2008. WIOPT 2008, 6th International Symposium on, IEEE, Apr. 1, 2008, pp. 354-359. |
M. Esteve, et al., "Flow control mechanism with hysteresial techniques", Electronics Letters, IEEE Stevenage, GB, vol. 34, No. 4, Feb. 19, 1998., pp. 332-333. |
PCT Search Report & Written Opinion, Re: Application No. PCT/US2016/045825, dated Nov. 16, 2016. |
Also Published As
Publication number | Publication date |
---|---|
US20170070440A1 (en) | 2017-03-09 |
WO2017039955A1 (en) | 2017-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10033655B2 (en) | Packet prioritization based on client device feedback | |
US11924071B2 (en) | Band steering using deep packet inspection | |
US8819269B2 (en) | Adaptive bit rate method and system using retransmission and replacement | |
US9986062B2 (en) | Quality of service for distribution of content to network devices | |
US10567465B2 (en) | Streaming video over a network | |
US10848433B2 (en) | Method for distributing available bandwidth of a network amongst ongoing traffic sessions run by devices of the network, corresponding device | |
US10306284B2 (en) | ABR adjustment for live OTT | |
CN105684390B (en) | Method and apparatus for reserving bandwidth for self adaptation stream transmission client | |
WO2016089479A1 (en) | Egress rate shaping to reduce burstiness in application data delivery | |
US10659365B2 (en) | Using wireless client for proxy channel scan | |
US9930388B2 (en) | Differential and distributive queuing of video frames | |
US10623464B2 (en) | Data transmission device and data transmission method | |
CA3037303C (en) | Packet prioritization based on packet time stamp information | |
US20210099770A1 (en) | Controlling digital video bandwidth utilization with a virtualized communication hub | |
US9807434B2 (en) | Dynamic bandwidth allocation for non-real time operations | |
CN105721901A (en) | Video transcoder adaption method, device and system | |
US20170111249A1 (en) | Detection and management of error conditions for wirelessly delivered multimedia content | |
US10069733B2 (en) | Managing Ethernet backpressure at a network device | |
WO2018021950A1 (en) | Device and method for controlling media streaming from a server to a client | |
WO2018002687A1 (en) | Estimating a buffer level in a playout device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ARRIS ENTERPRISES, INC., GEORGIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:HARDT, CHARLES;LUMBATIS, KURT ALAN;HOWARD, BRADLEY THOMAS;SIGNING DATES FROM 20150825 TO 20150903;REEL/FRAME:036493/0542 |
|
AS | Assignment |
Owner name: ARRIS ENTERPRISES LLC, PENNSYLVANIA Free format text: CHANGE OF NAME;ASSIGNOR:ARRIS ENTERPRISES INC;REEL/FRAME:041995/0031 Effective date: 20151231 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: ARRIS ENTERPRISES LLC, GEORGIA Free format text: CHANGE OF NAME;ASSIGNOR:ARRIS ENTERPRISES, INC.;REEL/FRAME:049586/0470 Effective date: 20151231 |
|
AS | Assignment |
Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATE Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:ARRIS ENTERPRISES LLC;REEL/FRAME:049820/0495 Effective date: 20190404 Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: TERM LOAN SECURITY AGREEMENT;ASSIGNORS:COMMSCOPE, INC. OF NORTH CAROLINA;COMMSCOPE TECHNOLOGIES LLC;ARRIS ENTERPRISES LLC;AND OTHERS;REEL/FRAME:049905/0504 Effective date: 20190404 Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: ABL SECURITY AGREEMENT;ASSIGNORS:COMMSCOPE, INC. OF NORTH CAROLINA;COMMSCOPE TECHNOLOGIES LLC;ARRIS ENTERPRISES LLC;AND OTHERS;REEL/FRAME:049892/0396 Effective date: 20190404 Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CONNECTICUT Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:ARRIS ENTERPRISES LLC;REEL/FRAME:049820/0495 Effective date: 20190404 |
|
AS | Assignment |
Owner name: WILMINGTON TRUST, DELAWARE Free format text: SECURITY INTEREST;ASSIGNORS:ARRIS SOLUTIONS, INC.;ARRIS ENTERPRISES LLC;COMMSCOPE TECHNOLOGIES LLC;AND OTHERS;REEL/FRAME:060752/0001 Effective date: 20211115 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: APOLLO ADMINISTRATIVE AGENCY LLC, NEW YORK Free format text: SECURITY INTEREST;ASSIGNORS:ARRIS ENTERPRISES LLC;COMMSCOPE TECHNOLOGIES LLC;COMMSCOPE INC., OF NORTH CAROLINA;AND OTHERS;REEL/FRAME:069889/0114 Effective date: 20241217 |