Data transmission method and communication device

Through the negotiation mechanism between the terminal device and the server, dynamic selection of congestion control algorithms suitable for different business types has solved the problem that the existing technology cannot adapt to the needs of different business types, and improved data transmission performance and user experience.

CN120075149APending Publication Date: 2025-05-30HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202311615026.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-11-29
Publication Date
2025-05-30

AI Technical Summary

Technical Problem

The prior art cannot adaptively provide different congestion control algorithms according to the needs of different service types of terminal devices, resulting in the inability of servers to effectively manage data transmission performance of multiple service types.

Method used

Through the negotiation mechanism between the terminal device and the server, a congestion control algorithm for transmitting data of a specific service type is determined. The terminal device recommends a congestion control algorithm used to compress and process data. The server responds according to the supported algorithms and selects the appropriate algorithm for data transmission.

Benefits of technology

It realizes dynamic selection of suitable congestion control algorithms based on the service type, improves data transmission performance, improves user experience, and avoids the defect of the server adopting the same algorithm for multiple service types.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120075149A_ABST
    Figure CN120075149A_ABST
Patent Text Reader

Abstract

The invention provides a data transmission method and a communication device. The method comprises the following steps that: terminal equipment sends a first congestion control algorithm to a server, wherein the first congestion control algorithm is a congestion control algorithm which is suggested by the terminal equipment according to a first service type and is used for compressing data of the first service type; the terminal equipment receives first information of the server, wherein the first information is used for indicating that the server supports a first congestion control algorithm; and the terminal equipment receives the data of the first service type transmitted by the server according to the first congestion control algorithm. According to the method provided by the invention, the terminal equipment and the server can negotiate corresponding congestion control algorithms for data of different service types in a mode of negotiating the congestion control algorithms through signaling interaction, so that the user experience is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of communication technologies, and in particular, to a method for data transmission and a communication device. Background Art

[0002] With the development of the mobile Internet and the popularization of intelligent terminals, data traffic has shown an explosive growth trend. Driven by big data technology and artificial intelligence technology, the global data traffic continues to grow explosively.

[0003] In the era of the Internet of Everything, various applications emerge in an endless stream. In order to maintain a good user Internet experience, operators need to maintain the network well, so as to improve service quality and user perception. Therefore, realizing the "visualization" and "measurability" of the network is a challenge faced by operators in network operation and maintenance.

[0004] Most of the data in network traffic is transmitted based on the Transmission Control Protocol (TCP). In the field of data transmission problem analysis, a set of TCP metrics are mainly preset, such as handshake delay, packet loss count, upstream and downstream out-of-order, etc., to monitor network traffic from multiple dimensions. Network operation and maintenance personnel analyze the change of TCP rate through the deterioration degree of TCP metrics, and conduct root cause analysis and abnormal event demarcation. In this solution, TCP metrics mainly rely on threshold judgment, and among them, obtaining the threshold requires business experts to set it reasonably according to experience, and the delivery difficulty is relatively large.

[0005] Currently, some methods for identifying congestion events or congestion avoidance algorithms are provided in existing technical solutions, in order to be used in data transmission problem analysis. However, these identification technologies are often uniformly configured by the server, that is, the terminal devices connected to the same server all use the same identification technology, resulting in the server being unable to adaptively provide different identification technologies according to the different service type requirements / scenarios of terminal devices. Summary of the Invention

[0006] This application provides a method for data transmission and a communication device. In this method, the server negotiates with the terminal device and selects a congestion control algorithm according to the requirements of the service type, so as to improve the user experience.

[0007] In a first aspect, a method for data transmission is provided. This method can be executed by a terminal device, or by a component (such as a chip or a chip system, etc.) of the terminal device. This application does not make any limitations in this regard. The method includes:

[0008] The terminal device sends a first congestion control algorithm to the server, where the first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the first service type for compressing the data of the first service type; the terminal device receives a first message from the server, where the first message is used to indicate that the server supports the first congestion control algorithm; the terminal device receives the data of the first service type transmitted by the server according to the first congestion control algorithm.

[0009] According to the method provided in this application, between the terminal device and the server, through a negotiation method, a congestion control algorithm for transmitting the data of the first service type of the terminal device is determined, avoiding the server determining the congestion control algorithm by itself without considering the requirements of the first service type of the terminal device, and at the same time avoiding the server using the same congestion control algorithm to transmit the data of multiple different service types. In this method, the server can select a suitable congestion control algorithm for the data of different service types according to the congestion control algorithm recommended by the terminal device for compressing the data of the service type, ensuring the transmission performance of the data of the service type and improving the user experience.

[0010] In combination with the first aspect, in some possible implementation manners, the terminal device sends a second congestion control algorithm to the server, where the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the second service type for compressing the data of the second service type, and the first service type is different from the second service type; the terminal device receives a second message from the server, where the second message is used to indicate that the server does not support the second congestion control algorithm; the terminal device receives the data of the second service type transmitted by the server according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

[0011] It should be understood that the second congestion control algorithm is different from the third congestion control algorithm, and the third congestion control algorithm is a congestion control algorithm supported by the server.

[0012] Based on the above technical solution, between the terminal device and the server, a congestion control algorithm for transmitting data of the second service type of the terminal device is determined through negotiation. Among them, after the server receives the second congestion control algorithm proposed by the terminal device for compressing and processing the data of the second service type, it determines that it does not support the second congestion control algorithm, that is, the server determines the congestion control algorithm it supports according to the second congestion control algorithm (such as the third congestion control algorithm), and sends the third congestion control algorithm to the terminal device. The terminal device receives the data of the second service type transmitted by the server according to the third congestion control algorithm. When the server determines that it does not support the congestion control algorithm proposed by the terminal device, the server can transmit the data of the second service type to the terminal device according to the congestion control algorithm supported by the system default indication or the congestion control algorithm supported by itself, so as to ensure the transmission performance of the data of the second service type of the terminal device.

[0013] Combined with the first aspect, in some possible implementation manners, the first congestion control algorithm and / or the second congestion control algorithm is carried in the SYN frame, and the first information and / or the second information is carried in the SYN_ACK frame.

[0014] It should be understood that the process of negotiating the congestion control algorithm between the terminal device and the server can be in the three-way handshake process of the Transmission Control Protocol (TCP), that is, the congestion control algorithm sent by the terminal device to the server can be carried in the SYN frame in the first handshake process, and the first information and / or the second information sent by the server to the terminal device can be carried in the SYN_ACK frame in the second handshake process.

[0015] Based on the above technical solution, the signaling interaction between the terminal device and the server is in the three-way handshake process of TCP, and the congestion control algorithm is negotiated in the existing signaling, without the need for a separate signaling for transmission, reducing the complexity of the signaling interaction between the terminal device and the server and saving signaling overhead.

[0016] Combined with the first aspect, in some possible implementation manners, the first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

[0017] It should be understood that when the congestion control algorithm is carried in the SYN frame / SYN_ACK frame, it can be represented in the form of bits.

[0018] Second aspect, a data transmission method is provided. This method can be executed by a server, or by components of the server (such as a chip or a chip system, etc.), and this application does not limit this. The method includes:

[0019] The server receives a first congestion control algorithm of a terminal device. The first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a first service type for compressing data of the first service type. The server sends first information to the terminal device, and the first information is used to indicate that the server supports the first congestion control algorithm. The server sends data of the first service type to the terminal device according to the first congestion control algorithm.

