U.S. patent application number 13/938159 was filed with the patent office on 2014-06-12 for airtime-based packet scheduling for wireless networks.
This patent application is currently assigned to Aerohive Networks, Inc. The applicant listed for this patent is Aerohive Networks, Inc. Invention is credited to Changming Liu, Sreekanth Reddy, Peter Wu, Jianlin Zeng.
Application Number | 20140160929 13/938159 |
Document ID | / |
Family ID | 48701450 |
Filed Date | 2014-06-12 |
United States Patent
Application |
20140160929 |
Kind Code |
A1 |
Wu; Peter ; et al. |
June 12, 2014 |
AIRTIME-BASED PACKET SCHEDULING FOR WIRELESS NETWORKS
Abstract
Airtime usage may be used as a factor in controlling network
traffic flow to and from client devices via a wireless network
interface. Received packets or other data are assigned to a quality
of service profile. Additionally, a cost value for communicating
the received data is determined at least in part based on an actual
or estimated airtime usage for the received packet. The cost value
is used to allocate wireless network airtime to data. The
allocation of wireless network airtime may be varied dynamically
based on operating conditions. The cost value may be based on
factors including the airtime used to communicate data; whether the
data is a retransmission; and wireless network overhead. The cost
value of data may also be different depending on whether the data
is being sent from a client device or to a client device.
Inventors: |
Wu; Peter; (Saratoga,
CA) ; Reddy; Sreekanth; (Edison, NJ) ; Zeng;
Jianlin; (San Jose, CA) ; Liu; Changming;
(Cupertino, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Aerohive Networks, Inc |
Sunnyvale |
CA |
US |
|
|
Assignee: |
Aerohive Networks, Inc
Sunnyvale
CA
|
Family ID: |
48701450 |
Appl. No.: |
13/938159 |
Filed: |
July 9, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12356886 |
Jan 21, 2009 |
8483194 |
|
|
13938159 |
|
|
|
|
Current U.S.
Class: |
370/235 |
Current CPC
Class: |
H04W 24/08 20130101;
H04W 72/0406 20130101; H04W 72/1236 20130101; H04W 72/1257
20130101; H04L 47/24 20130101; H04W 28/0205 20130101; H04L 47/32
20130101 |
Class at
Publication: |
370/235 |
International
Class: |
H04W 28/02 20060101
H04W028/02 |
Claims
1. A system comprising: a processor; memory storing instructions
used by the processor to: assign a first network packet to a first
quality of service category, the first network packet being
directed to a first network client; determine a first cost value
including a numerical value based on an estimated time consumed to
communicate the first network packet towards the first network
client over a wireless network interface; compare the first cost
value with an airtime allocation balance value assigned to the
first quality of service category, wherein the airtime allocation
balance value represents an unused portion of time for
communicating a packet assigned to the first quality of service
category over the wireless network interface, and wherein the
unused portion of time is associated with the first quality of
service category; in response to the first cost value being less
than or equal to the airtime allocation balance value, forward the
first network packet towards the first network client via at least
the wireless network interface and decrease the airtime allocation
balance value by the first cost value, thereby resulting in a
modified airtime allocation value; in response to the first cost
value being greater than the airtime allocation balance value,
queue the first network packet until the airtime allocation balance
value is increased such that the first cost value is less than or
equal to the increased airtime allocation balance value; in
response to the first cost value being less than or equal to the
increased airtime allocation balance value, forward the first
network packet towards the first network client via at least the
wireless network interface; monitor the communication of the first
network packet to the first network client to determine a second
cost value including a second numerical value based on an actual
airtime consumed to communicate the first network packet towards
the first network client over the wireless network interface;
determine an adjustment to the airtime allocation balance value
based on a difference between the first and second cost values;
modify the airtime allocation balance value based on the
adjustment.
2. The system of claim 1, wherein queuing the first network packet
until the airtime allocation balance value is increased comprises
increasing the airtime allocation balance value by a value based on
a scheduling weight associated with the first quality of service
category.
3. The system of claim 1, wherein the instructions are used by the
processor to: receive a second network packet directed to the first
network client; assign the second network packet to the first
quality of service category; determine a third cost value including
a third numerical value based on an estimated time consumed to
communicate the second network packet towards the first network
client over the wireless network interface; compare the third cost
value with the modified airtime allocation balance value; in
response to the third cost value being less than or equal to the
modified airtime allocation balance value, forward the second
network packet towards the first network client via at least the
wireless network interface.
4. The system of claim 3, wherein the first and second network
packets are included in a first network connection between the
first network client and a first network packet source.
5. The system of claim 1, wherein the instructions are used by the
processor to: determine if the first network packet is associated
with a critical quality of service category; in response to the
first network packet being associated with the critical quality of
service category, forward received data towards the first network
client regardless of the airtime allocation balance value.
6. The system of claim 5, wherein the modified airtime allocation
balance value is less than zero.
7. The system of claim 1, wherein the airtime allocation balance
value and the first cost value are included in a token bucket
packet scheduler allocating airtime between the first quality of
service category and at least one additional quality of service
category.
8. The system of claim 1, wherein queuing the first network packet
until the airtime allocation balance value is increased comprises
periodically incrementing the airtime allocation balance value.
9. The system of claim 1, wherein the first cost value is further
based on airtime for communicating the first network packet to the
first network client via at least the wireless network
interface.
10. The system of claim 1, wherein the first cost value is further
based on airtime for retransmitting data that was previously
unsuccessfully transmitted via at least the wireless network
interface.
11. The system of claim 1, wherein the first cost value is further
based on airtime for wireless network overhead associated with the
wireless network interface.
12. The system of claim 1, wherein the first cost value is further
based at least in part on the size of the first network packet.
13. The system of claim 1, wherein the first cost value is further
based on measured airtime consumed in forwarding a previous network
packet towards the first network client via at least the wireless
network interface.
14. The system of claim 1, wherein the airtime allocation balance
value is based on a scheduling weight associated with the first
quality of service category.
15. The system of claim 1, wherein the instructions are used by the
processor to receive the first network packet via at least the
wireless network interface.
16. The system of claim 1, wherein the assigned first quality of
service category is based on factors selected from a group
consisting of a received data source, a received data intended
destination, a user identity, a user class, content of the received
data, control data, a client application, and a data flow.
17. The system of claim 1, wherein further in response to the first
cost value being less than or equal to the airtime allocation
balance value, the instructions are used by the processor to:
assign a second network packet to the first quality of service
category, the second network packet being directed to the first
network client; determine a third cost value including a third
numerical value based on an estimated time consumed to communicate
the second network packet towards the first network client; compare
the third cost value with the modified airtime allocation balance
value; queue the second network packet until the modified airtime
allocation balance value is increased such that the third cost
value is less than or equal to the increased modified airtime
allocation balance value.
18. The system of claim 17, wherein the instructions are used by
the processor to receive the second network packet via at least the
wireless network interface.
19. (canceled)
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. Ser. No.
12/356,886, filed Jan. 21, 2009, entitled "AIRTIME-BASED
SCHEDULING," is incorporated herein by reference.
BACKGROUND
[0002] This application is related to the field of wireless
networking devices, and in particular to systems and methods for
controlling network traffic to and from clients. Networking devices
enable data communications between two or more devices, referred to
generally as clients. Data communications may be conducted over
wired and/or wireless network interfaces. Typically, data is
partitioned into packets, which are then communicated via one or
more networking devices to one or more destination clients.
[0003] Networking devices may handle packets generated by and
directed to large numbers of clients over the same interface. The
bandwidth or data communications capacity of networking devices
limits the amount of data or the rate of network packets passing
through network devices. The limits on bandwidth are particularly
acute in network devices including wireless network interfaces. If
the bandwidth limit of a networking device is reached or exceeded
by its client's network traffic, packets may be delayed or dropped.
Depending on the type of data being communicated over the network,
these traffic disruptions caused by reaching or exceeding bandwidth
limit of a networking device may adversely affect the performance
of applications on a client. For example, clients receiving voice
or streaming video data may be adversely affected by even small
delays or losses of packets.
[0004] Because of the limits on network device bandwidth, many
network devices include quality of service (QoS) functionality.
Quality of service functionality allows network administrators to
provide different priority for packets or other network data based
on factors such as the associated client, user, client application,
or data flow. Typically, users, clients, or applications are
assigned to different quality of service profiles. Each quality of
service profile specifies a quality of service parameters to
associated packets or other network data. Networking devices use
the scheduling weights to prioritize packet traffic and potentially
guarantee a minimum level of performance to some or all of the
network data flows.
[0005] However, typical quality of service functionality does not
take into consideration performance issues unique to wireless
network interfaces. For example, many wireless network interfaces
support multiple wireless networking standards, such as IEEE
802.11a, 802.11b, 802.11g, and 802.11n. This allows the networking
device to support legacy clients using slower (e.g. relatively low
data-rate) standards, such as 802.11b, as well as newer clients
capable of communicating via faster (e.g. relatively high
data-rate) standards, such as 802.11n. When a networking device is
operating in a mixed mode and communicating with clients via
multiple standards, the clients using slower data rates, such as
clients using older standards or newer standards at lower data
rates, for example due to lower signal strength or radio
interference, will consume a disproportionate amount of airtime
from the wireless network interface. As a result of this
disproportionate airtime usage, the performance of other clients
attempting to utilize faster data rates will be degraded
substantially.
SUMMARY
[0006] An embodiment of the invention includes airtime usage as a
factor in controlling network traffic flow to and from client
devices via a wireless network interface. In an embodiment, packets
or other data received via a wired or wireless network interface
and directed to a client device or received from a client via a
wireless network interface are assigned to a quality of service
profile. Additionally, a cost value for communicating the packet or
other data is determined at least in part based on an actual or
estimated airtime usage for the packet to be communicated to or
from the client via a wireless network interface. The cost value is
used to allocate wireless network airtime to clients. In a further
embodiment, the consumption of wireless network airtime may be
varied dynamically based on operating conditions.
[0007] In an embodiment, the cost value may be based on factors
including the actual or estimated airtime used to communicate the
packet via the wireless network interface; whether the packet or
other data is a retransmission of a previous packet or other data;
and actual or estimated wireless network overhead. The cost value
of a packet may also be different depending on whether the packet
is being sent from a client device or to a client device.
[0008] In an embodiment, a token bucket scheduling system is used
to allocate wireless network bandwidth based on received packets'
cost values and token balances associated with quality of service
profiles. In a further embodiment, packets or other data received
from a client device via a wireless network interface may be
dropped or discarded if a queue associated with a quality of
service is full.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The invention will be described with reference to the
drawings, in which:
[0010] FIG. 1 illustrates a method of scheduling downlink network
traffic according to an embodiment of the invention; and
[0011] FIG. 2 illustrates an example computer system suitable for
implementing an embodiment of the invention.
DETAILED DESCRIPTION
[0012] FIG. 1 illustrates a method 100 of scheduling downlink
network traffic according to an embodiment of the invention. In
this application, downlink network traffic refers to network
traffic received by a network device via a wired or wireless
network connection and directed to a client device via a wireless
network connection. In step 105, a packet or other type of network
data is received by a network device. In an embodiment, the packet
is directed to a client device in direct or indirect communication
with the network device via a wireless network connection. For
example, the network device may be adapted to communicate the
packet directly to the client device via a wireless network
connection or to one or more additional network devices via the
wireless network connection, which in turn communicate the packet
to the client device via a wired or wireless network
connection.
[0013] Step 110 determines a quality of service profile to be
associated with the received packet. Embodiments of step 110 may
assign a quality of service profile to packets based on the packet
source, the packet destination, a user identity or user class
associated with the packet source and/or packet destination, the
contents or control data associated with a packet, a source or
client application associated with a packet, and/or a data flow
associated with the packet. The set of quality of service profiles
may be specified by network administrators. As described in detail
below, each quality of service profile is assigned a scheduling
weight and a scheduling mode used to prioritize packets. In further
embodiments, a quality of service profile may include a per-user
rate limit.
[0014] Step 115 determines a token cost for the received packet
based on factors including an estimated airtime for the packet and
the quality of service profile. In an embodiment, packets are
assigned a cost value, referred to as a token cost. The token cost
represents the relative amount of network performance consumed by
communicating the associated packet towards the intended
destination by the network device.
[0015] Embodiments of step 115 take into account at least an
estimated packet airtime to determine the token cost of the
received packet. In an embodiment, step 115 estimates the airtime
to communicate the received packet from the network device to the
client based on the airtime required by previous packets to the
same client, similar clients, and/or clients assigned to the same
quality of service profile. For example, a running average of the
airtime consumed by one or more of the most-recently sent packets
to the same client may be used to determine at least a portion of
the estimated packet airtime for the currently received packet.
[0016] In a further embodiment, the average airtime of recently
sent packets is weighted or divided by their respective packet
sizes to determine an average airtime consumed per data unit, such
as average airtime consumed per byte. This average airtime consumed
per data unit may then be scaled or weighted according the size of
the received packet to determine at least a portion of the
estimated airtime for the currently received packet. This enables
the token cost of a packet to increase with the packet size, as
larger packets consume more network bandwidth.
[0017] In addition to estimating the airtime consumed in
transmitting the packet, an embodiment of step 115 may also include
other factors in determining the token cost of a packet. The token
cost or total estimated airtime may include an estimated airtime
for transmitting a packet to the client, the actual, estimated, or
prorated airtime used for retransmitting packets that were
previously unsuccessfully transmitted, and/or some or all of the
network overhead.
[0018] Optional decision block 117 may determine if the packet is
associated with a critical quality of service profile. In an
embodiment, users, user groups, and/or the types of applications
associated with a packet may be assigned to a critical quality of
service profile if any delay in forwarding the packet is
unacceptable. For example, packets from voice-over IP (VOIP) and
live video applications may be assigned to a critical quality of
service profile. If a packet is associated with a critical quality
of service profile, method 100 proceeds directly from decision
block 117 to step 130 to forward the packet to its destination.
However, as described in detail below, step 130 may deduct the
token cost of this critical packet from a token bucket associated
with the application, user group, or individual user. This has the
effect of potentially limiting the airtime of any future
non-critical packets from the same application, user group, or
user.
[0019] Step 120 determines a token balance of a token bucket
associated with the selected quality of service profile. In an
embodiment, each quality of service profile is associated with its
own token bucket. A token bucket is a data structure including a
token balance value. The token balance value represents the unused
proportion of the network bandwidth assigned to a quality of
service profile. Token costs and token balance values may be
expressed in arbitrary units.
[0020] In an embodiment, the token balance value of each token
bucket is periodically increased or incremented, representing
additional network bandwidth allocated to the associated quality of
service profile for a period of time. In an embodiment, a
scheduling weight associated with a quality of service profile is
used to determine the rate or amount by which the token balance
value of the token bucket is increased. For example, the token
balance value of a token bucket associated with a higher priority
quality of service profile may be incremented more frequently
and/or by larger amounts. This has the effect of allocating more
network bandwidth to packets associated with the high priority
quality of service profile. In an alternate embodiment, each token
bucket has its token balance value incremented by the same amount
and at the same frequency.
[0021] In further embodiments, the range of the token balance value
of each token bucket may be limited between a maximum token balance
value and/or a minimum token balance value. The token increment
value, token balance incrementing rate, and the minimum and maximum
token balance limits of each token bucket may be specified based on
the associated quality of service profile and optionally one or
more other quality of service profiles. In a further embodiment,
the token increment value, token balance incrementing rate, the
minimum and maximum token balance limits of each token bucket, or
any other factor affecting the allocation of wireless networking
airtime may be dynamically specified based on the performance of
the wireless network interface.
[0022] Decision block 125 compares the token cost of the received
packet with the token balance value of the associated token bucket.
If the token cost of the received packet is less than the token
balance of the token bucket corresponding with the assigned quality
of service profile, then method 100 proceeds to step 130.
[0023] Step 130 deducts the token cost from the token balance of
the associated token bucket and forwards the packet to the client
via the wireless network interface. By deducting the token cost
from the token balance of the token bucket, the token balance
reflects the relative proportion of the wireless network
interface's bandwidth that has been used by the assigned quality of
service profile. The packet may be communicated to the client
device using any wireless networking standard or technique known in
the art. In a further embodiment, the network device may
communicate with multiple clients using different wireless
networking standards or techniques, depending on the client
capabilities and/or operating conditions. Following step 130,
method 100 optionally proceeds back to step 105 to await the
receipt of another packet directed to the same or a different
client.
[0024] In a further embodiment, step 130 deducts the token cost
from the token balance value of the associated token bucket in two
phases. First, step 130 deducts the token cost based at least
partly on an estimated airtime for the received packet. Step 130
then forwards the packet to the client device via the wireless
network interface. Additionally, step 130 monitors the transmission
of this packet towards the client to determine its actual airtime
usage. Step 130 then uses this actual airtime usage to determine a
revised token cost for the received packet. Step 130 then subtracts
the difference between the revised token cost and the original
token cost of the packet from the token balance value of the token
bucket. This adjustment may increase or decrease the token balance
value of the token bucket, depending on whether the actual airtime
usage of the packet is less than or greater than the estimated
airtime, respectively.
[0025] Returning to decision block 125, if the token cost of the
received packet is greater than the token balance of the token
bucket corresponding with the assigned quality of service profile,
then method 100 proceeds to step 135. Step 135 queues the received
packet associated with this quality of service profile until the
token balance of its associated token bucket is increased.
Following the increase of the token balance of the token bucket
associated with the quality of service profile assigned to the
received packet, an embodiment of method 100 proceeds back to step
120. Steps 120, 125, and step 135 may be repeated one or more times
until the token cost of the queued packet is less than the token
balance of the token bucket. In an embodiment, while a packet is
queued in step 135, other packets may be received and processed
according to method 100.
[0026] Although described with reference to downlink network
traffic from a network device to a client device, embodiments of
method 100 may also be applied to scheduling uplink network traffic
from a client device to a network device via a wireless network
interface. In this embodiment, method 100 operates in a similar
manner as described above. However, the actual airtime of the
received uplink packet is already known, eliminating the need to
use an estimated airtime to determine at least part of the token
cost.
[0027] As described above, a packet may be assigned to a critical
quality of service profile if any delay in forwarding the packet is
unacceptable. In an embodiment, step 130 deducts the token cost of
these packets from the token balance of the associated token
bucket, similar to other packets associated with non-critical
quality of service profiles. However, because packets assigned to
critical quality of service profiles bypass steps 120, 125, and
135, the token balance of a token bucket may become negative due to
packets in critical quality of service profiles. In an embodiment,
a negative token balance will not block further communications of
packets associated with critical quality of service profiles.
However, other packets associated with the same token bucket, such
as packets for the same user, user group, and/or application, will
be queued until the token balance of the token bucket increases. In
a further embodiment, a token bucket may have a negative limit.
When the token balance reaches the negative limit, packets
associated with this token bucket may be dropped.
[0028] Although method 100 uses token costs and token buckets for
controlling network traffic based at least in part on airtime
usage, embodiments of the invention can include airtime usage as a
factor controlling network traffic using any other network traffic
shaping, bandwidth throttling, rate limiting, or quality of service
technique known in the art.
[0029] FIG. 2 illustrates an example computer system suitable for
implementing an embodiment of the invention. FIG. 2 is a block
diagram of a computer system 2000, such as a personal computer or
other digital device, suitable for practicing an embodiment of the
invention. Embodiments of computer system 2000 may include
dedicated networking devices, such as wireless access points,
network switches, hubs, routers, hardware firewalls, network
traffic optimizers and accelerators, network attached storage
devices, and combinations thereof.
[0030] Computer system 2000 includes a central processing unit
(CPU) 2005 for running software applications and optionally an
operating system. CPU 2005 may be comprised of one or more
processing cores. Memory 2010 stores applications and data for use
by the CPU 2005. Examples of memory 2010 include dynamic and static
random access memory. Storage 2015 provides non-volatile storage
for applications and data and may include fixed or removable hard
disk drives, flash memory devices, ROM memory, and CD-ROM, DVD-ROM,
Blu-ray, HD-DVD, or other magnetic, optical, or solid state storage
devices.
[0031] Optional user input devices 2020 communicate user inputs
from one or more users to the computer system 2000, examples of
which may include keyboards, mice, joysticks, digitizer tablets,
touch pads, touch screens, still or video cameras, and/or
microphones. In an embodiment, user input devices may be omitted
and computer system 2000 may present a user interface to a user
over a network, for example using a web page or network management
protocol and network management software applications.
[0032] Computer system 2000 includes one or more network interfaces
2025 that allow computer system 2000 to communicate with other
computer systems via an electronic communications network, and may
include wired or wireless communication over local area networks
and wide area networks such as the Internet. Computer system 2000
may support a variety of networking protocols at one or more levels
of abstraction. For example, computer system may support networking
protocols at one or more layers of the seven layer OSI network
model. An embodiment of network interface 2025 includes one or more
wireless network interfaces adapted to communicate with wireless
clients and with other wireless networking devices using radio
waves, for example using the 802.11 family of protocols, such as
802.11a, 802.11, 802.11g, and 802.11n.
[0033] An embodiment of the computer system 2000 may also include a
wired networking interface, such as one or more Ethernet
connections to communicate with other networking devices via local
or wide-area networks. In a further embodiment, computer system
2000 may be capable of receiving some or all of its required
electrical power via the network interface 2025, for example using
a wired networking interface power over Ethernet system.
[0034] The components of computer system 2000, including CPU 2005,
memory 2010, data storage 2015, user input devices 2020, and
network interface 2025 are connected via one or more data buses
2060. Additionally, some or all of the components of computer
system 2000, including CPU 2005, memory 2010, data storage 2015,
user input devices 2020, and network interface 2025 may be
integrated together into one or more integrated circuits or
integrated circuit packages. Furthermore, some or all of the
components of computer system 2000 may be implemented as
application specific integrated circuits (ASICS) and/or
programmable logic.
[0035] A power supply 2030 provides electrical power to the
computer system 2000. Power supply 2030 may be adapted to draw
electrical power from a connection with an electrical power
distribution grid. In an embodiment, power supply 2030 is connected
with network interface 2025 to draw electrical power for computer
system 2000 from one or more wired network connections using a
network power standard, such as IEEE 802.3af.
[0036] Further embodiments can be envisioned to one of ordinary
skill in the art after reading the attached documents. For example,
embodiments of the invention can be used with any number of network
connections and may be added to any type of power supply in
addition to the stacked network power supply illustrated above. In
other embodiments, combinations or sub-combinations of the above
disclosed invention can be advantageously made. The block diagrams
of the architecture and flow charts are grouped for ease of
understanding. However it should be understood that combinations of
blocks, additions of new blocks, re-arrangement of blocks, and the
like are contemplated in alternative embodiments of the present
invention.
[0037] The specification and drawings are, accordingly, to be
regarded in an illustrative rather than a restrictive sense. It
will, however, be evident that various modifications and changes
may be made thereunto without departing from the broader spirit and
scope of the invention as set forth in the claims.
* * * * *