U.S. patent application number 11/025007 was filed with the patent office on 2006-06-29 for optimization of a tcp connection.
This patent application is currently assigned to Nokia Corporation. Invention is credited to Miikka Huomo, Naveen Kumar Kakani, Shashikant Maheshwari.
Application Number | 20060140193 11/025007 |
Document ID | / |
Family ID | 36611376 |
Filed Date | 2006-06-29 |
United States Patent
Application |
20060140193 |
Kind Code |
A1 |
Kakani; Naveen Kumar ; et
al. |
June 29, 2006 |
Optimization of a TCP connection
Abstract
In the preferred embodiments, it is first determined whether or
not a TCP connection from a sending device to a receiving device in
the wireless communications network is in a slow start phase. If
the TCP connection is in a slow start phase, then the data to be
sent in the TCP connection that is allocated a priority that is
higher than the priority allocated to other data to be sent by the
sending device. The sending device may be a Serving GPRS Support
Node (SGSN), a device in a Radio Access Network (RAN) or other
network device, and the method of the preferred embodiments may be
implemented by software installed and executed on the network
device.
Inventors: |
Kakani; Naveen Kumar;
(Irving, TX) ; Maheshwari; Shashikant; (Irving,
TX) ; Huomo; Miikka; (Vantaa, FI) |
Correspondence
Address: |
ROBERT M BAUER, ESQ.;LACKENBACH SIEGEL, LLP
1 CHASE ROAD
SCARSDALE
NY
10583
US
|
Assignee: |
Nokia Corporation
|
Family ID: |
36611376 |
Appl. No.: |
11/025007 |
Filed: |
December 29, 2004 |
Current U.S.
Class: |
370/395.42 ;
370/395.21 |
Current CPC
Class: |
H04L 69/163 20130101;
H04W 28/10 20130101; H04L 69/16 20130101; H04L 47/193 20130101;
H04L 47/2458 20130101; H04L 47/10 20130101; H04W 80/06 20130101;
H04L 47/14 20130101; H04L 47/2433 20130101; H04L 47/37
20130101 |
Class at
Publication: |
370/395.42 ;
370/395.21 |
International
Class: |
H04L 12/28 20060101
H04L012/28 |
Claims
1. A method of sending data in a wireless communications network,
comprising: determining whether or not a TCP connection from a
sending device to a receiving device in the wireless communications
network is in a slow start phase; and if the TCP connection is in a
slow start phase, then allocating priority in the sending device to
the data to be sent in the TCP connection that is higher than the
priority allocated to other data to be sent by the sending
device.
2. The method recited in claim 1, wherein the priority of the data
to be sent in the TCP connection is gradually decreased.
3. The method recited in claim 2, wherein the priority of the data
to be sent in the TCP connection is gradually decreased based on
the amount of data sent for that TCP connection.
4. The method recited in claim 3, wherein the priority of the data
to be sent in the TCP connection is determined according to the
equation X=Xi/Xmax, where Xi is the amount of data sent in the slow
start phase of the TCP connection and Xmax is a predetermined
amount of data sufficient for the TCP connection to adapt to
conditions in the wireless communications network and X can have
maximum value of `1`.
5. The method recited in claim 4, wherein the value of X is divided
into a plurality of different tiers and a unique priority is
assigned to each one of the plurality of tiers.
6. The method recited in claim 2, wherein the priority comprises a
quality of service (QoS) class.
7. The method recited in claim 6, wherein higher weights within a
QoS are assigned to data being sent in a slow start phase of the
TCP connection.
8. The method recited in claim 2, wherein a service time is
assigned to the data to be sent in the TCP connection based on the
priority.
9. A sending device in a wireless communication network configured
to send data to a receiving device in the wireless communication
network, comprising: a processor; a memory storing software
applications to be executed by the processor, said software
applications stored in the memory including communications
software; a network interface adapted to send data over a TCP
connection to the receiving device in the wireless communication
network; and a data packet store and queue, connected to said
network interface, storing TCP data packets to be sent by said
network interface, wherein said network interface determines
whether or not the TCP connection is in a slow start phase, and if
the TCP connection is in a slow start phase, then allocating
priority to the data to be sent in the TCP connection that is
higher than the priority allocated to other data to be sent.
10. The sending device recited in claim 9, wherein the priority of
the data to be sent in the TCP connection is gradually
decreased.
11. The sending device recited in claim 10, wherein the priority of
the data to be sent in the TCP connection is gradually decreased
based on the amount of data sent for that TCP connection.
12. The sending device recited in claim 11, wherein the priority of
the data to be sent in the TCP connection is determined according
to the equation X=Xi/Xmax, where Xi is the amount of data sent in
the slow start phase of the TCP connection and Xmax is a
predetermined amount of data sufficient for the TCP connection to
adapt to conditions in the wireless communications network and X
can have maximum value of `1`.
13. The sending device recited in claim 12, wherein the value of X
is divided into a plurality of different tiers and a unique
priority is assigned to each one of the plurality of tiers.
14. The sending device recited in claim 10, wherein the priority
comprises a quality of service (QoS) class.
15. The sending device recited in claim 14, wherein higher weights
within a QoS are assigned to data being sent in a slow start phase
of the TCP connection.
16. The sending device recited in claim 10, wherein a service time
is assigned to the data to be sent in the TCP connection based on
the priority.
17. The sending device recited in claim 9, wherein the sending
device is a Serving GPRS Support Node.
18. The sending device recited in claim 9, wherein the sending
device is also configured to perform as a receiving device.
19. A software program stored in a tangible medium, which, when
executed in a sending device on a wireless communications network,
causes the sending device to carry out a method of sending data in
a TCP connection to a receiving device, the method comprising:
determining whether or not the TCP connection is in a slow start
phase; and if the TCP connection is in a slow start phase, then
allocating priority in the sending device to the data to be sent in
the TCP connection that is higher than the priority allocated to
other data to be sent by the sending device.
20. The software program recited in claim 19, wherein the priority
of the data to be sent in the TCP connection is gradually
decreased.
21. The software program recited in claim 20, wherein the priority
of the data to be sent in the TCP connection is gradually decreased
based on the amount of data sent for that TCP connection.
22. The software program recited in claim 21, wherein the priority
of the data to be sent in the TCP connection is determined
according to the equation X=Xi/Xmax, where Xi is the amount of data
sent in the slow start phase of the TCP connection and Xmax is a
predetermined amount of data sufficient for the TCP connection to
adapt to conditions in the wireless communications network and X
can have maximum value of `1`.
23. The software program recited in claim 22, wherein the value of
X is divided into a plurality of different tiers and a unique
priority is assigned to each one of the plurality of tiers.
24. The software program recited in claim 20, wherein the priority
comprises a quality of service (QoS) class.
25. The software program recited in claim 24, wherein higher
weights within a QoS are assigned to data being sent in a slow
start phase of the TCP connection.
26. The software program recited in claim 20, wherein a service
time is assigned to the data to be sent in the TCP connection based
on the priority.
27. A communications network comprising: a sending device
configured to send data in a TCP connection to other devices in
said communications network; a receiving device, said receiving
device configured to receive data in a TCP connection, wherein it
is determined whether or not the TCP connection is in a slow start
phase, and if the TCP connection is in a slow start phase, then
allocating priority in the sending device to the data to be sent in
the TCP connection that is higher than the priority allocated to
other data to be sent by the sending device.
28. The communications network recited in claim 27, wherein the
priority of data to be sent in the TCP connection is gradually
decreased.
29. The communications network recited in claim 28, wherein the
priority of the data to be sent in the TCP connection is gradually
decreased based on the amount of data sent for that TCP
connection.
30. The communications network recited in claim 27, wherein the
sending device comprises a Serving GPRS Support Node.
31. The communications network recited in claim 27, wherein the
sending device is also configured to perform as a receiving device.
Description
FIELD OF THE INVENTION
[0001] The invention relates to data transmission in a wireless
and/or wireline communications network. In particular, the
invention relates to improvements in the throughput of a TCP
connection in a wireless network and/or wireline network where data
buffers re maintained.
BACKGROUND OF THE RELATED ART
[0002] The Transmission Control Protocol (TCP) is the predominant
transfer layer protocol used in Internet Protocol (IP) data
transmissions. A sending device utilizing TCP retransmits data
unless it receives an acknowledgment from the receiving device that
the data successfully arrived at the receiving device. TCP also
utilizes a handshake to establish the logical end-to-end connection
between the communicating devices and views data as a continuous
stream. It therefore maintains the sequence in which bytes/octets
are sent and received to facilitate this byte-stream
characteristic.
[0003] TCP uses a slow start process whenever a connection is
started or a timeout occurs. It starts with a small data rate to
make sure that the connection can accommodate at least a very
little amount of data. This is done in order to avoid network
congestion. TCP then relies on the rate of arrival of
acknowledgement messages to gradually increase its data rate. After
sending a window of data, the sending device needs to wait for one
round trip time (RTT) before it receives any acknowledgement. Due
to large value of RTT, the TCP sending device waits for a long time
in slow start phase before it reaches a reasonable throughput.
[0004] But in a wireless network, the transmission characteristics
of connections can change frequently. The transmission
characteristics can change due to movement of a mobile terminal,
especially when the receiving device moves from a first cell to a
second cell. Also, the bandwidth in the wireless network is limited
and this limited bandwidth is shared among multiple users, and a
high bit error rate (or even a lost connection in some
circumstances), resulting in a long round trip time (RTT) for the
connection (or even timeouts) that require the slow start process
to begin again. This means that the rate at which acknowledgement
messages are received is very slow. Also, in the network, all the
packets for connections which are in slow start phase are queued
along with all the other connections. This means that the RTT
during slow start has a strong component of the queuing delay
coming from other connections.
[0005] Several attempts have been made to either increase the data
rate at the start of the connection or to reduce RTT of a
connection. However, after the slow start phase if the TCP
connection has to face the real network conditions (queuing delay,
etc) the benefits of expedited slow start are lost and the
performance of the connection may not be as good as it is expected
to be.
BRIEF SUMMARY
[0006] Briefly, and in general terms, the preferred and exemplary
embodiments of the invention resolve the above and other problems
in the slow start phase time for the TCP connection in a wireless
network. In a first aspect of the preferred embodiments, it is
first determined whether or not a TCP connection from a sending
device to a receiving device in the wireless communications network
is in a slow start phase. If the TCP connection is in a slow start
phase, then allocating priority in the sending device to the data
to be sent in the TCP connection that is higher than the priority
allocated to other data to be sent by the sending device. The
sending device may be a Serving GPRS Support Node (SGSN), a device
in a Radio Access Network (RAN) or other network device, and the
method of the preferred embodiments may be implemented by software
installed and executed on the network device.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] FIG. 1 illustrates an exemplary network in which the
preferred embodiments of the invention may operate;
[0008] FIG. 2 illustrates an exemplary server that can operate as a
sending device or a receiving device for a TCP connection;
[0009] FIG. 3 illustrates an exemplary mobile terminal that can
operate as a sending device or a receiving device for a TCP
connection;
[0010] FIG. 4 is a diagram illustrating the placement of data in a
plurality of queues having different respective priorities in
accordance with a preferred embodiment of the invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Several preferred embodiments of the invention are now
described. The preferred embodiments improve the performance of a
TCP connection in a wireless network by speeding up the slow start
phase and gradually improving the RTT of the TCP connection to
match conditions in the network at the same time. The preferred
embodiments reduce the slow start phase time for the TCP connection
by servicing data of the connection quickly by giving it the
highest priority (higher priority packets are serviced/transmitted
before lower priority packets), and at the same time it gradually
decreases the priority of the TCP connection data, based on the
amount of data being sent for that connection. By gradually
decreasing the priority, the RTT is also gradually increased (based
on queuing in the network) and this results in a smooth increase in
the RTO value of the connection. The preferred embodiments will
hereinafter be described with reference to a particular network
environment, but the invention is not limited to the following
preferred embodiments and may be practiced in other embodiments as
well.
[0012] The preferred embodiments may be practiced with reference to
an exemplary wireless network shown in FIG. 1. As shown in the
figure, wireless network 100 includes mobile terminal 105, radio
access network (RAN) 110 with routers 111-113, SGSN 115, core
network 120 with routers 121 and 122, Gateway GPRS Service Nodes
(GGSNs) 135-1 and 135-1, Internet 140, and data network 150. Mobile
terminal 105 is coupled to radio access network (RAN) 110, and may
include any device capable of connecting to a wireless network such
as radio access network 110. Such mobile terminals include cellular
telephones, smart phones, pagers, radio frequency (RF) devices,
infrared (IR) devices, integrated devices combining one or more of
the preceding devices, and the like. Mobile terminal 105 may also
include other devices that have a wireless interface such as
Personal Digital Assistants (PDAs), handheld computers, personal
computers, multiprocessor systems, microprocessor-based or
programmable consumer electronics, network PCs, wearable computers,
and the like.
[0013] Radio Access Network (RAN) 110 manages the radio resources
and permits users to access core network 120. Radio access network
110 transports information to and from devices capable of wireless
communication, such as mobile terminal 105. Radio access network
110 may include both wireless and wired telecommunication
components. For example, radio access network 110 may include
cellular towers, base stations, and/or base station controllers
(not shown). Typically, the base stations carry wireless
communication to and from cell phones, pagers, and other wireless
devices, and the base station controllers carries communication to
core network 120 for subsequent connection to landline phones,
long-distance communication links, and the like. As shown in the
figure, RAN 110 includes routers 111-113 that receive transmitted
messages and forwards them to their correct destinations over
available routes. The routers may be a complex computing device
including memory, processors, and network interface units.
[0014] The routers 121 and 122 may be configured as an internal
router for a base station controller and calculate their
communication loads as well as the communication loads relating to
other base station controllers. The routers may send a warning
message to other routers within the network when its load exceeds a
configurable threshold. One or more of routers 121 and 122 may be
coupled to a wired telecommunication network and in communication
with wireless devices such as mobile node 105.
[0015] Core network 120 is an IP packet based backbone network that
includes routers, such as routers 121-122. Some nodes may be
General Packet Radio Service (GPRS) nodes. For example, Serving
GPRS Support Node (SGSN) 115 may send and receive data from mobile
stations, such as mobile node 105, over RAN 110. SGSN 115 also
maintains location information relating to mobile node 105. SGSN
115 communicates between mobile node 105 and Gateway GPRS Support
Node (GGSN)s 135-1 and 135-2 through routers 121 and 122. GGSNs
135-1 and 135-2 are coupled to routers 121 and 122, and act as
gateways to external data networks, such as Internet 140 and
network 150. Networks 140 and 150 may be the public Internet or a
private data network. GGSNs 135-1 and 135-2 allow mobile node 105
to access networks 140 and 150.
[0016] Furthermore, computers and other network devices, such as
servers 200, may be connected to network 140 and network 150.
Although not shown in FIG. 1, there may be one or more routers in
the interface between a GGSN and a server 200. The public Internet
itself may be formed from a vast number of such interconnected
networks, computers, and routers. Radio access network 110 and core
network 120 may include many more components than those shown in
FIG. 1. However, the components shown are sufficient to disclose an
illustrative embodiment for practicing the present invention.
[0017] FIG. 2 illustrates an exemplary server computer 200, such as
a World Wide Web (WWW) server, that is operative as either a
sending device or receiving device for data packets in Internet 140
or network 150. Accordingly, server 200 can employ TCP/IP protocols
to transmit content to a browser on a requesting device such as a
mobile terminal node. For instance, server 200 may transmit data
packets for pages, forms, streaming media, voice and the like, over
the Internet, or some other communications network.
[0018] Server computer 200 may include many more components than
those shown in FIG. 2. However, the components shown are sufficient
to disclose an illustrative embodiment for practicing the present
invention. Server computer 200 is connected to a communications
network, via network interface unit 260 which may be used with
various communication protocols including, but not limited to,
TCP/IP protocol 223 stored in memory 220 and the TCP/IP packet
store and queue 265. Memory may store applications such as a JAVA
virtual machine, an SMTP handler application for transmitting and
receiving email, an HTTP handler application for receiving and
handing HTTP requests, JAVA applets for transmission to a WWW
browser executing on a client computer, and an HTTPS handler
application for handling secure connections. The HTTPS handler
application may be used for communication with external security
applications (not shown), to send and receive private information
in a secure fashion.
[0019] Server computer 200 also includes central processing unit
210, video display adapter 230, and mass memory 220, all connected
via a central bus 222. The server generally includes an I/O
interface 240 for communicating with external devices, such as a
mouse, keyboard, scanner, and the like, and one or more permanent
mass storage devices 250. The mass memory stores operating system
221 for controlling the operation of server computer 200, server
software 222 and other software applications 224. It will be
appreciated that OS 221 may comprise a general purpose server
operating system as is known to those of ordinary skill in the art,
such as UNIX, LINUX, or Microsoft WINDOWS.
[0020] FIG. 3 shows an exemplary mobile terminal 300. Mobile
terminal 300 may be arranged to transmit and receive data packets
in a TCP/IP connection. For instance, it may send and receive
packets with other mobile nodes, SGSN 115 and various servers such
as server 200. The communication of packets may take place, in
whole or in part, over a mobile network, Local Area Network (LAN),
Wide Area Network (WAN), Internet, and the like.
[0021] Mobile terminal 105 may include many more components than
those shown in FIG. 3. However, the components shown are sufficient
to disclose an illustrative embodiment for practicing the present
invention. As shown in the figure, mobile terminal 300 includes
processing unit 310, input/output interface 320 for communicating
with external devices, such as headsets, keyboards, pointers,
controllers, modems, and the like, display adapter 330 and memory
340 including operating system 341 for controlling the operation of
mobile terminal 105, browser 342 to receive web pages, TCP/IP
protocol stack 343, and other software applications 344 which, when
executed by mobile terminal 105, transmits and receives e-mail,
voice, text messages, streaming audio, video, and the like. One or
more of such software applications may run under control of
operating system 340. Mobile terminal 105 may also include a ROM
used to store data that is not lost when the mobile node loses
power or is turned off. The memory 340 may be any suitable
configuration of computer-readable storage media, such as volatile
and nonvolatile, removable and non-removable media implemented in
any method or technology for storage of information, such as
computer readable instructions, data structures, program modules or
other data. Examples of such computer storage media include RAM,
ROM, EEPROM, flash memory cards or other memory technology.
[0022] There is also various mass storage 350 and audio circuitry
360 arranged to receive and produce sounds, i.e., audio signals.
For example, audio interface 354 may be coupled to a speaker and
microphone (not shown) to enable audio communication for a
telephone call. Mass data storage 350 is utilized by mobile
terminal 300 to store, among other things, applications, databases
and large data files. Mass storage 350 may comprise flash memory,
mini hard disk drives, CD-ROM, digital versatile disks (DVD) or
other optical storage, magnetic cassettes, magnetic tape, magnetic
disk storage or other magnetic storage devices, or any other medium
which can be used to store the desired information and which can be
accessed by mobile terminal 105.
[0023] Mobile terminal 105 connects to the radio access network 110
via wireless network interface 370, which is configured for use
with various communication protocols including TCP/IP protocol 343,
to perform various applications such as web browsing, emails, chat
session, messaging, etc. Wireless network interface 370 may include
a physical radio layer (not shown) that is arranged to transmit and
receive certain radio frequency communications. Wireless network
interface 370 connects mobile terminal 105 to network devices in
external networks, via a communications carrier or service
provider.
[0024] The preferred embodiments can be implemented in either a
server 200, SGSN 215, an intermediate router or mobile terminal 105
as a sending device in a TCP connection. These devices may also be
configured to operate as a receiving device in a TCP connection. In
particular, the preferred embodiments can be performed even when
there are multiple TCP connections. The priority of data to be sent
during the slow start phase in the TCP connection may be adjusted,
for example, in a TCP/IP packet store and queue utilized by a
network interface.
[0025] When it is determined that a TCP connection is in a slow
start phase, a table or other monitoring procedure is created and
maintained that tracks the data that was sent in the TCP
connection. As known, each TCP connection is identified when
setting up the TCP connection (SYN/SYNACK/ACK) or when new
endpoints are received and size of packet received and a
corresponding entry in a transfer log is created. If the number of
bytes sent for a particular connection is less than a predetermined
parameter "Xmax", then the connection is considered to be in a slow
start phase. The parameter Xmax is chosen such that the time taken
to send Xmax amount of data is sufficient enough for the TCP
connection to fully adapt to the conditions of the network and exit
from the slow start phase. As an example, Xmax may be set to equal
K*MIN_BUF where MIN_BUF is the minimum buffer length in the route
from the sending device to the receiving device and K is a
predetermined system parameter. The value of K can be set by the
network operator or provider of the communication service
corresponding to the TCP connection (the TCP window Size can never
be greater than the MIN_BUF).
[0026] Each packet of data in the slow start phase is allocated a
priority value that is stored in the table and determines when the
data is sent. The priority value allocated to data sent in the slow
start phase of a TCP connection depends upon the amount of data
already sent for the connection. For example, if Xi amount of data
has already been sent in the TCP connection, then the priority
value for the next data packet to be sent in that TCP connection is
based on X=Xi/Xmax.
[0027] Preferably, the priority value allocated to a TCP data
packet is constrained to be between 0 and 1. Thus, even in cases
where the amount of data is greater than Xmax, then the value of X
will be set to 1 and correspondingly priority value is also set to
1. Alternatively, when the value of X reaches 1, the allocated
priority value can be removed from the table. The priority for
sending data is gradually increased in accordance with a plurality
of tiers. There may be four tiers, for example, X1, X2, X3 and X4,
where priority of tier X1 applies when the value of X is between 0
and 0.25, tier X2 applies when the value of X is between 0.26 and
0.50, tier X3 applies when the value of X is between 0.51 and 0.75,
and tier X4 applies when the value of X is between 0.76 and 1 or
higher. Of course, there may be different number of tiers with
different ranges along with different priorities allocated to each
different tier.
[0028] The different priorities of data in the slow start phase can
be applied in any number of ways. As a first example, the method is
implemented in a sending device, such as a Serving GPRS Support
Node (SGSN), Gateway GPRS Support Node (GGSN), router or a device
in a Radio Access Network (RAN) that is capable of supporting
multiple queues for Quality of Service (QoS) classes for a user
like Diffserv in a wireline network. Although the general
architecture of a SGSN, GGSN or router is not shown in the
drawings, such devices also have a processor, memory, network
interface and TCP/IP packet store and queue. Well known in the art,
QoS classes can be applied according to the subscriber status of a
user in a network or according to the requirements of various
communication services of a user. For example, a real-time audio,
video or interactive service may have a high QoS class whereas an
email service may have a low QoS class, sometimes referred to as a
"best efforts" class. The data for each QoS class may be placed
into a unique logical or physical buffer queue dedicated to that
QoS class. In such instances, the data in the buffer of a high QoS
class may be sent before data in a low QoS class even though that
data was arrived later in time than the data in the lower QoS
class.
[0029] The priority allocated for the data in the slow start phase
is utilized according to the method described above to place the
data in an appropriate Quality of Service (QoS) class and buffer
queues. If the X values and corresponding priorities are divided
into tiers as described above, then the tiers can be mapped to
respective QoS classes. This approach is illustrated in FIG. 4,
which shows the respective buffer queues for four different QoS
classes and each QoS class having a respective priority. All
SYN/ACK (here ACK means pure ACK, with no piggybacked data) packets
may be considered as belonging to the highest priority tier between
0 and 0.25.
[0030] For example, if the value of X is in the X1 tier, then the
data packet will be stored in the buffer of queue 1 (priority 1).
If the value of X is in the range of X2, then the data packet will
be stored in the buffer of queue 2 (priority 2), and so on for all
priority values and tiers. While there are many different possible
QoS configurations, this approach has the advantage that it
simplifies the modification of priorities allocated to different
data packets by leveraging the existing logic and support for QoS
classes in a sending device.
[0031] In a variation of this implementation, multiple queues
(child queues) with different weights are implemented under each
QoS Class. The data from the lowest priority queue is serviced
first and higher weights within a QoS class are assigned to the
data packets in a TCP connection in the slow start phase. A child
queue is selected based on the allocated priority of a data packet
and the weight of the child queue. The higher the weight of the
child queue, then the lower the priority. However, the priority of
highest weighted child queue in the particular QoS Class is higher
than priority of lowest weighted child queue in the next higher QoS
Class. Multiple child queues with different weights like W1, W2, W3
and W4 where W1<W2<W3<W4 are assumed in the parent QoS
Class. The lower priority queue is serviced first, and may include
SYN/ACK packets.
[0032] For the slow start phase, the value of X may be mapped to an
appropriate tier and sub-tier. The data packets in the slow start
phases will be assigned a QoS class buffer queue and child queue
within the QoS class according to the X priority value. Thus, there
may be sixteen different child queues and priority values
allocated. This implementation has the advantage of leveraging
existing support for QoS classes, but provides a finer degree of
accuracy in implementing various priorities.
[0033] Of course, an embodiment of the invention can work even in
cases where no QoS is implemented in a particular network node
serving as the sending device. In this different embodiment, rather
than using QoS classes with respective queues for the QoS classes,
the network interface calculates and assigns respective service
times to the different X priority values of data packets. The
calculated service times may be based on the SGSN/MS/PDP
context/TCP flow. In particular, rather than simply placing the
data packet into different queues or child buffer queues based on
priority value, the network interface uses the computation of
service time based upon the queue length in the transmission buffer
to determine the time by which the new packet needs to be sent. The
transmission buffer may be a simple first-in first-out (FIFO)
buffer. The function can be expressed as FI (Service Time)=Current
System Time+f(queue_length (Q), Service Rate (R)). This function
allocates the service time for the new packet based upon the time
it would take to send Q amount of data (that is already queued in
the system). To be able to send the new packets for the TCP
Connection (i) earlier than the existing packets in the system, the
function FI should use a lower value of Q to reflect the priority
allocated to the new packet hence, FI=Current System Time+f(P(i)*Q)
where P(i)=Xi/Xmax.
[0034] Q could be the amount of data for a particular type of
traffic (for example: a PDP Context), or it could be the total
queue length in the network device (e.g., SGSN). The above
computation of FI can be used to increase or decrease the service
time of data of any type by simply changing the computation of
P(i): For example, If RTP packets are to be service earlier than
TCP packets then P(i) for RTP connections is always lower than the
parameter used for TCP connections. This embodiment does not
leverage and rely upon the different QoS classes, but it has the
advantage that the time in which a data packet in a slow start
phase can be more directly (and accurately) controlled and that
only a single FIFO buffer is used instead of multiple queues.
[0035] The preferred embodiments have numerous advantages over the
prior art. They can be used across all traffic types since priority
is individually allocated to different packets. Within a TCP
connection, some packet types can be serviced earlier than other
packet types (e.g., within a TCP Connection: P(i) for all ACK and
or SYN packets can be set to `0` and for the rest of the packets,
the function Xi/Xmax can be used). While certain information of the
TCP connection needs to be maintained, this information needs to be
maintained in slow start only. Hence, the method is scalable
because it does not require memory as a function of the total
number of TCP connections supported. Interactive traffic
applications (with small amounts of data) can be speeded up and
interactive traffic may maintain a single TCP connection. The
method can be applied regardless of the direction of the TCP
connection.
[0036] It will be apparent from the foregoing that, while preferred
and exemplary embodiments have been illustrated and described,
various modifications can be made without departing from the spirit
and scope of the invention. Accordingly, it is not intended that
the invention be limited by the detailed description of the
preferred and exemplary embodiments.
* * * * *