[0020] According to the method provided in this application, between the terminal device and the server, through a negotiation method, a congestion control algorithm for transmitting data of the first service type of the terminal device is determined, avoiding the server itself determining the congestion control algorithm for transmitting data of the first service type of the terminal device, and at the same time avoiding the server using the same congestion control algorithm to transmit data of multiple different service types. In this method, the server can select a suitable congestion control algorithm for data of different service types according to the congestion control algorithm recommended by the terminal device for compressing data of the service type, ensuring the transmission performance of data of the service type and improving the user experience.

[0021] In combination with the second aspect, in some possible implementation manners, the server receives a second congestion control algorithm of the terminal device. The second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a second service type for compressing data of the second service type. The first service type is different from the second service type. The server sends second information to the terminal device, and the second information is used to indicate that the server does not support the second congestion control algorithm. The server sends data of the second service type to the terminal device according to a third congestion control algorithm, and the third congestion control algorithm is a congestion control algorithm supported by the server.

[0022] It should be understood that the second congestion control algorithm is different from the third congestion control algorithm.

[0023] Based on the above technical solution, between the terminal device and the server, a congestion control algorithm for transmitting data of the second service type of the terminal device is determined through negotiation. Among them, after the server receives the second congestion control algorithm proposed by the terminal device for compressing and processing data of the second service type, it determines that it does not support the second congestion control algorithm, that is, the server determines the congestion control algorithm it supports according to the second congestion control algorithm (such as the third congestion control algorithm), and sends the third congestion control algorithm to the terminal device. The terminal device receives the data of the second service type transmitted from the server according to the third congestion control algorithm. When the server determines that it does not support the congestion control algorithm proposed by the terminal device, the server can transmit the data of the second service type to the terminal device according to the congestion control algorithm supported by the system default indication or the congestion control algorithm supported by itself, so as to ensure the transmission performance of the data of the second service type of the terminal device.

[0024] Combined with the second aspect, in some possible implementation manners, the first congestion control algorithm and / or the second congestion control algorithm is carried in the SYN frame, and the first information and / or the second information is carried in the SYN_ACK frame.

[0025] It should be understood that the process of negotiating the congestion control algorithm between the terminal device and the server can be during the TCP three-way handshake process, that is, the congestion control algorithm can be carried in the SYN frame during the first handshake when the terminal device sends it to the server, and the first information and / or the second information can be carried in the SYN_ACK frame during the second handshake when the server sends it to the terminal device.

[0026] Based on the above technical solution, the signaling interaction between the terminal device and the server is during the TCP three-way handshake process, and the congestion control algorithm is negotiated in the existing signaling, without the need for a separate signaling for transmission, reducing the complexity of the signaling interaction between the terminal device and the server and saving signaling overhead.

[0027] Combined with the second aspect, in some possible implementation manners, the first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

[0028] It should be understood that when the congestion control algorithm is carried in the SYN frame / SYN_ACK frame, it can be represented in the form of bits.

[0029] In a third aspect, a communication device is provided, and the device includes:

[0030] A transceiver unit, configured to send a first congestion control algorithm to a server, where the first congestion control algorithm is a congestion control algorithm recommended by a terminal device according to a first service type for compressing data of the first service type;

[0031] The transceiver unit is further configured to receive first information from the server, where the first information is used to indicate that the server supports the first congestion control algorithm;

[0032] The transceiver unit is further configured to receive data of the first service type transmitted from the server according to the first congestion control algorithm.

[0033] In conjunction with the third aspect, in some possible implementation manners, the transceiver unit is further configured to send a second congestion control algorithm to the server, where the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a second service type for compressing data of the second service type, and the first service type is different from the second service type;

[0034] The transceiver unit is further configured to receive second information from the server, where the second information is used to indicate that the server does not support the second congestion control algorithm;

[0035] The transceiver unit is further configured to receive data of the second service type transmitted from the server according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

[0036] In conjunction with the third aspect, in some possible implementation manners, the first congestion control algorithm and / or the second congestion control algorithm is carried in a SYN frame, and the first information and / or the second information is carried in a SYN_ACK frame.

[0037] In conjunction with the third aspect, in some possible implementation manners, a first bit in the SYN frame is used to indicate the first congestion control algorithm, a second bit in the SYN frame is used to indicate the second congestion control algorithm, a third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and a fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

[0038] Fourth aspect, a communication device is provided, and the device includes:

[0039] A transceiver unit, configured to receive a first congestion control algorithm from a terminal device, where the first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a first service type for compressing data of the first service type;

[0040] The transceiver unit is further configured to send first information to the terminal device, where the first information is used to indicate that the server supports the first congestion control algorithm;

[0041] The transceiver unit is further configured to send data of the first service type to the terminal device according to the first congestion control algorithm.

[0042] In combination with the fourth aspect, in some possible implementation manners, the transceiver unit is further configured to receive a second congestion control algorithm of the terminal device, where the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a second service type for compressing data of the second service type, and the first service type is different from the second service type;

[0043] The transceiver unit is further configured to send second information to the terminal device, where the second information is used to indicate that the server does not support the second congestion control algorithm;

[0044] The transceiver unit is further configured to send data of the second service type to the terminal device according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

[0045] In combination with the fourth aspect, in some possible implementation manners, the first congestion control algorithm and / or the second congestion control algorithm is carried in a SYN frame, and the first information and / or the second information is carried in a SYN_ACK frame.

[0046] In combination with the fourth aspect, in some possible implementation manners, the first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

[0047] In a fifth aspect, a communication device is provided, including a processor. The processor is coupled to a memory and can be used to execute instructions in the memory to implement the method in the first aspect and any possible implementation manner in the first aspect, or to implement the method in the second aspect and any possible implementation manner in the second aspect.

[0048] Optionally, the communication device further includes a memory.

[0049] Optionally, the communication device further includes a communication interface, and the processor is coupled to the communication interface.

[0050] In one implementation, the communication device is a centralized user configuration function. When the communication device is a centralized user configuration function, the communication interface can be a transceiver or an input / output interface.

[0051] In another implementation, the communication device is a chip configured in a centralized user configuration function. When the communication device is a chip configured in a centralized user configuration function, the communication interface can be an input / output interface.

[0052] Optionally, the transceiver can be a transceiver circuit. Optionally, the input / output interface can be an input / output circuit.

[0053] In a sixth aspect, a processor is provided, including: an input circuit, an output circuit, and a processing circuit. The processing circuit is configured to receive a signal through the input circuit and transmit a signal through the output circuit, so that the processor executes the method in any possible implementation manner of the first aspect, or so that the processor executes the method in any possible implementation manner of the second aspect.

[0054] In a specific implementation process, the above-mentioned processor can be one or more chips. The input circuit can be an input pin, the output circuit can be an output pin, and the processing circuit can be transistors, gate circuits, flip-flops, and various logic circuits, etc. The input signal received by the input circuit can be received and input by, for example, but not limited to, a receiver. The signal output by the output circuit can be output to, for example, but not limited to, a transmitter and transmitted by the transmitter. Moreover, the input circuit and the output circuit can be the same circuit, and this circuit is used as the input circuit and the output circuit at different times respectively. The embodiments of the present application do not limit the specific implementation manners of the processor and various circuits.

[0055] In a seventh aspect, a processing device is provided, including a processor and a memory. The processor is configured to read instructions stored in the memory, and can receive a signal through a receiver and transmit a signal through a transmitter, so as to execute the method in any possible implementation manner of the first aspect, or so as to execute the method in any possible implementation manner of the second aspect.

[0056] Optionally, the processor is one or more, and the memory is one or more.

[0057] Optionally, the memory can be integrated with the processor, or the memory is separately arranged from the processor.

[0058] In a specific implementation process, the memory can be a non-transitory memory, such as a read-only memory, which can be integrated with the processor on the same chip or can be separately provided on different chips. The embodiments of the present application do not limit the type of the memory and the setting manner of the memory and the processor.

