Abstract:
Systems and methods perform load balancing in a wireless network. In particular, one aspect of the systems and methods is the use of weighted mean end-to-end delay across the entire WLAN that is attributable to the wireless portion of the network as a measure of network performance and user satisfaction. The weighted mean end-to-end delay, the costs of refusing service to a mobile station or forcing a mobile station to switch to another access point may be added to determine whether it is desirable to switch a station to a new access point. A further aspect of the systems and methods is the measurement of network traffic, making predictions and optimizing allocation of station to access points every T seconds, where T is selected by the network manager.

Description:
RELATED FILES 
     This application claims the benefit of U.S. provisional patent application Ser. No. 60/458,273 entitled “LOAD BALANCING IN WIRELESS LOCAL AREA NETWORKS” and filed Mar. 28, 2003 which is hereby incorporated by reference for all purposes. 
    
    
     FIELD 
     The present invention relates generally to wireless networks in general, and more particularly to load balancing in wireless networks 
     COPYRIGHT NOTICE/PERMISSION 
     A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawings hereto: Copyright © 2003, Regents of the University of Minnesota, All Rights Reserved. 
     BACKGROUND 
     Enterprise network wireless local area networks (WLANs) managers and users are reporting several challenges, including security, interference mitigation, dynamic traffic management and user management. While experts believe that security is being addressed by a number of companies and standards, the severity of the interference, dynamic traffic engineering and user management challenges is rising rapidly with the increasing number of deployed WLANs and WiFi enabled laptops, PDAs and cell phones, the convergence of WiFi and 3G/4G cellular systems and the growth in the use of the unlicensed ISM and UNI bands by non-WiFi traffic. 
     A unique performance issue of wireless networks is unpredictable user and application load. Since users of the network are un-tethered and nomadic by nature, they can move from cell to cell sometimes dramatically shifting the traffic loads of the various cells within the extended network. This unpredictable load can cause wide fluctuations in performance causing frustration for end-users expecting the predictability of “wired” networks. 
     Interference can also impact network performance. Interference can come in many forms. Interference can occur when internal elements introduce noise or interference to your environment. For example, an escalator in retail stores, a piece of machinery on a factory floor or copier in an office. This type of interference could be constant or intermittent. Regardless, this interference can have a significant impact on network capacity and performance. 
     Interference can also occur from external elements. For example, a neighboring enterprise or home could set up its own wireless network within the same frequency or spectrum. When this occurs, both networks are now contending for the same airspace. This overlapping interference will drive down the performance of the two networks. 
     The IEEE 802.11 standard uses signal strength assign mobile stations to access points. The rational behind this approach is that a strong signal indicates a good channel with a potentially high throughput. Unfortunately, the access point corresponding to the strongest channel may be overloaded and assigning a new station to it may lead to significant loss in throughput. 
     Another approach to WLAN performance management is balancing users across access points. This method is a simplistic way of balancing workloads in an attempt to improve performance. It assumes that users have similar bandwidth requirements and are experiencing similar channel conditions, counts users, and then allocates equal numbers across access points. What this approach does not consider is users&#39; actual application requirements at a given point in time and the actual channel condition that it sees. A given user or application can overwhelm an access point&#39;s performance thus rendering the network inoperable for other connected users. Thus such approaches fail to consider actual network traffic and channel conditions. 
     In view of the above problems and issues, there is a need in the art for the present invention. 
     SUMMARY 
     The above-mentioned shortcomings, disadvantages and problems are addressed by the present invention, which will be understood by reading and studying the following specification. 
     Systems and methods perform load balancing in a wireless network. The goal of load balancing is to distribute traffic amongst a group of access points to accommodate more users by optimizing capacity allocation, guarantee a minimum level of user experience and maximize resource utilization in the face of dynamic traffic patterns that change with location and time. In particular, one aspect of the systems and methods is the use of weighted mean end-to-end delay across the entire WLAN that is attributable to the wireless portion of the network as a measure of network performance and user satisfaction. The weighting allows some embodiments to provide different quality of service to users and applications. The weighted mean end-to-end delay, the costs of refusing service to a mobile station or forcing a mobile station to switch to another access point may be added to determine whether it is desirable to switch a station to a new access point. A further aspect of the systems and methods is the measurement of network traffic, making predictions and optimizing allocation of station to access points every T seconds, where T is selected by the network manager. 
     The present invention describes systems, clients, servers, methods, and computer-readable media of varying scope. In addition to the aspects and advantages of the present invention described in this summary, further aspects and advantages of the invention will become apparent by reference to the drawings and by reading the detailed description that follows. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a wireless network operating environment in which embodiments of the invention may be practiced; 
         FIG. 2  is a diagram providing further details of a hardware and software environment according to an embodiments of the invention; and 
         FIG. 3  is a flowchart illustrating a method for performing load balancing among stations and access points in a wireless network environment. 
     
    
    
     DETAILED DESCRIPTION 
     In the following detailed description of exemplary embodiments of the invention, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical and other changes may be made without departing from the scope of the present invention. 
     Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     In addition, some portions of the detailed description use the term “optimal”. As used in this specification, “optimal” does not necessarily mean “the best” or “the most satisfactory”, rather optimal is used to mean “better than is currently available.” 
     In the Figures, the same reference number is used throughout to refer to an identical component which appears in multiple Figures. Signals and connections may be referred to by the same reference number or label, and the actual meaning will be clear from its use in the context of the description. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims. 
       FIG. 1  illustrates a wireless network operating environment  100  in which embodiments of the invention may be practiced. In some embodiments, environment  100  includes wireless access points  102  and wireless stations  106 . Wireless access points  106  may be a single function access point, or it may be integrated into a multifunction device such as a wireless access point and router, switch, hub or other network attached device. Wireless access point  104  is typically communicably coupled to a wired network  104 . For example, wireless access point  102  may be communicably coupled to wired network  104  through a cable modem, DSL modem, T1 connection, or other wired connection now known in the art or developed in the future. The wireless network operating environment includes both business networking environments and home networking environments. 
     Wireless stations  106  comprise any type of wireless network enabled device. Examples of such devices include server computers, mainframe computers, personal computers, laptop computers, personal digital assistants (PDAs), cellular phones, and hybrids of the aforementioned devices. In addition, wireless station  106  may be a wireless network enabled home appliance such as home entertainment device (including video and audio devices), and remote control devices. No embodiment of the invention is limited to any particular wireless network enabled device. 
     In some embodiments of the invention, the type of wireless stations and various configuration parameters for the wireless station may be obtained using the Universal Plug and Play Protocol (UPnP). 
     Although  FIG. 1  illustrates two access points and six wireless network stations, it should be noted that no embodiment of the invention is limited to any particular number of access points or stations. 
       FIG. 2  provides further details on a hardware and software operating environment according to embodiments of the invention. In some embodiments, resource allocation and flow control module  220  operates to allocate resources among various stations and access points in a wireless network environment  100 . Various forms of input may be supplied to resource allocation module  220 . Such input includes channel conditions  204 , network topology and configuration data  205 , and offered traffic data  206 . Such data may be obtained from a WLAN/LAN measurement/monitoring module  202 . In addition, input data may come from QoS (Quality of Service) classes  208 , station traffic queue models  210 , BSS and EBSS traffic queue models  212  and channel and throughput PER model  214 . Resource allocation module  220  may use this data along with the methods described below in  FIG. 3  to allocate stations  106  to access points  102 . 
     Analytical Model for End-to-End Delay and Load Balancing 
     It has been observed that: 1) the traffic service time of any station using a given wireless channel at any point of time depends on the number of stations that are transmitting simultaneously over that same channel at that point of time and; 2) analytic and empirical expressions for that service time are available. From these observations, embodiments of the invention use a weighted mean end-to-end delay across a WLAN to capture network performance. A statistical distribution of the number of simultaneously active stations may be identified and used to derive a close form expression for the mean end-to-end delay attributable to the WLAN. 
     For the purposes of this specification, assume that there are N stations  106  associated to an access point  102 . Station i experiences traffic that can be modeled by Poisson arrival process with parameter λ i . Thus the total arrival rate is given by 
             Λ   =       ∑     i   =   0       N   -   1       ⁢       λ   i     .             
