Data transmission method, device, equipment, system and storage medium

By allocating independent connection resources in the QUIC protocol and supporting TCP-to-QUIC switching, the problem of poor data transmission performance in weak network environments is solved, enabling fast response and high throughput for real-time services and improving user experience.

CN121750737APending Publication Date: 2026-03-27HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-09-27
Publication Date
2026-03-27

AI Technical Summary

Technical Problem

In existing communication technologies, data transmission performance is poor in weak network environments, especially during file interaction. Data transmission for real-time services is affected by non-real-time services, resulting in high latency and low throughput, which cannot meet users' real-time interaction needs.

Method used

It uses the QUIC protocol for data transmission and allocates independent connection resources for different service types. Through the multi-stream characteristics of QUIC connections, it manages the data transmission of real-time and non-real-time services separately, avoiding serial transmission and flow control interference, and supports protocol switching from TCP to QUIC.

Benefits of technology

It improves the resilience of data transmission against weak networks, ensures rapid response of real-time services, enhances user experience, reduces latency, and increases throughput.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121750737A_ABST
    Figure CN121750737A_ABST
Patent Text Reader

Abstract

The invention discloses a data transmission method, device, equipment and system and a storage medium, and relates to the technical field of communication. Taking a first device to execute the method as an example, the first device sends first data to a second device through a first connection resource, the first data being data of a real-time service, and the first connection resource being a connection resource allocated to the real-time service in a QUIC connection between the first device and the second device; the first device sends second data to the second device through a second connection resource, the second data is data of a non-real-time service, the second connection resource is a connection resource allocated to the non-real-time service in the QUIC connection, and the first connection resource and the second connection resource are not overlapped. According to the method, differentiated transmission can be achieved for data of different service types, better guarantee is provided for real-time transmission of data of real-time services, and the data transmission performance 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 technology, and in particular to data transmission methods, apparatus, devices, systems and storage media. Background Technology

[0002] In the field of communication technology, data transmission is required between two communication ends. Therefore, how to improve data transmission performance is an urgent problem to be solved. Summary of the Invention

[0003] This application provides a data transmission method, apparatus, device, system, and storage medium for improving data transmission performance.

[0004] Firstly, a data transmission method is provided. Taking a first device executing the method as an example, the first device sends first data to a second device through a first connection resource. The first data is real-time service data. The first connection resource is a connection resource allocated to real-time services in a Quick User Datagram Protocol Internet Connection (QUIC) connection between the first device and the second device. The first device sends second data to the second device through a second connection resource. The second data is non-real-time service data. The second connection resource is a connection resource allocated to non-real-time services in a QUIC connection. The first connection resource and the second connection resource do not overlap.

[0005] This method transmits data via QUIC connections. Since QUIC supports sending multiple streams in parallel on a single connection, it reduces transmission latency and increases throughput, improving data transmission resilience against weak network conditions. Furthermore, it enables differentiated transmission for different service types, allocating dedicated connection resources for real-time service data. This ensures that real-time service data transmission is unaffected by non-real-time service data transmission, preventing non-real-time service data transmission from completely overwhelming the QUIC connection's flow control. This provides better assurance for the real-time transmission of real-time service data and improves data transmission performance.

[0006] In one possible implementation, the first device sending first data to the second device via a first connection resource may include: sending the first data to the second device via the first connection resource based on a first sending window, wherein the first sending window is determined based on a first receiving window of the second device, and the first receiving window is determined by the second device based on the remaining buffer space used for receiving data for real-time services; the first device sending second data to the second device via a second connection resource may include: sending the second data to the second device via a second connection resource based on a second sending window, wherein the second sending window is determined based on a second receiving window of the second device, and the second receiving window is determined by the second device based on the remaining buffer space used for receiving data for non-real-time services.

[0007] In this method, the buffer space of the second device for receiving real-time service data is independent of the buffer space for receiving non-real-time service data. This makes the sending window of the first device for sending real-time service data independent of the sending window for sending non-real-time service data. This avoids the non-real-time service data from completely crowding out the sending window of the QUIC connection, and better avoids the impact of the transmission of non-real-time service data on the transmission of real-time service data.

[0008] In one possible implementation, the method further includes: a first device sending an access request to an access gateway; and receiving protocol parameter configuration sent by the access gateway based on the access request, the protocol parameter configuration indicating first connection resources and real-time services. Thus, the first device can obtain the configured first connection resources and real-time services through the access gateway, and thereby ensure the real-time transmission of data for real-time services based on the first connection resources and real-time services.

[0009] In one possible implementation, the method further includes: when data transmission between the first device and the second device is performed via Transmission Control Protocol (TCP), the first device and the second device switch from TCP to QUIC. This method supports protocol switching from TCP to QUIC, providing a foundation for data transmission via a QUIC connection.

[0010] In one possible implementation, the method by which the first device and the second device switch from TCP to QUIC includes: the first device sending a Secure File Transfer Protocol (SFTP) initialization message to the second device, wherein the extended field of the SFTP initialization message carries a QUIC identifier; and receiving an SFTP response message sent by the second device, wherein the extended field of the SFTP response message carries a QUIC identifier. The QUIC identifier is used by the first and second devices to switch from TCP to QUIC. By extending the existing SFTP initialization and response messages to carry the QUIC identifier, a simple and easy-to-implement protocol switching method is provided.

[0011] Secondly, a data transmission method is provided. Taking the execution of this method by a second device as an example, the second device receives first data sent by the first device through a first connection resource. The first data is real-time service data, and the first connection resource is the connection resource allocated to real-time services in the QUIC connection between the first device and the second device. The second device receives second data sent by the first device through a second connection resource. The second data is non-real-time service data, and the second connection resource is the connection resource allocated to non-real-time services in the QUIC connection. The first connection resource and the second connection resource do not overlap.

[0012] In one possible implementation, after the second device receives the first data sent by the first device through the first connection resource, it further includes: caching the first data in a first cache space, the first cache space being a cache space on the second device used for receiving real-time services; after the second device receives the second data sent by the first device through the second connection resource, it further includes: caching the second data in a second cache space, the second cache space being a cache space on the second device used for receiving data for non-real-time services.

[0013] In one possible implementation, the method further includes: when data transmission is performed between the second device and the first device via TCP, the second device and the first device switch TCP to QUIC.

[0014] In one possible implementation, the second device and the first device switch TCP to QUIC in the following manner: the second device receives an SFTP initialization message sent by the first device, the extended field of the SFTP initialization message carrying a QUIC identifier; and sends an SFTP response message to the first device, the extended field of the SFTP response message carrying a QUIC identifier, the QUIC identifier being used by the second device and the first device to switch TCP to QUIC.

[0015] In either the first or second aspect, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

[0016] In either the first or second possible implementation, the first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, indicating that the first data in the first stream frame is real-time service data. The second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, indicating that the second data in the second stream frame is non-real-time service data. Thus, by encapsulating type identifiers, both the sending and receiving ends can identify the type of data.

[0017] In either the first or second possible implementation, the first device is a cloud phone client and the second device is a cloud phone server; or, the first device is a cloud phone server and the second device is a cloud phone client. This allows the method to be applied to file interaction in cloud phone scenarios.

[0018] Thirdly, a data transmission apparatus is provided for executing the method in the first aspect or any possible implementation thereof, or for executing the method in the second aspect or any possible implementation thereof. Specifically, the data transmission apparatus includes a module for executing the method in the first aspect or any possible implementation thereof, or the data transmission apparatus includes a module for executing the method in the second aspect or any possible implementation thereof.

[0019] When the data transmission apparatus is used to perform the method in the first aspect or any possible implementation of the first aspect, the data transmission apparatus is applied to the first apparatus, and the data transmission apparatus includes a transmitting module.

