Abstract:
A method is provided for controlling the misordering of packets in packet delivery in radio access networks (RANs) and other packet-switched networks. In one aspect, the method involves reading header information to determine the proper sequence of arriving packets, storing at least some packets that have arrived out of order, and forwarding the stored packets in a modified order that has no more than a specified degree of misordering.

Description:
FIELD OF THE INVENTION  
       [0001]     This invention relates to packet-switched networks, and more particularly to controlling the order of packet delivery in such networks.  
       ART BACKGROUND  
       [0002]     Several factors may cause packets to be delivered out of order in packet-switched networks. For example, a Radio Access Network (RAN) is a packet-switched network which includes an air interface and a backhaul connection. Packet retransmission over the air interface may cause packets to arrive out of order. In another example, load balancing across multiple T1/E1 lines or other interfaces over the backhaul may cause packets to be delivered over multiple connections, and for that reason to arrive out of order.  
         [0003]     It is often preferable to have in-order packet delivery in a packet network, since the user application layer typically needs to receive the packets in sequence to correctly decode the packet stream. This is realized by using the packet sequence number to reorder the packets.  
         [0004]     In a network description which follows a layering model, reordering can be applied at different layers. A lower layer uses the sequence numbers of its own data units, e.g., packets, to re-sequence and reassemble the upper-layer packet which is to be delivered. However, reordering typically involves the use of a buffer to store the early-arrived packets and wait for the late-arrived packets so that the packets can be re-sequenced. This buffering introduces extra delay and is not desirable for delay-sensitive applications. If, on the other hand, the upper layer could handle out-of-order packets, it might be possible to skip the reordering operation at the lower layer, and thus to avoid the extra buffering delay.  
         [0005]     Furthermore, end-to-end transmissions often involve multiple segments and individually controlled networks. Packets may get out of order in any of the transmission paths. Reordering in one network segment does not guarantee that the packets will be delivered in sequence to the final destination. However, if each network segment performed a reordering operation, the cumulative effect could be to introduce an excessive amount of extra delay. Such a result would be particularly undesirable for multimedia applications, which are delay sensitive.  
         [0006]     For the above reasons, among others, it would be advantageous for a packet network, especially one highly sensitive to overall end-to-end delay, to support out-of-order delivery of packets.  
         [0007]     It would be even more advantageous if the degree of packet out-of-order delivery could be controlled. That is, the processing of packets in upper layers may be tolerant to greater or lesser amounts of misordering of packets. In this regard, “upper” is in relation to a layer, such as the IP layer, in which a certain amount of misordering is tolerated. By “misordering” is meant the arrival of a packet of higher sequential number prior to the arrival of a packet of lower sequential number. Thus, it would be advantageous to control the amount of misordering so that it lies within a tolerable range.  
         [0008]     For example, the header compression layer may be able to handle late-arriving packets. It could be possible for the decompressor to successfully decode a packet arriving late with a sequence number smaller than that of the previously decoded packet. But if the packet arrived too late, the decompressor might be unable to decode the packet, and thus would declare a decompression failure and be required to discard the packet.  
         [0009]     By way of illustration, we assume that the decompressor can handle packets misordered to the fifth degree. The decompressor receives packets  5 ,  1 ,  10 ,  2 . The decompressor decodes packet  5  and then packet  1  since the degree of misorder is 4. The decompressor cannot decode  2  since its degree of misorder is 8, which is above the tolerance the compressor can handle. Packet  2  will be discarded although it is correctly received.  
         [0010]     Thus, it would be advantageous to support both packet in-order delivery and out-of-order delivery in a packet network. It would be still more advantageous to control the degree of misorder of delivered packets based on system requirements and tolerance to packet misorder.  
       SUMMARY OF THE INVENTION  
       [0011]     We have developed a method for controlling the misordering of packets in packet delivery in radio access networks (RANs) and other packet-switched networks.  
         [0012]     In a broad aspect, our method involves reading header information to determine the proper sequence of arriving packets, storing at least some packets that have arrived out of order, and forwarding the stored packets in a modified order that has no more than a specified degree of misordering. 
     
    
     BRIEF DESCRIPTION OF THE DRAWING  
       [0013]      FIG. 1  is a flowchart of an illustrative algorithm for delivering packets in order.  
         [0014]      FIG. 2  is a flowchart of an illustrative algorithm for delivering packets with a controlled degree of misordering.  
         [0015]      FIG. 3  is a flowchart of an illustrative algorithm for delivering packets with an uncontrolled degree of misordering.  
         [0016]      FIG. 4  is a flowchart of an illustrative algorithm for measuring the degree of packet misordering. 
     
    
     DETAILED DESCRIPTION  
       [0017]     For purposes of illustration, the invention will be described in an exemplary embodiment for Radio Access Networks (RANs). It will be appreciated that similar principles may be applied in other packet-switched networks, both wireless and wireline, without departing from the scope and spirit of the invention.  
         [0018]     In RAN, the radio link protocol (RLP) processes radio link packets are communicated between the access terminal (AT) and the radio network controller (RNC). The RLP layer uses the RLP sequence number for packet transmission and delivery. The RLP reassembles the upper-layer packet from one or more multiple RLP packet payloads and delivers it to the upper layer.  
         [0019]     The RLP layer can fragment an upper-layer packet into multiple RLP packets. If RLP does not fragment the upper-layer packet, the RLP packet consists of one upper-layer packet. The boundary of the upper-layer packet in the RLP packet payload is indicated by two flags, namely, “FirstDataUnit”, and “LastDataUnit”, in the RLP header fields.  
         [0020]     If the “FirstDataUnit” is set to 1, it indicates that the RLP packet payload is the first data segment of an upper-layer packet. If the “LastDataUnit” is set to 1, it indicates that the payload is the last data segment of an upper-layer packet. If both flags are set to 1, it indicates that the payload is a complete upper-layer packet. If neither of the flags is set to 1, it indicates that the RLP packet payload in a middle data segment of an upper layer upper.  
         [0021]     These “FirstDataUnit” and “LastDataUnit” flags facilitate the reassembly of an upper-layer packet by the RLP layer. An upper-layer packet is considered completed if either of the following conditions is met:  
         [0022]     1. If the received RLP packet has both the First and Last DataUnit flags are set in the received RLP packet.  
         [0023]     2. The upper-layer packet has been fragmented by RLP, the resulting multiplicity of RLP packets has been received with contiguous sequence numbers, the packet with the lowest relative sequence number has the FirstDataUnit flag set, and the packet with the highest relative sequence number has the LastDataUnit flag set.  
         [0000]     An Upper-Layer Packet is Considered a Partial Packet if the Following Condition is Met:  
         [0024]     1. The upper-layer packet has been fragmented by RLP, a resulting multiplicity of RLP packets has been received, the packet with the lowest relative sequence number has the FirstDataUnit flag set, the packet with the highest relative sequence number has the LastDataUnit flag set, but there is a gap in the sequence numbers among the received packets; or else, there is an indication that the missing RLP packets which carry the upper layer fragment are lost or erroneous in transmission.  
         [0025]     For packet in-order delivery, the RLP layer performs re-sequencing and delivers the upper-layer packets in order. This is achieved by the RLP layer buffering the received RLP packet, examining its sequence number, and reassembling an upper-layer packet. If RLP detects a packet received in error, it discards the packet and advances the expected RLP sequence number (SN) of the next delivered packet. If a RLP packet is lost in transmission, the acknowledgement timer for this packet will be expired and the RLP layer advances the expected SN of the next delivered packet.  
         [0026]     For packet out-of-sequence delivery, the RLP can deliver upper-layer packets out of sequence. In other words, the RLP packets which constitute an upper-layer packet are always delivered in order. But the upper-layer packet delivered by RLP might be delivered out of sequence.  
         [0027]     If an upper-layer packet is encapsulated in a single RLP packet, the RLP layer can deliver the upper-layer packet immediately upon receiving a RLP packet which has a gap in the sequence number from the previously received RLP packet. If the upper-layer packet is fragmented into multiple RLP packets, however, the RLP layer will need to wait for all the data segments to arrive so that it can assemble a complete or partial upper-layer packet. In that case, the RLP packets constituting the upper-layer packet will be reordered properly. However, as noted, different upper-layer packets might be delivered out of order.  
         [0028]     The algorithms for packet delivery are illustrated as follows. The RLP layer maintains four sequence number (SN) registers or variables:  
         [0029]     1. SN_previous_last: the SN of the RLP packet delivered to upper layer which is the last segment (LastDataUnit set as 1).  
         [0030]     2. SN_previous_first: the SN of the RLP packet delivered to upper layer which is the first segment (FirstDataUnit set as 1)  
         [0031]     3. SN_current_last: the SN of the RLP packet ready to be delivered to upper layer which is the last segment (LastDataUnit set as 1).  
         [0032]     4. SN_current_first: the SN of the RLP packet ready to be delivered to upper layer which is the first segment (FirstDataUnit set as 1)  
         [0033]     That is, the registered listed above will respectively maintain the RLP sequence numbers of: The last-delivered terminal segment of an upper-layer packet, the last-delivered initial segment of an upper-layer packet, the terminal segment next awaiting delivery, and the initial segment next awaiting delivery.  
         [0000]     Algorithm for Packet In-Order Delivery ( FIG. 1 ):  
         [0000]    
       
          Step 1: Compute DeltaSN=SN_current_first=SN_previous_last  
          Step 2: If DeltaSN =1, packet is contiguous. 
        Update SN_previous_first and SN_previous_last variables: 
            SN_previous_first=SN_current_first;     SN_previous_last=SN_current_last;    
            Deliver the packet to the upper layer.    
     
       
     
         [0040]     If DeltaSN&gt;1, packet is not contiguous, 
        Store the packet in the buffer in the increasing order according to its SN number. Start the timer.         Step 3: Examine the timer for packets stayed in the buffer.    
 
         [0043]     If the timer expires, deliver the complete or partial packet to the upper layer. 
        Update SN_previous_first and SN_previous_last variables: 
            SN_previous_first=SN_current_first;     SN_previous_last=SN_current_last;    
               
 
         [0047]     For packet out-of-order delivery, the RAN can control the degree of misordered delivery by performing partial re-sequencing of the received packets. In other words, the RLP layer may still deliver the upper-layer packets out of sequence, but the degree of misordering is controlled by a configurable parameter p. For example, if the desired degree p of misordering is 4, the RLP is directed to deliver a pair of packets out of order only if they are out of sequence by 4 places or less.  
         [0048]     Thus, one advantage of the method described here is that upper-layer packets can be delivered out of order, but with a controlled amount of misordering. Moreover, the configurable parameter p can be applied not only to upper-layer packets, but also to lower-layer packets such as RLP packets.  
         [0049]     That is, the parameter p can be directly defined and controlled as, e.g., the degree of RLP packet misordering. If, moreover, each upper-layer packet is encapsulated into exactly one RLP packet, then p will also indicate the maximum possible degree of misordering of upper-layer packets.  
         [0050]     Accordingly, the degree of upper-layer packet misordering can be controlled by directly controlling the degree of RLP (or other lower-layer) packet misordering. For example, suppose that all upper layer packets have the same size, which is equivalent to q RLP packets. Suppose further that the desired degree of upper layer packet misordering is p, and that each upper layer packet encapsulates q RLP packets. In such a case, the degree of RLP packet misordering should be limited by p*q.  
         [0051]     In a further example, suppose that as above, the desired degree of upper layer packet misordering is p, but the upper-layer packets encapsulate a variable number of RLP packets which is not less than q. In that case, the degree of RLP packet misordering is advantageously limited by p*q to plan for the smallest possible upper-layer packets.  
         [0052]     By way of illustration, we suppose the received complete upper-layer packets are sequenced 1, 7, 2, 3. (For simplicity, we here assume that an upper-layer packet is not fragmented into multiple RLP packets.) The RLP delivers packet  1  first, then holds packet  7 . If packet  7  is delivered, then packet  2  arrives late and the degree of misordering is 5. (I.e., 7−2=5.) A degree of 5 is above the maximum degree permitted by the RLP. In this example, the RLP will hold packet 7 and wait for the late-arriving packets. When it receives packet  2 , the RLP will deliver packets 2 and 7 in order, since transmitting them out of order would violate the condition that the maximum degree of misordering can be no more than 4. When packet 3 arrives later, the RLP will deliver packet 3. In this case, the RLP will deliver the upper-layer packets in the order: 1, 2, 7, 3, which guarantees the maximum degree of misordering to be 4.  
         [0000]     Algorithm: Packet Out-of-Sequence Delivery With Controllable Degree of p ( FIG. 2 ):  
         [0000]    
       
          Step 1: Compute DeltaSN=(SN_current_first-SN_previous_last)/q, where q is the minimum number of RLP packets corresponding to an upper layer packet. (If an upper layer packet is encapsulated into one RLP packet, q=1.)  
          Step 2: If DeltaSN&gt;0, packet is in sequence 
        If DeltaSN&lt;=p+1, the gap in SN will not cause misordering larger than p. 
            Deliver the upper-layer packet.     Update SN_previous_first and SN_previous_last variables: 
                SN_previous_first =SN_current_first     SN_previous_last=SN_current_last    
               
            If DeltaSN &gt;p+1, the gap in SN may cause misordering larger than p. 
                Store the packet in the buffer in increasing order according to the     SNs. Start the timer.     Go to Step 3.        
           
     
          Step 3: If DeltaSN&lt;0, packets are out of order.  
       
     
         [0065]     Deliver the upper-layer packet.  
         [0066]     Do not need to update SN_previous_first and SN_previous_last since the current SN values are smaller than the previous ones. 
    Step 4: If there are packets of sequence number SN_lost detected to be lost or discarded, compute    
 
         [0068]     DeltaSN=(SN_current_first—SN_lost)/q Go to Step 2.  
         [0069]     Examine the timer for the stored packets in the buffer.  
         [0070]     If the timer expires, deliver the upper-layer packet.  
         [0071]     Update SN_previous_first and SN_previous_last variables: 
        SN_previous_first=SN_current_first     SN_previous_last =SN_current_last 
 
 Algorithm: Packet Out-of-Sequence Delivery, No Control of the Maximum Degree of Misordering ( FIG. 3 ): 
        Step 1: Compute DeltaSN=(SN_current_first-SN_previous_last)/q, where q is the minimum number of RLP packets corresponding to an upper layer packet. If an upper layer packet is encapsulated into 1 mRLP packet, q=1.     Step 2: If DeltaSN &gt;0, packet is in sequence 
        Deliver the upper-layer packet.     Update SN_previous_first and SN_previous_last variables: 
            SN_previous_first=SN_current_first     SN_previous_last=SN_current_last    
           
        Step 3: If DeltaSN&lt;0, packets are out of sequence.    
 
         [0081]     Deliver the upper-layer packet.  
         [0082]     Do not need to update SN_previous_first and SN_previous_last since the current SN values are smaller than the previous ones.  
         [0083]     By way of illustration, suppose the received RLP SNs are: 1, 5, 3, 4, 2. Assume that RLP 1, 2, 3 are segments of an upper layer packet (e.g., a route protocol packet), and RLP packets 4 and 5 are complete packets. Using packet out-of-sequence delivery with controllable p=4, the RLP layer will deliver: 5, 4, (1,2,3). In this case, the degree of misordering is 1, since 5−4=1 and 4−3=1.  
         [0084]     In a further example, we suppose the received RLP SNs are: 1, 8, 2, 3, 4. Assume that RLP 2, 3 are segments of a route protocol packet, and RLP packets 1, 8 and 4 are complete packets. So the RLP layer will deliver: 1, (2,3), 8, 4. In this case, the degree of misordering is 4. If there is no control on the degree of misordering, the RLP layer will deliver  1 ,  8 , ( 2 , 3 ),  4 . In that case, the degree of misordering will be 5, since 8−3 =5.  
         [0085]     As illustrated in  FIG. 4 , the degree of packet misordering can be measured to obtain a statistical estimate of how much out-of-order delivery has actually been occurring in the system. The measurement can be done over a time interval, e.g., every hour or every 15 minutes. In the figure, the variable “outoforder” represents the measured degree of misordering. In at least some cases, it will be advantageous to keep track of the average, minimum and maximum degrees of misordering. These measurements can provide external means to indicate how much misordering has been occurring. Such knowledge can be used to facilitate system design and optimization.