In some embodiments, the stations attempt to access the medium according to standard IEEE 802.11 MAC protocol.
 
     Let μ i  be the service rate of station and be defined as follows: 
               μ     i   /   k       =       α   i     ⁢       S   ⁡     (   k   )         t     d   i                 
where td i  is the mean duration of a payload transmission of station i, α i  models loss in throughput due to channel conditions (α i ≦1, where α i =1 represents ideal channel), and S(k) is the per-station saturation throughput given k active stations. An expression for S(k) used in some embodiments is S(k)=B(k)/k, where B(k) denotes the overall throughput when k stations are active. However, it should be noted that the exact form of S(k) is not critical to the various embodiments.
 
     Furthermore, each station may be modeled as a M/M/1 queue and assume that given the number of active stations, the queues at different stations are independent. Thus, the mean end-to-end delay is given by 
                 T   _     =       (       ∑     i   =   0       N   -   1       ⁢       λ   i     ⁢     T   i         )     /   Λ       ,         
where T i  is the total service time at station i. To provide different quality of service,
 
               T   _     =       (       ∑     i   =   0       N   -   1       ⁢       w   i     ⁢     λ   i     ⁢     T   i         )     /   Λ           
may be use instead, where the weights w i  are used to set priorities.
 
     An expression for T i  will now be developed. Let π k  be the probability of having k active stations. Let p i (n/k)=Prob (i th  chain is in state n/k active stations)
 
 p   i ( n/k )=(1−ρ i/k )ρ i/k   n  
 