[0020] In one possible implementation, the sending module is configured to send first data to the second device via a first connection resource, wherein the first data is real-time service data and the first connection resource is a connection resource allocated to real-time services in the QUIC connection between the first device and the second device; and to send second data to the second device via a second connection resource, wherein the second data is non-real-time service data and the second connection resource is a connection resource allocated to non-real-time services in the QUIC connection, wherein the first connection resource and the second connection resource do not overlap.

[0021] In one possible implementation, the sending module is configured to send first data to the second device via a first connection resource based on a first sending window, the first sending window being determined based on a first receiving window of the second device, which is determined by the second device based on the remaining buffer space used for receiving data for real-time services; and to send second data to the second device via a second connection resource based on a second sending window, the second sending window being determined based on a second receiving window of the second device, which is determined by the second device based on the remaining buffer space used for receiving data for non-real-time services.

[0022] In one possible implementation, the sending module is further configured to send an access request to the access gateway; the apparatus further includes a receiving module configured to receive protocol parameter configuration sent by the access gateway based on the access request, the protocol parameter configuration indicating first connection resources and real-time services.

[0023] In one possible implementation, the device further includes a switching module for switching TCP to QUIC when data is transmitted between the first device and the second device via TCP.

[0024] In one possible implementation, the switching module is configured to send an SFTP initialization message to the second device, the extended field of which carries a QUIC identifier; and to receive an SFTP response message sent by the second device, the extended field of which carries a QUIC identifier, the QUIC identifier being used by the first device and the second device to switch TCP to QUIC.

[0025] In one possible implementation, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

[0026] In one possible implementation, first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, which indicates that the first data in the first stream frame is real-time service data. Second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, which indicates that the second data in the second stream frame is non-real-time service data.

[0027] In one possible implementation, the first device is a cloud phone client, or the first device is a cloud phone server.

[0028] When the data transmission device is used to perform the method in the second aspect or any possible implementation of the second aspect, the data transmission device is applied to the second device, and the data transmission device includes a receiving module.

[0029] In one possible implementation, the receiving module is configured to receive first data sent by the first device through a first connection resource, wherein the first data is real-time service data and the first connection resource is a connection resource allocated to real-time services in a QUIC connection between the first device and the second device; and to receive second data sent by the first device through a second connection resource, wherein the second data is non-real-time service data and the second connection resource is a connection resource allocated to non-real-time services in a QUIC connection, wherein the first connection resource and the second connection resource do not overlap.

[0030] In one possible implementation, the device further includes: a caching module for caching first data in a first cache space, the first cache space being a cache space on the second device for receiving real-time services; and caching second data in a second cache space, the second cache space being a cache space on the second device for receiving data from non-real-time services.

[0031] In one possible implementation, the device further includes a switching module for switching TCP to QUIC when data is transmitted between the second device and the first device via TCP.

[0032] In one possible implementation, the switching module is configured to receive an SFTP initialization message sent by the first device, wherein the extended field of the SFTP initialization message carries a QUIC identifier; and to send an SFTP response message to the first device, wherein the extended field of the SFTP response message carries a QUIC identifier, the QUIC identifier being used by the second device to switch TCP to QUIC with the first device.

[0033] In one possible implementation, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

[0034] In one possible implementation, first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, which indicates that the first data in the first stream frame is real-time service data. Second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, which indicates that the second data in the second stream frame is non-real-time service data.

[0035] In one possible implementation, the second device is a cloud phone server, or the second device is a cloud phone client.

[0036] Fourthly, a data transmission device is provided, comprising: a processor coupled to a memory, the memory storing at least one program instruction or code, the at least one program instruction or code being loaded and executed by the processor to enable the data transmission device to implement the data transmission method as described in either the first or second aspect above.

[0037] Optionally, the processor may be one or more, and the memory may be one or more.

[0038] Optionally, the memory may be integrated with the processor, or the memory may be separated from the processor.

[0039] In the specific implementation process, the memory can be a non-transitory memory, such as read-only memory (ROM), which can be integrated with the processor on the same chip or set on different chips. This application does not limit the type of memory or the way the memory and processor are set.

[0040] Fifthly, a communication device is provided, comprising: a transceiver, a memory, and a processor. The transceiver, the memory, and the processor communicate with each other via an internal connection path. The memory stores instructions, and the processor executes the instructions stored in the memory to control the transceiver to receive signals and transmit signals. When the processor executes the instructions stored in the memory, the communication device performs a data transmission method according to the first aspect or any possible embodiment of the first aspect, or performs a data transmission method according to the second aspect or any possible embodiment of the second aspect.

[0041] In a sixth aspect, a data transmission system is provided, the data transmission system comprising a first device and a second device; the first device is configured to perform the data transmission method described in the first aspect or any possible embodiment of the first aspect, and the second device is configured to perform the data transmission method described in the second aspect or any possible embodiment of the second aspect.

[0042] In a seventh aspect, a computer-readable storage medium is provided, the storage medium storing at least one instruction, the instruction being loaded and executed by a processor to enable a computer to implement the data transmission method of the first aspect or any possible implementation thereof, or to implement the data transmission method of the second aspect or any possible implementation thereof.

[0043] Eighthly, a computer program (product) is provided, the computer program (product) comprising: computer program code, which, when executed by a computer, causes the computer to perform the data transmission methods described in the above aspects.

[0044] In a ninth aspect, a chip is provided, including a processor for retrieving and executing instructions stored in a memory, causing a device equipped with the chip to perform the data transmission methods described in the preceding aspects.

[0045] In a tenth aspect, another chip is provided, comprising: an input interface, an output interface, a processor, and a memory, wherein the input interface, the output interface, the processor, and the memory are connected via an internal connection path, and the processor is used to execute code in the memory, wherein when the code is executed, the processor is used to execute the data transmission methods in the above aspects.

[0046] It should be understood that the beneficial effects of the technical solutions of the second to tenth aspects of this application and the corresponding possible implementations can be referred to the above-described technical effects of the first aspect and its corresponding possible implementations, and will not be repeated here. Attached Figure Description

[0047] Figure 1 A schematic diagram illustrating the implementation environment of a data transmission method provided in this application embodiment;

[0048] Figure 2 A flowchart illustrating a data transmission method provided in an embodiment of this application;

[0049] Figure 3 A schematic diagram of a flow control quota for a QUIC connection provided in an embodiment of this application;

[0050] Figure 4 A schematic diagram illustrating the message format of an SFTP initialization message and an SFTP response message provided in an embodiment of this application;

[0051] Figure 5 This application provides an architectural diagram of a data transmission system in a cloud phone scenario.

[0052] Figure 6 An interactive schematic diagram illustrating a data transmission method in a cloud phone scenario provided in an embodiment of this application;

[0053] Figure 7 This is a schematic diagram of the structure of a data transmission device provided in an embodiment of this application;

[0054] Figure 8This is a schematic diagram of another data transmission device provided in an embodiment of this application;

[0055] Figure 9 This is a schematic diagram of the structure of a data transmission device provided in an embodiment of this application;

[0056] Figure 10 This is a schematic diagram of the structure of a server provided in an embodiment of this application. Detailed Implementation

[0057] To make the objectives, technical solutions, and advantages of this application clearer, the embodiments of this application will be described in further detail below with reference to the accompanying drawings.

[0058] With the development of communication technology, the requirements for data transmission performance are becoming increasingly stringent. Taking data transmission during file interaction as an example, the demand for file interaction between clients and servers is growing. For instance, clients need to frequently access files on the server. In cloud phone scenarios, virtual phones on servers need to access files on real phones. For example, image applications (APPs) running on virtual phones need to read and write images on real phones. The virtual phone is the server, and the real phone is the client.

[0059] In related technologies, SFTP is used for file exchange and data transfer. SFTP is built on TCP and the Secure Shell (SSH) protocol, providing a secure connection for accessing or transferring files. Specifically, the File Transfer Protocol (FTP) or SFTP is used to implement file exchange and data transfer between the client and server. The data during file exchange includes file access operations and file data; file access operations include reading and writing.

