Server, client and system for providing remote desktop service

CN122661253BActive Publication Date: 2026-10-23BEIJING LINX SOFTWARE CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202611113503.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2026-07-27
Publication Date
2026-10-23
Estimated Expiration
2046-07-27

AI Technical Summary

Technical Problem

[0006]鉴于上述的分析,本发明实施例旨在提供一种用于提供远程桌面服务的服务器、客户端及系统,用以解决现有需要一种同时兼顾外设和虚拟音频播放、vGPU虚拟化图形渲染加速的远程桌面协议来满足当下复杂的实际需求的问题

Benefits of technology

[0016]本发明提供的用于提供远程桌面服务的服务器、客户端及系统,基于改进的远程桌面协议实现了同时处理VNC协议数据和SPICE协议数据,可以在保证SPICE通道数据如外设和虚拟音频播放性能的同时实现vGPU虚拟化图形渲染加速,有效解决了现有远程桌面协议在功能与性能上无法兼顾的难题,既获得了VNC协议对vGPU硬件图形加速的支持,又完整保留了SPICE协议在音频、外设等方面的优异特性,实现了通过单一连接提供高性能、全功能的远程桌面体验。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122661253B_ABST
    Figure CN122661253B_ABST
Patent Text Reader

Abstract

The application relates to a server, a client and a system for providing a remote desktop service, and belongs to the technical field of computers, wherein the server comprises a virtual machine module and a protocol fusion module; the virtual machine module is used for sending VNC protocol data stream and SPICE protocol channel data stream, which comprises vGPU accelerated graphics channel data stream, to the protocol fusion module; the protocol fusion module is used for adding a channel identifier for indicating a channel type to each data unit on the basis of original protocol data units to obtain new data units, encapsulating the new data units based on a data frame structure, constructing remote desktop protocol data stream and sending the remote desktop protocol data stream to the client through network transmission, so that the client can call corresponding processing engines according to the channel identifiers of the data frames in the remote desktop protocol data stream to process corresponding data frames. The application realizes simultaneous processing of VNC protocol data and SPICE protocol data based on an improved remote desktop protocol.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates to the field of computer technology, and in particular to a server, client, and system for providing remote desktop services. Background Technology

[0002] Remote desktop protocols are the core technology that enables users to graphically access and control remote computers or virtual machines. In virtualization scenarios, VNC (Virtual Network Computing) and SPICE (Simple Protocol for Independent Computing Environments) protocols each have significant advantages and disadvantages, making it difficult to achieve a balance between them.

[0003] The VNC protocol uses RFB (Remote Framebuffer protocol) as its core protocol. It primarily captures screen changes from the server (such as the graphics framebuffer of a virtual machine), encodes them, and then transmits them to the client. vGPU (Virtual GPU) provides a framebuffer mode, allowing the VNC protocol to transmit vGPU-accelerated graphics data losslessly. The VNC protocol focuses primarily on graphics transmission and does not support advanced features such as audio or USB device pass-through.

[0004] The SPICE protocol is designed to provide access to audio and peripherals, and can connect USB flash drives and play virtual audio, etc. However, when running complex applications, it cannot use vGPU for graphics rendering acceleration, resulting in unsmooth graphics rendering or even stuttering. In many use cases, it cannot meet the actual needs.

[0005] Therefore, a remote desktop protocol that simultaneously supports peripherals, virtual audio playback, and vGPU virtualization graphics rendering acceleration is needed to meet the complex practical needs of today. Summary of the Invention

[0006] Based on the above analysis, the embodiments of the present invention aim to provide a server, client, and system for providing remote desktop services, in order to solve the problem of the existing need for a remote desktop protocol that simultaneously takes into account peripherals and virtual audio playback, vGPU virtualization graphics rendering acceleration to meet the complex practical needs of the present.

[0007] On one hand, embodiments of the present invention provide a server for providing remote desktop services. The server includes a virtual machine module and a protocol fusion module. The virtual machine module includes a VNC protocol processing module and a SPICE protocol processing module. The VNC protocol processing module is configured to: acquire a VNC protocol data stream and send it to the protocol fusion module; wherein the VNC protocol data stream includes a graphics channel data stream accelerated by vGPU. The SPICE protocol processing module is configured to: acquire at least one SPICE protocol channel data stream and send it to the protocol fusion module. The protocol fusion module is configured to: receive the graphics channel data stream and the SPICE protocol channel data stream in parallel; based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, add a channel identifier to each data unit to represent the channel type, obtaining new data units; encapsulate the new data units based on a pre-set data frame structure; construct a remote desktop protocol data stream based on the encapsulated data frames and transmit it to the client via the network, so that the client can call the corresponding processing engine to process the corresponding data frames according to the channel identifier of the data frames in the remote desktop protocol data stream.