where
 
                 ρ     i   /   k       =       λ   i       μ     i   /   k           ,         
and ρ i/0 =0.
 
     The probabilities π k  can be calculated (by summing over all possible combination with exactly k active stations) because of the independence assumption that has been made. For example, if N=2:
 
π 2 =(1−p 0 (0/2))(1−p 1 (0/2))
 
π 1 =(1−p 0 (0/1))p 1 (0/1)+p 0 (0/1)(1−p 1 (0/1))
 
π 0 =1−π 1 −π2.
 
     Note however that as the number of stations increases beyond 10, it generally becomes expensive to evaluate the probabilities π k  exactly. One has then to resort either to classifying the traffic patterns into one of a few classes, e.g., heavy web traffic, light web traffic, etc., or use conditional Poisson distributions to approximate these probabilities. 
     Since 
               E   ⁡     [     T     busy   ⁢           ⁢   time       ]       ⁢     E   ⁡     [     T   idle     ]       ⁢     (       1   -     p   0         p   0       )           
it follows that
 
               T   i     =       1     λ   i       ⁢     (       1   -       p   i     ⁡     (   0   )             p   i     ⁡     (   0   )         )             
where
 
                 p   i     ⁡     (   0   )       =         ∑     k   =   0       N   -   1       ⁢       π   k     ⁢       p   i     ⁡     (     0   /   k     )           =     1   -       ∑     k   =   1     N     ⁢       π   k     ⁢     ρ     i   /   k                     
Define
 
                       ρ   _     i     =         λ   i     ⁢       ∑     k   =   1     N     ⁢       π   k       μ     i   /   k             =         ρ   i       α   i       ⁢     E   ⁡     [     k     B   ⁡     (   k   )         ]                   (   1   )               
where
 
ρ i =t d     i   λ i ,
 
                     E   ⁡     [     k     B   ⁡     (   k   )         ]       =       ∑     k   =   1     N     ⁢       π   k     ⁢       k     B   ⁡     (   k   )         .                 (   2   )               
Then
 
                       T   i     =       1     λ   i       ⁢     (         ρ   _     i       1   -       ρ   _     i         )         ,           (   3   )               
and the overall weighted mean end-to-end delay is given by:
 
                     T   _     =       1   Λ     ⁢       ∑     i   =   0       N   -   1       ⁢       w   i     ⁢       λ   i         μ   i     -     λ   i                       (   4   )               