[0059] It should be understood that relevant data interaction processes, such as sending configuration information, can be a process of outputting configuration information from the processor, and receiving configuration information can be a process of the processor receiving input configuration information. Specifically, the data output by the processor can be output to a transmitter, and the input data received by the processor can come from a receiver. Among them, the transmitter and the receiver can be collectively referred to as a transceiver.

[0060] The processing device in the above seventh aspect can be one or more chips. The processor in the processing device can be implemented by hardware or by software. When implemented by hardware, the processor can be a logic circuit, an integrated circuit, etc.; when implemented by software, the processor can be a general-purpose processor, which is implemented by reading software code stored in a memory. The memory can be integrated in the processor or can be located outside the processor and exist independently.

[0061] In an eighth aspect, there is provided a computer program product, which includes: a computer program (which can also be referred to as code or instruction). When the computer program is run, it causes a computer to execute the method in any one of the possible implementation manners in the above first aspect, or causes the computer to execute the method in any one of the possible implementation manners in the above second aspect.

[0062] In a ninth aspect, there is provided a computer-readable storage medium, which stores a computer program (which can also be referred to as code or instruction). When the computer program runs on a computer, it causes the method in any one of the possible implementation manners in the above first aspect to be executed, or causes the method in any one of the possible implementation manners in the above second aspect to be executed.

[0063] In a tenth aspect, there is provided a chip, which includes a processor and a communication interface. The processor reads instructions stored on a memory through the communication interface and executes the method provided in the above first aspect, or executes the method provided in the above second aspect.

[0064] Optionally, as an implementation manner, the chip can further include a memory, and instructions are stored in the memory. The processor is used to execute the instructions stored on the memory. When the instructions are executed, the processor is used to execute the method provided in the above first aspect, or the processor is used to execute the method provided in the above second aspect. Description of the Drawings

[0065] Figure 1 It is a schematic diagram of the usage scenario of a congestion control algorithm.

[0066] Figure 2 It shows a schematic block diagram of a service deployment.

[0067] Figure 3 It shows a schematic block diagram of another service deployment.

[0068] Figure 4 It is a schematic flow diagram of data transmission provided by an embodiment of the present application.

[0069] Figure 5 It is a schematic diagram of the usage scenario of a congestion control algorithm provided by an embodiment of the present application.

[0070] Figure 6 It is another schematic flow diagram of data transmission provided by an embodiment of the present application.

[0071] Figure 7 It is a schematic diagram of the option format of a TCP congestion control algorithm.

[0072] Figure 8 It shows a schematic block diagram of a communication device provided by an embodiment of the present application.

[0073] Figure 9 It shows a schematic block diagram of another communication device provided by an embodiment of the present application. Detailed implementation manners

[0074] Next, the technical solutions in the embodiments of the present application will be described with reference to the accompanying drawings. Obviously, the described embodiments are part of the embodiments of the present application, rather than all of them. All other embodiments obtained by those of ordinary skill in the art based on the embodiments of the present application without creative efforts shall fall within the protection scope of the present application.

[0075] In the embodiments of the present application, words such as "exemplary" and "for example" are used to represent examples, illustrations or explanations. Any embodiment or design solution described as "exemplary" in the present application should not be construed as being more preferred or having more advantages than other embodiments or design solutions. Rather, the use of the word "exemplary" is intended to present concepts in a specific manner.

[0076] The service scenarios described in the embodiments of the present application are for more clearly illustrating the technical solutions in the embodiments of the present application, and do not constitute a limitation on the technical solutions provided by the embodiments of the present application. Those of ordinary skill in the art can know that with the emergence of new service scenarios, the technical solutions provided by the embodiments of the present application are equally applicable to similar technical problems.

[0077] It should be noted that the term "field" in this application can generally refer to a part of information, and the "field" can also be referred to as "domain" or "field", etc. Moreover, the names of the fields in this application are only examples, and in specific implementations, other names can also be used. This application does not make specific limitations in this regard.

[0078] It should be understood that the "embodiments" mentioned throughout the specification mean that the specific features, structures or characteristics related to the embodiments are included in at least one embodiment of this application. Therefore, the various embodiments throughout the specification do not necessarily refer to the same embodiment. In addition, these specific features, structures or characteristics can be combined in one or more embodiments in any suitable manner.

[0079] It should also be understood that the ordinal numbers such as "first" and "second" mentioned in the embodiments of this application are used to distinguish multiple objects, and are not used to limit the size, content, order, time sequence, priority or importance of multiple objects, etc. For example, the first information and the second information do not indicate differences in the amount of information, content, priority or importance, etc.

[0080] It should also be understood that in this application, "when...", "if" and "in case" all mean that the network element will perform corresponding processing under certain objective circumstances, which does not limit the time, and it is not required that the network element must have a judgment action when implemented, nor does it mean that there are other limitations.

[0081] It should also be understood that in the embodiments of this application, "B corresponding to A" means that B is associated with A, and B can be determined according to A. However, it should also be understood that determining B according to A does not mean that B is determined only according to A, and B can also be determined according to A and / or other information.

[0082] In this application, "at least one" means one or more, and "a plurality" means two or more. "And / or" describes the association relationship of associated objects, indicating that there can be three relationships. For example, A and / or B can mean: including the case where A exists alone, A and B exist simultaneously, and B exists alone, where A and B can be singular or plural. The character " / " generally means that the associated objects before and after are in an "or" relationship. "At least one (item)" or its similar expression means any combination of these items, including any combination of single item (item) or plural items (items). For example, at least one (item) of a, b, or c can mean: a, b, c, a - b, a - c, b - c, or a - b - c, where a, b, c can be single or multiple.

[0083] During a certain period of time, if the network's demand for resources exceeds the available resource quantity, or the network traffic exceeds the network bottleneck bandwidth, it may lead to a deterioration in the network performance, and thus problems such as packet congestion, data packet loss, and increased latency may occur.

[0084] For example, in a computer network, resources such as bandwidth, caches in switching nodes, and processors all belong to the network resources. When the input load reaches a certain level, the network throughput will no longer increase, but some network resources may be lost. The network throughput generally remains at the maximum value it can control. If the cache of the forwarding node is not large enough, packet loss may occur, which is a sign of congestion.

[0085] Congestion control generally requires obtaining information about the internal traffic distribution of the network. Before specifically implementing congestion control, it is necessary to exchange information and various commands between nodes in order to select control strategies and implement control.

[0086] Regarding the existing congestion control method proposed by Jacobson, it can effectively solve the network congestion control problem. However, with the development of the new generation of the Internet towards high-speed and wireless directions, and the emergence of the demand for transmitting massive scientific research data in network applications such as satellite, aviation, astronomical observation, and high-energy physics, the traditional Transmission Control Protocol (TCP) can no longer meet the growing transmission requirements. To adapt to the transmission performance of data in high-speed and long-delay networks, researchers have proposed various congestion control mechanisms, mainly including congestion control methods based on packet loss and congestion control methods based on delay.

[0087] To alleviate network congestion, the TCP congestion control algorithm mainly includes the following several types:

[0088] 1. CUBIC algorithm

[0089] CUBIC is the next-generation version of BIC-TCP. CUBIC detects packet loss and considers that network congestion has occurred, then immediately reduces the congestion sending window, and further reduces the sending rate until no more packet loss occurs, and then gradually increases the sending window, repeating this process. It can be seen that CUBIC mainly uses packet loss as the congestion indication.