[0060] Because FTP or SFTP's underlying data transfer protocol is based on TCP, and TCP performs poorly in weak network conditions, SFTP's file exchange performance is also weak in weak network environments. Furthermore, TCP is limited to a single data stream, and the packets within that stream are transmitted in order, meaning multiple files can only be exchanged serially. This results in higher latency and lower throughput for TCP in weak network conditions, causing users to experience lag or stuttering.

[0061] Furthermore, due to the limitations of the TCP protocol, all file transfers can only be performed serially. If packet loss occurs during the transfer of one file, it will block the transfer of other subsequent files, resulting in poor data transfer performance. This means it cannot differentiate between different data types, making it difficult to meet users' real-time interaction needs and impacting user experience. For example, in a cloud phone scenario, if a virtual phone is transferring file data and a user wants to browse or access other files, the serial transmission means that the user's request can only be responded to after the file data transfer is complete, resulting in an inability to quickly respond to the user's real-time interaction needs.

[0062] This application provides a data transmission method that uses the QUIC protocol for data transmission and can differentiate the transmission of data of different service types. See also Figure 1 , Figure 1 This is a schematic diagram illustrating an implementation environment for a data transmission method provided in this application. The implementation environment includes a first device 101 and a second device 102. The first device 101 and the second device 102 are connected wirelessly or via a wired connection, for example, directly connected via an Ethernet cable or optical fiber. This application does not limit the scenario in which the first device 101 and the second device 102 transmit data; for example, data transmission in an online chat scenario or in a file interaction scenario.

[0063] Taking data transmission in a file interaction scenario as an example, when the first device 101 and the second device 102 interact with each other, and the distance between the first device 101 and the second device 102 is relatively far, the file interaction in this embodiment is a remote file interaction. Optionally, the first device 101 is the client and the second device 102 is the server, or the first device 101 is the server and the second device 102 is the client. For example, the first device 101 and the second device 102 perform file interaction data transmission based on FTP or SFTP.

[0064] In a cloud phone scenario, the cloud phone client corresponds to the real phone, while the cloud phone server corresponds to the virtual phone. The real phone integrates an app using the cloud phone software development kit (SDK). The SDK primarily provides the real phone with access and connectivity to the cloud phone scenario. The virtual phone runs on a server, providing the real phone with cloud phone instance resources and can run various apps. For example, when an image editing app running on the virtual phone needs to edit images, it needs to access the images on the real phone. In this case, the app can access the images on the real phone via FTP or SFTP.

[0065] It should be noted that the first or second device mentioned in the embodiments of this application can be a terminal or server, or a component of the device, such as a single board or line card on the device, or a functional module on the device, or a chip used to implement the method of this application. The embodiments of this application do not impose specific limitations. When the first or second device is a chip, the functional module used to implement the method can be, for example, the chip's interface circuit or a processing circuit with processing functions.

[0066] In this application embodiment, the terminal can be any electronic product capable of human-computer interaction with the user through one or more methods such as a keyboard, touchpad, touchscreen, remote control, voice interaction, or handwriting device. Examples include personal computers (PCs), smartphones, cameras, printers, personal digital assistants (PDAs), wearable devices, pocket PCs (PPCs), tablets, virtual reality (VR) terminal devices, augmented reality (AR) terminals, terminals in self-driving vehicles, remote medical surgery, smart grids, transportation safety, smart cities, smart homes, or IoT terminals, etc. The server can be a single server, a server cluster consisting of multiple servers, or a cloud computing service center.

[0067] Those skilled in the art should understand that the first device 101 and the second device 102 described above are merely examples. Other existing or future first devices 101 and second devices 102 that are applicable to this application should also be included within the scope of protection of this application, and are hereby incorporated by reference.

[0068] See Figure 2 , Figure 2 This is a flowchart illustrating a data transmission method provided in an embodiment of this application. Taking the interactive execution of this method by a first device and a second device as an example, the first device and the second device can be... Figure 1 The first device 101 and the second device 102 are shown. (As...) Figure 2 As shown, the data transmission method includes the following steps 201 and 202.

[0069] Step 201: The first device sends first data to the second device through the first connection resource. The first data is real-time service data. The first connection resource is the connection resource allocated to the real-time service in the QUIC connection between the first device and the second device. The second device sends second data to the second device through the second connection resource. The second data is non-real-time service data. The second connection resource is the connection resource allocated to the non-real-time service in the QUIC connection. The first connection resource and the second connection resource do not overlap.

[0070] In this embodiment, the first device and the second device transmit data via a QUIC connection. Furthermore, this embodiment differentiates the allocation of connection resources for the same QUIC connection, allocating first connection resources for real-time service data and second connection resources for non-real-time service data, enabling differentiated transmission of different types of data at the transport layer. Since the first and second connection resources do not overlap—that is, they are two independent resources—the transmission of different types of data is independent and does not affect each other. The connection resources of a QUIC connection can refer to the allowed data bandwidth or the number of channels, etc.

[0071] In the standard QUIC protocol, the use of multiplexing technology allows multiple data streams to be transmitted through a single QUIC connection, thereby reducing latency and increasing data throughput. This application embodiment defines the multiple streams of a QUIC connection differently; for example, the stream used to transmit data for real-time services is designated as the first stream, and the stream used to transmit data for non-real-time services is designated as the second stream. Optionally, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream, and the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream. In this application embodiment, the maximum number of first streams and the maximum flow control window for each first stream are referred to as the first flow control parameter, and the maximum number of second streams and the maximum flow control window for each second stream are referred to as the second flow control parameter. Alternatively, the first connection resource can be determined by the first flow control parameter, and the second connection resource can be determined by the second flow control parameter.

[0072] Therefore, sending first data through the first connection resource means sending first data through the first stream, and sending second data through the second connection resource means sending second data through the second stream. The first device manages the flow control of the first data transmission based on first flow control parameters; that is, the number of first streams sent by the first device for transmitting the first data cannot exceed the maximum number of first streams, and the size of each first stream sent by the first device cannot exceed the maximum flow control window size of each first stream. The second device manages the flow control of the second data transmission based on second flow control parameters; that is, the number of second streams sent by the second device for transmitting the second data cannot exceed the maximum number of second streams, and the size of each second stream sent by the second device cannot exceed the maximum flow control window size of each second stream. This ensures that the flow control management strategies of the first and second streams do not interfere with each other; that is, whether the first data can be sent is independent of the amount of second data transmitted.

[0073] For example, see Figure 3 The diagram illustrates the flow control quota for a QUIC connection. The total transmission channel between the first and second devices via the QUIC connection is divided into two parts: one part is allocated to the first stream for transmitting first data for real-time services, and the other part is allocated to the second stream for transmitting second data for non-real-time services. Even when the amount of non-real-time service data is large, and its transmission completely occupies the flow control window of the second stream, real-time service data can still be transmitted in real-time through the flow control window of the first stream, similar to a separate emergency lane on a highway.

[0074] The first flow control parameter is a new flow control parameter added for real-time services in this application embodiment. The second flow control parameter can be determined based on the original flow control parameters in the standard QUIC protocol and the first flow control parameter. In the standard QUIC protocol, the first device and the second device negotiate the maximum number of streams and the maximum flow control window for each stream during the establishment of a QUIC connection. That is, without distinguishing the data type transmitted by the stream, the maximum number of streams allowed by the QUIC connection and the maximum flow control window for each stream are determined. Then, flow control management of the QUIC connection is performed based on the maximum number of streams and the total flow control window for all streams.

[0075] This application extends the standard QUIC protocol by allocating a specific flow control window for the data transmission quota of real-time services. This window is defined as the maximum number of streams and the maximum flow control window for each stream. Based on the existing maximum number of streams and the maximum flow control window for each stream, as well as the newly configured maximum number of streams and the maximum flow control window for each stream, the maximum number of streams and the maximum flow control window for each stream can be determined. Furthermore, flow control management of QUIC connections is performed based on the maximum number of streams, the maximum flow control window for each stream, the maximum number of streams, and the maximum flow control window for each stream.