[0008] Furthermore, the data frame structure includes a start flag, a channel data length, a channel identifier, a timestamp, channel data, and a checksum; wherein: the start flag indicates the start position of the data frame; the channel data length indicates the size of the channel data; the timestamp indicates the creation time of the channel data on the server; the channel data represents the valid data to be transmitted in the data frame; and the checksum represents the verification information of the data frame.

[0009] Furthermore, the channel identifier includes a channel number or a channel type; wherein, when the channel identifier only includes the channel number, the server and the client pre-store the correspondence between the channel number and the channel type.

[0010] Furthermore, when the protocol fusion module is used to construct a remote desktop protocol data stream based on the encapsulated data frames, it is specifically used to: sort the encapsulated data frames according to the order of the timestamps to obtain the remote desktop protocol data stream.

[0011] Furthermore, after receiving the graphics channel data stream and the SPICE protocol channel data stream in parallel, and before adding a channel identifier to each data unit to indicate the channel type based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, the protocol fusion module is further configured to: decode the graphics channel data stream according to the encoding format of the VNC protocol to obtain VNC protocol data units; and decode the SPICE protocol channel data stream according to the encoding format of the SPICE protocol to obtain SPICE protocol data units; wherein, the original protocol data units include the VNC protocol data units and the SPICE protocol data units.

[0012] Furthermore, when the VNC protocol processing module is used to acquire the VNC protocol data stream and send it to the protocol fusion module, it is specifically used to: acquire the VNC protocol data stream using the VNC server program, send the VNC protocol data stream to the socket backend of the host machine where the virtual machine module is located through a virtual serial port device, and send the VNC protocol data stream to the protocol fusion module through the socket backend.

[0013] On the other hand, embodiments of the present invention provide a client for providing remote desktop services, the client comprising: a data receiving module and a protocol parsing module; wherein: the data receiving module is configured to: receive a remote desktop protocol data stream transmitted by a server over a network, and send the remote desktop protocol data stream to the protocol parsing module; wherein the data frame structure of the data frame of the remote desktop protocol data stream includes a channel identifier and channel data, the channel identifier being used to indicate the channel type, and the channel data representing the valid data to be transmitted in the data frame, which is vGPU-accelerated graphics channel data or SPICE protocol channel data; the protocol parsing module is configured to: receive the remote desktop protocol data stream, and, based on the channel identifier of the data frame in the remote desktop protocol data stream, call the corresponding processing engine to process the corresponding data frame.

[0014] Furthermore, when the protocol parsing module is used to call the corresponding processing engine to process the corresponding data frame based on the channel identifier of the data frame in the remote desktop protocol data stream, it is specifically used to: determine the channel type based on the channel identifier of the data frame in the remote desktop protocol data stream, send the data frame to the processing channel corresponding to the channel type, and then execute the call to the processing engine corresponding to the channel identifier to process the corresponding data frame.

[0015] Furthermore, the data frame structure of the data frame also includes a start flag, channel data length, timestamp, and checksum; wherein: the start flag indicates the starting position of the data frame; the channel data length indicates the size of the channel data; the timestamp indicates the creation time of the channel data on the server; and the checksum indicates the verification information of the data frame. After receiving the remote desktop protocol data stream and before calling the corresponding processing engine to process the corresponding data frame based on the channel identifier of the data frame in the remote desktop protocol data stream, the protocol parsing module is further configured to: parse the start flag, channel data length, and checksum of the data frame; extract the channel identifier; extract the channel data based on the channel data length; verify the channel data using the checksum; and after successful verification, execute the call to the corresponding processing engine based on the channel identifier of the data frame in the remote desktop protocol data stream to process the corresponding data frame.

[0016] The server, client, and system provided by this invention for providing remote desktop services, based on an improved remote desktop protocol, enable simultaneous processing of VNC protocol data and SPICE protocol data. This allows for accelerated vGPU virtualization graphics rendering while ensuring the performance of SPICE channel data such as peripherals and virtual audio playback. It effectively solves the problem of existing remote desktop protocols being unable to balance functionality and performance. It gains support for vGPU hardware graphics acceleration from the VNC protocol while fully retaining the excellent features of the SPICE protocol in audio, peripherals, etc., thus enabling a high-performance, full-featured remote desktop experience through a single connection.