[0090] The key feature of CUBIC is that its window growth only depends on the time between two consecutive congestion events and has nothing to do with the round trip times (RTT). This feature allows CUBIC flows to compete in the same bottleneck with the same window size, regardless of their RTT, thus obtaining good RTT fairness. Moreover, when the RTT is short, since the window growth rate is fixed, its growth speed may be slower than the TCP standard. Since the TCP standard (such as TCP-SACK) works well under short RTTs, this feature enhances the TCP friendliness of the protocol.

[0091] 2. Bottleneck Bandwidth and Round-Trip Propagation Time (BBR) Algorithm

[0092] The BBR algorithm is a new congestion control algorithm proposed by Google. The BBR algorithm performs congestion control based on the bottleneck bandwidth and RTT of network flows. By continuously collecting the transmission information of network data packets, it calculates the current network bandwidth and delay, and updates the size of the congestion window in real time to achieve the best network performance.

[0093] When the BBR algorithm detects an "increase in RTT delay", it considers that network congestion has occurred and randomly reduces the sending window until the RTT no longer decreases. Then it gradually increases the sending window in a cycle. It can be seen that BBR mainly uses the increase in delay as a congestion indication.

[0094] 3. Explicit Congestion Notification (ECN) Algorithm

[0095] ECN is a technology for active congestion control in Internet packet switching. It indicates the degree of network congestion by setting specific bits in the IP packet header. It replaces the traditional implicit congestion control method, enabling network devices to handle congestion situations more intelligently and improving the overall performance of the network.

[0096] When network congestion occurs (the forwarding queue is about to be full), the ECT algorithm automatically modifies the ECE flag of the TCP packet. The sender recognizes this flag and automatically reduces the sending window until the congestion is restored. It can be seen that ECN mainly uses the "explicit congestion" indication as the congestion judgment.

[0097] Based on the above three different TCP congestion control algorithms, among them, the CUBIC algorithm uses "packet loss" as the congestion indication. This type of algorithm is the mainstream algorithm for current TCP congestion control, pursuing the maximum utilization rate of network bandwidth and being suitable for bandwidth-sensitive applications, such as: download classes; the BBR algorithm uses "increase in delay" as the congestion indication. This type of algorithm pursues the minimization of network delay and is suitable for delay-sensitive applications, such as: real-time calls; the ECN algorithm uses "explicit" congestion indication. This method requires the simultaneous support of both the sender and receiver and network devices to take effect, and its application range is limited.

[0098] It should be understood that in this application, the above several congestion control algorithms are mainly used as examples of congestion control algorithms to briefly introduce the methods in the embodiments of this application. Of course, TCP congestion control algorithms can also include other algorithms (such as CUBIC), etc., which are also applicable to the methods provided in this application, and this application will not introduce them one by one.

[0099] Figure 1 It is a schematic diagram of the usage scenario of a congestion control algorithm. Currently, the TCP congestion control algorithm only supports unified configuration by the server for terminal devices. That is, multiple terminal devices connected to the same server use the same congestion control algorithm. The server cannot adopt different congestion control algorithms according to the different service types of multiple terminal devices or multiple different service types of a single terminal device. That is, the server cannot use different congestion control algorithms according to the service scenario, resulting in multiple terminal devices connected to the same server, or multiple different service types on a single terminal device, being unable to provide a congestion control algorithm that meets the requirements of the service type corresponding to the terminal device during data transmission.

[0100] For example Figure 1 , the same server provides services for service type #1 on terminal device A and service type #2 on terminal device B. Among them, the same server adopts algorithm #1 to relieve network congestion for both service type #1 and service type #2. Suppose service type #1 is the download service of terminal device A, and the data transmission corresponding to this service type #1 pursues the maximum utilization rate of network bandwidth and is data of a bandwidth-sensitive application; service type #2 is the video chat service of terminal device B, and the data corresponding to this service type #2 pursues the minimization of network delay and is data of a delay-sensitive application. That is, the congestion control algorithm applicable to service type #1 is CUBIC, and the congestion control algorithm applicable to service type #2 is BBR. Since the server cannot provide different congestion control algorithms according to different service type scenarios, that is, the server provides algorithm #1 as the congestion control algorithm for terminal device A and terminal device B at the same time. Suppose when algorithm #1 is CUBIC, this algorithm #1 meets the requirements of service type #1 in terminal device A but cannot meet the requirements of service type #2 in terminal device B; when algorithm #1 is BBR, this algorithm #1 meets the requirements of service type #2 in terminal device B but cannot meet the requirements of service type #1 in terminal device A.

[0101] Regarding Figure 1 the problem shown in

[0102] Solution 1: Deploy different types of services on different servers, and the same server corresponding to the service type uses the same congestion control algorithm.

[0103] Figure 2Shows a schematic block diagram of a service deployment. For example, Service Type #1 and Service Type #2 in the terminal device A are respectively deployed on Server #1 and Server #2. That is, the congestion control algorithm adopted on Server #1 is applicable to the congestion control requirements corresponding to the data transmission of Service Type #1, and the congestion control algorithm adopted on Server #2 is applicable to the congestion control requirements corresponding to the data transmission of Service Type #2.

[0104] Solution 2: Deploy different types of service types on different virtual machines in the same server, and the service types on the same virtual machine adopt the same congestion control algorithm.

[0105] Figure 3 Shows another schematic block diagram of a service deployment. For example, Service Type #1 and Service Type #2 in the terminal device are respectively deployed on Virtual Machine #1 and Virtual Machine #2 in the server. Among them, different congestion control algorithms are adopted on Virtual Machine #1 and Virtual Machine #2 in the server. The congestion control algorithm adopted on Virtual Machine #1 is applicable to the congestion control requirements corresponding to the data transmission of Service Type #1, and the congestion control algorithm adopted on Virtual Machine #2 is applicable to the congestion control requirements corresponding to the data transmission of Service Type #2. By deploying multiple virtual machines in the same server, the same server can meet the different congestion control requirements corresponding to the data transmission of multiple service types.

[0106] It should be understood that based on the introduction of the above Solution 1 and Solution 2, during the implementation of the above solutions, it is necessary to make a deployment plan in advance according to the service types to be deployed during service deployment, which thus limits the flexibility of service deployment. Combining Figure 3 , assuming that the load of Service Type #1 reaches 95% of Virtual Machine #1, at this time, no new service can be deployed on Virtual Machine #1; while the load of Service #2 reaches 10% of Virtual Machine #2, and there is still a large margin in Virtual Machine #2 here, resulting in the inability of the pre-configured service types to be flexibly scheduled according to the real-time deployment of service types. In addition, if a new service type (for example: Service Type #3) needs to be deployed here, the system must expand the server or adjust the virtual machine resource allocation, resulting in a relatively high cost.

[0107] According to the above existing technical problems, the present application provides a data transmission method, which enables the server and the terminal device to negotiate according to the service requirements / service scenarios of the terminal device, provides a suitable congestion control algorithm for the data of different service types, thereby improving the user experience. At the same time, it is ensured that the congestion control algorithm on the server can be flexibly adjusted according to different service types of the terminal device.

[0108] Figure 4 Is a schematic flowchart of data transmission provided by the present application. The method may include the following steps:

[0109] 401. The terminal device sends the first congestion control algorithm to the server.

[0110] Correspondingly, the server receives the first congestion control algorithm from the terminal device.

[0111] Wherein, the first congestion control algorithm is a control algorithm recommended by the terminal device according to the first service type for compressing the data of the first service type.

[0112] As an example, assume that the service type to be transmitted by the terminal device is service type #1 (e.g., download service). The terminal device determines that the first congestion control algorithm is algorithm #1 (e.g., CUBIC algorithm) according to service type #1; assume that the service type to be transmitted by the terminal device is service type #2 (e.g., voice call service). The terminal device determines that the first congestion control algorithm is algorithm #2 (e.g., BBR algorithm) according to service type #2.

