The present invention relates to a communication system for transmitting and receiving packets having preassigned packet numbers, and may include the reordering of packets at the receiving end.
In recent years, HSUPA (High Speed Uplink Packet Access) has been under study to provide a transmission standard that enhances uplink packet communication speeds in W-CDMA (Wideband-Code Division Multiple Access).
A base station (NodeB) includes a physical layer (PHY) for communicating with the mobile station in accordance with a Uu interface and a TNL (Transport Network Layer) for performing packet communication with a radio network controller (RNC) in accordance with an Iub/Iur interface. The base station further includes a MAC-e layer and an EDCH FP (Enhanced DCH Frame Protocol) layer. The Uu interface (the radio interface between UTLAN and user equipment) is the interface connecting between a radio access network and the mobile station. On the other hand, the Iub interface (the interface between RNC and NodeB) is the interface connecting between the base station and one radio network controller. The Iur interface (a logical interface between two RNCs) is the interface connecting between two radio network controllers.
One of the radio network controllers, designated as SRNC (Serving RNC), includes a TNL layer, an EDCH FP layer, a MAC-es layer, a MAC-d layer, and an RLC layer. The other one of the radio network controllers, designated as DRNC (Drift RNC), includes a TNL layer.
The HSUPA scheme performs HARQ (Hybrid Automatic Repeat Request) control on a plurality of communication channels in order to enhance data transmission speeds. Therefore, it is not possible to predict which data on which communication channel will arrive at the base station earlier than the others i.e., the order of the data received at the base station is not guaranteed.
To address this, the base station assigns the sequence number TSN to each MAC-es PDU, and the radio network controller (S-RNC) reorders the MAC-es PDUs in accordance with their sequence numbers TSNs. The radio network controller (S-RNC) demultiplexes the MAC-es PDUs from the received EDCH FP frame, and reconstructs the data frame by reordering the MAC-es PDUs according to their TSNs.
In the prior art, the radio network controller performs the reordering of the MAC-es PDUs, for example, in the following manner. The radio network controller retrieves the MAC-es PDUs from a receive buffer in the order in which they were received. If there is any data lost across the Uu interface, a discontinuity occurs in the sequence numbers of the data arriving at the radio network controller. Upon detecting a discontinuity in the sequence numbers of the data retrieved from the receive buffer, the radio network controller temporarily stores the data succeeding the lost data into a reordering buffer. When the lost data is thereafter recovered from the receive buffer, the radio network controller transmits the recovered data, together with its succeeding data held in the reordering buffer, onto the network in the order specified by their sequence numbers.
In the above-described prior art reordering process, the radio network controller has had to perform processing to transfer the data retrieved from the receive buffer into the reordering buffer. This has led to the problem that, in a situation where the reordering has to be performed frequently, the load of the processor that controls the radio network controller increases, causing a delay in processing, due to the processing for transferring the data into the reordering buffer.
In view of the above problem, an object of the packet transmitting apparatus, packet receiving apparatus, communication system, and packet communication method disclosed herein is to enhance the efficiency of the processing that the receiving apparatus that received packets having preassigned packet numbers performs to reorder the packets according to their sequence numbers.
A packet transmitting apparatus according to one embodiment includes: a packet transmitting unit which transmits a packet having a preassigned sequence number to a destination apparatus; a transmitted-packet indication information generating unit which generates transmitted-packet indication information that indicates the packet transmitted by the packet transmitting unit; and a transmitted-packet indication information transmitting unit which transmits the transmitted-packet indication information to the destination apparatus separately from the packet.
A packet receiving apparatus according to another embodiment includes: a packet receiving unit which receives a packet having a preassigned sequence number from a transmitting apparatus; a receive buffer which stores the received packet; a transmitted-packet indication information receiving unit which receives from the transmitting apparatus, separately from the packet, transmitted-packet indication information that indicates the packet transmitted by the transmitting apparatus; and a packet reordering unit which retrieves from the receive buffer the packet indicated by the transmitted-packet indication information, and which reorders the packet in accordance with the sequence number.
The transmitting apparatus transmits not only the packets but also the transmitted-packet indication information to the receiving apparatus, so that the receiving apparatus can determine, before retrieving the packets from the receive buffer, whether all the packets necessary for packet reordering have been received or not. Since the reordering of the packets can be performed without transferring the data into the reordering buffer, the load of the receiving apparatus for reordering the packet is reduced.
Embodiments will be described below with reference to the accompanying drawings.
The processor 10 is implemented using a data processor such as a CPU, and controls the operation of the first packet transmitting/receiving apparatus 2 by executing the control program 11 stored in the program storage unit 12. The program storage unit 12 may also store an application program which is executed by the processor 10 to generate user data. The memory 13 is used to store data necessary for the execution of the control program 11 and the application program, and is also used to store temporary data generated during the execution of such programs.
The packet acquiring unit 14 acquires packets to be transmitted from the first packet transmitting/receiving apparatus 2 to the second packet transmitting/receiving apparatus 3. Each packet that the packet acquiring unit 14 acquires is preassigned a sequence number that indicates the order of that packet. The sequence number may be embedded in each packet. The packet acquiring unit 14 may acquire packets, for example, by receiving the packets from some other communication apparatus. In this example, packet acquiring unit 14 may be implemented as a communication circuit. Further, the packet acquiring unit 14 may be implemented, for example, as a software module that acquires the packets into which the user data generated by the application program executed by the processor 10 has been divided. For example, packet acquiring unit 14 may be implemented as processor 10.
The communication unit 15 transmits and receives data to and from the second packet transmitting/receiving apparatus 3. For example, the communication unit 15 transmits the packets acquired by the packet acquiring unit 14 to the second packet transmitting/receiving apparatus 3. The transmit buffer 16 temporarily holds the data to be transmitted to the second packet transmitting/receiving apparatus 3, until the communication unit 15 accepts the data. The receive buffer 17 temporarily holds the data that the communication unit 15 received from the second packet transmitting/receiving apparatus 3.
The packet transmitting unit 20 performs processing to transmit the packets acquired by the packet acquiring unit 14 to the second packet transmitting/receiving apparatus 3. The packet transmitting unit 20 stores the packets in the transmit buffer 16 for transmission to the second packet transmitting/receiving apparatus 3, and the communication unit 15 transmits the packets stored in the transmit buffer 16 to the second packet transmitting/receiving apparatus 3.
The transmitted-packet indication information generating unit 21 takes as input the packets acquired by the packet acquiring unit 14. The transmitted-packet indication information generating unit 21 assumes that the packets received from the packet acquiring unit 14 are the packets transmitted from the packet transmitting unit 20, and generates transmitted-packet indication information that indicates the packets transmitted by the packet transmitting unit 20. The transmitted-packet indication information may identify the packets transmitted from the packet transmitting unit 20 by their sequence numbers.
For example, consider the case of indicating a series of packets having consecutive sequence numbers n, (n+1), (n+2), . . . , and (n+x) for the case where the packets are transmitted in ascending order of their sequence numbers. In this case, the series of sequence numbers n, (n+1), (n+2), . . . , and (n+x) arranged in the order of transmission of the packets may be defined as the transmitted-packet indication information. Alternatively, information (n:(n+x)) indicating the range of the sequence numbers of the packets may be defined as the transmitted-packet indication information.
The transmitted-packet indication information as used in the description of this specification is a set of sequence numbers which includes a series of sequence numbers obtained by arranging the sequence numbers of the packets transmitted from the packet transmitting unit 20 in the order in which the packets were transmitted. The transmitted-packet indication information generating unit 21 extracts the sequence number embedded in each packet acquired by the packet acquiring unit 14. The transmitted-packet indication information generating unit 21 stores the extracted sequence number in the memory 13.
As the sequence number of each packet is extracted, the transmitted-packet indication information generating unit 21 adds it to the series of sequence numbers so far stored in the memory 13, and thereby generates the series of sequence numbers arranged in the order of packet transmission. In accordance with transmit timing described later, the transmitted-packet indication information generating unit 21 retrieves the series of sequence numbers from the memory 13 and passes the transmitted-packet indication information containing the series of sequence numbers to the transmitted-packet indication information transmitting unit 23.
The transmitted-packet indication information transmitting unit 23 performs processing to transmit the transmitted-packet indication information generated by the transmitted-packet indication information generating unit 21 to the second packet transmitting/receiving apparatus 3. The transmitted-packet indication information transmitting unit 23 stores the transmitted-packet indication information in the transmit buffer 16, and the communication unit 15 transmits the transmitted-packet indication information stored in the transmit buffer 16 to the second packet transmitting/receiving apparatus 3.
The processor 30 is implemented using a data processor such as a CPU, and controls the operation of the second packet transmitting/receiving apparatus 3 by executing the control program 31 stored in the program storage unit 32. The memory 33 is used to store data necessary for the execution of the control program 31, etc., and is also used to store temporary data generated during the execution of such programs.
The first communication unit 34 transmits and receives data to and from the first packet transmitting/receiving apparatus 2. For example, the first communication unit 34 receives the packets transmitted from the first packet transmitting/receiving apparatus 2. Further, the first communication unit 34, for example, receives the transmitted-packet indication information transmitted from the first packet transmitting/receiving apparatus 2.
The first receive buffer 35 temporarily holds the data that the first communication unit 34 received from the first packet transmitting/receiving apparatus 2. The first transmit buffer 36 temporarily holds the data transmitted from the second packet transmitting/receiving apparatus 3 to the first packet transmitting/receiving apparatus 2, until the first communication unit 34 accepts the data.
The second communication unit 37 transmits and receives data to and from the third packet transmitting/receiving apparatus 4. For example, the second communication unit 37 transmits the packets received from the first packet transmitting/receiving apparatus 2 on to the third packet transmitting/receiving apparatus 4 after reordering the packets in the order of their sequence numbers in the reordering process performed by the processor 30, as will be described hereinafter. The second receive buffer 39 temporarily holds the data that the second communication unit 37 received from the third packet transmitting/receiving apparatus 4. The second transmit buffer 38 temporarily holds the data to be transmitted from the second packet transmitting/receiving apparatus 3 to the third packet transmitting/receiving apparatus 4, until the second communication unit 37 accepts the data.
The reordering buffer 40 is a buffer used for saving the packets from the first receive buffer 35, as necessary, when performing the reordering of the packets received from the first packet transmitting/receiving apparatus 2.
The packet receiving unit 50 performs processing to receive the packets received by the first communication unit 34 and held in the first receive buffer 35. The transmitted-packet indication information receiving unit 51 performs processing to receive the transmitted-packet indication information received by the first communication unit 34 and held in the first receive buffer 35.
The reordering unit 52 performs processing to reorder the packets received from the first packet transmitting/receiving apparatus 2 according to their sequence numbers. During the reordering, the reordering unit 52 saves the packets retrieved from the first receive buffer 35, as necessary, into the reordering buffer 40. The packet transmitting unit 53 performs processing to transmit the packets to the third packet transmitting/receiving apparatus 4 in the order rearranged by the reordering unit 52. The packet transmitting unit 53 stores the packets in the second transmit buffer 38 for transmission to the third packet transmitting/receiving apparatus 4, and the second communication unit 37 transmits the packets stored in the second transmit buffer 38 to the third packet transmitting/receiving apparatus 4.
In step S2, the transmitted-packet indication information generating unit 21 acquires the sequence number embedded in the packet acquired in step S1. In step S3, the packet transmitting unit 20 transmits the packet acquired in step S1 to the second packet transmitting/receiving apparatus 3.
In step S4, the transmitted-packet indication information generating unit 21 stores the sequence number acquired in step S2 into the memory 13. If the sequence number of any previously received packet is already stored in the memory 13, the transmitted-packet indication information generating unit 21 adds the acquired sequence number immediately after the sequence number already stored in the memory 13.
In step S5, the transmitted-packet indication information generating unit 21 determines whether the sequence number acquired in step S2 is the expected sequence number or not. In the packet transmission processing performed by the first packet transmitting/receiving apparatus 2, the “expected sequence number” refers to the sequence number that comes first in the transmission order among the sequence numbers of the packets yet to be transmitted. In the present embodiment, it is assumed that the transmission order is in ascending order of the sequence numbers. In this case, the “expected sequence number” refers to the smallest sequence number among the sequence numbers of the packets yet to be transmitted. If, for any reason, the packets are not transmitted in ascending order of the sequence numbers, resulting in the occurrence of a packet overtaken by a packet expected to follow it, then the expected sequence number refers to the smallest sequence number among the sequence numbers of such overtaken packets.
If it is determined in step S5 that the sequence number acquired in step S2 is not the expected sequence number (N in step S5), the processor 10 returns the process to step S1. By repeating the process from steps S1 to S5, the transmitted-packet indication information generating unit 21 successively stores in the memory 13 the sequence numbers of the transmitted packets having sequence numbers succeeding the expected sequence number.
If it is determined in step S5 that the sequence number acquired in step S2 is the expected sequence number (Y in step S5), then in step S6 the transmitted-packet indication information generating unit 21 sets the value of index variable i to (the expected sequence number+1). In steps S7 and S8, the transmitted-packet indication information generating unit 21 searches for the smallest expected sequence number not stored in the memory 13. More specifically, in step S7, the transmitted-packet indication information generating unit 21 determines whether or not the sequence number equal to the value of index variable i is stored in the memory 13. As long as the sequence number equal to the value of index variable i is stored in the memory 13 (Y in step S7), the transmitted-packet indication information generating unit 21 increments the value of index variable i by 1 in step S8, and repeats the steps S7 and S8.
If the smallest expected sequence number not stored in the memory 13 is found (N in step S7), the transmitted-packet indication information generating unit 21 proceeds to step S9 to generate the transmitted-packet indication information that carries the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1).
In step S10 of
The first packet transmitting/receiving apparatus 2 sequentially acquires the packets having the sequence numbers “1” to “5”, as indicated at reference numeral 60 (step S1 in
In the loop of steps S1 to S5, the value of the expected sequence number is “2” because of the failure of acquisition of the packet of sequence number “2”. As a result, the sequence numbers “3”, “4”, and “5” are held in the memory 13 until the first packet transmitting/receiving apparatus 2 acquires the packet of sequence number “2”.
When the first packet transmitting/receiving apparatus 2 acquires the packet of sequence number “2” (Y in step S5), the transmitted-packet indication information generating unit 21 generates the transmitted-packet indication information S that carries the sequence numbers “2” to “5” (step S9). The transmitted-packet indication information S may include the sequence numbers “2” to “5” arranged in the order in which the packets are transmitted. For example, in the illustrated example, the sequence numbers “2” to “5” stored in the transmitted-packet indication information S are arranged in the order of “3”, “4”, “5”, and “2”.
Reference number 61 indicates how the transmitted-packet indication information S is transmitted to the second packet transmitting/receiving apparatus 3 after the packet of sequence number “2”.
The packets received from the first packet transmitting/receiving apparatus 2 and stored in the first receive buffer 35 are first reordered according to their sequence numbers by the reordering unit 52 depicted in
In step S30, the reordering unit 52 determines whether there is any transmitted-packet indication information stored in the first receive buffer 35. If there is no transmitted-packet indication information stored in the first receive buffer 35 (N in step S30), the reordering unit 52 transfers the process to step S37 (as indicated by reference character A). If there is any transmitted-packet indication information stored in the first receive buffer 35 (Y in step S30), the reordering unit 52 transfers the process to step S31.
In step S31, the reordering unit 52 retrieves the transmitted-packet indication information from the first receive buffer 35. In step S32, the reordering unit 52 determines whether the sequence numbers indicated by the transmitted-packet indication information include the expected sequence number.
In the processing performed by the second packet transmitting/receiving apparatus 3 to receive packets from the first packet transmitting/receiving apparatus 2, the “expected sequence number” refers to the sequence number of the packet whose sequence number is the smallest among the packets yet to be transmitted and whose succeeding packets also have yet to be reordered by the reordering unit 52.
If the expected sequence number is not included in the sequence numbers indicated by the transmitted-packet indication information (N in step S32), the reordering unit 52 transfers the process to step S37 (as indicated by reference character A). If the expected sequence number is included in the sequence numbers indicated by the transmitted-packet indication information (Y in step S32), the reordering unit 52 transfers the process to step S33.
In step S33, the packet receiving unit 50 retrieves the packet having the expected sequence number from the first receive buffer 35. In step S34, the packet transmitting unit 53 transmits the packets retrieved in step S33 to the third packet transmitting/receiving apparatus 4. In step S35, the reordering unit 52 updates the expected sequence number by incrementing the expected sequence number by 1.
In step S36, the reordering unit 52 determines whether the sequence numbers indicated by the transmitted-packet indication information include the updated expected sequence number. If the updated expected sequence number is included in the sequence numbers indicated by the transmitted-packet indication information (Y in step S36), the reordering unit 52 returns the process to step S33.
Thus, the processor 30 repeats the process from steps S33 to S36, as long as the expected sequence number incremented by 1 in step S35 is included in the transmitted-packet indication information. As a result, the processor 30 can transmit the packets of consecutive sequence numbers to the third packet transmitting/receiving apparatus 4 by retrieving the packets from the first receive buffer 35 according to their sequence numbers. That is, by retrieving the packets from the first receive buffer 35 according to their sequence numbers, the reordering unit 52 can accomplish the reordering without using the reordering buffer.
If the updated expected sequence number is not included in the sequence numbers indicated by the transmitted-packet indication information (N in step S36), the processor 30 returns the process to step S30.
In step S37, the reordering unit 52 determines whether there is any received packet stored in the first receive buffer 35. If there is any received packet stored (Y in step S37), the reordering unit 52 transfers the process to step S38. If there is no received packet (N in step S37), the reordering unit 52 transfers the process to step S44.
In step S38, the packet receiving unit 50 retrieves the packet from the first receive buffer 35, and the reordering unit 52 copies the retrieved packet to the reordering buffer 40, thereby saving the packet from the first receive buffer 35 into the reordering buffer 40. If there is any packet already stored in the reordering buffer 40, the reordering unit 52 stores the retrieved packet to add to the already stored packet.
In step S39, the reordering unit 52 identifies whether or not the sequence number of the packet saved to the reordering buffer 40 in step S38 is identical with the expected sequence number. If the sequence number of the saved packet is identical to the expected sequence number (Y in step S39), the reordering unit 52 transfers the process to step S40.
In step S40, the reordering unit 52 transmits one or more consecutive packets, including the packet of the expected sequence number, to the third packet transmitting/receiving apparatus 4 by taking them from among the packets stored in the reordering buffer 40. In step S41, the reordering unit 52 updates the value of the expected sequence number to (the largest sequence number among the packets transmitted in S40+1).
If it is determined in step S39 that the sequence number of the saved packet is not the expected sequence number (N in step S39), the reordering unit 52 transfers the process to step S42. In step S42, the reordering unit 52 checks to determine if a reordering timer is already ON or not. The reordering timer here may be, for example, a software timer implemented by the processing of the processor 30. The counting of the time by the reordering timer is started when a packet having a sequence number other than the expected sequence number is saved to the reordering buffer 40 that is empty. The reordering timer is a timer used to cause the packets successively stored in the reordering buffer 40 to be transmitted to the third packet transmitting/receiving apparatus 4 when a predetermined time has elapsed after saving the first packet to the reordering buffer 40.
If it is determined in step S42 that the reordering timer is not ON (N in step S42), the reordering unit 52 transfers the process to step S43. In step S43, the reordering unit 52 activates the reordering timer, thus starting the counting of the time by the reordering timer. After that, the reordering unit 52 transfers the process to step S44. If it is determined in step S42 that the reordering timer is already ON (Y in step S42), the reordering unit 52 transfers the process to step S44.
In step S44, the reordering unit 52 checks to determine if the reordering timer is already ON or not. If the reordering timer is not ON (N in step S44), the processor 30 returns the process to step S30 (as indicated by reference character B). If the reordering timer is already ON (Y in step S44), the reordering unit 52 transfers the process to step S45.
In step S45, the reordering unit 52 determines whether the time counted by the reordering timer has exceeded the predetermined time, that is, whether the reordering timer has timed out. When the reordering timer has timed out (Y in step S45), the reordering unit 52 transfers the process to step S46.
In step S46, the reordering unit 52 transmits all the packets stored in the reordering buffer 40 to the third packet transmitting/receiving apparatus 4. In step S47, the reordering unit 52 updates the value of the expected sequence number to (the largest sequence number among the packets transmitted in S46+1). In step S48, the reordering unit 52 stops the reordering timer. After that, the processor 30 returns the process to step S30 (as indicated by reference character B).
If it is determined in step S45 that the reordering timer has not yet timed out (N in step S45), the reordering unit 52 transfers the process to step S49. In step S49, the reordering unit 52 updates the count value of the reordering timer by incrementing the count value by a predetermined time step. After that, the processor 30 returns the process to step S30 (as indicated by reference character B).
Referring back to
If the second packet transmitting/receiving apparatus 3 is congested, for example, the processor 30 may not be able to immediately start the processing of the received packets even when the packets are stored in the first receive buffer 35. In such cases, if the packets are not transmitted in the order specified by their sequence number, and a certain packet is transmitted later than its succeeding packet, the reception of that certain packet may be completed before the turn to process that packet comes. For example, in
By referring to the transmitted-packet indication information S (step S31 in
The reordering unit 52 causes the packet transmitting unit 53 to transmit the packets in the same order in which they were retrieved from the first receive buffer 35. The second transmit buffer 38 stores the packets waiting for their turns to be transmitted. As indicated at reference numeral 63, the packets are stored in the second transmit buffer 38 in the order of the sequence numbers. The square boxes indicated in reference numeral 63 designate storage locations within the second transmit buffer 38. In the figure, the data stored in the square boxes located at higher positions are earlier in the transmission order than those located at lower positions.
In the figure, the number written in each square box indicates the sequence number of the packet stored therein. The character “x” indicates that a preceding packet is stored, and the character “e” indicates an empty storage location, while the character “a” indicates a storage location available for storage of a packet succeeding the packets of sequence numbers “2” to “5”.
The square boxes indicated at reference numeral 64 provide a time chart of the packets to be transmitted from the second packet transmitting/receiving apparatus 3 to the third packet transmitting/receiving apparatus 4. In the figure, the data stored in the square boxes located toward the right are earlier in the transmission order than those located toward the left. In the figure, the number written in each square box indicates the sequence number of the packet stored therein. The character “x” indicates a preceding packet, and the character “e” indicates an empty time slot, while the character “a” indicates a time slot available for storage of a packet succeeding the packets of sequence numbers “2” to “5”. The notation used in
In steps S33 to S36, the reordering unit 52 performs the reordering of the packets without saving them to the reordering buffer 40. In this case, the reordering unit 52 can retrieve the packets from the first receive buffer 35 in the order of the sequence numbers. That is, even when a packet having an earlier sequence number is received later than a packet having a later sequence number, the packet having the earlier sequence number can be retrieved earlier than the latter from the first receive buffer 35 for transmission.
On the other hand, in the case of the reordering process that uses the reordering buffer 40, the packets are retrieved from the first receive buffer 35 in the same order in which they were received. Here, if the order of the reception does not match the order of the sequence numbers, the transmission of the packets has to be held off until after all the succeeding packets received before the packet of the earlier sequence number have been saved to the reordering buffer 40.
The reordering process from steps S33 to S36 can eliminate the packet transmission delay that occurs in the case of the reordering performed using the reordering buffer 40 as described above. Reference numeral 66 in
Further, in the case of the reordering that uses the reordering buffer 40, when the packet of the expected sequence number is retrieved from the first receive buffer 35, all the packets saved in the reordering buffer 40 are transmitted to the third packet transmitting/receiving apparatus 4 in a bursty manner. This causes a transmission burst, increasing the load on the third packet transmitting/receiving apparatus 4. If the third packet transmitting/receiving apparatus 4 is equipped with a guard means that involves shaping, the transmission burst can cause a data dropout. Thus, the reordering using the reordering buffer 40 can become a factor that reduces the communication throughput of the communication system 1.
In contrast, in the process from steps S33 to S36, the reordering unit 52 performs the packet retrieval from the first receive buffer 35 and the packet transmission in alternating fashion. Since the process that performs the packet retrieval and packet transmission in alternating fashion is equivalent to the process that does not involve reordering, the transmission interval between successive packets does not greatly differ compared with the process that does not involve reordering. Accordingly, the reordering process performed in steps S33 to S36 can prevent the occurrence of a transmission burst. Reference numeral 65 in
If the sequence numbers carried in the transmitted-packet indication information are arranged in the same order as the packet transmission order, the reordering unit 52 can determine from the transmitted-packet indication information the order in which the packets are stored in the first receive buffer 35. In this case, the reordering unit 52 can retrieve the packet of any desired sequence number from the first receive buffer 35 without referring to the sequence number embedded in that packet.
In the case of the reordering process using the reordering buffer, since the packets as user data, for example, are first stored in the receive buffer, and then the stored packets are copied to the reordering buffer, the processing load of the processor in the receiving apparatus increases. This can cause a delay in the processing of the user data or can lead to a failure of the data transmission function due to overload of the processor in the receiving apparatus.
According to the communication system 1 of the present embodiment, when the processing in the second packet transmitting/receiving apparatus 3 is delayed, and a large amount of packets is stored in the first receive buffer 35, the transmitted-packet indication information is also stored in the first receive buffer 35 together with the packets. Accordingly, when retrieving the packets from the first receive buffer 35, the second packet transmitting/receiving apparatus 3 can reorder the packets by referring to the transmitted-packet indication information. Since the overloading of the processor 30 due to the use of the reordering buffer can thus be eliminated, the above-noted problems such as the processing delay of the user data and the failure of the data transmission function can be resolved.
Furthermore, according to the communication system 1 of the present embodiment, bursty transmission of data from the second packet transmitting/receiving apparatus 3 can be prevented. As a result, the present embodiment can eliminate such problems as the occurrence of a functional failure of the communication system 1 due to communication bursts and dropouts of user data due to shaping.
In HSUPA service, the transmission power may be reduced during radio communication between the mobile and base stations for efficient utilization of the radio resources. When this happens, the HARQ retransmission rate increases, increasing the chance of mismatch between the order of the sequence numbers and the order of the reception and thus increasing the processing load for the reordering of the user data at the radio network controller. The reordering process according to the present embodiment contributes to reducing the processing load for the reordering of the user data at the radio network controller.
In step S50, the packet acquiring unit 14 acquires a packet, as in step S1 depicted in
In step S54, the transmitted-packet indication information generating unit 21 determines whether the current time is the periodic transmission time for transmitting the transmitted-packet indication information. If the current time is not the periodic transmission time (N in step S54), the processor 10 returns the process to step S50. By repeating the process from steps S50 to S54 during each periodic interval, the transmitted-packet indication information generating unit 21 successively stores the sequence numbers of the transmitted packets in the memory 13.
If the current time is the periodic transmission time (Y in step S54), the transmitted-packet indication information generating unit 21 generates in step S55 the transmitted-packet indication information that carries all the sequence numbers stored in the memory 13. The transmitted-packet indication information transmitting unit 23 transmits the transmitted-packet indication information to the second packet transmitting/receiving apparatus 3. In step S56, the transmitted-packet indication information generating unit 21 deletes the sequence numbers stored in the memory 13. After that, the processor 10 returns the process to step S50.
According to the present embodiment, the transmitted-packet indication information generating unit 21 can create the transmitted-packet indication information by a relatively simple process of periodically gathering the sequence numbers. Accordingly, the present embodiment can be implemented without imposing a large load on the processor 10 in the first packet transmitting/receiving apparatus 2.
Of the component elements depicted in
Of the component elements depicted in
The transmitted-packet indication information request signal transmitting unit 54 creates a transmitted-packet indication information request signal for requesting the transmission of the transmitted-packet indication information from the first packet transmitting/receiving apparatus 2, and transmits the request signal to the first packet transmitting/receiving apparatus 2. For example, the transmitted-packet indication information request signal transmitting unit 54 may transmit the transmitted-packet indication information request signal to the first packet transmitting/receiving apparatus 2 at periodic intervals of time.
Alternatively, the transmitted-packet indication information request signal transmitting unit 54 may transmit the transmitted-packet indication information request signal to the first packet transmitting/receiving apparatus 2, for example, in accordance with an instruction from the reordering unit 52. Here, the reordering unit 52 may instruct the transmitted-packet indication information request signal transmitting unit 54 to transmit the transmitted-packet indication information request signal, for example, when the processor 30 has completed the processing of the packets indicated by the previously received transmitted-packet indication information.
The transmitted-packet indication information request signal receiving unit 24 depicted in
In step S64, the transmitted-packet indication information generating unit 21 determines whether the transmitted-packet indication information request signal receiving unit 24 has received the transmitted-packet indication information request signal. If the transmitted-packet indication information request signal is not received yet (N in step S64), the processor 10 returns the process to step S60. By repeating the process from steps S60 to S64 until the transmitted-packet indication information request signal is received, the transmitted-packet indication information generating unit 21 successively stores the sequence numbers of the transmitted packets in the memory 13.
When the transmitted-packet indication information request signal is received (Y in step S64), in step S65 the transmitted-packet indication information generating unit 21 generates the transmitted-packet indication information that carries all the sequence numbers stored in the memory 13. The transmitted-packet indication information transmitting unit 23 transmits the transmitted-packet indication information to the second packet transmitting/receiving apparatus 3. In step S66, the transmitted-packet indication information generating unit 21 deletes the sequence numbers stored in the memory 13. After that, the processor 10 returns the process to step S60.
According to the present embodiment, since the transmitted-packet indication information can be transmitted in accordance with demand from the second packet transmitting/receiving apparatus 3, the transmitted-packet indication information can be generated and transmitted efficiently.
Of the component elements depicted in
The packet loss detection unit 25 detects the occurrence of a lost packet. For example, the packet loss detection unit 25 may detect the occurrence of a lost packet by detecting the presence or absence of a discontinuity in the sequence numbers stored in the memory 13. The transmission permit/non-permit determining unit 26 determines whether a prescribed condition is satisfied or not after the occurrence of a lost packet has been detected by the packet loss detection unit 25. When it is determined that the prescribed condition is satisfied, the transmitted-packet indication information generating unit 21 generates the transmitted-packet indication information, and the transmitted-packet indication information transmitting unit 23 transmits it out. The prescribed condition here may be satisfied, for example, when a predetermined time has elapsed after the detection of the packet loss, or when a predetermined number of packets have been transmitted after the detection of the packet loss.
In step S74, the transmission permit/non-permit determining unit 26 refers to the value of a packet loss flag to determine whether it indicates the detection of a packet loss. The packet loss flag is a variable that can be referred to and changed by the processor 10, and can take two values, “T” that indicates the occurrence of a packet loss and “F” that indicates nonoccurrence of a packet loss.
If the value of the packet loss flag is not “T” (N in step S74), the processor 10 transfers the process to step S75. In step S75, the packet loss detection unit 25 detects whether a packet loss has occurred or not. If the occurrence of a packet loss is detected (Y in step S75), in step S76 the packet loss detection unit 25 sets the value of the packet loss flag to “T”. After that, the processor 10 transfers the process to step S70.
If it is determined in step S75 that the occurrence of a packet loss is not detected (N in step S75), the processor 10 transfers the process to step S70.
If the value of the packet loss flag is “T” (Y in step S74), the processor 10 transfers the process to step S77. In step S77, the transmission permit/non-permit determining unit 26 determines whether the prescribed condition is satisfied or not. If the transmission permit/non-permit determining unit 26 has determined that the prescribed condition is satisfied (Y in step S77), in step S78 the transmitted-packet indication information generating unit 21 generates the transmitted-packet indication information that carries all the sequence numbers stored in the memory 13. The transmitted-packet indication information transmitting unit 23 transmits the transmitted-packet indication information to the second packet transmitting/receiving apparatus 3.
In step S79, the transmitted-packet indication information generating unit 21 deletes the sequence numbers stored in the memory 13. In step S80, the transmission permit/non-permit determining unit 26 sets the value of the packet loss flag to “F”. After that, the processor 10 returns the process to step S70. If, in step S77, the transmission permit/non-permit determining unit 26 has determined that the prescribed condition is not satisfied (N in step S77), the processor 10 returns the process to step S70.
According to the present embodiment, when a packet loss has occurred, the transmitted-packet indication information can be transmitted out without having to check whether the lost packet has been successfully transmitted. Accordingly, the present embodiment can be implemented without imposing a large load on the processor 10 in the first packet transmitting/receiving apparatus 2.
The ACK acquiring unit 27 acquires the acknowledge signal returned from the second packet transmitting/receiving apparatus 3 for each packet by the retransmission control performed by the retransmission control unit 18. The sequence number acquiring unit 28 acquires the sequence number of the packet from the acknowledge signal that the ACK acquiring unit 27 acquired for that packet.
Of the component elements depicted in
In step S93, the processor 10 determines whether the communication unit 15 has received an acknowledge signal. If the communication unit 15 has received a negative acknowledge signal (N in S93), the processor 10 returns the process to step S91 to retransmit the packet. If it is determined in step S93 that the communication unit 15 has received an acknowledge signal (Y in S93), the processor 10 transfers the process to step S94.
In step S94, the ACK acquiring unit 27 acquires the acknowledge signal from the receive buffer 17. The sequence number acquiring unit 29 extracts from the acknowledge signal the sequence number of the packet for which the acknowledge signal was returned. The transmitted-packet indication information generating unit 21 receives the extracted sequence number from the sequence number acquiring unit 28.
In step S95, as in step S4 depicted in
If the sequence number acquired in step S94 is the expected sequence number (Y in step S96), then in step S97 the transmitted-packet indication information generating unit 21 sets the value of index variable i to (the expected sequence number+1). In steps S98 and S99, the transmitted-packet indication information generating unit 21 searches for the smallest expected sequence number not stored in the memory 13. More specifically, in step S98, the transmitted-packet indication information generating unit 21 determines whether or not the sequence number equal to the value of index variable i is stored in the memory 13. As long as the sequence number equal to the value of index variable i is stored in the memory 13 (Y in step S98), the transmitted-packet indication information generating unit 21 increments the value of index variable i by 1 in step S99, and repeats the steps S99 and S98.
If the smallest expected sequence number not stored in the memory 13 is found (N in step S98), the transmitted-packet indication information generating unit 21 proceeds to step S100 to generate the transmitted-packet indication information that carries the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). The transmitted-packet indication information transmitting unit 23 transmits the transmitted-packet indication information to the second packet transmitting/receiving apparatus 3.
In step S101, the transmitted-packet indication information generating unit 21 deletes from the memory 13 the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). In step S102, the transmitted-packet indication information generating unit 21 updates the value of the expected sequence number to the value of index variable i. After that, the processor 10 returns the process to step S90.
According to the present embodiment, by making the determination based on the acknowledge signal, the first packet transmitting/receiving apparatus 2 can more accurately determine whether the packet of the expected sequence number has been transmitted or not.
The processor 110 is implemented using a data processor such as a CPU, and controls the operation of the mobile station 101 by executing the control program 111 stored in the program storage unit 112. The program storage unit 112 may also store an application program 119 which is executed by the processor 10 to generate user data. The memory 113 is used to store data necessary for the execution of the control program 111 and the application program 119, and is also used to store temporary data generated during the execution of such programs.
The mobile station 101 transmits the user data generated by the application program 119 to the base station 102 by dividing it into frames each having a predetermined format. Each frame may be, for example, a MAC-es PDU. Each of the frames carrying the user data is preassigned a sequence number that indicates the order of the frame in the sequence of frames. The sequence number may be embedded in each frame. In the following description, the frames into which the user data has been divided may be referred to simply as the “user data.”
The radio communication unit 115 has the function of handling radio communication between the mobile station 101 and the base station 102 as its host apparatus. For example, the radio communication unit 115 transmits the user data to the base station 102. Further, the radio communication unit 115 receives an acknowledge signal or a negative acknowledge signal returned from the base station 102 for the transmitted user data. The transmit buffer 116 temporarily holds the data to be transmitted to the base station 102, until the radio communication unit 115 accepts the data. The receive buffer 117 temporarily holds the data that the radio communication unit 115 received from the based station 102. The retransmission control unit 118 performs retransmission control during the radio communication between the radio communication unit 115 and the base station 102. The retransmission control performed by the retransmission control unit 118 may be, for example, HARQ control.
The processor 120 is implemented using a data processor such as a CPU, and controls the operation of the base station 102 by executing the control program 121 stored in the program storage unit 122. The memory 113 is used to store data necessary for the execution of the control program 121, etc., and is also used to store temporary data generated during the execution of such programs.
The radio communication unit 124 has the function of handling radio communication between it and the mobile station 101. For example, the radio communication unit 124 receives the user data transmitted from the base station 102. Further, the radio communication unit 124 transmits an acknowledge signal or a negative acknowledge signal to the mobile station 101 for the user data received from the mobile station 101. The first receive buffer 125 temporarily holds the data that the radio communication unit 124 received from the mobile station 101. The first transmit buffer 126 temporarily holds the data to be transmitted from the base station 102 to the mobile station 101, until the radio communication unit 124 accepts the data.
The communication unit 127 transmits and receives data to and from the radio network controller 103, i.e., the host apparatus of the base station 101. For example, the communication unit 127 transmits the user data received from the mobile station 101 on to the radio network controller 103. The second receive buffer 129 temporarily holds the data that the communication unit 127 received from the radio network controller 103. The second transmit buffer 128 temporarily holds the data to be transmitted from the base station 102 to the radio network controller 103, until the communication unit 127 accepts the data. The retransmission control unit 131 performs retransmission control during the radio communication between the radio communication unit 124 and the mobile station 101. The reordering buffer 130 will be described later.
The user data transmitting unit 132 performs processing to transmit the user data received from the mobile station 101 by the radio communication unit 124 on to the radio network controller 103. The user data transmitting unit 132 stores the user data in the second transmit buffer 128 for transmission to the radio network controller 103, and the communication unit 127 transmits the user data stored in the second transmit buffer 128 to the radio network controller 103.
The sequence data generating unit 133 takes as input the user data received from the mobile station 101, acquires the sequence numbers from the user data, and generates sequence data that carries the thus acquired sequence numbers. The sequence data designates the user data to be transmitted from the user data transmitting unit 132, and corresponds to one example of the transmitted-packet indication information illustrated in connection with the other embodiments described earlier.
For example, when the base station 102 received the user data in the order of the sequence numbers n1, n2, n3, and n4, the sequence data generating unit 133 may generate the sequence data by arranging the sequence numbers in the order n1, n2, n3, and n4, i.e., in the same order in which the user data were received.
The sequence data generating unit 133 extracts the sequence number embedded in each user data received from the mobile station 101. The sequence data generating unit 133 stores the extracted sequence number in the memory 123. As the sequence number of each user data is extracted, the sequence data generating unit 133 adds it to the series of sequence numbers so far stored in the memory 123, and thereby generates the series of sequence numbers arranged in the order in which the user data were received. In accordance with transmit timing to be described later, the sequence data generating unit 133 retrieves the series of sequence numbers from the memory 123 and passes the sequence data containing the series of sequence numbers to the sequence data transmitting unit 135. Since the user data transmitting unit 132 transmits the user data to the radio network controller 103 in the order in which they were received from the mobile station 101, the order of the sequence numbers contained in the sequence data is the same as the order in which the user data are transmitted from the base station 102 to the radio network controller 103.
The sequence data transmitting unit 135 performs processing to transmit the sequence data generated by the sequence data generating unit 133 to the radio network controller 103. The sequence data transmitting unit 135 stores the sequence data in the second transmit buffer 128, and the communication unit 127 transmits the sequence data stored in the second transmit buffer 128 to the radio network controller 103.
The processor 140 is implemented using a data processor such as a CPU, and controls the operation of the radio network controller 103 by executing the control program 141 stored in the program storage unit 142. The memory 143 is used to store data necessary for the execution of the control program 141, etc., and is also used to store temporary data generated during the execution of such programs.
The first communication unit 144 transmits and receives data to and from the base station 102. For example, the first communication unit 144 receives the user data transmitted from the base station 102. Further, the first communication unit 144, for example, receives the sequence data transmitted from the base station 102. The first receive buffer 145 temporarily holds the data that the first communication unit 144 received from the base station 102. The first transmit buffer 146 temporarily holds the data to be transmitted from the radio network controller 103 to the base station 102, until the first communication unit 144 accepts the data.
The second communication unit 147 transmits and receives data to and from the xGSN 104, i.e., the host apparatus of the radio network controller 103. For example, the second communication unit 147 transmits the user data received from the mobile station 101 on to the xGSN 104. The second receive buffer 149 temporarily holds the data that the second communication unit 147 received from the xGSN 104. The second transmit buffer 148 temporarily holds the data to be transmitted from the radio network controller 103 to the xGSN 104, until the second communication unit 147 accepts the data.
In the present embodiment, the reordering buffer 150 is a buffer used for saving the user data from the first receive buffer 145, as necessary, when performing the reordering of the user data received from the base station 102.
The user data receiving unit 151 performs processing to receive the user data received by the first communication unit 144 and held in the first receive buffer 14. The sequence data receiving unit 152 performs processing to receive the sequence data received by the first communication unit 144 and held in the first receive buffer 145.
The reordering unit 153 performs processing to reorder the user data received from the base station 102 according to their sequence numbers. During the reordering, the reordering unit 153 saves the user data retrieved from the first receive buffer 145, as necessary, into the reordering buffer 150. The user transmitting unit 154 performs processing to transmit the user data to the xGSN 104 in the order rearranged by the reordering unit 153. The user data transmitting unit 154 stores the user data in the second transmit buffer 148 for transmission to the xGSN 104, and the second communication unit 147 transmits the user data stored in the second transmit buffer 148 to the xGSN 104.
Reference numerals 201 and 202 indicate the user data to be transmitted from the mobile station 101 to the base station 102 and from the base station 102 to the radio network controller 103, respectively. The user data located at higher positions are earlier in the transmission order than those located at lower positions. Suppose that, in the transmission from the mobile station 101 to the base station 102, the first transmission of the user data of sequence number “2” failed and the user data of sequence number “2” was retransmitted by means of retransmission control after transmission of the user data of sequence number “5”, as indicated at reference numeral 201.
In this case, the base station 102 transmits the user data to the radio network controller 103 in the order of the sequence numbers “1”, “3”, “4”, “5”, and “2”, as indicated at reference numeral 202. As a result, the radio network controller 103 stores the user data in the first receive buffer 145 in the order in which they were received, that is, in the order of the sequence numbers “1”, “3”, “4”, “5”, and “2”.
If the processor 140 in the radio network controller 103 is congested, the processor 140 is unable to immediately start the processing of the received user data even when the user data are stored in the receive buffer 145. In
In the case of the reordering process that uses the reordering buffer 150, the reordering unit 153 retrieves the user data from the first receive buffer 145 in the same order in which they were received. Here, if the order of the reception does not match the order of the sequence numbers, the reordering unit 153 performs control so that any user data received earlier than user data having an earlier sequence number than it is saved to the reordering buffer 150.
More specifically, in the example illustrated in
After retrieving the user data of sequence number “2” from the first receive buffer 145 and saving it to the reordering buffer 150, the reordering unit 153 causes the user data transmitting unit 154 to transmit the user data in accordance with the order specified by their sequence numbers. The second transmit buffer 148 stores the user data waiting for their turns to be transmitted. As indicated in reference numeral 205, the user data are stored in the second transmit buffer 148 in the order of the sequence numbers.
The reordering unit 153 continues to hold the user data of sequence numbers “3” to “5” in the reordering buffer 150 until after the user data of sequence number “2” is retrieved from the first receive buffer 145. As a result, the processing to transmit the user data of sequence numbers “2” to “5” is delayed, as indicated at reference numeral 205. The square boxes indicated at reference numeral 206 provide a time chart of the user data to be transmitted from the radio network controller 103 to the xGSN. Many empty time slots “e” (reference numeral 207) occur between the user data of sequence numbers “1” and “2” due to the transmission delay of the user data of sequence numbers “2” to “5”.
After the user data of sequence number “2” has been retrieved from the first receive buffer 145, the reordering unit 153 transmits all the packets saved in the reordering buffer 150 to the xGSN 104 in a bursty manner. This causes a transmission burst, increasing the load on the xGSN 104. Reference numeral 208 illustrates how this occurs. If the xGSN 104 is equipped with a guard means that involves shaping, the transmission burst can cause a data dropout.
In step S113, the sequence data generating unit 133 stores the sequence number acquired in step S111 into the memory 123. If the sequence number of any previously received user data is already stored in the memory 123, the sequence data generating unit 133 adds the acquired sequence number immediately after the sequence number already stored in the memory 123.
In step S114, the sequence data generating unit 133 determines whether the sequence number acquired in step S111 is the expected sequence number or not. In the processing performed by the base station 102 to transmit the user data to the radio network controller 103, the “expected sequence number” refers to the sequence number that comes first in the transmission order among the sequence numbers of the user data yet to be transmitted. In the present embodiment, it is assumed that the transmission order is in ascending order of the sequence numbers. In this case, the “expected sequence number” refers to the smallest sequence number among the sequence numbers of the packets yet to be transmitted.
If it is determined in step S114 that the sequence number acquired in step S111 is not the expected sequence number (N in step S114), the processor 120 returns the process to step S110. By repeating the process from S110 to S114, the sequence data generating unit 133 successively stores in the memory 123 the sequence numbers of the transmitted user data having sequence numbers succeeding the expected sequence number.
If it is determined in step S114 that the sequence number acquired in step S111 is the expected sequence number (Y in step S114), then in step S115 the sequence data generating unit 133 sets the value of index variable i to (the expected sequence number+1). In steps S116 and S117, the sequence data generating unit 133 searches for the smallest expected sequence number not stored in the memory 123. More specifically, in step S116, the sequence data generating unit 133 determines whether or not the sequence number equal to the value of index variable i is stored in the memory 123. As long as the sequence number equal to the value of index variable i is stored in the memory 123 (Y in step S116), the sequence data generating unit 133 increments the value of index variable i by 1 in step S117, and repeats the steps S116 and S117.
If the smallest expected sequence number not stored in the memory 123 is found (N in step S116), the sequence data generating unit 133 proceeds to step S118 to generate the sequence data that carries the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). The format of the sequence data may be the same as that illustrated with reference to
In step S119, the sequence data generating unit 133 deletes from the memory 123 the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). In step S120, the sequence data generating unit 133 updates the value of the expected sequence number to the value of index variable i. After that, the processor 120 returns the process to step S110.
Reference numerals 211 indicates the user data to be transmitted from the mobile station 101 to the base station 102. The user data located at higher positions are earlier in the transmission order than those located at lower positions. Reference numerals 212 indicates the user data and sequence data to be transmitted from the base station 102 to the radio network controller 103. The sequence data is indicated by a square box containing a character “S”.
Suppose that, in the transmission from the mobile station 101 to the base station 102, the first transmission of the user data of sequence number “2” failed and the user data of sequence number “2” was retransmitted after transmission of the user data of sequence number “5”, as indicated at reference numeral 211. In this case, the user data are transmitted to the radio network controller 103 in the order of the sequence numbers “1”, “3”, “4”, “5”, and “2” (step S112).
In the loop of steps S110 to S114, the value of the expected sequence number is “2” because of the failure of reception of the user data of sequence number “2”. As a result, the sequence numbers “3”, “4”, and “5” are held in the memory 123 until the base station 102 acquires the user data of sequence number “2”.
When the base station 102 receives the user data of sequence number “2” (Y in step S114), the sequence data generating unit 133 generates the transmitted-sequence data S that carries the sequence numbers “2” to “5” (step S118). The sequence data S may include the sequence numbers “2” to “5” arranged in the order in which the user data are transmitted from the base station 102 to the radio network controller 103. For example, in the illustrated example, the sequence numbers “2” to “5” stored in the sequence data S are arranged in the order of “3”, “4”, “5”, and “2”.
The sequence data transmitting unit 135 transmits the sequence data S after transmission of the user data of sequence number “2”. Reference number 212 indicates how the sequence data S is transmitted to the radio network controller 103 after the user data of sequence number “2”.
The user data received from the base station 102 and stored in the first receive buffer 145 are first reordered according to their sequence numbers by the reordering unit 153 depicted in
In step S141, the reordering unit 153 retrieves the sequence data from the first receive buffer 145. In step S142, the reordering unit 153 determines whether the retrieved sequence data includes the expected sequence number. In the processing performed by the radio network controller 103 to receive user data from the base station 102, the “expected sequence number” refers to the sequence number of the user data whose sequence number is the smallest among the user data yet to be transmitted and whose succeeding user data also have yet to be reordered by the reordering unit 153.
If the expected sequence number is not included in the sequence data (N in step S142), the reordering unit 153 transfers the process to step S147 (as indicated by reference character A). If the expected sequence number is included in the sequence data (Y in step S142), the reordering unit 153 transfers the process to step S143.
In step S143, the user data receiving unit 151 retrieves the user data having the expected sequence number from the first receive buffer 145. In step S144, the user data transmitting unit 154 transmits the user data retrieved in step S143 to the xGSN 104. In step S145, the reordering unit 153 updates the expected sequence number by incrementing the expected sequence number by 1.
In step S146, the reordering unit 153 determines whether the sequence data includes the updated expected sequence number. If the updated expected sequence number is included in the sequence data (Y in step S146), the reordering unit 153 returns the process to step S143.
Thus, the processor 140 repeats the process from steps S143 to S146, as long as the expected sequence number incremented by 1 in step S145 is included in the sequence data retrieved in step S141. As a result, the processor 140 can transmit the user data of consecutive sequence numbers to the xGSN 104 by retrieving the user data from the first receive buffer 145 according to their sequence numbers. That is, by retrieving the user data from the first receive buffer 145 according to their sequence numbers, the reordering unit 153 can accomplish the reordering without using the reordering buffer.
If the updated expected sequence number is not included in the sequence data (N in step S146), the processor 140 returns the process to step S140.
In step S147, the reordering unit 153 determines whether there is any received user data stored in the first receive buffer 145. If there is any received user data stored (Y in step S147), the reordering unit 153 transfers the process to step S148. If there is no received user data (N in step S147), the reordering unit 153 transfers the process to step S154.
In step S148, the user data receiving unit 151 retrieves the user data from the first receive buffer 145, and the reordering unit 153 copies the retrieved user data to the reordering buffer 150, thereby saving the user data from the first receive buffer 145 into the reordering buffer 150. If there is any user data already stored in the reordering buffer 150, the reordering unit 153 stores the retrieved user data to add to the already stored user data.
In step S149, the reordering unit 153 identifies whether or not the sequence number of the user data saved to the reordering buffer 150 in step S148 is identical with the expected sequence number. If the sequence number of the saved user data is identical with the expected sequence number (Y in step S149), the reordering unit 153 transfers the process to step S150.
In step S150, the reordering unit 153 transmits one or more consecutive user data, including the user data of the expected sequence number, to the xGSN 104 by taking them from among the user data stored in the reordering buffer 150. In step S151, the reordering unit 153 updates the value of the expected sequence number to (the largest sequence number among the user data transmitted in S150+1).
If it is determined in step S149 that the sequence number of the saved user data is not the expected sequence number (N in step S149), the reordering unit 153 transfers the process to step S152. In step S152, the reordering unit 153 checks to determine if a reordering timer is already ON or not. The reordering timer here may be, for example, a software timer implemented by the processing of the processor 140. The counting of the time by the reordering timer is started when user data having a sequence number other than the expected sequence number is saved to the reordering buffer 150 that is empty. The reordering timer is a timer used to cause the user data successively stored in the reordering buffer 150 to be transmitted to the xGSN 104 when a predetermined time has elapsed after saving the first user data to the reordering buffer 150.
If it is determined in step S152 that the reordering timer is not ON (N in step S152), the reordering unit 153 transfers the process to step S153. In step S153, the reordering unit 153 activates the reordering timer, thus starting the counting of the time by the reordering timer. After that, the reordering unit 153 transfers the process to step S154. If it is determined in step S152 that the reordering timer is already ON (Y in step S152), the reordering unit 153 transfers the process to step S154.
In step S154, the reordering unit 153 checks to determine if the reordering timer is already ON or not. If the reordering timer is not ON (N in step S154), the processor 140 returns the process to step S140 (as indicated by reference character B). If the reordering timer is already ON (Y in step S154), the reordering unit 153 transfers the process to step S155.
In step S155, the reordering unit 153 determines whether the time counted by the reordering timer has exceeded the predetermined time, that is, whether the reordering timer has timed out. When the reordering timer has timed out (Y in step S155), the reordering unit 153 transfers the process to step S156.
In step S156, the reordering unit 153 transmits all the user data stored in the reordering buffer 150 to the xGSN 104. In step S157, the reordering unit 153 updates the value of the expected sequence number to (the largest sequence number among the user data transmitted in S156+1). In step S158, the reordering unit 153 stops the reordering timer. After that, the processor 140 returns the process to step S140 (as indicated by reference character B).
If it is determined in step S155 that the reordering timer has not yet timed out (N in step S155), the reordering unit 153 transfers the process to step S159. In step S159, the reordering unit 153 updates the count value of the reordering timer by incrementing the count value by a predetermined time step. After that, the processor 140 returns the process to step S140 (as indicated by reference character B).
Referring back to
By referring to the sequence data S (step S141 in
The reordering unit 153 causes the user data transmitting unit 154 to transmit the user data in the same order in which they were retrieved from the first receive buffer 145. The second transmit buffer 148 stores the user data waiting for their turns to be transmitted. As indicated at reference numeral 214, the user data are stored in the second transmit buffer 148 in the order of the sequence numbers. The square boxes indicated at reference numeral 214 designate storage locations within the second transmit buffer 148. In the figure, the data stored in the square boxes located at higher positions are earlier in the transmission order than those located at lower positions. The square boxes indicated at reference numeral 215 provide a time chart of the user data to be transmitted from the radio network controller 103 to the xGSN 104. In the figure, the data stored in the square boxes located toward the right are earlier in the transmission order than those located toward the left.
In steps S143 to S146, the reordering unit 153 performs the reordering of the user data without saving them to the reordering buffer 150. In this case, the reordering unit 153 can retrieve the user data from the first receive buffer 145 in the order of the sequence numbers. That is, even when user data having an earlier sequence number is received later than user data having a later sequence number, the user data having the earlier sequence number can be retrieved earlier than the latter from the first receive buffer 145 for transmission.
Since the reordering performed in steps S143 to S146 does not involve saving the user data to the reordering buffer 150, the transmission delay that occurs in the case of the reordering performed using the reordering buffer 150 as described with reference to
Further, in the case of the reordering performed using the reordering buffer 150 as described with reference to
If the sequence numbers carried in the sequence data are arranged in the same order as the user data transmission order, the reordering unit 153 can determine from the sequence data the order in which the user data are stored in the first receive buffer 145. In this case, the reordering unit 153 can retrieve the user data of any desired sequence number from the first receive buffer 145 without referring to the sequence number embedded in that user data.
In the reordering process using the reordering buffer, since the user data are first stored in the receive buffer, and then the stored user data are copied to the reordering buffer, the processing load of the processor in the radio network controller 103 increases. This can cause a delay in the processing of the user data or can lead to a failure of the data transmission function due to overload of the processor in the radio network controller 103.
According to the communication system 100 of the present embodiment, when the processing in the radio network controller 103 is delayed, and a large amount of user data is stored in the first receive buffer 145, the sequence data is also stored in the first receive buffer 145 together with the user data. Accordingly, when retrieving the user data from the first receive buffer 145, the radio network controller 103 can reorder the user data by referring to the sequence data. Since the overloading of the processor 140 due to the use of the reordering buffer can thus be eliminated, the above-noted problems such as the processing delay of the user data and the failure of the data transmission function can be resolved.
Furthermore, according to the communication system 100 of the present embodiment, bursty transmission of data from the radio network controller 103 can be prevented. As a result, the present embodiment can eliminate such problems as the occurrence of a functional failure of the communication system 100 due to communication bursts and dropouts of user data due to shaping.
The base station 102 may transmit the sequence data periodically, just as the first packet transmitting/receiving apparatus 2 depicted in
Further, the radio network controller 103 may be equipped with a sequence data request signal transmitting unit, just as the second packet transmitting/receiving apparatus 3 depicted in
The base station 102 may be equipped with a sequence data request signal receiving unit, just as the first packet transmitting/receiving apparatus 2 depicted in
The base station 102 may also be equipped with a data loss detection unit for detecting the occurrence of lost data, just as the first packet transmitting/receiving apparatus 2 depicted in
The following describes an embodiment in which the first packet transmitting/receiving apparatus 2 depicted in
The functions of a user data transmitting unit 160, an ACK acquiring unit 161, a sequence number acquiring unit 162, a sequence data generating unit 163, and a sequence data transmitting unit 165 are implemented by the processor 110 of
The user data transmitting unit 160 performs processing to transmit the user data generated by the application program 119 to the base station 102. The user data transmitting unit 160 stores the user data in the transmit buffer 116 for transmission to the base station 102, and the radio communication unit 115 transmits the user data stored in the transmit buffer 116 to the base station 102.
The ACK acquiring unit 161 acquires an acknowledge signal returned from the base station 102 for each user data by the retransmission control performed by the retransmission control unit 118. The sequence number acquiring unit 162 acquires the sequence number of the user data from the acknowledge signal that the ACK acquiring unit 161 acquired for that user data.
The sequence data generating unit 163 takes as input from the sequence number acquiring unit 162 the sequence numbers of the user data that have been successfully transmitted by the user data transmitting unit 160, and generates sequence data that carries the thus acquired sequence numbers. The sequence data designates the user data transmitted by the user data transmitting unit 160, and corresponds to one example of the transmitted-packet indication information illustrated in connection with the other embodiments described earlier. For example, when the mobile station 101 transmitted the user data in the order of the sequence numbers n1, n2, n3, and n4, the sequence data generating unit 163 may generate the sequence data by arranging the sequence numbers in the order n1, n2, n3, and n4, i.e., in the same order in which the user data were transmitted.
The sequence data generating unit 163 receives the sequence numbers from the sequence number acquiring unit 162. The sequence data generating unit 163 stores each received sequence number in the memory 113. As each sequence number is received, the sequence data generating unit 163 adds it to the series of sequence numbers so far stored in the memory 113, and thereby generates the series of sequence numbers arranged in the order in which the user data are transmitted. In accordance with transmit timing described later, the sequence data generating unit 163 retrieves the series of sequence numbers from the memory 113 and passes the sequence data containing the series of sequence numbers to the sequence data transmitting unit 165.
The sequence data transmitting unit 165 performs processing to transmit the sequence data generated by the sequence data generating unit 163 to the base station 102. The sequence data transmitting unit 165 stores the sequence data in the transmit buffer 116, and the radio communication unit 115 transmits the sequence data stored in the transmit buffer 116 to the base station 102.
In step S163, the processor 110 determines whether the radio communication unit 115 has received an acknowledge signal. If the radio communication unit 115 has received a negative acknowledge signal (N in S163), the processor 110 returns the process to step S161 to retransmit the user data. If it is determined in step S163 that the radio communication unit 115 has received an acknowledge signal (Y in S163), the processor 110 transfers the process to step S164.
In step S164, the ACK acquiring unit 161 acquires the acknowledge signal from the receive buffer 117. The sequence number acquiring unit 162 extracts from the acknowledge signal the sequence number of the user data for which the acknowledge signal was returned. The sequence data generating unit 163 receives the extracted sequence number from the sequence number acquiring unit 162.
In step S165, the sequence data generating unit 163 stores the sequence number acquired in step S164 into the memory 113. If the sequence number of any previously received user data is already stored in the memory 113, the user data generating unit 163 adds the acquired sequence number immediately after the sequence number already stored in the memory 113.
In step S166, the sequence data generating unit 163 determines whether the sequence number acquired in step S164 is the expected sequence number or not. In the processing performed by the mobile station 101 to transmit the user data to the base station 102, the “expected sequence number” refers to the sequence number that comes first in the transmission order among the sequence numbers of the user data yet to be transmitted. In the present embodiment, it is assumed that the transmission order is in ascending order of the sequence numbers. In this case, the “expected sequence number” refers to the smallest sequence number among the sequence numbers of the packets yet to be transmitted.
If the sequence number acquired in step S164 is not the expected sequence number (N in step S166), the processor 110 returns the process to step S160.
If the sequence number acquired in step S164 is the expected sequence number (Y in step S166), then in step S167 the sequence data generating unit 163 sets the value of index variable i to (the expected sequence number+1).
In steps S168 and S169, the sequence data generating unit 163 searches for the smallest expected sequence number not stored in the memory 113. More specifically, in step S168, the sequence data generating unit 163 determines whether or not the sequence number equal to the value of index variable i is stored in the memory 113. As long as the sequence number equal to the value of index variable i is stored in the memory 113 (Y in step S168), the sequence data generating unit 163 increments the value of index variable i by 1 in step S169, and repeats the steps S168 and S169.
If the smallest expected sequence number not stored in the memory 113 is found (N in step S168), the sequence data generating unit 163 proceeds to step S170 to generate the sequence data that carries the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). The sequence data transmitting unit 163 transmits the sequence data to the base station 102.
In step S171, the sequence data generating unit 163 deletes from the memory 113 the consecutive sequence numbers starting from the expected sequence number and continuing up to (i−1). In step S172, the sequence data generating unit 163 updates the value of the expected sequence number to the value of index variable i. After that, the processor 110 returns the process to step S160.
Reference numerals 221 indicates the user data transmitted from the mobile station 101 to the base station 102, and the numbers “1” to “5” contained in the square boxes indicate the sequence numbers of the respective user data. The data located toward the right are earlier in the transmission order than those located toward the left.
Reference numeral 222 indicates the ACK signals returned from the base station 102 to the mobile station 101 for the transmitted user data indicated at reference numeral 221. The numbers “1” to “5” contained in the square boxes indicate the sequence numbers of the user data successfully received by the base station 102. The data located toward the left are earlier in the transmission order than those located toward the right.
Suppose that, in the transmission from the mobile station 101 to the base station 102, the first transmission of the user data of sequence number “2” failed and the user data of sequence number “2” was retransmitted after transmission of the user data of sequence number “5”. In this case, the user data are transmitted to the base station 102 in the order of the sequence numbers “1”, “3”, “4”, “5”, and “2” (step S161).
In the loop of steps S160 to S166, the value of the expected sequence number is “2” because of the failure of transmission of the user data of sequence number “2”. As a result, the sequence numbers “3”, “4”, and “5” are held in the memory 113 until the mobile station 101 receives the ACK signal for the user data of sequence number “2”. Reference numeral 223 indicates the sequence numbers stored in the memory 113.
When the mobile station 101 receives the ACK signal for the user data of sequence number “2” (Y in step S166), the sequence data generating unit 163 generates the transmitted-sequence data S that carries the sequence numbers “2” to “5” (step S170). The sequence data S may include the sequence numbers “2” to “5” arranged in the order in which the user data are transmitted from the mobile station 101 to the base station 102. For example, in the illustrated example, the sequence numbers “2” to “5” stored in the sequence data S are arranged in the order of “3”, “4”, “5”, and “2”.
The sequence data transmitting unit 165 transmits the sequence data S after transmission of the user data of sequence number “2”. Reference number 223 indicates how the sequence data S is transmitted to base station 102 after the user data of sequence number “2”.
The user data received from the mobile station 101 and stored in the first receive buffer 125 are first reordered according to their sequence numbers by the reordering unit 173 depicted in
In step S191, the reordering unit 173 retrieves the sequence data from the first receive buffer 125. In step S192, the reordering unit 173 determines whether the retrieved sequence data includes the expected sequence number. In the processing performed by the base station 102 to receive user data from the mobile station 101, the “expected sequence number” refers to the sequence number of the user data whose sequence number is the smallest among the user data yet to be transmitted and whose succeeding user data also have yet to be reordered by the reordering unit 173.
If the expected sequence number is not included in the sequence data (N in step S192), the reordering unit 173 transfers the process to step S197 (as indicated by reference character A). If the expected sequence number is included in the sequence data (Y in step S192), the reordering unit 173 transfers the process to step S193.
In step S193, the user data receiving unit 171 retrieves the user data having the expected sequence number from the first receive buffer 125. In step S194, the user data transmitting unit 174 transmits the user data retrieved in step S193 to the radio network controller 103. In step S195, the reordering unit 173 updates the expected sequence number by incrementing the expected sequence number by 1.
In step S196, the reordering unit 173 determines whether the sequence data includes the updated expected sequence number. If the updated expected sequence number is included in the sequence data (Y in step S196), the reordering unit 173 returns the process to step S193.
Thus, the processor 120 repeats the process from steps S193 to S196, as long as the expected sequence number incremented by 1 in step S195 is included in the sequence data retrieved in step S191. As a result, the processor 120 can transmit the user data of consecutive sequence numbers to the radio network controller 103 by retrieving the user data from the first receive buffer 125 according to their sequence numbers. That is, by retrieving the user data from the first receive buffer 125 according to their sequence numbers, the reordering unit 173 can accomplish the reordering without using the reordering buffer.
If the updated expected sequence number is not included in the sequence data (N in step S196), the processor 120 returns the process to step S190.
In step S197, the reordering unit 173 determines whether there is any received user data stored in the first receive buffer 125. If there is any received user data stored (Y in step S197), the reordering unit 173 transfers the process to step S198. If there is no received user data (N in step S197), the reordering unit 173 transfers the process to step S204.
In step S198, the user data receiving unit 171 retrieves the user data from the first receive buffer 125, and the reordering unit 173 copies the retrieved user data to the reordering buffer 130, thereby saving the user data from the first receive buffer 125 into the reordering buffer 130. If there is any user data already stored in the reordering buffer 130, the reordering unit 173 stores the retrieved user data to add to the already stored user data.
In step S199, the reordering unit 173 identifies whether or not the sequence number of the user data saved to the reordering buffer 130 in step S198 is identical with the expected sequence number. If the sequence number of the saved user data is identical with the expected sequence number (Y in step S199), the reordering unit 173 transfers the process to step S200.
In step S200, the reordering unit 173 transmits one or more consecutive user data, including the user data of the expected sequence number, to the radio network controller 103 by taking them from among the user data stored in the reordering buffer 130. In step S201, the reordering unit 173 updates the value of the expected sequence number to (the largest sequence number among the user data transmitted in S200+1).
If it is determined in step S199 that the sequence number of the saved user data is not the expected sequence number (N in step S199), the reordering unit 173 transfers the process to step S202. In step S202, the reordering unit 173 checks to determine if a reordering timer is already ON or not. The reordering timer here may be, for example, a software timer implemented by the processing of the processor 120. The counting of the time by the reordering timer is started when user data having a sequence number other than the expected sequence number is saved to the reordering buffer 130 that is empty. The reordering timer is a timer used to cause the user data successively stored in the reordering buffer 130 to be transmitted to the radio network controller 103 when a predetermined time has elapsed after saving the first user data to the reordering buffer 130.
If it is determined in step S202 that the reordering timer is not ON (N in step S202), the reordering unit 173 transfers the process to step S203. In step S203, the reordering unit 173 activates the reordering timer, thus starting the counting of the time by the reordering timer. After that, the reordering unit 173 transfers the process to step S204. If it is determined in step S202 that the reordering timer is already ON (Y in step S202), the reordering unit 173 transfers the process to step S204.
In step S204, the reordering unit 173 checks to determine if the reordering timer is already ON or not. If the reordering timer is not ON (N in step S204), the processor 120 returns the process to step S190 (as indicated by reference character B). If the reordering timer is already ON (Y in step S204), the reordering unit 173 transfers the process to step S205.
In step S205, the reordering unit 173 determines whether the time counted by the reordering timer has exceeded the predetermined time, that is, whether the reordering timer has timed out. When the reordering timer has timed out (Y in step S205), the reordering unit 173 transfers the process to step S206.
In step S206, the reordering unit 173 transmits all the user data stored in the reordering buffer 130 to the radio network controller 103. In step S207, the reordering unit 173 updates the value of the expected sequence number to (the largest sequence number among the user data transmitted in S206+1). In step S208, the reordering unit 173 stops the reordering timer. After that, the processor 120 returns the process to step S190 (as indicated by reference character B).
If it is determined in step S205 that the reordering timer has not yet timed out (N in step S205), the reordering unit 173 transfers the process to step S209. In step S209, the reordering unit 173 updates the count value of the reordering timer by incrementing the count value by a predetermined time step. After that, the processor 120 returns the process to step S190 (as indicated by reference character B).
Referring back to
By referring to the sequence data S (step S191 in
The reordering unit 173 causes the user data transmitting unit 174 to transmit the user data in the same order in which they were retrieved from the first receive buffer 125. The second transmit buffer 128 stores the user data waiting for their turns to be transmitted. As indicated at reference numeral 225, the user data are stored in the second transmit buffer 128 in the order of the sequence numbers. The square boxes indicated at reference numeral 225 designate storage locations within the second transmit buffer 128. In the figure, the data stored in the square boxes located at higher positions are earlier in the transmission order than those located at lower positions. The square boxes indicated at reference numeral 226 provide a time chart of the user data to be transmitted from the base station 102 to the radio network controller 103. In the figure, the data stored in the square boxes located toward the right are earlier in the transmission order than those located toward the left.
In steps S193 to S196, the reordering unit 173 performs the reordering of the user data without saving them to the reordering buffer 130. In this case, the reordering unit 173 can retrieve the user data from the first receive buffer 125 in the order of the sequence numbers. That is, even when user data having an earlier sequence number is received later than user data having a later sequence number, the user data having the earlier sequence number can be retrieved earlier than the latter from the first receive buffer 125 for transmission.
Since the reordering performed in steps S193 to S196 does not involve saving the user data to the reordering buffer 130, the user data transmission delay that occurs in the case of the reordering performed using the reordering buffer can be eliminated. Reference numeral 228 in
Further, in the case of the reordering performed using the reordering buffer, a burst occurs when transmitting the user data. By contrast, in the process from steps S193 to S196, the reordering unit 173 performs the user data retrieval from the first receive buffer 125 and the user data transmission in alternating fashion. Since the process that performs the user data retrieval and user data transmission in alternating fashion is equivalent to the process that does not involve reordering, the transmission interval between successive user data does not greatly differ compared with the process that does not involve reordering. Accordingly, the reordering process performed in steps S193 to S196 can prevent the occurrence of a transmission burst of the kind that occurs in the case of the reordering performed using the reordering buffer. Reference numeral 227 in
If the sequence numbers carried in the sequence data are arranged in the same order as the user data transmission order, the reordering unit 173 can determine from the sequence data the order in which the user data are stored in the first receive buffer 125. In this case, the reordering unit 173 can retrieve the user data of any desired sequence number from the first receive buffer 125 without referring to the sequence number embedded in that user data.
In the reordering process using the reordering buffer, since the user data are first stored in the receive buffer, and then the stored user data are copied to the reordering buffer, the processing load of the processor in the base station 102 increases. This can cause a delay in the processing of the user data or can lead to a failure of the data transmission function due to overload of the processor in the base station 102.
According to the communication system 100 of the present embodiment, when the processing in the base station 102 is delayed, and a large amount of user data is stored in the first receive buffer 125, the sequence data is also stored in the first receive buffer 125 together with the user data. Accordingly, when retrieving the user data from the first receive buffer 125, the base station 102 can reorder the user data by referring to the sequence data. Since the overloading of the processor 120 due to the use of the reordering buffer can thus be eliminated, the above-noted problems such as the processing delay of the user data and the failure of the data transmission function can be resolved.
Furthermore, according to the communication system 100 of the present embodiment, bursty transmission of data from the base station 102 can be prevented. As a result, the present embodiment can eliminate such problems as the occurrence of a functional failure of the communication system 100 due to communication bursts and dropouts of user data due to shaping.
The mobile station 101 may transmit the sequence data periodically, just as the first packet transmitting/receiving apparatus 2 depicted in
Further, the base station 102 may be equipped with a sequence data request signal transmitting unit, just as the second packet transmitting/receiving apparatus 3 depicted in
The mobile station 101 may be equipped with a sequence data request signal receiving unit, just as the first packet transmitting/receiving apparatus 2 depicted in
The mobile station 101 may also be equipped with a data loss detection unit for detecting the occurrence of lost data, just as the first packet transmitting/receiving apparatus 2 depicted in
While the present invention has been described in detail above with reference to the preferred embodiments, it will be understood by those skilled in the art that various modifications and changes can be made by any person skilled in the art, and that all of such modifications and changes that come within the range of the true spirit and purpose of the present invention fall within the scope of the present invention as defined by the appended claims.
The present application is a continuation application based on International application No. PCT/JP2008/072993, filed on Dec. 17, 2008, now pending, the contents of which are herein wholly incorporated by reference.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/JP2008/072993 | Dec 2008 | US |
Child | 13154007 | US |