[0017] In this invention, the above-described technical solutions can be combined with each other to achieve more preferred combinations. Other features and advantages of this invention will be set forth in the following description, and some advantages may become apparent from the description or be learned by practicing the invention. The objects and other advantages of this invention can be realized and obtained from what is particularly pointed out in the description and drawings. Attached Figure Description

[0018] The accompanying drawings are for illustrative purposes only and are not intended to limit the invention. Throughout the drawings, the same reference numerals denote the same parts. Figure 1 This is a schematic diagram of the structure of a server for providing remote desktop services provided by the present invention; Figure 2 This is a schematic diagram of the data frame structure in the remote desktop protocol provided by the present invention; Figure 3This is a schematic diagram of the structure of the client for providing remote desktop services provided by the present invention; Figure 4 This is a schematic diagram of the structure of the system for providing remote desktop services provided by the present invention; Figure 5 This is a schematic diagram of the processing flow of a system for providing remote desktop services provided by the present invention. Detailed Implementation

[0019] Preferred embodiments of the present invention will now be described in detail with reference to the accompanying drawings, which form part of this application and are used together with the embodiments of the present invention to illustrate the principles of the present invention, but are not intended to limit the scope of the present invention.

[0020] Figure 1 This is a schematic diagram of the structure of a server provided by the present invention for providing remote desktop services. Figure 1 As shown, the server 1 includes: a virtual machine module 10 and a protocol fusion module 20. The virtual machine module 10 includes a VNC protocol processing module 101 and a SPICE protocol processing module 102; wherein: The VNC protocol processing module 101 is used to: acquire VNC protocol data stream and send it to the protocol fusion module 20; wherein, the VNC protocol data stream includes a graphics channel data stream accelerated by vGPU; The SPICE protocol processing module 102 is used to: acquire at least one SPICE protocol channel data stream and send it to the protocol fusion module 20; The protocol fusion module 20 is configured to: receive the graphics channel data stream and the SPICE protocol channel data stream in parallel; add a channel identifier to each data unit to represent the channel type based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, thereby obtaining a new data unit; encapsulate the new data unit based on a pre-set data frame structure; construct a remote desktop protocol data stream based on the encapsulated data frame and transmit it to the client via the network, so that the client can call the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream.

[0021] The remote desktop protocol used in this invention for providing remote desktop services is an improved SPICE protocol, which can simultaneously process VNC and SPICE protocol data. This allows for simultaneous connection of peripherals such as USB flash drives, playback of virtual audio, and also supports vGPU for accelerated virtual graphics rendering, improving the smoothness of virtual graphics rendering. This improved SPICE protocol can be referred to as the SPICEV protocol.

[0022] Server 1, which provides remote desktop services based on the SPICEV protocol, includes a virtual machine module 10 and a protocol fusion module 20. Virtual machine module 10 includes a VNC protocol processing module 101 and a SPICE protocol processing module 102. The VNC protocol processing module 101 is used to acquire VNC protocol data streams and send them to the protocol fusion module 20. The VNC protocol data stream includes a graphics channel data stream accelerated by vGPU. To achieve accelerated virtual graphics rendering, vGPU resources need to be deployed on server 1. vGPU resources are hardware modules on server 1 responsible for accelerating virtual machine graphics data. Virtual machine module 10 includes a virtual machine instance (such as a QEMU (Quick Emulator) process) running on server 1. The vGPU resources accelerate graphics rendering for this virtual machine instance. A VNC server program runs within the virtual machine instance. This VNC server program captures virtual machine screen graphics frames rendered by the vGPU resources and generates a standard VNC protocol data stream.

[0023] SPICE protocol processing module 102 is used to: acquire SPICE protocol channel data streams for at least one channel and send them to protocol fusion module 20. SPICE protocol processing module 102 includes a SPICE server program, which is started and managed by a virtual machine instance and is responsible for creating SPICE protocol channel data streams for all other input / output channels except for the vGPU-accelerated graphics channel, including but not limited to audio channels, USB device redirection channels, clipboard channels, etc.

[0024] The protocol fusion module 20 is used to: receive the graphics channel data stream and the SPICE protocol channel data stream in parallel; add a channel identifier to each data unit to represent the channel type, based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, to obtain new data units; encapsulate the new data units according to a pre-set data frame structure; construct a remote desktop protocol data stream based on the encapsulated data frames; and transmit the data to the client via the network. This data frame can be called a SPICEV data frame. This remote desktop protocol data stream can be called a SPICEV protocol stream. When transmitting the remote desktop protocol data stream to the client via the network, each data frame is sent sequentially. The client calls the corresponding processing engine to process the corresponding data frame based on the channel identifier of the data frame in the remote desktop protocol data stream.