[0076] This application does not limit the method by which the first device obtains the first flow control parameters and real-time services. Optionally, the configuration can be manually or issued by a control terminal to the first device, or it can be obtained by the first device from the access gateway when accessing the network. Real-time services refer to data with high real-time requirements, abstracted from the perspective of real-time interactivity. For example, file access operations or at least one of high-priority files in a file interaction scenario. File access operations include, but are not limited to, creation or deletion operations, and high-priority files include, but are not limited to, text files. Non-real-time services are types other than real-time services. After obtaining the real-time services, non-real-time services can be determined by elimination. It can be understood that non-real-time service data is ordinary service data, and real-time service data is custom high-priority service data.

[0077] In one possible implementation, the first device further sends an access request to the access gateway; to receive protocol parameter configuration sent by the access gateway based on the access request. The protocol parameter configuration includes first flow control parameters and an identifier for real-time services, meaning the protocol parameter configuration can indicate first connection resources and real-time services. The access gateway is connected to both the first and second devices, and is used to provide resource scheduling management for the service provider and access allocation functions for the client.

[0078] For example, the first device corresponds to the client, and the second device corresponds to the server. After receiving the access request sent by the client, the access gateway authenticates the client. After successful authentication, it returns the scheduled server and corresponding protocol parameter configuration to the client according to the load balancing strategy. The protocol parameter configuration includes a first flow control parameter and an identifier for the real-time service. Taking file access operation as an example, the first stream can be called a signaling stream, and the second stream can be called a data stream. The protocol parameter configuration can include: signal_operation, initial_max_streams_signal (maximum number of allowed signaling streams), and initial_max_stream_data_signal (maximum flow control window for each signaling stream). Optionally, the protocol parameter configuration also includes a second flow control parameter, which is not limited in this embodiment.

[0079] In this embodiment, before the first device sends a stream to the second device via a QUIC connection, the first device establishes a QUIC connection with the second device. During the establishment of the QUIC connection, the first device configures the protocol parameters according to the access gateway. In the QUIC handshake phase, it negotiates parameters through the QUIC transport parameters field. If the parameter negotiation is successful, the QUIC connection is established. The QUIC transport parameters field is an existing field in the QUIC handshake message, used to negotiate custom parameters. This embodiment extends the use of the QUIC transport parameters field to implement the negotiation of newly added first flow control parameters and real-time service parameters.

[0080] In one possible implementation, the first device sending first data to the second device via a first connection resource may include: the first device sending the first data to the second device via the first connection resource based on a first sending window, the first sending window being determined based on a first receiving window of the second device, the first receiving window being determined by the second device based on the remaining buffer space used for receiving data for real-time services; the first device sending second data to the second device via a second connection resource may include: the first device sending second data to the second device via a second connection resource based on a second sending window, the second sending window being determined based on a second receiving window of the second device, the second receiving window being determined by the second device based on the remaining buffer space used for receiving data for non-real-time services.

[0081] In QUIC, flow control, or flow management, can be implemented using a sliding window mechanism. The sliding window mechanism defines a sending window and a receiving window. The sending window determines the maximum amount of data the sender can transmit, while the receiving window reflects the receiver's processing capacity. By dynamically adjusting the sizes of the sending and receiving windows, it can be ensured that the sender's transmission rate does not exceed the receiver's processing capacity, ensuring smooth data transmission and preventing data loss. For example, after receiving QUIC data, the receiver sends an acknowledgment (ACK) message to inform the sender of the size of the receiving window. The sender then adjusts the size of its sending window accordingly, thus matching the sender's data transmission rate with the receiver's processing capacity, preventing network congestion and data loss.

[0082] When the receiving end cannot process the received data, the unprocessed data needs to be placed in a buffer. If the receiving end's buffer is full, data sent by the sending end will be lost due to buffer overflow. Therefore, the remaining size of the receiving end's buffer reflects its processing capacity, and thus the size of the receiving window can be determined by the remaining size of the buffer. In this embodiment, the first receiving window can be determined by the second device based on the remaining buffer space used for receiving real-time service data, and the second receiving window can be determined by the second device based on the remaining buffer space used for receiving non-real-time service data.

[0083] In other words, the buffer space of the second device for receiving real-time service data is independent of the buffer space for receiving non-real-time service data. This makes the sending window of the first device for sending real-time service data independent of the sending window for sending non-real-time service data. This avoids the non-real-time service data from completely crowding out the sending window of the QUIC connection, and better avoids the impact of the transmission of non-real-time service data on the transmission of real-time service data.

[0084] In another possible implementation, flow control for QUIC connections can be extended beyond the type level of the first and second streams; it can also be implemented at the stream level for each first and second stream. For example, each first and second stream can include corresponding receive and transmit windows, allowing for finer-grained control through a sliding window mechanism for each stream.

[0085] In another possible implementation, flow control for QUIC connections can also be based on the QUIC connection level, where a QUIC connection corresponds to a sending window, and when the sending window size is limited, data for real-time services is prioritized for sending.

[0086] In this embodiment, data transmitted via QUIC connection is encapsulated in stream frames. Multiple stream frames form a data stream, and each stream is used to transmit data for a single service. This embodiment also encapsulates a type identifier within the extended stream frame. This type identifier indicates the type of data in the stream frame, specifically whether the data is for real-time or non-real-time services, and whether the stream to which the stream frame belongs is the first or second stream. Thus, by encapsulating the type identifier, both the sending and receiving ends can identify the data type.

[0087] In one possible implementation, the type identifier includes a first type identifier and a second type identifier. The first type identifier indicates that the first data in the first stream frame is real-time service data, and the second type identifier indicates that the second data in the second stream frame is non-real-time service data. The first data is encapsulated in the first stream frame for transmission, and the first stream frame also encapsulates the first type identifier; the second data is encapsulated in the second stream frame for transmission, and the second stream frame also encapsulates the second type identifier.

[0088] Optionally, the location of the type identifier in the stream frame is not limited in this embodiment. For example, the type identifier may be located in the type field of the stream frame. Thus, the type identifier is carried using the existing type field of the stream frame. That is, this embodiment extends the type field of the stream (frame) to include a type identifier used to distinguish whether it is a real-time service. Optionally, the stream frame may also include a stream identification (ID) field, with one stream ID corresponding to one stream.

[0089] For example, the format of a stream frame is shown below. In this embodiment, a bit identifier representing the type is added to the type field. If this bit is 1, for example, type(i) = 0x18..0x1F, then the data in the stream data(...) is real-time service data; if this bit is 0, for example, type(i) = 0x08..0x0f, then the data in the stream data(...) is non-real-time service data.

[0090]

[0091] In this embodiment, for scenarios where data transmission between the first and second devices is conducted via TCP, such as file interaction between the first and second devices based on SFTP, where SFTP's data transmission protocol is TCP, the first and second devices switch from TCP to QUIC. This method supports protocol switching from TCP to QUIC under SFTP, providing a foundation for file interaction via QUIC connections. This fully leverages the advantages of the QUIC protocol in multi-streaming and resistance to weak network conditions, enhancing the user's interactive experience for remote file access.

[0092] Optionally, the method for switching TCP to QUIC between the first and second devices may include: the first device sending an SFTP initialization message to the second device, the extended field of which carries a QUIC identifier; the second device receiving the SFTP initialization message from the first device, and if the second device supports QUIC, sending an SFTP response message to the first device, the extended field of which carries a QUIC identifier; and the first device receiving the SFTP response message from the second device. The QUIC identifier is used when both the first and second devices switch TCP to QUIC. By extending the existing SFTP initialization and response messages to carry the QUIC identifier, a simple and easy-to-implement protocol switching method is provided.

