Mobile carriers can reduce the amount of network capacity used to support video by identifying video flows and limiting the amount of bandwidth available to these flows. These adjustments, sometimes referred to as throttling, may be used to apply parameters for a subscriber's account to a particular video flow and to manage network resources. Third party video services use adaptive techniques to determine how much bandwidth is available for a flow and adjust the video resolution to fit in the available bandwidth.
The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
For example, as shown in
Throttling of video (or other data) flows can be effective, but does not make optimal use of network resources. These throttling techniques rely on detection of network conditions by content platform 120 and subsequent adaptation of flows by content platform 120 to provide an adequate user experience. As described further herein in connection with
Instead of relying exclusively on throttling the rate of each individual data flow to reduce the data volume, implementations described herein allow network 130 and content platform 120 to proactively cooperate to limit video resolution based on a subscriber's parameters. Assuming there is cooperation between content platform 120 and network 130, an acceptable video resolution can be provided, shown as flow F2 in
Thus, systems and methods described herein allow a mobile carrier to inform a content provider of data flow restrictions associated with a subscriber's account so that the carrier and the content provider can cooperate in real time or near real time to limit data flows without resorting to the inefficiencies of throttling by the carrier. According to implementations described herein, a network device of a mobile carrier network sends, to a third-party content platform, a client hello message including a first dedicated subscription parameter extension. The first dedicated subscription parameter extension indicates one or more subscription parameters for a data flow between a UE device that originated the client hello message and the third-party content platform. The network device receives, from the third-party content platform, a server hello message including a second dedicated subscription parameter extension. The second dedicated subscription parameter extension confirms the third-party content platform will abide by the one or more subscription parameters. The network device generates, based on the one or more subscription parameters, a policy enforcement rule for the data flow that relies, at least in part, on cooperation of the third-party content platform. As described further herein, the network device may apply the policy enforcement rule for the data flow between the UE device and the content platform to optimize traffic tuning more efficiently than can be achieved with conventional techniques, such as throttling.
UE 110 may include a communication device configured to communicate with a base station (e.g., base station 215) via wireless signals. For example, UE 110 may include a portable communication device (e.g., a mobile phone, a smart phone, a global positioning system (GPS) device, and/or another type of wireless device); a personal computer or workstation; a server device; a laptop, tablet, or another type of portable computer; a media playing device; a portable gaming system; a machine-type communication (MTC) device; an Internet-of-Things device; and/or any type of mobile device with wireless communication capability. In one implementation, UE 110 may include a client-side application that enables UE 110 to communicate with, for example, content platform 120 and present information received from content platform 120 to a user (not illustrated). The client-side application may permit a user of UE 110 to log into an account, access catalog information, submit an order, and/or consume live streaming or downloaded video content (e.g., from content platform 120).
Content platform 120 may include one or more network or computational devices that provide content (e.g., multimedia content, video content, etc.) over IP network 250. Content platform 120 may be any type of web server, media repository, streaming source, network device, etc., that can provide UE 110 with content which is requested by a user. Content platform 120 may provide any form of video, media, text, audio, image, etc., which can be requested by the user through UE 110. In one aspect, content device 120 may be associated with a third-party video service, including Internet-based video streaming services such as NETFLIX, HULU, AMAZON, YOUTUBE, VIMEO, VUDU, etc. Moreover, content platform 120 may provide simultaneous broadcast of data to a plurality of UEs 110 using simulcast and/or multicast techniques, such as, for example, any type of multimedia broadcast multicast service (MBMS) and/or evolved MBMS (eMBMS) over long-term evolution (LTE) standards. In one embodiment, UE 110 may provide a request for multimedia content or data to content platform 120 over wireless network 205. The request may be initially received by access network 210, and then forwarded through SGW 230 and PGW 235 to content platform 120 via IP network 250.
Wireless network 205 may be a long term evolution (LTE) 4G wireless network and may include one or more devices that are physical and/or logical entities interconnected via standardized interfaces. Wireless network 205 provides wireless packet-switched services and wireless IP connectivity to user devices (such as UE 110) to provide, for example, data, voice, and/or multimedia services. In other implementations, wireless network 205 may include an LTE Advanced (LTE-A) access network and/or any other network, such as a fifth generation (5G) access network.
Access network 210 may include one or more base stations 215. UE device 110 may wirelessly communicate with access network 210 via base station 215 when UE device 110 is located within the geographic area serviced by base station 215. In one implementation, access network 210 may use the Evolved Universal Terrestrial Radio Access (E-UTRA) air interface to wirelessly communicate with devices.
Base station 215 may include one or more devices and other components having functionality that allow UE 110 to wirelessly connect to access network 210210. Base station 215 may interface with ePC 220 via an S1 interface, which may be split into a control plane S1-MME interface 212 and a data (or user) plane S1-U interface 214. S1-MME interface 212 may interface with MME device 225. S1-MME interface 212 may be implemented, for example, with a protocol stack that includes a non-access stratum (NAS) protocol. S1-U interface 214 may interface with SGW 230 and may be implemented, for example, using a General Packet Radio Service Tunneling Protocol version 2 (GTPv2).
ePC 220 may allow the delivery of Internet Protocol (IP) services to UE device 110, and may interface with other external networks. ePC 220 may include one or more server devices and/or network devices, or other types of computation or communication devices. As shown in
MME device 225 (also simply referred to as MME 225) may include a network device to implement control plane processing for ePC 220. For example, MME 225 may implement tracking and paging procedures for UE 110, may activate and deactivate bearers for UE 110, may authenticate a user of UE 110, and may interface to non-LTE radio access networks. A bearer may represent a logical channel with particular quality of service (QoS) requirements. MME 225 may also select a particular SGW 230 for a particular UE 110. A particular MME 225 may interface with other MME devices 225 (not shown) in ePC 220 and may send and receive information associated with UEs, which may allow one MME device to take over control plane processing of UEs serviced by another MME device, if the other MME device becomes unavailable.
SGW device 230 (also simply referred to as SGW 230) may include a network or computational device that provides an access point to and from UE 110, may handle forwarding of data packets for UE 110, and may act as a local anchor point during handover procedures between eNBs 215. SGW 230 may interface with PGW 235 (e.g., through an S5/S8 interface).
PGW device 235 (also simply referred to as PGW 235) may include a network or computational device that functions as a gateway to IP network 250. A particular UE 110, while shown in
PCRF device 240 (also simply referred to as PCRF 240) may include a network or computational device that provides policy control decision and flow based charging control functionalities. PCRF 240 may provide network control regarding service data flow detection, gating, QoS and flow based charging, etc. PCRF 240 may determine how a data stream is treated once mapped to a bearer, and may ensure that the user plane traffic mapping and treatment is in accordance with a user's subscriber profile. In one implementation, PCRF 240 may communicate with PGW 235 using a Gx interface.
IP network 250 may include one or multiple networks of one or multiple types. For example, IP network 250 may include the Internet, the World Wide Web, an IP Multimedia Subsystem (IMS) network, a cloud network, a wide area network (WAN), a metropolitan area network (MAN), a service provider network, a private IP network, some other type of backend network, and so forth. IP network 250 may include, for example, an IMS network, which may provide data and multimedia services to UE 110, based on Session Initiation Protocol (SIP).
Devices and networks of environment 200 may be interconnected via wired and/or wireless connections. While
Still referring to
Furthermore, since PGW 235 is limiting the flow speed to an artificially low rate when throttling, the content platform 120 takes longer to transmit the entire video file to UE 110. Contrary to popular belief, video streaming is not usually implemented via real-time streaming. Instead, content platform 120 determines the available bandwidth, selects a video resolution, and then transmits the entire video file to UE 110 as quickly as possible. UE 110 then buffers the video and plays it out in real time for the user to watch. For the hypothetical example of a one-hour 1080p video, the video provider will transmit the 4.5 GB file to the user as quickly as possible. If access network 210 (e.g., a 4G LTE network) can achieve sustainable downlink transmit speeds of 20 Mbps (which is an attainable level of performance for 4G), the entire one-hour file could be transmitted to UE 110 in just a half hour (even though it would take the user an entire hour to watch the video). However, when PGW 235 limits the video flow throughput, the time required to transmit the entire file increases significantly. For the hypothetical 720p file of 1.8 GB, content platform 120 will take an hour to download the file to UE 110. Since each throttled file now takes longer to download, content platform 120 must support more simultaneous video downloads, and this degrades the capacity of content platform 120.
In a similar manner, the artificially limited flow speed also means that access network 210 will take longer to transmit the video file to the UE 110 (e.g., than if no throttling were applied). While the hypothetical 4.5 GB 1080p file could be transmitted in a half hour without throttling (assuming 20 Mbps throughput over access network 210), the 1.8 GB 720p file will take an hour to transmit with throttling to 4 Mbps. Even though the overall data volume is lower for the throttled case, the amount of time during which UE 110 will require a radio bearer is twice as long. This increased dwell time on access network 210 will actually increase the network cost for the carrier, decreasing the effectiveness of the video throttling solution.
As a another inefficiency of throttling in addition to those above, from the customer point of view, battery life of UE 110 may also be shortened and lead to degradation of UE 110 performance, since UE 110 would need to transmit and receive data over access network 210 for a longer period of time to transfer the video file.
Systems and methods described herein overcome the above-described inefficiencies of throttling in network environment 200 by enabling communication between PGW 235 and content platform 120 that allows for cooperative adjustment of video resolution in data flows. Still referring to
PGW 235 may add the subscription parameters extension to an application-generated client “hello” message that passes through the PGW 235 before being routed to content platform 120. PGW 235 analyzes each packet that passes through, and if PGW 235 determines that the client hello message is associated with a particular video application, PGW 235 can insert the subscriber's allowed video resolution (e.g., based on parameters obtained from PCRF 240) into the subscription parameters extension field in the client hello message. Content platform 120 can use the information in the subscription parameters extension to set the video resolution for the current session and then can also include a subscription parameters extension field in the server “hello” that is sent back to the application. The subscription parameters extension from content platform 120 may be used to acknowledge that content platform 120 has received the carrier's recommendation (from PGW 235) and that content platform 120 intends to accept the video resolution request.
Using the previous example in which the user is only allowed to use 720p video resolution, according to embodiments described herein, UE 110 receives the same 720p video experience it would receive if throttling were applied, but now content platform 120 can transmit the 720p file at full speed (e.g., up to 20 Mbps). Content platform 120 can complete the video file download much more quickly (e.g., about 12 minutes for a 1.8 GB 720p file at 20 Mbps), reducing the service time on the video servers. Also, wireless network 205 will benefit significantly since UE 110 only needs to use a radio bearer over access network 210 for 12 minutes instead of a full hour. Both wireless network 205 and content platform 120 use finite network resources in an efficient manner, and UE 110 provides the user with the same quality of experience as a throttled delivery with lower battery drain.
Device 300 may include a bus 310, a processor 320, a memory 330 with software 335, an input component 340, an output component 350, and a communication interface 360. Although
Bus 310 may include a path that permits communication among the components of device 300. Processor 320 may include a processor, a microprocessor, or processing logic that may interpret and execute instructions. Memory 330 may include any type of dynamic storage device that may store information and instructions, for execution by processor 320, and/or any type of non-volatile storage device that may store information for use by processor 320.
Software 335 includes an application or a program that provides a function and/or a process. Software 335 is also intended to include firmware, middleware, microcode, hardware description language (HDL), and/or other form of instruction. By way of example, with respect to the network elements that communicate using the designated TLS extensions described herein, these network elements may be implemented to include software 335. Additionally, for example, UE 110 may include software 335 (e.g., a client application to communicate with content platform 120, etc.) to perform tasks as described herein.
Input component 340 may include a mechanism that permits a user to input information to device 300, such as a keyboard, a keypad, a button, a switch, etc. Output component 350 may include a mechanism that outputs information to the user, such as a display, a speaker, one or more light emitting diodes (LEDs), etc.
Communication interface 360 may include a transceiver that enables device 300 to communicate with other devices and/or systems via wireless communications, wired communications, or a combination of wireless and wired communications. For example, communication interface 360 may include mechanisms for communicating with another device or system via a network. Communication interface 360 may include an antenna assembly for transmission and/or reception of radio frequency (RF) signals. For example, communication interface 360 may include one or more antennas to transmit and/or receive RF signals over the air. Communication interface 360 may, for example, receive RF signals and transmit them over the air to UE 110, and receive RF signals over the air from UE 110. In one implementation, for example, communication interface 360 may communicate with a network and/or devices connected to a network. Alternatively or additionally, communication interface 360 may be a logical component that includes input and output ports, input and output systems, and/or other input and output components that facilitate the transmission of data to other devices.
Device 300 may perform certain operations in response to processor 320 executing software instructions (e.g., software 335) contained in a computer-readable medium, such as memory 330. A computer-readable medium may be defined as a non-transitory memory device. A non-transitory memory device may include memory space within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory 330 from another computer-readable medium or from another device. The software instructions contained in memory 330 may cause processor 320 to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
Device 300 may include fewer components, additional components, different components, and/or differently arranged components than those illustrated in
Referring to
In one embodiment, client application 410 may include subscription parameters 412 and an extension generator 414. Subscription parameters 412 may include parameters associated with content platform 120. For example, subscription parameters 412 may include video resolution parameters or charging parameters for streaming video content. According to one implementation, subscription parameters 412 may be provided to client application 410 using application program interface (API) calls to ePC 220. The APIs may be supplied to application developers via software development kits (SDKs) provided by the mobile carrier. Extension generator 414 may generate extensions (e.g., dedicated TLS extensions for subscription parameters as described further herein) to initiate dynamic policies based on subscription parameters 412.
Referring to
Dynamic rule generator 430 may detect a subscription parameter extension in a client hello message from UE 110 and/or a subscription parameter extension in a server hello message from content platform 120. Dynamic rule generator 430 may decrypt, validate, and/or interpret codes in the subscription parameter extensions and create/apply rules to implement the codes in the subscription parameter extensions. For example, in one implementation, dynamic rule generator 430 may receive a client hello message with a subscription parameter extension from UE 110 and later receive a confirmation hash of the subscription parameters in a server hello message with a subscription parameter extension from content sever 120. Dynamic rule generator 430 may use the confirmed subscription parameters to dynamically generate a rule to enforce the subscription parameters at PGW 235. Dynamic rules are described further in connection with, for example,
Rules 440 may include locally-stored rules generated by dynamic rule generator 430 or other policy/profile-based rules retrieved from another network device (e.g., PCRF 240, etc.) that pertain to UEs 110.
Although
As shown in
PGW 235 may inspect packets traversing from UE 110 to content platform 120. When PGW 235 determines that client hello message 505 is associated with a particular third-party video application (e.g., client application 410), PGW 235 may obtain (e.g., from PCRF 240) the subscription parameters for the data flow and insert the subscriber's allowed video resolution into a dedicated extension field (referred to herein as a “subscription parameters extension” or “SubsPar extension 510”) that is added to the client hello message 505. SubsPar extension 510 is described further in connection with
Type parameter field 610 may include a dedicated extension type value that indicates SubsPar extension 510. For example, type parameter field may include an extension type value that is assigned by the Internet Assigned Numbers Authority (IANA) and included in an upcoming IETF RFC. Length parameter field 620 may include a length (e.g., number of characters) used in all or part value field 630.
In one implementation, parameter value field 630 may include a video resolution value 631 (e.g., “480p,” “720p,” “1080p,” etc., where each value represents the number of vertical pixels/lines in each video frame) that corresponds to the subscriber's allowed video resolution for UE 110. In other implementations, parameter value field may include another type of parameter that could be used by content platform 120 to tune client application 410 behavior for optimal user experience. Value field 630 may also include a nonce 632 (e.g., a randomly generated alpha-numeric string) for encryption purposes as described further below.
Returning to
Content platform 120 may receive client hello message 505 with SubsPar extension 510. Content platform 120 may use the information in SubsPar extension 510 to set the video resolution for the session. The video resolution may be, for example, a lower resolution than the default resolution for content platform 120. As part of the TLS handshake protocol, content platform 120 may provide a server hello message 520 to UE 110 (e.g., application 410). In response to SubsPar extension 510, content platform 120 may also include a SubsPar extension 525 with server hello message 520. SubsPar extension 525 may provide an acknowledgement (e.g., to PGW 235) that content platform 120 has received the carrier's video resolution recommendation in SubsPar extension 510 and that content platform 120 intends to adhere to the video resolution recommendation. SubsPar extension 525 is described further in connection with
Value field 635 may include a hash value 636 generated from the video resolution value 631 and nonce 632 of value field 630 or another type of digital signature. Hash value 636 may be generated, for example, using a hash algorithm and private key previously exchanged with PGW 235.
Returning again to
As shown at reference 530, PGW 235 may receive server hello message 520 with SubsPar extension 525. PGW 235 may remove SubsPar extension 525 from server hello message 520 and forward server hello message 520 (without SubsPar extension 525) to UE 110. Thus, the carrier-to-video-service communication is not exposed to the end user.
When PGW 235 receives server hello message 520 with SubsPar extension 525, PGW 235 will also validate the digital signature (e.g., hash 636 in SubsPar extension 525) applying the same algorithm and private key used by content platform 120, and will accept the content platform 120 response in SubsPar extension 525 only if the digital signature is confirmed to be correct. This will prove that content platform 120 received the correct message from the PGW 235, and that the SubsPar extension 525 in server hello message 520 could only have been generated by content platform 120.
Assuming the digital signature is validated and content platform 120 has confirmed it will limit the video resolution as per the carrier specification, PGW 235 may remove the throttle value 515 that was applied when client hello message 505 was detected. In one implementation, PGW 235 may generate a dynamic rule (e.g., that overrides a default throttling rule) to stop throttling for the particular session. Content platform 120, as shown at reference 535, may then provide a non-throttle video flow with the requested resolution for the subscriber's account. Thus, by cooperating with the subscription parameters from PGW 235, content platform 120 may use the requested video resolution to transmit the entire video file to UE 110 as quickly as possible. UE 110 may then buffer the video and present in real time for the user to watch.
If content platform 120 does not support the extension-based communication or if content platform 120 chooses not to honor the video resolution request, the lack of SubsPar extension 525 in server hello message 520 will inform PGW 235 that content platform 120 is not cooperating. Thus, normal video throttling procedures (e.g., triggered in response to client hello message 505) would continue.
The communications and signals explained and illustrated in
As shown in
Type parameter field 810 may include a dedicated extension type value that indicates SubsPar extension 810, similar to type parameter field 610 described above. Length parameter field 820 may include a length (e.g., number of characters) used in all or part value field 830.
Parameter value field 830 may include an action code 831, source ports 833, and a timer 834. Value field 830 may also include a nonce 832 for encryption purposes.
Action code 831 may indicate a charging action, a metering action, sponsoring information, etc., for the data flow associated with a session. Action code 831 may include a code (e.g., an alphanumeric code) to indicate, for example, sponsored data (e.g., that is not billed to a subscriber's plan), a variation from a subscriber's default charging parameters, or another non-standard charging action. Source ports 833 may indicate particular ports (e.g., ports “5000:5005”) to be used for the requested video session. Timer 834 may include a time limit (e.g., 15 minutes, 30 minutes, etc.) to which action code 831 and source ports 833 apply.
Returning to
Content platform 120 may receive client hello message 705 with SubsPar extension 710. Content platform 120 may use the information in SubsPar extension 710 to confirm the subscriber parameters for the session. As part of the TLS handshake protocol, content platform 120 may provide a server hello message 720 to UE 110 (e.g., application 410). In response to SubsPar extension 710, content platform 120 may also include a SubsPar extension 725 with server hello message 720. SubsPar extension 725 may provide an acknowledgement that content platform 120 has received the charging code, ports, and time limit in SubsPar extension 710 and that content platform 120 intends to adhere to the settings in SubsPar extension 710. SubsPar extension 725 is described further in connection with
Value field 835 may include a hash value 836 generated from the action code 831, nonce 832, source ports 833, and timer 834 of value field 830 or another type of digital signature. Hash value 836 may be generated, for example, using a hash algorithm and private key previously exchanged with PGW 235.
Returning again to
Assuming the digital signature is validated, PGW 235 can act on the information in SubsPar extension 710/SubsPar extension 725 to apply or adjust setting or policy rules 730 for the subscriber. For example, PGW 235 may set up a dynamic charging rule for the session to use the ports identified in source ports 833 and charge data that uses those ports according to action code 831 (e.g., PGW 235 may assign a rating group for traffic to the ports) for the duration of timer 834.
PGW 235 may forward server hello 720 with SubsPar extension 725 to UE 110. After completion of the TLS handshake, content platform 120, as shown at reference 735, may provide a video flow using the requested ports, and PGW 235 may charge data for the video flow according to the parameters for rule 730. Thus, the trusted client application 410 on UE 110 may be used to initiate a rule that is dynamically generated and enforced by PGW 235 (e.g., in contrast with PGW enforcing a stored rule from a PCRF).
To deactivate a pending rule, the trusted client application 410 on UE 110 may initiate communications similar to those described in connection with
The communications and signals explained and illustrated in
Referring to
Process 900 may further include receiving a server hello message with a dedicated subscription parameter extension from the third-party content platform (block 920). For example, in response to client hello message 505 with the appended SubsPar extension 510, PGW 235 may receive server hello message 520 with SubsPar extension 525 from content platform 120. In another implementation, in response to client hello message 705 with the append SubsPar extension 710, PGW 235 may receive server hello message 720 with SubsPar extension 725 from content platform 120.
Process 900 may also include determining if the dedicated subscription parameter extension in the server hello message is valid (block 930). For example, PGW 235 may inspect SubsPar extension 525 to determine if content platform 120 agrees to abide by the subscription parameters in SubsPar extension 510. In one implementation, PGW 235 may validate hash 636 to confirm that content platform 120 received the correct message from PGW 235, and that the SubsPar extension 525 in server hello message 520 was actually generated by content platform 120. In another implementation, PGW 235 may inspect SubsPar extension 725 to determine if content platform 120 agrees to abide by the subscription parameters in SubsPar extension 710.
If the dedicated subscription parameter extension in the server hello message is not valid (block 930—No), process 900 may include using default enforcement rules for the subscriber parameters (block 940). For example, if content platform 120 does not support the extension-based communication or if content platform 120 chooses not to honor the video resolution request in SubsPar extension 510, PGW 235 may apply default rules/policies/user profile information (e.g., obtained from PCRF 240) for throttling or otherwise enforcing video resolution limits for the session. Similarly, if content platform 120 chooses not to honor the subscription parameters in SubsPar extension 710, PGW 235 may apply default rules (e.g., obtained from PCRF 240) for charging, metering, or otherwise managing data flows for the session.
If the dedicated subscription parameter extension in the server hello message is valid (block 930—Yes), process 900 may include generating a dynamic policy enforcement rule for the session (block 950) and enacting the dynamic policy enforcement rule during the session (block 960). For example, PGW 235 may remove the throttle value 515 that was applied when client hello message 505 was detected. In one implementation, PGW 235 may generate a dynamic rule (e.g., that overrides a default throttling rule) to stop throttling for the particular session. PGW 235 will then permit content platform 120 to provide a non-throttle video flow with the requested resolution for the subscriber's account. In another implementation, PGW 235 can act on the information in SubsPar extension 710/SubsPar extension 725 to generate dynamic policy rules 730 for the subscriber's session.
The foregoing description of implementations provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. For example, while a series of blocks have been described with regard to
Certain features described above may be implemented as “logic” or a “unit” that performs one or more functions. This logic or unit may include hardware, such as one or more processors, microprocessors, application specific integrated circuits, or field programmable gate arrays, software, or a combination of hardware and software.
To the extent the aforementioned embodiments collect, store or employ personal information provided by individuals, it should be understood that such information shall be used in accordance with all applicable laws concerning protection of personal information. Additionally, the collection, storage and use of such information may be subject to consent of the individual to such activity, for example, through well known “opt-in” or “opt-out” processes as may be appropriate for the situation and type of information. Storage and use of personal information may be in an appropriately secure manner reflective of the type of information, for example, through various encryption and anonymization techniques for particularly sensitive information.
Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another, the temporal order in which acts of a method are performed, the temporal order in which instructions executed by a device are performed, etc., but are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term) to distinguish the claim elements.
No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
In the preceding specification, various preferred embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
20100040134 | Sun | Feb 2010 | A1 |
20100149301 | Lee | Jun 2010 | A1 |
20100205293 | Hu | Aug 2010 | A1 |
20110200094 | Kalra | Aug 2011 | A1 |
20130144969 | Holden | Jun 2013 | A1 |
20150195746 | Franklin | Jul 2015 | A1 |
20150256581 | Kolhi | Sep 2015 | A1 |
20160315867 | Hafez | Oct 2016 | A1 |
20170150332 | Palanisamy | May 2017 | A1 |
20180331884 | Shaw | Nov 2018 | A1 |
Number | Date | Country | |
---|---|---|---|
20190268808 A1 | Aug 2019 | US |