[0025] The server provided by this invention for providing remote desktop services, based on an improved remote desktop protocol, enables simultaneous processing of VNC protocol data and SPICE protocol data. It can accelerate vGPU virtualization graphics rendering while ensuring the performance of SPICE channel data such as peripherals and virtual audio playback. This effectively solves the problem that existing remote desktop protocols cannot balance functionality and performance. It gains support for vGPU hardware graphics acceleration from the VNC protocol while fully retaining the excellent features of the SPICE protocol in audio, peripherals, etc., and realizes a high-performance, full-featured remote desktop experience through a single connection.

[0026] According to the present invention, a server 1 for providing remote desktop services includes a data frame structure comprising a start flag, a channel data length, a channel identifier, a timestamp, channel data, and a checksum; wherein: the start flag indicates the start position of the data frame; the channel data length indicates the size of the channel data; the timestamp indicates the creation time of the channel data on the server 1; the channel data represents the valid data to be transmitted in the data frame; and the checksum represents the checksum information of the data frame.

[0027] Figure 2 This is a schematic diagram of the data frame structure in the remote desktop protocol provided by this invention. Wherein: The start flag is used to indicate the start position of the data frame and is stored in a fixed-length byte unit; Channel data length is used to represent the size of channel data and is stored using a fixed-length byte unit; Channel identifiers are used to indicate channel type; The timestamp is used to indicate the creation time of channel data on server 1, and is stored using a fixed-length byte unit; Channel data represents the valid data to be transmitted in the data frame. Its size is not fixed and can be obtained through the channel data length of this SPICEV data frame. The checksum is used to represent the check information of the data frame, and is used to verify the legality and integrity of the channel data of this SPICEV data frame. It is stored in a fixed-length byte unit.

[0028] The server provided by this invention for providing remote desktop services ensures effective processing of data frames by reasonably setting the data frame structure.

[0029] According to the present invention, a server 1 for providing remote desktop services includes a channel identifier comprising a channel number or a channel type; wherein, when the channel identifier comprises only the channel number, the server 1 and the client pre-store the correspondence between the channel number and the channel type.

[0030] The protocol fusion module 20 adds a channel identifier to each data unit to represent the channel type, based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, resulting in a new data unit. An example of the new data unit is as follows: <channel id="0x1" value="vnc data"> <channel id="0x2" value="spice audio data"> <channel id="0x3" value="spice usb data"> Here, `value` represents data extracted from the original data unit, and `Channel id` is the channel identifier used to indicate the channel type. When the channel identifier is the channel id, server 1 and the client pre-store the correspondence between channel id and channel type. For example, `Channel id="0x1"` corresponds to the graphics channel accelerated by vGPU, `Channel id="0x2"` corresponds to the audio channel, and `Channel id="0x3"` corresponds to the USB channel. This allows the channel type to be obtained based on the channel id. Alternatively, the channel type can be directly used as the channel identifier. The advantage of using the channel id as the channel identifier is that it is easier to parse and process, while the advantage of using the channel type as the channel identifier is its intuitiveness.

[0031] The server provided by this invention for providing remote desktop services improves the rationality of channel identifier settings.

[0032] According to a server 1 for providing remote desktop services provided by the present invention, the protocol fusion module 20, when constructing a remote desktop protocol data stream based on the encapsulated data frames, is specifically used to: sort the encapsulated data frames according to the order of the timestamps to obtain the remote desktop protocol data stream.

[0033] Since the data frames in the remote desktop protocol data stream are sent to the client sequentially over the network, to avoid issues such as audio-visual asynchrony, the protocol fusion module 20 sorts the encapsulated data frames according to their timestamps when constructing the remote desktop protocol data stream based on the encapsulated data frames. Data frames with earlier timestamps are transmitted first. If the timestamps are the same, they can be transmitted in random order. Although data with the same timestamps are sent sequentially, the delay is within an acceptable range due to the short interval between them.

[0034] The server provided by this invention for providing remote desktop services sorts the encapsulated data frames according to the order of timestamps to obtain a remote desktop protocol data stream, thereby improving the synchronization of data processing results across different channels.

[0035] According to a server 1 for providing remote desktop services provided by the present invention, after receiving the graphics channel data stream and the SPICE protocol channel data stream in parallel, and before adding a channel identifier for indicating the channel type to each data unit based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, the protocol fusion module 20 is further configured to: decode the graphics channel data stream according to the encoding format of the VNC protocol to obtain VNC protocol data units; decode the SPICE protocol channel data stream according to the encoding format of the SPICE protocol to obtain SPICE protocol data units; wherein, the original protocol data units include the VNC protocol data units and the SPICE protocol data units.

