Abstract:
A method for enabling different priority messages in a contention-based wireless network where units use a common channel. Relative to high priority messages, if the channel is not busy when a message is ready for transmission, then the message is transmitted immediately. When the channel is busy, the message is not transmitted until the channel becomes available and a selected back-off period (while the channel is available) expires. Back off periods are illustratively randomly selected by the units. Low priority messages are similarly not transmitted when the channel is busy, and additionally are not transmitted for a preselected pre-emption interval when the channel is available to high priority messages but not to low priority messages. Like with high priority messages, low priority messages that not transmitted when ready are held back a back-off period before they are transmitted.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    This relates to transmission protocols and more particularly, to a protocol for transmitting messages in a network that employs a collision-based protocol. The network may be an ad hoc network. 
         [0002]    For various reasons, mobile ad-hoc networks are best served by a collision-based architecture, and at least in some applications it is desirable to employ a protocol with a two-level QoS scheme. In at least one form of collision-based networks, a unit that wishes to transmit listens to the common channel over which other units might be transmitting and when it has a message (e.g., a packet) to transmit and it determines that the channel is available, it proceeds to transmit the message. When the unit determines that the channel is unavailable, it obtains a delay measure (back-off interval), which typically is a random value within a predetermined range, waits for a time corresponding to the obtained back-off interval, and then again determines whether the channel is available. If so, the unit transmits the message. Otherwise, the unit again waits the same (or different) back-off interval and tries again. 
         [0003]    One well known collision-based approach employs the 802.11 protocol. While the 802.11 protocol provides a QoS facility, the ability to have different QoS levels needs base stations to administer the protocol, but use of base stations is generally disfavored in mobile ad hoc networks because it is desirable to confer on these networks a highly alterable constitution. The desirable approach, therefore, is one that does not require the use of base stations. 
       SUMMARY OF THE INVENTION 
       [0004]    An advance in the art is obtained by employing a collision-based protocol that is suitable for wireless networks, such as the 802.11 which employs CSMA/CA (carrier sense multiple access—collision avoidance), and augmenting the protocol to the extent of modifying the operation of a station that wishes to transmit a low priority message. Thus, in accordance with a known protocol, a unit that wishes to transmit a message and finds the channel unavailable obtains (or chooses) a back-off interval, and once the channel becomes available begins to decrement the interval. The decrementing is suspended whenever it is detected that the channel is unavailable. Once the back-off interval expires the unit sends the message. This insures that the unit refrains from transmitting while the channel is busy. In accord with the principles disclosed herein, for high priority messages the protocol is as described above. For low priority messages the unit is caused to refrain from transmitting during the back-off interval and, additionally, the unit is caused to refrain from transmitting for a preselected pre-emption interval while the channel is not busy. During the pre-emption interval high priority messages can access the channel without contention from low priority messages. 
         [0005]    Embodiments that employ no back-off interval at all are also possible. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]      FIG. 1  is high level block diagram of a unit that operates in a wireless contention-based network; 
           [0007]      FIG. 2  is a block diagram of a unit that is constructed to handle outgoing messages of both low priority and high priority; and 
           [0008]      FIG. 3  is a flow diagram of the process encompassed by processor  41  in  FIG. 2 . 
       
    
    
     DETAILED DESCRIPTION 
       [0009]    In a contention-based network it is possible to have units that inherently only have low priority outgoing messages, high priority outgoing messages, or both low priority and high priority messages.  FIG. 1  is a high level block diagram of a unit operating in a contention-based wireless network that has messages of only one priority level. Element  11  is a receiver, which applies received signals to processor  12 . Processor  12  constructs received messages into a predetermined format and sends them to application module  15 , and continually provides a “channel busy” signal, CB(i), that indicates whether the channel is busy; i.e., CB(t)=1 means that at time t the channel is busy. This channel-busy indication signal on line  16  is applied to processor  13 , which is also sensitive to outgoing messages that are provided to processor  13  by application module  15 . Processor  13  determines when a provided outgoing message is applied to transmitter module  14 . 
         [0010]    As indicated above, low priority messages are precluded from being transmitted during a preselected pre-emption interval even when the channel is not busy. This leads to the situation that when a low priority message is ready to be transmitted and the channel is not busy it is necessary to know whether the not-busy channel is in the midst of the LPPI and, hence, “busy” as far as low priority messages are concerned. In accord with the illustrative embodiment disclosed below, the LPPI follows immediately after the channel ceases to be busy, and that makes it easy to determine whether the channel is in the midst of the LPPI. Specifically, the channel enters the LPPI at time t if CB(t)=0 and CB(t−LPPI)=1. 
         [0011]    The wireless unit of  FIG. 1  may be one that transmits only high priority outgoing messages, or low priority outgoing messages.  FIG. 2  is a block diagram of a unit that sometimes creates high priority outgoing messages and other times creates low priority outgoing messages. 
         [0012]    In accord with the illustrative embodiment presented in  FIG. 2 , elements  11 ,  12 ,  15  and  14  are the same as in  FIG. 1 , and element  13  of  FIG. 1  is replaced with element  13 ′. Illustratively, each message that is provided by application  15  to element  13 ′ contains a field that identifies the message as a low priority message or a high priority message. Within element  13 ′, the provided message is applied to processor  41  which parses the message and identifies the priority of the message. Based on this parsing, processor  41  controls switch  42  to send the provided message either to high-priority queue  43  or to low-priority queue  44 . Correspondingly, processor  41  updates an internal count of the number of messages in queue  43  and queue  44 . Queues  43  and  44  are first-in-first-out (FIFO) queues, where the messages are stored at a tail of the queue and messages are taken out at a head of the queue. A message is said to be “popped” out of the queue when it is removed from the head of the queue. 
         [0013]    In accord with one illustrative embodiment, messages in queue  43  always take precedence over messages in queue  44 . That is, when a message is queued in queue  43 , processor  41  executes a process for high priority messages, and only when queue  43  is empty does processor execute a process for low priority messages. While in the course of executing the process for low priority messages, if a high priority message arrives, the executing process is suspended and the process for high priority messages is executed. 
         [0014]      FIG. 3  is a flow diagram of an illustrative process in accord with the principles disclosed herein that is executed by processor  41  or the  FIG. 2  unit. Although embodiments that employ no back-off at all can benefit from the principles of this invention, the  FIG. 3  flow diagram assumes that back-off is employed. The simple modification of removing some steps would results in a method for embodiments that do not use back-off. 
         [0015]    Accordingly, processor  41  includes a counter N that is used for counting down a back-off interval for high priority messages, a counter M that is used for counting down a back-off interval for low priority messages and a counter L for counting down the LPPI. Counters N and M are set, respectively, to A and B in step  21 . Values A and B may both be 0, may be equal to each other but greater than zero, and may also be different from each other. Step  21  also sets back-off flag x to 1. 
         [0016]    In applications where a broadcast by one unit elicits a response from a plurality of units, it is advantageous for A or B, or both, to not be equal to 0 (depending on the kind of priority the response message has), because should the channel be not busy it is not desirable for those units to attempt to transmit the response message essentially concurrently. It is advantageous, however, or the values of one unit to be different from the corresponding values of another unit. This may be arranged by each unit choosing A and B randomly (within a given range, of course) or by means of some other mechanism. 
         [0017]    From step  21  control passes to step  22 , which determines whether queue  43  is empty. If it is, meaning that there are no high priority outgoing messages ready for transmission, control passes to step  23 , which determines whether queue  44  is empty. If it is, meaning that there are no low priority outgoing messages ready for transmission, control returns to step  22 . This looping through steps  22  and  23  continues until a message is stored in one of the queues. 
         [0018]    When, for example, a high priority message arrives and it is stored in queue  43 , control passes from step  22  to step  24 . Step  24  determines whether CB(t) is true. If not, meaning that the channel is not busy, control passes to step  27 . Step  27  determines whether N=0, and on the first pass through step  24  step  27  finds that N is equal to A. In embodiments where A, and hence the initial value of N, is greater than 0, control passes to step  28  where N is decremented, and control returns to step  22 . When N is 0, control passes to step  30 . Step  30  pops the message from queue  43 , applies it to multiplexer  45 , directs the message to transmitter element  14 , and element  14  transmits the message. Control then returns to step  21 . 
         [0019]    When step  24  concludes that the channel is busy, control passes to step  25 . Step  25  determines whether flag x is equal to 1, and if so, passes control to step  26  which sets counter N to the “busy channel back-off interval for high priority messages,” B-OFF(H), selected for the unit, and passes control to step  29 . Step  29  sets flag x to 0, and returns control to step  22 . In embodiments where A is greater than 0 the “channel busy back-off interval” may be equal to A, or it may have some other value. As in the prior art, the value of B-OFF(H) may be selected randomly in order to diminish possible collisions with other units. 
         [0020]    The process cycles through steps  22 ,  24  and  25 , as long as the channel is busy. When the channel becomes available, step  24  passes control to step  27 ; and from step  27 , as disclosed above, control eventually passes to step  30  where the message is transmitted. 
         [0021]    It may be appreciated that while the channel is available and the  FIG. 3  process is waiting for its back-off interval to expire (decrementing counter N toward 0 in step  28 ), the channel may become busy. In such an event, the process again cycles through steps  22 ,  24  and  25 , as described above, keeping the value of N unchanged. 
         [0022]    When a low priority message arrives (when Queue  43  is empty), it is stored in queue  44 , and control passes from step  23  to step  31 . Step  31  determines whether the channel is busy. 
         [0023]    When step  31  determines that the channel is busy, control passes to step  32 . Step  32  determines whether flag x is 0. If not, control passes to step  33 , which sets counter M to the unit&#39;s “busy channel back-off interval for low priority messages,” B-OFF(L). Control then passes to step  34 , which sets flag x to 0 and returns control to step  22 . When step  32  finds that flag x is 0. control returns to step  22  directly. Thus, when a low priority message is ready to be transmitted and there is no high priority message that is ready to be transmitted, while the channel is busy the process cycles through steps  22 ,  23 ,  31  and  32  keeping the value of counter M unchanged. 
         [0024]    When step  31  determines that the channel is not busy, control passes to step  35 , which determines whether M is greater than 0. If so, control passes to step  36  where M is decremented, and control returns to step  22 . 
         [0025]    When step  35  determines that M=0, control passes to step  37  where the LPPI is handled. In accord with one approach whenever step  37  is reached, the full value of the LPPI is tacked on. That is, the value of the LPPI is represented by a counter, L, and counter L is set to a chosen value upon entry into step  37 ; i.e., whenever it is detected that the channel switched from being busy to being not busy. Thereafter, counter L is decremented but only if the channel is not busy. When counter L reaches 0 it is concluded that the LPPI expired. In accord with another approach, upon entry into step  37 , if the value of counter L is 0 then it is set to the aforementioned chosen value. Otherwise, it is left unchanged. In this approach when the channel is busy, the decrementing of the LPPI counter is also suspended, but when the channel becomes not busy, the decrementing of the counter resumes. Again, when counter reaches 0 it is concluded that the LPPI expired. 
         [0026]    Once the LPPI expires, control passes to step  38 . Step  38  pops the message from queue  44 , applies it to multiplexer  45 , directs the message to transmitter element  14 , and element  14  transmits the message. Control then returns to step  21 . 
         [0027]    It may be appreciated that while the channel is available, a low priority message is present in queue  44 , queue  43  is empty, and the  FIG. 3  process is waiting for the back-off interval to expire (decrementing counter M toward 0) and then for the LPPI to expire (decrementing counter L toward 0), the channel may become busy. In such an event, the process cycles through steps  22 ,  23 ,  31  and  32 , as described above, keeping the value of M unchanged. If a high priority message enters queue  43  at such a time, control passes from step  22  to step  24 , and the  FIG. 3  process operates as disclosed above relative to high priority processes. The value of M remains unchanged while the process handles the high priority messages in queue  43 . When that high priority message is transmitted and queue  43  is empty, the  FIG. 3  process returns to decrementing M once it again finds the channel not busy. 
         [0028]    There may be a need in some applications to have an interframe interval that follows immediately after the channel becomes available. This is akin to having another pre-emption interval. A slight modification to the  FIG. 3  method can provide for interframe intervals by simply increasing the LPPI value to which counter L is set in step  37 , and by providing another, short pre-emption interval between steps  27  and  30 . 
         [0029]    It should be noted that whereas the LPPI is a time interval, the  FIG. 3  method employs a counter to count-down the LPPI, and the counting down is a function of the clock that propels the  FIG. 3  method, and the time that it takes to execute the cycle represented by steps  22 ,  23 ,  29 ,  30 ,  32 , and  33 . Clearly, there is a linear relationship between the clock, the cycle times, and the LPPI, so a count stands in the shoes of a time interval. If the clock is very fast and the desired granularity of the LPPI is not very fine, a delay man be included in, for example, step  31 , to reduce the number of cycles that are required to count-down the LPPI. 
         [0030]    The above disclosed the principles of this invention by means of an illustrative example, but it should be realized that a person skilled in the art can make various modifications and improvements that are explicitly disclosed herein in detail but are nevertheless within the spirit of the disclosure and the scope of the invention claimed below. 
         [0031]    To give one example, in some embodiments it is possible to do without the “by channel back-off interval” for low priority messages, or high priority messages, or for both. In embodiments step  26 , or step  31 , or both, are not necessary. That is, when no back-off interval is employed, a high priority message is sent as soon as the channel is available, and a low priority message is sent as soon as the channel is available and the LPPI expires. 
         [0032]    Another example is embodiments can have more than two levels of message priorities. Such embodiments are effected by providing different back-off intervals for the different priorities.