Communication method, device and system and storage medium
By designing a flow sequence number for each data stream and coordinating processing at the RLC and PDCP layers, the head-of-line blocking problem in the new wireless network is solved, enabling individual processing and efficient transmission of data streams.
Patent Information
- Application Number
- CN202610050519.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2026-01-15
- Publication Date
- 2026-02-13
AI Technical Summary
In new wireless networks, when multiple data streams are mapped to a single data wireless bearer, head-of-line congestion can easily occur, causing delays or blockages in one data stream to affect the processing of other data streams.
A flow sequence number is designed for each data stream, and through the collaborative processing of the RLC layer and PDCP layer, the data packets are placed in the corresponding reordering queue to prevent one data stream from blocking another. The sequence number is represented by a difference to save transmission overhead.
This effectively avoids head-of-line blocking issues within a single DRB, ensuring that different data streams can be processed independently at the receiving end, thus improving the efficiency and reliability of data stream processing.
Smart Images

Figure CN121531407A_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of communication technology, and in particular to a communication method, apparatus, system and storage medium. Background Technology
[0002] To better support the Quality of Service (QoS) of fifth-generation (5G) networks, the concepts of bearer and data stream were proposed. A bearer refers to the transmission channel with a specific QoS provided between two network nodes for a specific type of service data stream; it typically consists of a default bearer and dedicated bearers. A data stream is a more granular concept than a bearer, referring to a set of data packets with the same QoS requirements.
[0003] Currently, New Radio (NR) supports mapping multiple data streams with similar QoS requirements to a single data radio bearer (DRB). This mechanism helps reduce the complexity of radio access network (RAN) resource allocation. However, if multiple data streams are mapped to a single DRB, packets from multiple data streams will be processed in the same queue at the Packet Data Convergence Protocol (PDCP) layer. In this case, packet loss in one data stream can easily lead to head-of-line (HOL) blocking problems in other unrelated data streams. That is, if a packet from the first data stream in the queue is delayed or blocked for some reason, all subsequent packets from different data streams that have arrived in the queue cannot be processed. Therefore, it is urgent to solve the head-of-line blocking problem within a single bearer. Summary of the Invention
[0004] This application provides a communication method, apparatus, system, and storage medium that allows different data streams to be processed individually at the receiving end, improving or avoiding head-of-line blocking problems within a single DRB bearer. The technical solution is as follows: In a first aspect, a communication method is provided. This method can be executed by a first device, or by a component (such as a circuit, chip, or chip system) configured in the first device, or by a logic module or software capable of implementing all or part of the functions of the first device. This application does not limit this approach. The following description uses the first device as an example: The method includes: designing a flow sequence number for data packets in a single data stream, specifically a first sequence number indicating the packet order within the single data stream. After receiving a first data packet from the upper layer's first data stream, the PDCP layer can send a second data packet to the RLC layer based on the first data packet. The header of the second data packet carries the flow identifier of the first data stream and first indication information. The first indication information indicates either the first sequence number or the difference between the second sequence number and the first sequence number. The second sequence number indicates the packet order within the overall data stream. After receiving the second data packet, the RLC layer can send a third data packet to the RLC layer of the second device based on the second data packet. This allows the receiving end's PDCP layer to place the data packet in the reordering queue corresponding to the data stream based on the flow identifier and the first indication information. This enables different data streams to be processed independently at the receiving end, preventing one data stream from blocking another, thereby improving or avoiding head-of-queue blocking problems within a single DRB.
[0005] In one possible implementation of the first aspect, where the first indication information is used to indicate the difference between the second sequence number and the first sequence number, the header of the third data packet carries the second sequence number, or carries the second sequence number and the second indication information, the second indication information being used to indicate that the corresponding data packet carries the second sequence number.
[0006] By setting a second indication information in the header of the third data packet, different processing methods can be adopted for data packets that contain or do not contain the second indication information, or for data packets that contain the second indication information that indicate whether or not the data packet carries the second sequence number. This can achieve compatible processing of special data packets that carry the second sequence number and regular data packets that do not carry the second sequence number, and helps to achieve the solution of the embodiments of this application without affecting the processing of regular data packets.
[0007] In one possible implementation of the first aspect, the second sequence number can be shared by the RLC layer and the PDCP layer, so that both the PDCP layer and the RLC layer can see the second sequence number.
[0008] In one possible implementation of the first aspect, the first sequence number is the modulo result of the value of the first state variable divided by the first numerical value, and the second sequence number is the modulo result of the value of the second state variable divided by the first numerical value; wherein, the first state variable is used to indicate the count value or COUNT value of the next data packet of the first data stream to be delivered to the RLC layer, the COUNT value is composed of the sequence number and the superframe number, and the second state variable is used to indicate the count value of the next data packet to be delivered to the RLC layer.
[0009] In one possible implementation of the first aspect, before the PDCP layer sends the second data packet to the RLC layer based on the first data packet, it first determines the first sequence number based on the modulo result of the first value of the first state variable, determines the second sequence number based on the modulo result of the first value of the second state variable, and then determines the first indication information based on the difference between the first sequence number and the second sequence number.
[0010] In one possible implementation of the first aspect, the second state variable is shared by the RLC layer and the PDCP layer. Thus, both the RLC layer and the PDCP layer can determine the second sequence number based on the second state variable, thereby realizing that the second sequence number is shared by the RLC layer and the PDCP layer.
[0011] In one possible implementation of the first aspect, the first indication information is used to indicate the modulo result of the difference between the second sequence number and the first sequence number divided by a first value. This saves the bits occupied by the difference between the second sequence number and the first sequence number, thereby reducing transmission overhead.
[0012] In one possible implementation of the first aspect, the first indication information includes the quotient and remainder of the first modulo result divided by the first preset value, wherein the first modulo result refers to the modulo result of the difference between the first serial number and the second serial number divided by the first value.
[0013] In other words, the difference between the second sequence number and the first sequence number, or the result of the first modulo operation, can be represented using this quotient and remainder representation. This compression mechanism ensures that the number of bits occupied by the difference between the second and first sequence numbers is limited to a small range, thereby saving transmission overhead.
[0014] In one possible implementation of the first aspect, the first value is 2 to the power of M, where M refers to the window size of the reorganization window of the RLC layer and / or the reordering window of the PDCP layer.
[0015] In one possible implementation of the first aspect, the header of the second data packet includes a first field and a second field, wherein the first field is used to indicate a stream identifier of the first data stream, and the second field is used to indicate a first sequence number, or to indicate the difference between the second sequence number and the first sequence number. Thus, at least one field in the header of the second data packet can be used to indicate the stream identifier and the first sequence number of the first data stream, or to indicate the stream identifier of the first data stream and the difference between the second sequence number and the first sequence number.
[0016] In one possible implementation of the first aspect, where the second field is used to indicate the difference between the second serial number and the first serial number, the second field comprises two fields. One field indicates the quotient of the first modulo result divided by the first preset value, and the other field indicates the remainder of the first modulo result divided by the first preset value. The first modulo result refers to the modulo result of the difference between the second serial number and the first serial number divided by the first value. For example, the field used to indicate the quotient of the first modulo result divided by the first preset value is an indicator field I.
[0017] Thus, at least one field in the header of the second data packet can be used to indicate the stream identifier of the first data stream, as well as the quotient and remainder of the first modulo result divided by the first preset value.
[0018] In one possible implementation of the first aspect, the header of the third data packet includes a third field and a fourth field, wherein the third field is used to indicate the second sequence number and the fourth field is used to indicate whether the corresponding data packet carries the second sequence number.
[0019] In one implementation of the first aspect, the fourth field is the shared bit S.
[0020] In one implementation of the first aspect, the second data packet is obtained by encapsulating the first data packet, and the third data packet is obtained by encapsulating the second data packet or segments of the second data packet.
[0021] In one implementation of the first aspect, the first sequence number is also used for encryption and / or decryption operations at the PDCP layer.
[0022] In one implementation of the first aspect, after sending the second data packet, the first state variable can also be updated. For example, the value of the first state variable can be updated to include 1.
[0023] In one implementation of the first aspect, the first state variable or the first sequence number can also be used for encryption and decryption operations, integrity protection, and integrity verification operations at the PDCP layer. For example, the PDCP layer can also encrypt and / or perform integrity protection on the first data packet based on the first state variable or the first sequence number, and then construct a second data packet based on the encrypted and / or integrity-verified first data packet. For example, the second data packet can be constructed by performing operations such as adding a header on the encrypted and / or integrity-protected first data packet.
[0024] Secondly, a communication method is provided. This method can be executed by a first device, or by a component (such as a circuit, chip, or chip system) configured in the first device, or by a logic module or software capable of implementing all or part of the functions of the terminal device. This application does not limit this. The first device can be an Internet of Things (IoT) device, such as a reader / writer. The following description uses a reader / writer as an example.
[0025] The method includes: the RLC layer receiving a third data packet from a first device, and sending a second data packet to the PDCP layer based on the third data packet. The header of the second data packet carries a flow identifier of a first data stream and first indication information, the first indication information being used to indicate a first sequence number or the difference between the second sequence number and the first sequence number. After receiving the second data packet, the PDCP layer places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number, the first sequence number being determined based on the first indication information.
[0026] In this way, the PDCP layer at the receiving end can place the data packet in the reordering queue corresponding to the data stream according to the stream identifier and first indication information in the header of the data packet, so that different data streams can be processed separately at the receiving end, preventing one data stream from blocking another data stream, thereby improving or avoiding the head-of-queue blocking problem within a single DRB.
[0027] In one implementation of the second aspect, the RLC layer can reassemble packets based on the third packet and construct a second packet based on the reassembled packet. For example, the header of the reassembled packet can be stripped to obtain the second packet.
[0028] In one implementation of the second aspect, when the first indication information is used to indicate the difference between the second sequence number and the first sequence number, the header of the third data packet carries the second sequence number, or carries the second sequence number and the second indication information; the RLC layer sends the second data packet to the PDCP layer based on the third data packet, including: the RLC layer decapsulates the third data packet to obtain the second data packet, the header of the second data packet carrying the second sequence number, the flow identifier of the first data stream and the first indication information; before the PDCP layer places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number, it further includes: the PDCP layer determines the first sequence number according to the second sequence number and the first indication information.
[0029] By setting a second indication information in the header of the third data packet, different processing methods can be adopted for data packets that contain or do not contain the second indication information, or for data packets that contain the second indication information that indicate whether or not the data packet carries the second sequence number. This can achieve compatible processing of special data packets that carry the second sequence number and regular data packets that do not carry the second sequence number, and helps to achieve the solution of the embodiments of this application without affecting the processing of regular data packets.
[0030] In one implementation of the second aspect, the RLC layer decapsulates the third data packet to obtain the second data packet, including: if the third data packet carries a second sequence number and second indication information in its header, the RLC layer removes the header of the third data packet while retaining the second sequence number in the header of the third data packet to obtain the second data packet.
[0031] In one implementation of the second aspect, the header of the third data packet includes a third field and a fourth field. The third field is used to indicate the first sequence number, and the fourth field is used to indicate whether the corresponding data packet carries the first sequence number. If the header of the third data packet carries the second sequence number and the second indication information, the RLC layer decapsulates the third data packet to obtain the second data packet. If the fourth field in the header of the third data packet indicates that the corresponding data packet carries the first sequence number, the RLC layer removes the header of the third data packet while retaining the second sequence number in the header of the third data packet to obtain the second data packet.
[0032] In one implementation of the second aspect, the first indication information is used to indicate the modulo result of the difference between the second sequence number and the first sequence number divided by the first value. This saves the bits occupied by the difference between the second sequence number and the first sequence number, thereby reducing transmission overhead.
[0033] In one implementation of the second aspect, the first indication information includes the quotient and remainder of a first modulo result divided by a first preset value. The first modulo result refers to the modulo result of the difference between the first sequence number and the second sequence number divided by the first value. The PDCP layer determines the first sequence number based on the second sequence number and the first indication information, including: the PDCP layer determines the first sequence number based on the quotient, remainder, and second sequence number. Thus, the difference between the second sequence number and the first sequence number can be determined based on the quotient and remainder in the first indication information, thereby determining the first sequence number. This compression mechanism ensures that the number of bits occupied by the difference between the second sequence number and the first sequence number is limited to a small range, thereby saving transmission overhead. In one implementation of the second aspect, the header of the second data packet includes a first field and a second field. The first field is used to indicate the stream identifier of the first data stream, and the second field includes two fields, one of which is used to indicate the quotient and the other field is used to indicate the remainder.
[0034] In one implementation of the second aspect, determining the first sequence number based on the quotient, the remainder, and the second sequence number includes: taking the modulo result of the first difference on the first value as the first sequence number; wherein the first difference refers to the difference between the second difference and the first product, the second difference refers to the difference between the second sequence number and the remainder, and the first product refers to the product of the quotient and the first preset value.
[0035] In one implementation of the second aspect, the first value is 2 to the power of M, where M refers to the window size of the reorganization window of the RLC layer and / or the reordering window of the PDCP layer.
[0036] In one implementation of the second aspect, after the PDCP layer places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number, it can also submit the data packets in the reordering queue to the upper layer in order according to the COUN value corresponding to the first sequence number. The COUN value is composed of the first sequence number and the superframe number.
[0037] In one implementation of the second aspect, the PDCP layer submits the data packets in the reordering queue to the upper layer in order according to the COUN value corresponding to the first sequence number, including: the PDCP layer decrypts and verifies the integrity of the second data packet according to the COUN value corresponding to the first sequence number; if the decryption and verification are successful, the PDCP layer submits the data packets in the reordering queue to the upper layer in order according to the COUN value corresponding to the first sequence number.
[0038] In one implementation of the second aspect, the data packets in the reordering queue are delivered to the upper layer in sequence according to the COUNT value corresponding to the first sequence number, the third state variable, and the fourth state variable. The third state variable indicates the COUNT value of the next expected data packet of the first data stream, and the fourth state variable indicates the COUNT value of the next data packet of the first data stream to be delivered to the upper layer.
[0039] In one implementation of the second aspect, when the COUN value corresponding to the first sequence number is less than the value of the third state variable and the COUN value corresponding to the first sequence number is equal to the value of the fourth state variable, multiple data packets with COUN values starting from the value of the fourth state variable and consecutively submitted to the upper layer in the reordering window of the reordering queue are delivered in order.
[0040] In one implementation of the second aspect, if the COUN value corresponding to the first sequence number is less than the value of the third state variable and the COUN value corresponding to the first sequence number is not equal to the value of the fourth state variable, the first timer is started or reset. The first timer is used to perform packet loss detection on the first data stream.
[0041] In one implementation of the second aspect, after the first timer starts or resets, if the data packet corresponding to the missing COUNT value in the reordering window of the reordering queue is not received before the first timer expires, it is determined that the data packet has been lost, and the missing data packet is skipped. The data packets that have been received consecutively in the reordering window are then delivered to the upper layer in order. If the data packet corresponding to the missing COUNT value in the reordering window is received before the first timer expires, multiple consecutive data packets with COUNT values starting from the value of the fourth state variable in the reordering window are delivered to the upper layer in order.
[0042] In one implementation of the second aspect, the second data packet can be discarded if the conditions are not met. For example, after determining the COUN value corresponding to the first sequence number, the second data packet can be decrypted and its integrity verified based on the COUN value corresponding to the first sequence number. If the verification fails, the second data packet is discarded; if the verification succeeds, but the second data packet has already been received or the COUN value corresponding to the first sequence number is less than the value of the fourth state variable, the second data packet is discarded.
[0043] Thirdly, a communication device is provided, comprising a transceiver module. The transceiver module is configured to: receive a first data packet from a first data stream at the PDCP layer; send a second data packet to the RLC layer based on the first data packet; the header of the second data packet carries a stream identifier of the first data stream and first indication information, the first indication information indicating a first sequence number or the difference between a second sequence number and the first sequence number, the second sequence number indicating the packet order of the corresponding data packet within the total data stream; and upon receiving the second data packet at the RLC layer, send a third data packet to the RLC layer of a second device based on the second data packet.
[0044] Fourthly, a communication device is provided, comprising a transceiver module configured to: receive a third data packet from a first device at an RLC layer; and send a second data packet to a PDCP layer based on the third data packet, wherein the header of the second data packet carries a stream identifier of a first data stream and first indication information, the first indication information indicating a first sequence number or indicating the difference between the second sequence number and the first sequence number; and receive the second data packet at the PDCP layer and place the second data packet in a reordering queue corresponding to the first data stream according to the first sequence number, the first sequence number being determined based on the first indication information.
[0045] The third and fourth aspects are the implementation on the device side, which correspond to the first and second aspects. The explanations, supplements, and descriptions of the beneficial effects of the first and second aspects also apply to the third and fourth aspects, and will not be repeated here.
[0046] Fifthly, a communication device is provided, including a processor. The processor is coupled to a memory and can be used to execute instructions or data in the memory to implement the method in any possible implementation of the first aspect described above. Optionally, the communication device further includes a memory. Optionally, the communication device further includes a communication interface, and the processor is coupled to the communication interface.
[0047] In one implementation, the communication interface may be a transceiver, or an input / output interface.
[0048] In another implementation, the communication device is a chip configured in the first device. When the communication device is a chip configured in the first device, the communication interface can be an input / output interface.
[0049] In a sixth aspect, a communication device is provided, including a processor. The processor is coupled to a memory and can be used to execute instructions or data in the memory to implement the method in any possible implementation of the second aspect described above. Optionally, the communication device further includes a memory. Optionally, the communication device further includes a communication interface, and the processor is coupled to the communication interface.
[0050] In one implementation, the communication interface may be a transceiver, or an input / output interface.
[0051] In another implementation, the communication device is a chip configured in the second device. When the communication device is a chip configured in the second device, the communication interface can be an input / output interface.
[0052] In a seventh aspect, a communication device is provided, including a processor and a memory. The processor is used to read instructions stored in the memory and to receive signals via a receiver and transmit signals via a transmitter to execute the method in any possible implementation of any of the above aspects.
[0053] Optionally, the processor may be one or more, and the memory may be one or more.
[0054] Eighthly, a processor is provided, comprising: an input circuit, an output circuit, and a processing circuit. The processing circuit is configured to receive signals through the input circuit and transmit signals through the output circuit, causing the processor to execute a method in any possible implementation of any aspect.
[0055] In specific implementation, the processor can be one or more chips, the input circuit can be input pins, the output circuit can be output pins, and the processing circuit can be transistors, gate circuits, flip-flops, and various logic circuits. The input signal received by the input circuit can be received and input by, for example, but not limited to, a receiver, and the signal output by the output circuit can be, for example, but not limited to, output to and transmitted by a transmitter. Furthermore, the input circuit and the output circuit can be the same circuit, which is used as both the input circuit and the output circuit at different times. This application does not limit the specific implementation of the processor and various circuits.
[0056] Ninthly, a computer program product is provided, the computer program product comprising: a computer program (also referred to as code or instructions) that, when the computer program is run, causes a computer to perform a method in any possible implementation of any of the above aspects.
[0057] In a tenth aspect, a computer-readable storage medium is provided that stores a computer program (also referred to as code or instructions) that, when run on a computer, causes the computer to perform the methods in any possible implementation of any of the preceding aspects.
[0058] Eleventhly, embodiments of this application provide a chip system including one or more processors for calling and executing instructions stored in memory, causing the methods in any of the above aspects or possible implementations to be executed. The chip system may be composed of chips or may include chips and other discrete devices.
[0059] The chip system may include input circuits or interfaces for transmitting information or data, and output circuits or interfaces for receiving information or data.
[0060] In a twelfth aspect, a communication system is provided, including the aforementioned first and second devices. Optionally, the communication system may further include other devices for communicating with terminal devices and / or network devices. Attached Figure Description
[0061] Figure 1 This diagram illustrates the transmission of data at each layer of the protocol stack. Figure 2 This paper illustrates the data packet processing flow of each protocol layer on the user plane of the transmitting side; Figure 3 A schematic diagram of RLC SDU processing at the PDCP layer of a receiver is shown; Figure 4 A schematic diagram of the operation caused by a t-Reordering timer timeout is shown; Figure 5 A schematic diagram is shown where multiple data streams are multiplexed onto a single data bearer, causing head-of-line congestion. Figure 6 This is a schematic diagram illustrating multiple data streams multiplexed onto a single data bearer using different SN spaces, as provided in an embodiment of this application. Figure 7 This is a flowchart illustrating a communication method provided in an embodiment of this application; Figure 8 This is a flowchart illustrating another communication method provided in an embodiment of this application; Figure 9 This is a schematic diagram of a PDCP PDU format provided in an embodiment of this application; Figure 10 This is a schematic diagram of an RLC PDU format provided in an embodiment of this application; Figure 11 This is a schematic diagram illustrating the operation of the PDCP layer and RLC layer of a transmitter according to an embodiment of this application; Figure 12 This is a schematic diagram of a data operation at the sending end provided in an embodiment of this application; Figure 13 This is a schematic diagram of the operation of the RLC layer of a receiving end provided in an embodiment of this application; Figure 14 This is a schematic diagram of the operation of the PDCP layer of a receiving end provided in an embodiment of this application; Figure 15 This is a schematic diagram of data operation at the PDCP layer of a receiving end provided in an embodiment of this application; Figure 16 A schematic block diagram of a communication device provided in an embodiment of this application is shown; Figure 17 A schematic block diagram of another communication device provided in an embodiment of this application is shown. Detailed Implementation
[0062] The technical solutions of this application embodiment can be applied to various communication systems, such as: Global System for Mobile Communication (GSM) system, Code Division Multiple Access (CDMA) system, Wideband Code Division Multiple Access (WCDMA) system, General Packet Radio Service (GPRS), Long Term Evolution (LTE) system, LTE Frequency Division Duplex (FDD) system, LTE Time Division Duplex (TDD) system, Universal Mobile Telecommunication System (UMTS), Worldwide Interoperability for Microwave Access (WiMAX) communication system, future 5G system, NR, Sixth Generation (6G) system, etc.
[0063] In this application, the terminal device can refer to user equipment (UE), station, access terminal, user unit, user station, mobile station, mobile station, remote station, remote terminal, mobile device, user terminal, terminal, wireless communication device, user agent, or user device. The terminal device can also be a cellular phone, cordless phone, session initiation protocol (SIP) phone, wireless local loop (WLL) station, personal digital assistant (PDA), handheld device with wireless communication capabilities, computing device or other processing device connected to a wireless modem, large screen, in-vehicle device, wearable device, terminal device in a 5G network, or terminal device in a future public land mobile network (PLMN), etc. This application does not limit the scope of the terminal device.
[0064] The network device in this application embodiment can be a device used for communication of terminal devices. For example, the network device is a radio access network (RAN) node (or device) that connects the terminal device to the wireless network, and can also be called a base station. For example, the network device can be an evolved NodeB (eNodeB), a transmission reception point (TRP), a next-generation NodeB (gNB) in a 5G mobile communication system, a base station in a future mobile communication system, or an access point (AP) in a WiFi system, a radio controller, relay station, access point, vehicle-mounted equipment, wearable device, or other network devices in future evolved communication systems, etc., in a cloud radio access network (CRAN) scenario.
[0065] In this embodiment, the terminal device or network device includes a hardware layer, an operating system layer running on top of the hardware layer, and an application layer running on top of the operating system layer. The hardware layer includes hardware such as a central processing unit (CPU), a memory management unit (MMU), and memory (also called main memory). The operating system can be any one or more computer operating systems that implement business processing through processes, such as Linux, Unix, Android, iOS, or Windows. The application layer includes applications such as browsers, address books, word processing software, and instant messaging software. Furthermore, this embodiment does not specifically limit the structure of the execution entity of the method provided in this embodiment, as long as it can communicate according to the method provided in this embodiment by running a program that records the code of the method provided in this embodiment.
[0066] Furthermore, various aspects or features of this application can be implemented as methods, apparatus, or articles of manufacture using standard programming and / or engineering techniques. The term "article of manufacture" as used herein encompasses a computer program accessible from any computer-readable device, carrier, or medium. For example, computer-readable media may include, but are not limited to: magnetic storage devices (e.g., hard disks, floppy disks, or magnetic tapes), optical discs (e.g., compact discs (CDs), digital versatile discs (DVDs), etc.), smart cards, and flash memory devices (e.g., erasable programmable read-only memory (EPROMs), cards, sticks, or key drives, etc.). Additionally, the various storage media described herein may represent one or more devices and / or other machine-readable media for storing information. The term "machine-readable medium" may include, but is not limited to, wireless channels and various other media capable of storing, containing, and / or carrying instructions and / or data.
[0067] To facilitate understanding of the embodiments of this application, the relevant concepts involved in this application will first be explained.
[0068] 1. Protocol Layer Structure Interoperable network devices and terminal devices have a specific protocol layer structure. For example, the control plane protocol layer structure, from top to bottom, can include the functions of protocol layers such as Radio Resource Control (RRC), Packet Data Convergence Protocol (PDCP), Radio Link Control (RLC), Media Access Control (MAC), and Physical (PHY). The user plane protocol layer structure, from top to bottom, can include the functions of protocol layers such as PDCP, RLC, MAC, and Physical. The Physical layer is at the bottom (Layer 1), the MAC, RLC, and PDCP belong to Layer 2 (Layer 2), and RRC belongs to Layer 3 (Layer 3). In one implementation, a Service Data Adaptation Protocol (SDAP) layer can also be included above the PDCP layer. The functions of these protocol layers can be implemented by a single node or by multiple nodes. For example, in one evolutionary architecture, a radio access network device may include a centralized unit (CU) and a distributed unit (DU), with multiple DUs being centrally controlled by a single CU. CUs and DUs can be distinguished according to the protocol layers of the wireless network; for example, the functions of PDCP and higher protocol layers are located in the CU, while the functions of lower protocol layers, such as RLC and MAC layers, are located in the DU. It should be understood that this protocol layer division is merely an example. It can also be applied to other protocol layers, such as the RLC layer, where the functions of the RLC layer and above are placed in the CU, and the functions of the protocol layers below the RLC layer are placed in the DU. Alternatively, it can be divided within a specific protocol layer, for example, placing some functions of the RLC layer and the functions of the protocol layers above the RLC layer in the CU, and placing the remaining functions of the RLC layer and the functions of the protocol layers below the RLC layer in the DU. Furthermore, it can be divided in other ways, such as by latency, placing functions whose processing time needs to meet latency requirements in the DU, and functions that do not need to meet this latency requirement in the CU. When network devices and terminal devices transmit data, taking upstream data transmission as an example, such as... Figure 1 As shown, Figure 1 This diagram illustrates the data transmission process across the protocol stack layers. Data first reaches the PDCP layer of the terminal device, where it is processed before being transmitted to the RLC and MAC layers. After further processing at the MAC layer, it is sent to the network device via the physical layer. When the network device receives data, it sequentially passes through the physical layer, MAC layer, RLC layer, and PDCP layer. Data in each radio bearer requires processing at each layer. Each layer has corresponding functional entities to perform its respective function; for example, the PDCP layer corresponds to a PDCP entity, the RLC layer to an RLC entity, and the MAC layer to a MAC entity. Each radio bearer contains one PDCP entity and one or more RLC entities, each RLC entity corresponding to a logical channel. One MAC entity corresponds to multiple logical channels, and data within these logical channels can be multiplexed at the MAC layer, for example, multiplexed into the same data block, before finally being transmitted through the physical layer. The transmission process for downlink data is similar.
[0069] 2. Data packet The user plane (UP) protocol stack of the 5th generation (5G) system includes, from top to bottom, the SDAP layer, PDCP layer, RLC layer, MAC layer, and PHY layer.
[0070] Figure 2 This illustrates the data packet processing flow of each protocol layer in the user plane on the transmitting side. See also... Figure 2 On the transmitting side, data packets first reach the SDAP layer. The SDAP layer, based on the Quality of Service (QoS) flow to Data Radio Bearer (DRB) mapping rules, delivers the data packets to the corresponding PDCP entity for each DRB (each DRB corresponds to one PDCP entity). The PDCP layer performs compression and encryption operations on the data packets before delivering them to the RLC layer. The RLC layer processes the data packets, whether segmented or not, before delivering them to the MAC layer. The MAC layer assembles one or more data packets into a MAC Protocol Data Unit (PDU) and delivers it to the PHY layer.
[0071] The data packets received by the SDAP layer are Internet Protocol (IP) packets, which are called SDAP Service Data Units (SDUs) at the SDAP layer. After processing these SDUs by adding headers and other steps to obtain SDAP Protocol Data Units (PDUs), the SDAP layer delivers the SDAP PDU to the PDCP entity. In other words, the data packets delivered by the SDAP layer to the PDCP entity are SDAP PDUs.
[0072] In the DPCP layer, the SDAP PDU is referred to as a PDCP SDU. After the PDCP layer performs processing such as adding a header to the PDCP SDU to obtain the PDCP PDU, it delivers the PDCP PDU to the RLC layer. That is, the data packet delivered by the PDCP layer to the RLC layer is a PDCP PDU.
[0073] In the RLC layer, the PDCP PDU is referred to as an RLC SDU. The RLC layer may or may not segment the RLC SDU. When the RLC SDU is segmented, each segment is called an RLC SDU segment. After obtaining the RLC PDU by adding headers and other related processing to the RLC SDU segments or RLC SDUs, the RLC PDU is delivered to the MAC layer. That is, the data packet delivered by the RLC layer to the MAC layer is an RLC PDU.
[0074] In the MAC layer, the RLC PDU is referred to as a MAC SDU. The MAC layer performs various processing on the MAC SDU, such as adding a MAC header, to obtain a MAC subPDU. One or more MAC subPDUs are then combined to form a MAC PDU, which is then delivered to the PHY layer. In other words, the data packets delivered by the MAC layer to the PHY layer are MAC PDUs.
[0075] The PHY layer modulates and encodes the MAC PDU to generate a transport block (TB), which is then sent out through air interface resources.
[0076] In this embodiment, improvements are mainly made to the data transmission operations of the PDCP layer and the RLC layer. For ease of understanding, the main functions of the PDCP layer and the RLC layer will be described in detail below.
[0077] 3. RLC layer The RLC layer sits above the MAC layer and below the PDCP layer, providing services such as segmentation and retransmission for user and control data. Its core task is to ensure that each data packet is reliably and sequentially delivered to the upper layer (PDCP layer) on a single link. This is achieved through the Automatic Repeat Request (ARQ) mechanism.
[0078] The RLC layer includes acknowledged mode (AM) as its transmission mode. Acknowledged RLC (AMRLC) introduces an ACK / NACK mechanism, requiring the receiver to ACK or NACK the received data. The sender can then retransmit unacknowledged data packets based on the received ACK / NACK information. AM RLC ensures reliable data transmission to peer entities and corrects potential errors during transmission through retransmission, providing reliable data transmission guarantees. This application embodiment primarily uses AM RLC as an example for illustration.
[0079] An RLC entity is a specific functional instance of the RLC layer. RLC entities include RLC transmit entities and RLC receive entities.
[0080] The RLC sending entity can receive RLC SDUs from the upper layer and send RLCPDUs to its peer RLC entity through the lower layer. The sending RLC entity can also retransmit packets that have not been acknowledged. The RLC sending entity maintains a sending window, the lower boundary of which is the minimum sequence number (SN) of the unacknowledged received packets, and the upper boundary of which is the lower boundary plus the window size.
[0081] The core objective of the RLC receiving entity is to reassemble potentially fragmented or out-of-order RLC PDUs into complete RLCSDUs and deliver them to the upper layer (PDCP layer). The RLC receiving entity maintains a reassembly window, the lower boundary of which is the minimum serial number (SN) of unacknowledged received packets. This lower boundary is updated upon acknowledging the received packets. Additionally, a status report is triggered when the reassembly timer expires, notifying the RLC sending entity of the SNs of both received and unacknowledged packets, thus enabling the RLC sending entity to update its sending window.
[0082] To prevent receiver buffer overflow and implement flow control, in AM mode, the sender's RLC entity maintains a sending window and uses a sliding window protocol. The sending window is a logical buffer within the RLC entity used to indicate the range of RLC sequence numbers for packets (RLC PDUs) that have not yet been acknowledged. The sender can only send data within the sending window; after receiving an acknowledgment, the sending window slides forward. In other words, the sending window manages the data transmission range of the sender's RLC entity.
[0083] 4. PDCP layer The PDCP layer sits above the RLC layer and primarily provides services such as encryption, integrity protection, and cross-link ordering guarantees.
[0084] A PDCP entity is a specific functional instance of the PDCP layer. PDCP entities include PDCP sending entities and PDCP receiving entities.
[0085] After receiving a data packet (PDCP SDU) from the upper layer (user plane from SDAP layer, control plane from RRC layer), the PDCP sending entity can perform operations such as compression and encryption on the data packet before delivering it to the RLC layer.
[0086] After receiving a data packet (RLC PDU) from the lower RLC layer, the PDCP receiving entity first performs decryption and integrity checks. Then, it reorders the data packets according to their sequence numbers and delivers them to the upper layer in order. The core task of the receiving PDCP entity is to handle out-of-order data from the higher layers, reordering the data delivered from the RLC layer. This is achieved through a timed wait and timeout skip mechanism. In other words, the PDCP receiving entity does not actively request retransmissions. Upon receiving an out-of-order packet, it starts a reordering timer to wait. After a certain period, to avoid blocking, it skips the lost packets.
[0087] Next, we will explain the relevant concepts involved in the PDCP layer.
[0088] 1) COUNT value The COUNT value is a unique identifier for a PDCP layer packet (PDCP PDU). The values of PDCP layer state variables and packet numbers are both represented using the COUNT value. The COUNT value consists of the hyperframe number (HFN) and the sequence number (SN), i.e., COUNT = [HFN, SN]. For example, COUNT = HFN × 2 n +SN, where n is the bit length of the PDCP SN, such as 12 bits or 18 bits.
[0089] HFN is a key parameter in wireless communication protocols used for data encryption and time synchronization. It is a component of the counter in the PDCP layer and, together with PDCP SN, constitutes the complete COUNT value, used to resolve the PDCP SN circular overflow problem. The HFN portion of the COUNT value is typically not transmitted over the air interface; only the SN portion of the COUNT value is transmitted over the air interface.
[0090] For example, HFN increments by 1 each time the PDCP SN flips. For instance, when a UE establishes a radio resource control (RRC) connection with a base station, the PDCP layer initializes HFN for each radio bearer, typically with an initial value of 0. Subsequently, HEN growth is triggered by PDCP SN overflow. When the PDCP SN reaches its maximum value (e.g., the maximum value for a 12-bit SN is 4095) and overflows (i.e., the SN returns to zero from its maximum value), HFN automatically increments by 1.
[0091] In some embodiments, the SN may be the FSN of the present application.
[0092] 2) Reorder windows The PDCP receiving entity maintains a receive window, also known as a reordering window. The reordering window indicates the range of data packets (PDCP SDUs) expected to be delivered to the upper layer. In other words, the reordering window manages the data delivery range of the PDCP layer to ensure orderly delivery.
[0093] The lower boundary of the reordering window (RX_DELIV) is the starting point of the reordering window and represents the COUNT value of the next data packet (PDCP SDU) expected to be delivered to the upper layer, i.e., the COUNT value of the next data packet to be delivered. In other words, PDCP SDUs with a COUNT value less than RX_DELIV have been successfully delivered to the upper layer in order. RX_Next represents the COUNT value of the next data packet expected to be received. RX_Next can also be the upper boundary of the reordering window.
[0094] The PDCP receiving entity is also involved in a status variable RX_REORD. RX_REORD is used to record the COUNT value of the data packet that the PDCP receiving entity expects to receive and that needs to be delivered to the upper layer in order next. It is the in-order delivery pointer at the receiving end.
[0095] Please refer to Figure 3 , Figure 3 which shows a schematic diagram of the PDCP layer at the receiving end for processing RLC SDUs. As Figure 3 shown, the lower boundary (RX_DELIV) of the reordering window is COUNT = 12, and the upper boundary (RX_Next) is COUNT = 19. The COUNT value recorded by RX_REORD is 17. That is to say, the COUNT of the next PDCP SDU expected to be delivered to the upper layer currently is 12, and the COUNT of the next PDCP SDU expected to be received is 19.
[0096] 3) Reordering timer (t-Reordering timer) The t-Reordering timer is a timer configured by the PDCP layer for the reordering window. When there is a sequence number gap in the reordering window, the t-Reordering timer is started for packet loss detection. If the t-Reordering timer expires and the data packet corresponding to the missing COUNT value in the window has not been received, the PDCP receiving entity determines that the data packet has been lost. At this time, the missing data packets will be skipped, the data packets that have been continuously received in the window will be delivered in order, and the lower edge of the reordering window will be updated, causing the reordering window to slide forward, avoiding blocking the overall transmission due to local packet loss.
[0097] As Figure 3 shown, in the case of RX_DELIV < RX_NEXT, the t-Reordering timer is to be started. Please refer to Figure 4 , Figure 4 which shows a schematic diagram of the operations caused by the expiration of the t-Reordering timer. Figure 4 Shown, if the t-Reordering timer expires, RX_DELIV can be updated to 17, that is, let RX_DELIV = RX_REORD, and the t-Reordering timer stops. At this time, since the updated RX_DELIV is still less than RX_NEXT, the t-Reordering timer will be restarted again, and RX_REORD is updated to 19.
[0098] Next, the technical background related to the embodiments of the present application will be described.
[0099] To better support QoS in 5G networks, the concepts of bearer and data stream were introduced. Bearer, a core concept in 5G networks, refers to the transmission channel with specific quality of service provided between two network nodes for specific types of service data streams. It typically consists of default bearers and dedicated bearers. Data stream (also called a flow) is a new, more granular concept introduced in 5G than bearer; it refers to a set of data packets with the same QoS requirements. Bearer is the "pipe," and flow is the "content flowing" within the pipe. By decoupling "content (flow)" from "pipe (bearer)" and through flexible mapping rules, 5G achieves more granular, efficient, and flexible QoS management than 4G.
[0100] During the development of Release 20 of the 3rd Generation Partnership Project (3GPP), the RAN working group's 131st bit-level meeting began discussions on the 6G user plane. Several companies discussed head-of-line (HOL) congestion in data bearers. Participants pointed out that 6G terminals are likely to support complex services, such as the increasing use of Quick User Datagram Protocol Internet Connections (QUIC) in applications. Because the QUIC header is encrypted, the RAN cannot recognize QUIC streams. Therefore, different QUIC streams may be mapped to the same DRB, rendering QUIC's advantage in avoiding HOL congestion ineffective.
[0101] Additionally, NR currently supports mapping multiple QoS flows with similar QoS requirements to a single DRB. This mechanism helps reduce the complexity of RAN resource allocation. However, it's important to note that if QoS flows are independent at the upper layers, packet loss in one QoS flow can easily lead to head-of-line congestion in other unrelated QoS flows. PDCP reordering appears to be necessary only within the same QoS flow or even within Internet Protocol (IP) flows, while reordering between different flows may cause unnecessary latency and congestion.
[0102] Please refer to Figure 5 , Figure 5 This diagram illustrates a head-of-queue blocking scenario caused by multiple data streams being multiplexed onto a single data bearer. Currently, when multiple data streams are multiplexed onto a single data bearer, the PDCP layer at the receiving end can place the received packets from multiple data streams into the same queue (also called a reordering queue) for processing. For example... Figure 5As shown, data packets with sequence numbers 1-9 originate from data streams 0-2 respectively. The PDCP layer at the receiving end can place these data packets into a queue for processing. If the data packet with sequence number 2 from data stream 2 in the queue is delayed or blocked for some reason, all subsequent data packets from different data streams that have arrived in the queue (such as data packets with sequence numbers 3-9) will be unable to be processed, resulting in head-of-queue congestion. In fact, the delay caused by head-of-queue congestion (i.e., a delayed or lost data packet causes subsequent data packets to fail to reach the application in a timely manner) is extremely harmful. This delay is typically 100 milliseconds or longer, which is fatal to services with extremely high latency and reliability requirements.
[0103] Furthermore, in real-world business scenarios, different traffic from the same application, or even different connections from the same UE, may actually be carried on the same DRB. In the 6G era, multiple QoS-compliant service flows sharing a single bearer may become the norm. Given this, resolving head-of-line congestion within a single DRB is a crucial issue that 6G must address.
[0104] From the above Figure 5 It can be seen that the main reason for the head-of-line blocking phenomenon at the receiving end is that all service flows in the bearer share the same SN space. That is, the data packets of all data flows in the bearer are assigned sequence numbers based on the same SN space, which leads to the data packets of all data flows being processed in the same reordering queue.
[0105] In this application embodiment, in order to improve or avoid the head-of-line blocking problem within a single DRB, a processing scheme is provided that allocates independent SN space for different data streams and sets up separate reordering queues for different data streams. This processing scheme allows different data streams to be processed separately at the receiving end, thereby preventing one data stream from blocking another data stream, and thus improving the head-of-line blocking problem within a single DRB.
[0106] Please refer to Figure 6 , Figure 6 This is a schematic diagram illustrating multiple data streams multiplexed onto a single data bearer using different SN spaces, as provided in an embodiment of this application. Figure 6As shown, different data streams use different SN spaces. That is, data packets from each data stream are assigned SNs based on their respective independent SN spaces. Furthermore, different data streams correspond to different reordering queues, and data packets from each data stream can be processed within their respective reordering queues. For example, data packets from data stream 0 are processed in the reordering queue corresponding to data stream 0 according to their respective SNs, data packets from data stream 1 are processed in the queue corresponding to data stream 1 according to their respective SNs, and data packets from data stream 2 are processed in the queue corresponding to data stream 2 according to their respective SNs. In this way, the data streams do not affect each other; the loss or delay of data packets in one data stream will not block another data stream, thereby improving or avoiding head-of-queue blocking problems within a single DRB.
[0107] In this embodiment, to enable different data streams to be processed separately at the receiving end, a flow identifier and a flow sequence number are designed for the data packets of the PDCP layer. The flow identifier refers to the identifier of the data stream to which the corresponding data packet belongs, and the flow sequence number refers to the order of the corresponding data packet within its data stream. This allows the PDCP layer at the receiving end to place the data packet in the reordering queue corresponding to its data stream for processing based on the flow identifier and flow sequence number, thereby enabling data packets from different data streams to be placed in different reordering queues for processing. For ease of explanation, the flow sequence number will be referred to as the first sequence number below.
[0108] To facilitate understanding of this application, some terms used in the embodiments of this application will be explained and described first.
[0109] 1) First serial number.
[0110] The first sequence number is the sequence number of a data packet in a certain data stream at the PDCP layer, used to indicate the order of the corresponding data packet within its data stream. For example, the first sequence number can be represented by FSN. FSN(i) represents the sequence number of the data packet in data stream i at the PDCP layer, used to indicate the order of data packets within data stream i to ensure sequential delivery within the data stream.
[0111] In addition, the first serial number is also used for encryption and decryption operations at the PDCP layer. The first serial number is independent of the second serial number described below.
[0112] 2) First state variable.
[0113] The first state variable is a state variable for a specific data stream, used to indicate the COUNT value of the next data packet to be delivered to the RLC layer. The initial value of the first state variable is 0. The first state variable can be represented by TX_FNext. For example, TX_FNext(i) is used to indicate the COUNT value of the next data packet to be delivered to the RLC layer for data stream i. The initial value of TX_FNext(i) is 0.
[0114] In some embodiments, the first sequence number can be the modulo result of the value of the first state variable divided by a first numerical value, or the remainder of the value of the first state variable divided by the first numerical value. The first numerical value can be... For example, FSN(i) = TX_FNext(i) modulo 1. .
[0115] in, The window size for the reorganization window of the RLC layer and / or the reordering window of the PDCP layer.
[0116] In some embodiments, the reassembly window size of the RLC layer is the same as the reordering window size of the PDCP layer. For example, the RLC layer reassembly window and the PDCP layer reordering window size are the same for all data streams.
[0117] In some embodiments, the window size of the reorganization window of the RLC layer and / or the reordering window of the PDCP layer is half of the sequence space of the first sequence number or the second sequence number.
[0118] 3) Second state variable.
[0119] The second state variable is the state variable for the overall data stream, used to indicate the count value of the next data packet to be delivered to the RLC layer. The initial value of the second state variable can be 0. The second state variable can be represented by TX_Next.
[0120] In some embodiments, the second state variable can be a state variable shared by the RLC layer and the PDCP layer. This sharing mechanism ensures that the second sequence number determined based on the second state variable can be perceived by both the RLC layer and the PDCP layer.
[0121] 4) Second serial number.
[0122] The second sequence number is the sequence number of the data packets in the overall data stream at the PDCP layer, used to indicate the packet order within the overall data stream. The overall data stream refers to all data streams multiplexing the same bearer. The second sequence number can be represented by the BSN.
[0123] In some embodiments, the second sequence number can be the modulo result of the value of the second state variable divided by the first value, or the remainder of the value of the second state variable divided by the first value. For example, BSN = TX_Next mod .
[0124] In some embodiments, the second serial number can be shared by the RLC layer and the PDCP layer so that both the RLC layer and the PDCP layer can be aware of the second serial number.
[0125] In some embodiments, the second sequence number of the RLC layer can be used for the ARQ mechanism.
[0126] 5) Third serial number.
[0127] The third serial number is used to indicate the difference between the first and second serial numbers. For example, the third serial number is the modulo of the difference between the first and second serial numbers divided by the first value. The third serial number can be represented by an RSN. The first value can be... For example, RSN = (BSN - FSN) modulo 1. .
[0128] Since the third sequence number is the modulo of the difference between the first and second sequence numbers and the first preset value, the third sequence number is less than the first preset value, which ensures that the third sequence number only needs to occupy a small number of bits.
[0129] In some embodiments, a third sequence number can be transmitted over the air interface in place of the first sequence number. This can save transmission overhead.
[0130] 6) Indicator field I.
[0131] In this embodiment of the application, the indicator field I is used to indicate the number of first preset values contained in the difference between the first serial number and the second serial number, or to indicate the number of first preset values contained in the modulo result of the difference between the first serial number and the second serial number divided by the first preset value.
[0132] For example, the first preset value can be represented by maxDSN.
[0133] 7) Shared bit S.
[0134] In this embodiment of the application, the shared bit S is used to indicate whether the corresponding data packet carries a second sequence number. For example, if S=1, it means that the corresponding data packet carries a second sequence number.
[0135] 8) Flow ID (FID).
[0136] A stream identifier is an identifier for a data stream, used to uniquely indicate the data stream.
[0137] 9) RX_DELIV(i).
[0138] RX_DELIV(i) represents the first sequence number of the data packet that the PDCP layer expects to deliver to the upper layer data stream i.
[0139] 10) RX_NEXT(i).
[0140] RX_NEXT(i) represents the first sequence number of the data packet of the next expected data stream i in the PDCP layer (i.e., the first data packet of the unreceived data stream i).
[0141] 11) RX_REORD(i).
[0142] RX_REORD(i) represents the first sequence number of the data packet used to trigger t-Reordering of data stream i plus 1.
[0143] 12) t-Reordering(i).
[0144] t-Reordering(i) represents the t-reordering of data stream i, used to determine the loss of the PDU set of data stream i. In some embodiments, data stream i can only start one t-reordering timer within a given time period. The communication method provided in this application embodiment will be described in detail below with reference to the corresponding flowcharts. It is understood that the illustrative flowcharts provided in this application mainly use different devices (e.g., the first device, the second device) as examples of the execution subjects of the interaction to illustrate the method, but this application does not limit the execution subjects of the interaction. For example, the devices in the illustrative flowcharts (e.g., the first IoT device, the second IoT device) can also be chips, chip systems, or processors that support the implementation of the method on the device, or logic modules or software that can implement all or part of the functions of the device.
[0145] As a general statement, the message or signaling interactions involved in the interaction process of this application embodiment can be standard messages or signaling or newly introduced messages or signaling. This application embodiment does not make specific limitations on this.
[0146] Figure 7 This is a flowchart illustrating a communication method provided in an embodiment of this application. It can be understood that... Figure 7The first device is a transmitter, and the second device is a receiver. The first device includes a PDCP layer and an RLC layer, and the second device also includes a PDCP layer and an RLC layer. In some embodiments, the first device is a terminal device (such as a UE), or a device within the terminal device (e.g., a processor, chip, or chip system); the second device is a network device (such as a base station), or a device within the network device (e.g., a processor, chip, or chip system). Alternatively, the first device is a network device, or a device within the network device (e.g., a processor, chip, or chip system); the second device is a mobile terminal, or a device within the mobile terminal (e.g., a processor, chip, or chip system). Figure 7 As shown, the method includes the following steps.
[0147] S701, the PDCP layer of the first device receives the first data packet from the upper layer, the first data packet being a data packet of the first data stream.
[0148] For example, in a 5G system, the PDCP layer can receive the first data packet belonging to the first data stream from the SDAP layer.
[0149] In some embodiments, the PDCP layer can receive data packets from multiple data streams from upper layers, and these multiple data streams can multiplex the same bearer. The first data stream can be any one of the multiple data streams. That is, for each of the multiple data streams, the method provided in the embodiments of this application can be used for processing.
[0150] S702. The PDCP layer of the first device sends a second data packet to the RLC layer of the first device based on the first data packet. The header of the second data packet carries the flow identifier of the first data stream and the first indication information. The first indication information is used to indicate the first sequence number. The first sequence number is used to indicate the data packet order of the corresponding data packet in the first data stream.
[0151] The stream identifier of the first data stream is used to uniquely identify the first data stream. For example, the stream identifier can be an FID or a stream name. The first indication information may include a first sequence number.
[0152] In some embodiments, the second data packet is obtained by encapsulating the first data packet. For example, the PDCP layer can perform related processing such as adding a header to the first data packet to obtain the second data packet. For example, the first data packet is a PDCP SDU, and the second data packet is a PDCP PDU.
[0153] As an example, the PDCP layer can construct a second data packet by adding a header and other related processing to the first data packet, and write the first indication information and the stream identifier of the first data stream into the header of the second data packet.
[0154] For example, the header of the second data packet includes a first field and a second field. The first field indicates the stream identifier of the first data stream, and the second field indicates the first sequence number. The PDCP layer can write the stream identifier of the first data stream into the first field and the first sequence number into the second field.
[0155] After receiving the first data packet from the upper layer, the PDCP layer can first analyze the first data packet to determine the data stream to which the first data packet belongs, and then determine the stream identifier of the data stream to which the first data packet belongs.
[0156] In some embodiments, the first sequence number can be the modulo result of a first state variable modulo a first numerical value. The first state variable is used to indicate the count or COUNT value of the next data packet in the first data stream to be delivered to the RLC layer.
[0157] For example, before constructing the second data packet, the PDCP layer can first determine the value of the first state variable, and then use the modulo result of the first state variable's value divided by the first numerical value as the first sequence number.
[0158] The first value can be preset, such as based on the window size of the reassembly window of the RLC layer and / or the reordering window of the PDCP layer. For example, the first value can be 2 to the power of M, where M refers to the window size of the reassembly window of the RLC layer and / or the reordering window of the PDCP layer. It should be understood that the first value can also be other parameters, and this embodiment does not limit them.
[0159] For example, suppose the first data packet is a data packet of data stream m, the first sequence number is represented by FSN(m), the first state variable is represented by TX_FNext(m), and the window size is represented by... This means that FSN(m) = TX_FNext(m) modulo 1. .
[0160] In some embodiments, the PDCP layer can maintain a first state variable for each different data stream and associate the value of the first state variable for each data stream with the COUNT value of the data packets received from the upper layer. The first state variable for each data stream is used to record and indicate the calculated value or COUNT value of the next data packet of the corresponding data stream to be delivered to the RLC layer.
[0161] As an example, the PDCP layer can maintain a first state variable for the first data stream. After receiving a data packet from the upper layer of the first data stream, it associates the value of the first state variable with the calculated value or COUNT value of the data packet in the first data stream. For example, assuming the first data stream is data stream m, the PDCP layer can maintain a first state variable TX_FNext(m) for data stream m. After receiving a PDCP SDU for data stream m from the upper layer, it can associate the value of TX_FNext(m) with the COUNT value of that PDCP SDU. Then, it modulo TX_FNext(m)... As the first serial number.
[0162] In some embodiments, after constructing the second data packet, the first state variable can also be updated. For example, the value of the first state variable can be updated to the value of the first state variable plus 1. For example, let TX_FNext(m) = TX_FNext(m) + 1.
[0163] S703. After receiving the second data packet, the RLC layer of the first device sends a third data packet to the RLC layer of the second device based on the second data packet.
[0164] In some embodiments, the third data packet may be obtained by encapsulating the second data packet or segments of the second data packet. For example, the RLC layer may perform related processing such as adding headers to the second data packet or segments of the second data packet to obtain the third data packet. For example, the second data packet may be an RLC SDU, and the third data packet may be an RLC PDU. The RLC PDU may be generated based on segments of the RLC SDU or RLC SDU.
[0165] In some embodiments, the RLC layer of the first device can send the third data packet to the RLC layer of the second device via the MAC layer. For example, the RLC layer of the first device sends the third data packet to the lower layer (MAC layer). After receiving the third data packet from the upper layer (RLC layer), the MAC layer of the first device sends the third data packet to the MAC layer of the second device, and then the MAC layer of the second device delivers the third data packet to the RLC layer of the second device.
[0166] S704. After receiving the third data packet, the RLC layer of the second device sends the second data packet to the PDCP layer of the second device based on the third data packet. The header of the second data packet carries the flow identifier of the first data stream and the first indication information.
[0167] As an example, the RLC layer can reassemble packets based on a third packet and construct a second packet based on the reassembled packet. For instance, the header of the reassembled packet can be stripped to obtain the second packet. For example, the RLC layer can strip the header of an RLC SDU to obtain a PDCP PDU.
[0168] S705. After receiving the second data packet, the PDCP layer of the second device places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number.
[0169] After receiving the second data packet, the PDCP layer can parse the header information of the second data packet and place the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number indicated by the first indication information in the header of the second data packet and the stream identifier of the first data stream.
[0170] After placing the second data packet into the reordering queue corresponding to the first data stream, the PDCP layer can also deliver the data packets in the reordering queue to the upper layer in order. The implementation of delivering the data packets in the reordering queue to the upper layer in order can be found below. Figure 8 The relevant descriptions in S806 of the embodiments will not be repeated here in the present application embodiments.
[0171] In this embodiment, a flow sequence number is designed for data packets of a single data stream, which is a first sequence number used to indicate the order of data packets within a single data stream. After receiving a data packet from a certain data stream, the PDCP layer at the receiving end can write the flow identifier and the first sequence number of the data stream to which it belongs into the header of the data packet. This allows the PDCP layer at the receiving end to place the data packet in the reordering queue corresponding to that data stream based on the flow identifier and the first sequence number. In this way, different data streams can be processed independently at the receiving end, preventing one data stream from blocking another, thereby improving or avoiding head-of-queue blocking problems within a single DRB.
[0172] It should be noted that, Figure 7 This embodiment only illustrates the example of directly adding the first sequence number to the header of the data packet. In other implementations, to save bits used to transmit the first sequence number, the difference between the second sequence number and the first sequence number can also be used to indicate the first sequence number. Next, in conjunction with... Figure 8 The implementation method of indicating the first serial number by the difference between the second serial number and the first serial number is explained in detail.
[0173] Figure 8 This is a flowchart illustrating another communication method provided in an embodiment of this application. It can be understood that... Figure 8The first device is a transmitter, and the second device is a receiver. The first device includes a PDCP layer and an RLC layer, and the second device also includes a PDCP layer and an RLC layer. In some embodiments, the first device is a terminal device (such as a UE), or a device within the terminal device (e.g., a processor, chip, or chip system); the second device is a network device (such as a base station), or a device within the network device (e.g., a processor, chip, or chip system). Alternatively, the first device is a network device, or a device within the network device (e.g., a processor, chip, or chip system); the second device is a mobile terminal, or a device within the mobile terminal (e.g., a processor, chip, or chip system). Figure 7 As shown, the method includes the following steps.
[0174] Operations of the PDCP and RLC layers at the transmitting end.
[0175] S801, the PDCP layer of the first device receives the first data packet from the upper layer, the first data packet being a data packet of the first data stream.
[0176] For example, in a 5G system, the PDCP layer can receive the first data packet belonging to the first data stream from the SDAP layer.
[0177] In some embodiments, the PDCP layer can receive data packets from multiple data streams from upper layers, and these multiple data streams can multiplex the same bearer. The first data stream can be any one of the multiple data streams. That is, for each of the multiple data streams, the method provided in the embodiments of this application can be used for processing.
[0178] S802, the PDCP layer of the first device sends a second data packet to the RLC layer of the first device based on the first data packet. The header of the second data packet carries the flow identifier of the first data stream and the first indication information. The first indication information is used to indicate the difference between the second sequence number and the first sequence number.
[0179] The first sequence number indicates the packet order within the first data stream. The second sequence number indicates the packet order within the total data stream. The total data stream refers to all data streams mapped to the first bearer of the first data stream. In other words, the first bearer is the bearer mapped from the first data stream, and the total data stream refers to all data streams that reuse the first bearer, including the first data stream.
[0180] The stream identifier of the first data stream is used to uniquely identify the first data stream. For example, the stream identifier can be an FID or a stream name.
[0181] The first indication information is used to indicate the difference between the second sequence number and the first sequence number. In other words, in this embodiment, the difference between the second sequence number and the first sequence number can be used to indicate the first sequence number; that is, the difference between the second sequence number and the first sequence number is used to replace the first sequence number in the air interface transmission. Since the difference between the second sequence number and the first sequence number occupies fewer bits than the first sequence number, using the difference between the second sequence number and the first sequence number in the air interface transmission saves transmission bits, thereby reducing transmission overhead.
[0182] In some embodiments, the sequence space size of the first sequence number and the second sequence number is the same.
[0183] In some embodiments, the first sequence number is the modulo result of the value of the first state variable divided by the first numerical value, and the second sequence number is the modulo result of the value of the second state variable divided by the first numerical value. The first state variable is used to indicate the count value or COUNT value of the next data packet of the first data stream to be delivered to the RLC layer, and the second state variable is used to indicate the count value of the next data packet to be delivered to the RLC layer.
[0184] The first value can be preset, such as based on the window size of the reassembly window of the RLC layer and / or the reordering window of the PDCP layer. For example, the first value can be 2 to the power of M, where M refers to the window size of the reassembly window of the RLC layer and / or the reordering window of the PDCP layer.
[0185] For example, if the first data packet is a data packet of data stream m, the first sequence number is represented by FSN(m), and the first state variable is represented by TX_FNext(m), then FSN(m) = TX_FNext(m) modulo 1. .
[0186] For example, if the second sequence number is represented by BSN and the second state variable is represented by TX_Next, then BSN = TX_Next modulo TX_Next. .
[0187] In some embodiments, to save bits occupied by the difference between the second sequence number and the first sequence number, the difference can be indicated by taking the modulo of the difference between the second sequence number and the first sequence number with respect to the first value. For example, the first indication information is used to indicate the modulo of the difference between the second sequence number and the first sequence number with respect to the first value, that is, the remainder when the difference between the second sequence number and the first sequence number is divided by the first value. For example, the first indication information includes RSN(m), RSN(m) = [BSN – FSN(m)] mod... .
[0188] In one possible implementation, the PDCP layer can determine the first sequence number by taking the modulo of the value of the first state variable with respect to the first numerical value, and determine the second sequence number by taking the modulo of the value of the second state variable with respect to the first numerical value. Then, it determines the first modulo result by taking the modulo of the difference between the second sequence number and the first sequence number with respect to the first numerical value. Finally, it constructs a second data packet based on the first data packet, and writes the stream identifier of the first data stream and the first modulo result into the header of the second data packet.
[0189] In some embodiments, the header of the second data packet includes a first field and a second field. The first field is used to indicate the stream identifier of the first data stream. The second field is used to indicate the difference between the second sequence number and the first sequence number, for example, indicating the modulo result of the difference between the second sequence number and the first sequence number divided by a first value. For ease of explanation, the modulo result of the difference between the second sequence number and the first sequence number divided by a first value is referred to as the first modulo result.
[0190] In some embodiments, to further conserve the bits occupied by the difference between the second and first serial numbers, a specific compression mechanism can be employed to transmit this difference. For example, the first indication information may include the quotient and remainder of the difference between the second and first serial numbers divided by a first preset value, or it may include the quotient and remainder of the first modulo result divided by the first preset value. In other words, the difference between the second and first serial numbers, or the first modulo result, can be represented using this quotient and remainder representation. This compression mechanism ensures that the number of bits occupied by the difference between the second and first serial numbers is limited to a small range, thereby saving transmission overhead.
[0191] The first preset value can be set as needed. For example, the first preset value can be represented by maxDSN.
[0192] As an example, the header of the second data packet includes a first field and a second field. The first field indicates the stream identifier of the first data stream. The second field includes two fields: one field indicates the quotient of the first modulo result divided by a first preset value, i.e., the number of times the first modulo result contains the first preset value; the other field indicates the remainder of the first modulo result divided by the first preset value, i.e., the modulo result of the first modulo result with respect to the first preset value. The PDCP layer can write the stream identifier of the first data stream into the first field of the header of the second data packet, and write the quotient and remainder of the first modulo result divided by the first preset value into the second field of the header of the second data packet.
[0193] In one possible implementation, the first field is an FID field, and the second field includes an indicator field I and an RSN field. The FID field is used to indicate the stream identifier, and the indicator field I and the RSN field are used to indicate the quotient and remainder of the first modulo result divided by the first preset value, respectively.
[0194] As an example, the second data packet is a PDCP PDU. Please refer to [link / reference]. Figure 9 , Figure 9 This is a schematic diagram of a PDCP PDU format provided in an embodiment of this application. For example... Figure 9 As shown, the header of a PDCP PDU includes the following fields: I, FID, and RSN. I indicates the quotient of the first modulo result divided by a first preset value. For example, if I=0, it means the quotient of the first modulo result divided by the first preset value is 0; if I=r, it means the quotient of the first modulo result divided by the first preset value is r. The FID field indicates the flow identifier of the data stream to which the corresponding data packet belongs. For example, if FID=m, it means the flow identifier of the data stream to which the corresponding data packet belongs is m. The RSN field indicates the remainder of the first modulo result divided by the first preset value.
[0195] In some embodiments, the first state variable or the first sequence number can also be used for encryption and decryption operations, integrity protection, and integrity verification operations at the PDCP layer. For example, the PDCP layer can also encrypt and / or perform integrity protection on a first data packet based on the first state variable or the first sequence number, and then construct a second data packet based on the encrypted and / or integrity-verified first data packet. For example, the second data packet can be constructed by performing operations such as adding a header on the encrypted and / or integrity-protected first data packet.
[0196] S803. After receiving the second data packet, the RLC layer of the first device sends a third data packet to the RLC layer of the second device based on the second data packet. The header of the third data packet carries the second sequence number, or carries the second sequence number and second indication information. The second indication information is used to indicate that the corresponding data packet carries the second sequence number.
[0197] In some embodiments, the third data packet may be obtained by encapsulating the second data packet or segments of the second data packet. For example, the RLC layer may perform related processing such as adding headers to the second data packet or segments of the second data packet to obtain the third data packet. For example, the second data packet may be an RLC SDU, and the third data packet may be an RLC PDU. The RLC PDU may be generated based on segments of the RLC SDU or RLC SDU.
[0198] In some embodiments, the second state variable can be shared by the PDCP layer and the RLC layer. The RLC layer can determine the second sequence number based on the second state variable. For example, the RLC layer can use the modulo operation of the value of the second state variable with respect to the first value as the second sequence number, and then write the second sequence number into the header of the third data packet.
[0199] In some embodiments, the header of the third data packet includes a third field, or includes both a third field and a fourth field. The third field indicates the second sequence number, and the fourth field indicates whether the corresponding data packet carries the second sequence number. The RLC layer may write the second sequence number into the third field of the header of the third data packet; or, it may write the second sequence number into the third field of the header of the third data packet and set the fourth field of the header of the third data packet to indicate whether the corresponding data packet carries the second sequence number.
[0200] As an example, the third field can be the SN field. The fourth field can be the shared bit S.
[0201] As an example, please refer to Figure 10 , Figure 10 This is a schematic diagram of an RLC PDU format provided in an embodiment of this application. For example... Figure 10 As shown, the header of an RLC PDU includes an S field and an SN field. The S field indicates whether the corresponding RLC PDU includes a second sequence number. For example, if S field = 0, it means that the corresponding RLC PDU does not include a second sequence number; if S field = 1, it means that the corresponding RLC PDU includes a second sequence number. The SN field indicates the second sequence number.
[0202] In some embodiments, after constructing the second data packet, the PDCP layer can also update the first and second state variables. For example, the value of the first state variable can be updated to the value of the first state variable plus 1, and the value of the second state variable can be updated to the value of the second state variable plus 1. For example, let TX_FNext(m) = TX_FNext(m) + 1, TX_Next = TX_Next + 1. Accordingly, the RLC layer can determine the second sequence number based on the updated second state variable. For example, the value of the updated second state variable can be subtracted by 1, and then the modulo of the first value can be taken, with the modulo result used as the second sequence number. For example, BSN = (TX_Next - 1) modulo 1. .
[0203] Next, combined Figure 11 The operation of the PDCP layer and RLC layer at the transmitting end is illustrated by example. Figure 11 As shown, the operation of the PDCP layer and RLC layer of the first device (transmitter) includes the following steps.
[0204] A1. The PDCP layer receives a PDCP SDU from the upper layer and analyzes the PDCP SDU.
[0205] A2. If the PDCP SDU is the PDCP SDU of data stream m, then the PDCP layer associates the value of TX_FNext(m) with the COUNT of the PDCP SDU.
[0206] TX_FNext(m) is used to indicate the COUNT value of the next data packet to be delivered to the RLC layer.
[0207] A3. The PDCP layer uses TX_FNext(m) to perform integrity protection and encryption on the PDCP SDU.
[0208] As an example, the PDCP SDU can be integrity protected and encrypted using TX_FNext(m) according to the PDCP protocol specification for 5G NR in 3GPP. For instance, the PDCP SDU can be integrity protected and encrypted using TX_FNext(m) according to the methods in Sections 5.9 and 5.8 of the technical specification (TS) 38.323. The embodiments in this application will not be described in detail here.
[0209] A4. The PDCP layer sets the value of TX_FNext(m) to... Take the modulus and put the result into the variable fsn(m).
[0210] A5. The PDCP layer sets the value of TX_Next to... Take the modulo operation and store the result in the variable bsn.
[0211] TX_FNext(m) is used to indicate the calculated value of the next data packet to be delivered to the RLC layer.
[0212] A6. The PDCP layer determines RSN(m) = [bsn – fsn(m)] modulo .
[0213] A7. The PDCP layer determines whether RSN(m) is less than maxDSN. If yes, proceed to step A8; otherwise, proceed to step A9.
[0214] A8. The PDCP layer puts the value of RSN(m) into the RSN field of the constructed PDCP PDU, writes FID(m) into the FID field of the header of the PDCP PDU, and sets the I field to 0. Then, jump to step A12.
[0215] A9. PDCP layer determination r = floor(RSN(m) / maxDSN).
[0216] The floor(x) function rounds x down. floor(RSN(m) / maxDSN) rounds (RSN(m) / maxDSN) down.
[0217] A10, PDCP layer determines RSN(m) = RSN(m) mod maxDSN.
[0218] A11. The PDCP layer puts RSN(m) into the RSN field of the constructed PDCP PDU, writes FID(m) into the FID field of the header of the PDCP PDU, and sets the I field to r. Then, jump to step A12.
[0219] A12. The PDCP layer sets TX_FNext(m) = TX_FNext(m) + 1, TX_Next= TX_Next + 1.
[0220] A13. The PDCP layer sends the constructed PDCP PDU to the lower layer (RLC layer).
[0221] A14. The RLC layer receives the RLC SDU from the upper layer and determines that BX_Next = (TX_Next – 1) modulo 1. .
[0222] A15. The RLC layer associates the value of BX_Next with the BSN of the RLC SDU, then puts the value of BX_Next into the BSN field of the constructed RLC PDU and sets the indicator bit S to 1. A16, the RLC layer sends out the RLC PDU.
[0223] Please refer to Figure 12 , Figure 12 This is a schematic diagram illustrating data operation at the sending end according to an embodiment of this application. For example... Figure 12As shown, the reassembly window of the RLC layer and the reordering window of the PDCP layer both have a window size of 8, and maxDSN is 4. The PDCP layer at the receiving end receives data packets of data stream flow(i) and data stream flow(j) from the upper layer. The following uses flow(j) as an example to illustrate the operation of the PDCP layer at the receiving end. The PDCP layer at the receiving end can maintain a state variable TX_FNext(j) for flow(j), with an initial value of 0. The PDCP layer associates TX_FNext(j) with the PDCP SDU received from the upper layer for flow(j), and then uses this value to perform integrity protection and encryption on the PDCP SDU. Afterwards, the PDCP layer sets TX_FNext(j) to 2... [Window_Size] The modulo operation is performed to obtain FSN(j). Additionally, the PDCP layer maintains a state variable TX_FNext for the overall data. The modulo operation of TX_Next with 2[Window_Size] yields BSN. Subsequently, [BSN – FSN(j)] mod 2 is performed. [Window_Size] The RSN field of the PDCP PDU header is placed in the PDCP PDU header, and the flow identifier j of flow(j) is placed in the FID field of the PDCP PDU header. Then, the constructed PDCP PDU is sent to the lower RLC layer.
[0224] For example, with Figure 12 Taking the 9th data packet as an example, after the PDCP layer receives this data packet from the upper layer, TX_Next = 9, and the modulo operation of 9 and 8 yields BSN = 1. This data packet is the 2nd data packet of data flow(j), TX_FNext(j) = 2, and the modulo operation of 2 and 8 yields FSN = 2. Then, (1-2) mod 8 = 7, 7 mod maxDSN = 3, resulting in RSN of 3. RSN = 3 and flow identifier j are placed in the header of the PDCP PDU. In addition, since the quotient of 7 divided by maxDSN is 1, the indicator field I in the PDCP PDU header is set to 1.
[0225] For example, with Figure 9Taking the third data packet as an example, after the PDCP layer receives this data packet from the upper layer, TX_Next = 13, and the modulo operation of 13 and 8 yields BSN = 5. This data packet is the fifth data packet of data flow(j), TX_FNext(j) = 5, and the modulo operation of 5 and 8 yields FSN = 5. Then, (5-5) mod 8 = 0, 0 mod maxDSN = 0, resulting in RSN of 0. RSN=0 and flow identifier j are placed in the header of the PDCP PDU. Since the quotient of 0 divided by maxDSN is 0, the indicator field I in the PDCP PDU header is set to 0.
[0226] After receiving the RLC SDUs corresponding to the two PDCP PDUs sent by the upper layer, the RLC layer at the transmitting end can calculate the same BSN value as that calculated by the PDCP layer because the RLC layer shares the PDCP layer's state variable TX_Next. Their BSNs are 1 and 5, respectively. Then, the BSN can be written into the header of the corresponding generated RLC PDU, and the shared bit S in the RLC PDU header can be set to 1.
[0227] S804. After receiving the third data packet, the RLC layer of the second device sends the second data packet to the PDCP layer of the second device based on the third data packet. The header of the second data packet carries the second sequence number, the stream identifier of the first data stream, and the first indication information.
[0228] In some embodiments, the RLC layer can reassemble packets based on a third packet and construct a second packet based on the reassembled packet. For example, the header of the reassembled packet can be stripped while retaining the second sequence number, i.e., the header of the reassembled packet can be stripped without removing the second sequence number from the header, thereby obtaining a second packet, such that the header of the second packet includes the second sequence number, the stream identifier of the first data stream, and the first indication information.
[0229] For example, the RLC layer can strip the header (excluding BSN) of the RLC SDU to obtain the PDCP PDU. The header of the PDCP PDU includes BSN, FID(m) and first indication information (such as the quotient and remainder of the first modulo result divided by a first preset value).
[0230] In some embodiments, after receiving a data packet from a lower layer, the RLC can first determine whether the header of the data packet contains second indication information or whether the second indication information contained in the header of the data packet indicates that the data packet carries a second sequence number. If yes, a second data packet is generated based on the data packet, that is, the header of the reassembled data packet is removed while retaining the second sequence number to construct the second data packet. If no, the data packet is processed in a conventional manner, such as directly removing the header of the reassembled data packet to generate a data packet to be submitted to the upper layer.
[0231] By setting a second indication information in the header of the third data packet, different processing methods can be adopted for data packets that contain or do not contain the second indication information, or for data packets that contain the second indication information indicating whether or not they carry the second sequence number. This allows for compatible processing of special data packets carrying the second sequence number and regular data packets not carrying the second sequence number. In this way, the solution of the embodiments of this application can be implemented without affecting the processing of regular data packets.
[0232] Next, combined Figure 13 The operation of the RLC layer at the receiving end is illustrated by example. Figure 13 As shown, the operation of the RLC layer of the second device (receiving end) includes the following steps.
[0233] B1. The RLC layer at the receiving end receives an AM mode RLC PDU from the bottom layer and processes the RLC PDU.
[0234] As an example, the RLC PDU can be processed according to the RLC protocol specification for 5G NR in 3GPP. For instance, the RLC PDU can be processed according to the method in section 5.2.3.2 of TS 38.322. The embodiments in this application will not be described in detail here.
[0235] B2. Determine whether the RLC layer has assembled a complete RLC SDU payload. If yes, proceed to step B3; otherwise, do not process.
[0236] B3. Determine if the value of the shared bit S in the RLC PDU header is 1. If yes, proceed to step B4; otherwise, proceed to step B5.
[0237] B4. Remove the RLC PDU header (except for the BSN in the header) from the RLC layer and submit the RLC SDU to the upper layer (PDCP layer).
[0238] B5. The RLC layer removes the RLC PDU header and delivers the RLC SDU to the upper layer (PDCP layer).
[0239] For example, combining Figure 12For example, after the RLC layer at the receiving end receives an RLC PDU with BSNs of 1 and 5, it begins to reassemble it. When a complete RLC SDU is reassembled, the RLC PDU header is stripped while retaining the BSN field, and then the RLC SDU is sent to the upper PDCP layer.
[0240] S805. After receiving the second data packet, the PDCP layer of the second device places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number.
[0241] After receiving the second data packet, the PDCP layer can first determine the first sequence number based on the second sequence number and the first indication information in the header of the second data packet. Then, based on the first sequence number and the stream identifier of the first data stream, the second data packet is placed in the reordering queue corresponding to the first data stream.
[0242] In some embodiments, the first indication information is used to indicate the difference between the second sequence number and the first sequence number. The PDCP layer can determine the first sequence number based on the second sequence number and the difference. For example, if the first sequence number is FSN(m), the second sequence number is BSN, and the difference is RSN(m), then FSN(m) = BSN - RSN(m).
[0243] In other embodiments, the first indication information is used to indicate the modulo result of the difference between the second sequence number and the first sequence number modulo the first value. The PDCP layer can determine the first sequence number based on the second sequence number and the modulo result. For example, if the first sequence number is FSN(m), the second sequence number is BSN, and the first value is... The modulo result RSN(m) = [BSN – FSN(m)] mod , then FSN==[BSN–RSN(m)] mod .
[0244] As an example, the modulo result of the difference between the second serial number and the first serial number divided by the first value can also be represented by the quotient and remainder of the modulo result divided by the first preset value. For example, the first indication information includes the quotient and remainder of the first modulo result divided by the first preset value, and the PDCP layer can determine the first serial number based on the second serial number and the quotient and remainder. Here, the first modulo result refers to the modulo result of the difference between the second serial number and the first serial number divided by the first value.
[0245] As an example, the process of determining the first sequence number based on the second sequence number, the quotient, and the remainder includes: taking the modulo of the first difference with the first value as the first sequence number. Here, the first difference refers to the difference between the second difference and the first product; the second difference refers to the difference between the second sequence number and the remainder; and the first product refers to the product of the quotient and the first preset value. For example, if the first sequence number is FSN(m), the second sequence number is BSN, the quotient and remainder are RSN(m) and r respectively, the first preset value is maxDSN, and the first value is... , then FSN==[BSN–RSN(m)-r*maxDSN] mod .
[0246] In some embodiments, the header of the second data packet includes a first field and a second field. The first field indicates the stream identifier of the first data stream, and the second field includes two fields: one field indicates the quotient of the first modulo result divided by a first preset value, and the other field indicates the remainder of the first modulo result divided by the first preset value. The PDCP layer can determine the stream identifier of the first data stream based on the first field of the second data packet header, and determine the quotient and remainder based on the second field.
[0247] In some embodiments, after determining the first sequence number, the PDCP layer can further determine the COUNT value corresponding to the first sequence number, that is, convert the first sequence number into a COUNT value. Then, based on the COUNT value corresponding to the first sequence number and the stream identifier of the first data stream, the second data packet is placed in the reordering queue corresponding to the first data stream. For example, according to the COUNT value corresponding to the first sequence number, the second data packet is placed sequentially in the reordering queue corresponding to the first data stream.
[0248] The reordering queue corresponding to the first data stream is a buffer queue for the data packets of the first data stream. Placing the second data packet in order into the reordering queue corresponding to the first data stream means caching the second data packet in the reordering queue corresponding to the first data stream so that it can be reordered according to the COUNT value of each data packet.
[0249] In some embodiments, after determining the first sequence number, the PDCP layer can also decrypt and / or verify the integrity of the second data packet based on the first sequence number. For example, the second data packet can be decrypted and / or its integrity verified based on the COUNT value corresponding to the first sequence number.
[0250] S805, the PDCP layer delivers the data packets in the reordering queue to the upper layer in order.
[0251] After placing the second data packet into the reordering queue corresponding to the first data stream, the data packets in the reordering queue can be delivered to the upper layer in order. For example, the data packets in the reordering queue can be delivered to the upper layer in order based on the COUNT value corresponding to the first sequence number.
[0252] In some embodiments, the data packets in the reordering queue can be delivered to the upper layer in order according to the COUNT value corresponding to the first sequence number, the third state variable, and the fourth state variable.
[0253] The third state variable indicates the COUNT value of the next packet from the first data stream expected to be received, and the fourth state variable indicates the COUNT value of the next packet from the first data stream to be delivered to the upper layer. For example, if the first data stream is data stream m, the third state variable can be represented by RX_NEXT(m), and the fourth state variable can be represented by RX_DELIV(m).
[0254] As an example, if the COUN value corresponding to the first sequence number is less than the value of the third state variable, and the COUN value corresponding to the first sequence number is equal to the value of the fourth state variable, then multiple packets with consecutive COUN values starting from the value of the fourth state variable are submitted to the upper layer in sequence within the reordering window of the reordering queue.
[0255] As another example, if the COUN value corresponding to the first sequence number is less than the value of the third state variable, and the COUN value corresponding to the first sequence number is not equal to the value of the fourth state variable, then the first timer is started or reset. For example, if the first timer is running, then the first timer is reset; if the first timer is not running, then the first timer is started.
[0256] The first timer is a reordering timer for the first data stream, used to detect packet loss in the first data stream, i.e., to determine whether packet loss has occurred in the first data stream.
[0257] In one possible implementation, after the first timer starts or resets, if the packet corresponding to the missing COUNT value in the reordering window of the reordering queue is not received before the first timer expires, it is determined that the packet has been lost, and the missing packet is skipped. The packets that have been received consecutively in the reordering window are then delivered to the upper layer in order. If the packet corresponding to the missing COUNT value in the reordering window is received before the first timer expires, multiple packets with COUNT values starting from the value of the fourth state variable in the reordering window are delivered to the upper layer in order.
[0258] Additionally, if the COUN value corresponding to the first sequence number is greater than or equal to the value of the third state variable, the value of the third state variable can be updated based on the COUN value corresponding to the first sequence number, and processing can then stop. For example, the value of the third state variable can be updated to the COUN value corresponding to the first sequence number plus 1.
[0259] Additionally, the second data packet can be discarded if it does not meet the conditions. For example, after determining the COUN value corresponding to the first sequence number, the second data packet can be decrypted and its integrity verified based on the COUN value. If the verification fails, the second data packet is discarded; if the verification succeeds, but the second data packet has already been received or the COUN value corresponding to the first sequence number is less than the value of the fourth state variable, the second data packet is discarded.
[0260] In one possible implementation, after successful verification, if the PDCP PDU has already been received or the COUN value corresponding to the first sequence number is less than the third state variable, the second data packet is discarded. Otherwise, it is determined whether the COUN value corresponding to the first sequence number is greater than or equal to the fourth state variable. If the COUN value corresponding to the first sequence number is greater than or equal to the fourth state variable, the fourth state variable is updated according to the COUN value corresponding to the first sequence number. If the COUN value corresponding to the first sequence number is less than the fourth state variable, it is determined whether the COUN value corresponding to the first sequence number is equal to the third state variable. If they are equal, multiple consecutive data packets in the reordering window of the reordering queue, starting from the value of the fourth state variable, are submitted to the upper layer in sequence. If they are not equal, if the third state variable is greater than the fifth state variable and the reordering timer corresponding to the first data stream is running, the reordering timer is stopped and reset; if the third state variable is less than the fourth state variable and the reordering timer corresponding to the first data stream is not running, the reordering timer is started.
[0261] The fifth state variable is used to indicate that the COUNT value of the data packet that triggers the reordering timer of the first data stream is incremented by 1.
[0262] Next, combined Figure 14 The operation of the PDCP layer at the receiving end is illustrated by an example. Figure 14 As shown, the operation of the PDCP layer of the second device (receiving end) includes the following steps.
[0263] C1. The PDCP layer receives the assembled PDCP PDU from the lower layer, reads the flow identifier FID(m) in the header of the PDCP PDU, and puts the PDCP PDU into the reordering queue m.
[0264] Among them, the PDCP PDU is the assembled complete RLC SDU, which can be assembled by the lower layer (RLC layer) from multiple segmented RLC SDUs. FID(m) is used to indicate data stream m.
[0265] C2. Read the RSN and BSN of the assembled complete PDCP PDU, store them in variables v_rsn and v_bsn respectively, and read the value of the indication field I and put it into variable r.
[0266] Among them, RSN is used to indicate the remainder of [BSN – FSN(m)] modulo divided by maxDSN, and r is used to indicate the quotient of [BSN – FSN(m)] modulo divided by maxDSN. BSN is used to indicate the packet sorting of the corresponding data packet within the total data stream. FSN(m) is used to indicate the packet sorting of the corresponding data packet within data stream m.
[0267] C3. Calculate FSN(m) = (v_bsn - v_rsn – r * maxDSN) modulo .
[0268] After calculating FSN(m), the FSN(m) can be converted into a COUNT value. For example, the FSN(m) can be converted into a COUNT value through the following steps C4 - step C8.
[0269] C4. Determine whether FSN(m) < SN[RX_DELIV(m)] – Window_Size. If so, jump to step C5; if not, jump to step C6.
[0270] C5. The RCVD_HFN corresponding to FSN(m) = HFN[RX_DELIV(m)] + 1.
[0271] Among them, SN[RX_DELIV(m)] represents the SN corresponding to RX_DELIV(m), such as the FSN corresponding to RX_DELIV(m). HFN[RX_DELIV(m)] represents the HFN corresponding to RX_DELIV(m). RX_DELIV(m) is used to indicate the PDCP SDU of data stream m that is expected to be delivered to the upper layer next. Window_Size is the window size of the reordering window. RCVD_HFN is the HFN value actually calculated or inferred based on the currently received data packet, indicating which HFN the data packet actually uses.
[0272] C6. Determine whether FSN(m) ≥ SN[RX_DELIV(m)] + Window_Size. If so, jump to step C7; if not, jump to step C8.
[0273] C7. The RCVD_HFN corresponding to FSN(m) = HFN[RX_DELIV(m)] – 1.
[0274] C8. The RCVD_HFN corresponding to FSN(m) = HFN[RX_DELIV(m)].
[0275] C9. Determine that the RCVD_COUNT value corresponding to FSN(m) is [RCVD_HFN, RCVD_SN].
[0276] Where RCVD_SN is the SN of this PDCP PDU, that is, FSN(m).
[0277] C10. Use this RCVD_COUNT value to decrypt and perform integrity verification on this PDCP PDU.
[0278] C11. Determine whether the verification is successful. If so, discard this PDCP PDU; if not, jump to step C12.
[0279] C12. Determine whether this PDCP PDU has been received before or RCVD_COUNT < RX_DELIV. If so, discard this PDCP PDU; if not, jump to step C13.
[0280] C13. Determine whether RCVD_COUNT ≥ RX_NEXT(m). If so, jump to step C14; if not, jump to step C15.
[0281] C14. Let RX_NEXT(m) = RCVD_COUNT + 1.
[0282] C15. Determine whether RCVD_COUNT = RX_DELIV(m). If so, jump to step C16; if not, jump to step C17.
[0283] C16. Deliver to the upper layer in order multiple consecutive PDCP PDUs in the reordering window of reordering queue m starting from RX_DELIV(m) for the RCVD_COUNT value, and update RX_DELIV(m) to point to the first PDCP SDU that has not been delivered to the upper layer.
[0284] C17. Determine whether (RX_DELIV(m) ≥ RX_REORD(m)) and (the t-Reordering timer is running). If so, jump to C18; if not, jump to step C19.
[0285] Among them, RX_REORD(m) is used to indicate that the COUNT value of the packet triggering the t-Reordering timer for data stream m is incremented by 1. The t-Reordering timer is the t-Reordering timer for data stream m, which is used for packet loss detection of data stream m, that is, to detect whether the packets of data stream m are lost.
[0286] C18. Stop and reset the t-Reordering timer.
[0287] C19. Determine whether (RX_DELIV(m) < RX_NEXT(m)) and (the t-Reordering timer is not running). If so, jump to step C20; if not, do not perform any action.
[0288] C20. Update RX_REORD(m) = RX_NEXT(m), and start the t-Reordering timer.
[0289] Please refer to Figure 15 , Figure 15 which is a schematic diagram of the data operation of the PDCP layer at the receiving end provided by an embodiment of this application. The following combines the above Figure 12 example to illustrate the sorting process by taking the PDCP PDU with FSN = 12 of data stream flow(j) received by the PDCP layer at the sending end as an example.
[0290] After the PDCP layer at the receiving end receives the PDCP PDU with FSN = 12 of data stream flow(j), it can first convert the FSN into a COUNT value. Since FSN = 12 > SN(RX_DELV) - Window_Size = 8 – 8 = 0, and FSN = 12 < SN(RX_DELV) + Window_Size = 8 + 8 = 16, so the RCVD_HFN corresponding to FSN = 12 is HFN(RX_DELIV) = 0, and the COUNT value converted from the FSN of this PDCP PDU is: 0 + 12 = 12.
[0291] After that, the PDCP layer can decrypt the PDCP PDU with this COUNT value and perform integrity verification. In the case of successful verification, the PDCP layer can update RX_DELIV = 12 with COUNT = 12. At this time, since all PDCP PDUs between RX_DELIV and RX_REORD have been received, RX_DELIV = RX_REORD = 17. At this time, the t-Reordering timer can be stopped and reset. Then, update RX_REORD = RX_NEXT (of the PDCP layer) = 19. At this time, RX_DELIV < RX_REORD, and the t-Reordering timer is started.
[0292] From the above example, it can be seen that the PDCP layer at the receiving end sets different reordering queues for different data streams. Each reordering queue sets its own independent reordering window and sorts the corresponding stream independently. This mechanism avoids the defect that the loss of PDCP PDUs of one data stream blocks the delivery of data of other streams to the upper layer.
[0293] In the embodiments of the present application, a stream sequence number is designed for the data packets of a single data stream, that is, the first sequence number used to indicate the sorting of data packets within a single data stream. After the PDCP layer at the receiving end receives a data packet from a certain data stream, it can write the stream identifier of the data stream to which the data packet belongs, as well as the difference between the second sequence number and the first sequence number, in the header of the data packet, so that the PDCP layer at the receiving end can determine the first sequence number according to the difference, and place the data packet in the reordering queue corresponding to the data stream according to the stream identifier and the first sequence number of the data stream. In this way, different data streams can be processed separately at the receiving end, preventing one data stream from blocking another data stream, thereby improving or avoiding the head-of-line blocking problem within a single DRB. In addition, by using the difference between the second sequence number and the first sequence number to replace the first sequence number for transmission in the air interface, the number of bits occupied by the first sequence number can be reduced, saving transmission overhead.
[0294] It should be understood that Figures 1 to 15 The flowchart or scenario diagram shown is only for easy understanding and does not intend to limit the embodiments of the present application to the examples in the diagram. In fact, those skilled in the art can perform equivalent transformations based on Figures 1 to 15 the examples in it to obtain more implementation manners.
[0295] As described above in combination with Figures 1 to 15 the communication method provided by the embodiments of the present application is described in detail. Next, in combination with Figures 12 to 13The device embodiments of this application are described in detail below. It should be understood that the communication device of this application embodiment can execute the various communication methods of the foregoing embodiments of this application, that is, the specific working processes of the various products below can be referred to the corresponding processes in the foregoing method embodiments. In the embodiments described above, the terminal device may execute some or all of the steps in each embodiment; the network device may execute some or all of the steps in each embodiment. These steps or operations are merely examples, and the embodiments of this application may also perform other operations or variations thereof. Furthermore, the steps may be executed in different orders as presented in the embodiments, and it is not necessary to execute all the operations in the embodiments of this application. Moreover, the sequence number of each step does not imply the order of execution; the execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.
[0296] Figure 16 A schematic block diagram of a communication device provided in an embodiment of this application is shown. Figure 16 As shown, the communication device 1600 may include a communication module 1610. The communication module 1610 can implement corresponding communication functions, which can be internal communication functions of the communication device 1600 or communication functions between the communication device 1600 and other devices. Optionally, the communication module 1610 may also be referred to as a communication interface or transceiver module. Optionally, the communication device 1600 further includes a processing module 1620. The processing module 1620 can implement corresponding processing functions.
[0297] Optionally, the communication device 1600 further includes a storage module, which can be used to store instructions and / or data; the processing module 1620 can read the instructions and / or data in the storage module so that the communication device 1600 can implement the aforementioned method embodiments.
[0298] In one possible design, the communication device 1600 may correspond to the first device in the above method embodiments, or to a component (such as a circuit, chip, or chip system) configured in the first device. The communication device 1600 may be used to perform the steps or processes performed by the first device in any of the above method embodiments.
[0299] In one possible design, the communication device 1600 may correspond to the second device in the above method embodiments, or to a component (such as a circuit, chip, or chip system) configured in the second device. The communication device 1600 may be used to perform the steps or processes performed by the second device in any of the above method embodiments.
[0300] This application embodiment also provides a method such as Figure 17The communication device 1700 shown can be a chip or system-on-a-chip in a first Bluetooth device or a second Bluetooth device; it can also be a second device or a chip or system-on-a-chip in a second device. Figure 17 As shown, the communication device 1700 includes a processor 1701, a transceiver 1702, and a communication line 1703.
[0301] Furthermore, the communication device 1700 may also include a memory 1704. The processor 1701, the memory 1704, and the transceiver 1702 can be connected via a communication line 1703.
[0302] The processor 1701 can be a central processing unit (CPU), a general-purpose processor, a network processor (NP), a digital signal processor (DSP), a microprocessor, a microcontroller, a programmable logic device (PLD), or any combination thereof. The processor 1701 can also be other devices with processing capabilities, such as circuits, devices, or software modules, without limitation.
[0303] Transceiver 1702 is used to communicate with other devices or other communication networks. These other communication networks can be Ethernet, radio access network (RAN), wireless local area networks (WLAN), etc. Transceiver 1702 can be a module, circuit, transceiver, or any device capable of enabling communication.
[0304] Communication line 1703 is used to transmit information between the components included in communication device 1700.
[0305] Memory 1704 is used to store instructions. These instructions can be computer programs.
[0306] The memory 1704 can be a read-only memory (ROM) or other type of static storage device that can store static information and / or instructions; it can also be a random access memory (RAM) or other type of dynamic storage device that can store information and / or instructions; it can also be an electrically erasable programmable read-only memory (EEPROM), a compact disc read-only memory (CD-ROM) or other optical disc storage, optical disc storage (including compressed optical discs, laser discs, optical discs, digital universal optical discs, Blu-ray discs, etc.), magnetic disk storage media or other magnetic storage devices, etc., without limitation.
[0307] It should be noted that the memory 1704 can exist independently of the processor 1701, or it can be integrated with the processor 1701. The memory 1704 can be used to store instructions, program code, or some data, etc. The memory 1704 can be located inside or outside the communication device 1700, without limitation. The processor 1701 is used to execute the instructions stored in the memory 1704 to implement the communication method provided in the following embodiments of this application.
[0308] In one example, processor 1701 may include one or more CPUs, for example Figure 17 CPU0 and CPU1 in the CPU.
[0309] As an optional implementation, the communication device 1700 includes multiple processors, for example, besides Figure 17 In addition to processor 1701, it may also include processor 1707.
[0310] As an optional implementation, the communication device 1700 also includes an output device 1705 and an input device 1706. For example, the input device 1706 is a device such as a keyboard, mouse, microphone, or joystick, and the output device 1705 is a device such as a display screen or speaker.
[0311] It should be noted that the communication device 1700 can be a desktop computer, laptop computer, network server, mobile phone, tablet computer, wireless terminal, embedded device, chip system, or something else. Figure 17 Equipment with a similar structure. Furthermore... Figure 17 The structural composition shown does not constitute a limitation on the communication device, except... Figure 17In addition to the components shown, the communication device may include more or fewer components than illustrated, or combine certain components, or have different component arrangements.
[0312] In this embodiment of the application, the chip system may be composed of chips or may include chips and other discrete devices.
[0313] Furthermore, the actions, terms, etc., involved in the various embodiments of this application can be referenced interchangeably without limitation. The message names or parameter names in the messages exchanged between the various devices in the embodiments of this application are merely examples, and other names may be used in specific implementations without limitation.
[0314] This application also provides a computer program product that, when executed by a computer, can implement the functions of any of the above method embodiments.
[0315] This application also provides a computer program that, when executed by a computer, can implement the functions of any of the above method embodiments.
[0316] This application also provides a computer-readable storage medium. All or part of the processes in the above method embodiments can be implemented by a computer program instructing related hardware. This program can be stored in the computer-readable storage medium, and when executed, it can include the processes of the above method embodiments. The computer-readable storage medium can be an internal storage unit of the terminal (including a data sending end and / or a data receiving end) of any of the foregoing embodiments, such as the terminal's hard disk or memory. The computer-readable storage medium can also be an external storage device of the terminal, such as a plug-in hard disk, smart media card (SMC), secure digital (SD) card, flash card, etc., equipped on the terminal. Further, the computer-readable storage medium can include both the terminal's internal storage unit and external storage devices. The computer-readable storage medium is used to store the computer program and other programs and data required by the terminal. The computer-readable storage medium can also be used to temporarily store data that has been output or will be output.
[0317] It should be noted that the terms "first" and "second," etc., in the specification, claims, and drawings of this application are used to distinguish different objects, not to describe a specific order. "First" and "second" are used for descriptive purposes only and should not be construed as indicating or implying relative importance or implicitly specifying the number of indicated technical features. Therefore, a feature defined with "first" and "second" may explicitly or implicitly include one or more of that feature. In the description of this embodiment, unless otherwise stated, "a plurality of" means two or more.
[0318] Furthermore, the terms “comprising” and “having”, and any variations thereof, are intended to cover non-exclusive inclusion. For example, a process, method, system, product, or apparatus that includes a series of steps or units is not limited to the steps or units listed, but may optionally include steps or units not listed, or may optionally include other steps or units inherent to such process, method, product, or apparatus.
[0319] It should be understood that in this application, "at least one (item)" means one or more. "More than one" means two or more. "At least two (items)" means two or three or more. "And / or" is used to describe the relationship between related objects, indicating that there can be three relationships. For example, "A and / or B" can mean: only A exists, only B exists, and A and B exist simultaneously, where A and B can be singular or plural. The character " / " generally indicates that the related objects before and after are in an "or" relationship. "At least one (item) of the following" or similar expressions refer to any combination of these items, including any combination of single or plural items. For example, at least one (item) of a, b, or c can mean: a, b, c, "a and b", "a and c", "b and c", or "a and b and c", where a, b, and c can be single or multiple. "...when" and "if" both mean that a corresponding action will be taken under certain objective circumstances, not a time limit, nor do they require a judgment action at the time of implementation, nor do they imply any other limitations.
[0320] In the embodiments of this application, the terms "exemplary" or "for example" are used to indicate that something is an example, illustration, or description. Any embodiment or design that is described as "exemplary" or "for example" in the embodiments of this application should not be construed as being more preferred or advantageous than other embodiments or design. Specifically, the use of terms such as "exemplary" or "for example" is intended to present the relevant concepts in a specific manner to facilitate understanding.
[0321] In this application, "sending information to...(terminal device)" can be understood as the destination of the information being the terminal device. This can include sending information directly or indirectly to the terminal device. "Receiving information from...(terminal device)" can be understood as the source of the information being the terminal device, and can include receiving information directly or indirectly from the terminal device. Information may undergo necessary processing between the source and destination, such as format changes, but the destination can understand the valid information from the source.
[0322] Through the above description of the embodiments, those skilled in the art can clearly understand that, for the sake of convenience and brevity, only the division of the above functional modules is used as an example. In actual applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above.
[0323] In the several embodiments provided in this application, it should be understood that the disclosed apparatus and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of modules or units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another device, or some features may be ignored or not executed. Furthermore, the mutual coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between devices or units may be electrical, mechanical, or other forms.
[0324] The units described as separate components may or may not be physically separate. A component shown as a unit can be one or more physical units; that is, it can be located in one place or distributed in multiple different locations. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.
[0325] Furthermore, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.
Claims
1. A communication method, characterized in that, Applied in a first device, the method includes: The PDCP layer receives the first data packet from the upper layer, and the first data packet is a data packet of the first data stream; The PDCP layer sends a second data packet to the RLC layer based on the first data packet. The header of the second data packet carries the flow identifier of the first data stream and the first indication information. The first indication information is used to indicate the first sequence number or to indicate the difference between the second sequence number and the first sequence number. Wherein, the first sequence number is used to indicate the packet order of the corresponding data packet in the first data stream, and the second sequence number is used to indicate the packet order of the corresponding data packet in the total data stream, wherein the total data stream refers to all data streams mapped to the first bearer mapped to the first data stream; The RLC layer receives the second data packet and sends a third data packet to the RLC layer of the second device based on the second data packet.
2. The method as described in claim 1, characterized in that, When the first indication information is used to indicate the difference between the second sequence number and the first sequence number, the header of the third data packet carries the second sequence number, or carries the second sequence number and the second indication information, wherein the second indication information is used to indicate that the corresponding data packet carries the second sequence number.
3. The method as described in claim 2, characterized in that, The second sequence number is shared by the RLC layer and the PDCP layer.
4. The method as described in claim 2, characterized in that, The first sequence number is the modulo result of the value of the first state variable divided by the first numerical value, and the second sequence number is the modulo result of the value of the second state variable divided by the first numerical value; The first state variable is used to indicate the count value or COUNT value of the next data packet of the first data stream to be delivered to the RLC layer. The COUNT value consists of a sequence number and a superframe number. The second state variable is used to indicate the count value of the next data packet to be delivered to the RLC layer.
5. The method as described in claim 4, characterized in that, The second state variable is shared by the RLC layer and the PDCP layer.
6. The method as described in claim 2, characterized in that, The first indication information is used to indicate the modulo result of the difference between the second serial number and the first serial number modulo the first value.
7. The method as described in claim 6, characterized in that, The first indication information includes the quotient and remainder of the first modulo result divided by the first preset value. The first modulo result refers to the modulo result of the difference between the first serial number and the second serial number divided by the first value.
8. The method as described in claim 6, characterized in that, The first value is 2 to the power of M, where M refers to the window size of the reorganization window of the RLC layer and / or the reordering window of the PDCP layer.
9. The method as described in claim 1, characterized in that, The header of the second data packet includes a first field and a second field. The first field is used to indicate the stream identifier of the first data stream, and the second field is used to indicate the first sequence number, or the difference between the second sequence number and the first sequence number.
10. The method as described in claim 9, characterized in that, When the second field is used to indicate the difference between the second serial number and the first serial number, the second field includes two fields. One of the two fields is used to indicate the quotient of the first modulo result divided by the first preset value, and the other field is used to indicate the remainder of the first modulo result divided by the first preset value. The first modulo result refers to the modulo result of the difference between the second serial number and the first serial number divided by the first value.
11. The method as described in claim 10, characterized in that, The aforementioned field is Indicator Field I.
12. The method as described in claim 2, characterized in that, The header of the third data packet includes a third field and a fourth field. The third field is used to indicate the second sequence number, and the fourth field is used to indicate whether the corresponding data packet carries the second sequence number.
13. The method as described in claim 12, characterized in that, The fourth field is the shared bit S.
14. The method according to any one of claims 1-13, characterized in that, The second data packet is obtained by encapsulating the first data packet, and the third data packet is obtained by encapsulating the second data packet or segments of the second data packet.
15. The method according to any one of claims 1-13, characterized in that, The first serial number is also used for encryption and / or decryption operations of the PDCP layer.
16. A communication method, characterized in that, When applied to a second device, the method includes: The RLC layer receives a third data packet from the first device; The RLC layer sends a second data packet to the PDCP layer based on the third data packet. The header of the second data packet carries the flow identifier of the first data stream and the first indication information. The first indication information is used to indicate the first sequence number or the difference between the second sequence number and the first sequence number. The first sequence number is used to indicate the data packet order of the corresponding data packet in the first data stream. The second sequence number is used to indicate the data packet order of the corresponding data packet in the total data stream. The total data stream refers to all data streams mapped to the first bearer mapped to the first data stream. The PDCP layer receives the second data packet and places it in the reordering queue corresponding to the first data stream according to the first sequence number, wherein the first sequence number is determined according to the first indication information.
17. The method as described in claim 16, characterized in that, When the first indication information is used to indicate the difference between the second sequence number and the first sequence number, the header of the third data packet carries the second sequence number, or carries the second sequence number and the second indication information; The RLC layer sends a second data packet to the PDCP layer based on the third data packet, including: The RLC layer decapsulates the third data packet to obtain the second data packet. The header of the second data packet carries the second sequence number, the stream identifier of the first data stream, and the first indication information. Before the PDCP layer places the second data packet in the reordering queue corresponding to the first data stream according to the first sequence number, it further includes: The PDCP layer determines the first sequence number based on the second sequence number and the first indication information.
18. The method as described in claim 17, characterized in that, The RLC layer decapsulates the third data packet to obtain the second data packet, including: When the RLC layer carries the second sequence number and the second indication information in the header of the third data packet, it strips the header of the third data packet while retaining the second sequence number in the header of the third data packet to obtain the second data packet.
19. The method as described in claim 18, characterized in that, The header of the third data packet includes a third field and a fourth field. The third field is used to indicate the first sequence number, and the fourth field is used to indicate whether the corresponding data packet carries the first sequence number. When the RLC layer receives the second sequence number and the second indication information in the header of the third data packet, it strips the header of the third data packet while retaining the second sequence number in the header of the third data packet to obtain the second data packet, which includes: When the fourth field in the header of the third data packet indicates that the corresponding data packet carries the first sequence number, the RLC layer strips the header of the third data packet while retaining the second sequence number in the header of the third data packet to obtain the second data packet.
20. The method as described in claim 17, characterized in that, The first indication information is used to indicate the modulo result of the difference between the second serial number and the first serial number modulo the first value.
21. The method as described in claim 20, characterized in that, The first indication information includes the quotient and remainder of the first modulo result divided by the first preset value. The first modulo result refers to the modulo result of the difference between the first serial number and the second serial number divided by the first value. The PDCP layer determines the first sequence number based on the second sequence number and the first indication information, including: The PDCP layer determines the first sequence number based on the quotient, the remainder, and the second sequence number.
22. The method as described in claim 21, characterized in that, The header of the second data packet includes a first field and a second field. The first field is used to indicate the stream identifier of the first data stream, and the second field includes two fields, one of which is used to indicate the quotient and the other field is used to indicate the remainder.
23. The method as described in claim 21, characterized in that, Determining the first sequence number based on the quotient, the remainder, and the second sequence number includes: The first difference modulo the first value is used as the first sequence number; wherein, the first difference refers to the difference between the second difference and the first product, the second difference refers to the difference between the second sequence number and the remainder, and the first product refers to the product of the quotient and the first preset value.
24. The method as described in claim 20, characterized in that, The first value is 2 to the power of M, where M refers to the window size of the reorganization window of the RLC layer and / or the reordering window of the PDCP layer.
25. The method according to any one of claims 16-24, characterized in that, After the PDCP layer places the second data packet into the reordering queue corresponding to the first data stream according to the first sequence number, it further includes: The PDCP layer submits the data packets in the reordering queue to the upper layer in sequence according to the COUN value corresponding to the first sequence number. The COUN value is composed of the first sequence number and the superframe number.
26. The method as described in claim 25, characterized in that, Before the PDCP layer submits the data packets in the reordering queue to the upper layer in order according to the COUN value corresponding to the first sequence number, it also includes: The PDCP layer decrypts and verifies the integrity of the second data packet based on the COUN value corresponding to the first sequence number. If the PDCP layer successfully decrypts and verifies the data, it performs the step of submitting the data packets in the reordering queue to the upper layer in sequence according to the COUN value corresponding to the first sequence number.
27. The method as described in claim 25, characterized in that, The step of submitting the data packets in the reordering queue to the upper layer in sequence according to the COUN value corresponding to the first sequence number includes: When the COUN value corresponding to the first sequence number is less than the value of the third state variable and the COUN value corresponding to the first sequence number is equal to the value of the fourth state variable, multiple data packets with COUN values starting from the value of the fourth state variable and consecutively submitted to the upper layer in the reordering window of the reordering queue are submitted in sequence. The third state variable is used to indicate the COUNT value of the next expected data packet of the first data stream, and the fourth state variable is used to indicate the COUNT value of the next data packet of the first data stream to be submitted to the upper layer. If the COUN value corresponding to the first sequence number is less than the value of the third state variable, and the COUN value corresponding to the first sequence number is not equal to the value of the fourth state variable, the first timer is started or reset. The first timer is used to perform packet loss detection on the first data stream.
28. A communication device, characterized in that, The device includes at least one processor coupled to a memory storing a program or instructions, the processor executing the program or instructions to cause the device to perform the method as claimed in any one of claims 1 to 15, or to perform the method as claimed in any one of claims 16 to 27.
29. A computer-readable storage medium having a computer program or instructions stored thereon, characterized in that, When the computer program or instructions are executed, they cause the computer to perform the method as described in any one of claims 1 to 15, or the method as described in any one of claims 16 to 27.
30. A communication system, characterized in that, Includes the communication device as described in claim 28.
Citation Information
Patent Citations
Data processing method and device
CN107770807A
Data transmission method and device
CN108243211A
Apparatus, method and computer program
CN113785511A
Data processing method and device, terminal and network side equipment
CN120980719A
Cited By
Packet assembling control method of data packet, storage medium and electronic equipment
CN122027576A