[0036] After receiving the graphics channel data stream and the SPICE protocol channel data stream in parallel, the protocol fusion module 20 obtains the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream. The original protocol data units include VNC protocol data units and SPICE protocol data units. Specifically, the protocol fusion module 20 decodes the graphics channel data stream according to the VNC protocol encoding format to obtain VNC protocol data units; and decodes the SPICE protocol channel data stream according to the SPICE protocol encoding format to obtain SPICE protocol data units. Based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, the protocol fusion module 20 adds a channel identifier to each data unit to indicate the channel type, resulting in a new data unit.

[0037] The server provided by this invention for providing remote desktop services obtains the original protocol data unit by decoding according to the original protocol encoding format.

[0038] According to a server 1 for providing remote desktop services provided by the present invention, when the VNC protocol processing module 101 is used to acquire VNC protocol data stream and send it to the protocol fusion module 20, it is specifically used to: acquire the VNC protocol data stream using a VNC server program, send the VNC protocol data stream to the socket backend of the host machine where the virtual machine module 10 is located through a virtual serial port device, and send the VNC protocol data stream to the protocol fusion module 20 through the socket backend.

[0039] The protocol processing module 101 uses the VNC server program to write the VNC protocol data stream, rendered with vGPU acceleration, to a virtual serial port device, and then transmits the VNC protocol data stream to the host machine. Inside the virtual machine instance, the VNC server program is configured to write its output VNC protocol data stream to a virtual serial port device (e.g., / dev / ttyS1) created by the virtual machine instance. On the host machine side, a socket backend corresponding to this virtual serial port device (e.g., created using the -chardevsocket, ... parameter) is provided to receive data from the virtual serial port device within the virtual machine instance. Thus, the data written to the virtual serial port device inside the virtual machine is transparently transmitted to the socket backend on the host machine through virtualization mechanisms such as virtio-serial, and then received by the protocol fusion module 20.

[0040] The server provided by this invention for providing remote desktop services enables the transmission of VNC protocol data streams to the protocol fusion module via virtual serial port devices and sockets, providing a foundation for unified processing of vGPU-accelerated graphics channel data streams and SPICE protocol channel data streams.

[0041] Figure 3 This is a schematic diagram of the structure of a client 2 for providing remote desktop services provided by the present invention. For example... Figure 3 As shown, client 2 includes a data receiving module 100 and a protocol parsing module 200; wherein: The data receiving module 100 is configured to: receive the remote desktop protocol data stream transmitted by the server 1 via the network, and send the remote desktop protocol data stream to the protocol parsing module 200; wherein, the data frame structure of the data frame of the remote desktop protocol data stream includes a channel identifier and channel data, the channel identifier is used to indicate the channel type, and the channel data represents the valid data to be transmitted in the data frame, which is either vGPU accelerated graphics channel data or SPICE protocol channel data; The protocol parsing module 200 is configured to: receive the remote desktop protocol data stream, and call the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream.

[0042] Client 2 receives, parses, and processes remote desktop protocol data streams based on the SPICEV protocol. Specifically, data receiving module 100 receives the remote desktop protocol data stream sent by server 1 via network transmission and forwards it to protocol parsing module 200. Protocol parsing module 200 receives the remote desktop protocol data stream sent by data receiving module 100 and processes the data frames according to their reception order. During processing, it invokes the corresponding processing engine based on the data frame's channel identifier. The data frame structure in the remote desktop protocol data stream includes a channel identifier and channel data. The channel identifier indicates the channel type, and the channel data represents the valid data to be transmitted in the data frame, which can be vGPU-accelerated graphics channel data or SPICE protocol channel data. For example, one data frame might have vGPU-accelerated graphics channel data, while another might have SPICE protocol channel data. Different types of data supported by the SPICE protocol belong to different SPICE protocol channels.

[0043] The client provided by this invention for providing remote desktop services, based on an improved remote desktop protocol, enables simultaneous processing of VNC protocol data and SPICE protocol data. It can accelerate vGPU virtualization graphics rendering while ensuring the performance of SPICE channel data such as peripherals and virtual audio playback. This effectively solves the problem that existing remote desktop protocols cannot balance functionality and performance. It gains support for vGPU hardware graphics acceleration from the VNC protocol while fully retaining the excellent features of the SPICE protocol in audio, peripherals, etc., and realizes a high-performance, full-featured remote desktop experience through a single connection.

[0044] According to a client 2 for providing remote desktop services provided by the present invention, when the protocol parsing module 200 calls the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream, it is specifically used to: determine the channel type according to the channel identifier of the data frame in the remote desktop protocol data stream, send the data frame to the processing channel corresponding to the channel type, and then execute the processing of the corresponding data frame by calling the processing engine corresponding to the channel identifier.

