1. Technical Field
The present application generally relates to the prioritization of packets in a network communications protocol suite. In particular, the present application is related to the selective prioritizing of high priority traffic packets using the packet data convergence protocol of the long-term environment (LTE) standard.
2. Background
Many types of communication devices exist that enable users to wirelessly communicate data with each other. Examples of such communication devices include cell phones, VoIP (voice over Internet protocol) phones, portable computers, etc. LTE (long term evolution) is an example of a standard for wireless communication of high speed data between communication devices. LTE is considered to be a fourth generation (4G) communication standard, and is a successor to third generation (3G) and second generation (2G) mobile communication standards. LTE may be implemented in a multilayer computer networking protocol suite or stack in a communication device. A packet data convergence protocol (PDCP) layer is an example of a protocol layer included in the LTE protocol stack. Among other things, PDCP performs IP (Internet protocol) packet header compression and decompression, and maintenance of packet sequence numbers. TCP (transmission control protocol) is a networking protocol that is frequently used in communication devices, including devices operating according to the LTE standard, to wirelessly communicate data packets.
Communications between communications devices are often carried out over asymmetrical communication links. In many asymmetrical communications, the upload data rate available to transmit data from a mobile communication device to a base station (e.g., a cell tower) is lower than the download data rate used to transmit data from the base station to the user device. One well-documented problem that results from this is that the download performance can be slow when large files are being uploaded from a communication device to the base station. Each time a data packet is downloaded to the communication device from a TCP server through the base station, the communication device generates and transmits a corresponding TCP acknowledgement (ACK) packet. The TCP ACK packet informs the server that the data packet was received by the communication device without errors. The server has to receive the TCP ACK packet for the prior data packet before the server sends a next data packet for download. However, if a large file is being uploaded from the user device in the form of large packets (e.g., 1400 bytes), the relatively small TCP ACK packets (e.g., 40 bytes) have to be sent to the server at some point between these large packets. The larger the upload packet size, the lower the frequency at which these TCP ACK packets are sent. As such, the rate at which the server receives the TCP ACK packets is reduced, leading to delays in the server sending the next packets to the communication device. This reduces the overall data rate for downloading data to the communication device.
Methods, systems, and apparatuses are described for selective prioritization of uplink data packets in a communications device substantially as shown in and/or described herein in connection with at least one of the figures, as set forth more completely in the claims.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the present application and, together with the description, further serve to explain the principles involved and to enable a person skilled in the relevant art(s) to make and use the disclosed embodiments.
The subject matter of the present application will now be described with reference to the accompanying drawings. In the drawings, like reference numbers indicate identical or functionally similar elements. Additionally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.
The following detailed description refers to the accompanying drawings that illustrate exemplary embodiments of the present application. However, the scope of the present application is not limited to these embodiments, but is instead defined by the appended claims. Thus, embodiments beyond those shown in the accompanying drawings, such as modified versions of the illustrated embodiments, may nevertheless be encompassed by the present application.
The detailed description describes steps corresponding to the flowcharts depicted in the accompanying drawings. It will be recognized that such steps can be performed in any order unless otherwise stated in the application.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
In general, terminology may be understood at least in part from usage in context. For example, the term “one or more” as used herein, depending at least in part upon context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe combinations of features, structures or characteristics in a plural sense. In addition, the term “based on” may be understood as not necessarily intended to convey an exclusive set of factors and may, instead, allow for existence of additional factors not necessarily expressly described, again, depending at least in part on context.
Numerous embodiments are described herein for prioritizing particular data packets for being transmitted from a communications device to a base station (e.g., uplink data packets). Among other things, such embodiments may enable a higher volume of downlink data to be received by the communications device by enabling acknowledgement packets for received data packets to be transmitted from the communication device at an increased frequency, thereby enabling a server for the data packets to provide next data packets at an increased frequency.
For instance, example embodiments are capable of prioritizing data packets by reserving high priority packet sequence numbers for the data packets. Sequence numbers that are assigned to data packets indicate an order in which the data packets are to be transmitted from a communications device. In an embodiment, sequence numbers may be reserved for later assignment to data packets deemed to be high priority, even while sequence numbers before and after the reserved sequence numbers are currently assigned to other data packets.
Further embodiments are capable of prioritizing relatively high priority packets by encrypting no more than the estimated amount of data that may fill a single uplink allocation. A single uplink allocation is an estimated amount of data that can be sent from a user device to be received by a base station in a particular communication environment at a particular point in time. For instance, the amount of data to be included in a single uplink allocation may be estimated based on the difference between an amount of power that the base station transmits to the user device and the amount of power that the user device receives from the base station at a particular time.
Further embodiments are capable of prioritizing relatively high priority packets by moving the packets ahead of other lower priority packets that have already been encrypted and are stored for transmission in a queue. The high priority packets are encrypted (e.g., using sequence numbers that were used by the encrypted lower priority packets), one or more of the unsent lower priority packets in the queue are re-encrypted (e.g., using unused sequence numbers), and the newly encrypted high priority packets are stored for transmission ahead of the re-encrypted lower priority packets in the queue.
Techniques described herein for prioritizing relatively high priority packets offer a variety of benefits as compared to conventional techniques. For example, the techniques described herein provide the ability to prioritize higher priority packets over lower priority packets. In accordance with the examples presented in this application, packets mapped to a single instance of a packet data convergence protocol (PDCP) entity, a PDCP being a protocol layer of a (long term evolution) LTE communications system, may be prioritized in a manner that fulfills the requirements of the LTE standard. In other embodiments, packets may be prioritized as described herein in other wireless communication standards that are currently known or to be developed in the future.
Numerous embodiments described herein include the encrypting of data packets (e.g., using encryption logic). Such data packets may be encrypted in a PDCP layer or other layer in a manner as would be known to persons skilled in the relevant art(s), according to any suitable encryption technique.
Numerous exemplary embodiments are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, disclosed embodiments may be combined with each other in any manner.
Embodiments may be implemented in various types of communication systems. For instance,
As shown in
User devices 102, 104, . . . 106 are computing devices that are capable of communicating with base station 108 and server(s) 112. Three user devices are shown in
Server(s) 112 are processing systems that are capable of communicating with user devices 102, 104, . . . 106. Server(s) 112 are configured to execute computer programs that provide information to users in response to receiving requests from the users. For example, the information may include documents (e.g., Web pages, images, video files, etc.), data, and/or any other suitable type of information. In accordance with some example embodiments, server(s) 112 are configured to host respective Web sites, so that the Web sites are accessible to users of communications system 100.
User devices, 102, 104, 106, etc., and base station 108 may be implemented in various ways in embodiments. For instance,
A layer is a logical grouping of communications functions. The layers of user device 202 are arranged in a stack (e.g., in a protocol stack of a modem included in user device 202) that includes applications 204 and 206 (an application layer), a transmission control protocol (TCP) layer 210, a selective-prioritization enabled PDCP layer 216, a radio link control/medium access control (RLC/MAC) layer 222, and a physical layer 226. Each respective layer in the stack can communicate with the higher layer above it and the lower layer below it, if indeed there is a higher or lower layer adjacent to a respective layer. Further layers that are not shown in
The application layer represents the highest layer of the protocol stack, meaning that applications 204 and 206 are either the closest to interacting with, or interact directly with the end user. For instance, application 204 is a type of application that relies on TCP to manage the transfer of information to a remote computing device. As such, application 204 sends and receives data 208 to/from TCP layer 210. Application 204 represents any computer application (e.g., an application, an mobile “app”, etc.) that can operate on a computing device. For example, application 204 could be an app for interfacing with a social network application (e.g., Facebook® operated by Facebook, Inc. of Palo Alto, Calif., and Google+® operated by Google, Inc. of Mountain View, Calif., etc.), a web browser (e.g., Internet Explorer®, developed by Microsoft Corp. of Redmond, Wash., Mozilla Firefox®, developed by Mozilla Corp. of Mountain View, Calif., Safari®, developed by Apple Inc. of Cupertino, Calif., and Google® Chrome of Mountain View, Calif., etc.), a mapping tool (e.g., Yahoo!® Maps, MapQuest®, and Google® Maps, etc.), or any other mobile or other type of application that can operate on user device 202 and relies on TCP. Data 208 represents any data that may be sent by an application over a network.
TCP layer 210 transmits (sends) and receives data 208 to and from application 204. TCP layer 210 also sends and receives data 212 and a TCP acknowledgment (TCP ACK) packet 214 to selective-prioritization enabled packet PDCP layer 216. In accordance with embodiments described herein, TCP layer 210 may manage the transfer of data between application 204 and a remote computing device (not shown) accessible via a wireless connection.
Upon receiving data 212 from the PDCP layer 216, TCP layer 210 may forward the data to application 204 in data 208, or visa-versa. TCP layer 210 may also send a TCP ACK packet 214 via PDCP layer 216, RLC/MAC layer 222, and PHY layer 226 to the server that originated data 212, confirming that data 212 was received from the server by TCP layer 210 without error. In some embodiments, the server will not send additional data to user device 202 until the server receives TCP ACK packet 214 for prior data transmitted to user device 202 by the server. Similarly, TCP layer 210 may also wait to receive a TCP ACK packet 214 via PDCP layer 216 when TCP layer 210 is sending data to a remote server. The TCP ACK packet confirms that data 212 was sent by TCP layer 210 without error. In some embodiments, the TCP layer 210 will not send additional data to the remote server until TCP layer 210 receives a TCP ACK packet.
Application 206 is a type of application that does not require TCP to manage the transfer of information to a remote computing device, and may instead use, for example, user datagram protocol (UDP, not shown in
At least in part, PDCP layer 216 performs compression and decompression of data packets (including encryption and decryption), as well as the assignment and maintenance of sequence numbers for data packets, as known to persons skilled in the relevant art(s). PDCP layer 216 communicates with higher layers in the protocol stack by sending and receiving data 212 and TCP ACK packets 214 to and from TCP layer 210, and sending and receiving data 218 to and from application 206. PDCP layer 216 also communicates with lower layers by sending and receiving packets 220 with RLC/MAC 222. In embodiments, PDCP layer 216 may be configured to selectively prioritize information, including data 212 and 218 and TCP ACK packets 214, before sending the information to RLC/MAC layer 222 via packets 220. In an embodiment, PDCP layer 216 may perform this function for data packets that are mapped to a same bearer.
At least in part, the RLC portion (e.g., sub-layer) of RLC/MAC layer 222 detects packet losses, and handles retransmissions and segmentation, as known to persons skilled in the relevant art(s). The MAC portion (e.g., sub-layer) of RLC/MAC layer 222 performs functions that include mapping and multiplexing of logical channels to transport channels, as is known to persons skilled in the relevant art(s). RLC/MAC layer 222 communicates with higher layers in the protocol stack by sending and receiving packets 220 to and from PDCP layer 216. RLC/MAC 222 sends and receives frames 224 to and from physical layer 226.
Physical layer 226 communicates with higher layers by sending and receiving frames 224 to and from RLC/MAC 222. Physical layer 226 is the lowest layer in the protocol suite of user device 202, managing the physical sending and receiving of frames 228 to base station 236 over antennas 230. As shown in
Frames 228 are communicated between physical layer 226 and a receiver/transmitter of base station 236 over a duplex wireless signal 234. Duplex wireless signal 234 is represented by two double-sided dot-dash arrows between antennas 230 at user device 202 and antennas 232 at base station 236. Antennas 232 are coupled to the receiver/transmitter at base station 236. The transmitters and receivers of physical layer 226 and of base station 236 may utilize any electromagnetic frequency, or set of frequencies, that supports wireless communication to communicate using duplex wireless signal 234.
Base station 236 may also operate an LTE protocol stack similar to the stack shown in
The user device (not shown in
Download data packets 306, 308, and 310 are downloaded to the user device in download stream 304. In the example of
As shown in
In an embodiment, a window of download data packets may be transmitted before waiting to receive a TCP ACK packet. Download data packets 306, 308, and 310 may be included in a window that includes a plurality of download data packets, or may each represent a window that includes a plurality of data packet instead of a single packet. Once an entire window of download data packets has been transmitted, a server may wait to receive TCP ACK packets before transmitting the next packet in a series of download data packets. For example, if a TCP window is negotiated to be 64 packets in size, a server can send 64 download data packets without waiting for TCP ACK packets. If download data packets 0-63 have been transmitted and the server has not received a TCP ACK packet for packet 0, the server will stop sending new packets, and will not send a next packet until a TCP ACK packet is received.
Accordingly, a common problem that users experience with asymmetrical communication in user devices occurs when users upload large data files to a server, such as photos or movie files. The large data files may be sent in a single upload data packet, or divided into a series of smaller upload data packets 312 and 314 for transmission. Because upload data packets 312 and 314 take longer to transmit than download data packets 306, 308 and 310, there is latency introduced in sending TCP ACK packets 316 and 318, which acknowledge the receipt of download data packets 306 and 308 to the server. In the example of
Accordingly, various embodiments are described herein for prioritizing the transmitting of data packets by a user device to enable increased download data rates, among other advantages. The following subsections each describe example embodiments for prioritizing the transmitting of data packets from a user device.
It is noted that flowchart 400, queues 500, and packet prioritization system 600 are sometimes described as follows as if implemented in a PDCP layer of a protocol stack (e.g., PDCP layer 216 shown in
As shown in
For instance, referring to
In
At time t=1, PDCP packets are received at a first receive queue 516 from one or more applications of the user device, to be transmitted from the user device. First receive queue 516 is depicted in
During the t=1 timeframe, the PDCP packets received in first receive queue 516 are assigned PDCP sequence numbers of sequential subset queue 502 by an assignment process 518 (e.g., performed by low priority assignment logic 606 of
Referring back to
For instance, referring to the example of
Thus, according to flowchart 400, one or more sequence numbers, in each sequential subset of sequence numbers, are not assigned to data packets, but are instead held in reserve, even while other preceding and subsequent sequence numbers are assigned to data packets. These reserved sequence numbers may be later assigned to high priority data packets, such as TCP ACK packets. For instance, a reserved sequence number may be assigned to a high priority data packet at a time that the high priority data packet arrives (e.g., at the PDCP layer). The high priority data packet may then be transmitted from the user device in sequence with the other surrounding data packets having assigned sequence numbers, in an order dictated by the assigned sequence numbers, even though some of those other surrounding data packets had their sequence numbers assigned earlier (in step 402).
For instance, in an embodiment, flowchart 400 may include the step of assigning at least one of the second sequence numbers to at least one packet having a second priority, where the second priority is greater than the first priority. For example, in
In the example of
For instance, in a further example, it is possible to determine that a subset of sequence numbers is locked for transmission from a user device to a base station. A sequence number may be locked because the packet previously assigned to the locked sequence number was sent or is already in the process of transmitting, or the locked sequence number may have been reached for transmission with no packet assigned, and may therefore be skipped.
Referring to the example of
The difference between the sequence number positions in the assignment queue to which the RLC lock and the PDCP lock respectively point may be carefully tuned for performance. In one embodiment, the RLC lock and the PDCP lock may be tuned so that the RLC layer is able to serve any uplink allocation provided by the base station without interrupting the processing of PDCP packets that have been assigned to punctured sequence numbers. In another embodiment, tuning the RLC lock and the PDCP lock may depend on the estimated security processing time of the PDCP layer, which can vary from one implementation to another, as will be understood by those skilled in the art(s). The RLC lock and the PDCP lock may also be set to point at the same sequence numbers so that the MAC would occasionally be forced to send only padding bits in response to an uplink grant in order to avoid sending out of order PDCP sequence numbers, as will be understood by those skilled in the relevant art(s).
It will be recognized that
In a further example, each sequential subset may include a single first sequence number and a single second sequence number. In such an example, each subset will include exactly one high priority sequence number and one low priority sequence number. Such an implementation causes low priority packets and high priority packets to be alternated with each other for transmission.
In a further example, each subset may include a single first sequence number and a plurality of second sequence numbers. In such an example, each subset will include one low priority sequence number and two or more high priority sequence numbers. Such an implementation may cause one low priority packet to be transmitted for one or more high priority packets that is/are transmitted.
In a further example, one or more second sequence numbers may be assigned to respective packets based on an uplink data rate and a downlink rate. The uplink rate is the rate at which a packet having the second priority is to be transmitted from the user device to the base station. The downlink data rate is the rate at which downlink packets are transmitted from the base station to the user device. For example, in
For instance, the number of second priority (high priority) sequence numbers may be based on a size of the packets that have the first priority (low priority) in the subset. For example, if the low priority packets tend to be larger sized, a greater number of high priority sequence numbers may be reserved. If the low priority packets tend to be smaller sized, a lower number of high priority sequence numbers may be reserved.
Furthermore, the number of second sequence numbers that are selected for a particular subset may be based on a type of the packets that have the first priority in the subset. For example, the number of queue locations reserved for high priority PDCP packets, or punctures, denoted by “-P2-” in subset queue 502 (
As shown in
For instance, allocation determination logic 1104 may receive a power indicator at the user device in a communication signal from the base station. The power indicator may specify an amount of power at which the base station transmits to the user device. Allocation determination logic 1104 may also determine or measure (e.g., by interacting with the physical layer) the amount of power that the user device receives from the base station at the user device.
In an embodiment, allocation determination logic 1104 may calculate the intensity of user device transmit power for each of several different data allocation sizes. Allocation determination logic 1104 may next determine the minimum user device transmit power value needed to provide the maximum data allocation size. The maximum data allocation size may then be used to determine the largest allocation that the base station can grant the user device. Those skilled in the art(s) will recognize that the user device transmit power may be determined based on the power indicator at the user device from the base station, the data allocation size, and/or other additional parameters (e.g., see 5.1.1.1 of 3GPP TS 36.213).
In an embodiment, allocation determination logic 1104 may determine the minimum user device transmit power value needed to provide the maximum data allocation size at a target error rate. The maximum data allocation size may then be used to determine the largest allocation that the base station can grant the user device. In other words, the estimated amount of data may be the approximated maximum amount of data that the base station is capable of receiving from the user device in the single uplink allocation based on a user device transmit power value and the error rate associated with transmission of the plurality of designated packets from the user device to the base station. For example, the transmission of designated packets at a particular user device transmit power value may be associated with an error rate of 20%, meaning that 20% of the packets sent from the user device may not arrive at the base station.
In an embodiment, this estimated amount of data may be considered to be an approximated maximum amount of data that the base station is capable of receiving from the user device in the single uplink allocation. Using the maximum amount of data may allow the user device to uplink as many packets to the base station as possible, sending uplink data packets at as fast a rate as is possible in the particular current environment.
Referring back to
For example, in an embodiment, packet determination logic 1106 receives high priority packets 1116 when one or more high priority packets are present. If high priority packets are present, packet determination logic 1106 generates a detected HPP indication 1118 to indicate that high priority packets are present.
An available packet queue 802 of
Referring back to
For example, with reference to
In the case where encryption logic 1108 encrypts a single packet, encryption logic 1108 may encrypt an entire packet up to the size of uplink allocation amount 1114. If a packet size is greater than uplink allocation amount 1114, then encryption logic 1108 may encrypt the packet using the entire uplink allocation amount 1114 to send the first part of the packet, sending the rest of the packet in later allocation(s). For example if the uplink allocation amount is 1000 bytes and a single packet to be encrypted in an uplink allocation is 1500 bytes long, encryption logic 1108 may encrypt 1000 bytes in a first allocation, and 500 bytes in a later allocation.
As described above,
Referring back to
For example, with reference to
Referring to the example of
For instance, in the alternative example of
It is noted that in
Thus, according to flowchart 700, a single link allocation may be filled with lower priority packets when no higher priority packets are available, but when higher priority packets are available, such higher priority packets may be used to fill the single link allocation as much as possible (with any remaining space filled with lower priority packets). This helps to ensure that higher priority packets are transmitted from a user device at a higher rate than according to conventional techniques. When the higher priority packets include TCP ACK packets, this enables as many TCP ACK packets as are available to be used to fill the single link allocation (with other high priority packets, and optionally low priority packets, used to fill any remaining allocation space). As such, a server transmitting data packets to the user device will receive the TCP ACK packets at a higher rate, which will enable a higher download data rate for data packets from the server to the user device, as described above.
Any number of the available second priority packets may be encrypted and included in a particular uplink allocation, including one of the second priority packets, all of the second priority packets, or any number in between. Furthermore, an order in which packets having the first priority and packets having the second priority are encrypted into an available uplink allocation may be based on the order in which the packets are received, based on at least one of an uplink data rate with which packets are transmitted from the user device to the base station or a downlink data rate with which downlink packets are transmitted from the base station to the user device, based on one or more types associated with the packets having the first priority and/or the second priority, and/or based on other criteria. For example, one or more high priority packet types may include TCP ACK packets. The high priority packet types may be used to determine whether packets prioritized or encrypted in a manner that preserves the order in which packets are received.
As shown in
For instance, with reference to the example of
In step 1204, the one or more encrypted packets may be stored in a queue for subsequent transmission. For example, storage logic 1406 of
Continuing the example of
In step 1206, one or more second packets are received having a second priority that is greater than the first priority before transmission of a subset of the one or more encrypted packets. For example, referring to
Continuing the example of
In step 1208, at least one of the one or more second data packets is encrypted based on a corresponding sequence number reassigned from a corresponding first data packet of the subset. For example, as shown in
In step 1210, a subset of the first data packets corresponding to the subset of the one or more encrypted data packets is re-encrypted to generate a plurality of updated encrypted data packets that includes the re-encrypted subset and the encrypted at least one of the one or more second data packets. Second encryption logic 1408 is configured to first assign the reused sequence numbers in sequence to high priority packets 1416 and then to low priority packets 1412 until those reused sequence numbers are used up. Second encryption logic 1408 next assigns unused subsequent sequence numbers to high priority packets 1416 and low priority packets 1412 in a normal fashion. Second encryption logic 1408 then encrypts the data packets of high priority packets 1416 and low priority packets 1412, at least based on their corresponding sequence numbers, to generate updated encrypted packets 1422.
In step 1212, the subset of the one or more encrypted packets is replaced with the plurality of updated encrypted packets in the queue for subsequent transmission. For example, replacing logic 1410 receives updated encrypted packets 1422 and updates queue 1420 inside store 1418 by replacing encrypted packets in queue 1420 with encrypted packets of updated encrypted packets 1422 having the same assigned sequence number.
Continuing the example of
The embodiments for packet prioritization may each be used singly in a user device, or one or more packet prioritization embodiments may be combined and/or used simultaneously in a user device. Furthermore, according to embodiments, the packet prioritization techniques described herein may be constantly functional in a user device, or may be enabled and/or disabled at various times. For instance, in an embodiment, a packet prioritization embodiment may be enabled when the following conditions are met: (a) the user device (e.g., a modem thereof) detects the presence of high priority packet traffic, (b) the user device detects the need to perform prioritization (e.g., based on the downlink packet traffic type and/or traffic volume, the uplink traffic type/mix, etc.), and (c) the current uplink/downlink performance is subpar (e.g., the uplink and/or downlink data rate(s) are below a predetermined threshold rate, an uplink-to-downlink data rate ratio is above or below a predetermined threshold, etc.). Otherwise, the packet prioritization embodiments may remain disabled to ensure efficient usage of sequence numbers, to ensure low complexity PDCP/RLC execution, etc.
One or more embodiments described herein may have the following further example advantages:
With ACK prioritization, a peak link layer downlink throughput rate can be achieved for bidirectional TCP in the case of an asymmetric communication channel. An LTE channel tends to be asymmetric in most cell locations due to the difference in downlink and uplink transmit powers of the base station and user device.
For interactive traffic, such as webpage browsing, the webpage will load much faster for bidirectional TCP.
Push notifications for real time services can be delivered faster with ACK prioritization for bidirectional TCP. Most mobile platforms rely on push notifications to provide real time services to users. Embodiments enable better performance for push notifications.
High priority packets prioritized over previously received low priority packets can be transmitted in a manner that avoids out of sequence PDCP packet sequence numbers. When they occur, out of sequence packet sequence PDCP numbers may be dropped by a base station.
When existing uplink PDCP packets have been stored in a queue ahead of an uplink grant to the user device from the base station, the PDCP can respond quickly to the uplink grant without the need to fetch, assign serial numbers to, and encrypt packets. A quick response by the PDCP may ensure that the RLC-PHY time delays for packets are minimized. Processor idle times may also be utilized to perform security processing, thus achieving a higher level of work conservation.
The embodiments described herein are compatible with the 3GPP, or LTE specification.
Transmission control protocol (TCP) layer 210, selective-prioritization enabled PDCP layer 216, radio link control/medium access control (RLC/MAC) layer 222, physical layer 226, assignment logic 602, creation logic 604, low priority assignment logic 606, high priority assignment logic 608, encrypting and storage logic 1102, allocation determination logic 1104, packet determination logic 1106, encryption logic 1108, re-encrypting and storing queue logic 1402, first encryption logic 1404, storage logic 1406, second encryption logic 1408, replacing logic 1410, flowchart 400, flowchart 700, and/or flowchart 1200 may be implemented in hardware, or any combination of hardware with software and/or firmware. For example, transmission control protocol (TCP) layer 210, selective-prioritization enabled PDCP layer 216, radio link control/medium access control (RLC/MAC) layer 222, physical layer 226, assignment logic 602, creation logic 604, low priority assignment logic 606, high priority assignment logic 608, encrypting and storage logic 1102, allocation determination logic 1104, packet determination logic 1106, encryption logic 1108, re-encrypting and storing queue logic 1402, first encryption logic 1404, storage logic 1406, second encryption logic 1408, replacing logic 1410, flowchart 400, flowchart 700, and/or flowchart 1200 may be implemented as computer program code (instructions) stored on a computer readable storage medium and configured to be executed in one or more processors. In another example, transmission control protocol (TCP) layer 210, selective-prioritization enabled PDCP layer 216, radio link control/medium access control (RLC/MAC) layer 222, physical layer 226, assignment logic 602, creation logic 604, low priority assignment logic 606, high priority assignment logic 608, encrypting and storage logic 1102, allocation determination logic 1104, packet determination logic 1106, encryption logic 1108, re-encrypting and storing queue logic 1402, first encryption logic 1404, storage logic 1406, second encryption logic 1408, replacing logic 1410, flowchart 400, flowchart 700, and/or flowchart 1200 may be implemented as hardware logic/electrical circuitry.
The embodiments described herein, including systems, methods/processes, and/or apparatuses, may be implemented using well known servers/computers, such as computer 1500 shown in
Computer 1500 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Cray, etc. Computer 1500 may be any type of computer, including a desktop computer, a server, etc.
As shown in
Computer 1500 also includes a primary or main memory 1508, such as a random access memory (RAM). Main memory has stored therein control logic 1504 (computer program code or instructions), and data.
Computer 1500 also includes one or more secondary storage devices 1510. Secondary storage devices 1510 include, for example, a hard disk drive 1512 and/or a removable storage device or drive 1514, as well as other types of storage devices, such as memory cards and memory sticks. For instance, computer 1500 may include an industry standard interface, such as a universal serial bus (USB) interface for interfacing with devices such as a memory stick. Removable storage drive 1514 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
Removable storage drive 1514 interacts with a removable storage unit 1516. Removable storage unit 1516 includes a computer usable or readable storage medium 1518 having stored therein computer program code 1520 (control logic) and/or data. Removable storage unit 1516 represents a floppy disk, magnetic tape, compact disc (CD), digital versatile disc (DVD), Blue-ray disc, optical storage disk, memory stick, memory card, or any other computer data storage device. Removable storage drive 1514 reads from and/or writes to removable storage unit 1516 in a well-known manner.
Computer 1500 also includes input/output/display devices 1504, such as monitors, keyboards, pointing devices, microphones, motion capture devices, etc.
Computer 1500 further includes a communication or network interface 1522. Network interface 1522 enables computer 1500 to communicate with remote devices. For example, network interface 1522 allows computer 1500 to communicate over communication networks or mediums 1524 (representing a form of a computer usable or readable medium), such as local area networks (LANs), wide area networks (WANs), the Internet, etc. Network interface 1522 may interface with remote sites or networks via wired or wireless connections. Examples of network interface 1522 include but are not limited to a modem, a network interface card (e.g., an Ethernet card), a communication port, a Personal Computer Memory Card International Association (PCMCIA) card, a universal serial bus (USB) interface circuit/card, etc.
Control logic 1526 may be transmitted to and from computer 1500 via the communication medium 1524.
Any apparatus or manufacture comprising a computer usable or readable medium having control logic (computer program code or instructions) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer 1500, main memory 1508, secondary storage devices 1510, and removable storage unit 1516. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments.
For example, each of transmission control protocol (TCP) layer 210, selective-prioritization enabled PDCP layer 216, radio link control/medium access control (RLC/MAC) layer 222, physical layer 226, assignment logic 602, creation logic 604, low priority assignment logic 606, high priority assignment logic 608, encrypting and storage logic 1102, allocation determination logic 1104, packet determination logic 1106, encryption logic 1108, re-encrypting and storing queue logic 1402, first encryption logic 1404, storage logic 1406, second encryption logic 1408, replacing logic 1410, flowchart 400, flowchart 700, and flowchart 1200 (including each step of flowcharts 400, 700, and 1200) can be implemented as control logic that may be stored on a computer usable storage medium or computer readable storage medium, which can be executed by one or more processors to operate as described herein.
Computer readable storage media are distinguished from and non-overlapping with communication media. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wireless media such as acoustic, RF, infrared and other wireless media. Example embodiments are also directed to such communication media.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and details can be made therein without departing from the spirit and scope of the present application. Thus, the breadth and scope of the present patent application should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
The proper interpretation of subject matter described and claimed herein is limited to patentable subject matter under 35 U.S.C. §101. As described and claimed herein, a method is a process defined by 35 U.S.C. §101. As described and claimed herein, each of a device, apparatus, machine, system, computer, module, and computer readable medium is a machine or manufacture defined by 35 U.S.C. §101.
This application claims the benefit of U.S. Provisional Application No. 61/762,006, filed on Feb. 7, 2013, which is incorporated by reference herein in its entirety.
Number | Date | Country | |
---|---|---|---|
61762006 | Feb 2013 | US |