METHOD OF CONGESTION CONTROL FOR WIRELESS MESSAGING SYSTEMS

Abstract: The present invention provides a method for congestion control at multiple levels in a wireless messaging system. Unlike previous systems that only responded to congestion in one way, the present invention responds to each incoming message packet to a receiving component with a reply that indicates: whether or not the message packet has been accepted (170, 176, 178); the level or function at which the congestion is occurring for rejected message packets (156, 160, 164, 168); and a specific delay time that the sender should wait before sending the next message packet (172). The delay time may be varied in order to control the rate of information flow. In this way, if an area becomes congested and then clears, a "slow start" technique may be used; that is, the rate can be turned back up slowly rather than just "opening the floodgates". Temporary congestion queues in the sender are used to hold message packets addressed to congested areas.

Description: METHOD OF CONGESTION CONTROL FOR WIRELESS MESSAGING SYSTEMS Related Applications The benefit of the filing dates of provisional applications Serial No. 60/021,617, filed on July 12, 1996, and Serial No. 60/022,045, filed on July 22, 1996, is hereby claimed for this application under 35 U.S.C. § 119(e). Field of the Invention The present invention relates to wireless messaging systems in general, and in particular to methods of congestion control for wireless messaging systems. Background of the Invention Wireless messaging systems such as paging systems have undergone significant changes in the past twenty years. Early paging units were simple radio receivers that beeped upon receipt of a paging signal from a paging service. The user wearing the paging unit would then take some predetermined action upon receipt of the paging signal, such as calling the paging service by conventional telephone for a message. The user had no other choice in how to respond when the paging signal was received, because the paging signal did not contain any information concerning the nature of other action to be taken. With advancements in paging technology, it became possible to send message data to a paging unit. This message data can include alphanumeric messages that inform the recipient of the appropriate action to take. For example, a paging message may tell the user to call home, call the office, stop by the dry cleaners, etc. Further, advancements have increased the amount of information being sent to paging devices. For example, while a numeric page typically contains only 128 bits of information, a digitized voice message may contain 10,000 bits. As wireless messaging technology advances, future messaging devices will be able to receive and transmit even more information. As the capabilities of wireless messaging systems and the number of users have increased, signal interference and congestion have become more of a concern. Congestion is defined as the inability of all or part of the wireless messaging network to process messages because of a lack of resources, such as CPU processing ability, RAM memory, or the bandwidth of the medium. When congestion occurs, performance of the wireless messaging system tends to degrade sharply. The methods of dealing with signal congestion in wireless messaging systems are controlled by the particular set of protocols that govern communications between components within the wireless messaging system. In general, protocols are sets of rules that govern the form, format, data content and information flow sent over communication links that connect different devices. Wireless messaging systems use a wide range of protocols to provide communications between different components. One of the most basic methods of congestion control used by several protocols is the "stop-and-wait" method. The stop-and-wait method requires that a sending component be able to send messages or other data to a receiving component, and that the receiving component be able to send back an acknowledgment signal to the sending component that indicates that the message has been successfully received and accepted. The sending component is designated as a "sender" and the receiving component is designated as a "receiver." This method is called "stop-and-wait" because after sending a message, the sender stops and waits for the acknowledgment that the message has been successfully received and accepted before it sends another message. Thus, there is at most a single outstanding message that has been sent at any given time. This method is inefficient because the wireless messaging network may have the capacity to send more than one message at any given time. Protocols using more advanced methods allow the sender to send several messages before it receives an acknowledgment. A more advanced method for congestion control is the "sliding window" method, which is described in detail in Computer Networks, A. Tanenbaum, 1989. The sliding window method is the basis of many standard network protocols, such as TCP and SPX. In one type of sliding window method, the sender assigns a sequence number to each message, ranging from 0 up to some maximum number. The sender is designated a maximum number of sent messages that it is allowed to have outstanding at any given time. This maximum number determines the size of the sending window. The sending window contains the list of sequence numbers corresponding to messages that have been sent by the sender but not yet acknowledged by the receiver. Once the sending window contains the maximum number of sequence numbers that it is allowed to hold, then the sender cannot send additional messages. When an acknowledgment arrives from the receiver for a sequence number in the sending window, then the window clears the sequence number and the window can accept one additional sequence number, thus allowing the sender to send out the next message. Since messages corresponding to sequence numbers currently within the sending window may ultimately be lost or damaged in transit, the sender must keep all those messages in its memory for possible retransmission. Thus, the sender must have a buffer large enough to hold as many messages as there are sequence numbers in its window. The sender also records the time at which each message is sent, and if the sender does not receive an acknowledgment before a "time-out period" elapses, it retransmits the message. The receiver also maintains a receiving window, corresponding to the number of out-of-order sequence numbers it is permitted to accept. Any messages with sequence numbers falling outside the receiving window are discarded without comment. A receiver window with a size of " 1 " means that the receiver only accepts messages in their consecutive order as they were designated by their sequence numbers. For larger receiver windows, messages may be received out of order up to the maximum number allowed by the receiver window. While protocols using the sliding window method do implement some level of congestion control, they have a variety of disadvantages. One of the major disadvantages is that the sender window receives no indication of the status of a message until it receives an acknowledgment indicating that the message has been successfully received and accepted. Thus, whether congestion is present or some other problem exists, the only information as to the problem that the sender has is that it is not receiving acknowledgments in response to sent messages. Another disadvantage of protocols using the sliding window method is that the receiver window does not respond any differently when there is only one empty space in the window than when there are many. Thus, regardless of how fast the receiver window is filling up, or how close the receiver window is to being full, as long as it can continue to accept incoming messages, it sends back only a simple acknowledgment to the sender. An additional disadvantage of protocols using the sliding window method is that the sender and receiver windows can only indicate general congestion at one place in the paging network, namely, at the receiver. In other words, even if there are several levels or types of functions that the receiver performs, congestion in any one of them will cause the same result, namely, that no acknowledgment signals will be sent in response to incoming messages to the receiver. An additional disadvantage of protocols using either the stop-and-wait or sliding window methods is that once congestion occurs, the flow of messages is completely stopped. Also, since the sender then does not receive any type of acknowledgment in response to the messages it has sent, it may try to resend them, which only further contributes to the congestion in the network. The present invention is directed to providing a method of congestion control for overcoming the foregoing and other disadvantages. More specifically, the present invention is directed to a method of congestion control whereby a sender receives a reply indicating the type of congestion that is occurring and a time interval that the sender should wait before sending additional messages. Summary of the Invention A method for controlling congestion in a wireless messaging system is provided. The messaging system includes nodes between which information or commands are transferred. The information may be in the form of message packets. A node that is sending message packets is designated as a sender, and a node that is receiving message packets is designated as a receiver. The receiver node includes at least one component required to process the message packets. A list of components to which the message packet will be sent is included in the address of the message packet. In accordance with one aspect of the invention, when the sender sends a message packet to the receiver, the receiver responds with a reply that specifies: whether or not the message packet has been accepted; whether any components in the receiver to which the message was routed are congested; and, if so, the delay time the sender should wait between sending additional message packets to the congested component. In accordance with another aspect of the invention, when the sender receives a reply indicating that there is congestion in a previously uncongested component, the sender creates a temporary congestion queue to hold the message packets addressed to the congested component. The temporary congestion queue includes a timer with a set time for determining the delay between sending message packets to the congested component. Once the temporary congestion queue is created, the sender examines the addresses of the message packets before sending them to the receiver, and message packets addressed to a congested component are placed in the temporary congestion queue. If a sender receives a reply stating that the message was rejected because of congestion, the message is placed in the temporary congestion queue and sent again after a delay specified by the receiver. If a sender receives a reply stating that the message was accepted by a congested receiver, the sender will wait for the delay time specified by the receiver before sending any subsequent message. When there are no more messages in the temporary congestion queue at the end of the delay time, or when the previously congested component is no longer congested, the temporary congestion queue is ended. Brief Description of the Drawings The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: FIGURE 1 is a block diagram of a wireless communication system; FIGURE 2 is a block diagram of the messaging switch system of FIGURE 1; FIGURE 3 is a block diagram of the output messaging switch for the one-way paging system of FIGURE 1; FIGURE 4 is a block diagram of the output messaging switch for the two-way paging system of FIGURE 1; FIGURE 5A is a flow chart of a message sending routine of a sending component; FIGURE 5B is a flow chart of a message receiving and reply routine of a receiving component; FIGURE 5C is a flow chart of a reply receiving routine of a sending component; FIGURE 5D is a message sending routine of a temporary congestion queue; FIGURE 6 is a time line illustrating messages and replies that are sent and received between a home messaging switch and an output messaging switch; and FIGURE 7 is a timing diagram for the messages and replies of FIGURE 6. Detailed Description of the Preferred Embodiment The major components of a wireless communication system 10 are illustrated in FIGURE 1. One of the most common types of wireless messaging systems is a paging system. A common type of information that passes through paging systems are message packets that are entered by a user to be broadcast to a particular paging unit. Message packets of this type are entered into the wireless communication system 10 via a public switched telephone network 20 through either a standard telephone 16 or a computer 18. The message packets are then transferred to an input messaging switch 22 that is an input component to a messaging switch system 21. Message packets are then passed via a communication link 50 through an interswitch protocol network 24 and via a communication link 51 to a home messaging switch 23 that contains information specific to the paging unit for which the message packet is destined. Communication links 50 and 51 may be either simple wires, leased telephone lines, microwave links, satellite links, or any other suitable communication path. The message packet is then transferred via communication link 51 back through the interswitch protocol network 24 to one of the two output messaging switches 36 or 44, via communication links 52 or 53, respectively. Output messaging switches 36 and 44 are output components of the messaging switch system 21. Message packets from output messaging switch 36 are sent via a communication link 56 to a one-way transmitting system 30. Message packets sent to a one-way transmitting system 30 are broadcast via transmitting stations 38 and 40 to paging units within their geographical region. Message packets from output messaging switch 44 are sent to a two-way transmitting system 32 via a communication link 58. Message packets sent to a two-way transmitting system 32 are sent through a base station network 46 and then selectively sent via communication links 62 or 64 to base stations 48 or 49, respectively, to be broadcast. Base stations 48 and 49 are capable of both broadcasting message packets and receiving signals from remote paging units. One feature of the two-way paging system 32 that is not available in the one- way paging system 30 is the use of a "locate" signal. The specific geographical area in which a particular paging unit is located may be determined by simultaneously broadcasting a unique "locate" signal from the base stations 48 and 49. Once the paging unit that responds to the unique locate signal has received the signal, it sends back an "acknowledge" signal to the base stations 48 and 49. One or both of the base stations 48 and 49 receive the acknowledge signal and send information as to the strength of the signal back to the output messaging switch 44 for analysis in determining which base station is closest to the paging unit. Then the message packet for that paging unit may be broadcast from the closest base station. As will be described in more detail below, the use of a single base station to broadcast messages to paging units may require another level of congestion control than is necessary in one-way transmitting systems. The protocols used by the messaging switch system 21 govern how congestion is controlled for messages being sent between the messaging switches 22, 23, 36, and 44. While the messages being . sent will often be referred to as "message packets", or simply "messages", in this application, they may actually be any type of application protocol data unit (APDU), which is a "packet" form in which data or commands may be sent between any of the messaging switches. The messaging switch system 21 includes the input messaging switch 22 as an input device, the home messaging switch 23 as an information storage device, the output messaging switches 36 and 44 as output devices, and the interswitch protocol network 24 which connects all of the messaging switches. In the preferred embodiment, the input messaging switch 22 and the home messaging switch 23 may both be aspects of the same physical piece of equipment. Key components in each messaging switch are assigned a "node" designation in the messaging switch system 21. A node may represent any number of components, i.e., in an input messaging switch, a node may represent a group of incoming telephone lines; in a home messaging switch a node may represent a memory storage area for a particular paging unit; and in an output messaging switch a node may represent transmitters in a particular geographic region. Each node is given a unique identification number which the messaging switch system 21 then uses to identify the location of each key component in the network. As shown in FIGURE 2, input messaging switch 22 includes nodes Nl, N2 and N3; home messaging switch 23 includes nodes N4, N5 and N6; output messaging switch includes node N7; and output messaging switch 44 includes node N8. In actual practice, any messaging switch may include any number of nodes. Each node includes a memory area and a clock; thus, nodes Nl to N8 include memories ME1 to ME8, and clocks CL1 to CL8, respectively. As will be described in more detail below, the memories and clocks may be used for congestion control. Specifically, congestion queues may be created in the memory areas. While the use of the nodes is described below with reference to a message packet being sent from the PSTN 20 through the paging switch network to a particular paging unit, it should be understood that different types of message packets or APDUs may be sent through different paths and through any order of nodes. Nodes Nl, N2 and N3 are included in input messaging switch 22 and may each represent unique groups of input lines from the public switched telephone network 20. The input messaging switch 22 accepts messages from the public switched telephone network 20 and then, as described below, sends the messages to the appropriate home messaging switch 23 that is assigned to the particular paging unit that is to be paged. Message packets from the node Nl, N2 or N3 of input messaging switch 22 are sent through interswitch protocol network 24 to node N4, N5 or N6 in home messaging switch 23. Nodes N4, N5 and N6 are home nodes that may generally represent information storage areas required for each individual paging unit. All information sent to and from the paging unit passes through the paging unit's home node. The home node stores incoming message packets and subsequently sends the messages through output switches to the paging unit, as described below. The home node also keeps the database record regarding a paging unit, including information as to the geographical area in which the message packets for that paging unit are to be broadcast. Message packets from the node N4, N5 or N6 of home messaging switch 23 are sent through interswitch protocol network 24 to node N7 or N8 in output messaging switch 36 or 44, respectively. Nodes N7 and N8 may generally be associated with certain transmitters or geographical areas covered by the transmitters. Thus, nodes N7 and N8 may represent transmitters for a particular area of coverage, such as a particular city, and message packets to be broadcast in that city would be sent to that node. For purposes of illustrating the congestion control methods of the present invention, nodes N7 and N8 in FIGURE 2 are also shown to contain certain applications, channels and points. Applications, channels and points are considered to be "components" within each of the nodes. A component may be any type of element within the nodes, including software applications and similar non-physical entities which act to process the message packets or commands. In some embodiments the nodes themselves may be considered to be a type of component. Node N7 includes application API and channels CHI and CH2, and node N8 includes application AP2, channels CH3 and CH4, and points Pl and P2. "Channels" refer to radio frequency channels. Once a message packet has been received at a node, it may be broadcast from the transmitters associated with the node over one or more channels. Thus each node may have several radio frequency channels that it can use to broadcast message packets from its transmitters. In addition to broadcasting, other functions may also be performed at the nodes, such as looking up information in a database at the node. Such functions are called "applications." In addition, in the two-way transmitting system 32, the message packet may be designated to go to a particular base station 48 or 49 (FIGURE 1). The base stations 48 and 49 may be represented as "points" in the node. As will be described below, a point generally refers to any component that is unknown to the sender at the time a message packet is sent. Thus, in summary, when a message packet is sent by a home messaging switch to an output messaging switch, the message packet may require use of a particular node, application, channel and/or point. The above components in the output messaging switches are related to some of the types of congestion that can occur in the output messaging switches. While the types of congestion and methods of congestion control are described below with reference to the output messaging switches, it should be understood that similar types of congestion may occur in any of the messaging switches, and that the methods of congestion control described below may be equally applied to any similar types of congestion. The object of congestion control is to limit the amount of data being sent to the part of the paging network that is congested. FIGURES 3 and 4 conceptually illustrate some of the communication paths for which congestion can occur. The communication paths shown in FIGURES 3 and 4 are for illustrative purposes only and do not necessarily represent actual physical connections. As shown in FIGURE 3, a communication line 70 reaches node N7 from communication link 52. From line 70, a line 72 reaches application API. From application API, lines 74 and 76 reach channels CHI and CH2 , respectively. As shown in FIGURE 4, a communication line 80 reaches node N8 from communication link 54. From line 80, a line 82 reaches application AP2. From application AP2, lines 84 and 86 reach channels CH3 and CH4, respectively. From channels CH3 and CH4, lines 91 and 94 reach point Pl and lines 92 and 95 reach point P2. Four types of congestion can be explained with reference to FIGURES 3 and 4, including: association, application, channel and point congestion. Association congestion occurs when an entire node is congested, such as when all of the components in a node are congested or some other problem exists so that the node cannot accept additional messages. Association congestion at node N7 or N8 would prevent additional messages from reaching the nodes from line 70 or 80, respectively. Application congestion occurs when an application is congested, such as would prevent additional messages from reaching the application API or AP2 from line 72 or 82, respectively. Channel congestion occurs when a channel is congested, such as would prevent additional messages from reaching the channel CHI, CH2, CH3, or CH4 from line 74, 76, 84 or 86, respectively. Point congestion occurs when a point is congested, such as would prevent additional messages from reaching the point Pl or P2 from lines 91 and 94 or 92 and 95, respectively. As will be described below, point congestion is different from the other types of congestion. According to the congestion control methods of the present invention, the nodes in the output messaging switches 36 and 44 respond to each incoming message sent by a node in home messaging switch 23 with a reply that indicates: (1) whether or not the message has been accepted; (2) the component at which the congestion is occurring if congestion is indicated, and (3) a specific delay time that the node in the home messaging switch 23 should wait before sending the next message. The delay time may be varied in order to control the rate of information flow. In this way, if a component becomes congested and then clears, a "slow start" technique may be used; that is, the rate can be turned back up slowly rather than just "opening the floodgates." When the home messaging switch 23 receives a reply from an output messaging switch that indicates that a component is congested, it creates a temporary congestion queue for messages that require use of that component. For example, if a message was sent from node N4 in home messaging switch 23 to node N7 in output messaging switch 36 and was to be broadcast on channel CHI, but then a reply came back indicating that channel CHI was congested, then a temporary congestion queue would be created for channel CHI in the memory ME4 in node N4. Then all messages requiring use of channel CHI would be placed in that temporary congestion queue. Multiple temporary congestion queues may exist simultaneously for multiple congested components. If there is more than one congested component that the message requires use of, the message is placed in the temporary congestion queue for the highest ranked component. The ranking of components is determined by a ranking system, such as an order of: node, application, channel and point, for the order of the highest ranked components to the lowest. A reply from an output messaging switch that indicates that a previously congested component is no longer congested allows the temporary congestion queue for that component to be ended. The queue is emptied by sending all of its messages and then the area in memory ME4 that was allocated for the queue is de-allocated. The area in memory for a queue is also de-allocated if after the delay time no messages are in the queue to be sent. Messages in the temporary congestion queues are sent to the congested components in periodic intervals, as determined by the delay time indicated in the most recent reply message from the output messaging switch. The periodic intervals would be measured by the clock in the node where the temporary congestion queue exists. The clock counts up to the set delay time between sending messages. The delay time specified in the reply may be determined by an algorithm in the receiving messaging switch. The algorithm may take into account multiple factors, some of which may be: the characteristics of the particular component that is congested; the rate at which performance of the messaging system degrades for increasing congestion in the component; whether there is congestion in other parts of the messaging system; and whether previous messages have been rejected at the component due to congestion. Using an alternate method of congestion control, it is possible to not include a delay time in the reply and instead have the home messaging switch 23 use an algorithm to generate a delay time on its own. For example, in the preferred embodiment when association congestion occurs such that an entire node is congested, no delay time is included in the reply that indicates the node is congested. Instead, the home messaging switch 23 uses an algorithm that dictates that every time a message is sent from the temporary congestion queue and is rejected, the delay time is doubled, and every time a message is accepted, the delay time is halved. Maximum and minimum values for the delay times are set and, when the minimum delay time is reached, the temporary congestion queue is ended. The preferred method of congestion control for applications, channels, and/or points is illustrated in the flow charts of FIGURES 5A, 5B, 5C and 5D. While the method shown may be applied to congestion occurring anywhere in the messaging switch system 21, for purposes of illustration, FIGURES 5 A to 5D may be taken to apply to a message packet being sent from node N4 in home messaging switch 23 to node N8 in output messaging switch 44. In FIGURES 5A to 5D, home messaging switch 23 would be designated as the "sender", and output messaging switch 44 would be designated as the "receiver." Also, as described above, the "message" or "message packet" being sent may actually be any type of application protocol data unit (APDU), which is a "packet" form in which data or commands may be sent between any of the messaging switches in the messaging switch system 21. FIGURE 5 A shows the message packet sending routine of the sender. After starting at a block 100, at a block 102 the routine examines the address of the next message packet to be sent. A message packet address includes the components in the receiver that will be required to be utilized for processing the message packet. For example, the address may specify a particular node, application and/or channel which will be required for the message packet. Points are not included in the address for reasons that will be described below. Thus, the address specifies a "path" of components that the message packet will pass through. At a decision block 104, the routine determines if the message packet address includes any congested components by comparing each component in the address with a list of components for which temporary congestion queues currently exist. As will be described below, components that are known to be congested have a temporary congestion queue created for them. If there are no congested components in the address, the routine continues to a block 106 where the message packet is sent to the receiver and the routine returns to block 102 to examine the next message packet address. If one of the components in the address is congested, then the routine continues to a block 108 where the message packet is placed on the end of the temporary congestion queue for the specified congested component and the routine then returns to block 102 to examine the next message packet address. FIGURE 5B shows the message receiving and reply routine of the receiver. After starting at a block 150, the receiver waits at a block 152 for a message to be received from the sender. At a decision block 154, the routine determines if there is association congestion along the path of the message. As was described above, association congestion implies that the entire node to which the message packet is addressed is having difficulty processing messages. If association congestion is present, then the routine proceeds to a block 156 where the congested node is specified as part of the reply to the sender. As described above, in the preferred embodiment, the receiver does not designate a delay time in the case of association congestion, so from block 156 the routine proceeds directly to a block 157 where a reply is sent to the sender indicating there is association congestion. If association congestion is not present at block 154, the routine proceeds to a decision block 158. At decision block 158, the routine determines if there is application congestion along the path of the message. As was described above, application congestion implies that an application to which the message packet is addressed is having difficulty processing messages. If application congestion is indicated, then the routine proceeds to a block 160 where the congested application is specified as part of the reply to the sender. If application congestion is not present, the routine proceeds to a decision block 162. At decision block 162, the routine determines if there is channel congestion along the path of the message by monitoring to see what response is given by the receiver. As was described above, channel congestion implies that a channel to which the message packet is addressed is having difficulty processing messages. If channel congestion is present, then the routine proceeds to a block 164 where the congested channel is specified as part of the reply to the sender. If channel congestion is not present, the routine proceeds to a decision block 166. At decision block 166, the routine determines if there is point congestion along the path of the message. As described below, point congestion implies that a "point" along the messaging path that was unknown by the sender when the message was sent is having difficulty processing messages. If point congestion is present, then the routine proceeds to a block 168 where the congested point is specified as part of the reply to the sender. If point congestion is not present, then the routine proceeds to a block 170 where a reply is sent back to the sender indicating that the message packet has been accepted without congestion. Each of the blocks 154, 158, 162, and 166 represent different software modules in the output messaging switch. The different software modules handle the message as it goes "up the stack" through the blocks 154, 158, 162, and 166. For example, the first software module that the message encounters in the "node" handler at block 154, which knows how many resources it has at its disposal. If the node is congested, it is also the software module that forms the congestion message. From blocks 160, 164 or 168, the routine proceeds to a block 172 where the delay time that the sender should wait between sending messages to the congested component is determined. As described above, the delay time may be determined by an algorithm in the receiver, which may take into account multiple factors. The routine then proceeds to a decision block 174, where the routine determines whether the present message packet from the sender should be accepted or rejected. If the present message packet is to be rejected, the routine continues to a block 176 where a reply is sent back to the sender indicating that the message packet has been rejected, the congested component, and the delay time that the sender should wait between sending additional message packets to the congested component. If the present message is to be accepted, the routine continues to a block 178 where a reply is sent back to the sender indicating that the message packet has been accepted with congestion, the congested component, and the delay time (if necessary) that the sender should wait between sending additional message packets to the congested component. Block 178 illustrates that the congestion control method of the present invention may begin working even before congestion actually occurs. As will be described below, the receiver may have a method of determining when a component is merely approaching a congested state, and thus be able to implement preventative congestion control even before the component becomes congested. Thus, as shown in block 178, a reply may be sent to the sender indicating that although the present message packet has been accepted, congestion control should be implemented. FIGURE 5C shows the reply receiving routine of the sender. The routine starts at a block 110 and then at a decision block 112 determines whether the reply from the receiver indicates that congestion is occurring. If congestion is indicated, the routine proceeds to a decision block 120. If congestion is not indicated, the routine proceeds to a decision block 114. At decision block 114, the routine determines whether a temporary congestion queue is currently in effect for any of the components along the path of the message packet which caused the reply. As described above, the existence of a temporary congestion queue for a component in the receiver indicates that there has previously been congestion at that component. A reply which indicates that there is no longer congestion for that component allows the temporary congestion queue to be ended. Thus, at decision block 114, if there is no longer congestion indicated at a previously congested component, then the routine proceeds to a block 116 where all of the messages in the temporary congestion queue are sent without a delay time and the queue is ended at a block 136. If no queue exists, then the routine proceeds to block 136 where it ends. At decision block 120 the routine determines if a temporary congestion queue is currently in effect for the component that was specified as being congested by the reply message. If no temporary congestion queue is currently in effect, the routine proceeds to a block 122 where it creates a new temporary congestion queue for message packets addressed to the congested component. As described above, the queue uses a timer to send out message packets at periodic intervals according to a set delay time. If a queue already exists, the routine proceeds to a decision block 124 where it determines whether the delay time indicated by the reply is the same as the delay time currently being used by the queue. If the delay time is the same, the routine proceeds to a decision block 130. If the delay time is different, the routine proceeds to a block 126 where it changes the delay time for the queue. When the delay time of the temporary congestion queue is changed by the routine at block 126, the queue's timer may already be in the middle of counting up to the prior delay time. In the preferred embodiment, rather than resetting the timer when the delay time is changed at block 126, the timer is allowed to continue to run so that any time counted toward the prior delay time still counts toward the new delay time. Thus, if the new delay time is longer than the current timer count, the timer continues to run until it reaches the new delay time, at which point the next message in the queue is sent. If the new delay time is shorter than the current timer count, the next message in the queue is sent immediately and the counter begins to count again up to the new delay time. From block 126 or block 122 the routine proceeds to decision block 130. At decision block 130, the routine determines whether or not the message packet which caused the reply was rejected. If the message packet was not rejected, then the routine ends at a block 136. If the message packet was rejected, then the message packet is placed on the front of the temporary congestion queue for the congested component. Block 132 illustrates that a message packet sent from the front of a temporary congestion queue to the receiver will be returned to the front of the temporary congestion queue if it is rejected by the receiver. This keeps the messages in the queue in a certain order. After block 132, the routine ends at block 136. FIGURE 5D shows the message packet sending routine of a temporary congestion queue. The routine starts at a block 140 and proceeds to a block 142 where a delay timer is started. At a decision block 144, at the end of the delay time the routine determines if there are any messages in the queue to be sent. If the queue is empty, the routine proceeds to block 148 where the queue is ended. If there are messages in the queue to be sent, the routine proceeds to block 146 where it sends the next message in the queue. The routine then proceeds back to block 142 to restart the delay timer. With reference to FIGURES 5 A to 5D, some of the differences between point congestion and the other types of congestion can be explained. As described above, in FIGURE 5 A at decision block 104, the routine determines if the message packet address includes any congested components along its path. If congestion is present, then the routine continues to a block 108 where the message packet is placed on the end of the queue for the specified congested component. This part of the routine is effective for congestion occurring at a particular node, application, and/or channel, because those parts of the path through which the message packet is sent are part of the address known at the sender. In the case of point congestion, however, by definition a point component to which the message will be sent is not yet part of the address and is thus unknown by the sender when it sends the message. For example, referring to FIGURE 1, if the home messaging switch 23 is the sender, the output messaging switch 44 is the receiver, and the base stations 48 and 49 are the possible "points," then the point to which the message packet will be sent is not known until the "locate" signal, as described above, is sent out. As described above, when a message packet reaches the output messaging switch 44, it determines to which base station 48 or 49 (the points) to send the message packet by using a locate signal to verify which base station (point) is closer to the paging unit. Thus, until the output messaging switch 44 (the receiver) receives the message packet, the base station (point) to which the message packet will be sent is unknown. Thus, when the home messaging switch 23 (the sender) has a message packet to be sent to the output messaging switch 44 (the receiver), it cannot place the message packet in a particular temporary congestion queue for a particular point, because the home messaging switch 23 (the sender) does not yet know the particular point to which the message packet will eventually be sent. By way of contrast, once a message packet reaches the receiver and point congestion occurs, then when the reply is sent back to the sender the reply specifies the point that is congested. Then, as shown in FIGURE 5C, at decision block 130, when a message packet is rejected due to point congestion, just as for any other type of congestion, the message packet may be put on the temporary congestion queue created for that particular point. Thus, although original message packets cannot be placed on a temporary congestion queue for particular point, once they are rejected from a particular point, they can be. Another difference between point congestion and other types of congestion can be explained with reference to the routines of FIGURES 5C and 5D. When message packets are sent from a temporary congestion queue according to the routine in FIGURE 5D, a reply is sent back from the receiver and is processed by the sender according to the routine of FIGURE 5C. When a message packet that was sent from a temporary congestion queue is rejected, according to block 132 of FIGURE 5C, the message is placed on the beginning of the temporary congestion queue for the component from which it was rejected. For nodes, applications or channels, the components to which the message packet is sent do not change and thus if a message packet is sent from a temporary congestion queue for one of those components and then is rejected because that component is still congested, the message packet will be placed back on the beginning of the same temporary congestion queue from which it was sent. If the message is accepted without congestion, then the congestion queue for that component can be ended. In the case of point congestion, however, the message packet sent from a temporary congestion queue for a particular point is not always sent to the same point component, and thus the reply may state that the message was rejected or accepted at a different point. Referring again to FIGURE 1, if the points are base stations 48 and 49, when a message packet is received at output messaging switch 44 (the receiver), the receiver determines from which base station 48 or 49 (the points) to transmit the message packet by using a "locate" signal as described above. Thus, even if a message packet is sent from a temporary congestion queue in home messaging switch 23 (the sender), which is for particular first point (e.g., base station 48 which the paging unit was closer to before), a reply message from the receiver may come back stating that the message was rejected or accepted on a different point (e.g., base station 49 which the paging unit is closer to now). If the message is rejected at a different point, rather than being put back in the temporary congestion queue from which it was sent, the message packet is placed on the front of the temporary congestion queue for the point from which it was most recently rejected. The instructions in the reply (e.g., delay time) are also applied only to the temporary congestion queue for the point from which the message was most recently rejected. To further illustrate the working of the invention, FIGURES 6 and 7 contain a set of illustrative examples. FIGURE 6 illustrates a time line of message packets and replies between the home messaging switch 23 and the output messaging switch 36. For purposes of illustrating the timer counts in FIGURE 7, a vertical time line on the far left of FIGURE 6 indicates the "time of event" for messages and replies. As also shown in FIGURE 6, new messages coming in to home messaging switch 23 are indicated by a left to right arrow into the vertical line labeled home messaging switch 23. As described below, times Tl to T8, that correspond to FIGURE 7, are also marked in FIGURE 6. Messages that are queued in the temporary congestion queue for channel CHI are so indicated with a label to the right of the home messaging switch 23 line in FIGURE 6. Also, messages sent from the temporary congestion queue for channel CHI are indicated in the same manner as newly sent messages. Each of the shown messages A to F are labeled with an address of the components they will pass through, which in this case is merely a node and channel. Once a message travels from home messaging switch 23 to output messaging switch 36, as indicated by a left to right arrow in FIGURE 6, then a reply from the output messaging switch 36 back to the home messaging switch 23 is indicated by a right to left return arrow. The content of the reply is indicated at the origin of the reply arrow to the right of output messaging switch 36 line. The reply indicates that the message was either accepted or rejected, the message path, and whether there is congestion and, if so, what the delay time should be for the temporary congestion queue for the congested component. In addition to the temporary congestion queues that are started in the home messaging switch 23 when a particular component becomes congested, in the preferred embodiment some permanent queues may also exist in the output messaging switch 36. The permanent queues in the output messaging switch 36 are for particular components and function as part of the normal operation of the components. For example, in the example of FIGURE 6, channels CHI and CH2 have permanent queues in the output messaging switch 36. These permanent queues may be part of the memory ME7. The permanent queues do not alter the congestion control methods described above. When channels CHI and CH2 have permanent queues, messages that are sent to them may be placed on the permanent queues rather than being broadcast immediately, and in such cases a reply may be sent to the sender indicating that the message was accepted at the channel, just as if no permanent queue existed. This also provides an example of how congestion control can be implemented before congestion actually occurs, in that congestion control can be activated for a channel before the permanent queue actually fills up. Examples of possible trigger levels at which congestion control is activated can be a certain number of messages in the permanent queue, or the rate at which the permanent queue is filling up. As will be described below, the trigger level for activating congestion control in FIGURES 6 and 7 occurs when the permanent queue is all the way filled. When the channel is able to process a message from the permanent queue, the processed message is deleted from the queue. In FIGURE 6, processed messages that are deleted from the permanent queue are indicated by a left to right arrow from the line for the output messaging switch 36. The contents of the temporary congestion queue for channel CHI, and the contents of the permanent queues for channels CHI and CH2, are shown for times Tl to T8 in FIGURE 7. Although for purposes of illustration each queue in FIGURE 7 is shown to hold only three messages, in actual practice queues can hold as many messages as the memory of the system allows. Also shown in FIGURE 7 are the current timer count and the set delay time for the temporary congestion queue for channel CHI. As shown in FIGURES 6 and 7, at time Tl, no messages have been entered into the home messaging switch 23. Then new messages A and B arrive at node N4 in the home messaging switch 23 and are sent to channel CHI in node N7 in output messaging switch 36 and are accepted into the permanent queue for channel CHI in memory ME7, as shown at time T2 in FIGURE 7. As shown in FIGURE 6, after time T2, a new message C arrives and is accepted into the permanent queue for channel CHI, but with a return message that indicates that congestion has started and that a delay of t = 100 should be implemented for all messages directed to channel CHI in node N7. In this example, the trigger level for the output messaging switch 36 indicating congestion is when the permanent queue for channel CHI is filled. Once the reply message from message C is received by home messaging switch 23, a temporary congestion queue is created for messages addressed to channel CHI in node N7. The delay time is set to t = 100 as instructed, and the queue timer that is part of clock CL4 begins to count up from 0 until it reaches the set delay time, at which point the message on the front of the queue will be sent to channel CHI in node N7. For purposes of illustration in FIGURE 7, at time T3, a time of t = 20, as shown in the vertical time line of FIGURE 6, has elapsed, so the timer shows t = 20. As shown in FIGURE 6, after time T3, a new message D arrives addressed to channel CHI in nodeN7, and so becomes the first message to be placed in the new temporary congestion queue for channel CHI in node N7. This is shown in FIGURE 7 at time T4. As shown in FIGURE 6, after time T4, the timer reaches the delay time (having elapsed a total of t = 100) and so the temporary congestion queue for channel CHI attempts to send the message on the front of temporary congestion queue (message D) to channel CHI in node N7. The reply as seen in FIGURE 6 indicates that message D is rejected with congestion, and a delay time of t = 150 is given. Thus, message D is placed back on the front of the temporary congestion queue for channel CHI. This is shown in FIGURE 7 for time T5, and the delay time is set to t = 150. However, the timer in this case, rather than starting to count from when the reply is received, starts counting from when message D was sent. This occurs because the timer had already started counting a new t = 100 from when message D was sent. Since the timer only stops counting when it reaches the delay time, when the reply from message D resets the delay time from t = 100 to t = 150, the timer that had already started counting but had not yet reached t = 100, simply continues counting until it now reaches t = 150. As also shown in FIGURE 6, after time T4, channel CHI processes message A, thus removing message A from the permanent queue for channel CHI . The removal of message A allows messages B to C to move forward one place in the permanent queue for channel CHI, as seen at time T5 in FIGURE 7. As shown in FIGURE 6, also occurring after time T4, is the arrival of new messages E and F. As shown in FIGURE 7 at time T5, message E, addressed to channel CHI in node N7, is put on the temporary congestion queue behind message D. Message F, addressed to channel CH2 in node N7, is the first message to channel CH2 and is accepted without congestion and placed on the permanent queue for channel CH2, as can be seen at time T5 in FIGURE 7. As shown in FIGURE 6, after time T5, the timer for the temporary congestion queue for channel CHI reaches the delay time (having elapsed a total of t = 150) and so the temporary congestion queue attempts to send the message on the front of the queue (message D) to channel CHI in node N7. The reply as seen in FIGURE 6 indicates that message D is accepted with congestion, and a new delay time of t = 90 is given. Message D is thus placed on the back of the permanent queue for channel CHI, as can be seen at time T6 in FIGURE 7. As shown in FIGURE 6, after time T6, channel CHI processes messages B, C, and D, and so those are removed from the permanent queue for channel CHI, as can be seen at time T7 in FIGURE 7. Also occurring after time T6, is that the timer for the temporary congestion queue for channel CHI reaches the delay time (having elapsed a total of t = 90) and so the temporary congestion queue sends the message on the front of the queue (message E) to channel CHI in node N7. The reply as seen in FIGURE 6 indicates that message E is accepted without congestion, and so the temporary congestion queue for channel CHI in node N7 is deleted altogether along with the delay time setting. Message E is thus placed on the permanent queue for channel CHI, as can be seen at time T7 in FIGURE 7. As shown in FIGURE 6, after time T7, channel CH2 processes message F and channel CHI processes message E, thus clearing the permanent queue memories for channels CHI and CH2. This is shown in FIGURE 7 at time T8. While the preferred embodiment of the invention has been illustrated and described, it will be apparent that various changes can be made therein without departing from the spirit and scope of the invention. For example, although methods of congestion control are illustrated for node, application, channel and point types of congestion, the same methods can be implemented for any area or function in the messaging system where congestion may occur.