[0045] When the protocol parsing module 200 calls the corresponding processing engine to process a data frame based on the channel identifier of the data frame in the remote desktop protocol data stream, it processes the data frames according to the receiving order of the data frames in the remote desktop protocol data stream. During data frame processing, it calls the corresponding processing engine based on the channel identifier of the data frame. However, it is not necessary to wait for the previous data frame to finish processing before processing the next data frame; otherwise, delays and asynchronous results would occur. Data frames can be processed by channel based on channel type. Therefore, the protocol parsing module 200 determines the channel type based on the channel identifier of the data frame in the remote desktop protocol data stream, sends the data frame to the processing channel corresponding to the channel type, and then executes the call to the processing engine corresponding to the channel identifier to process the corresponding data frame. That is, the processing of each data frame can be performed asynchronously.

[0046] The client for providing remote desktop services provided by this invention determines the channel type based on the channel identifier of the data frame in the remote desktop protocol data stream, sends the data frame to the processing channel corresponding to the channel type, and then executes the processing engine corresponding to the channel identifier to process the corresponding data frame, thereby improving the synchronization performance of the remote desktop service results.

[0047] According to a client 2 for providing remote desktop services provided by the present invention, the data frame structure of the data frame further includes a start flag, a channel data length, a timestamp, and a checksum; wherein: the start flag is used to indicate the starting position of the data frame; the channel data length is used to indicate the size of the channel data; the timestamp is used to indicate the creation time of the channel data on the server 1; and the checksum is used to indicate the checksum information of the data frame; After receiving the remote desktop protocol data stream, and before calling the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream, the protocol parsing module 200 is also used to: parse the start flag bit, channel data length, and checksum of the data frame; extract the channel identifier; extract the channel data according to the channel data length; verify the channel data using the checksum; and after the verification is successful, execute the call to the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream.

[0048] After receiving the remote desktop protocol data stream, the protocol parsing module 200 parses the start flag, channel data length, and checksum of the data frame to prepare for subsequent extraction of valid data. It extracts the channel identifier from the data frame to distinguish the channel type, laying the foundation for distributing the data frame to the correct processing engine. Based on the channel data length, it extracts the payload data, stripping away the actual channel data. Furthermore, it uses the checksum to verify the extracted channel data, ensuring its integrity and validity. If the verification passes, subsequent processing is executed; otherwise, processing stops. After successful verification, the channel data is distributed to the corresponding processing engine according to the channel identifier. Specifically, data identified as VNC graphics is sent to the VNC rendering engine for decoding and final screen rendering; data identified as audio is sent to the audio playback engine for decoding and final audio processing; data identified as USB is sent to the USB redirection engine for decoding to drive the local USB device; and data identified as clipboard data is sent to the clipboard synchronization engine for decoding and copying.

[0049] Data verification methods can employ algorithms such as MD5 and SHA. On the server side, any data verification algorithm is used to calculate and generate a checksum for the channel data, which is then sent along with the channel data. Upon receiving the data frame, client 2 uses the same algorithm to calculate the checksum for the channel data and compares it with the received checksum. If they match, the verification passes; otherwise, it fails.

[0050] The client for providing remote desktop services provided by this invention ensures the integrity and security of channel data by verifying the channel data.

[0051] Figure 4 This is a schematic diagram of the system for providing remote desktop services provided by the present invention. Figure 5 This is a schematic diagram of the processing flow of the system for providing remote desktop services provided by the present invention. For example... Figure 4 , Figure 5 As shown, the processing flow of a system for providing remote desktop services includes: The VNC protocol processing module 101 is used to: acquire VNC protocol data stream and send it to the protocol fusion module 20; wherein, the VNC protocol data stream includes a graphics channel data stream accelerated by vGPU; The SPICE protocol processing module 102 is used to: acquire at least one SPICE protocol channel data stream and send it to the protocol fusion module 20; The protocol fusion module 20 is configured to: receive the graphics channel data stream and the SPICE protocol channel data stream in parallel; add a channel identifier to each data unit to represent the channel type based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, thereby obtaining a new data unit; encapsulate the new data unit based on a pre-set data frame structure; construct a remote desktop protocol data stream based on the encapsulated data frame and transmit it to the client 2 via the network.

[0052] When the VNC protocol processing module 101 is used to acquire the VNC protocol data stream and send it to the protocol fusion module 20, it is specifically used to: acquire the VNC protocol data stream using the VNC server program, send the VNC protocol data stream to the socket backend of the host machine where the virtual machine module 10 is located through a virtual serial port device, and send the VNC protocol data stream to the protocol fusion module 20 through the socket backend.