Cost Function
 
     An expression for the cost function that may be used to optimally load balance a wireless LAN will now be provided. In addition to the weighted mean end-to-end delay given by equation (4), it is desirable that in some embodiments, the cost function include penalty terms that capture delays due to network directed roaming in which a mobile station is forced to re-associate with a new access point or traffic from a new mobile station is blocked. The re-association delay is typically on the order of 100 ms to 500 ms. This delay can simply be added to the weighted mean end-to-end delay expression for each station that is directed to roam to a new access point. This delay will be denoted by d re (i). Blocked traffic from station i is assigned a penalty e i (λ i ). One class of penalty functions is specified by the following equation for the derivative e i ′(λ i ). of the penalty with respect to λ i   
                 e   i   ′     ⁡     (     λ   i     )       =     -         (       a   i       λ   i       )       b   i       .             
The parameters a i  and b i  can be used to assign priorities to the traffic of node i.
 
       FIG. 3  is a flowchart illustrating methods for load balancing in wireless networks according to embodiments of the invention. The methods to be performed by the operating environment constitute computer programs made up of computer-executable instructions. Describing the methods by reference to a flowchart enables one skilled in the art to develop such programs including such instructions to carry out the methods on suitable computers (the processor or processors of the computer executing the instructions from computer-readable media). The methods illustrated in  FIG. 3  are inclusive of acts that may be taken by an operating environment executing an exemplary embodiment of the invention. 
     In some embodiments, the balancing algorithm is performed regularly every T seconds, where T is the length of an epoch and is determined by the network manager, to re-balance the network due to potential changes in traffic conditions. The optimization is typically done over a time horizon larger than T, i.e., over several epochs. This is desirable if the re-association delay is on the order of T, since otherwise the algorithm will never attempt to rebalance the network. 
     The balancing algorithm may also be invoked whenever one or more stations joins or leaves the network. The relative loads λ i t di  and the parameters α i  that capture channel condition effects at each station and for each station-AP pair may be obtained from conventional network measurements taken at the APs and feeding hubs and switches as shown in  FIG. 2 , and potentially traffic classification and prediction algorithms. 
     Note that an access point may be considered a station. In the equations below, the J access points are denoted as stations 1, 2, . . . , J and the mobile stations are denoted as stations J+1, J+2, . . . , N. Further, AP 0 is denoted as a dummy AP to which all blocked traffic is associated. The balancing algorithm solves the following optimization problem 
     
       
         
           
             
               
                 min 
                 
                   
                     x 
                     ij 
                   
                   ⁡ 
                   
                     ( 
                     k 
                     ) 
                   
                 
               
               ⁢ 
               
                 
                   1 
                   Λ 
                 
                 ⁢ 
                 
                   ( 
                   
                     
                       
                         ∑ 
                         i 
                       
                       ⁢ 
                       
                         
                           w 
                           i 
                         
                         ⁢ 
                         
                           λ 
                           i 
                         
                         ⁢ 
                         
                           
                             T 
                             i 
                           
                           ⁡ 
                           
                             ( 
                             
                               
                                 x 
                                 ⁡ 
                                 
                                   ( 
                                   k 
                                   ) 
                                 
                               
                               → 
                             
                             ) 
                           
                         
                       
                     
                     + 
                     
                       
                         ∑ 
                         i 
                       
                       ⁢ 
                       
                         
                           
                             x 
                             
                               i 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               0 
                             
                           
                           ⁡ 
                           
                             ( 
                             k 
                             ) 
                           
                         
                         ⁢ 
                         
                           λ 
                           i 
                         
                         ⁢ 
                         
                           
                             e 
                             i 
                           
                           ⁡ 
                           
                             ( 
                             
                               λ 
                               i 
                             
                             ) 
                           
                         
                       
                     
                     + 
                     
                       
                         ∑ 
                         i 
                       
                       ⁢ 
                       
                         
                           v 
                           i 
                         
                         ⁢ 
                         
                           
                             λ 
                             i 
                           
                           ⁡ 
                           
                             ( 
                             
                               1 
                               - 
                               
                                 δ 
                                 
                                   
                                     
                                       x 
                                       ij 
                                     
                                     ⁡ 
                                     
                                       ( 
                                       k 
                                       ) 
                                     
                                   
                                   , 
                                   
                                     
                                       x 
                                       ij 
                                     
                                     ⁡ 
                                     
                                       ( 
                                       
                                         k 
                                         - 
                                         1 
                                       
                                       ) 
                                     
                                   
                                 
                               
                             
                             ) 
                           
                         
                         ⁢ 
                         
                           
                             d 
                             re 
                           
                           ⁡ 
                           
                             ( 
                             i 
                             ) 
                           
                         
                       
                     
                   
                   ) 
                 
               
             
             , 
           
         
       
     
     subject to 
     
       
         
           
             
               
                 
                   
                     
                       x 
                       ij 
                     
                     ⁡ 
                     
                       ( 
                       k 
                       ) 
                     
                   
                   = 
                   
                     { 
                     
                       
                         
                           
                             
                               
                                 
                                   1 
                                   , 
                                 
                               
                               
                                 
                                   
                                     i 
                                     = 
                                     j 
                                   
                                   , 
                                 
                               
                             
                             
                               
                                 
                                   0 
                                   , 
                                 
                               
                               
                                 
                                   
                                     i 
                                     ≠ 
                                     j 
                                   
                                   , 
                                 
                               
                             
                           
                           ⁢ 
                           1 
                         
                         ≤ 
                         i 
                         ≤ 
                         J 
                       
                       , 
                       
                         
 
                       
                       ⁢ 
                       
                         
                           
                             
                               
                                 
                                   
                                     
                                       x 
                                       ij 
                                     
                                     ⁡ 
                                     
                                       ( 
                                       k 
                                       ) 
                                     
                                   
                                   = 
                                   
                                     0 
                                     ⁢ 
                                     
                                         
                                     
                                     ⁢ 
                                     or 
                                     ⁢ 
                                     
                                         
                                     
                                     ⁢ 
                                     1 
                                   
                                 
                                 , 
                               
                             
                             
                               
                                 J 
                                 &lt; 
                                 i 
                                 ≤ 
                                 N 
                               
                             
                           
                         
                         ⁢ 
                         
                           
 
                         
                         ⁢ 
                         
                           
                             
                               
                                 
                                   
                                     
                                       ∑ 
                                       j 
                                     
                                     ⁢ 
                                     
                                       
                                         x 
                                         ij 
                                       
                                       ⁡ 
                                       
                                         ( 
                                         k 
                                         ) 
                                       
                                     
                                   
                                   = 
                                   1 
                                 
                                 , 
                               
                             
                             
                               
                                 J 
                                 &lt; 
                                 i 
                                 ≤ 
                                 
                                   N 
                                   . 
                                 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   5 
                   ) 
                 
               
             
           
         
       
     
     In the above equations, v, and w, are weights that capture the relative priorities and importance given to traffic from station i and re-association (roaming) delays, x ij (k)=1 means that station i is associated to access point j in epoch k (i.e., traffic splitting is not considered), x i0 (k)=1 means that station i is blocked, δ i,m  is a Kronecker delta function, that is δ l,m =1, if l=m and δ l,m =0 otherwise, and T i (  x(k) ) denotes the mean end-to-end delay experienced by station i corresponding to the association/blockings and re-association described by {right arrow over (x)}(k), where {right arrow over (x)}(k)=[x ij (k)] is a vector denoting all associations, blockings or re-association commands. 
     Optimization problem (5) is a nonlinear integer optimization problem that can be solved by any one of several known approaches, such as lexicographic enumeration, pseudo-Boolean programming or generalized branch and bound. 
     Making the following observations can derive an alternative approach. Note first that if no traffic is blocked and there is no re-association or network directed roaming cost, the optimal association of stations to access points (APs) will balance the weighted total delay across access points. For example, if there are 3 access points and if d i =Σ all stations k associated to i w k λ k T k  denotes the weighted delay experienced by all traffic d i =E associated to AP i, then the optimal solution will be characterized by d 1 ≈d 2 ≈d 3 . Note that exact equality is not possible because of the discrete nature of the association process, i.e., all the traffic from a given station is associated to a given access point. In the presence of blocked traffic and no re-association or network directed roaming cost, the optimal solution is attained when the delays at all access points, including access point 0 whose delay is 
                 ∑   i     ⁢         x     i   ⁢           ⁢   0       ⁡     (   k   )       ⁢     λ   i     ⁢       e   i     ⁡     (     λ   i     )           ,         