[0093] The protocol switching process can occur during the SFTP protocol initialization process of the first and second devices. This involves using the extension field in standard SFTP to switch the data transfer protocol for file interaction from TCP to QUIC through negotiation. For example, the message formats of the SFTP initialization message and the SFTP response message can be as follows: Figure 4 As shown, the SFTP initialization message includes a length field, an init field, a request ID field, a client version number field, and a QUIC version carried in the extension field. The SFTP response message differs from the SFTP initialization message in that the init field is replaced by the server version number field.

[0094] Step 202: The second device receives the first data sent by the first device through the first connection resource; and receives the second data sent by the second device through the second connection resource.

[0095] In this embodiment, the second device can determine a first receiving window based on the remaining buffer space used for receiving data for real-time services, and send the size of the first receiving window to the first device; and determine a second receiving window based on the remaining buffer space used for receiving data for non-real-time services, and send the size of the second receiving window to the first device. That is, the buffer space used by the second device for receiving data for real-time services and the buffer space used for receiving data for non-real-time services are independent of each other.

[0096] In one possible implementation, after the second device receives the first data sent by the first device through the first connection resource, it further includes: caching the first data in a first cache space, the first cache space being a cache space on the second device used for receiving real-time services; after the second device receives the second data sent by the first device through the second connection resource, it further includes: caching the second data in a second cache space, the second cache space being a cache space on the second device used for receiving data from non-real-time services.

[0097] Optionally, if a QUIC connection corresponds to a single receive window, meaning the buffer space used to receive real-time service data and the buffer space used to receive non-real-time service data are the same buffer space, then when the receive window is limited, priority is given to receiving real-time service data. Alternatively, if the buffer space includes both real-time and non-real-time service data, priority is given to processing real-time service data.

[0098] The following example illustrates the data transmission method provided in this application embodiment, using a cloud phone scenario as an example. Figure 5 This is a schematic diagram of the architecture of a data transmission system in a cloud phone scenario provided in an embodiment of this application. The data transmission system includes a cloud phone client, a cloud phone server, and a cloud phone access gateway. Optionally, the first device is a cloud phone client and the second device is a cloud phone server; or, the first device is a cloud phone server and the second device is a cloud phone client.

[0099] A cloud phone client refers to the cloud phone SDK integrated into a real mobile phone. The cloud phone SDK provides capabilities such as an access module, protocol configuration negotiation, an SFTP remote file module, and a QUIC protocol stack. The cloud phone access gateway primarily provides resource scheduling and management for the cloud phone server, as well as access allocation functions for the cloud phone client. The cloud phone server provides capabilities such as protocol configuration negotiation, the SFTP remote file module, and the QUIC protocol stack, enabling cloud phone clients to access cloud-side cloud phone instance resources and run various apps on the cloud. For example, protocol configuration negotiation is used to obtain protocol configuration parameters, the SFTP remote file module is used to switch between TCP and QUIC protocols, and the QUIC protocol stack is used for file interaction via a QUIC connection.

[0100] by Figure 5 Taking the data transmission system shown as an example, Figure 6 This is an interactive schematic diagram illustrating a data transmission method in a cloud phone scenario provided by an embodiment of this application. For example... Figure 6 As shown, after the cloud phone server goes online, it reports a heartbeat to the cloud phone access gateway for registration. Subsequently, the access gateway allocates and schedules servers for the accessing clients. The cloud phone client accesses the cloud phone access gateway for authentication. According to the load balancing strategy, the access gateway returns the allocated cloud phone server instance and the corresponding protocol parameter configuration to the cloud phone client, enabling the cloud phone client to obtain the cloud phone server and protocol parameter configuration.

[0101] During SFTP protocol initialization with the cloud phone server, the cloud phone client uses the `extension` field in standard SFTP to negotiate and switch the remote file system's data transfer protocol to QUIC. If the cloud phone server supports QUIC, it replies to the cloud phone client that the QUIC protocol switch was successful, and subsequent data transfer will use the QUIC connection. Otherwise, data transfer will continue according to the original TCP protocol. After a successful QUIC protocol switch, the cloud phone client negotiates parameters using QUIC transport parameters during the QUIC handshake phase, based on the protocol configuration parameters issued by the access gateway. Once the QUIC protocol handshake negotiation between the cloud phone client and the cloud phone server is successful, the QUIC connection is established.

[0102] The cloud phone client and cloud phone server transmit data during file interaction based on a QUIC connection, according to the negotiated protocol configuration parameters. This embodiment extends the `type` field in the existing stream frame by adding a signaling identifier bit, enabling the QUIC protocol stacks at both ends to distinguish between real-time and non-real-time services. This allows for differentiated flow control management for real-time and non-real-time streams, ensuring high-priority real-time data transmission and improving the user experience. For example, a separate flow control window is allocated for real-time data transmission to prevent non-real-time data transmission from completely crowding out the flow control of the QUIC connection, thus guaranteeing real-time data transmission. In other words, while adhering to the existing QUIC protocol's flow control management mechanism, this embodiment ensures that real-time data has an independently reserved flow control quantity and window, preventing it from being blocked by the flow control of non-real-time data.

[0103] In summary, this method addresses the poor performance of TCP-based SFTP in weak network conditions by extending SFTP to support QUIC protocol negotiation switching, thus improving its performance in weak network environments. To address the issue that QUIC protocol streams only have one type, preventing differentiated transmission of different data types, the method extends the type field in the stream frame to indicate the data type carried within the stream frame. This allows both sending and receiving ends to perform differentiated flow control management for different data types, ensuring real-time transmission of real-time business data, reducing latency and improving the user's real-time response experience. Furthermore, to address the problem that data transmission of ordinary non-real-time business data can completely overwhelm the flow control of the QUIC connection, causing delays in the transmission of real-time business data, a separate flow control window is allocated for real-time business data, and a separate transmission channel is opened to prevent interference from non-real-time business data on the transmission of real-time business data.

[0104] The data transmission method of this application has been described above. Corresponding to the above method, this application also provides a data transmission apparatus. This data transmission apparatus is capable of performing... Figure 2 The method described herein performs all or part of the operations. Specifically, the data transmission device is applied to the first device described above, and the data transmission device includes a module for performing all or part of the operations performed by the first device; or, the data transmission device is applied to the second device described above, and the data transmission device includes a module for performing all or part of the operations performed by the second device.

[0105] When the data transmission device is used in the first device, the structural diagram of the data transmission device is as follows: Figure 7 As shown. It should be understood that the device may include, but is not limited to, [other components]. Figure 7 The embodiments of this application do not limit the number of additional modules shown or the omission of some of the shown modules. Figure 7 As shown, the device includes: a transmitting module 701.

[0106] In one possible implementation, the sending module 701 is configured to send first data to the second device via a first connection resource, wherein the first data is real-time service data and the first connection resource is a connection resource allocated to real-time services in the QUIC connection between the first device and the second device; and to send second data to the second device via a second connection resource, wherein the second data is non-real-time service data and the second connection resource is a connection resource allocated to non-real-time services in the QUIC connection, wherein the first connection resource and the second connection resource do not overlap.

[0107] In one possible implementation, the sending module 701 is configured to send first data to the second device via a first connection resource based on a first sending window, the first sending window being determined based on a first receiving window of the second device, which is determined by the second device based on the remaining buffer space used for receiving data for real-time services; and to send second data to the second device via a second connection resource based on a second sending window, the second sending window being determined based on a second receiving window of the second device, which is determined by the second device based on the remaining buffer space used for receiving data for non-real-time services.

[0108] In one possible implementation, the sending module 701 is further configured to send an access request to the access gateway; the device further includes a receiving module configured to receive protocol parameter configuration sent by the access gateway based on the access request, the protocol parameter configuration indicating first connection resources and real-time services.

[0109] In one possible implementation, the device further includes a switching module for switching TCP to QUIC when data is transmitted between the first device and the second device via TCP.