[0053] Client 2 includes a data receiving module 100 and a protocol parsing module 200; wherein: The data receiving module 100 is configured to: receive the remote desktop protocol data stream transmitted by the server 1 via the network, and send the remote desktop protocol data stream to the protocol parsing module 200; wherein, the data frame structure of the data frame of the remote desktop protocol data stream includes a channel identifier and channel data, the channel identifier is used to indicate the channel type, and the channel data is vGPU accelerated graphics channel data or SPICE protocol channel data. The protocol parsing module 200 is configured to: receive the remote desktop protocol data stream, and call the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream. Specifically, it processes VNC graphics data by calling a graphics rendering engine, and processes SPICE data through audio, peripheral, and other processing engines. Each processing engine decodes and processes its respective channel data, ultimately presenting it in different forms on the human-computer interaction interface.

[0054] The system for providing remote desktop services provided by this invention, based on an improved remote desktop protocol, enables simultaneous processing of VNC protocol data and SPICE protocol data. It can accelerate vGPU virtualization graphics rendering while ensuring the performance of SPICE channel data such as peripherals and virtual audio playback. This effectively solves the problem that existing remote desktop protocols cannot balance functionality and performance. It gains support for vGPU hardware graphics acceleration from the VNC protocol while fully retaining the excellent features of the SPICE protocol in audio, peripherals, etc., and realizes a high-performance, full-featured remote desktop experience through a single connection.

[0055] The server, client, and system for providing remote desktop services provided by this invention have the following beneficial effects: 1. Maximize performance: Provide native-level graphics performance for applications such as 3D design, gaming, and computing by directly capturing images rendered by the vGPU.

[0056] 2. Functional completeness: By retaining all channels of the SPICE protocol, it fully inherits its mature advantages in high-quality virtual audio transmission and peripherals, and provides rich device support capabilities.

[0057] 3. Compatibility and Feasibility: This invention is based on the creative integration of two mature, open-source protocols. The implementation process can utilize existing components, with low technical risk, a clear implementation path, and easy deployment and implementation in existing virtualization platforms (such as QEMU / KVM).

[0058] 4. Simplified connection and convenient management: A single network connection (SPICEV connection) replaces the multiple independent connections (VNC connection + SPICE connection) that might otherwise need to be established, simplifying client configuration and reducing the complexity of connection management and state synchronization.

[0059] 5. Efficient resource utilization: Through protocol layer integration, resource conflicts (such as audio devices and cursors) that may occur when multiple protocols coexist are avoided, providing a seamless and unified user experience.

[0060] The device embodiments described above are merely illustrative. The units described as separate components may or may not be physically separate. The components shown as units may or may not be physical units; that is, they may be located in one place or distributed across multiple network units. Some or all of the modules can be selected to achieve the purpose of this embodiment according to actual needs. Those skilled in the art can understand and implement this without any creative effort.

[0061] Through the above description of the embodiments, those skilled in the art can clearly understand that each embodiment can be implemented by means of software plus necessary general-purpose hardware platforms, and of course, it can also be implemented by hardware. Based on this understanding, the above technical solutions, in essence or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product can be stored in a computer-readable storage medium, such as ROM / RAM, magnetic disk, optical disk, etc., and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute the methods described in the various embodiments or some parts of the embodiments.

[0062] Finally, it should be noted that the above embodiments are only used to illustrate the technical solutions of the present invention, and not to limit them; although the present invention has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features; and these modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the spirit and scope of the technical solutions of the embodiments of the present invention.

[0063] The above description is only a preferred embodiment of the present invention, but the scope of protection of the present invention is not limited thereto. Any changes or substitutions that can be easily conceived by those skilled in the art within the scope of the technology disclosed in the present invention should be included within the scope of protection of the present invention.< / channel> < / channel> < / channel>

Claims

1. A server for providing remote desktop services, characterized in that, include: The virtual machine module and the protocol fusion module, wherein the virtual machine module includes a VNC protocol processing module and a SPICE protocol processing module; wherein: The VNC protocol processing module is used to: acquire VNC protocol data stream and send it to the protocol fusion module; wherein, the VNC protocol data stream includes a graphics channel data stream accelerated by vGPU; The SPICE protocol processing module is used to: acquire at least one SPICE protocol channel data stream and send it to the protocol fusion module; The protocol fusion module is configured to: receive the graphics channel data stream and the SPICE protocol channel data stream in parallel; add a channel identifier to each data unit to represent the channel type based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, thereby obtaining a new data unit; encapsulate the new data unit based on a pre-set data frame structure; construct a remote desktop protocol data stream based on the encapsulated data frame and transmit it to the client via the network, so that the client can call the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream.