[0113] 402. The server sends the first information to the terminal device.

[0114] Correspondingly, the server receives the first information from the terminal device.

[0115] Wherein, the first information is used to indicate that the server supports the first congestion control algorithm.

[0116] It should be understood that the server receives the first congestion control algorithm from the terminal device. The server determines that it supports the first congestion control algorithm and sends the first information to the terminal device. The first information is used to indicate to the terminal device that the server supports the first congestion control algorithm.

[0117] As an example, assume that the congestion control algorithms supported by the server include algorithm #A, algorithm #B, and algorithm #C. The first congestion control algorithm recommended by the terminal device according to the first service type for compressing the data of the first service type is algorithm #A, and algorithm #A meets the data transmission requirements of the first service type. After the server receives algorithm #A from the terminal device, it determines that algorithm #A among the algorithms #A, #B, and #C supported by the server includes the algorithm #A sent by the terminal device and sends the first information to the terminal device.

[0118] 403. The server transmits the data of the first service type to the terminal device according to the first congestion control algorithm.

[0119] Correspondingly, the terminal device receives the data of the first service type transmitted by the server according to the first congestion control algorithm.

[0120] It should be understood that the first congestion control algorithm is used for the server to transmit the data of the first service type to the terminal device.

[0121] It should be understood that based on the above Figure 4 method shown, as Figure 5 shown, assuming that the congestion control algorithms supported by the server include: Algorithm #1, Algorithm #2, and Algorithm #3. The congestion control algorithm recommended by the terminal device for compressing and processing data of service type #1 is Algorithm #1, and the congestion control algorithm recommended by the terminal device for compressing and processing data of service type #2 is Algorithm #2. Terminal device A sends Algorithm #1 corresponding to service #1 to the server, and terminal device B sends Algorithm #2 for service #2 to the server. The server determines to use Algorithm #1 to transmit data of service type #1 with terminal device A and use Algorithm #2 to transmit data of service type #2 with terminal device B based on Algorithm #1 sent by terminal device A, Algorithm #2 sent by terminal device B, and its own supported congestion control algorithms (Algorithm #1, Algorithm #2, and Algorithm #3). This realizes that the server adaptively uses congestion control algorithms for different service types to ensure the transmission performance of data and improve the user experience.

[0122] According to the method provided in this application, between the terminal device and the server, through a negotiation method, the congestion control algorithm for transmitting data of the first service type of the terminal device is determined, avoiding the server itself determining the congestion control algorithm for transmitting data of the first service type of the terminal device, and at the same time avoiding the server using the same congestion control algorithm to transmit data of multiple different service types. In this method, the server can select a suitable congestion control algorithm for data of different service types according to the congestion control algorithm recommended by the terminal device for compressing and processing data of the service type, ensuring the transmission performance of data of the service type and improving the user experience.

[0123] Figure 6 is another flowchart of data transmission provided by an embodiment of this application. The method may include the following steps:

[0124] 601. The terminal device sends a second congestion control algorithm to the server.

[0125] Correspondingly, the server receives the second congestion control algorithm from the terminal device.

[0126] Wherein, the second congestion control algorithm is a control algorithm recommended by the terminal device according to the second service type for compressing and processing data of the second service type.

[0127] It should be understood that step 601 is similar to step 401 in the above Figure 4 , and specific examples can refer to the specific introduction in the above Figure 4 .

[0128] 602. The server sends the second information to the terminal device.

[0129] Correspondingly, the server receives the second information from the terminal device.

[0130] Wherein, the second information is used to indicate that the server does not support the second congestion control algorithm.

[0131] It should be understood that when the server receives the second congestion control algorithm from the terminal device and determines that it does not support the second congestion control algorithm, the server sends the second information to the terminal device. The second information is used to indicate to the terminal device that the server does not support the second congestion control algorithm.

[0132] As an example, assume that the congestion control algorithms supported by the server include Algorithm #A, Algorithm #B, and Algorithm #C, and the first congestion control algorithm recommended by the terminal device for compressing and processing data of the second service type according to the second service type is Algorithm #D, and Algorithm #D meets the data transmission requirements of the second service type. After the server receives Algorithm #D from the terminal device and determines that Algorithm #D sent by the terminal device is not included in Algorithm #A, Algorithm #B, and Algorithm #C supported by the server, the server sends the second information to the terminal device to indicate that the server does not support Algorithm #D.

[0133] 603. The server transmits data of the second service type to the terminal device according to the third congestion control algorithm.

[0134] Correspondingly, the terminal device receives the data of the second service type transmitted by the server according to the third congestion control algorithm.

[0135] It should be understood that the third congestion control algorithm is different from the second congestion control algorithm, and the third congestion control algorithm is used for the server to transmit data of the second service type to the terminal device. The third congestion control algorithm is a congestion control algorithm supported by the server itself. Optionally, the third congestion control algorithm is a system-predefined or server-default congestion control algorithm for transmitting data of the second service type.

[0136] It should be understood that in step 603, the server transmits data of the second service type to the terminal device through the third congestion control algorithm, which is similar to the server transmitting data of the first service type to the terminal device through the first congestion control algorithm in step 403 above. For specific details, please refer to the Figure 4 specific description above.

[0137] It should also be understood that the above Figure 4 and Figure 6In the method shown, the terminal device sends the congestion control algorithm recommended according to the service type for compressing and processing data of the service type to the server. The server determines whether it supports the congestion control algorithm recommended by the terminal device and feeds back to the terminal device whether it supports the congestion control algorithm recommended by the terminal device. If the server supports the congestion control algorithm recommended by the terminal device, the server transmits data of the corresponding service type with the terminal device according to the congestion control algorithm recommended by the terminal device; if the server does not support the congestion control algorithm recommended by the terminal device, the server transmits data of the service type corresponding to the terminal device with the terminal device according to the congestion control algorithm it supports.

[0138] It should also be understood that Figure 4 and Figure 6 In the method shown, to facilitate understanding by those skilled in the art of the case where the server supports the congestion control algorithm recommended by the terminal device for compressing and processing service data, and the case where the server does not support the congestion control algorithm recommended by the terminal device for compressing and processing service data, where Figure 4 and Figure 6 the steps shown are not distinguished by the order of execution, that is, in the actual application scenario, Figure 6 the method shown can be executed before Figure 4 the method shown, or, Figure 4 the method shown is executed before Figure 6 the method shown, or, Figure 6 and Figure 4 the methods shown are executed simultaneously, and this application does not make any limitations in this regard.

[0139] It should also be understood that based on the above Figures 4 to 6 shown method, when negotiating the congestion control algorithm corresponding to the data of the service type between the terminal device and the server, it can be negotiated during the TCP three-way handshake process, that is, steps 401 to 402, and the signaling interaction of steps 601 and 602 during the TCP three-way handshake between the terminal device and the server.

[0140] As an example, during the handshake process of establishing a TCP connection, the first congestion control algorithm of the terminal device can be carried in the signaling (such as SYN frame) of the first handshake interaction between the terminal device and the server. For example, during the process of the terminal device initiating the connection establishment, the terminal device can carry the "first congestion control algorithm" through the TCP option in the SYN frame, thereby realizing the transmission of the first congestion control algorithm; the first information / second information of the server can be carried during the second handshake process between the server and the terminal device, that is, after the server receives the SYN frame from the terminal device for the connection establishment request, it obtains the "first congestion control algorithm" of the terminal device from the TCP option, and determines that it supports the first congestion control algorithm according to its own capabilities, and carries the "first TCP congestion control algorithm" through the TCP option in the SYN_ACK frame to indicate that the server supports the first congestion control algorithm. During the process of establishing a TCP connection, after the terminal device receives the SYN_ACK frame from the server, the terminal device sends an acknowledgment packet ACK (ack = y + 1) to the server, and the terminal device and the server enter the established state, completing the three-way handshake. Correspondingly, the server transmits data of the first service type to the terminal device according to the first congestion control algorithm.