[0110] In one possible implementation, the switching module is configured to send an SFTP initialization message to the second device, the extended field of which carries a QUIC identifier; and to receive an SFTP response message sent by the second device, the extended field of which carries a QUIC identifier, the QUIC identifier being used by the first device and the second device to switch TCP to QUIC.

[0111] In one possible implementation, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

[0112] In one possible implementation, first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, which indicates that the first data in the first stream frame is real-time service data. Second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, which indicates that the second data in the second stream frame is non-real-time service data.

[0113] In one possible implementation, the first device is a cloud phone client, or the first device is a cloud phone server.

[0114] When the data transmission device is used in the second device, the structural diagram of the data transmission device is as follows: Figure 8 As shown. It should be understood that the device may include, but is not limited to, [other components]. Figure 8 The embodiments of this application do not limit the number of additional modules shown or the omission of some of the shown modules. Figure 8 As shown, the device includes a receiving module 801.

[0115] In one possible implementation, the receiving module 801 is configured to receive first data sent by the first device through a first connection resource, wherein the first data is real-time service data and the first connection resource is a connection resource allocated to real-time services in the QUIC connection between the first device and the second device; and to receive second data sent by the first device through a second connection resource, wherein the second data is non-real-time service data and the second connection resource is a connection resource allocated to non-real-time services in the QUIC connection, wherein the first connection resource and the second connection resource do not overlap.

[0116] In one possible implementation, the device further includes: a caching module for caching first data in a first cache space, the first cache space being a cache space on the second device for receiving real-time services; and caching second data in a second cache space, the second cache space being a cache space on the second device for receiving data from non-real-time services.

[0117] In one possible implementation, the device further includes a switching module for switching TCP to QUIC when data is transmitted between the second device and the first device via TCP.

[0118] In one possible implementation, the switching module is configured to receive an SFTP initialization message sent by the first device, wherein the extended field of the SFTP initialization message carries a QUIC identifier; and to send an SFTP response message to the first device, wherein the extended field of the SFTP response message carries a QUIC identifier, the QUIC identifier being used by the second device to switch TCP to QUIC with the first device.

[0119] In one possible implementation, the first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

[0120] In one possible implementation, first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, which indicates that the first data in the first stream frame is real-time service data. Second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, which indicates that the second data in the second stream frame is non-real-time service data.

[0121] In one possible implementation, the second device is a cloud phone server, or the second device is a cloud phone client.

[0122] It should be understood that the above Figure 7 The device provided in example 8, which implements its functions, is only illustrated by the division of the above-mentioned functional modules. In practical applications, the functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above. In addition, the device and method embodiments provided in the above embodiments belong to the same concept, and their specific implementation process and beneficial effects are detailed in the method embodiments, which will not be repeated here.

[0123] See Figure 9 , Figure 9 A schematic diagram of the structure of a data transmission device 2000 provided in an exemplary embodiment of this application is shown. Figure 9 The data transmission device 2000 shown is used to perform the above. Figure 2 The data transmission method illustrated involves the following operations. The data transmission device 2000 is, for example, a switch, a router, etc., and can be implemented using a general bus architecture.

[0124] like Figure 9 As shown, the data transmission device 2000 includes at least one processor 2001, a memory 2003, and at least one communication interface 2004.

[0125] Processor 2001 may be, for example, a general-purpose central processing unit (CPU), a digital signal processor (DSP), a network processor (NP), a graphics processing unit (GPU), a neural network processing unit (NPU), a data processing unit (DPU), a microprocessor, or one or more integrated circuits for implementing the embodiments of this application. For example, processor 2001 includes application-specific integrated circuits (ASICs), programmable logic devices (PLDs), or other programmable logic devices, transistor logic devices, hardware components, or any combination thereof. A PLD may be, for example, a complex programmable logic device (CPLD), a field-programmable gate array (FPGA), generic array logic (GAL), or any combination thereof. It can implement or execute the various logic blocks, modules, and circuits described in connection with the embodiments of this invention. A processor may also be a combination that implements computational functions, such as a combination of one or more microprocessors, a combination of a DSP and a microprocessor, etc.

[0126] Optionally, the data transmission device 2000 also includes a bus. The bus is used to transfer information between the various components of the data transmission device 2000. The bus can be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus, etc. The bus can be divided into address bus, data bus, control bus, etc. For ease of representation, Figure 9 The symbol is represented by only one line, but this does not mean that there is only one bus or one type of bus.

[0127] Memory 2003 may be, for example, read-only memory (ROM) or other types of static storage devices capable of storing static information and instructions; random access memory (RAM) or other types of dynamic storage devices capable of storing information and instructions; electrically erasable programmable read-only memory (EEPROM); compact disc read-only memory (CD-ROM) or other optical disc storage, optical disc storage (including compressed discs, laser discs, optical discs, digital versatile discs, Blu-ray discs, etc.); magnetic disk storage media or other magnetic storage devices; or any other medium capable of carrying or storing desired program code in the form of instructions or data structures and accessible by a computer, but not limited thereto. Memory 2003 may exist independently and be connected to processor 2001 via a bus. Memory 2003 may also be integrated with processor 2001.

[0128] The communication interface 2004 uses any transceiver-like device for communicating with other devices or communication networks, such as Ethernet, radio access network (RAN), or wireless local area networks (WLAN). The communication interface 2004 can include wired and wireless communication interfaces. Specifically, the communication interface 2004 can be an Ethernet interface, a Fast Ethernet (FE) interface, a Gigabit Ethernet (GE) interface, an Asynchronous Transfer Mode (ATM) interface, a WLAN interface, a cellular network communication interface, or a combination thereof. The Ethernet interface can be an optical interface, an electrical interface, or a combination thereof. In this embodiment, the communication interface 2004 can be used by the data transmission device 2000 to communicate with other devices.

[0129] In a specific implementation, as one example, the processor 2001 may include one or more CPUs, such as... Figure 9The CPUs shown are CPU0 and CPU1. Each of these processors can be a single-core CPU or a multi-core CPU. A processor here can refer to one or more devices, circuits, and / or processing cores used to process data (e.g., computer program instructions).

[0130] In a specific implementation, as one example, the data transmission device 2000 may include multiple processors, such as... Figure 9 The processors shown are 2001 and 2005. Each of these processors can be a single-core CPU or a multi-core CPU. Here, "processor" can refer to one or more devices, circuits, and / or processing cores used to process data (such as computer program instructions).

[0131] In a specific implementation, as one example, the data transmission device 2000 may further include an output device and an input device. The output device communicates with the processor 2001 and can display information in various ways. For example, the output device may be a liquid crystal display (LCD), a light-emitting diode (LED) display device, a cathode ray tube (CRT) display device, or a projector, etc. The input device communicates with the processor 2001 and can receive user input in various ways. For example, the input device may be a mouse, a keyboard, a touchscreen device, or a sensor device, etc.

[0132] In some embodiments, the memory 2003 stores program code 2010 for executing the solution of this application, and the processor 2001 can execute the program code 2010 stored in the memory 2003. That is, the data transmission device 2000 can implement the data transmission method provided in the method embodiment through the processor 2001 and the program code 2010 in the memory 2003. The program code 2010 may include one or more software modules. Optionally, the processor 2001 itself may also store program code or instructions for executing the solution of this application.

[0133] In a specific embodiment, the data transmission device 2000 of this application embodiment can correspond to the first device in the above-described method embodiments. The processor 2001 in the data transmission device 2000 reads instructions from the memory 2003, causing... Figure 9 The data transmission device 2000 shown is capable of performing all or part of the operations performed by the first device.

[0134] Specifically, the processor 2001 is used to send first data to the second device through a first connection resource, the first data being real-time service data, and the first connection resource being the connection resource allocated to real-time services in the QUIC connection between the first device and the second device; and to send second data to the second device through a second connection resource, the second data being non-real-time service data, and the second connection resource being the connection resource allocated to non-real-time services in the QUIC connection, and the first connection resource and the second connection resource do not overlap.