2. The server for providing remote desktop services according to claim 1, characterized in that, The data frame structure includes a start flag, channel data length, channel identifier, timestamp, channel data, and checksum; wherein: The start flag is used to indicate the start position of the data frame; The channel data length is used to represent the size of the channel data; The timestamp is used to indicate the time when the channel data was created on the server; The channel data represents the valid data to be transmitted in the data frame; The checksum is used to represent the checksum information of the data frame.

3. The server for providing remote desktop services according to claim 2, characterized in that, The channel identifier includes a channel number or a channel type; wherein, when the channel identifier only includes the channel number, the server and the client pre-store the correspondence between the channel number and the channel type.

4. The server for providing remote desktop services according to claim 2, characterized in that, When the protocol fusion module is used to construct a remote desktop protocol data stream based on the encapsulated data frames, it is specifically used for: The encapsulated data frames are sorted according to the order of the timestamps to obtain the remote desktop protocol data stream.

5. The server for providing remote desktop services according to claim 1, characterized in that, After receiving the graphics channel data stream and the SPICE protocol channel data stream in parallel, and before adding a channel identifier to each data unit to indicate the channel type based on the original protocol data units of the graphics channel data stream and the SPICE protocol channel data stream, the protocol fusion module is further configured to: The graphics channel data stream is decoded according to the encoding format of the VNC protocol to obtain VNC protocol data units; The SPICE protocol channel data stream is decoded according to the SPICE protocol encoding format to obtain SPICE protocol data units; The original protocol data unit includes the VNC protocol data unit and the SPICE protocol data unit.

6. The server for providing remote desktop services according to claim 1, characterized in that, When the VNC protocol processing module acquires the VNC protocol data stream and sends it to the protocol fusion module, it is specifically used for: The VNC protocol data stream is obtained using a VNC server program, and then sent to the socket backend of the host machine where the virtual machine module is located via a virtual serial port device. The VNC protocol data stream is then sent to the protocol fusion module via the socket backend.

7. A client for providing remote desktop services, characterized in that, include: Data receiving module and protocol parsing module; wherein: The data receiving module is configured to: receive a remote desktop protocol data stream transmitted by the server via the network, and send the remote desktop protocol data stream to the protocol parsing module; wherein, the data frame structure of the data frame of the remote desktop protocol data stream includes a channel identifier and channel data, the channel identifier is used to indicate the channel type, and the channel data represents the valid data to be transmitted in the data frame, which is either vGPU accelerated graphics channel data or SPICE protocol channel data; The protocol parsing module is configured to: receive the remote desktop protocol data stream, and call the corresponding processing engine to process the corresponding data frame according to the channel identifier of the data frame in the remote desktop protocol data stream.

8. The client for providing remote desktop services according to claim 7, characterized in that, When the protocol parsing module is used to call the corresponding processing engine to process the corresponding data frame based on the channel identifier of the data frame in the remote desktop protocol data stream, it is specifically used for: The channel type is determined based on the channel identifier of the data frame in the remote desktop protocol data stream, and the data frame is sent to the processing channel corresponding to the channel type to execute the processing engine corresponding to the channel identifier to process the corresponding data frame.

9. The client for providing remote desktop services according to claim 7, characterized in that, The data frame structure further includes a start flag, channel data length, timestamp, and checksum; wherein: the start flag indicates the starting position of the data frame; the channel data length indicates the size of the channel data; the timestamp indicates the creation time of the channel data on the server; and the checksum indicates the checksum information of the data frame. After receiving the remote desktop protocol data stream, and before calling the corresponding processing engine to process the corresponding data frame based on the channel identifier of the data frame in the remote desktop protocol data stream, the protocol parsing module is further configured to: The start flag, channel data length, and checksum of the data frame are parsed to extract the channel identifier and the channel data is extracted based on the channel data length. The channel data is verified using the verification code. Once the verification is successful, the corresponding processing engine is invoked to process the data frame based on the channel identifier of the data frame in the remote desktop protocol data stream.

10. A system for providing remote desktop services, characterized in that, include: The server as described in any one of claims 1 to 6 and the client as described in any one of claims 7 to 9.

Citation Information

Patent Citations

  • Multi-graphics protocol uniform agent system based on remote desktop protocol

    CN101964798A

  • Method and system for logging virtual machine based on Cloud Stack platform

    CN104702624A