[0141] As another example, during the handshake process of establishing a TCP connection, the second congestion control algorithm of the terminal device can be carried in the signaling (such as SYN frame) of the first handshake interaction between the terminal device and the server. For example, during the process of the terminal device initiating the connection establishment, the terminal device can carry the "second congestion control algorithm" through the TCP option in the SYN frame, thereby realizing the transmission of the second congestion control algorithm; the second information of the server can be carried during the second handshake process between the server and the terminal device, that is, after the server receives the SYN frame from the terminal device for the connection establishment request, it obtains the "second congestion control algorithm" of the terminal device from the TCP option, and determines that it does not support the second congestion control algorithm according to its own capabilities, and carries the "third TCP congestion control algorithm" through the TCP option in the SYN_ACK frame to indicate that the server does not support the second congestion control algorithm. During the process of establishing a TCP connection, after the terminal device receives the SYN_ACK frame from the server, the terminal device sends an acknowledgment packet ACK (ack = y + 1) to the server, and the terminal device and the server enter the established state, completing the three-way handshake. Correspondingly, the server transmits data of the first service type to the terminal device according to the third congestion control algorithm.

[0142] Among them, between the terminal device and the server, during the process of establishing a TCP connection, congestion control algorithms (such as the first congestion control algorithm and the second congestion control algorithm) proposed by the terminal device for compressing service data are interacted. The first congestion control algorithm, the second congestion control algorithm, and the third congestion control algorithm can be embodied in the corresponding frame structure in the form of bits.

[0143] As an example, Figure 7 is an option format of a congestion control algorithm during the TCP connection establishment process. Among them, the Type and Len formats are the same as those of TCP options, and Value occupies two bytes of this format. Each bit in these two bytes can represent a congestion control algorithm.

[0144] As Figure 7 shown, the Value includes 16 bits, that is, the option format of the TCP congestion control algorithm can be used to indicate 16 TCP congestion control algorithms. Among them, the value of each bit in the Value can be used to indicate a congestion control algorithm. For example, these 16 bits respectively correspond to algorithm #1, algorithm #2, algorithm #3... algorithm #15, algorithm #16. The value of the bit being "1" indicates including the algorithm corresponding to this bit, and the value of the bit being "0" indicates not including the algorithm corresponding to this bit. For example, the value of these 16 bits in the option format of the TCP congestion control algorithm corresponding to the first congestion control algorithm is 0010001100000000, indicating that the first congestion control algorithm includes algorithm #3, algorithm #7, and algorithm #8. The value of these 16 bits in the option format of the TCP congestion control algorithm corresponding to the second congestion control algorithm is 0000000100000000, indicating that the second congestion control algorithm includes algorithm #8. The first service is transmitted between the terminal device and the server through algorithm #8.

[0145] It should be understood that the value of the bit being "0" in these 16 bits can represent including the algorithm corresponding to this bit, and the value of the bit being "1" can represent not including the algorithm corresponding to this bit. Similar to the above example, it will not be elaborated here.

[0146] It should also be understood that the number of bits included in the option format of the congestion control algorithm (such as 16) is predefined by the system or pre - defined by the protocol. The number of bits included in the option format can also be other values. This application only takes 16 as an example and has no limiting effect. Among them, the specific algorithm corresponding to each bit is pre - negotiated between the first communication device and the second communication device, or predefined by the system, or pre - defined by the protocol. This application does not make any limitations in this regard.

[0147] When information is exchanged between a terminal device and a server, a network device can serve as a pipeline communication device between the terminal device and the server, and is used to transfer the interaction information between the terminal device and the server.