[0135] Other alternative implementation methods will not be described in detail here for the sake of brevity.

[0136] For example, the data transmission device 2000 in this application embodiment can correspond to the second device in the above-described method embodiments. The processor 2001 in the data transmission device 2000 reads instructions from the memory 2003, causing... Figure 9 The data transmission device 2000 shown is capable of performing all or part of the operations performed by the second device.

[0137] Specifically, the processor 2001 is used to receive first data sent by the first device through a first connection resource, the first data being real-time service data, and the first connection resource being the connection resource allocated to real-time services in the QUIC connection between the first device and the second device; and to receive second data sent by the first device through a second connection resource, the second data being non-real-time service data, and the second connection resource being the connection resource allocated to non-real-time services in the QUIC connection, wherein the first connection resource and the second connection resource do not overlap.

[0138] Other alternative implementation methods will not be described in detail here for the sake of brevity.

[0139] Data transmission device 2000 can also correspond to the above. Figure 7 Alternatively, as shown in Figure 8, each functional module in the data transmission device is implemented using software from the data transmission device 2000. In other words, the functional modules included in the data transmission device are generated by the processor 2001 of the data transmission device 2000 reading the program code 2010 stored in the memory 2003.

[0140] in, Figure 2Each step of the data transmission method shown is completed through integrated logic circuits in the hardware or software instructions in the processor of the data transmission device 2000. The steps of the method disclosed in the embodiments of this application can be directly implemented by the hardware processor, or by a combination of hardware and software modules in the processor. The software modules can reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. Since the storage medium is located in memory, the processor reads information from the memory and, in conjunction with its hardware, completes the steps of the above method; to avoid repetition, these will not be described in detail here.

[0141] Figure 10 This is a schematic diagram of a server structure provided in an embodiment of this application. The server 1000 can vary considerably due to different configurations or performance. It may include one or more processors 1001 and one or more memories 1002. The one or more memories 1002 store at least one computer program, which is loaded and executed by the one or more processors 1001 to enable the server to implement the data transmission methods provided in the various method embodiments described above. Of course, the server 1000 may also have wired or wireless network interfaces, a keyboard, and input / output interfaces for input and output. The server 1000 may also include other components for implementing device functions, which will not be elaborated here.

[0142] The application also provides a data transmission system, which includes a first device and a second device. For example, the first device is... Figure 9 The data transmission device 2000 or shown Figure 10 The server shown, the second device is Figure 9 The data transmission device 2000 or shown Figure 10 The server shown. The data transmission methods performed by the first and second devices are described above. Figure 2 The relevant descriptions of the embodiments shown will not be repeated here.

[0143] This application also provides a communication device, which includes a transceiver, a memory, and a processor. The transceiver, the memory, and the processor communicate with each other via an internal connection path. The memory stores instructions, and the processor executes the instructions stored in the memory to control the transceiver to receive and transmit signals. When the processor executes the instructions stored in the memory, it causes the processor to perform a method required by a first device or a second device.

[0144] It should be understood that the aforementioned processor can be a CPU, or other general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. General-purpose processors can be microprocessors or any conventional processor. It is worth noting that the processor can be a processor supporting Advanced Reduced Instruction Set Computing (RISC) machines (ARM) architecture.

[0145] Furthermore, in an alternative embodiment, the memory described above may include read-only memory and random access memory, and provide instructions and data to the processor. The memory may also include non-volatile random access memory. For example, the memory may also store device type information.

[0146] The memory can be volatile or non-volatile, or may include both. The non-volatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM), which serves as an external cache. Many forms of RAM are available by way of example, but not limitation. Examples include 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 linked dynamic random access memory (SLDRAM), and direct rambus RAM (DR RAM).

[0147] This application also provides a computer-readable storage medium storing at least one instruction, which is loaded and executed by a processor to enable the computer to implement any of the data transmission methods described above.

[0148] This application also provides a computer program (product) that, when executed by a computer, causes the processor or computer to perform the corresponding steps and / or processes in the above method embodiments.

[0149] This application also provides a chip, including a processor, for calling and executing instructions stored in a memory, causing a communication device with the chip installed to perform any of the data transmission methods described above.

[0150] This application embodiment also provides another chip, including: an input interface, an output interface, a processor, and a memory. The input interface, output interface, processor, and memory are connected through an internal connection path. The processor is used to execute code in the memory. When the code is executed, the processor is used to execute any of the data transmission methods described above.

[0151] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented in software, it can be implemented, in whole or in part, as a computer program product. A computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, the processes or functions according to this application are generated, in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, computer instructions can be transmitted from one website, computer, server, or data center to another website, computer, server, or data center via wired (e.g., coaxial cable, fiber optic, digital subscriber line) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state disk), etc.

[0152] Those skilled in the art will recognize that the method steps and modules described in conjunction with the embodiments disclosed herein can be implemented in software, hardware, firmware, or any combination thereof. To clearly illustrate the interchangeability of hardware and software, the steps and components of each embodiment have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0153] Those skilled in the art will understand that all or part of the steps of the above embodiments can be implemented by hardware or by a program instructing related hardware. The program can be stored in a computer-readable storage medium, such as a read-only memory, a disk, or an optical disk.

[0154] When implemented using software, it can be implemented wholly or partially as a computer program product. This computer program product includes one or more computer program instructions. As an example, the methods of this application embodiment can be described in the context of machine-executable instructions, such as program modules that execute on a device on a real or virtual processor of the target. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc., which perform specific tasks or implement specific abstract data structures. In various embodiments, the functionality of program modules can be combined or divided among the described program modules. The machine-executable instructions for the program modules can execute within a local or distributed device. In a distributed device, the program modules can reside on both local and remote storage media.

[0155] Computer program code used to implement the methods of the embodiments of this application may be written in one or more programming languages. This computer program code may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus, such that when executed by the computer or other programmable data processing apparatus, the program code causes the functions / operations specified in the flowcharts and / or block diagrams to be implemented. The program code may be executed entirely on a computer, partially on a computer, as a standalone software package, partially on a computer and partially on a remote computer, or entirely on a remote computer or server.

[0156] In the context of the embodiments of this application, computer program code or related data may be carried by any suitable carrier to enable a device, apparatus, or processor to perform the various processes and operations described above. Examples of carriers include signals, computer-readable media, etc.

[0157] Examples of signals may include electrical, optical, radio, sound, or other forms of propagation signals, such as carrier waves, infrared signals, etc.

[0158] A machine-readable medium can be any tangible medium that contains or stores programs for or relating to an instruction execution system, apparatus, or device. A machine-readable medium can be a machine-readable signal medium or a machine-readable storage medium. Machine-readable media can include, but are not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any suitable combination thereof. More detailed examples of machine-readable storage media include electrical connections with one or more wires, portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical storage devices, magnetic storage devices, or any suitable combination thereof.

[0159] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and modules described above can be found in the corresponding processes in the foregoing method embodiments, and will not be repeated here.

[0160] In the embodiments provided in this 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 instance, the division of modules is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple modules or components may be combined or integrated into another system, or some features may be ignored or not executed. Furthermore, the couplings or direct couplings or communication connections shown or discussed may be indirect couplings or communication connections through some interfaces, devices, or modules, or they may be electrical, mechanical, or other forms of connection.

[0161] The modules described as separate components may or may not be physically separate. The components shown as modules may or may not be physical modules; that is, they may be located in one place or distributed across multiple network modules. Some or all of the modules can be selected to achieve the purpose of the embodiments of this application, depending on actual needs.

[0162] Furthermore, the functional modules in the various embodiments of this application can be integrated into one processing module, or each module can exist physically separately, or two or more modules can be integrated into one module. The integrated modules described above can be implemented in hardware or as software functional modules.