Claims: The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follow: 1. In a wireless messaging system having a plurality of nodes, a method of controlling congestion of message packets being sent between said nodes of the system, wherein a node that is sending message packets is designated as a sender, a node that is receiving message packets is designed as a receiver, said receiver having at least one component required for processing the message packets, the method comprising the steps of having said receiver reply to the sender for a message packet that is sent, the reply specifying: (a) whether or not congestion is indicated; (b) if congestion is indicated, the component at which congestion is occurring; (c) if congestion is indicated, a delay time the sender should wait before sending a message packet to the congested component. 2. The method of Claim 1, wherein the wireless messaging system further includes a memory area for a congestion queue, wherein upon receiving a reply indicating that there is congestion in a component, the sender places message packets addressed to the congested component in the congestion queue. 3. The method of Claim 2, wherein the congestion queue includes a timer with a set time for determining the delay before sending a message packet to the congested component. 4. The method of Claim 2, wherein the sender examines the address of each message packet before sending it to the receiver and places any messages addressed to a congested component on the congestion queue for the component. 5. The method of Claim 4, wherein if a message packet is addressed to more than one congested component, the sender ranks the congested components and places the message packet on the congestion queue for the component with the highest ranking. 6. The method of Claim 1, wherein a congested component may be an application. 7. The method of Claim 1, wherein a congested component may be a channel. 8. The method of Claim 1, wherein a congested component may be a point. 9. The method of Claim 2, wherein a message that is rejected from a congested component is placed on the congestion queue for that component. 10. The method of Claim 9, wherein the rejected message is placed on the front of the congestion queue. 11. The method of Claim 3, wherein the set time is determined by the set time that is specified in the most recent reply from the receiver. 12. The method of Claim 11, wherein the timer count is not reset when the set time is changed. 13. The method of Claim 1, wherein in the case of certain types of congestion, rather than the receiver including a delay time in the reply, the sender determines the delay time. 14. The method of Claim 13, wherein the sender determines the delay time by using an algorithm that dictates: (a) each time a message is rejected from the receiver, the delay time is doubled, up to some maximum delay; (b) each time a message is accepted at the receiver, the delay time is halved, down to some minimum delay. 15. The method of Claim 2, wherein the congestion queue is temporary. 16. The method of Claim 15, wherein upon receiving a reply indicating there is no longer congestion at a previously congested component, the sender sends all remaining message packets in the congestion queue and then de-allocates the memory area that was designated for the congestion queue. 17. The method of Claim 15, wherein the congestion queue includes a timer with a set time for determining the delay between sending message packets to the congested component. 18. The method of Claim 17, wherein if at the end of the set time there are no message packets in the congestion queue, the sender de-allocates the memory area that was designated for the congestion queue. 19. In a wireless messaging system, a method of congestion control wherein components of the wireless messaging system send messages to one another and communicate with each other regarding the status of congestion with regard to the processing of the messages, a component being congested when it has insufficient resources to process additional messages, a congested component causing a congestion queue to be created to queue subsequent messages to the congested component, messages being sent from the congestion queue to the congested component at a rate that is variable. 20. The method of Claim 1, wherein the variable rate at which messages are sent from the queue is specified by a communication from the congested component. 21. The method of Claim 19, wherein the queue for the congested component is created in a memory area of a component that attempted to send a message to the congested component. 22. The method of Claim 21, wherein the congestion queue is created in response to a reply from the congested component indicating that congestion is occurring. 23. In a wireless messaging system having components for sending and receiving messages, a method for controlling congestion of messages being sent through the wireless messaging system, the method comprising the steps of: (a) determining if congestion is occurring at a component that is receiving messages; and (b) in response to congestion, the congested component sends a reply to a component that had sent a message to the congested component, the reply indicating the identity of the congested component and a rate at which to send messages to the congested component. 24. The method of Claim 23, wherein the rate at which messages are sent to the congested component may be varied. 25. The method of Claim 23, wherein the wireless messaging system further includes a memory area for congestion queues, wherein upon receiving a reply indicating that a component is congested, the component receiving the reply causes messages addressed to the congested component to be placed in a congestion queue. 26. The method of Claim 25, wherein the congestion queue is created in response to the reply indicating that congestion is occurring at a previously uncongested component. 27. In a wireless messaging system having components for sending and receiving messages, the components that are sending messages being a source of messages, the components that are receiving messages comprising areas within the wireless messaging system where congestion may occur, a method of controlling congestion within the wireless messaging system, the method comprising the steps of: (a) determining when congestion is occurring in an area of the wireless messaging system; (b) determining a source of the messages that are being sent to the congested area; and (c) supplying the source of the messages with a rate at which to send future messages to the congested area. 28. The method of Claim 27, wherein the rate at which messages are sent to the congested area can be varied. 29. The method of Claim 28, wherein the rate at which to send messages to the congested area is determined by a component within the congested area. 30. The method of Claim 29, wherein the rate at which to send messages to the congested area is supplied to the source as part of a reply sent from the congested area. 31. The method of Claim 27, wherein the wireless messaging system further includes a memory area for a congestion queue, wherein the source places messages that are addressed to the congested area in the congestion queue, from which messages are sent to the congested area at the specified rate.

Inventors: GODOROJA ANDREI, GODOROJA, ANDREI
Applicants: GLENAYRE ELECTRONICS INC, GLENAYRE ELECTRONICS, INC.
Application year: 1997
Main classification: H04Q7
IPC codes: G06F21, H04L12, H04L29, H04W8, H04W84