Assessment bandwidth determination method and device, electronic equipment and storage medium
By obtaining network link delay and judging server status in cloud games and optimizing the evaluation bandwidth, the problem of evaluating bandwidth in cloud games is solved, and picture quality and game stability are improved.
Patent Information
- Application Number
- CN202411400778.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-10-09
- Publication Date
- 2025-02-14
AI Technical Summary
In cloud gaming, when the server is in ALR state, the default congestion control algorithm of the QUIC protocol will cause severe fluctuations in the evaluation bandwidth, affecting the encoding quality and the picture quality received by the player.
By obtaining the network link delay between the server and the client, and determining whether the server is in the application restricted sending state when the preset conditions are met, if it is in this state, the evaluation bandwidth at the current moment is determined and optimized to avoid bandwidth fluctuations. big.
It effectively avoids violent fluctuations in the evaluation bandwidth, reduces the impact on the quality of the player's received picture, and ensures the stability and fluency of cloud gaming.
Smart Images

Figure CN119449673A_ABST
Abstract
Description
Technical Field
[0001] The present application belongs to the field of cloud gaming technology, and in particular, relates to a method, device, electronic device and storage medium for determining an evaluation bandwidth. Background Art
[0002] There are some benefits of using the QUIC protocol in cloud games: Low latency: The QUIC protocol can effectively reduce transmission delays, which is very important for the real-time interactive experience of cloud games and can make players feel smoother. Better connection stability: It helps to reduce connection interruptions or instability and ensure the continuity of the game process. Quick connection establishment: The handshake process can be completed quickly, allowing players to enter the game faster. Strong adaptability: It can better adapt to complex network environments and dynamic changes, and improve the performance of cloud games under different network conditions. Quiche is a library in Chromium that is used to implement the QUIC protocol and is convenient for integration into the project library of cloud games. Quiche's default congestion control algorithms are Cubic, BBR, and BBRv2. The goal of these congestion control algorithms is to make better use of bandwidth. When encountering larger network delays, these congestion control algorithms will reduce the evaluation bandwidth to 0.85 times the current confirmation (ack) bandwidth. However, if the server is in the ALR (application restricted send) state at this time, the current ack bandwidth will be a very low value. If it is directly reduced to 0.85 times of the ack bandwidth, it will cause drastic fluctuations in the evaluation bandwidth, affecting the encoding quality of the cloud game, and then affecting the picture quality received by the player. Summary of the invention
[0003] The embodiments of the present application provide a method, device, electronic device, and storage medium for determining an evaluation bandwidth, which can avoid excessive fluctuations in the evaluation bandwidth.
[0004] In a first aspect, an embodiment of the present application provides a method for determining an evaluation bandwidth, which is applied to a server of a cloud game, including:
[0005] Obtaining a delay of a network link between the server and the client;
[0006] In the case where it is determined based on the delay of the network link that a preset condition is met, determining whether the server is in an application-restricted sending state;
[0007] When the server is in an application-restricted sending state, determining an evaluation bandwidth of the network link at a current moment;
[0008] The evaluation bandwidth is reduced to obtain an optimized evaluation bandwidth.
[0009] In some embodiments, reducing the evaluation bandwidth to obtain an optimized evaluation bandwidth includes:
[0010] The evaluation bandwidth is multiplicatively reduced to obtain an optimized evaluation bandwidth, wherein the proportional coefficient when performing the multiplicative reduction is a preset proportional coefficient.
[0011] In some embodiments, the method further comprises:
[0012] Determining a current bandwidth of a network link between the server and the client when it is determined based on the delay of the network link that a preset condition is satisfied and the server is not in an application-restricted sending state;
[0013] The current bandwidth is multiplied by a preset ratio to obtain an optimized evaluation bandwidth.
[0014] In some embodiments, the method further comprises:
[0015] Obtaining a packet loss rate of the client;
[0016] In the case where the packet loss rate reaches the packet loss rate threshold, determining whether the current evaluation bandwidth of the network link between the server and the client reaches a lower limit threshold;
[0017] When the evaluation bandwidth at the current moment does not reach the lower limit threshold, reducing the evaluation bandwidth at the current moment to obtain an optimized evaluation bandwidth;
[0018] When the evaluation bandwidth at the current moment reaches the lower limit threshold, the evaluation bandwidth is maintained at the lower limit value.
[0019] In some embodiments, determining the estimated bandwidth of the network link at a current moment includes:
[0020] Obtaining the current bandwidth of the network link between the server and the client and the estimated bandwidth calculated at the last moment;
[0021] The current moment evaluation bandwidth of the network link between the server and the client is determined based on the current bandwidth and the evaluation bandwidth calculated at the last moment.
[0022] In some embodiments, the method further comprises:
[0023] Obtain a list of congestion control methods supported by the client;
[0024] Determining the same congestion control method based on the congestion control method list and the congestion control method list of the server;
[0025] Based on the priorities of the same congestion control methods, a target congestion control algorithm used in the server is determined to optimize the evaluation bandwidth based on the target congestion control algorithm.
[0026] In some embodiments, the target congestion control algorithm includes: Google congestion control algorithm, the server and the client communicate based on a fast UDP Internet connection protocol, and the method further includes:
[0027] Get the code for Google's congestion control algorithm;
[0028] Enable the function of processing the receiving timestamp on the local end, and enable the function of saving the receiving timestamp on the remote end;
[0029] A structure is created based on the code of the Google congestion control algorithm, and the structure is inherited to the sending algorithm interface of quiche corresponding to the fast UDP Internet connection protocol.
[0030] In some embodiments, the method further comprises:
[0031] When the optimized evaluation bandwidth is reduced, the encoding rate of the server for the cloud game image is reduced to reduce the data sent.
[0032] In a second aspect, an embodiment of the present application provides a device for determining an evaluation bandwidth, including:
[0033] An acquisition module, used to acquire the delay of the network link between the server and the client;
[0034] A first determination module, configured to determine whether the server is in an application-restricted sending state when the delay change information of the network link meets a preset condition;
[0035] A second determination module, configured to determine the current evaluation bandwidth of the network link when the server is in an application-restricted sending state;
[0036] The reducing module is used to reduce the evaluation bandwidth to obtain an optimized evaluation bandwidth.
[0037] In a third aspect, an embodiment of the present application provides an electronic device, comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements any of the methods described above when executing the computer program.
[0038] In a fourth aspect, an embodiment of the present application provides a computer-readable storage medium, wherein the computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, any of the methods described above is implemented.
[0039] In a fifth aspect, an embodiment of the present application provides a computer program product, which, when executed on a terminal device, enables the electronic device to execute any of the methods described above.
[0040] Compared with the prior art, the embodiments of the present invention have the following beneficial effects:
[0041] The method for determining the evaluation bandwidth provided in the embodiment of the present application obtains the delay of the network link between the server and the client; when the change information of the delay of the network link meets the preset conditions, determines whether the server is in the application restricted sending state; when the server is in the application restricted sending state, determines the evaluation bandwidth of the network link at the current moment; reduces the evaluation bandwidth to obtain the optimized evaluation bandwidth, which can avoid excessive fluctuations in the evaluation bandwidth, thereby reducing the impact on the picture quality received by the player.
[0042] It can be understood that the beneficial effects of the second to fifth aspects mentioned above can be found in the relevant description of the first aspect mentioned above, and will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0043] In order to more clearly illustrate the technical solutions in the embodiments of the present application, the drawings required for use in the embodiments or the description of the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying creative labor.
[0044] Figure 1 A schematic diagram of an implementation flow of a method for determining an evaluation bandwidth provided for the implementation of this application;
[0045] Figure 2 A flowchart of another method for determining an evaluation bandwidth provided in an embodiment of the present application;
[0046] Figure 3 A schematic diagram of an implementation flow of a method for determining an evaluation bandwidth provided in an embodiment of the present application;
[0047] Figure 4 A schematic diagram of an implementation flow of a method for selecting congestion control provided in an embodiment of the present application;
[0048] Figure 5 A schematic diagram of an implementation flow of an integrated Google congestion control method provided in an embodiment of the present application; Figure 6 A schematic diagram of the structure of a device for determining an evaluation bandwidth provided in an embodiment of the present application;
[0049] Figure 7 A schematic diagram of the structure of an electronic device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0050] In the following description, specific details such as specific system structures, technologies, etc. are provided for the purpose of illustration rather than limitation, so as to provide a thorough understanding of the embodiments of the present application. However, it should be clear to those skilled in the art that the present application may also be implemented in other embodiments without these specific details. In other cases, detailed descriptions of well-known systems, devices, circuits, and methods are omitted to prevent unnecessary details from obstructing the description of the present application.
[0051] It should be understood that when used in the present specification and the appended claims, the term "comprising" indicates the presence of described features, wholes, steps, operations, elements and / or components, but does not exclude the presence or addition of one or more other features, wholes, steps, operations, elements, components and / or combinations thereof.
[0052] It should also be understood that the term “and / or” used in the specification and appended claims refers to any and all possible combinations of one or more of the associated listed items, and includes these combinations.
[0053] As used in the specification of this application and the appended claims, the term "if" can be interpreted as "when" or "uponce" or "in response to determining" or "in response to detecting" depending on the context. Similarly, the phrases "if it is determined" or "if it is detected" can be interpreted as meaning "uponce it is determined" or "in response to determining" or "uponce detected" or "in response to detecting" depending on the context.
[0054] In addition, in the description of the present application specification and the appended claims, the terms "first", "second", "third", etc. are only used to distinguish the descriptions and cannot be understood as indicating or implying relative importance.
[0055] References to "one embodiment" or "some embodiments" etc. described in the specification of this application mean that one or more embodiments of the present application include specific features, structures or characteristics described in conjunction with the embodiment. Therefore, the phrases "in one embodiment", "in some embodiments", "in some other embodiments", "in some other embodiments", etc. appearing in different places in this specification do not necessarily refer to the same embodiment, but mean "one or more but not all embodiments", unless otherwise specifically emphasized in other ways.
[0056] Based on the technical problems of related technologies, the embodiments of the present application provide a method for determining the evaluation bandwidth, which can be applied to mobile phones, tablet computers, wearable devices, vehicle-mounted devices, augmented reality (AR) / virtual reality (VR) devices, laptops, ultra-mobile personal computers (UMPC), netbooks, personal digital assistants (PDA) and other electronic devices. The embodiments of the present application do not impose any restrictions on the specific types of electronic devices. Electronic devices can be used as cloud game servers.
[0057] The present application embodiment provides a method for determining an evaluation bandwidth. Figure 1 A schematic diagram of an implementation flow of a method for determining an evaluation bandwidth provided for the implementation of this application is shown in FIG. Figure 1 As shown, the determination method of the evaluation bandwidth includes:
[0058] Step S101, obtaining the delay of the network link between the server and the client.
[0059] In the embodiment of the present application, the cloud game server mainly performs tasks such as game operation and processing, image rendering, and data storage, while the client mainly displays the rendered images transmitted from the server, processes user input (such as keyboard, mouse, or handle operations) and sends these inputs back to the server. The client can process audio streams (such as game sound effects, voice chat) in real time and optimize the performance of audio and video to ensure smooth transmission of voice and video.
[0060] In the embodiment of the present application, the server and client of the cloud game can communicate based on the QUIC (Quick UDP Internet Connections) protocol. The QUIC protocol is very suitable for the cloud game environment due to its low latency, efficient data transmission capabilities and built-in security. When designing and implementing the communication between the cloud game server and the client, the use of the QUIC protocol can improve the user experience and enhance the reliability of data transmission.
[0061] In the embodiment of the present application, delay refers to the time required for data to be sent from the client to the server (or vice versa). It is usually measured in milliseconds (ms), and an increase in delay will affect the user experience.
[0062] In the embodiments of the present application, by combining the use of Ping test, heartbeat mechanism, RTT measurement tool, network monitoring software and log analysis methods, the network delay between the cloud game server and the client can be fully obtained.
[0063] Step S102: When it is determined based on the delay of the network link that a preset condition is met, determining whether the server is in an application-restricted sending state.
[0064] In the embodiment of the present application, the delay change information of the network link can be determined based on the delay of the network link.
[0065] In an embodiment of the present application, satisfying the preset conditions may include: the maximum delay within a preset time length is greater than a first preset threshold, the difference between the maximum delay and the minimum delay within the preset time length is greater than a second preset threshold, the number of times the delay within the preset time length exceeds a third preset threshold is greater than a preset number, and the delay change information is that the delay increases by a preset threshold.
[0066] In an embodiment of the present application, the delay of the network link between the server and the client can be obtained to determine whether the maximum delay within the preset time length is greater than the first preset threshold, thereby determining whether the preset condition is met. If the maximum delay within the preset time length is greater than the first preset threshold, it is determined that the preset condition is met.
[0067] In the embodiment of the present application, the delay of the network link between the server and the client can be obtained, and the delay can be used to determine whether the difference between the maximum delay and the minimum delay within the preset time length is greater than the second preset threshold value. If the difference between the maximum delay and the minimum delay within the preset time length is greater than the second preset threshold value, it is determined that the preset condition is met. In the embodiment of the present application, the delay of the network link between the server and the client can be obtained, and the delay can be used to determine whether the number of times the delay within the preset time length exceeds the third preset threshold value is greater than the preset number of times. If the number of times the delay within the preset time length exceeds the third preset threshold value is greater than the preset number of times, it is determined that the preset condition is met.
[0068] In the embodiment of the present application, the first preset threshold, the second preset threshold and the third preset threshold may be determined based on the performance requirements of the specific application, the network environment and the historical data of the enterprise, and in some embodiments, may also be obtained based on experience.
[0069] In some embodiments, the change information can be determined based on the delay, and the preset threshold can be configured. The setting of the preset threshold depends on the performance requirements of the specific application, the network environment and historical data. For example, it can be set to 100ms, 150ms, etc., and the change information of the delay can be determined at this time. If the change information is that the network delay increases, the increased delay can be compared with the preset threshold to determine whether the change information is that the network delay increases the preset threshold. If the change information is that the delay increases the preset threshold, it is determined that the preset condition is met.
[0070] In the embodiment of the present application, when the change information is that the network delay increases by a preset threshold, it can be considered that the delay rises rapidly in a short period of time and continues to exceed the preset threshold, and it is necessary to further check the status of the server.
[0071] In the embodiment of the present application, the algorithm in the server can identify the application restriction sending status.
[0072] In the embodiment of the present application, the network conditions can be detected, and the network conditions can include: bandwidth utilization, delay and round-trip delay, and packet loss rate. The network conditions can be used to determine whether the server is in the application restricted sending state. For example, the current bandwidth utilization is monitored, and if the utilization is close to or reaches 100%, it should be considered to enter the restricted sending state.
[0073] In some embodiments, the performance of the server application may be determined using a monitoring tool to identify whether the server is in a send-limited state.
[0074] Step S103: when the server is in an application-restricted sending state, determining the current evaluation bandwidth of the network link.
[0075] In the embodiment of the present application, the evaluation bandwidth refers to measuring and determining the effective data transmission capacity of the network connection, which is usually expressed in bits per second (bps). It represents the amount of data that the network can transmit per unit time. The evaluation bandwidth at the current moment can be calculated based on the ACK bandwidth. The evaluation bandwidth is a core parameter of the GCC algorithm of QUIC. In the specific implementation of the QUIC protocol, the evaluation bandwidth can be used to adjust the sending strategy in real time, thereby achieving effective congestion control and optimizing network transmission.
[0076] In an embodiment of the present application, step S103 can be implemented by the following steps: obtaining the current bandwidth of the network link between the server and the client and the evaluation bandwidth calculated at the last moment, and determining the evaluation bandwidth of the network link between the server and the client at the current moment based on the current bandwidth and the evaluation bandwidth calculated at the last moment.
[0077] In an embodiment of the present application, a bandwidth measurement tool can be selected to obtain the current bandwidth of the network between the server and the client. A certain amount of data can be sent through the bandwidth measurement tool and the transmission time can be recorded. The current bandwidth can be determined by the transmission time of a certain amount of data.
[0078] In the embodiment of the present application, the evaluation bandwidth calculated at the last moment may be stored in the historical data, and the evaluation bandwidth at the last moment may be obtained by acquiring the historical data.
[0079] In the embodiment of the present application, the evaluation bandwidth at the current moment can be determined by weighted average and smoothing algorithm. For example, the evaluation bandwidth at the current moment can be obtained by simply averaging the current bandwidth and the bandwidth at the previous moment. In some embodiments, the evaluation bandwidth at the current moment can be calculated by methods such as exponential weighted average (EWMA).
[0080] Step S104: reducing the evaluation bandwidth to obtain an optimized evaluation bandwidth.
[0081] In the embodiment of the present application, the evaluation bandwidth may be multiplicatively reduced to obtain an optimized evaluation bandwidth, wherein the proportional coefficient when performing the multiplicative reduction is a preset proportional coefficient.
[0082] In the embodiment of the present application, the proportionality coefficient is a value less than 1, and the preset proportionality coefficient may be 0.85. Then, the optimized evaluation bandwidth may be expressed as the evaluation bandwidth at the current moment multiplied by 0.85 to obtain the optimized evaluation bandwidth.
[0083] In an embodiment of the present application, the evaluation bandwidth can help the game server dynamically adjust the sending rate of the data stream under different network conditions. For example, based on the evaluation bandwidth, the server can decide how much data to send (such as picture frames, audio information, etc.) to avoid congestion or delay. If the evaluation bandwidth is low, the server can reduce the amount of data sent to ensure the user experience. The evaluation bandwidth is crucial for adjusting the picture quality in real time. When the network conditions are good, the resolution and frame rate of the video stream can be improved; when the network conditions are poor, the server can automatically reduce the picture quality (such as resolution, frame rate) to reduce the amount of data transmission, thereby maintaining the smoothness of the game.
[0084] The method for determining the evaluation bandwidth provided in the embodiment of the present application obtains the delay of the network link between the server and the client; determines whether the server is in an application-restricted sending state when a preset condition is satisfied based on the delay of the network link; determines the evaluation bandwidth of the network link at the current moment when the server is in the application-restricted sending state; reduces the evaluation bandwidth to obtain an optimized evaluation bandwidth, thereby avoiding excessive fluctuations in the evaluation bandwidth and reducing the impact on the picture quality received by the player.
[0085] In some embodiments, if the change information indicates that the network delay is reduced by a preset threshold, the evaluation bandwidth may be increased.
[0086] In the embodiment of the present application, when increasing, a multiplicative increase method can be used to increase, and a certain factor can be used to increase based on the current evaluation bandwidth. For example, if the current evaluation bandwidth is 200Mbps and the multiplicative increase factor is 1.2, the increased bandwidth is calculated as: new evaluation bandwidth = current evaluation bandwidth × 1.2.
[0087] The method provided in the embodiment of the present application can improve data transmission efficiency and overall network performance by increasing the evaluation bandwidth when the network delay is reduced and below a preset threshold. However, the network status must be continuously monitored to ensure stability and avoid potential congestion or increased delays. Through this dynamic adjustment strategy, the use of network resources can be better optimized.
[0088] In some embodiments, if the change information indicates that the network delay does not change much, the current evaluation bandwidth may be maintained, that is, the current evaluation bandwidth may not be adjusted.
[0089] In the embodiment of the present application, a small range of fluctuation thresholds can be set. If the current delay varies within this range (such as ±10%), it can be considered that the delay does not vary much. When the delay is confirmed to be stable, it is decided to maintain the current evaluation bandwidth.
[0090] In some embodiments, Figure 2 A flowchart of another method for determining an evaluation bandwidth provided in an embodiment of the present application is shown as follows: Figure 2 As shown, the method also includes:
[0091] Step S105: when it is determined based on the delay of the network link that a preset condition is met and the server is not in an application-restricted sending state, determine the current bandwidth of the network between the server and the client.
[0092] In the embodiment of the present application, a bandwidth testing tool (such as iperf) can be used for testing, and the results measured by the tool can be used to calculate the current bandwidth. The current bandwidth can be expressed as: the amount of data transmitted divided by the transmission time.
[0093] In the embodiment of the present application, the current bandwidth may be the ACK bandwidth, and the ACK bandwidth may be calculated by recording the number of ACK packets received within a certain period of time.
[0094] Step S106: obtaining an optimized evaluation bandwidth based on the current bandwidth multiplied by a preset ratio.
[0095] In the embodiment of the present application, the preset ratio can be configured. For example, the ratio can be set to 0.85 (indicating that the current bandwidth will be optimized and reduced by 15%) or other suitable values, depending on the network conditions.
[0096] In the embodiment of the present application, the current bandwidth may be multiplied by a preset ratio to obtain an optimized evaluation bandwidth.
[0097] In the embodiment of the present application, since the current bandwidth will not be a particularly low value when the server is not in an application-restricted sending state, if the current bandwidth is multiplied by a preset ratio to obtain an optimized evaluation bandwidth, it will not cause drastic fluctuations in the evaluation bandwidth.
[0098] In some embodiments, Figure 3 A schematic diagram of an implementation flow of a method for determining an evaluation bandwidth provided in an embodiment of the present application is shown in FIG. Figure 3 As shown, the method also includes:
[0099] Step S107, obtaining the packet loss rate of the client.
[0100] In an embodiment of the present application, the packet loss data of the client is collected through a network monitoring tool or protocol (such as PING or TRACEROUTE) to calculate the packet loss rate.
[0101] Step S108: When the packet loss rate reaches a packet loss rate threshold, determine whether the current evaluation bandwidth of the network link between the server and the client reaches a lower threshold.
[0102] In the embodiment of the present application, the packet loss rate threshold can be configured. Exemplarily, it can be configured to any value between 3% and 5%. Of course, in other embodiments, it can also be configured to any value between 3% and 10%.
[0103] In an embodiment of the present application, the packet loss rate threshold can be set to a smaller value to increase the sensitivity of the perception of network conditions.
[0104] In an embodiment of the present application, the size relationship between the packet loss rate and the packet loss rate threshold can be compared. If the packet loss rate reaches the packet loss rate threshold, it is determined that the current evaluation bandwidth of the network link between the server and the client reaches the lower limit threshold.
[0105] If the packet loss rate does not reach the packet loss rate threshold, the evaluation bandwidth is not adjusted based on the packet loss rate.
[0106] In the embodiment of the present application, the current bandwidth of the network link between the server and the client can be evaluated, and the bandwidth data of the actual connection can be obtained through a bandwidth testing tool (such as iperf), to verify whether the current bandwidth is lower than the set lower limit threshold.
[0107] In the embodiment of the present application, the lower threshold can be configured.
[0108] In the embodiment of the present application, by setting a lower threshold, it is possible to prevent persistent packet loss in the network of a small operator, which would lead to an unlimited reduction in the assessed bandwidth, to a level that would make cloud games unplayable.
[0109] Step S109: if the evaluation bandwidth at the current moment does not reach the lower limit threshold, reduce the evaluation bandwidth at the current moment to obtain an optimized evaluation bandwidth.
[0110] In the embodiment of the present application, if the evaluation bandwidth at the current moment does not reach the lower limit threshold, bandwidth optimization is performed to reduce the bandwidth to the optimized evaluation bandwidth. When reducing the bandwidth, the evaluation bandwidth at the current moment can be multiplied. In some embodiments, the evaluation bandwidth at the current moment can also be multiplied by a preset ratio to obtain the optimized evaluation bandwidth.
[0111] Step S110 : When the evaluation bandwidth at the current moment reaches a lower limit threshold, the evaluation bandwidth is maintained at the lower limit value.
[0112] In the embodiment of the present application, since the evaluation bandwidth at the current moment reaches the lower limit threshold, the evaluation bandwidth is maintained unchanged.
[0113] In the embodiment of the present application, steps S107 to S110 may be executed before step S101, or after step S104, or may be executed in parallel with steps S101 to S104.
[0114] The method provided in the embodiment of the present application can adjust the evaluation bandwidth by the packet loss rate, ensuring that the bandwidth can be adjusted dynamically when the network conditions are not ideal, so as to ensure the stability and performance of the network.
[0115] In some embodiments, before step S101, the method further includes: a step of selecting a congestion control method, Figure 4 A schematic diagram of an implementation flow of a method for selecting congestion control provided in an embodiment of the present application is shown in FIG. Figure 4 As shown, including:
[0116] Step S1, obtaining a list of congestion control methods supported by the client.
[0117] In an embodiment of the present application, the congestion control methods in the congestion control method list may include: one or more of: Cubic, BBR, BBRv2, GCC (Google Congestion Control), etc.
[0118] In the embodiment of the present application, the congestion control algorithm supported by the client can be obtained through an API or a system command.
[0119] Step S2: Determine the same congestion control method based on the congestion control method list and the congestion control method list of the server.
[0120] In the embodiment of the present application, the congestion control method list of the server may also include: one or more of Cubic, BBR, BBRv2, GCC (Google Congestion Control), etc.
[0121] Step S3: based on the same priority of the congestion control method, determine the target congestion control algorithm used in the server, so as to determine the evaluation bandwidth based on the target congestion control algorithm.
[0122] In an embodiment of the present application, the priority of the congestion control method can be statically or dynamically allocated based on historical performance test data, algorithm characteristics, etc.
[0123] In the embodiment of the present application, a list of commonly supported same congestion control methods is selected, and each end selects the congestion control method with the highest priority to use. For example, the client uses BBRv2 and the server uses GCC.
[0124] In some embodiments, the target congestion control algorithm includes: Google congestion control algorithm, the server and the client communicate based on a fast UDP Internet connection protocol, Figure 5 A schematic diagram of an implementation flow of an integrated Google congestion control method provided in an embodiment of the present application is shown in FIG. Figure 5 As shown, before step S1, the method further includes:
[0125] Step S11, obtaining the code of Google's congestion control algorithm.
[0126] GCC related codes can be extracted from the WebRTC project. The extraction paths may include: webrtc / modules / congestion_controller; webrtc / modules / pacing.
[0127] Step S12, enabling the function of processing the receiving timestamp at the local end, and enabling the function of saving the receiving timestamp at the other end.
[0128] In the embodiment of the present application, QUIC receiving timestamp support can be enabled. The local end using the receiving timestamp needs to enable the processing receiving timestamp support, calling the function: set_process_timestamps(true); the other end needs to enable the saving receiving timestamp support and the processing receiving timestamp support, calling the functions: set_save_timestamps(true); set_process_timestamps(true).
[0129] Step S13, creating a structure based on the code of the Google congestion control algorithm, and inheriting the structure to the sending algorithm interface of quiche corresponding to the fast UDP Internet connection protocol.
[0130] In the embodiment of the present application, the structure may be: gcc_sender, a new gcc_sender implementation may be added, and the quiche SendAlgorithmInterface interface may be inherited. The interface may include: OnCongestionEvent, OnPacketSent, CanSend, PacingRate, BandwidthEstimate, InSlowStart and other interfaces.
[0131] The GCC congestion control method can be integrated into Quiche in the above manner.
[0132] In some embodiments, the method further comprises:
[0133] When the optimized evaluation bandwidth is reduced, the encoding rate of the server for the cloud game image is reduced to reduce the data sent.
[0134] In the embodiment of the present application, reducing the encoding rate of the server for the image of the cloud game may include: reducing the resolution, frame rate, etc. of the image of the cloud game.
[0135] The method provided in the embodiment of the present application sends the adjusted image data stream to the client, ensuring a smooth gaming experience under the new bandwidth limitation.
[0136] It should be understood that the size of the serial numbers of the steps in the above embodiments does not mean 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 the present application.
[0137] According to the aforementioned embodiments, the embodiments of the present application provide a device for determining an evaluation bandwidth. The modules included in the device and the units included in the modules can be implemented by a processor in a computer device; of course, they can also be implemented by a specific logic circuit; in the implementation process, the processor can be a central processing unit (CPU, Central Processing Unit), a microprocessor (MPU, Microprocessor Unit), a digital signal processor (DSP, Digital Signal Processing) or a field programmable gate array (FPGA, Field Programmable Gate Array), etc.
[0138] The present application embodiment provides a determination device for evaluating bandwidth. Figure 6 A schematic diagram of a structure of a device for determining an evaluation bandwidth provided in an embodiment of the present application is shown in FIG. Figure 6 As shown, the evaluation bandwidth determination device 200 includes:
[0139] An acquisition module 201 is used to acquire a delay of a network link between the server and the client;
[0140] A first determination module 202, configured to determine whether the server is in an application-restricted sending state when the delay change information of the network link meets a preset condition;
[0141] A second determination module 203 is used to determine the current evaluation bandwidth of the network link when the server is in an application-restricted sending state;
[0142] The reducing module 204 is configured to reduce the evaluation bandwidth to obtain an optimized evaluation bandwidth.
[0143] In some embodiments, reducing the current evaluation bandwidth to obtain an optimized evaluation bandwidth includes:
[0144] The evaluation bandwidth is multiplicatively reduced to obtain an optimized evaluation bandwidth, wherein the proportional coefficient when performing the multiplicative reduction is a preset proportional coefficient.
[0145] In some embodiments, the evaluation bandwidth determination device 200 further includes:
[0146] A third determination module is used to determine the current bandwidth of the network link between the server and the client when it is determined based on the delay of the network link that a preset condition is met and the server is not in an application-restricted sending state;
[0147] The optimization module is used to multiply the current bandwidth by a preset ratio to obtain an optimized evaluation bandwidth.
[0148] In some embodiments, the evaluation bandwidth determination device 200 further includes:
[0149] A packet loss rate acquisition module, used to obtain the packet loss rate of the client;
[0150] A fourth determination module is used to determine whether the current evaluation bandwidth of the network link between the server and the client reaches a lower limit threshold when the packet loss rate reaches the packet loss rate threshold;
[0151] A bandwidth reduction module, configured to reduce the evaluation bandwidth at the current moment to obtain an optimized evaluation bandwidth if the evaluation bandwidth at the current moment does not reach the lower limit threshold;
[0152] The bandwidth maintaining module is used to maintain the evaluation bandwidth at the lower limit value when the evaluation bandwidth at the current moment reaches the lower limit threshold.
[0153] In some embodiments, the first determining module includes:
[0154] An acquisition unit, used to acquire the current bandwidth of the network link between the server and the client and the estimated bandwidth calculated at the last moment;
[0155] A determining unit is used to determine the current moment's evaluation bandwidth of the network link between the server and the client based on the current bandwidth and the evaluation bandwidth calculated at the last moment.
[0156] In some embodiments, the evaluation bandwidth determination device 200 further includes:
[0157] A list acquisition module, used to acquire a list of congestion control methods supported by the client;
[0158] a fifth determining module, configured to determine the same congestion control method based on the congestion control method list and the congestion control method list of the server;
[0159] The sixth determination module is used to determine the target congestion control algorithm used in the server based on the priority of the same congestion control method, so as to optimize the evaluation bandwidth based on the target congestion control algorithm.
[0160] In some embodiments, the evaluation bandwidth determination device 200 further includes:
[0161] The encoding module is used to reduce the encoding rate of the server for the cloud game image when the optimized evaluation bandwidth is reduced to reduce the data sent.
[0162] In some embodiments, the target congestion control algorithm includes: Google congestion control algorithm, the server and the client communicate based on the fast UDP Internet connection protocol, and the determination device 200 for evaluating bandwidth further includes:
[0163] Code acquisition module, used to obtain the code of Google's congestion control algorithm;
[0164] Enable the module to enable the function of processing the receiving timestamp on the local end and to enable the function of saving the receiving timestamp on the other end;
[0165] The inheritance module is used to create a structure based on the code of the Google congestion control algorithm, and inherit the structure to the sending algorithm interface of quiche corresponding to the fast UDP Internet connection protocol.
[0166] It should be noted that the information interaction, execution process, etc. between the above-mentioned devices / units are based on the same concept as the method embodiment of the present application. Their specific functions and technical effects can be found in the method embodiment part and will not be repeated here.
[0167] in addition, Figure 6 The evaluation bandwidth determination device shown may be a software unit, a hardware unit, or a unit combining software and hardware, or may be integrated into the electronic device as an independent accessory, or may exist as an independent terminal device.
[0168] The technicians in the relevant field can clearly understand that for the convenience and simplicity of description, only the division of the above-mentioned functional units and modules is used as an example for illustration. In practical applications, the above-mentioned function allocation can be completed by different functional units and modules as needed, that is, the internal structure of the device can be divided into different functional units or modules to complete all or part of the functions described above. The functional units and modules in the embodiment can be integrated in a processing unit, or each unit can exist physically separately, or two or more units can be integrated in one unit. The above-mentioned integrated unit can be implemented in the form of hardware or in the form of software functional units. In addition, the specific names of the functional units and modules are only for the convenience of distinguishing each other, and are not used to limit the scope of protection of this application. The specific working process of the units and modules in the above-mentioned system can refer to the corresponding process in the aforementioned method embodiment, which will not be repeated here.
[0169] Figure 7 This is a schematic diagram of the structure of an electronic device provided in an embodiment of the present application. Figure 7 As shown, the electronic device 3 of this embodiment may include: at least one processor 30 ( Figure 7 Only one processor 30 is shown in the figure), a memory 31, and a computer program 32 stored in the memory 31 and executable on at least one processor 30. When the processor 30 executes the computer program 32, the steps in any of the above-mentioned method embodiments are implemented. Alternatively, when the processor 30 executes the computer program 32, the functions of each module / unit in the above-mentioned device embodiments are implemented.
[0170] Exemplarily, the computer program 32 may be divided into one or more modules / units, one or more modules / units are stored in the memory 31, and are executed by the processor 30 to complete the present application. One or more modules / units may be a series of computer program 32 instruction segments capable of completing specific functions, and the instruction segments are used to describe the execution process of the computer program 32 in the electronic device 3.
[0171] The embodiment of the present application further provides a computer-readable storage medium, which stores a computer program 32. When the computer program 32 is executed by the processor 30, the steps in the above-mentioned method embodiments can be implemented.
[0172] An embodiment of the present application provides a computer program product. When the computer program product runs on an electronic device, the electronic device can implement the steps in the above-mentioned method embodiments when executing the computer program product.
[0173] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. According to this understanding, the present application implements all or part of the processes in the above-mentioned embodiment method, which can be completed by instructing the relevant hardware through a computer program 32, and the computer program 32 can be stored in a computer-readable storage medium, and the computer program 32 can implement the steps of the above-mentioned various method embodiments when executed by the processor 30. Among them, the computer program 32 includes computer program code, and the computer program code can be in source code form, object code form, executable file or some intermediate form. The computer-readable medium may at least include: any entity or device capable of carrying the computer program code to the terminal, a recording medium, a computer memory, a read-only memory (ROM, Read-Only Memory), a random access memory (RAM, Random Access Memory), an electric carrier signal, a telecommunication signal, and a software distribution medium. For example, a USB flash drive, a mobile hard disk, a magnetic disk or an optical disk. In some jurisdictions, according to legislation and patent practice, computer-readable media cannot be electric carrier signals and telecommunication signals.
[0174] In the above embodiments, the description of each embodiment has its own emphasis. For parts that are not described or recorded in detail in a certain embodiment, reference can be made to the relevant descriptions of other embodiments.
[0175] Those of ordinary skill in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered to be beyond the scope of this application.
[0176] In the embodiments provided in the present application, it should be understood that the disclosed devices / network equipment and methods can be implemented in other ways. For example, the device / network equipment embodiments described above are merely schematic. For example, the division of the modules or units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.
[0177] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
[0178] The embodiments described above are only used to illustrate the technical solutions of the present application, rather than to limit them. Although the present application has been described in detail with reference to the aforementioned embodiments, a person skilled in the art should understand that the technical solutions described in the aforementioned embodiments may still be modified, or some of the technical features may be replaced by equivalents. Such modifications or replacements do not deviate the essence of the corresponding technical solutions from the spirit and scope of the technical solutions of the embodiments of the present application, and should all be included in the protection scope of the present application.
Claims
1. A method for determining an evaluation bandwidth, characterized in that: Servers used for cloud gaming include: Obtaining a delay of a network link between the server and the client; In the case where it is determined based on the delay of the network link that a preset condition is met, determining whether the server is in an application-restricted sending state; When the server is in an application-restricted sending state, determining an evaluation bandwidth of the network link at a current moment; The evaluation bandwidth is reduced to obtain an optimized evaluation bandwidth.
2. The method according to claim 1, characterized in that The step of reducing the evaluation bandwidth to obtain an optimized evaluation bandwidth includes: The evaluation bandwidth is multiplicatively reduced to obtain an optimized evaluation bandwidth, wherein the proportional coefficient when performing the multiplicative reduction is a preset proportional coefficient.
3. The method according to claim 1, characterized in that: The method further comprises: Determining a current bandwidth of a network link between the server and the client when it is determined based on the delay of the network link that a preset condition is satisfied and the server is not in an application-restricted sending state; The current bandwidth is multiplied by a preset ratio to obtain an optimized evaluation bandwidth.
4. The method according to claim 1, characterized in that The method further comprises: Obtaining a packet loss rate of the client; In the case where the packet loss rate reaches the packet loss rate threshold, determining whether the current evaluation bandwidth of the network link between the server and the client reaches a lower limit threshold; When the evaluation bandwidth at the current moment does not reach the lower limit threshold, reducing the evaluation bandwidth at the current moment to obtain an optimized evaluation bandwidth; When the evaluation bandwidth at the current moment reaches the lower limit threshold, the evaluation bandwidth is maintained at the lower limit value.
5. The method according to any one of claims 1 to 4, characterized in that: The determining of the current estimated bandwidth of the network link comprises: Obtaining the current bandwidth of the network link between the server and the client and the estimated bandwidth calculated at the last moment; The current moment evaluation bandwidth of the network link between the server and the client is determined based on the current bandwidth and the evaluation bandwidth calculated at the last moment.
6. The method according to any one of claims 1 to 4, characterized in that: The method further comprises: Obtain a list of congestion control methods supported by the client; Determining the same congestion control method based on the congestion control method list and the congestion control method list of the server; Based on the priorities of the same congestion control methods, a target congestion control algorithm used in the server is determined to optimize the evaluation bandwidth based on the target congestion control algorithm.
7. The method according to claim 6, characterized in that The target congestion control algorithm includes: Google congestion control algorithm, the server and the client communicate based on the fast UDP Internet connection protocol, and the method further includes: Get the code for Google's congestion control algorithm; Enable the function of processing the receiving timestamp on the local end, and enable the function of saving the receiving timestamp on the remote end; A structure is created based on the code of the Google congestion control algorithm, and the structure is inherited to the sending algorithm interface of quiche corresponding to the fast UDP Internet connection protocol.
8. The method according to any one of claims 1 to 4, characterized in that: The method further comprises: When the optimized evaluation bandwidth is reduced, the encoding rate of the server for the cloud game image is reduced to reduce the data sent.
9. A device for determining an evaluation bandwidth, characterized in that: include: An acquisition module, used to acquire the delay of the network link between the server and the client; A first determination module, configured to determine whether the server is in an application-restricted sending state when it is determined based on the delay of the network link that a preset condition is met; A second determination module, configured to determine the current evaluation bandwidth of the network link when the server is in an application-restricted sending state; The reducing module is used to reduce the evaluation bandwidth to obtain an optimized evaluation bandwidth.
10. An electronic device comprising a memory, a processor, and a computer program stored in the memory and executable on the processor, characterized in that: When the processor executes the computer program, the method according to any one of claims 1 to 8 is implemented.
11. A computer-readable storage medium storing a computer program, characterized in that: When the computer program is executed by a processor, the method according to any one of claims 1 to 8 is implemented.