[0148] As an example, the server receives a congestion control algorithm (such as algorithm #1) proposed by terminal device A for compressing data of service type #1, and a congestion control algorithm (such as algorithm #2) proposed by terminal device B for compressing data of service type #2. Assuming that the congestion control algorithms supported by the server include algorithm #1 and algorithm #2, the server sends algorithm #1 and algorithm #2 to terminal device A and terminal device B respectively. Among them, the server sends information indicating that the server supports algorithm #1 to terminal device A, and sends information indicating that the server supports algorithm #2 to terminal device B. The server transmits the data corresponding to service type #1 and the data corresponding to service type #2 to terminal device A and terminal device B through algorithm #1 and algorithm #2 respectively. When the server uses algorithm #1 and algorithm #2 to transmit service type data to terminal device A and terminal device B respectively, the network device can capture the data corresponding to algorithm #1 and algorithm #2. The network device selects a corresponding communication link (such as a downstream transmission link) according to the obtained algorithm #1 and algorithm #2. Assuming that the network device supports two communication links (such as communication link #1 and communication link #2), algorithm #1 corresponding to terminal device A is the CUBIC algorithm, and algorithm #2 corresponding to terminal device B is the BBR algorithm. Among them, communication link #1 mainly provides high-bandwidth transmission to meet the service requirements of large bandwidth, and communication link #2 provides low-latency transmission to meet the service requirements of low latency. The network device selects a corresponding communication link according to algorithm #1 and algorithm #2. For example, the network device transmits the relevant data traffic of algorithm #1 through communication link #1, and the network device transmits the relevant data traffic of algorithm #2 through communication link #2, thereby further improving the user's network experience.

[0149] It should be understood that assuming that the information interaction for negotiating the congestion control algorithm between the terminal device and the server is implemented during the three-way handshake of TCP, the network device can obtain the congestion control algorithm used by the server to transmit service type data to the terminal device during the TCP session, so that the network device can specifically perform traffic shaping and guarantee on the transmitted data, thereby further improving the user's network experience.

[0150] Based on the above method, an example of a congestion control algorithm for compressing and processing service type data recommended by a terminal device during the TCP connection establishment process between the terminal device and the server is introduced. The method in the embodiments of the present application is also applicable to the D2D scenario, where congestion control algorithms for transmitting data of different service types are negotiated through information interaction between terminal devices.

[0151] Suppose that the congestion control algorithm for transmitting Service #1 (e.g., video conferencing) of Device #1 is negotiated through information interaction between Device #1 and Device #2. Device #1 can act as Figure 4 the terminal device in the method shown, and Device #2 can act as Figure 4 the server in the method shown. Among them, Device #1 sends the first information carrying the first congestion control algorithm corresponding to Service #1 to Device #2. Device #2 determines the second congestion control algorithm based on the first congestion control algorithm received from Device #1 and sends it to Device #1. Service #1 is transmitted between Device #1 and Device #2 through the second congestion control algorithm.

[0152] Again, suppose that the congestion control algorithm for transmitting Service #2 (e.g., file transfer) of Device #2 is negotiated through information interaction between Device #1 and Device #2. Device #1 can act as Figure 4 the server in the method shown, and Device #2 can act as Figure 4 the terminal device in the method shown. Among them, Device #2 sends the first information carrying the first congestion control algorithm corresponding to Service #2 to Device #1. Device #1 determines the second congestion control algorithm based on the first congestion control algorithm received from Device #2 and sends it to Device #2. Service #2 is transmitted between Device #1 and Device #2 through the second congestion control algorithm.

[0153] Figure 8 It is a schematic block diagram of a communication device 800 provided by an embodiment of the present application. As Figure 8 shown, the device 800 may include a communication unit 810 and a processing unit 820. The communication unit 810 can communicate with the outside, and the processing unit 820 is used for data processing. The communication unit 810 can also be referred to as a communication interface or a transceiver unit.

[0154] In a possible design, the device 800 can implement the steps or processes corresponding to those executed by the terminal device in the above method embodiments. Among them, the processing unit 820 is used to execute the processing-related operations of the terminal device other than the transceiver operations in the above method embodiments, and the communication unit 810 is used to execute the sending-related operations of the terminal device in the above method embodiments.

[0155] A communication unit 810 is configured to send a first congestion control algorithm to a server. The first congestion control algorithm is a congestion control algorithm recommended by a terminal device according to a first service type for compressing data of the first service type. The communication unit 810 is further configured to receive first information from the server, where the first information is used to indicate that the server supports the first congestion control algorithm. The communication unit 810 is further configured to receive data of the first service type transmitted from the server according to the first congestion control algorithm.

[0156] In another possible design, the apparatus 800 can implement the steps or processes corresponding to those executed by the server in the foregoing method embodiments. Among them, the communication unit 810 is configured to perform the operations related to reception by the server in the foregoing method embodiments, and the processing unit 880 is configured to perform the operations related to processing by the server in the foregoing method embodiments.

[0157] A communication unit 810 (a transceiver unit) is configured to receive a first congestion control algorithm from a terminal device. The first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a first service type for compressing data of the first service type. The communication unit 810 is further configured to send first information to the terminal device, where the first information is used to indicate that the server supports the first congestion control algorithm. The communication unit 810 is further configured to send data of the first service type to the terminal device according to the first congestion control algorithm.

[0158] It should be understood that the apparatus 800 is embodied in the form of functional units here. The term "unit" here may refer to an application specific integrated circuit (ASIC), an electronic circuit, a processor (such as a shared processor, a dedicated processor, or a group of processors, etc.) for executing one or more software or firmware programs, a memory, a combined logic circuit, and / or other suitable components supporting the described functions. In an alternative example, those skilled in the art can understand that the apparatus 800 may specifically be the terminal device in the foregoing embodiments and can be used to execute each process and / or step corresponding to the terminal device in the foregoing method embodiments. Alternatively, the apparatus 800 may specifically be the server in the foregoing embodiments and can be used to execute each process and / or step corresponding to the server in the foregoing method embodiments. To avoid repetition, details are not described herein again.

[0159] The apparatus 800 in each of the above solutions has the function of implementing the corresponding steps performed by the terminal device in the above method, or the apparatus 800 in each of the above solutions has the function of implementing the corresponding steps performed by the server in the above method, or the apparatus 800 in each of the above solutions has the function of implementing the corresponding steps performed by the network device in the above method. The function can be implemented by hardware or by hardware executing corresponding software. The hardware or software includes one or more modules corresponding to the above functions; for example, the communication unit can be replaced by a transceiver (for example, the sending unit in the communication unit can be replaced by a transmitter, and the receiving unit in the communication unit can be replaced by a receiver), and other units, such as the processing unit, can be replaced by a processor to respectively perform the transceiver operations and related processing operations in each method embodiment.

[0160] In addition, the above communication unit can also be a transceiver circuit (for example, it can include a receiving circuit and a sending circuit), and the processing unit can be a processing circuit. In the embodiments of the present application, Figure 4 、 Figure 6 the apparatus in can be the terminal device, server, network device in the foregoing embodiments, or can be a chip or a chip system, for example: a system on chip (SoC). Among them, the communication unit can be an input / output circuit, a communication interface; the processing unit is a processor, microprocessor or integrated circuit integrated on the chip. This is not limited herein.

[0161] Figure 9 FIG. is a schematic block diagram of a communication apparatus 900 provided in an embodiment of the present application. The apparatus 900 includes a processor 910 and a transceiver 920. Among them, the processor 910 and the transceiver 920 communicate with each other through an internal connection path, and the processor 910 is used to execute instructions to control the transceiver 920 to send signals and / or receive signals.

[0162] Optionally, the apparatus 900 may further include a memory 930, and the memory 990 communicates with the processor 910 and the transceiver 920 through an internal connection path. The memory 990 is used to store instructions, and the processor 910 can execute the instructions stored in the memory 930. In one possible implementation manner, the apparatus 900 is used to implement each process and step corresponding to the terminal device in the above method embodiment. In another possible implementation manner, the apparatus 900 is used to implement each process and step corresponding to the server in the above method embodiment. In yet another possible implementation manner, the apparatus 900 is used to implement each process and step corresponding to the network device in the above method embodiment.

[0163] It should be understood that the device 900 may specifically be the terminal device, server, or network device in the above embodiments, or may also be a chip or a chip system. Correspondingly, the transceiver 920 may be the transceiver circuit of the chip, which is not limited herein. Specifically, the device 900 may be used to execute each step and / or process corresponding to the terminal device, server, or network device in the above method embodiments. Optionally, the memory 930 may include a read-only memory and a random access memory, and provide instructions and data to the processor. A part of the memory may also include a non-volatile random access memory. For example, the memory may also store information about the device type. The processor 910 may be used to execute the instructions stored in the memory, and when the processor 910 executes the instructions stored in the memory, the processor 910 is used to execute each step and / or process of the above method embodiments corresponding to the terminal device, server, or network device.

[0164] In the implementation process, each step of the above method may be completed by the integrated logic circuit of the hardware in the processor or the instructions in the form of software. The steps of the method disclosed in combination with the embodiments of the present application may be directly embodied as being executed by the hardware processor, or executed by the combination of the hardware and software modules in the processor. The software module may be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, or an electrically erasable programmable memory, a register, etc. This storage medium is located in the memory, and the processor reads the information in the memory and combines its hardware to complete the steps of the above method. To avoid repetition, it will not be described in detail here.

[0165] It should be noted that the processor in the embodiments of the present application may be an integrated circuit chip with the ability to process signals. In the implementation process, each step of the above method embodiments may be completed by the integrated logic circuit of the hardware in the processor or the instructions in the form of software. The above processor may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components. The processor in the embodiments of the present application may implement or execute each method, step, and logic block diagram disclosed in the embodiments of the present application. The general-purpose processor may be a microprocessor or the processor may also be any conventional processor, etc. The steps of the method disclosed in combination with the embodiments of the present application may be directly embodied as being executed by the hardware decoding processor, or executed by the combination of the hardware and software modules in the decoding processor. The software module may be located in a mature storage medium in the art such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, or an electrically erasable programmable memory, a register, etc. This storage medium is located in the memory, and the processor reads the information in the memory and combines its hardware to complete the steps of the above method.

[0166] It can be understood that the memory in the embodiments of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Among them, the non-volatile memory can be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), or a flash memory. The volatile memory can be a random access memory (RAM), which is used as an external cache. By way of example but not limitation, many forms of RAM are available, such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), enhanced synchronous dynamic random access memory (ESDRAM), synchronous link dynamic random access memory (SLDRAM), and direct rambus random access memory (DR RAM). It should be noted that the memory of the systems and methods described herein is intended to include but not be limited to these and any other suitable types of memory.

[0167] It should be noted that when the processor is a general-purpose processor, DSP, ASIC, FPGA, or other programmable logic device, discrete gate or transistor logic device, or discrete hardware component, the memory (storage module) can be integrated in the processor. It should also be noted that the memory described herein is intended to include but not be limited to these and any other suitable types of memory.

[0168] In addition, the present application also provides a computer-readable storage medium, in which computer instructions are stored. When the computer instructions are run on a computer, the operations and / or processes executed by the first device or the second device in the method embodiments of the present application are executed.