differ by approximately the cost of directing a mobile station to roam to a different access point. Again, the result is approximate because of the discrete nature of the association process.
 
     The optimization method of various embodiments attempts to equalize the weighted delay experienced by all traffic associated to each AP across all APs, including AP 0. 
     The method begins with an initialization procedure (block  302 ). This step may not be needed when the network is operational and no new node joins the network since each AP will then have a certain number of stations associated to it. 
     If a new station joins the network, the method initially assigns it to the AP with lowest mean end-to-end delay that it can communicate with. 
     On the other hand, in the unlikely event that more than one station join the network simultaneously the method can assign them using any heuristic or by using any of the known or current load balancing techniques, such as signal strength based assignment, or assignment based on the number of stations associated to a given AP. The first approach is standard in 802.11 networks while many vendors use the second. 
     Next, the method re-computes the mean end-to-end delay at each AP. In some embodiments, the method uses equations (1)-(4) defined above, the cost of blocking traffic as given in equation (5), and the actual number of stations associated to each AP (block  304 ). Next, a check is made to determine if the delays are equal modulo the cost of directing a mobile station to roam to a different access point (block  306 ). If so, the procedure terminates. 
     Otherwise, the method next attempts to rebalance the network (block  308 ). In some embodiments, at the beginning of this step the method records the current value of the sum of the mean end-to-end delays in each AP. If the delays are unequal and differ by more than the cost of directing a mobile station to roam to a different access point, the method identifies the AP with the longest mean end-to-end delay. It then computes the effect of moving each station associated to that AP one at a time, keeping all other stations associated to their current APs. Each time a station is moved, the method re-computes the cost function as a result of the shift. In some embodiments, equations (1)-(4) and the cost function in (5) are used to re-compute the cost function. In particular embodiments, the system executing the method records the value of the total cost function corresponding to each new mobile station-access point association. Finally, the system selects the station-access point pair that leads to the minimum overall cost value and moves the station to that access point. 
     Next, at block  310 , a check is made to determine if the value of the cost functions is smaller than its value at the beginning of the tasks executed at block  308 . If so, the algorithm returns to block  308 . 
     Otherwise, a check is made to determine if the mean end-to-end delays at all APs are equal or differ by less than the cost of directing a mobile station to roam to a different access point (block  312 ). If so, the procedure terminates. 
     Otherwise, after each re-assignment step, the method proceeds to block  314  and compares the old value of the cost function with its new value. If the new value is lower than the old value, the algorithm returns to block  308 . Otherwise, the algorithm attempts to decrease the value of the cost function by moving a station from the AP that has experienced an increase in the number of its associated stations to other APs using the procedure described with respect to block  308 . If at the end of this re-balancing step, the value of the cost function is still larger than or equal to its value at the very beginning of the preceding block  308  (prior to the first assignment done in this iteration), the procedure terminates and the algorithm undoes the two moves performed in this step and the preceding block  308 . 
     As those of skill in the art will appreciate, the load balancing procedure described above may lead to network directed roaming, e.g., forcing stations to de-associate from an access point and re-associate with another. In some embodiments, this can be accomplished using standard 802.11 MIB functions, such as dot11DisassociateStation and dot11DeauthenticateStation issued by the access point. 
     Additionally, the access points themselves can be controlled via the HTTP or Telnet interfaces provided by hardware vendors. 
     Furthermore, the methods illustrated above may be executed by a centralized module such as resource allocation and flow control module  220 , or they may be executed in a decentralized manner. For example, the Universal Plug and Play protocol or other equivalent system may be used to obtain information about the type and state of network connections, devices, services and protocols in use in the wireless network environment. Such information may be used in the load balancing methods described above. Further such information may be used to weight applications and services in the load balancing process. For example, high bandwidth uses such as video and audio streaming applications may be assigned a different weighting from lower bandwidth uses such as generalized web browsing or email applications. 
     CONCLUSION 
     Systems and methods for providing load balancing in wireless networks have been described. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the present invention. 
     The terminology used in this application is meant to include all of these environments. It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. Therefore, it is manifestly intended that this invention be limited only by the following claims and equivalents thereof.