[0163] If the integrated module is implemented as a software functional module and sold or used as an independent product, it 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 all or part of the 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 to cause a computer device (which may be a personal computer, a server, or a data transmission device, etc.) to execute all or part of the steps of the methods in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0164] In this application, the terms "first," "second," etc., are used to distinguish identical or similar items that have substantially the same function and purpose. It should be understood that there is no logical or temporal dependency between "first," "second," and "nth," nor does it limit the quantity or order of execution. It should also be understood that although the following description uses the terms "first," "second," etc., to describe various elements, these elements should not be limited by the terms. These terms are merely used to distinguish one element from another. For example, without departing from the scope of the various examples, a first device may be referred to as a second device, and similarly, a second device may be referred to as a first device.

[0165] It should also be understood that, in the various embodiments of this application, the sequence number of each process does not imply the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of this application.

[0166] In this application, the term "at least one" means one or more, and the term "multiple" means two or more. For example, multiple second messages refer to two or more second messages. The terms "system" and "network" are often used interchangeably in this document.

[0167] It should be understood that the terminology used in the description of the various examples herein is for the purpose of describing particular examples only and is not intended to be limiting. As used in the description of the various examples and the appended claims, the singular forms “a” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise.

[0168] It should also be understood that the term "and / or" as used herein refers to and covers any and all possible combinations of one or more of the associated listed items. The term "and / or" describes an association between related objects, indicating that three relationships can exist; for example, A and / or B can represent: A alone, A and B simultaneously, or B alone. Additionally, the character " / " in this application generally indicates that the preceding and following related objects are in an "or" relationship.

[0169] It should also be understood that the term “comprising” (also referred to as “includes”, “including”, “comprises” and / or “comprising”) as used in this specification specifies the presence of the stated features, integers, steps, operations, elements, and / or components, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0170] It should also be understood that the terms “if” and “if” can be interpreted as meaning “when” or “upon”, or “in response to determination” or “in response to detection”. Similarly, depending on the context, the phrases “if determination…” or “if detection [the stated condition or event]” can be interpreted as meaning “when determination…”, or “in response to determination…”, or “when detection [the stated condition or event]” or “in response to detection [the stated condition or event]”.

[0171] It should be understood that determining B based on A does not mean determining B solely based on A; B can also be determined based on A and / or other information.

[0172] It should also be understood that the phrases "an embodiment," "an embodiment," and "a possible implementation" used throughout the specification mean that a specific feature, structure, or characteristic related to an embodiment or implementation is included in at least one embodiment of this application. Therefore, the phrases "in an embodiment," "an embodiment," or "a possible implementation" appearing throughout the specification do not necessarily refer to the same embodiment. Furthermore, these specific features, structures, or characteristics can be combined in any suitable manner in one or more embodiments.

[0173] The above description is only an optional embodiment of this application and is not intended to limit this application. Any modifications, equivalent substitutions, improvements, etc., made within the principles of this application should be included within the protection scope of this application.

Claims

1. A data transmission method, characterized in that, The method includes: The first device sends first data to the second device through the first connection resource. The first data is real-time service data. The first connection resource is the connection resource allocated to the real-time service in the Fast User Datagram Protocol Internet Connection (QUIC) connection between the first device and the second device. The first device sends second data to the second device through the second connection resource. The second data is non-real-time service data. The second connection resource is the connection resource allocated to the non-real-time service in the QUIC connection. The first connection resource and the second connection resource do not overlap.

2. The method according to claim 1, characterized in that, The first device sends first data to the second device via a first connection resource, including: The first data is sent to the second device through the first connection resource based on the first sending window. The first sending window is determined based on the first receiving window of the second device. The first receiving window is determined by the second device based on the remaining buffer space used to receive the data of the real-time service. The first device sends second data to the second device via the second connection resource, including: The second data is sent to the second device through the second connection resource based on the second sending window, the second sending window being determined based on the second receiving window of the second device, the second receiving window being determined by the second device based on the remaining buffer space used to receive the data of the non-real-time service.

3. The method according to claim 1 or 2, characterized in that, The method further includes: The first device sends an access request to the access gateway; The protocol parameter configuration sent by the access gateway based on the access request is received, wherein the protocol parameter configuration indicates the first connection resource and the real-time service.

4. The method according to any one of claims 1-3, characterized in that, The method further includes: When data transmission is performed between the first device and the second device via Transmission Control Protocol (TCP), the first device and the second device switch the TCP to the QUIC.

5. The method according to claim 4, characterized in that, The first device and the second device switch the TCP to the QUIC, including: The first device sends a Secure File Transfer Protocol (SFTP) initialization message to the second device, wherein the extended field of the SFTP initialization message carries the identifier of the QUIC. The first device receives an SFTP response message sent by the second device. The extended field of the SFTP response message carries the identifier of the QUIC. The identifier of the QUIC is used by the first device and the second device to switch the TCP to the QUIC.

6. A data transmission method, characterized in that, The method includes: The second device receives first data sent by the first device through the first connection resource. The first data is real-time service data. The first connection resource is the connection resource allocated to the real-time service in the Fast User Datagram Protocol Internet Connection (QUIC) connection between the first device and the second device. The second device receives the second data sent by the first device through the second connection resource. The second data is non-real-time service data. The second connection resource is the connection resource allocated to the non-real-time service in the QUIC connection. The first connection resource and the second connection resource do not overlap.

7. The method according to claim 6, characterized in that, After the second device receives the first data sent by the first device through the first connection resource, it further includes: The first data is cached in a first cache space, which is a cache space on the second device used to receive the real-time service; After the second device receives the second data sent by the first device through the second connection resource, it further includes: The second data is cached in a second cache space, which is a cache space on the second device used to receive data from the non-real-time service.

8. The method according to claim 6 or 7, characterized in that, The method further includes: When data transmission is performed between the second device and the first device via Transmission Control Protocol (TCP), the second device and the first device switch the TCP to the QUIC.

9. The method according to claim 8, characterized in that, The second device and the first device switch the TCP to the QUIC, including: The second device receives a Secure File Transfer Protocol (SFTP) initialization message sent by the first device, wherein the extended field of the SFTP initialization message carries the identifier of the QUIC. An SFTP response message is sent to the first device. The extended field of the SFTP response message carries the identifier of the QUIC. The identifier of the QUIC is used by the second device and the first device to switch the TCP to the QUIC.

10. The method according to any one of claims 1-9, characterized in that, The first connection resource indicates the maximum number of first streams and the maximum flow control window for each first stream; the second connection resource indicates the maximum number of second streams and the maximum flow control window for each second stream.

11. The method according to any one of claims 1-10, characterized in that, The first data is encapsulated in a first stream frame for transmission. The first stream frame also encapsulates a first type identifier, which indicates that the first data in the first stream frame is the data of the real-time service. The second data is encapsulated in a second stream frame for transmission. The second stream frame also encapsulates a second type identifier, which indicates that the second data in the second stream frame is the data of the non-real-time service.

12. The method according to claims 1-11, characterized in that, The first device is a cloud phone client, and the second device is a cloud phone server; or, the first device is a cloud phone server, and the second device is a cloud phone client.

13. A data transmission device, characterized in that, The apparatus is used to perform the data transmission method according to any one of claims 1-12.

14. A data transmission device, characterized in that, The data transmission device includes a processor coupled to a memory, the memory storing at least one program instruction or code, the at least one program instruction or code being loaded and executed by the processor to enable the data transmission device to implement the data transmission method according to any one of claims 1-12.

15. A data transmission system, characterized in that, The data transmission system includes a first device and a second device; The first device is used to perform the data transmission method according to any one of claims 1-5 and 10-12, and the second device is used to perform the data transmission method according to any one of claims 6-12.

16. A computer-readable storage medium, characterized in that, The computer storage medium stores at least one instruction, which is loaded and executed by a processor to enable the computer to implement the data transmission method as described in any one of claims 1-12.

17. A computer program product, characterized in that, The computer program product includes: computer program code, which is loaded and executed by a computer to enable the computer to implement the data transmission method according to any one of claims 1-12.