[0169] The present application also provides a computer program product, which includes computer program code or instructions. When the computer program code or instructions are run on a computer, the operations and / or processes executed by the first device or the second device in the method embodiments of the present application are executed.

[0170] In addition, the present application further provides a communication system, including the first device or the second device in the embodiments of the present application.

[0171] It should also be noted that the memories described herein are intended to include, but are not limited to, these and any other suitable types of memories.

[0172] Those of ordinary skill in the art can realize that the units and algorithm steps of the examples described in combination with the embodiments disclosed herein can be implemented by electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are executed in a hardware or software manner depends on the specific application and design constraints of the technical solution. Professional technicians can use different methods to implement the described functions for each specific application, but such implementation should not be considered to exceed the scope of the present application. Those skilled in the art can clearly understand that for the convenience and brevity of description, the specific working processes of the systems, devices, and units described above can refer to the corresponding processes in the foregoing method embodiments, and will not be elaborated herein. In the several embodiments provided by the present application, it should be understood that the disclosed systems, devices, and methods can be implemented in other ways. For example, the device embodiments described above are merely illustrative. For example, the division of the units is only a logical function division, and there may be other division methods in actual implementation. For example, multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the couplings or direct couplings or communication connections shown or discussed with each other can be through some interfaces, and the indirect couplings or communication connections of the devices or units can be in electrical, mechanical, or other forms. The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they can be located in one place, or distributed to multiple network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of this embodiment. In addition, the functional units in the various embodiments of the present application can be integrated into one processing unit, or each unit can exist physically alone, or two or more units can be integrated into one unit.

[0173] When the above-mentioned functions are implemented in the form of software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, or a part of this technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the methods described in various embodiments of this application. The foregoing storage medium includes: various media that can store program codes, such as USB flash drives, mobile hard disks, ROM, RAM, magnetic disks, or optical discs.

[0174] As described above, the above is only the specific implementation manner of this application, but the protection scope of this application is not limited thereto. Any person skilled in the art within the technical scope disclosed by this application can easily think of changes or substitutions, which should all be covered within the protection scope of this application. Therefore, the protection scope of this application should be subject to the protection scope of the claims.

Claims

1. A method for data transmission, characterized in that, comprising: The terminal device sends a first congestion control algorithm to the server, and the first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the first service type for compressing the data of the first service type; The terminal device receives the first information from the server, and the first information is used to indicate that the server supports the first congestion control algorithm; The terminal device receives the data of the first service type transmitted from the server according to the first congestion control algorithm.

2. The method according to claim 1, characterized in that, The method further comprises: The terminal device sends a second congestion control algorithm to the server, and the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the second service type for compressing the data of the second service type, and the first service type is different from the second service type; The terminal device receives the second information from the server, and the second information is used to indicate that the server does not support the second congestion control algorithm; The terminal device receives the data of the second service type transmitted from the server according to the third congestion control algorithm, and the third congestion control algorithm is a congestion control algorithm supported by the server.

3. The method according to claim 1 or 2, characterized in that, The first congestion control algorithm and / or the second congestion control algorithm is carried in the SYN frame, and the first information and / or the second information is carried in the SYN_ACK frame.

4. The method according to claim 3, characterized in that, The first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

5. A method for data transmission, characterized in that, comprising: The server receives the first congestion control algorithm of the terminal device, and the first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the first service type for compressing the data of the first service type; The server sends the first information to the terminal device, and the first information is used to indicate that the server supports the first congestion control algorithm; The server sends the data of the first service type to the terminal device according to the first congestion control algorithm.

6. The method according to claim 5, characterized in that, The method further comprises: The server receives the second congestion control algorithm of the terminal device, and the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to the second service type for compressing the data of the second service type, and the first service type is different from the second service type; The server sends the second information to the terminal device, and the second information is used to indicate that the server does not support the second congestion control algorithm; The server sends data of the second service type to the terminal device according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

7. The method according to claim 5 or 6, wherein, the first congestion control algorithm and / or the second congestion control algorithm are carried in a SYN frame, and the first information and / or the second information are carried in a SYN_ACK frame.

8. The method according to claim 7, wherein, the first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

9. A communication device, wherein, comprising: a transceiver unit configured to send a first congestion control algorithm to a server, where the first congestion control algorithm is a congestion control algorithm recommended by a terminal device for compressing data of the first service type according to the first service type; the transceiver unit is further configured to receive first information from the server, where the first information is used to indicate that the server supports the first congestion control algorithm; the transceiver unit is further configured to receive data of the first service type transmitted from the server according to the first congestion control algorithm.

10. The device according to claim 9, wherein, the transceiver unit is further configured to send a second congestion control algorithm to the server, where the second congestion control algorithm is a congestion control algorithm recommended by the terminal device for compressing data of the second service type according to the second service type, and the first service type is different from the second service type; the transceiver unit is further configured to receive second information from the server, where the second information is used to indicate that the server does not support the second congestion control algorithm; the transceiver unit is further configured to receive data of the second service type transmitted from the server according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

11. The device according to claim 9 or 10, wherein, the first congestion control algorithm and / or the second congestion control algorithm are carried in a SYN frame, and the first information and / or the second information are carried in a SYN_ACK frame.

12. The device according to claim 11, wherein, the first bit in the SYN frame is used to indicate the first congestion control algorithm, the second bit in the SYN frame is used to indicate the second congestion control algorithm, the third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and the fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

13. A communication device, wherein, comprising: A transceiver unit, configured to receive a first congestion control algorithm of a terminal device, where the first congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a first service type for compressing data of the first service type; The transceiver unit is further configured to send first information to the terminal device, where the first information is used to indicate that the server supports the first congestion control algorithm; The transceiver unit is further configured to send data of the first service type to the terminal device according to the first congestion control algorithm.

14. The apparatus according to claim 13, wherein, The transceiver unit is further configured to receive a second congestion control algorithm of the terminal device, where the second congestion control algorithm is a congestion control algorithm recommended by the terminal device according to a second service type for compressing and processing data of the second service type, and the first service type is different from the second service type; The transceiver unit is further configured to send second information to the terminal device, where the second information is used to indicate that the server does not support the second congestion control algorithm; The transceiver unit is further configured to send data of the second service type to the terminal device according to a third congestion control algorithm, where the third congestion control algorithm is a congestion control algorithm supported by the server.

15. The apparatus according to claim 13 or 14, wherein, The first congestion control algorithm and / or the second congestion control algorithm is carried in a SYN frame, and the first information and / or the second information is carried in a SYN_ACK frame.

16. The apparatus according to claim 15, wherein, A first bit in the SYN frame is used to indicate the first congestion control algorithm, a second bit in the SYN frame is used to indicate the second congestion control algorithm, a third bit in the SYN_ACK frame is used to indicate the first congestion control algorithm, and a fourth bit in the SYN_ACK frame is used to indicate the third congestion control algorithm.

17. A communication apparatus, wherein, Comprising: A processor, configured to execute a computer program to cause the communication apparatus to execute the method according to any one of claims 1 to 4, or execute the method according to any one of claims 5 to 8.

18. The apparatus according to claim 17, wherein, The communication apparatus further comprises a memory, the memory is coupled to the processor, and the memory stores the computer program.

19. A computer-readable storage medium, wherein, The computer-readable storage medium stores a computer program, and when the computer program runs on a computer, it causes the computer to execute the method according to any one of claims 1 to 4, or execute the method according to any one of claims 5 to 8.

20. A computer program product, wherein, The computer program product includes a computer program or instruction for executing the method according to any one of claims 1 to 4, or a computer program or instruction for executing the method according to any one of claims 5 to 8.